b23-lib 1.4.0 → 1.5.0

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/dist/index.js CHANGED
@@ -1,940 +1,2 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/index.ts
31
- var src_exports = {};
32
- __export(src_exports, {
33
- AuthUtility: () => Auth_default,
34
- DefaultAuthMiddlewareConfig: () => DefaultAuthMiddlewareConfig,
35
- DefaultAuthUtilityConfig: () => DefaultAuthUtilityConfig,
36
- DynamoDB: () => Dynamodb_default,
37
- Fetch: () => fetch_default,
38
- Logger: () => Logger_default,
39
- ResponseUtility: () => response_default,
40
- Schema: () => Schema_default,
41
- Utils: () => Utils_default
42
- });
43
- module.exports = __toCommonJS(src_exports);
44
-
45
- // src/Dynamodb/index.ts
46
- var import_client_dynamodb = require("@aws-sdk/client-dynamodb");
47
- var import_util_dynamodb = require("@aws-sdk/util-dynamodb");
48
- var DynamoDBUtility = class {
49
- client;
50
- returnItemCollectionMetrics;
51
- logCapacity;
52
- region;
53
- marshall = import_util_dynamodb.marshall;
54
- unmarshall = import_util_dynamodb.unmarshall;
55
- ReturnValue = import_client_dynamodb.ReturnValue;
56
- ReturnItemCollectionMetrics = import_client_dynamodb.ReturnItemCollectionMetrics;
57
- ReturnValuesOnConditionCheckFailure = import_client_dynamodb.ReturnValuesOnConditionCheckFailure;
58
- constructor({ region, returnItemCollectionMetrics = import_client_dynamodb.ReturnItemCollectionMetrics.NONE, logCapacity = false }) {
59
- this.region = region;
60
- this.returnItemCollectionMetrics = returnItemCollectionMetrics;
61
- this.logCapacity = logCapacity;
62
- this.client = new import_client_dynamodb.DynamoDBClient({ region: this.region });
63
- }
64
- log(message, capacity, size) {
65
- if (this.logCapacity) {
66
- console.log(message, "Capacity:", capacity, "Size:", size);
67
- }
68
- }
69
- async putItem(TableName, item, condition, attributeName, attributeValue, ReturnValues = import_client_dynamodb.ReturnValue.NONE, ReturnValuesOnFailure = import_client_dynamodb.ReturnValuesOnConditionCheckFailure.ALL_OLD) {
70
- const input = {
71
- TableName,
72
- Item: (0, import_util_dynamodb.marshall)(item, {
73
- removeUndefinedValues: true,
74
- convertClassInstanceToMap: true
75
- }),
76
- ConditionExpression: condition,
77
- ExpressionAttributeNames: attributeName,
78
- ExpressionAttributeValues: attributeValue,
79
- ReturnValues,
80
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.INDEXES,
81
- ReturnValuesOnConditionCheckFailure: ReturnValuesOnFailure,
82
- ReturnItemCollectionMetrics: this.returnItemCollectionMetrics
83
- };
84
- const command = new import_client_dynamodb.PutItemCommand(input);
85
- const result = await this.client.send(command);
86
- this.log("Put", result.ConsumedCapacity, result.ItemCollectionMetrics);
87
- return (0, import_util_dynamodb.unmarshall)(result.Attributes || {});
88
- }
89
- async transactWriteItems(transactItems) {
90
- const input = {
91
- TransactItems: transactItems.map((item) => {
92
- if (item.Put) {
93
- item.Put.Item = (0, import_util_dynamodb.marshall)(item.Put.Item, {
94
- removeUndefinedValues: true,
95
- convertClassInstanceToMap: true
96
- });
97
- }
98
- if (item.Update) {
99
- item.Update.Key = (0, import_util_dynamodb.marshall)(item.Update.Key);
100
- }
101
- if (item.Delete) {
102
- item.Delete.Key = (0, import_util_dynamodb.marshall)(item.Delete.Key);
103
- }
104
- return item;
105
- }),
106
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.INDEXES,
107
- ReturnItemCollectionMetrics: this.returnItemCollectionMetrics
108
- };
109
- const command = new import_client_dynamodb.TransactWriteItemsCommand(input);
110
- const result = await this.client.send(command);
111
- this.log("Transaction", result.ConsumedCapacity, result.ItemCollectionMetrics);
112
- }
113
- async getItem(TableName, key, consistent = false, projection, attributeName) {
114
- const input = {
115
- TableName,
116
- Key: (0, import_util_dynamodb.marshall)(key),
117
- ConsistentRead: consistent,
118
- ProjectionExpression: projection,
119
- ExpressionAttributeNames: attributeName,
120
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.TOTAL
121
- };
122
- const command = new import_client_dynamodb.GetItemCommand(input);
123
- const result = await this.client.send(command);
124
- this.log("Read", result.ConsumedCapacity);
125
- return (0, import_util_dynamodb.unmarshall)(result.Item || {});
126
- }
127
- async batchGetItem(TableName, keys, consistent = false, projection, attributeName) {
128
- const input = {
129
- RequestItems: {
130
- [TableName]: {
131
- Keys: keys.map((key) => (0, import_util_dynamodb.marshall)(key)),
132
- ConsistentRead: consistent,
133
- ProjectionExpression: projection,
134
- ExpressionAttributeNames: attributeName
135
- }
136
- },
137
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.TOTAL
138
- };
139
- const command = new import_client_dynamodb.BatchGetItemCommand(input);
140
- const result = await this.client.send(command);
141
- this.log("BatchRead", result.ConsumedCapacity);
142
- return result.Responses?.[TableName]?.map((item) => (0, import_util_dynamodb.unmarshall)(item)) || [];
143
- }
144
- async queryItems(TableName, keyCondition, consistent = false, projection, attributeName, attributeValue, lastEvaluatedKey) {
145
- const input = {
146
- TableName,
147
- KeyConditionExpression: keyCondition,
148
- ExpressionAttributeValues: attributeValue,
149
- ConsistentRead: consistent,
150
- ProjectionExpression: projection,
151
- ExpressionAttributeNames: attributeName,
152
- ExclusiveStartKey: lastEvaluatedKey,
153
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.TOTAL
154
- };
155
- const command = new import_client_dynamodb.QueryCommand(input);
156
- const result = await this.client.send(command);
157
- this.log("Query", result.ConsumedCapacity);
158
- return {
159
- items: result.Items?.map((item) => (0, import_util_dynamodb.unmarshall)(item)) || [],
160
- lastEvaluatedKey: result.LastEvaluatedKey
161
- };
162
- }
163
- async scanItems(TableName, filterExpression, consistent = false, projection, attributeName, attributeValue, lastEvaluatedKey) {
164
- const input = {
165
- TableName,
166
- FilterExpression: filterExpression,
167
- ExpressionAttributeValues: attributeValue,
168
- ConsistentRead: consistent,
169
- ProjectionExpression: projection,
170
- ExpressionAttributeNames: attributeName,
171
- ExclusiveStartKey: lastEvaluatedKey,
172
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.TOTAL
173
- };
174
- const command = new import_client_dynamodb.ScanCommand(input);
175
- const result = await this.client.send(command);
176
- this.log("Scan", result.ConsumedCapacity);
177
- return {
178
- items: result.Items?.map((item) => (0, import_util_dynamodb.unmarshall)(item)) || [],
179
- lastEvaluatedKey: result.LastEvaluatedKey
180
- };
181
- }
182
- async partiQL(statement, parameter = [], nextToken, consistent = false) {
183
- const input = {
184
- Statement: statement,
185
- Parameters: parameter,
186
- ConsistentRead: consistent,
187
- NextToken: nextToken,
188
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.INDEXES
189
- };
190
- const command = new import_client_dynamodb.ExecuteStatementCommand(input);
191
- const result = await this.client.send(command);
192
- this.log("PartiQL", result.ConsumedCapacity);
193
- return {
194
- Items: result.Items?.map((item) => (0, import_util_dynamodb.unmarshall)(item)) || [],
195
- nextToken: result.NextToken,
196
- lastEvaluatedKey: result.LastEvaluatedKey
197
- };
198
- }
199
- async updateItem(TableName, key, condition, update, attributeName, attributeValue, ReturnValues = import_client_dynamodb.ReturnValue.UPDATED_NEW, ReturnValuesOnFailure = import_client_dynamodb.ReturnValuesOnConditionCheckFailure.ALL_OLD) {
200
- const input = {
201
- TableName,
202
- Key: (0, import_util_dynamodb.marshall)(key),
203
- ConditionExpression: condition,
204
- UpdateExpression: update,
205
- ExpressionAttributeNames: attributeName,
206
- ExpressionAttributeValues: attributeValue,
207
- ReturnValues,
208
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.INDEXES,
209
- ReturnValuesOnConditionCheckFailure: ReturnValuesOnFailure,
210
- ReturnItemCollectionMetrics: this.returnItemCollectionMetrics
211
- };
212
- const command = new import_client_dynamodb.UpdateItemCommand(input);
213
- const result = await this.client.send(command);
214
- this.log("Update", result.ConsumedCapacity, result.ItemCollectionMetrics);
215
- return (0, import_util_dynamodb.unmarshall)(result.Attributes || {});
216
- }
217
- async deleteItem(TableName, key, condition, attributeName, attributeValue, ReturnValues = import_client_dynamodb.ReturnValue.ALL_OLD, ReturnValuesOnFailure = import_client_dynamodb.ReturnValuesOnConditionCheckFailure.ALL_OLD) {
218
- const input = {
219
- TableName,
220
- Key: (0, import_util_dynamodb.marshall)(key),
221
- ConditionExpression: condition,
222
- ExpressionAttributeNames: attributeName,
223
- ExpressionAttributeValues: attributeValue,
224
- ReturnValues,
225
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.INDEXES,
226
- ReturnValuesOnConditionCheckFailure: ReturnValuesOnFailure,
227
- ReturnItemCollectionMetrics: this.returnItemCollectionMetrics
228
- };
229
- const command = new import_client_dynamodb.DeleteItemCommand(input);
230
- const result = await this.client.send(command);
231
- this.log("Delete", result.ConsumedCapacity, result.ItemCollectionMetrics);
232
- return (0, import_util_dynamodb.unmarshall)(result.Attributes || {});
233
- }
234
- async getItemByIndex(TableName, index, keyCondition, consistent = false, projection, attributeName, attributeValue, lastEvaluatedKey) {
235
- const input = {
236
- TableName,
237
- IndexName: index,
238
- KeyConditionExpression: keyCondition,
239
- ExpressionAttributeValues: attributeValue,
240
- ExclusiveStartKey: lastEvaluatedKey,
241
- ConsistentRead: consistent,
242
- ProjectionExpression: projection,
243
- ExpressionAttributeNames: attributeName,
244
- ReturnConsumedCapacity: import_client_dynamodb.ReturnConsumedCapacity.INDEXES
245
- };
246
- const command = new import_client_dynamodb.QueryCommand(input);
247
- const result = await this.client.send(command);
248
- this.log("GetItemByIndex", result.ConsumedCapacity);
249
- return {
250
- Items: result.Items?.map((item) => (0, import_util_dynamodb.unmarshall)(item)) || [],
251
- lastEvaluatedKey: result.LastEvaluatedKey
252
- };
253
- }
254
- };
255
- var Dynamodb_default = DynamoDBUtility;
256
-
257
- // src/Schema/definition.json
258
- var definition_default = {
259
- $id: "standards",
260
- definitions: {
261
- lowercaseText: {
262
- type: "string",
263
- pattern: "^(?!\\s)(?!.*\\s$)[a-z]*$"
264
- },
265
- lowercaseText10: {
266
- type: "string",
267
- pattern: "^(?!\\s)(?!.*\\s$)[a-z]{0,10}$"
268
- },
269
- lowercaseText16: {
270
- type: "string",
271
- pattern: "^(?!\\s)(?!.*\\s$)[a-z]{0,16}$"
272
- },
273
- lowercaseText30: {
274
- type: "string",
275
- pattern: "^(?!\\s)(?!.*\\s$)[a-z]{0,30}$"
276
- },
277
- lowercaseText50: {
278
- type: "string",
279
- pattern: "^(?!\\s)(?!.*\\s$)[a-z]{0,50}$"
280
- },
281
- lowercaseText256: {
282
- type: "string",
283
- pattern: "^(?!\\s)(?!.*\\s$)[a-z]{0,256}$"
284
- },
285
- text: {
286
- type: "string",
287
- pattern: "^(?!\\s)(?!.*\\s$).*$"
288
- },
289
- text10: {
290
- type: "string",
291
- pattern: "^(?!\\s)(?!.*\\s$).{0,10}$"
292
- },
293
- text16: {
294
- type: "string",
295
- pattern: "^(?!\\s)(?!.*\\s$).{0,16}$"
296
- },
297
- text30: {
298
- type: "string",
299
- pattern: "^(?!\\s)(?!.*\\s$).{0,30}$"
300
- },
301
- text50: {
302
- type: "string",
303
- pattern: "^(?!\\s)(?!.*\\s$).{0,50}$"
304
- },
305
- text256: {
306
- type: "string",
307
- pattern: "^(?!\\s)(?!.*\\s$).{0,256}$"
308
- },
309
- requiredText: {
310
- type: "string",
311
- pattern: "^(?!\\s)(?!.*\\s$).+$"
312
- },
313
- requiredText10: {
314
- type: "string",
315
- pattern: "^(?!\\s)(?!.*\\s$).{1,10}$"
316
- },
317
- requiredText16: {
318
- type: "string",
319
- pattern: "^(?!\\s)(?!.*\\s$).{1,16}$"
320
- },
321
- requiredText30: {
322
- type: "string",
323
- pattern: "^(?!\\s)(?!.*\\s$).{1,30}$"
324
- },
325
- requiredText50: {
326
- type: "string",
327
- pattern: "^(?!\\s)(?!.*\\s$).{1,50}$"
328
- },
329
- requiredText256: {
330
- type: "string",
331
- pattern: "^(?!\\s)(?!.*\\s$).{1,256}$"
332
- },
333
- url: {
334
- type: "string",
335
- pattern: "^https://[^\\s/$.?#].[^\\s]*$",
336
- maxLength: 2048
337
- },
338
- uuid: {
339
- type: "string",
340
- minLength: 1,
341
- pattern: "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
342
- },
343
- productKey: {
344
- type: "string",
345
- pattern: "^(?!\\s)(?!.*\\s$)[A-Z0-9-]{4,16}$"
346
- },
347
- variantId: {
348
- type: "string",
349
- pattern: "^(?!\\s)(?!.*\\s$)[A-Z0-9-]{4,16}$"
350
- },
351
- firstName: { $ref: "#/definitions/requiredText30" },
352
- lastName: { $ref: "#/definitions/text30" },
353
- phone: {
354
- type: "string",
355
- pattern: "^[0-9]{10}$"
356
- },
357
- email: {
358
- type: "string",
359
- pattern: "^[^\\s]+@[^\\s]+\\.[^\\s]+$"
360
- },
361
- addressLine1: { $ref: "#/definitions/requiredText50" },
362
- addressLine2: { $ref: "#/definitions/text50" },
363
- city: { $ref: "#/definitions/requiredText30" },
364
- postalCode: { $ref: "#/definitions/requiredText16" },
365
- state: {
366
- type: "string",
367
- enum: ["AP", "AR", "AS", "BR", "CT", "GA", "GJ", "HR", "HP", "JH", "KA", "KL", "MP", "MH", "MN", "ML", "MZ", "NL", "OR", "PB", "RJ", "SK", "TN", "TG", "TR", "UP", "UT", "WB", "AN", "CH", "DH", "LD", "DL", "PY", "LA", "JK"]
368
- },
369
- country: {
370
- type: "string",
371
- enum: [
372
- "IN"
373
- ]
374
- },
375
- currency: {
376
- type: "string",
377
- enum: [
378
- "INR"
379
- ]
380
- },
381
- locale: {
382
- type: "string",
383
- enum: [
384
- "en-IN"
385
- ]
386
- },
387
- addressType: {
388
- type: "string",
389
- enum: ["shipping", "billing", "shipping&billing"]
390
- },
391
- address: {
392
- type: "object",
393
- properties: {
394
- firstName: { $ref: "standards#/definitions/firstName" },
395
- lastName: { $ref: "standards#/definitions/lastName" },
396
- phone: { $ref: "standards#/definitions/phone" },
397
- email: { $ref: "standards#/definitions/email" },
398
- addressLine1: { $ref: "standards#/definitions/addressLine1" },
399
- addressLine2: { $ref: "standards#/definitions/addressLine2" },
400
- city: { $ref: "standards#/definitions/city" },
401
- postalCode: { $ref: "standards#/definitions/postalCode" },
402
- state: { $ref: "standards#/definitions/state" },
403
- country: { $ref: "standards#/definitions/country" }
404
- },
405
- required: ["firstName", "lastName", "phone", "email", "addressLine1", "postalCode", "state", "country"]
406
- }
407
- }
408
- };
409
-
410
- // src/Schema/index.ts
411
- var Schema = {
412
- getStandardSchemaDefinition() {
413
- return definition_default;
414
- }
415
- };
416
- var Schema_default = Schema;
417
-
418
- // src/Auth/index.ts
419
- var import_jose = require("jose");
420
- var import_util2 = __toESM(require("util"));
421
-
422
- // src/enums/ErrorTypes.ts
423
- var ErrorTypes_default = Object.freeze({
424
- INVALID_UUID: "Invalid UUID",
425
- INVALID_TOKEN: "Invalid Token",
426
- TOKEN_EXPIRED: "Token Expired",
427
- INVALID_AUTH_TYPE: "Invalid Authorization Type",
428
- USER_PRIVATE_KEY_NOT_FOUND: "User Private Key Not Found",
429
- USER_PUBLIC_KEY_NOT_FOUND: "User Public Key Not Found",
430
- ANONYMOUS_PRIVATE_KEY_NOT_FOUND: "Anonymous Private Key Not Found",
431
- ANONYMOUS_PUBLIC_KEY_NOT_FOUND: "Anonymous Public Key Not Found",
432
- SYSTEM_PRIVATE_KEY_NOT_FOUND: "System Private Key Not Found",
433
- SYSTEM_PUBLIC_KEY_NOT_FOUND: "System Public Key Not Found",
434
- ADMIN_PRIVATE_KEY_NOT_FOUND: "Admin Private Key Not Found",
435
- ADMIN_PUBLIC_KEY_NOT_FOUND: "Admin Public Key Not Found",
436
- SECRET_TOKEN_NOT_FOUND: "Secret Token Not Found",
437
- ANONYMOUS_SESSION_NOT_ALLOWED: "Anonymous Session Not Allowed",
438
- USER_SESSION_NOT_ALLOWED: "User Session Not Allowed",
439
- SYSTEM_SESSION_NOT_ALLOWED: "System Session Not Allowed",
440
- CDN_SESSION_NOT_ALLOWED: "CDN Session Not Allowed",
441
- INTERNAL_SERVER_ERROR: "Internal Server Error"
442
- });
443
-
444
- // src/Logger/index.ts
445
- var import_util = __toESM(require("util"));
446
- var Logger = {
447
- logException: (functionName, error) => {
448
- console.error(`Exception Occurred in Function: ${functionName}, Error: ${import_util.default.inspect(error)}`);
449
- },
450
- logError: (functionName, errorMessage) => {
451
- console.error(`Error Occurred in Function: ${functionName}, Error: ${import_util.default.inspect(errorMessage)}`);
452
- },
453
- logWarning: (functionName, message) => {
454
- console.warn(`Warning in Function: ${functionName} - ${import_util.default.inspect(message)}`);
455
- },
456
- logMessage: (functionName, message) => {
457
- console.log(`Message in Function: ${functionName} - ${import_util.default.inspect(message)}`);
458
- },
459
- logInvalidPayload: (functionName, errorMessage) => {
460
- console.error(`Invalid Payload received for Function: ${functionName}, Error: ${errorMessage}`);
461
- }
462
- };
463
- var Logger_default = Logger;
464
-
465
- // node_modules/uuid/dist/esm-node/rng.js
466
- var import_crypto = __toESM(require("crypto"));
467
- var rnds8Pool = new Uint8Array(256);
468
- var poolPtr = rnds8Pool.length;
469
- function rng() {
470
- if (poolPtr > rnds8Pool.length - 16) {
471
- import_crypto.default.randomFillSync(rnds8Pool);
472
- poolPtr = 0;
473
- }
474
- return rnds8Pool.slice(poolPtr, poolPtr += 16);
475
- }
476
-
477
- // node_modules/uuid/dist/esm-node/regex.js
478
- var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
479
-
480
- // node_modules/uuid/dist/esm-node/validate.js
481
- function validate(uuid) {
482
- return typeof uuid === "string" && regex_default.test(uuid);
483
- }
484
- var validate_default = validate;
485
-
486
- // node_modules/uuid/dist/esm-node/stringify.js
487
- var byteToHex = [];
488
- for (let i = 0; i < 256; ++i) {
489
- byteToHex.push((i + 256).toString(16).slice(1));
490
- }
491
- function unsafeStringify(arr, offset = 0) {
492
- return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
493
- }
494
-
495
- // node_modules/uuid/dist/esm-node/parse.js
496
- function parse(uuid) {
497
- if (!validate_default(uuid)) {
498
- throw TypeError("Invalid UUID");
499
- }
500
- let v;
501
- const arr = new Uint8Array(16);
502
- arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
503
- arr[1] = v >>> 16 & 255;
504
- arr[2] = v >>> 8 & 255;
505
- arr[3] = v & 255;
506
- arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
507
- arr[5] = v & 255;
508
- arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
509
- arr[7] = v & 255;
510
- arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
511
- arr[9] = v & 255;
512
- arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255;
513
- arr[11] = v / 4294967296 & 255;
514
- arr[12] = v >>> 24 & 255;
515
- arr[13] = v >>> 16 & 255;
516
- arr[14] = v >>> 8 & 255;
517
- arr[15] = v & 255;
518
- return arr;
519
- }
520
- var parse_default = parse;
521
-
522
- // node_modules/uuid/dist/esm-node/v35.js
523
- function stringToBytes(str) {
524
- str = unescape(encodeURIComponent(str));
525
- const bytes = [];
526
- for (let i = 0; i < str.length; ++i) {
527
- bytes.push(str.charCodeAt(i));
528
- }
529
- return bytes;
530
- }
531
- var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
532
- var URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
533
- function v35(name, version, hashfunc) {
534
- function generateUUID(value, namespace, buf, offset) {
535
- var _namespace;
536
- if (typeof value === "string") {
537
- value = stringToBytes(value);
538
- }
539
- if (typeof namespace === "string") {
540
- namespace = parse_default(namespace);
541
- }
542
- if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {
543
- throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
544
- }
545
- let bytes = new Uint8Array(16 + value.length);
546
- bytes.set(namespace);
547
- bytes.set(value, namespace.length);
548
- bytes = hashfunc(bytes);
549
- bytes[6] = bytes[6] & 15 | version;
550
- bytes[8] = bytes[8] & 63 | 128;
551
- if (buf) {
552
- offset = offset || 0;
553
- for (let i = 0; i < 16; ++i) {
554
- buf[offset + i] = bytes[i];
555
- }
556
- return buf;
557
- }
558
- return unsafeStringify(bytes);
559
- }
560
- try {
561
- generateUUID.name = name;
562
- } catch (err) {
563
- }
564
- generateUUID.DNS = DNS;
565
- generateUUID.URL = URL;
566
- return generateUUID;
567
- }
568
-
569
- // node_modules/uuid/dist/esm-node/native.js
570
- var import_crypto2 = __toESM(require("crypto"));
571
- var native_default = {
572
- randomUUID: import_crypto2.default.randomUUID
573
- };
574
-
575
- // node_modules/uuid/dist/esm-node/v4.js
576
- function v4(options, buf, offset) {
577
- if (native_default.randomUUID && !buf && !options) {
578
- return native_default.randomUUID();
579
- }
580
- options = options || {};
581
- const rnds = options.random || (options.rng || rng)();
582
- rnds[6] = rnds[6] & 15 | 64;
583
- rnds[8] = rnds[8] & 63 | 128;
584
- if (buf) {
585
- offset = offset || 0;
586
- for (let i = 0; i < 16; ++i) {
587
- buf[offset + i] = rnds[i];
588
- }
589
- return buf;
590
- }
591
- return unsafeStringify(rnds);
592
- }
593
- var v4_default = v4;
594
-
595
- // node_modules/uuid/dist/esm-node/sha1.js
596
- var import_crypto3 = __toESM(require("crypto"));
597
- function sha1(bytes) {
598
- if (Array.isArray(bytes)) {
599
- bytes = Buffer.from(bytes);
600
- } else if (typeof bytes === "string") {
601
- bytes = Buffer.from(bytes, "utf8");
602
- }
603
- return import_crypto3.default.createHash("sha1").update(bytes).digest();
604
- }
605
- var sha1_default = sha1;
606
-
607
- // node_modules/uuid/dist/esm-node/v5.js
608
- var v5 = v35("v5", 80, sha1_default);
609
- var v5_default = v5;
610
-
611
- // src/Utils/index.ts
612
- var Utils = {
613
- isUUID: (value) => {
614
- const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
615
- return uuidRegex.test(value);
616
- },
617
- generateUUID: (value, namespace) => {
618
- if (namespace && value) {
619
- return v5_default(value, namespace);
620
- }
621
- return v4_default();
622
- },
623
- generateSearchId: (key, variantId) => {
624
- return `${key}#${variantId}`;
625
- },
626
- getKeyfromSearchId: (searchId) => {
627
- const [key, variantId] = searchId.split("#");
628
- return {
629
- key,
630
- variantId
631
- };
632
- }
633
- };
634
- var Utils_default = Utils;
635
-
636
- // src/Utils/response.ts
637
- var ResponseUtility = {
638
- handleException: (functionName, error, res) => {
639
- if (error.knownError) {
640
- error.logError && Logger_default.logError(functionName, error);
641
- res.status(error.status).json({
642
- status: error.status,
643
- error: error.error
644
- });
645
- } else if (error.status && error.error) {
646
- Logger_default.logException(functionName, error);
647
- res.status(error.status).json({
648
- ...error.error,
649
- status: error.status
650
- });
651
- } else {
652
- Logger_default.logException(functionName, error);
653
- res.status(500).json({
654
- status: 500,
655
- error: ErrorTypes_default.INTERNAL_SERVER_ERROR
656
- });
657
- }
658
- },
659
- generateResponse: (status, data, error) => {
660
- return {
661
- status,
662
- data,
663
- error
664
- };
665
- },
666
- generateError: (status, error, knownError = true, logError = false) => {
667
- return {
668
- status,
669
- error,
670
- knownError,
671
- logError
672
- };
673
- }
674
- };
675
- var response_default = ResponseUtility;
676
-
677
- // src/Auth/index.ts
678
- var import_assert = __toESM(require("assert"));
679
- var DefaultAuthUtilityConfig = {
680
- maxTokenAge: "30 days",
681
- userPrivateKeys: "[]",
682
- userPublicKeys: "[]",
683
- anonymousPrivateKeys: "[]",
684
- anonymousPublicKeys: "[]",
685
- systemPrivateKeys: "[]",
686
- systemPublicKeys: "[]",
687
- adminPrivateKeys: "[]",
688
- adminPublicKeys: "[]"
689
- };
690
- var DefaultAuthMiddlewareConfig = {
691
- allowAnonymous: false,
692
- allowSystem: true,
693
- allowUser: true,
694
- allowCDN: false
695
- };
696
- var AuthUtility = class {
697
- maxTokenAge;
698
- userPrivateKeys;
699
- userPublicKeys;
700
- anonymousPrivateKeys;
701
- anonymousPublicKeys;
702
- systemPrivateKeys;
703
- systemPublicKeys;
704
- adminPrivateKeys;
705
- adminPublicKeys;
706
- /**
707
- * Initializes the AuthUtility class with a configuration.
708
- * @param config The configuration for the utility (optional).
709
- */
710
- constructor(config = DefaultAuthUtilityConfig) {
711
- const {
712
- maxTokenAge,
713
- userPrivateKeys,
714
- userPublicKeys,
715
- anonymousPrivateKeys,
716
- anonymousPublicKeys,
717
- systemPrivateKeys,
718
- systemPublicKeys,
719
- adminPrivateKeys,
720
- adminPublicKeys
721
- } = { ...DefaultAuthUtilityConfig, ...config };
722
- this.maxTokenAge = maxTokenAge;
723
- this.userPrivateKeys = JSON.parse(userPrivateKeys);
724
- this.userPublicKeys = JSON.parse(userPublicKeys);
725
- this.anonymousPrivateKeys = JSON.parse(anonymousPrivateKeys);
726
- this.anonymousPublicKeys = JSON.parse(anonymousPublicKeys);
727
- this.systemPrivateKeys = JSON.parse(systemPrivateKeys);
728
- this.systemPublicKeys = JSON.parse(systemPublicKeys);
729
- this.adminPrivateKeys = JSON.parse(adminPrivateKeys);
730
- this.adminPublicKeys = JSON.parse(adminPublicKeys);
731
- this.logWarnings();
732
- }
733
- /**
734
- * Logs warnings if the number of keys exceeds recommended limits.
735
- */
736
- logWarnings() {
737
- const warn = (type, keys, limit) => keys.length > limit && Logger_default.logWarning(
738
- "AuthUtility",
739
- `More than ${limit} ${type} keys provided. This is not recommended.`
740
- );
741
- warn("user private", this.userPrivateKeys, 3);
742
- warn("user public", this.userPublicKeys, 3);
743
- warn("anonymous private", this.anonymousPrivateKeys, 1);
744
- warn("anonymous public", this.anonymousPublicKeys, 3);
745
- warn("system private", this.systemPrivateKeys, 1);
746
- warn("system public", this.systemPublicKeys, 3);
747
- warn("admin private", this.adminPrivateKeys, 1);
748
- warn("admin public", this.adminPublicKeys, 3);
749
- }
750
- async createSignedJWT(payload, privateKeyString, expiration) {
751
- const privateKey = await (0, import_jose.importPKCS8)(privateKeyString, "RS256");
752
- const token = await new import_jose.SignJWT(payload).setProtectedHeader({ alg: "RS256" }).setExpirationTime(expiration).setIssuedAt().sign(privateKey);
753
- return token;
754
- }
755
- async verifySignedJWT(token, publicKeyString, expiration) {
756
- for (let i = publicKeyString.length - 1; i > 0; i--) {
757
- try {
758
- const publicKey2 = await (0, import_jose.importSPKI)(publicKeyString[i], "RS256");
759
- const jwt2 = await (0, import_jose.jwtVerify)(token, publicKey2, { clockTolerance: 30, maxTokenAge: expiration });
760
- return jwt2.payload;
761
- } catch (error) {
762
- continue;
763
- }
764
- }
765
- const publicKey = await (0, import_jose.importSPKI)(publicKeyString[0], "RS256");
766
- const jwt = await (0, import_jose.jwtVerify)(token, publicKey, { clockTolerance: 30, maxTokenAge: expiration });
767
- return jwt.payload;
768
- }
769
- async createAnonymousToken(id, additionalData) {
770
- (0, import_assert.default)(this.anonymousPrivateKeys.length, ErrorTypes_default.ANONYMOUS_PRIVATE_KEY_NOT_FOUND);
771
- (0, import_assert.default)(Utils_default.isUUID(id), ErrorTypes_default.INVALID_UUID);
772
- const payload = {
773
- id,
774
- type: "Anon",
775
- ...additionalData
776
- };
777
- return await this.createSignedJWT(payload, this.anonymousPrivateKeys[this.anonymousPrivateKeys.length - 1], this.maxTokenAge);
778
- }
779
- async verifyAnonymousToken(token) {
780
- (0, import_assert.default)(this.anonymousPublicKeys.length, ErrorTypes_default.ANONYMOUS_PUBLIC_KEY_NOT_FOUND);
781
- const payload = await this.verifySignedJWT(token, this.anonymousPublicKeys, this.maxTokenAge);
782
- (0, import_assert.default)(payload.type === "Anon", ErrorTypes_default.INVALID_AUTH_TYPE);
783
- return payload;
784
- }
785
- async createUserToken(id, additionalData) {
786
- (0, import_assert.default)(this.userPrivateKeys.length, ErrorTypes_default.USER_PRIVATE_KEY_NOT_FOUND);
787
- (0, import_assert.default)(Utils_default.isUUID(id), ErrorTypes_default.INVALID_UUID);
788
- const payload = {
789
- id,
790
- type: "User",
791
- ...additionalData
792
- };
793
- return await this.createSignedJWT(payload, this.userPrivateKeys[this.userPrivateKeys.length - 1], this.maxTokenAge);
794
- }
795
- async verifyUserToken(token) {
796
- (0, import_assert.default)(this.userPublicKeys.length, ErrorTypes_default.USER_PUBLIC_KEY_NOT_FOUND);
797
- const payload = await this.verifySignedJWT(token, this.userPublicKeys, this.maxTokenAge);
798
- (0, import_assert.default)(payload.type === "User", ErrorTypes_default.INVALID_AUTH_TYPE);
799
- return payload;
800
- }
801
- async createSystemToken(id, additionalData) {
802
- (0, import_assert.default)(this.systemPrivateKeys.length, ErrorTypes_default.SYSTEM_PRIVATE_KEY_NOT_FOUND);
803
- const payload = {
804
- id,
805
- type: "System",
806
- ...additionalData
807
- };
808
- return await this.createSignedJWT(payload, this.systemPrivateKeys[this.systemPrivateKeys.length - 1], "5 min");
809
- }
810
- async verifySystemToken(token) {
811
- (0, import_assert.default)(this.systemPublicKeys.length, ErrorTypes_default.USER_PUBLIC_KEY_NOT_FOUND);
812
- const payload = await this.verifySignedJWT(token, this.systemPublicKeys, "5 min");
813
- (0, import_assert.default)(payload.type === "System", ErrorTypes_default.INVALID_AUTH_TYPE);
814
- return payload;
815
- }
816
- async createAdminToken(id, additionalData) {
817
- (0, import_assert.default)(this.adminPrivateKeys.length, ErrorTypes_default.ADMIN_PRIVATE_KEY_NOT_FOUND);
818
- (0, import_assert.default)(Utils_default.isUUID(id), ErrorTypes_default.INVALID_UUID);
819
- const payload = {
820
- id,
821
- type: "Admin",
822
- ...additionalData
823
- };
824
- return await this.createSignedJWT(payload, this.adminPrivateKeys[this.adminPrivateKeys.length - 1], this.maxTokenAge);
825
- }
826
- async verifyAdminToken(token) {
827
- (0, import_assert.default)(this.adminPublicKeys.length, ErrorTypes_default.ADMIN_PUBLIC_KEY_NOT_FOUND);
828
- const payload = await this.verifySignedJWT(token, this.adminPublicKeys, this.maxTokenAge);
829
- (0, import_assert.default)(payload.type === "Admin", ErrorTypes_default.INVALID_AUTH_TYPE);
830
- return payload;
831
- }
832
- /**
833
- * Middleware for handling JWT authentication.
834
- * @param config Configuration for middleware behavior.
835
- */
836
- AuthMiddleware(config = DefaultAuthMiddlewareConfig) {
837
- const { allowAnonymous, allowSystem, allowUser, allowCDN } = { ...DefaultAuthMiddlewareConfig, ...config };
838
- return async (req, res, next) => {
839
- try {
840
- const [authType, token] = req.get("Authorization")?.split(" ") || [];
841
- if (!token) throw new Error(ErrorTypes_default.INVALID_TOKEN);
842
- let payload;
843
- switch (authType) {
844
- case "Anon":
845
- if (!allowAnonymous) throw response_default.generateError(403, ErrorTypes_default.ANONYMOUS_SESSION_NOT_ALLOWED);
846
- payload = await this.verifyAnonymousToken(token);
847
- break;
848
- case "User":
849
- if (!allowUser) throw response_default.generateError(403, ErrorTypes_default.USER_SESSION_NOT_ALLOWED);
850
- payload = await this.verifyUserToken(token);
851
- break;
852
- case "System":
853
- if (!allowSystem) throw response_default.generateError(403, ErrorTypes_default.SYSTEM_SESSION_NOT_ALLOWED);
854
- payload = await this.verifySystemToken(token);
855
- Logger_default.logMessage("AuthMiddleware", `System Name - ${payload.id}`);
856
- break;
857
- case "Admin":
858
- payload = await this.verifyAdminToken(token);
859
- Logger_default.logMessage("AuthMiddleware", `Admin Id - ${payload.id}`);
860
- break;
861
- case "CDN":
862
- if (!allowCDN) throw response_default.generateError(403, ErrorTypes_default.CDN_SESSION_NOT_ALLOWED);
863
- (0, import_assert.default)(["E3CQMOP5FX6KD1", "E3TNCKKZ3FOX9W"].includes(token), ErrorTypes_default.INVALID_TOKEN);
864
- Logger_default.logMessage("AuthMiddleware", `CDN DistributionId - ${token}`);
865
- break;
866
- default:
867
- throw response_default.generateError(403, ErrorTypes_default.INVALID_AUTH_TYPE);
868
- }
869
- res.locals.auth = { authType, token, ...payload };
870
- next();
871
- } catch (error) {
872
- Logger_default.logError("AuthMiddleware", import_util2.default.inspect(error));
873
- response_default.handleException(
874
- "AuthMiddleware",
875
- response_default.generateError(401, error.error || ErrorTypes_default.TOKEN_EXPIRED, true),
876
- res
877
- );
878
- }
879
- };
880
- }
881
- };
882
- var Auth_default = AuthUtility;
883
-
884
- // src/Utils/fetch.ts
885
- var Fetch = async (baseURL, endpoint, method = "GET", headers = {}, payload) => {
886
- const options = {
887
- method,
888
- headers: {
889
- "Content-Type": "application/json",
890
- ...headers
891
- }
892
- };
893
- if (method !== "GET" && payload) {
894
- options.body = JSON.stringify(payload);
895
- }
896
- try {
897
- const response = await fetch(`${baseURL}/${endpoint}`, options);
898
- if (!response.ok) {
899
- const errorBody = await response.json().catch(() => response.text());
900
- throw {
901
- status: response.status,
902
- statusText: response.statusText,
903
- error: errorBody ? errorBody : {
904
- status: response.status,
905
- error: response.statusText
906
- }
907
- };
908
- }
909
- const body = await response.json();
910
- Logger_default.logMessage("Fetch", `API call successful: URL-${baseURL}/${endpoint}, Status- ${response.status}`);
911
- return {
912
- status: response.status,
913
- statusText: response.statusText,
914
- data: body.data
915
- };
916
- } catch (err) {
917
- Logger_default.logError("Fetch", `API call failed: URL-${baseURL}/${endpoint}, Status- ${err.status || 500}, Error- ${JSON.stringify(err.error, null, 2)}`);
918
- throw {
919
- status: err.status || 500,
920
- statusText: err.statusText || "Internal Server Error",
921
- error: err.error || {
922
- status: err.status || 500,
923
- error: err.statusText || "Something went wrong"
924
- }
925
- };
926
- }
927
- };
928
- var fetch_default = Fetch;
929
- // Annotate the CommonJS export names for ESM import in node:
930
- 0 && (module.exports = {
931
- AuthUtility,
932
- DefaultAuthMiddlewareConfig,
933
- DefaultAuthUtilityConfig,
934
- DynamoDB,
935
- Fetch,
936
- Logger,
937
- ResponseUtility,
938
- Schema,
939
- Utils
940
- });
1
+ "use strict";var Q=Object.create;var x=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var tt=Object.getOwnPropertyNames;var et=Object.getPrototypeOf,nt=Object.prototype.hasOwnProperty;var rt=(n,t)=>{for(var e in t)x(n,e,{get:t[e],enumerable:!0})},L=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of tt(t))!nt.call(n,s)&&s!==e&&x(n,s,{get:()=>t[s],enumerable:!(r=Z(t,s))||r.enumerable});return n};var C=(n,t,e)=>(e=n!=null?Q(et(n)):{},L(t||!n||!n.__esModule?x(e,"default",{value:n,enumerable:!0}):e,n)),st=n=>L(x({},"__esModule",{value:!0}),n);var It={};rt(It,{AuthUtility:()=>q,DefaultAuthMiddlewareConfig:()=>O,DefaultAuthUtilityConfig:()=>_,DynamoDB:()=>M,Fetch:()=>X,Logger:()=>I,ResponseUtility:()=>T,Schema:()=>V,Utils:()=>N});module.exports=st(It);var a=require("@aws-sdk/client-dynamodb"),y=require("@aws-sdk/util-dynamodb"),U=class{client;returnItemCollectionMetrics;logCapacity;region;marshall=y.marshall;unmarshall=y.unmarshall;ReturnValue=a.ReturnValue;ReturnItemCollectionMetrics=a.ReturnItemCollectionMetrics;ReturnValuesOnConditionCheckFailure=a.ReturnValuesOnConditionCheckFailure;constructor({region:t,returnItemCollectionMetrics:e=a.ReturnItemCollectionMetrics.NONE,logCapacity:r=!1}){this.region=t,this.returnItemCollectionMetrics=e,this.logCapacity=r,this.client=new a.DynamoDBClient({region:this.region})}log(t,e,r){this.logCapacity&&console.log(t,"Capacity:",e,"Size:",r)}async putItem(t,e,r,s,o,i=a.ReturnValue.NONE,l=a.ReturnValuesOnConditionCheckFailure.ALL_OLD){let m={TableName:t,Item:(0,y.marshall)(e,{removeUndefinedValues:!0,convertClassInstanceToMap:!0}),ConditionExpression:r,ExpressionAttributeNames:s,ExpressionAttributeValues:o,ReturnValues:i,ReturnConsumedCapacity:a.ReturnConsumedCapacity.INDEXES,ReturnValuesOnConditionCheckFailure:l,ReturnItemCollectionMetrics:this.returnItemCollectionMetrics},c=new a.PutItemCommand(m),u=await this.client.send(c);return this.log("Put",u.ConsumedCapacity,u.ItemCollectionMetrics),(0,y.unmarshall)(u.Attributes||{})}async transactWriteItems(t){let e={TransactItems:t.map(o=>(o.Put&&(o.Put.Item=(0,y.marshall)(o.Put.Item,{removeUndefinedValues:!0,convertClassInstanceToMap:!0})),o.Update&&(o.Update.Key=(0,y.marshall)(o.Update.Key)),o.Delete&&(o.Delete.Key=(0,y.marshall)(o.Delete.Key)),o)),ReturnConsumedCapacity:a.ReturnConsumedCapacity.INDEXES,ReturnItemCollectionMetrics:this.returnItemCollectionMetrics},r=new a.TransactWriteItemsCommand(e),s=await this.client.send(r);this.log("Transaction",s.ConsumedCapacity,s.ItemCollectionMetrics)}async getItem(t,e,r=!1,s,o){let i={TableName:t,Key:(0,y.marshall)(e),ConsistentRead:r,ProjectionExpression:s,ExpressionAttributeNames:o,ReturnConsumedCapacity:a.ReturnConsumedCapacity.TOTAL},l=new a.GetItemCommand(i),m=await this.client.send(l);return this.log("Read",m.ConsumedCapacity),(0,y.unmarshall)(m.Item||{})}async batchGetItem(t,e,r=!1,s,o){let i={RequestItems:{[t]:{Keys:e.map(c=>(0,y.marshall)(c)),ConsistentRead:r,ProjectionExpression:s,ExpressionAttributeNames:o}},ReturnConsumedCapacity:a.ReturnConsumedCapacity.TOTAL},l=new a.BatchGetItemCommand(i),m=await this.client.send(l);return this.log("BatchRead",m.ConsumedCapacity),m.Responses?.[t]?.map(c=>(0,y.unmarshall)(c))||[]}async queryItems(t,e,r=!1,s,o,i,l){let m={TableName:t,KeyConditionExpression:e,ExpressionAttributeValues:i,ConsistentRead:r,ProjectionExpression:s,ExpressionAttributeNames:o,ExclusiveStartKey:l,ReturnConsumedCapacity:a.ReturnConsumedCapacity.TOTAL},c=new a.QueryCommand(m),u=await this.client.send(c);return this.log("Query",u.ConsumedCapacity),{items:u.Items?.map(p=>(0,y.unmarshall)(p))||[],lastEvaluatedKey:u.LastEvaluatedKey}}async scanItems(t,e,r=!1,s,o,i,l){let m={TableName:t,FilterExpression:e,ExpressionAttributeValues:i,ConsistentRead:r,ProjectionExpression:s,ExpressionAttributeNames:o,ExclusiveStartKey:l,ReturnConsumedCapacity:a.ReturnConsumedCapacity.TOTAL},c=new a.ScanCommand(m),u=await this.client.send(c);return this.log("Scan",u.ConsumedCapacity),{items:u.Items?.map(p=>(0,y.unmarshall)(p))||[],lastEvaluatedKey:u.LastEvaluatedKey}}async partiQL(t,e=[],r,s=!1){let o={Statement:t,Parameters:e,ConsistentRead:s,NextToken:r,ReturnConsumedCapacity:a.ReturnConsumedCapacity.INDEXES},i=new a.ExecuteStatementCommand(o),l=await this.client.send(i);return this.log("PartiQL",l.ConsumedCapacity),{Items:l.Items?.map(m=>(0,y.unmarshall)(m))||[],nextToken:l.NextToken,lastEvaluatedKey:l.LastEvaluatedKey}}async updateItem(t,e,r,s,o,i,l=a.ReturnValue.UPDATED_NEW,m=a.ReturnValuesOnConditionCheckFailure.ALL_OLD){let c={TableName:t,Key:(0,y.marshall)(e),ConditionExpression:r,UpdateExpression:s,ExpressionAttributeNames:o,ExpressionAttributeValues:i,ReturnValues:l,ReturnConsumedCapacity:a.ReturnConsumedCapacity.INDEXES,ReturnValuesOnConditionCheckFailure:m,ReturnItemCollectionMetrics:this.returnItemCollectionMetrics},u=new a.UpdateItemCommand(c),p=await this.client.send(u);return this.log("Update",p.ConsumedCapacity,p.ItemCollectionMetrics),(0,y.unmarshall)(p.Attributes||{})}async deleteItem(t,e,r,s,o,i=a.ReturnValue.ALL_OLD,l=a.ReturnValuesOnConditionCheckFailure.ALL_OLD){let m={TableName:t,Key:(0,y.marshall)(e),ConditionExpression:r,ExpressionAttributeNames:s,ExpressionAttributeValues:o,ReturnValues:i,ReturnConsumedCapacity:a.ReturnConsumedCapacity.INDEXES,ReturnValuesOnConditionCheckFailure:l,ReturnItemCollectionMetrics:this.returnItemCollectionMetrics},c=new a.DeleteItemCommand(m),u=await this.client.send(c);return this.log("Delete",u.ConsumedCapacity,u.ItemCollectionMetrics),(0,y.unmarshall)(u.Attributes||{})}async getItemByIndex(t,e,r,s=!1,o,i,l,m){let c={TableName:t,IndexName:e,KeyConditionExpression:r,ExpressionAttributeValues:l,ExclusiveStartKey:m,ConsistentRead:s,ProjectionExpression:o,ExpressionAttributeNames:i,ReturnConsumedCapacity:a.ReturnConsumedCapacity.INDEXES},u=new a.QueryCommand(c),p=await this.client.send(u);return this.log("GetItemByIndex",p.ConsumedCapacity),{Items:p.Items?.map(z=>(0,y.unmarshall)(z))||[],lastEvaluatedKey:p.LastEvaluatedKey}}},M=U;var k={$id:"standards",definitions:{lowercaseText:{type:"string",pattern:"^(?!\\s)(?!.*\\s$)[a-z]*$"},lowercaseText10:{type:"string",pattern:"^(?!\\s)(?!.*\\s$)[a-z]{0,10}$"},lowercaseText16:{type:"string",pattern:"^(?!\\s)(?!.*\\s$)[a-z]{0,16}$"},lowercaseText30:{type:"string",pattern:"^(?!\\s)(?!.*\\s$)[a-z]{0,30}$"},lowercaseText50:{type:"string",pattern:"^(?!\\s)(?!.*\\s$)[a-z]{0,50}$"},lowercaseText256:{type:"string",pattern:"^(?!\\s)(?!.*\\s$)[a-z]{0,256}$"},text:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).*$"},text10:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{0,10}$"},text16:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{0,16}$"},text30:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{0,30}$"},text50:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{0,50}$"},text256:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{0,256}$"},requiredText:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).+$"},requiredText10:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{1,10}$"},requiredText16:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{1,16}$"},requiredText30:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{1,30}$"},requiredText50:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{1,50}$"},requiredText256:{type:"string",pattern:"^(?!\\s)(?!.*\\s$).{1,256}$"},url:{type:"string",pattern:"^https://[^\\s/$.?#].[^\\s]*$",maxLength:2048},uuid:{type:"string",minLength:1,pattern:"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},productKey:{type:"string",pattern:"^(?!\\s)(?!.*\\s$)[A-Z0-9-]{4,16}$"},variantId:{type:"string",pattern:"^(?!\\s)(?!.*\\s$)[A-Z0-9-]{4,16}$"},firstName:{$ref:"#/definitions/requiredText30"},lastName:{$ref:"#/definitions/text30"},phone:{type:"string",pattern:"^[0-9]{10}$"},email:{type:"string",pattern:"^[^\\s]+@[^\\s]+\\.[^\\s]+$"},addressLine1:{$ref:"#/definitions/requiredText50"},addressLine2:{$ref:"#/definitions/text50"},city:{$ref:"#/definitions/requiredText30"},postalCode:{$ref:"#/definitions/requiredText16"},state:{type:"string",enum:["AP","AR","AS","BR","CT","GA","GJ","HR","HP","JH","KA","KL","MP","MH","MN","ML","MZ","NL","OR","PB","RJ","SK","TN","TG","TR","UP","UT","WB","AN","CH","DH","LD","DL","PY","LA","JK"]},country:{type:"string",enum:["IN"]},currency:{type:"string",enum:["INR"]},locale:{type:"string",enum:["en-IN"]},addressType:{type:"string",enum:["shipping","billing","shipping&billing"]},address:{type:"object",properties:{firstName:{$ref:"standards#/definitions/firstName"},lastName:{$ref:"standards#/definitions/lastName"},phone:{$ref:"standards#/definitions/phone"},email:{$ref:"standards#/definitions/email"},addressLine1:{$ref:"standards#/definitions/addressLine1"},addressLine2:{$ref:"standards#/definitions/addressLine2"},city:{$ref:"standards#/definitions/city"},postalCode:{$ref:"standards#/definitions/postalCode"},state:{$ref:"standards#/definitions/state"},country:{$ref:"standards#/definitions/country"}},required:["firstName","lastName","phone","email","addressLine1","postalCode","state","country"]}}};var at={getStandardSchemaDefinition(){return k}},V=at;var E=require("jose");var d=Object.freeze({INVALID_UUID:"Invalid UUID",INVALID_TOKEN:"Invalid Token",TOKEN_EXPIRED:"Token Expired",INVALID_AUTH_TYPE:"Invalid Authorization Type",USER_PRIVATE_KEY_NOT_FOUND:"User Private Key Not Found",USER_PUBLIC_KEY_NOT_FOUND:"User Public Key Not Found",ANONYMOUS_PRIVATE_KEY_NOT_FOUND:"Anonymous Private Key Not Found",ANONYMOUS_PUBLIC_KEY_NOT_FOUND:"Anonymous Public Key Not Found",SYSTEM_PRIVATE_KEY_NOT_FOUND:"System Private Key Not Found",SYSTEM_PUBLIC_KEY_NOT_FOUND:"System Public Key Not Found",ADMIN_PRIVATE_KEY_NOT_FOUND:"Admin Private Key Not Found",ADMIN_PUBLIC_KEY_NOT_FOUND:"Admin Public Key Not Found",SECRET_TOKEN_NOT_FOUND:"Secret Token Not Found",ANONYMOUS_SESSION_NOT_ALLOWED:"Anonymous Session Not Allowed",USER_SESSION_NOT_ALLOWED:"User Session Not Allowed",SYSTEM_SESSION_NOT_ALLOWED:"System Session Not Allowed",CDN_SESSION_NOT_ALLOWED:"CDN Session Not Allowed",INTERNAL_SERVER_ERROR:"Internal Server Error",SOMETHING_WENT_WRONG:"Something went wrong"});var F=C(require("util")),A={logException:(n,t)=>{console.error(`Exception Occurred in Function: ${n}, Error: ${A.inspect(t)}`)},logError:(n,t)=>{console.error(`Error Occurred in Function: ${n}, Error: ${A.inspect(t)}`)},logWarning:(n,t)=>{console.warn(`Warning in Function: ${n} - ${A.inspect(t)}`)},logMessage:(n,t)=>{console.log(`Message in Function: ${n} - ${A.inspect(t)}`)},logInvalidPayload:(n,t)=>{console.error(`Invalid Payload received for Function: ${n}, Error: ${A.inspect(t)}`)},inspect:n=>typeof n=="string"?n:F.default.inspect(n)},I=A;var W=C(require("crypto")),P=new Uint8Array(256),S=P.length;function R(){return S>P.length-16&&(W.default.randomFillSync(P),S=0),P.slice(S,S+=16)}var Y=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function ot(n){return typeof n=="string"&&Y.test(n)}var J=ot;var f=[];for(let n=0;n<256;++n)f.push((n+256).toString(16).slice(1));function K(n,t=0){return f[n[t+0]]+f[n[t+1]]+f[n[t+2]]+f[n[t+3]]+"-"+f[n[t+4]]+f[n[t+5]]+"-"+f[n[t+6]]+f[n[t+7]]+"-"+f[n[t+8]]+f[n[t+9]]+"-"+f[n[t+10]]+f[n[t+11]]+f[n[t+12]]+f[n[t+13]]+f[n[t+14]]+f[n[t+15]]}function ut(n){if(!J(n))throw TypeError("Invalid UUID");let t,e=new Uint8Array(16);return e[0]=(t=parseInt(n.slice(0,8),16))>>>24,e[1]=t>>>16&255,e[2]=t>>>8&255,e[3]=t&255,e[4]=(t=parseInt(n.slice(9,13),16))>>>8,e[5]=t&255,e[6]=(t=parseInt(n.slice(14,18),16))>>>8,e[7]=t&255,e[8]=(t=parseInt(n.slice(19,23),16))>>>8,e[9]=t&255,e[10]=(t=parseInt(n.slice(24,36),16))/1099511627776&255,e[11]=t/4294967296&255,e[12]=t>>>24&255,e[13]=t>>>16&255,e[14]=t>>>8&255,e[15]=t&255,e}var j=ut;function lt(n){n=unescape(encodeURIComponent(n));let t=[];for(let e=0;e<n.length;++e)t.push(n.charCodeAt(e));return t}var ct="6ba7b810-9dad-11d1-80b4-00c04fd430c8",mt="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function v(n,t,e){function r(s,o,i,l){var m;if(typeof s=="string"&&(s=lt(s)),typeof o=="string"&&(o=j(o)),((m=o)===null||m===void 0?void 0:m.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let c=new Uint8Array(16+s.length);if(c.set(o),c.set(s,o.length),c=e(c),c[6]=c[6]&15|t,c[8]=c[8]&63|128,i){l=l||0;for(let u=0;u<16;++u)i[l+u]=c[u];return i}return K(c)}try{r.name=n}catch{}return r.DNS=ct,r.URL=mt,r}var B=C(require("crypto")),b={randomUUID:B.default.randomUUID};function dt(n,t,e){if(b.randomUUID&&!t&&!n)return b.randomUUID();n=n||{};let r=n.random||(n.rng||R)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){e=e||0;for(let s=0;s<16;++s)t[e+s]=r[s];return t}return K(r)}var D=dt;var G=C(require("crypto"));function yt(n){return Array.isArray(n)?n=Buffer.from(n):typeof n=="string"&&(n=Buffer.from(n,"utf8")),G.default.createHash("sha1").update(n).digest()}var H=yt;var pt=v("v5",80,H),w=pt;var gt={isUUID:n=>/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(n),generateUUID:(n,t)=>t&&n?w(n,t):D(),generateSearchId:(n,t)=>`${n}#${t}`,getKeyfromSearchId:n=>{let[t,e]=n.split("#");return{key:t,variantId:e}}},N=gt;var ft={handleException:(n,t,e)=>{t.knownError?(t.logError&&I.logError(n,t),e.status(t.status).json({status:t.status,error:t.error})):t.status&&t.error?(I.logException(n,t),e.status(t.status).json({...t.error,status:t.status})):(I.logException(n,t),e.status(500).json({status:500,error:d.INTERNAL_SERVER_ERROR}))},generateResponse:(n,t,e)=>({status:n,data:t,error:e}),generateError:(n,t,e=!0,r=!1)=>({status:n,error:t,knownError:e,logError:r})},T=ft;var h=C(require("assert")),_={maxTokenAge:"30 days",userPrivateKeys:"[]",userPublicKeys:"[]",anonymousPrivateKeys:"[]",anonymousPublicKeys:"[]",systemPrivateKeys:"[]",systemPublicKeys:"[]",adminPrivateKeys:"[]",adminPublicKeys:"[]"},O={allowAnonymous:!1,allowSystem:!0,allowUser:!0,allowCDN:!1},$=class{maxTokenAge;userPrivateKeys;userPublicKeys;anonymousPrivateKeys;anonymousPublicKeys;systemPrivateKeys;systemPublicKeys;adminPrivateKeys;adminPublicKeys;constructor(t=_){let{maxTokenAge:e,userPrivateKeys:r,userPublicKeys:s,anonymousPrivateKeys:o,anonymousPublicKeys:i,systemPrivateKeys:l,systemPublicKeys:m,adminPrivateKeys:c,adminPublicKeys:u}={..._,...t};this.maxTokenAge=e,this.userPrivateKeys=JSON.parse(r),this.userPublicKeys=JSON.parse(s),this.anonymousPrivateKeys=JSON.parse(o),this.anonymousPublicKeys=JSON.parse(i),this.systemPrivateKeys=JSON.parse(l),this.systemPublicKeys=JSON.parse(m),this.adminPrivateKeys=JSON.parse(c),this.adminPublicKeys=JSON.parse(u),this.logWarnings()}logWarnings(){let t=(e,r,s)=>r.length>s&&I.logWarning("AuthUtility",`More than ${s} ${e} keys provided. This is not recommended.`);t("user private",this.userPrivateKeys,3),t("user public",this.userPublicKeys,3),t("anonymous private",this.anonymousPrivateKeys,1),t("anonymous public",this.anonymousPublicKeys,3),t("system private",this.systemPrivateKeys,1),t("system public",this.systemPublicKeys,3),t("admin private",this.adminPrivateKeys,1),t("admin public",this.adminPublicKeys,3)}async createSignedJWT(t,e,r){let s=await(0,E.importPKCS8)(e,"RS256");return await new E.SignJWT(t).setProtectedHeader({alg:"RS256"}).setExpirationTime(r).setIssuedAt().sign(s)}async verifySignedJWT(t,e,r){for(let i=e.length-1;i>0;i--)try{let l=await(0,E.importSPKI)(e[i],"RS256");return(await(0,E.jwtVerify)(t,l,{clockTolerance:30,maxTokenAge:r})).payload}catch{continue}let s=await(0,E.importSPKI)(e[0],"RS256");return(await(0,E.jwtVerify)(t,s,{clockTolerance:30,maxTokenAge:r})).payload}async createAnonymousToken(t,e){(0,h.default)(this.anonymousPrivateKeys.length,d.ANONYMOUS_PRIVATE_KEY_NOT_FOUND),(0,h.default)(N.isUUID(t),d.INVALID_UUID);let r={id:t,type:"Anon",...e};return await this.createSignedJWT(r,this.anonymousPrivateKeys[this.anonymousPrivateKeys.length-1],this.maxTokenAge)}async verifyAnonymousToken(t){(0,h.default)(this.anonymousPublicKeys.length,d.ANONYMOUS_PUBLIC_KEY_NOT_FOUND);let e=await this.verifySignedJWT(t,this.anonymousPublicKeys,this.maxTokenAge);return(0,h.default)(e.type==="Anon",d.INVALID_AUTH_TYPE),e}async createUserToken(t,e){(0,h.default)(this.userPrivateKeys.length,d.USER_PRIVATE_KEY_NOT_FOUND),(0,h.default)(N.isUUID(t),d.INVALID_UUID);let r={id:t,type:"User",...e};return await this.createSignedJWT(r,this.userPrivateKeys[this.userPrivateKeys.length-1],this.maxTokenAge)}async verifyUserToken(t){(0,h.default)(this.userPublicKeys.length,d.USER_PUBLIC_KEY_NOT_FOUND);let e=await this.verifySignedJWT(t,this.userPublicKeys,this.maxTokenAge);return(0,h.default)(e.type==="User",d.INVALID_AUTH_TYPE),e}async createSystemToken(t,e){(0,h.default)(this.systemPrivateKeys.length,d.SYSTEM_PRIVATE_KEY_NOT_FOUND);let r={id:t,type:"System",...e};return await this.createSignedJWT(r,this.systemPrivateKeys[this.systemPrivateKeys.length-1],"5 min")}async verifySystemToken(t){(0,h.default)(this.systemPublicKeys.length,d.USER_PUBLIC_KEY_NOT_FOUND);let e=await this.verifySignedJWT(t,this.systemPublicKeys,"5 min");return(0,h.default)(e.type==="System",d.INVALID_AUTH_TYPE),e}async createAdminToken(t,e){(0,h.default)(this.adminPrivateKeys.length,d.ADMIN_PRIVATE_KEY_NOT_FOUND),(0,h.default)(N.isUUID(t),d.INVALID_UUID);let r={id:t,type:"Admin",...e};return await this.createSignedJWT(r,this.adminPrivateKeys[this.adminPrivateKeys.length-1],this.maxTokenAge)}async verifyAdminToken(t){(0,h.default)(this.adminPublicKeys.length,d.ADMIN_PUBLIC_KEY_NOT_FOUND);let e=await this.verifySignedJWT(t,this.adminPublicKeys,this.maxTokenAge);return(0,h.default)(e.type==="Admin",d.INVALID_AUTH_TYPE),e}AuthMiddleware(t=O){let{allowAnonymous:e,allowSystem:r,allowUser:s,allowCDN:o}={...O,...t};return async(i,l,m)=>{try{let[c,u]=i.get("Authorization")?.split(" ")||[];if(!u)throw new Error(d.INVALID_TOKEN);let p;switch(c){case"Anon":if(!e)throw T.generateError(403,d.ANONYMOUS_SESSION_NOT_ALLOWED);p=await this.verifyAnonymousToken(u);break;case"User":if(!s)throw T.generateError(403,d.USER_SESSION_NOT_ALLOWED);p=await this.verifyUserToken(u);break;case"System":if(!r)throw T.generateError(403,d.SYSTEM_SESSION_NOT_ALLOWED);p=await this.verifySystemToken(u),I.logMessage("AuthMiddleware",`System Name - ${p.id}`);break;case"Admin":p=await this.verifyAdminToken(u),I.logMessage("AuthMiddleware",`Admin Id - ${p.id}`);break;case"CDN":if(!o)throw T.generateError(403,d.CDN_SESSION_NOT_ALLOWED);(0,h.default)(["E3CQMOP5FX6KD1","E3TNCKKZ3FOX9W"].includes(u),d.INVALID_TOKEN),I.logMessage("AuthMiddleware",`CDN DistributionId - ${u}`);break;default:throw T.generateError(403,d.INVALID_AUTH_TYPE)}l.locals.auth={authType:c,token:u,...p},m()}catch(c){I.logError("AuthMiddleware",c),T.handleException("AuthMiddleware",T.generateError(401,c.error||d.TOKEN_EXPIRED,!0),l)}}}},q=$;var ht=async(n,t,e="GET",r={},s)=>{let o={method:e,headers:{"Content-Type":"application/json",...r}};e!=="GET"&&s&&(o.body=JSON.stringify(s));try{let i=await fetch(`${n}/${t}`,o);if(!i.ok){let m=await i.json().catch(()=>i.text());throw{status:i.status,statusText:i.statusText,error:m||{status:i.status,error:i.statusText}}}let l=await i.json();return I.logMessage("Fetch",`API call successful: URL-${n}/${t}, Status- ${i.status}`),{status:i.status,statusText:i.statusText,data:l.data}}catch(i){throw I.logError("Fetch",`API call failed: URL-${n}/${t}, Status- ${i.status||500}, Error- ${I.inspect(i.error||i)}`),{status:i.status||500,statusText:i.statusText||d.INTERNAL_SERVER_ERROR,error:i.error||{status:i.status||500,error:i.statusText||d.SOMETHING_WENT_WRONG}}}},X=ht;0&&(module.exports={AuthUtility,DefaultAuthMiddlewareConfig,DefaultAuthUtilityConfig,DynamoDB,Fetch,Logger,ResponseUtility,Schema,Utils});
2
+ //# sourceMappingURL=index.js.map