@aspan-corporation/ac-shared 1.1.2 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export * from "./services/index.js";
2
2
  export * from "./lambda/index.js";
3
3
  export * from "./utils/index.js";
4
- export type * from "./utils/types.js";
package/lib/index.js CHANGED
@@ -10,6 +10,11 @@ import { Upload } from "@aws-sdk/lib-storage";
10
10
  import assert3 from "node:assert/strict";
11
11
  import { PassThrough } from "node:stream";
12
12
 
13
+ // src/utils/index.ts
14
+ import { Logger } from "@aws-lambda-powertools/logger";
15
+ import { Metrics } from "@aws-lambda-powertools/metrics";
16
+ import { Tracer } from "@aws-lambda-powertools/tracer";
17
+
13
18
  // src/utils/assertUtils.ts
14
19
  import assert from "node:assert/strict";
15
20
  var assertEnvVar = (envVar) => {
@@ -22,17 +27,6 @@ var assertString = (value) => {
22
27
  return value;
23
28
  };
24
29
 
25
- // src/utils/logger.ts
26
- import { Logger } from "@aws-lambda-powertools/logger";
27
- var rootLogger = new Logger({
28
- serviceName: process.env.POWERTOOLS_SERVICE_NAME ?? process.env.AWS_LAMBDA_FUNCTION_NAME ?? "ac-shared"
29
- });
30
- var getLoggerWithScope = (scope, logger = rootLogger) => {
31
- const childLogger = logger.createChild();
32
- childLogger.appendKeys({ scope });
33
- return childLogger;
34
- };
35
-
36
30
  // src/utils/normalizeErrorMessage.ts
37
31
  var normalizeErrorMessage = (error) => {
38
32
  if (error instanceof Error) {
@@ -93,9 +87,6 @@ var getObjectWithAssumeRoleCommandOutputAttribute = (assumeRoleCommandOutput) =>
93
87
  }
94
88
  } : {};
95
89
  var getObjectWithStackAttribute = (error) => error && error instanceof Error ? { stack: error.stack } : {};
96
- var getObjectWithLoggerAttribute = (logger) => logger ? {
97
- logger
98
- } : {};
99
90
 
100
91
  // src/utils/processMeta.ts
101
92
  import assert2 from "node:assert/strict";
@@ -104,7 +95,7 @@ var processMeta = async ({
104
95
  meta,
105
96
  metaTableName,
106
97
  size,
107
- logger = getLoggerWithScope("processMeta"),
98
+ logger,
108
99
  locationService,
109
100
  dynamoDBService
110
101
  }) => {
@@ -216,7 +207,7 @@ var S3Service = class {
216
207
  logger;
217
208
  client;
218
209
  constructor({
219
- logger = getLoggerWithScope("S3Service"),
210
+ logger,
220
211
  client,
221
212
  assumeRoleCommandOutput,
222
213
  region
@@ -235,7 +226,7 @@ var S3Service = class {
235
226
  }
236
227
  }
237
228
  createS3UploadStream(putObjectCommandInput) {
238
- this.logger.debug("upload stream started", putObjectCommandInput);
229
+ this.logger.debug("upload stream started", { putObjectCommandInput });
239
230
  const pass = new PassThrough();
240
231
  const parallelUploads = new Upload({
241
232
  client: this.client,
@@ -251,7 +242,7 @@ var S3Service = class {
251
242
  return { stream: pass, done: donePromise };
252
243
  }
253
244
  async createS3DownloadStream(getObjectCommandInput) {
254
- this.logger.debug("download stream started", getObjectCommandInput);
245
+ this.logger.debug("download stream started", { getObjectCommandInput });
255
246
  const item = await this.client.send(
256
247
  new GetObjectCommand(getObjectCommandInput)
257
248
  );
@@ -259,18 +250,18 @@ var S3Service = class {
259
250
  return item.Body;
260
251
  }
261
252
  async listObjectsV2(listObjectsV2CommandInput) {
262
- this.logger.debug("listObjectsV2", listObjectsV2CommandInput);
253
+ this.logger.debug("listObjectsV2", { listObjectsV2CommandInput });
263
254
  return await this.client.send(
264
255
  new ListObjectsV2Command(listObjectsV2CommandInput)
265
256
  );
266
257
  }
267
258
  async getObject(getObjectCommandInput) {
268
- this.logger.debug("getObject", getObjectCommandInput);
259
+ this.logger.debug("getObject", { getObjectCommandInput });
269
260
  const stream = await this.createS3DownloadStream(getObjectCommandInput);
270
261
  return Buffer.from(await stream.transformToByteArray());
271
262
  }
272
263
  async getSignedUrl(getObjectCommandInput) {
273
- this.logger.debug("getSignedUrl", getObjectCommandInput);
264
+ this.logger.debug("getSignedUrl", { getObjectCommandInput });
274
265
  const signedUrl = await getSignedUrl(
275
266
  this.client,
276
267
  new GetObjectCommand(getObjectCommandInput),
@@ -279,17 +270,17 @@ var S3Service = class {
279
270
  return signedUrl;
280
271
  }
281
272
  async putObject(putObjectCommandInput) {
282
- this.logger.debug("putObject", putObjectCommandInput);
273
+ this.logger.debug("putObject", { putObjectCommandInput });
283
274
  return await this.client.send(new PutObjectCommand(putObjectCommandInput));
284
275
  }
285
276
  async headObject(headObjectCommandInput) {
286
- this.logger.debug("headObject", headObjectCommandInput);
277
+ this.logger.debug("headObject", { headObjectCommandInput });
287
278
  return await this.client.send(
288
279
  new HeadObjectCommand(headObjectCommandInput)
289
280
  );
290
281
  }
291
282
  async checkIfObjectExists(headObjectCommandInput) {
292
- this.logger.debug("checkIfObjectExists", headObjectCommandInput);
283
+ this.logger.debug("checkIfObjectExists", { headObjectCommandInput });
293
284
  try {
294
285
  await this.headObject(headObjectCommandInput);
295
286
  return true;
@@ -317,7 +308,7 @@ var DynamoDBService = class {
317
308
  client;
318
309
  documentClient;
319
310
  constructor({
320
- logger = getLoggerWithScope("DynamoDBService"),
311
+ logger,
321
312
  client,
322
313
  assumeRoleCommandOutput,
323
314
  region
@@ -367,7 +358,7 @@ var SSMService = class {
367
358
  logger;
368
359
  client;
369
360
  constructor({
370
- logger = getLoggerWithScope("SSMService"),
361
+ logger,
371
362
  client,
372
363
  assumeRoleCommandOutput,
373
364
  region
@@ -406,7 +397,7 @@ var SQSService = class {
406
397
  logger;
407
398
  client;
408
399
  constructor({
409
- logger = getLoggerWithScope("SQSService"),
400
+ logger,
410
401
  client,
411
402
  assumeRoleCommandOutput,
412
403
  region
@@ -445,15 +436,21 @@ import {
445
436
  STSClient
446
437
  } from "@aws-sdk/client-sts";
447
438
  import assert7 from "node:assert/strict";
439
+ import { Logger as Logger5 } from "@aws-lambda-powertools/logger";
448
440
  var STSService = class {
449
441
  logger;
450
442
  client;
451
443
  constructor({
452
- logger = getLoggerWithScope("STSService"),
444
+ logger,
453
445
  region,
454
446
  client
455
447
  }) {
456
- this.logger = logger;
448
+ if (logger) {
449
+ this.logger = logger;
450
+ } else {
451
+ this.logger = new Logger5();
452
+ this.logger.appendKeys({ scope: "STSService" });
453
+ }
457
454
  if (client) {
458
455
  this.client = client;
459
456
  } else {
@@ -468,7 +465,7 @@ var STSService = class {
468
465
  return await this.client.send(new GetCallerIdentityCommand({}));
469
466
  }
470
467
  async assumeRole(assumeRoleCommandInput) {
471
- this.logger.debug("assumeRole", assumeRoleCommandInput);
468
+ this.logger.debug("assumeRole", { assumeRoleCommandInput });
472
469
  return await this.client.send(
473
470
  new AssumeRoleCommand(assumeRoleCommandInput)
474
471
  );
@@ -485,7 +482,7 @@ var LocationService = class {
485
482
  logger;
486
483
  client;
487
484
  constructor({
488
- logger = getLoggerWithScope("LocationService"),
485
+ logger,
489
486
  client,
490
487
  assumeRoleCommandOutput,
491
488
  region
@@ -513,10 +510,13 @@ var LocationService = class {
513
510
  };
514
511
 
515
512
  // src/lambda/plumbingMiddleware.ts
516
- import { Metrics } from "@aws-lambda-powertools/metrics";
517
- import { Tracer } from "@aws-lambda-powertools/tracer";
518
513
  import assert9 from "node:assert";
519
- var plumbingMiddleware = () => {
514
+ var plumbingMiddleware = ({
515
+ logger,
516
+ metrics,
517
+ tracer,
518
+ compositionContext
519
+ }) => {
520
520
  assert9(
521
521
  process.env.POWERTOOLS_METRICS_NAMESPACE,
522
522
  "POWERTOOLS_METRICS_NAMESPACE is not configured"
@@ -525,29 +525,30 @@ var plumbingMiddleware = () => {
525
525
  process.env.POWERTOOLS_SERVICE_NAME,
526
526
  "POWERTOOLS_SERVICE_NAME is not configured"
527
527
  );
528
- const metrics = new Metrics();
529
- const tracer = new Tracer();
530
528
  let segment;
531
529
  let subsegment;
532
530
  let handlerSegment;
533
531
  const before = async ({ context, event }) => {
534
- const logger = getLoggerWithScope("plumbingMiddleware.before");
532
+ logger.appendKeys({ scope: "plumbingMiddleware.before" });
535
533
  logger.addContext(context);
536
534
  logger.setCorrelationId(context.awsRequestId || "no-aws-request-id");
537
535
  logger.logEventIfEnabled(event);
538
- segment = tracer.getSegment();
539
- if (!segment) {
540
- logger.error("Failed to get segment");
541
- return;
536
+ if (tracer) {
537
+ segment = tracer.getSegment();
538
+ if (!segment) {
539
+ logger.error("Failed to get segment");
540
+ handlerSegment = segment.addNewSubsegment(`## ${process.env._HANDLER}`);
541
+ tracer.setSegment(handlerSegment);
542
+ tracer.annotateColdStart();
543
+ tracer.addServiceNameAnnotation();
544
+ tracer.putAnnotation("awsRequestId", context.awsRequestId);
545
+ subsegment = handlerSegment.addNewSubsegment("### MySubSegment");
546
+ tracer.setSegment(subsegment);
547
+ }
548
+ }
549
+ if (metrics) {
550
+ metrics.captureColdStartMetric();
542
551
  }
543
- metrics.captureColdStartMetric();
544
- handlerSegment = segment.addNewSubsegment(`## ${process.env._HANDLER}`);
545
- tracer.setSegment(handlerSegment);
546
- tracer.annotateColdStart();
547
- tracer.addServiceNameAnnotation();
548
- tracer.putAnnotation("awsRequestId", context.awsRequestId);
549
- subsegment = handlerSegment.addNewSubsegment("### MySubSegment");
550
- tracer.setSegment(subsegment);
551
552
  context.clientContext = {
552
553
  client: context.clientContext?.client || {
553
554
  appPackageName: "",
@@ -563,17 +564,21 @@ var plumbingMiddleware = () => {
563
564
  model: "",
564
565
  locale: ""
565
566
  },
566
- Custom: { tracer, logger, metrics }
567
+ Custom: { tracer, logger, metrics, compositionContext }
567
568
  };
568
569
  };
569
570
  const after = async () => {
570
- const logger = getLoggerWithScope("plumbingMiddleware.after");
571
+ logger.appendKeys({ scope: "plumbingMiddleware.after" });
571
572
  try {
572
573
  logger.debug("started closing in after");
573
- subsegment.close();
574
- handlerSegment.close();
575
- tracer.setSegment(segment);
576
- metrics.publishStoredMetrics();
574
+ if (tracer && subsegment && handlerSegment) {
575
+ subsegment.close();
576
+ handlerSegment.close();
577
+ tracer.setSegment(segment);
578
+ }
579
+ if (metrics) {
580
+ metrics.publishStoredMetrics();
581
+ }
577
582
  logger.debug("finished closing in after");
578
583
  } catch (error) {
579
584
  logger.error("error in after", { error });
@@ -589,7 +594,7 @@ var plumbingMiddleware = () => {
589
594
  // src/lambda/sharedUtils.ts
590
595
  import { DynamoDBPersistenceLayer } from "@aws-lambda-powertools/idempotency/dynamodb";
591
596
  import { Metrics as Metrics2 } from "@aws-lambda-powertools/metrics";
592
- import { Logger as Logger2 } from "@aws-lambda-powertools/logger";
597
+ import { Logger as Logger7 } from "@aws-lambda-powertools/logger";
593
598
  import { Tracer as Tracer2 } from "@aws-lambda-powertools/tracer";
594
599
  var getPersistenceStore = () => {
595
600
  return new DynamoDBPersistenceLayer({
@@ -605,23 +610,18 @@ export {
605
610
  JPEG_EXTENSION,
606
611
  JPG_EXTENSION,
607
612
  LocationService,
608
- Logger2 as Logger,
609
613
  MOV_EXTENSION,
610
- Metrics2 as Metrics,
611
614
  S3Service,
612
615
  SQSService,
613
616
  SSMService,
614
617
  STSService,
615
618
  THUMBNAIL_RESOLUTIONS,
616
619
  THUMBS_EXTENSION,
617
- Tracer2 as Tracer,
618
620
  assertEnvVar,
619
621
  assertString,
620
622
  getEncodedVideoKey,
621
623
  getKeyExtension,
622
- getLoggerWithScope,
623
624
  getObjectWithAssumeRoleCommandOutputAttribute,
624
- getObjectWithLoggerAttribute,
625
625
  getObjectWithStackAttribute,
626
626
  getPersistenceStore,
627
627
  getThumbsKey,
@@ -629,7 +629,6 @@ export {
629
629
  isAllowedVideoExtension,
630
630
  normalizeErrorMessage,
631
631
  plumbingMiddleware,
632
- processMeta,
633
- rootLogger
632
+ processMeta
634
633
  };
635
634
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/services/s3.ts", "../src/utils/assertUtils.ts", "../src/utils/logger.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 getLoggerWithScope,\n getObjectWithAssumeRoleCommandOutputAttribute\n} from \"../utils/index.js\";\nimport { GenericLogger } from \"../utils/types.js\";\nimport { getSignedUrl } from \"@aws-sdk/s3-request-presigner\";\n\nexport class S3Service {\n logger: GenericLogger;\n client: S3Client;\n constructor({\n logger = getLoggerWithScope(\"S3Service\"),\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 ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n }\n\n createS3UploadStream(putObjectCommandInput: PutObjectCommandInput) {\n this.logger.debug(\"upload stream started\", putObjectCommandInput);\n\n const pass = new PassThrough();\n\n const parallelUploads = new Upload({\n client: this.client,\n params: {\n ...putObjectCommandInput,\n Body: pass\n }\n });\n\n const donePromise = parallelUploads\n .done()\n .then(() => this.logger.debug(\"upload stream finished\"))\n .catch((err) => {\n this.logger.error(\"upload stream error\", err);\n pass.destroy(err);\n });\n\n return { stream: pass, done: donePromise };\n }\n\n async createS3DownloadStream(getObjectCommandInput: GetObjectCommandInput) {\n this.logger.debug(\"download stream started\", getObjectCommandInput);\n\n const item = await this.client.send(\n new GetObjectCommand(getObjectCommandInput)\n );\n\n this.logger.debug(\"download stream finished\");\n\n return item.Body;\n }\n\n async listObjectsV2(listObjectsV2CommandInput: ListObjectsV2CommandInput) {\n this.logger.debug(\"listObjectsV2\", listObjectsV2CommandInput);\n return await this.client.send(\n new ListObjectsV2Command(listObjectsV2CommandInput)\n );\n }\n\n async getObject(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<Buffer> {\n this.logger.debug(\"getObject\", getObjectCommandInput);\n\n const stream = await this.createS3DownloadStream(getObjectCommandInput);\n\n return Buffer.from(await stream.transformToByteArray());\n }\n\n async getSignedUrl(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<string> {\n this.logger.debug(\"getSignedUrl\", getObjectCommandInput);\n\n const signedUrl = await getSignedUrl(\n this.client,\n new GetObjectCommand(getObjectCommandInput),\n { expiresIn: 3600 }\n );\n\n return signedUrl;\n }\n\n async putObject(\n putObjectCommandInput: PutObjectCommandInput\n ): Promise<PutObjectCommandOutput> {\n this.logger.debug(\"putObject\", putObjectCommandInput);\n\n return await this.client.send(new PutObjectCommand(putObjectCommandInput));\n }\n\n async headObject(headObjectCommandInput: HeadObjectCommandInput) {\n this.logger.debug(\"headObject\", headObjectCommandInput);\n return await this.client.send(\n new HeadObjectCommand(headObjectCommandInput)\n );\n }\n\n async checkIfObjectExists(\n headObjectCommandInput: HeadObjectCommandInput\n ): Promise<boolean> {\n this.logger.debug(\"checkIfObjectExists\", headObjectCommandInput);\n\n try {\n await this.headObject(headObjectCommandInput);\n return true;\n } catch (error) {\n if (error.name === \"NotFound\") {\n return false;\n }\n throw error;\n }\n }\n}\n", "import assert from \"node:assert/strict\";\n\nexport const assertEnvVar = (envVar: string): string => {\n assert(process.env[envVar], `${envVar} is not set`);\n return process.env[envVar];\n};\n\nexport const assertString = (value: string | undefined): string => {\n assert(typeof value === \"string\", \"Value is not a string\");\n assert(value.length > 0, \"Value is empty\");\n return value;\n};\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\nimport { GenericLogger } from \"./types.js\";\n\nexport const rootLogger = new Logger({\n serviceName:\n process.env.POWERTOOLS_SERVICE_NAME ??\n process.env.AWS_LAMBDA_FUNCTION_NAME ??\n \"ac-shared\"\n});\n\nexport const getLoggerWithScope = (\n scope: string,\n logger: Logger = rootLogger\n) => {\n const childLogger = logger.createChild();\n childLogger.appendKeys({ scope });\n return childLogger;\n};\n", "export const normalizeErrorMessage = (error: unknown): string => {\n if (error instanceof Error) {\n return error.message;\n } else if (typeof error === \"string\") {\n return error;\n } else if (typeof error === \"object\" && error !== null) {\n return JSON.stringify(error);\n } else {\n return String(error);\n }\n};\n", "import { extname } from \"node:path\";\n\nexport const JPEG_EXTENSION = \"jpeg\";\nexport const JPG_EXTENSION = \"jpg\";\nexport const HEIC_EXTENSION = \"heic\";\nexport const 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\";\nimport { GenericLogger } from \"./types.js\";\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\nexport const getObjectWithLoggerAttribute = (logger?: GenericLogger) =>\n logger\n ? {\n logger\n }\n : {};\n", "import { DynamoDBService, LocationService } from \"../services/index.js\";\nimport { getLoggerWithScope } from \"./logger.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 = getLoggerWithScope(\"processMeta\"),\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 getLoggerWithScope,\n getObjectWithAssumeRoleCommandOutputAttribute\n} from \"../utils/index.js\";\nimport { GenericLogger } from \"../utils/types.js\";\n\nexport class DynamoDBService {\n logger: GenericLogger;\n client: DynamoDBClient;\n documentClient: DynamoDBDocumentClient;\n\n constructor({\n logger = getLoggerWithScope(\"DynamoDBService\"),\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 ...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 {\n getLoggerWithScope,\n getObjectWithAssumeRoleCommandOutputAttribute\n} from \"../utils/index.js\";\nimport { GenericLogger } from \"../utils/types.js\";\n\nexport class SSMService {\n logger: GenericLogger;\n client: SSMClient;\n\n constructor({\n logger = getLoggerWithScope(\"SSMService\"),\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 ...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 getLoggerWithScope,\n getObjectWithAssumeRoleCommandOutputAttribute\n} from \"../utils/index.js\";\nimport { GenericLogger } from \"../utils/types.js\";\n\nexport class SQSService {\n logger: GenericLogger;\n client: SQSClient;\n\n constructor({\n logger = getLoggerWithScope(\"SQSService\"),\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 ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n }\n\n async sendMessage(\n params: SendMessageCommandInput\n ): Promise<SendMessageCommandOutput> {\n return await this.client.send(new SendMessageCommand(params));\n }\n\n async sendMessageBatch(\n params: SendMessageBatchCommandInput\n ): Promise<SendMessageBatchCommandOutput> {\n return await this.client.send(new SendMessageBatchCommand(params));\n }\n\n async receiveMessage(\n params: ReceiveMessageCommandInput\n ): Promise<ReceiveMessageCommandOutput> {\n return await this.client.send(new ReceiveMessageCommand(params));\n }\n\n async deleteMessage(\n params: DeleteMessageCommandInput\n ): Promise<DeleteMessageCommandOutput> {\n return await this.client.send(new DeleteMessageCommand(params));\n }\n}\n", "import {\n AssumeRoleCommand,\n AssumeRoleCommandInput,\n GetCallerIdentityCommand,\n STSClient\n} from \"@aws-sdk/client-sts\";\nimport assert from \"node:assert/strict\";\nimport { GenericLogger } from \"../utils/types.js\";\nimport { getLoggerWithScope } from \"../utils/logger.js\";\n\nexport class STSService {\n logger: GenericLogger;\n client: STSClient;\n\n constructor({\n logger = getLoggerWithScope(\"STSService\"),\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 });\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 getLoggerWithScope,\n getObjectWithAssumeRoleCommandOutputAttribute\n} from \"../utils/index.js\";\nimport { GenericLogger } from \"../utils/types.js\";\n\nexport class LocationService {\n logger: GenericLogger;\n client: LocationClient;\n\n constructor({\n logger = getLoggerWithScope(\"LocationService\"),\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: LocationClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new LocationClient({\n region,\n ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n }\n\n async searchPlaceIndexForPositionCommand(\n searchPlaceIndexForPositionCommandInput: SearchPlaceIndexForPositionCommandInput\n ): Promise<SearchPlaceIndexForPositionCommandOutput> {\n return await this.client.send(\n new SearchPlaceIndexForPositionCommand(\n searchPlaceIndexForPositionCommandInput\n )\n );\n }\n}\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\nimport middy, { MiddlewareObj } from \"@middy/core\";\nimport assert from \"node:assert\";\nimport { getLoggerWithScope } from \"../utils/logger.js\";\n\nexport const plumbingMiddleware = (): MiddlewareObj => {\n assert(\n process.env.POWERTOOLS_METRICS_NAMESPACE,\n \"POWERTOOLS_METRICS_NAMESPACE is not configured\"\n );\n\n assert(\n process.env.POWERTOOLS_SERVICE_NAME,\n \"POWERTOOLS_SERVICE_NAME is not configured\"\n );\n\n const metrics = new Metrics();\n const tracer = new Tracer();\n\n let segment: any;\n let subsegment: any;\n let handlerSegment: any;\n\n const before: middy.MiddlewareFn = async ({ context, event }) => {\n const logger = getLoggerWithScope(\"plumbingMiddleware.before\");\n logger.addContext(context);\n logger.setCorrelationId(context.awsRequestId || \"no-aws-request-id\");\n logger.logEventIfEnabled(event);\n\n segment = tracer.getSegment();\n\n if (!segment) {\n logger.error(\"Failed to get segment\");\n return;\n }\n\n metrics.captureColdStartMetric();\n\n // Create subsegment for the function & set it as active\n handlerSegment = segment.addNewSubsegment(`## ${process.env._HANDLER}`);\n tracer.setSegment(handlerSegment);\n tracer.annotateColdStart();\n tracer.addServiceNameAnnotation();\n\n // Add annotation for the awsRequestId\n tracer.putAnnotation(\"awsRequestId\", context.awsRequestId);\n\n // Create another subsegment & set it as active\n subsegment = handlerSegment.addNewSubsegment(\"### MySubSegment\");\n tracer.setSegment(subsegment);\n\n context.clientContext = {\n client: context.clientContext?.client || {\n appPackageName: \"\",\n appTitle: \"\",\n appVersionCode: \"\",\n appVersionName: \"\",\n installationId: \"\"\n },\n env: context.clientContext?.env || {\n platform: \"\",\n platformVersion: \"\",\n make: \"\",\n model: \"\",\n locale: \"\"\n },\n Custom: { tracer, logger, metrics }\n };\n };\n\n const after: middy.MiddlewareFn = async (): Promise<void> => {\n const logger = getLoggerWithScope(\"plumbingMiddleware.after\");\n\n try {\n logger.debug(\"started closing in after\");\n subsegment.close(); // (### MySubSegment)\n handlerSegment.close(); // (## index.handler)\n\n // Set the facade segment as active again (the one created by AWS Lambda)\n tracer.setSegment(segment);\n // Publish all stored metrics\n metrics.publishStoredMetrics();\n logger.debug(\"finished closing in after\");\n } catch (error) {\n logger.error(\"error in after\", { error });\n throw error;\n }\n };\n\n return {\n before,\n after\n };\n};\n", "import { DynamoDBPersistenceLayer } from \"@aws-lambda-powertools/idempotency/dynamodb\";\nimport { Context } from \"aws-lambda\";\nimport { assertEnvVar } from \"../utils/assertUtils.js\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\n\nexport const getPersistenceStore = () => {\n return new DynamoDBPersistenceLayer({\n tableName: assertEnvVar(\"AC_IDEMPOTENCY_TABLE_NAME\")\n });\n};\n\nexport interface ACLambdaContext extends Context {\n clientContext?: {\n Custom?: {\n metrics: Metrics;\n logger: Logger;\n tracer: Tracer;\n };\n client: {\n appPackageName: string;\n appTitle: string;\n appVersionCode: string;\n appVersionName: string;\n installationId: string;\n };\n env: {\n platform: string;\n platformVersion: string;\n make: string;\n model: string;\n locale: string;\n };\n };\n}\n\nexport { Logger, Metrics, Tracer };\n"],
5
- "mappings": "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",
6
- "names": ["assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "Metrics", "Logger", "Tracer"]
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 compositionContext\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: { tracer, logger, metrics, compositionContext }\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\";\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 compositionContext?: any;\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;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,EAAE,QAAQ,QAAQ,SAAS,mBAAmB;AAAA,IACxD;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;;;ACvGA,SAAS,gCAAgC;AAGzC,SAAS,WAAAC,gBAAe;AACxB,SAAS,UAAAC,eAAc;AACvB,SAAS,UAAAC,eAAc;AAEhB,IAAM,sBAAsB,MAAM;AACvC,SAAO,IAAI,yBAAyB;AAAA,IAClC,WAAW,aAAa,2BAA2B;AAAA,EACrD,CAAC;AACH;",
6
+ "names": ["assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "Logger", "assert", "assert", "assert", "Metrics", "Logger", "Tracer"]
7
7
  }
@@ -1,2 +1,3 @@
1
1
  import { MiddlewareObj } from "@middy/core";
2
- export declare const plumbingMiddleware: () => MiddlewareObj;
2
+ import type { ServicesContext } from "./sharedUtils.js";
3
+ export declare const plumbingMiddleware: ({ logger, metrics, tracer, compositionContext }: ServicesContext) => MiddlewareObj;
@@ -4,13 +4,15 @@ import { Metrics } from "@aws-lambda-powertools/metrics";
4
4
  import { Logger } from "@aws-lambda-powertools/logger";
5
5
  import { Tracer } from "@aws-lambda-powertools/tracer";
6
6
  export declare const getPersistenceStore: () => DynamoDBPersistenceLayer;
7
+ export type ServicesContext = {
8
+ logger: Logger;
9
+ tracer?: Tracer;
10
+ metrics?: Metrics;
11
+ compositionContext?: any;
12
+ };
7
13
  export interface ACLambdaContext extends Context {
8
- clientContext?: {
9
- Custom?: {
10
- metrics: Metrics;
11
- logger: Logger;
12
- tracer: Tracer;
13
- };
14
+ clientContext: {
15
+ Custom: ServicesContext;
14
16
  client: {
15
17
  appPackageName: string;
16
18
  appTitle: string;
@@ -1,13 +1,13 @@
1
1
  import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
2
2
  import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
3
3
  import { DynamoDBDocumentClient, GetCommandInput, GetCommandOutput, PutCommandInput, PutCommandOutput, QueryCommandInput, QueryCommandOutput, UpdateCommandInput, UpdateCommandOutput } from "@aws-sdk/lib-dynamodb";
4
- import { GenericLogger } from "../utils/types.js";
4
+ import { Logger } from "../utils/index.js";
5
5
  export declare class DynamoDBService {
6
- logger: GenericLogger;
6
+ logger: Logger;
7
7
  client: DynamoDBClient;
8
8
  documentClient: DynamoDBDocumentClient;
9
9
  constructor({ logger, client, assumeRoleCommandOutput, region }: {
10
- logger?: GenericLogger;
10
+ logger: Logger;
11
11
  client?: DynamoDBClient;
12
12
  assumeRoleCommandOutput?: AssumeRoleCommandOutput;
13
13
  region?: string;
@@ -1,11 +1,11 @@
1
1
  import { LocationClient, SearchPlaceIndexForPositionCommandInput, SearchPlaceIndexForPositionCommandOutput } from "@aws-sdk/client-location";
2
2
  import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
3
- import { GenericLogger } from "../utils/types.js";
3
+ import { Logger } from "../utils/index.js";
4
4
  export declare class LocationService {
5
- logger: GenericLogger;
5
+ logger: Logger;
6
6
  client: LocationClient;
7
7
  constructor({ logger, client, assumeRoleCommandOutput, region }: {
8
- logger?: GenericLogger;
8
+ logger: Logger;
9
9
  client?: LocationClient;
10
10
  assumeRoleCommandOutput?: AssumeRoleCommandOutput;
11
11
  region?: string;
@@ -1,12 +1,12 @@
1
1
  import { GetObjectCommandInput, HeadObjectCommandInput, ListObjectsV2CommandInput, PutObjectCommandInput, PutObjectCommandOutput, S3Client } from "@aws-sdk/client-s3";
2
2
  import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
3
3
  import { PassThrough } from "node:stream";
4
- import { GenericLogger } from "../utils/types.js";
4
+ import { Logger } from "../utils/index.js";
5
5
  export declare class S3Service {
6
- logger: GenericLogger;
6
+ logger: Logger;
7
7
  client: S3Client;
8
8
  constructor({ logger, client, assumeRoleCommandOutput, region }: {
9
- logger?: GenericLogger;
9
+ logger: Logger;
10
10
  client?: S3Client;
11
11
  assumeRoleCommandOutput?: AssumeRoleCommandOutput;
12
12
  region?: string;
@@ -1,11 +1,11 @@
1
1
  import { DeleteMessageCommandInput, DeleteMessageCommandOutput, ReceiveMessageCommandInput, ReceiveMessageCommandOutput, SQSClient, SendMessageBatchCommandInput, SendMessageBatchCommandOutput, SendMessageCommandInput, SendMessageCommandOutput } from "@aws-sdk/client-sqs";
2
2
  import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
3
- import { GenericLogger } from "../utils/types.js";
3
+ import { Logger } from "../utils/index.js";
4
4
  export declare class SQSService {
5
- logger: GenericLogger;
5
+ logger: Logger;
6
6
  client: SQSClient;
7
7
  constructor({ logger, client, assumeRoleCommandOutput, region }: {
8
- logger?: GenericLogger;
8
+ logger: Logger;
9
9
  client?: SQSClient;
10
10
  assumeRoleCommandOutput?: AssumeRoleCommandOutput;
11
11
  region?: string;
@@ -1,11 +1,11 @@
1
1
  import { GetParameterCommandInput, GetParameterCommandOutput, PutParameterCommandInput, PutParameterCommandOutput, SSMClient } from "@aws-sdk/client-ssm";
2
2
  import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
3
- import { GenericLogger } from "../utils/types.js";
3
+ import { Logger } from "@aws-lambda-powertools/logger";
4
4
  export declare class SSMService {
5
- logger: GenericLogger;
5
+ logger: Logger;
6
6
  client: SSMClient;
7
7
  constructor({ logger, client, assumeRoleCommandOutput, region }: {
8
- logger?: GenericLogger;
8
+ logger: Logger;
9
9
  client?: SSMClient;
10
10
  assumeRoleCommandOutput?: AssumeRoleCommandOutput;
11
11
  region?: string;
@@ -1,10 +1,10 @@
1
1
  import { AssumeRoleCommandInput, STSClient } from "@aws-sdk/client-sts";
2
- import { GenericLogger } from "../utils/types.js";
2
+ import { Logger } from "@aws-lambda-powertools/logger";
3
3
  export declare class STSService {
4
- logger: GenericLogger;
4
+ logger: Logger;
5
5
  client: STSClient;
6
6
  constructor({ logger, region, client }: {
7
- logger?: GenericLogger;
7
+ logger: Logger;
8
8
  region?: string;
9
9
  client?: STSClient;
10
10
  });
@@ -1,5 +1,4 @@
1
1
  import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
2
- import { GenericLogger } from "./types.js";
3
2
  export declare const getObjectWithAssumeRoleCommandOutputAttribute: (assumeRoleCommandOutput?: AssumeRoleCommandOutput) => {
4
3
  credentials: {
5
4
  accessKeyId: string;
@@ -14,8 +13,3 @@ export declare const getObjectWithStackAttribute: (error: any) => {
14
13
  } | {
15
14
  stack?: undefined;
16
15
  };
17
- export declare const getObjectWithLoggerAttribute: (logger?: GenericLogger) => {
18
- logger: GenericLogger;
19
- } | {
20
- logger?: undefined;
21
- };
@@ -1,7 +1,8 @@
1
+ export { Logger } from "@aws-lambda-powertools/logger";
2
+ export { Metrics } from "@aws-lambda-powertools/metrics";
3
+ export { Tracer } from "@aws-lambda-powertools/tracer";
1
4
  export * from "./assertUtils.js";
2
- export * from "./logger.js";
3
5
  export * from "./normalizeErrorMessage.js";
4
6
  export * from "./thumbsKey.js";
5
7
  export * from "./helpers.js";
6
8
  export * from "./processMeta.js";
7
- export * from "./types.js";
@@ -6,7 +6,7 @@ type ExtractMetadataParams = {
6
6
  key: string;
7
7
  value: string;
8
8
  }>;
9
- logger?: Logger;
9
+ logger: Logger;
10
10
  locationService: LocationService;
11
11
  dynamoDBService: DynamoDBService;
12
12
  metaTableName: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aspan-corporation/ac-shared",
3
- "version": "1.1.2",
3
+ "version": "1.1.6",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "lib/index.js",
@@ -1,3 +0,0 @@
1
- import { Logger } from "@aws-lambda-powertools/logger";
2
- export declare const rootLogger: Logger;
3
- export declare const getLoggerWithScope: (scope: string, logger?: Logger) => Logger;
@@ -1,6 +0,0 @@
1
- export interface GenericLogger {
2
- info(...args: any[]): void;
3
- debug(...args: any[]): void;
4
- warn(...args: any[]): void;
5
- error(...args: any[]): void;
6
- }