@aspan-corporation/ac-shared 1.0.20 → 1.0.22
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 +1 -1
- package/lib/index.js +148 -144
- package/lib/index.js.map +4 -4
- package/lib/services/dynamoDB.d.ts +1 -1
- package/lib/services/location.d.ts +1 -1
- package/lib/services/s3.d.ts +7 -3
- package/lib/services/sqs.d.ts +1 -1
- package/lib/services/ssm.d.ts +1 -1
- package/lib/services/sts.d.ts +1 -1
- package/lib/utils/helpers.d.ts +14 -0
- package/lib/utils/index.d.ts +1 -0
- package/package.json +1 -1
- /package/lib/{services → utils}/types.d.ts +0 -0
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -3,11 +3,99 @@ import {
|
|
|
3
3
|
GetObjectCommand,
|
|
4
4
|
HeadObjectCommand,
|
|
5
5
|
ListObjectsV2Command,
|
|
6
|
+
PutObjectCommand,
|
|
6
7
|
S3Client
|
|
7
8
|
} from "@aws-sdk/client-s3";
|
|
8
9
|
import { Upload } from "@aws-sdk/lib-storage";
|
|
9
10
|
import { PassThrough } from "node:stream";
|
|
11
|
+
import assert2 from "node:assert/strict";
|
|
12
|
+
|
|
13
|
+
// src/utils/assertUtils.ts
|
|
10
14
|
import assert from "node:assert/strict";
|
|
15
|
+
var assertEnvVar = (envVar) => {
|
|
16
|
+
assert(process.env[envVar], `${envVar} is not set`);
|
|
17
|
+
return process.env[envVar];
|
|
18
|
+
};
|
|
19
|
+
var assertString = (value) => {
|
|
20
|
+
assert(typeof value === "string", "Value is not a string");
|
|
21
|
+
assert(value.length > 0, "Value is empty");
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
|
|
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
|
+
// src/utils/normalizeErrorMessage.ts
|
|
37
|
+
var normalizeErrorMessage = (error) => {
|
|
38
|
+
if (error instanceof Error) {
|
|
39
|
+
return error.message;
|
|
40
|
+
} else if (typeof error === "string") {
|
|
41
|
+
return error;
|
|
42
|
+
} else if (typeof error === "object" && error !== null) {
|
|
43
|
+
return JSON.stringify(error);
|
|
44
|
+
} else {
|
|
45
|
+
return String(error);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/utils/thumbsKey.ts
|
|
50
|
+
import { extname } from "node:path";
|
|
51
|
+
var JPEG_EXTENSION = "jpeg";
|
|
52
|
+
var JPG_EXTENSION = "jpg";
|
|
53
|
+
var HEIC_EXTENSION = "heic";
|
|
54
|
+
var DEFAULT_THUMBS_EXTENSION = JPG_EXTENSION;
|
|
55
|
+
var ALLOWED_EXTENSIONS = [
|
|
56
|
+
JPEG_EXTENSION,
|
|
57
|
+
JPG_EXTENSION,
|
|
58
|
+
HEIC_EXTENSION
|
|
59
|
+
];
|
|
60
|
+
var THUMBNAIL_RESOLUTIONS = [
|
|
61
|
+
[200, 200],
|
|
62
|
+
[1180, 820]
|
|
63
|
+
];
|
|
64
|
+
var getThumbsKey = ({
|
|
65
|
+
key,
|
|
66
|
+
prefix,
|
|
67
|
+
width,
|
|
68
|
+
height
|
|
69
|
+
}) => {
|
|
70
|
+
const ext = getKeyExtension(key);
|
|
71
|
+
const destinationKey = [JPEG_EXTENSION, JPG_EXTENSION].includes(ext) ? key : `${key.split(".").slice(0, -1).join(".")}.${DEFAULT_THUMBS_EXTENSION}`;
|
|
72
|
+
return `${prefix}/${width}x${height}/${destinationKey}`;
|
|
73
|
+
};
|
|
74
|
+
var getKeyExtension = (key) => extname(key).slice(1).toLowerCase();
|
|
75
|
+
var isAllowedExtension = (key) => {
|
|
76
|
+
const ext = getKeyExtension(key);
|
|
77
|
+
return ALLOWED_EXTENSIONS.includes(ext);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/utils/helpers.ts
|
|
81
|
+
var getObjectWithAttribute = (value, attributeName) => {
|
|
82
|
+
const resultingObject = {};
|
|
83
|
+
if (value !== void 0 && value !== null) {
|
|
84
|
+
resultingObject[attributeName] = value;
|
|
85
|
+
}
|
|
86
|
+
return resultingObject;
|
|
87
|
+
};
|
|
88
|
+
var getObjectWithAssumeRoleCommandOutputAttribute = (assumeRoleCommandOutput) => assumeRoleCommandOutput ? {
|
|
89
|
+
credentials: {
|
|
90
|
+
accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
|
|
91
|
+
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
92
|
+
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
93
|
+
}
|
|
94
|
+
} : {};
|
|
95
|
+
var getObjectWithStackAttribute = (error) => getObjectWithAttribute(error.stack, "stack");
|
|
96
|
+
var getObjectWithLoggerAttribute = (logger) => getObjectWithAttribute(logger, "logger");
|
|
97
|
+
|
|
98
|
+
// src/services/s3.ts
|
|
11
99
|
var S3Service = class {
|
|
12
100
|
logger;
|
|
13
101
|
client;
|
|
@@ -21,33 +109,31 @@ var S3Service = class {
|
|
|
21
109
|
if (client) {
|
|
22
110
|
this.client = client;
|
|
23
111
|
} else {
|
|
24
|
-
|
|
112
|
+
assert2(region, "Region must be provided if client is not passed");
|
|
25
113
|
this.client = new S3Client({
|
|
26
114
|
region,
|
|
27
|
-
|
|
28
|
-
...
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
32
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
33
|
-
}
|
|
34
|
-
} : {}
|
|
115
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
116
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
117
|
+
assumeRoleCommandOutput
|
|
118
|
+
)
|
|
35
119
|
});
|
|
36
120
|
}
|
|
37
121
|
}
|
|
38
122
|
createS3UploadStream(putObjectCommandInput) {
|
|
39
123
|
this.logger.debug("upload stream started");
|
|
40
124
|
const pass = new PassThrough();
|
|
41
|
-
const
|
|
125
|
+
const parallelUploads = new Upload({
|
|
42
126
|
client: this.client,
|
|
43
127
|
params: {
|
|
44
128
|
...putObjectCommandInput,
|
|
45
129
|
Body: pass
|
|
46
130
|
}
|
|
47
131
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
132
|
+
const donePromise = parallelUploads.done().then(() => this.logger.debug("upload stream finished")).catch((err) => {
|
|
133
|
+
this.logger.error("upload stream error", err);
|
|
134
|
+
pass.destroy(err);
|
|
135
|
+
});
|
|
136
|
+
return { stream: pass, done: donePromise };
|
|
51
137
|
}
|
|
52
138
|
async createS3DownloadStream(getObjectCommandInput) {
|
|
53
139
|
this.logger.debug("download stream started");
|
|
@@ -66,6 +152,9 @@ var S3Service = class {
|
|
|
66
152
|
const stream = await this.createS3DownloadStream(getObjectCommandInput);
|
|
67
153
|
return Buffer.from(await stream.transformToByteArray());
|
|
68
154
|
}
|
|
155
|
+
async putObject(putObjectCommandInput) {
|
|
156
|
+
return await this.client.send(new PutObjectCommand(putObjectCommandInput));
|
|
157
|
+
}
|
|
69
158
|
async headObject(headObjectCommandInput) {
|
|
70
159
|
return await this.client.send(
|
|
71
160
|
new HeadObjectCommand(headObjectCommandInput)
|
|
@@ -93,7 +182,7 @@ import {
|
|
|
93
182
|
QueryCommand,
|
|
94
183
|
UpdateCommand
|
|
95
184
|
} from "@aws-sdk/lib-dynamodb";
|
|
96
|
-
import
|
|
185
|
+
import assert3 from "node:assert/strict";
|
|
97
186
|
var DynamoDBService = class {
|
|
98
187
|
logger;
|
|
99
188
|
client;
|
|
@@ -108,17 +197,13 @@ var DynamoDBService = class {
|
|
|
108
197
|
if (client) {
|
|
109
198
|
this.client = client;
|
|
110
199
|
} else {
|
|
111
|
-
|
|
200
|
+
assert3(region, "Region must be provided if client is not passed");
|
|
112
201
|
this.client = new DynamoDBClient({
|
|
113
202
|
region,
|
|
114
|
-
|
|
115
|
-
...
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
119
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
120
|
-
}
|
|
121
|
-
} : {}
|
|
203
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
204
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
205
|
+
assumeRoleCommandOutput
|
|
206
|
+
)
|
|
122
207
|
});
|
|
123
208
|
}
|
|
124
209
|
this.documentClient = DynamoDBDocumentClient.from(this.client);
|
|
@@ -149,7 +234,7 @@ import {
|
|
|
149
234
|
PutParameterCommand,
|
|
150
235
|
SSMClient
|
|
151
236
|
} from "@aws-sdk/client-ssm";
|
|
152
|
-
import
|
|
237
|
+
import assert4 from "node:assert/strict";
|
|
153
238
|
var SSMService = class {
|
|
154
239
|
logger;
|
|
155
240
|
client;
|
|
@@ -163,17 +248,13 @@ var SSMService = class {
|
|
|
163
248
|
if (client) {
|
|
164
249
|
this.client = client;
|
|
165
250
|
} else {
|
|
166
|
-
|
|
251
|
+
assert4(region, "Region must be provided if client is not passed");
|
|
167
252
|
this.client = new SSMClient({
|
|
168
253
|
region,
|
|
169
|
-
|
|
170
|
-
...
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
174
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
175
|
-
}
|
|
176
|
-
} : {}
|
|
254
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
255
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
256
|
+
assumeRoleCommandOutput
|
|
257
|
+
)
|
|
177
258
|
});
|
|
178
259
|
}
|
|
179
260
|
}
|
|
@@ -193,7 +274,7 @@ import {
|
|
|
193
274
|
SendMessageBatchCommand,
|
|
194
275
|
SendMessageCommand
|
|
195
276
|
} from "@aws-sdk/client-sqs";
|
|
196
|
-
import
|
|
277
|
+
import assert5 from "node:assert/strict";
|
|
197
278
|
var SQSService = class {
|
|
198
279
|
logger;
|
|
199
280
|
client;
|
|
@@ -207,17 +288,13 @@ var SQSService = class {
|
|
|
207
288
|
if (client) {
|
|
208
289
|
this.client = client;
|
|
209
290
|
} else {
|
|
210
|
-
|
|
291
|
+
assert5(region, "Region must be provided if client is not passed");
|
|
211
292
|
this.client = new SQSClient({
|
|
212
293
|
region,
|
|
213
|
-
|
|
214
|
-
...
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
218
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
219
|
-
}
|
|
220
|
-
} : {}
|
|
294
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
295
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
296
|
+
assumeRoleCommandOutput
|
|
297
|
+
)
|
|
221
298
|
});
|
|
222
299
|
}
|
|
223
300
|
}
|
|
@@ -241,7 +318,7 @@ import {
|
|
|
241
318
|
GetCallerIdentityCommand,
|
|
242
319
|
STSClient
|
|
243
320
|
} from "@aws-sdk/client-sts";
|
|
244
|
-
import
|
|
321
|
+
import assert6 from "node:assert/strict";
|
|
245
322
|
var STSService = class {
|
|
246
323
|
logger;
|
|
247
324
|
client;
|
|
@@ -254,10 +331,10 @@ var STSService = class {
|
|
|
254
331
|
if (client) {
|
|
255
332
|
this.client = client;
|
|
256
333
|
} else {
|
|
257
|
-
|
|
334
|
+
assert6(region, "Region must be provided if client is not passed");
|
|
258
335
|
this.client = new STSClient({
|
|
259
336
|
region,
|
|
260
|
-
|
|
337
|
+
...getObjectWithLoggerAttribute(this.logger)
|
|
261
338
|
});
|
|
262
339
|
}
|
|
263
340
|
}
|
|
@@ -276,7 +353,7 @@ import {
|
|
|
276
353
|
LocationClient,
|
|
277
354
|
SearchPlaceIndexForPositionCommand
|
|
278
355
|
} from "@aws-sdk/client-location";
|
|
279
|
-
import
|
|
356
|
+
import assert7 from "node:assert/strict";
|
|
280
357
|
var LocationService = class {
|
|
281
358
|
logger;
|
|
282
359
|
client;
|
|
@@ -290,17 +367,13 @@ var LocationService = class {
|
|
|
290
367
|
if (client) {
|
|
291
368
|
this.client = client;
|
|
292
369
|
} else {
|
|
293
|
-
|
|
370
|
+
assert7(region, "Region must be provided if client is not passed");
|
|
294
371
|
this.client = new LocationClient({
|
|
295
372
|
region,
|
|
296
|
-
|
|
297
|
-
...
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
301
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
302
|
-
}
|
|
303
|
-
} : {}
|
|
373
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
374
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
375
|
+
assumeRoleCommandOutput
|
|
376
|
+
)
|
|
304
377
|
});
|
|
305
378
|
}
|
|
306
379
|
}
|
|
@@ -314,35 +387,32 @@ var LocationService = class {
|
|
|
314
387
|
};
|
|
315
388
|
|
|
316
389
|
// src/lambda/plumbingMiddleware.ts
|
|
317
|
-
import { Logger } from "@aws-lambda-powertools/logger";
|
|
390
|
+
import { Logger as Logger2 } from "@aws-lambda-powertools/logger";
|
|
318
391
|
import { Metrics } from "@aws-lambda-powertools/metrics";
|
|
319
392
|
import { Tracer } from "@aws-lambda-powertools/tracer";
|
|
320
|
-
import
|
|
393
|
+
import assert8 from "node:assert";
|
|
321
394
|
var plumbingMiddleware = () => {
|
|
322
|
-
|
|
395
|
+
assert8(
|
|
323
396
|
process.env.POWERTOOLS_METRICS_NAMESPACE,
|
|
324
397
|
"POWERTOOLS_METRICS_NAMESPACE is not configured"
|
|
325
398
|
);
|
|
326
|
-
|
|
399
|
+
assert8(
|
|
327
400
|
process.env.POWERTOOLS_SERVICE_NAME,
|
|
328
401
|
"POWERTOOLS_SERVICE_NAME is not configured"
|
|
329
402
|
);
|
|
330
403
|
const metrics = new Metrics();
|
|
331
|
-
const
|
|
404
|
+
const rootlogger = new Logger2();
|
|
332
405
|
const tracer = new Tracer();
|
|
333
406
|
let segment;
|
|
334
407
|
let subsegment;
|
|
335
408
|
let handlerSegment;
|
|
336
409
|
const before = async ({ context, event }) => {
|
|
337
|
-
logger.
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
const localLogger = logger.createChild();
|
|
341
|
-
localLogger.appendKeys({ function: "plumbingMiddleware.before" });
|
|
342
|
-
localLogger.info("incoming", { event });
|
|
410
|
+
const logger = getLoggerWithScope("plumbingMiddleware.before", rootlogger);
|
|
411
|
+
logger.addContext(context);
|
|
412
|
+
logger.logEventIfEnabled(event);
|
|
343
413
|
segment = tracer.getSegment();
|
|
344
414
|
if (!segment) {
|
|
345
|
-
|
|
415
|
+
logger.error("Failed to get segment");
|
|
346
416
|
return;
|
|
347
417
|
}
|
|
348
418
|
metrics.captureColdStartMetric();
|
|
@@ -372,17 +442,16 @@ var plumbingMiddleware = () => {
|
|
|
372
442
|
};
|
|
373
443
|
};
|
|
374
444
|
const after = async () => {
|
|
375
|
-
const
|
|
376
|
-
localLogger.appendKeys({ function: "plumbingMiddleware.after" });
|
|
445
|
+
const logger = getLoggerWithScope("plumbingMiddleware.after", rootlogger);
|
|
377
446
|
try {
|
|
378
|
-
|
|
447
|
+
logger.debug("started closing in after");
|
|
379
448
|
subsegment.close();
|
|
380
449
|
handlerSegment.close();
|
|
381
450
|
tracer.setSegment(segment);
|
|
382
451
|
metrics.publishStoredMetrics();
|
|
383
|
-
|
|
452
|
+
logger.debug("finished closing in after");
|
|
384
453
|
} catch (error) {
|
|
385
|
-
|
|
454
|
+
logger.error("error in after", { error });
|
|
386
455
|
throw error;
|
|
387
456
|
}
|
|
388
457
|
};
|
|
@@ -394,83 +463,14 @@ var plumbingMiddleware = () => {
|
|
|
394
463
|
|
|
395
464
|
// src/lambda/sharedUtils.ts
|
|
396
465
|
import { DynamoDBPersistenceLayer } from "@aws-lambda-powertools/idempotency/dynamodb";
|
|
397
|
-
|
|
398
|
-
// src/utils/assertUtils.ts
|
|
399
|
-
import assert8 from "node:assert/strict";
|
|
400
|
-
var assertEnvVar = (envVar) => {
|
|
401
|
-
assert8(process.env[envVar], `${envVar} is not set`);
|
|
402
|
-
return process.env[envVar];
|
|
403
|
-
};
|
|
404
|
-
var assertString = (value) => {
|
|
405
|
-
assert8(typeof value === "string", "Value is not a string");
|
|
406
|
-
assert8(value.length > 0, "Value is empty");
|
|
407
|
-
return value;
|
|
408
|
-
};
|
|
409
|
-
|
|
410
|
-
// src/lambda/sharedUtils.ts
|
|
411
466
|
import { Metrics as Metrics2 } from "@aws-lambda-powertools/metrics";
|
|
412
|
-
import { Logger as
|
|
467
|
+
import { Logger as Logger3 } from "@aws-lambda-powertools/logger";
|
|
413
468
|
import { Tracer as Tracer2 } from "@aws-lambda-powertools/tracer";
|
|
414
469
|
var getPersistenceStore = () => {
|
|
415
470
|
return new DynamoDBPersistenceLayer({
|
|
416
471
|
tableName: assertEnvVar("AC_IDEMPOTENCY_TABLE_NAME")
|
|
417
472
|
});
|
|
418
473
|
};
|
|
419
|
-
|
|
420
|
-
// src/utils/logger.ts
|
|
421
|
-
import { Logger as Logger3 } from "@aws-lambda-powertools/logger";
|
|
422
|
-
var rootLogger = new Logger3({
|
|
423
|
-
serviceName: process.env.POWERTOOLS_SERVICE_NAME ?? process.env.AWS_LAMBDA_FUNCTION_NAME ?? "ac-shared"
|
|
424
|
-
});
|
|
425
|
-
var getLoggerWithScope = (scope, logger = rootLogger) => {
|
|
426
|
-
const childLogger = logger.createChild();
|
|
427
|
-
childLogger.appendKeys({ scope });
|
|
428
|
-
return childLogger;
|
|
429
|
-
};
|
|
430
|
-
|
|
431
|
-
// src/utils/normalizeErrorMessage.ts
|
|
432
|
-
var normalizeErrorMessage = (error) => {
|
|
433
|
-
if (error instanceof Error) {
|
|
434
|
-
return error.message;
|
|
435
|
-
} else if (typeof error === "string") {
|
|
436
|
-
return error;
|
|
437
|
-
} else if (typeof error === "object" && error !== null) {
|
|
438
|
-
return JSON.stringify(error);
|
|
439
|
-
} else {
|
|
440
|
-
return String(error);
|
|
441
|
-
}
|
|
442
|
-
};
|
|
443
|
-
|
|
444
|
-
// src/utils/thumbsKey.ts
|
|
445
|
-
import { extname } from "node:path";
|
|
446
|
-
var JPEG_EXTENSION = "jpeg";
|
|
447
|
-
var JPG_EXTENSION = "jpg";
|
|
448
|
-
var HEIC_EXTENSION = "heic";
|
|
449
|
-
var DEFAULT_THUMBS_EXTENSION = JPG_EXTENSION;
|
|
450
|
-
var ALLOWED_EXTENSIONS = [
|
|
451
|
-
JPEG_EXTENSION,
|
|
452
|
-
JPG_EXTENSION,
|
|
453
|
-
HEIC_EXTENSION
|
|
454
|
-
];
|
|
455
|
-
var THUMBNAIL_RESOLUTIONS = [
|
|
456
|
-
[200, 200],
|
|
457
|
-
[1180, 820]
|
|
458
|
-
];
|
|
459
|
-
var getThumbsKey = ({
|
|
460
|
-
key,
|
|
461
|
-
prefix,
|
|
462
|
-
width,
|
|
463
|
-
height
|
|
464
|
-
}) => {
|
|
465
|
-
const ext = getKeyExtension(key);
|
|
466
|
-
const destinationKey = [JPEG_EXTENSION, JPG_EXTENSION].includes(ext) ? key : `${key.split(".").slice(0, -1).join(".")}.${DEFAULT_THUMBS_EXTENSION}`;
|
|
467
|
-
return `${prefix}/${width}x${height}/${destinationKey}`;
|
|
468
|
-
};
|
|
469
|
-
var getKeyExtension = (key) => extname(key).slice(1).toLowerCase();
|
|
470
|
-
var isAllowedExtension = (key) => {
|
|
471
|
-
const ext = getKeyExtension(key);
|
|
472
|
-
return ALLOWED_EXTENSIONS.includes(ext);
|
|
473
|
-
};
|
|
474
474
|
export {
|
|
475
475
|
ALLOWED_EXTENSIONS,
|
|
476
476
|
DEFAULT_THUMBS_EXTENSION,
|
|
@@ -479,7 +479,7 @@ export {
|
|
|
479
479
|
JPEG_EXTENSION,
|
|
480
480
|
JPG_EXTENSION,
|
|
481
481
|
LocationService,
|
|
482
|
-
|
|
482
|
+
Logger3 as Logger,
|
|
483
483
|
Metrics2 as Metrics,
|
|
484
484
|
S3Service,
|
|
485
485
|
SQSService,
|
|
@@ -491,6 +491,10 @@ export {
|
|
|
491
491
|
assertString,
|
|
492
492
|
getKeyExtension,
|
|
493
493
|
getLoggerWithScope,
|
|
494
|
+
getObjectWithAssumeRoleCommandOutputAttribute,
|
|
495
|
+
getObjectWithAttribute,
|
|
496
|
+
getObjectWithLoggerAttribute,
|
|
497
|
+
getObjectWithStackAttribute,
|
|
494
498
|
getPersistenceStore,
|
|
495
499
|
getThumbsKey,
|
|
496
500
|
isAllowedExtension,
|
package/lib/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/services/s3.ts", "../src/
|
|
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 {\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 { GenericLogger } from \"./types.js\";\n\nexport class LocationService {\n logger: GenericLogger;\n client: LocationClient;\n\n constructor({\n logger,\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 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 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\";\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 const destinationKey = [JPEG_EXTENSION, JPG_EXTENSION].includes(ext)\n ? key\n : `${key.split(\".\").slice(0, -1).join(\".\")}.${DEFAULT_THUMBS_EXTENSION}`;\n\n return `${prefix}/${width}x${height}/${destinationKey}`;\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": ";AAAA;AAAA,EACE;AAAA,EAEA;AAAA,EAEA;AAAA,EAGA;AAAA,OACK;AAEP,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAE5B,OAAO,YAAY;AAEZ,IAAM,
|
|
6
|
-
"names": ["assert", "assert", "assert", "assert", "assert", "assert", "assert", "
|
|
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/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 { PassThrough } from \"node:stream\";\nimport { GenericLogger } from \"../utils/types.js\";\nimport assert from \"node:assert/strict\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.js\";\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 ...getObjectWithLoggerAttribute(this.logger),\n ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\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 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\");\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 putObject(\n putObjectCommandInput: PutObjectCommandInput\n ): Promise<PutObjectCommandOutput> {\n return await this.client.send(new PutObjectCommand(putObjectCommandInput));\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 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 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 const destinationKey = [JPEG_EXTENSION, JPG_EXTENSION].includes(ext)\n ? key\n : `${key.split(\".\").slice(0, -1).join(\".\")}.${DEFAULT_THUMBS_EXTENSION}`;\n\n return `${prefix}/${width}x${height}/${destinationKey}`;\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", "import { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { GenericLogger } from \"./types.js\";\n\nexport const getObjectWithAttribute = (\n value: unknown,\n attributeName: string\n): object => {\n const resultingObject: Record<string, unknown> = {};\n\n if (value !== undefined && value !== null) {\n resultingObject[attributeName] = value;\n }\n\n return resultingObject;\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): object =>\n getObjectWithAttribute(error.stack, \"stack\");\n\nexport const getObjectWithLoggerAttribute = (logger?: GenericLogger) =>\n getObjectWithAttribute(logger, \"logger\");\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 \"../utils/types.js\";\nimport assert from \"node:assert/strict\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.js\";\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 ...getObjectWithLoggerAttribute(this.logger),\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 { GenericLogger } from \"../utils/types.js\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.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 ...getObjectWithLoggerAttribute(this.logger),\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 { GenericLogger } from \"../utils/types.js\";\nimport assert from \"node:assert/strict\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.js\";\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 ...getObjectWithLoggerAttribute(this.logger),\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 { getObjectWithLoggerAttribute } from \"../utils/index.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 ...getObjectWithLoggerAttribute(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 {\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 { GenericLogger } from \"../utils/types.js\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.js\";\n\nexport class LocationService {\n logger: GenericLogger;\n client: LocationClient;\n\n constructor({\n logger,\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 ...getObjectWithLoggerAttribute(this.logger),\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 rootlogger = 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 const logger = getLoggerWithScope(\"plumbingMiddleware.before\", rootlogger);\n logger.addContext(context);\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\", rootlogger);\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", "Logger", "assert", "assert", "Logger", "Metrics", "Logger", "Tracer"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
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 "
|
|
4
|
+
import { GenericLogger } from "../utils/types.js";
|
|
5
5
|
export declare class DynamoDBService {
|
|
6
6
|
logger: GenericLogger;
|
|
7
7
|
client: DynamoDBClient;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LocationClient, SearchPlaceIndexForPositionCommandInput, SearchPlaceIndexForPositionCommandOutput } from "@aws-sdk/client-location";
|
|
2
2
|
import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
|
|
3
|
-
import { GenericLogger } from "
|
|
3
|
+
import { GenericLogger } from "../utils/types.js";
|
|
4
4
|
export declare class LocationService {
|
|
5
5
|
logger: GenericLogger;
|
|
6
6
|
client: LocationClient;
|
package/lib/services/s3.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import { GetObjectCommandInput, HeadObjectCommandInput, ListObjectsV2CommandInput, PutObjectCommandInput, S3Client } from "@aws-sdk/client-s3";
|
|
3
|
+
import { GetObjectCommandInput, HeadObjectCommandInput, ListObjectsV2CommandInput, PutObjectCommandInput, PutObjectCommandOutput, S3Client } from "@aws-sdk/client-s3";
|
|
4
4
|
import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
|
|
5
5
|
import { PassThrough } from "node:stream";
|
|
6
|
-
import { GenericLogger } from "
|
|
6
|
+
import { GenericLogger } from "../utils/types.js";
|
|
7
7
|
export declare class S3Service {
|
|
8
8
|
logger: GenericLogger;
|
|
9
9
|
client: S3Client;
|
|
@@ -13,10 +13,14 @@ export declare class S3Service {
|
|
|
13
13
|
assumeRoleCommandOutput?: AssumeRoleCommandOutput;
|
|
14
14
|
region?: string;
|
|
15
15
|
});
|
|
16
|
-
createS3UploadStream(putObjectCommandInput: PutObjectCommandInput):
|
|
16
|
+
createS3UploadStream(putObjectCommandInput: PutObjectCommandInput): {
|
|
17
|
+
stream: PassThrough;
|
|
18
|
+
done: Promise<void>;
|
|
19
|
+
};
|
|
17
20
|
createS3DownloadStream(getObjectCommandInput: GetObjectCommandInput): Promise<import("@smithy/types").StreamingBlobPayloadOutputTypes>;
|
|
18
21
|
listObjectsV2(listObjectsV2CommandInput: ListObjectsV2CommandInput): Promise<import("@aws-sdk/client-s3").ListObjectsV2CommandOutput>;
|
|
19
22
|
getObject(getObjectCommandInput: GetObjectCommandInput): Promise<Buffer>;
|
|
23
|
+
putObject(putObjectCommandInput: PutObjectCommandInput): Promise<PutObjectCommandOutput>;
|
|
20
24
|
headObject(headObjectCommandInput: HeadObjectCommandInput): Promise<import("@aws-sdk/client-s3").HeadObjectCommandOutput>;
|
|
21
25
|
checkIfObjectExists(headObjectCommandInput: HeadObjectCommandInput): Promise<boolean>;
|
|
22
26
|
}
|
package/lib/services/sqs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
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 "
|
|
3
|
+
import { GenericLogger } from "../utils/types.js";
|
|
4
4
|
export declare class SQSService {
|
|
5
5
|
logger: GenericLogger;
|
|
6
6
|
client: SQSClient;
|
package/lib/services/ssm.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
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 "
|
|
3
|
+
import { GenericLogger } from "../utils/types.js";
|
|
4
4
|
export declare class SSMService {
|
|
5
5
|
logger: GenericLogger;
|
|
6
6
|
client: SSMClient;
|
package/lib/services/sts.d.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
|
|
2
|
+
import { GenericLogger } from "./types.js";
|
|
3
|
+
export declare const getObjectWithAttribute: (value: unknown, attributeName: string) => object;
|
|
4
|
+
export declare const getObjectWithAssumeRoleCommandOutputAttribute: (assumeRoleCommandOutput?: AssumeRoleCommandOutput) => {
|
|
5
|
+
credentials: {
|
|
6
|
+
accessKeyId: string;
|
|
7
|
+
secretAccessKey: string;
|
|
8
|
+
sessionToken: string;
|
|
9
|
+
};
|
|
10
|
+
} | {
|
|
11
|
+
credentials?: undefined;
|
|
12
|
+
};
|
|
13
|
+
export declare const getObjectWithStackAttribute: (error: any) => object;
|
|
14
|
+
export declare const getObjectWithLoggerAttribute: (logger?: GenericLogger) => object;
|
package/lib/utils/index.d.ts
CHANGED
package/package.json
CHANGED
|
File without changes
|