@adtrackify/at-service-common 1.2.7 → 1.2.8

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.
Files changed (108) hide show
  1. package/dist/__tests__/helpers/subscription-helper.spec.d.ts +1 -0
  2. package/dist/__tests__/helpers/subscription-helper.spec.js +28 -0
  3. package/dist/__tests__/helpers/subscription-helper.spec.js.map +1 -0
  4. package/dist/clients/generic/cognito-client.d.ts +19 -0
  5. package/dist/clients/generic/cognito-client.js +140 -0
  6. package/dist/clients/generic/cognito-client.js.map +1 -0
  7. package/dist/clients/generic/dynamodb-client.d.ts +15 -0
  8. package/dist/clients/generic/dynamodb-client.js +123 -0
  9. package/dist/clients/generic/dynamodb-client.js.map +1 -0
  10. package/dist/clients/generic/eventbridge-client.d.ts +14 -0
  11. package/dist/clients/generic/eventbridge-client.js +46 -0
  12. package/dist/clients/generic/eventbridge-client.js.map +1 -0
  13. package/dist/clients/generic/http-client.d.ts +30 -0
  14. package/dist/clients/generic/http-client.js +29 -0
  15. package/dist/clients/generic/http-client.js.map +1 -0
  16. package/dist/clients/generic/index.d.ts +5 -0
  17. package/dist/clients/generic/index.js +6 -0
  18. package/dist/clients/generic/index.js.map +1 -0
  19. package/dist/clients/generic/s3-client.d.ts +6 -0
  20. package/dist/clients/generic/s3-client.js +25 -0
  21. package/dist/clients/generic/s3-client.js.map +1 -0
  22. package/dist/clients/generic/sqs-client.d.ts +14 -0
  23. package/dist/clients/generic/sqs-client.js +35 -0
  24. package/dist/clients/generic/sqs-client.js.map +1 -0
  25. package/dist/clients/index.d.ts +3 -0
  26. package/dist/clients/index.js +4 -0
  27. package/dist/clients/index.js.map +1 -0
  28. package/dist/clients/internal-api/accounts-client.d.ts +82 -0
  29. package/dist/clients/internal-api/accounts-client.js +79 -0
  30. package/dist/clients/internal-api/accounts-client.js.map +1 -0
  31. package/dist/clients/internal-api/destinations-client.d.ts +54 -0
  32. package/dist/clients/internal-api/destinations-client.js +37 -0
  33. package/dist/clients/internal-api/destinations-client.js.map +1 -0
  34. package/dist/clients/internal-api/index.d.ts +4 -0
  35. package/dist/clients/internal-api/index.js +5 -0
  36. package/dist/clients/internal-api/index.js.map +1 -0
  37. package/dist/clients/internal-api/shopify-app-install-client.d.ts +57 -0
  38. package/dist/clients/internal-api/shopify-app-install-client.js +43 -0
  39. package/dist/clients/internal-api/shopify-app-install-client.js.map +1 -0
  40. package/dist/clients/internal-api/users-auth-client.d.ts +61 -0
  41. package/dist/clients/internal-api/users-auth-client.js +74 -0
  42. package/dist/clients/internal-api/users-auth-client.js.map +1 -0
  43. package/dist/clients/third-party/index.d.ts +1 -0
  44. package/dist/clients/third-party/index.js +2 -0
  45. package/dist/clients/third-party/index.js.map +1 -0
  46. package/dist/clients/third-party/shopify-client.d.ts +90 -0
  47. package/dist/clients/third-party/shopify-client.js +122 -0
  48. package/dist/clients/third-party/shopify-client.js.map +1 -0
  49. package/dist/helpers/index.d.ts +5 -0
  50. package/dist/helpers/index.js +6 -0
  51. package/dist/helpers/index.js.map +1 -0
  52. package/dist/helpers/input-validation-helper.d.ts +2 -0
  53. package/dist/helpers/input-validation-helper.js +19 -0
  54. package/dist/helpers/input-validation-helper.js.map +1 -0
  55. package/dist/helpers/logging-helper.d.ts +1 -0
  56. package/dist/helpers/logging-helper.js +10 -0
  57. package/dist/helpers/logging-helper.js.map +1 -0
  58. package/dist/helpers/response-helper.d.ts +36 -0
  59. package/dist/helpers/response-helper.js +36 -0
  60. package/dist/helpers/response-helper.js.map +1 -0
  61. package/dist/helpers/shopify-helper.d.ts +9 -0
  62. package/dist/helpers/shopify-helper.js +24 -0
  63. package/dist/helpers/shopify-helper.js.map +1 -0
  64. package/dist/helpers/subscription-helper.d.ts +8 -0
  65. package/dist/helpers/subscription-helper.js +182 -0
  66. package/dist/helpers/subscription-helper.js.map +1 -0
  67. package/dist/index.d.ts +5 -0
  68. package/dist/index.esm.js +1338 -0
  69. package/dist/index.esm.js.map +7 -0
  70. package/dist/index.js +6 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/libs/crypto.d.ts +1 -0
  73. package/dist/libs/crypto.js +6 -0
  74. package/dist/libs/crypto.js.map +1 -0
  75. package/dist/libs/dates.d.ts +3 -0
  76. package/dist/libs/dates.js +11 -0
  77. package/dist/libs/dates.js.map +1 -0
  78. package/dist/libs/http-error.d.ts +21 -0
  79. package/dist/libs/http-error.js +56 -0
  80. package/dist/libs/http-error.js.map +1 -0
  81. package/dist/libs/http-status-codes.d.ts +58 -0
  82. package/dist/libs/http-status-codes.js +60 -0
  83. package/dist/libs/http-status-codes.js.map +1 -0
  84. package/dist/libs/index.d.ts +6 -0
  85. package/dist/libs/index.js +7 -0
  86. package/dist/libs/index.js.map +1 -0
  87. package/dist/libs/url.d.ts +1 -0
  88. package/dist/libs/url.js +10 -0
  89. package/dist/libs/url.js.map +1 -0
  90. package/dist/services/eventbridge-integration-service.d.ts +9 -0
  91. package/dist/services/eventbridge-integration-service.js +25 -0
  92. package/dist/services/eventbridge-integration-service.js.map +1 -0
  93. package/dist/services/index.d.ts +1 -0
  94. package/dist/services/index.js +2 -0
  95. package/dist/services/index.js.map +1 -0
  96. package/dist/types/api-response.d.ts +6 -0
  97. package/dist/types/api-response.js +2 -0
  98. package/dist/types/api-response.js.map +1 -0
  99. package/dist/types/index.d.ts +1 -0
  100. package/dist/types/index.js +2 -0
  101. package/dist/types/index.js.map +1 -0
  102. package/dist/types/internal-events/event-detail-types.d.ts +20 -0
  103. package/dist/types/internal-events/event-detail-types.js +25 -0
  104. package/dist/types/internal-events/event-detail-types.js.map +1 -0
  105. package/dist/types/internal-events/index.d.ts +1 -0
  106. package/dist/types/internal-events/index.js +2 -0
  107. package/dist/types/internal-events/index.js.map +1 -0
  108. package/package.json +1 -1
@@ -0,0 +1,28 @@
1
+ jest.mock('lambda-log');
2
+ import * as Logger from 'lambda-log';
3
+ import { getPlanDetails } from '../../helpers/subscription-helper.js';
4
+ describe('postmark service email test', () => {
5
+ jest.spyOn(Logger, 'warn').mockImplementation(() => {
6
+ return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
7
+ });
8
+ jest.spyOn(Logger, 'info').mockImplementation(() => {
9
+ return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
10
+ });
11
+ jest.spyOn(Logger, 'debug').mockImplementation(() => {
12
+ return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
13
+ });
14
+ jest.spyOn(Logger, 'error').mockImplementation(() => {
15
+ return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
16
+ });
17
+ beforeEach(async () => {
18
+ });
19
+ afterEach(() => {
20
+ jest.resetAllMocks();
21
+ });
22
+ it('should call send email message', async () => {
23
+ const plan = getPlanDetails(2, 'dev');
24
+ console.log(plan);
25
+ expect(plan).not.toEqual(null);
26
+ });
27
+ });
28
+ //# sourceMappingURL=subscription-helper.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-helper.spec.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/subscription-helper.spec.ts"],"names":[],"mappings":"AAOA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;QACjD,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;QACjD,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;QAClD,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;QAClD,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;IAEtB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAGH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ export declare function dictToAwsAttributes(input: any): {
2
+ Name: string;
3
+ Value: any;
4
+ }[];
5
+ export declare class CognitoClient {
6
+ cognitoClient: any;
7
+ USER_POOL_ID: string;
8
+ USER_POOL_NO_SECRET_CLIENT_ID: string;
9
+ constructor(userPoolId: string, userPoolNoSecretClientId: string);
10
+ signupUser: (data: any) => Promise<any>;
11
+ forgotPassword: (email: string) => Promise<any>;
12
+ adminEmailVerify: (email: string) => Promise<void>;
13
+ forceValidateEmail: (email: string) => Promise<void>;
14
+ adminConfirmUser: (data: any) => Promise<any>;
15
+ confirmUser: (data: any) => Promise<any>;
16
+ resendCode: (email: string) => Promise<void>;
17
+ adminDeleteUser: (userId: string) => Promise<boolean>;
18
+ getUserByEmail: (email: string) => Promise<any>;
19
+ }
@@ -0,0 +1,140 @@
1
+ import { CognitoIdentityProvider } from '@aws-sdk/client-cognito-identity-provider';
2
+ import * as log from 'lambda-log';
3
+ export function dictToAwsAttributes(input) {
4
+ delete input.email;
5
+ delete input.password;
6
+ const output = [];
7
+ for (const att in input) {
8
+ if (Object.prototype.hasOwnProperty.call(input, att)) {
9
+ output.push({ Name: att, Value: input[att] });
10
+ }
11
+ }
12
+ return output;
13
+ }
14
+ const buildAttributes = (data) => {
15
+ const attributes = {
16
+ name: data.givenName,
17
+ family_name: data.familyName,
18
+ };
19
+ return dictToAwsAttributes(attributes);
20
+ };
21
+ export class CognitoClient {
22
+ cognitoClient;
23
+ USER_POOL_ID;
24
+ USER_POOL_NO_SECRET_CLIENT_ID;
25
+ constructor(userPoolId, userPoolNoSecretClientId) {
26
+ this.cognitoClient = new CognitoIdentityProvider({});
27
+ this.USER_POOL_ID = userPoolId;
28
+ this.USER_POOL_NO_SECRET_CLIENT_ID = userPoolNoSecretClientId;
29
+ }
30
+ signupUser = async (data) => {
31
+ const params = {
32
+ ClientId: this.USER_POOL_NO_SECRET_CLIENT_ID,
33
+ Password: data.password,
34
+ Username: data.email,
35
+ UserAttributes: buildAttributes(data),
36
+ };
37
+ const cognitoResponse = await this.cognitoClient.signUp(params);
38
+ log.debug('Successfully Registered User', { cognitoResponse });
39
+ return cognitoResponse;
40
+ };
41
+ forgotPassword = async (email) => {
42
+ await this.adminEmailVerify(email);
43
+ const params = {
44
+ ClientId: this.USER_POOL_NO_SECRET_CLIENT_ID,
45
+ Username: email,
46
+ };
47
+ const cognitoResponse = await this.cognitoClient.forgotPassword(params);
48
+ log.debug('Sent Forgot Password', { cognitoResponse });
49
+ return cognitoResponse;
50
+ };
51
+ adminEmailVerify = async (email) => {
52
+ try {
53
+ const user = await this.getUserByEmail(email);
54
+ if (user && user?.UserStatus === 'CONFIRMED' && user?.email_verified !== 'true') {
55
+ await this.forceValidateEmail(email);
56
+ }
57
+ }
58
+ catch (error) {
59
+ log.error('Failed admin email verify', { error });
60
+ }
61
+ };
62
+ forceValidateEmail = async (email) => {
63
+ try {
64
+ const params = {
65
+ UserPoolId: this.USER_POOL_ID,
66
+ Username: email,
67
+ UserAttributes: [
68
+ {
69
+ Name: 'email_verified',
70
+ Value: 'true',
71
+ },
72
+ ],
73
+ };
74
+ await this.cognitoClient.adminUpdateUserAttributes(params);
75
+ }
76
+ catch (error) {
77
+ log.error('Failed force validate email', { email, error });
78
+ }
79
+ };
80
+ adminConfirmUser = async (data) => {
81
+ const params = {
82
+ UserPoolId: this.USER_POOL_ID,
83
+ Username: data.email,
84
+ };
85
+ const cognitoResponse = await this.cognitoClient.adminConfirmSignUp(params);
86
+ await this.forceValidateEmail(data.email);
87
+ log.debug('Admin Successfully Confirmed User', { cognitoResponse });
88
+ return cognitoResponse;
89
+ };
90
+ confirmUser = async (data) => {
91
+ const params = {
92
+ ClientId: this.USER_POOL_NO_SECRET_CLIENT_ID,
93
+ ConfirmationCode: data.confirmationCode,
94
+ Username: data.email,
95
+ };
96
+ const cognitoResponse = await this.cognitoClient.confirmSignUp(params);
97
+ log.debug('Successfully Confirmed User', { cognitoResponse });
98
+ return cognitoResponse;
99
+ };
100
+ resendCode = async (email) => {
101
+ const params = {
102
+ ClientId: this.USER_POOL_NO_SECRET_CLIENT_ID,
103
+ Username: email,
104
+ };
105
+ await this.cognitoClient.resendConfirmationCode(params);
106
+ log.debug('Successfully Resend Confirmation Code', { email });
107
+ return;
108
+ };
109
+ adminDeleteUser = async (userId) => {
110
+ const params = {
111
+ UserPoolId: this.USER_POOL_ID,
112
+ Username: userId,
113
+ };
114
+ await this.cognitoClient.adminDeleteUser(params);
115
+ return true;
116
+ };
117
+ getUserByEmail = async (email) => {
118
+ const params = {
119
+ UserPoolId: this.USER_POOL_ID,
120
+ Filter: `email=\"${email}\"`,
121
+ Limit: 1,
122
+ };
123
+ const cognitoResponse = await this.cognitoClient.listUsers(params);
124
+ log.debug('Get Users by Email', { cognitoResponse });
125
+ if (cognitoResponse?.Users && cognitoResponse?.Users.length > 0) {
126
+ const attributes = cognitoResponse.Users[0].Attributes;
127
+ const user = {
128
+ ...cognitoResponse.Users[0],
129
+ Attributes: undefined,
130
+ id: cognitoResponse.Users[0].sub,
131
+ };
132
+ attributes.forEach((attr) => {
133
+ user[attr.Name] = attr?.Value;
134
+ });
135
+ return user;
136
+ }
137
+ return null;
138
+ };
139
+ }
140
+ //# sourceMappingURL=cognito-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cognito-client.js","sourceRoot":"","sources":["../../../src/clients/generic/cognito-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare class DynamoDbClient {
2
+ static safeGet: (tableName: string, keyName: string, keyValue: any) => Promise<Record<string, any> | null>;
3
+ static safePut: (tableName: string, data: any) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null>;
4
+ static safeDelete: (tableName: string, keyName: string, keyValue: any) => Promise<import("@aws-sdk/lib-dynamodb").DeleteCommandOutput | null>;
5
+ static safeQueryByGSI: (tableName: string, gsiName: string, keyName: string, keyValue: any) => Promise<any[] | null>;
6
+ static safeBatchGet: (tableName: string, keys: any) => Promise<Record<string, any>[]>;
7
+ static queryAll: (params: any) => Promise<any[] | null>;
8
+ static batchGet: (params: any) => Promise<import("@aws-sdk/lib-dynamodb").BatchGetCommandOutput>;
9
+ static get: (params: any) => Promise<import("@aws-sdk/lib-dynamodb").GetCommandOutput>;
10
+ static put: (params: any) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput>;
11
+ static query: (params: any) => Promise<import("@aws-sdk/lib-dynamodb").QueryCommandOutput>;
12
+ static scan: (params: any) => Promise<import("@aws-sdk/lib-dynamodb").ScanCommandOutput>;
13
+ static update: (params: any) => Promise<import("@aws-sdk/lib-dynamodb").UpdateCommandOutput>;
14
+ static delete: (params: any) => Promise<import("@aws-sdk/lib-dynamodb").DeleteCommandOutput>;
15
+ }
@@ -0,0 +1,123 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
3
+ import * as log from 'lambda-log';
4
+ const marshallOptions = {
5
+ convertEmptyValues: false,
6
+ removeUndefinedValues: false,
7
+ convertClassInstanceToMap: true
8
+ };
9
+ const unmarshallOptions = {
10
+ wrapNumbers: false,
11
+ };
12
+ const translateConfig = { marshallOptions, unmarshallOptions };
13
+ const ddbClient = new DynamoDBClient({});
14
+ const client = DynamoDBDocument.from(ddbClient, translateConfig);
15
+ export class DynamoDbClient {
16
+ static safeGet = async (tableName, keyName, keyValue) => {
17
+ try {
18
+ const params = {
19
+ TableName: tableName,
20
+ Key: {
21
+ [keyName]: keyValue
22
+ }
23
+ };
24
+ const res = await client.get(params);
25
+ return res?.Item ?? null;
26
+ }
27
+ catch (e) {
28
+ log.error(e, { message: 'Dynamo Client Get Failed' });
29
+ return null;
30
+ }
31
+ };
32
+ static safePut = async (tableName, data) => {
33
+ try {
34
+ const params = {
35
+ TableName: tableName,
36
+ Item: data
37
+ };
38
+ const res = await client.put(params);
39
+ return res;
40
+ }
41
+ catch (e) {
42
+ log.error(e, { message: 'Dynamo failed simplePut' });
43
+ return null;
44
+ }
45
+ };
46
+ static safeDelete = async (tableName, keyName, keyValue) => {
47
+ try {
48
+ const params = {
49
+ TableName: tableName,
50
+ Key: {
51
+ [keyName]: keyValue
52
+ }
53
+ };
54
+ const res = await client.delete(params);
55
+ return res;
56
+ }
57
+ catch (e) {
58
+ log.error(e, { message: 'Dynamo failed safeDelete' });
59
+ return null;
60
+ }
61
+ };
62
+ static safeQueryByGSI = async (tableName, gsiName, keyName, keyValue) => {
63
+ const query = {
64
+ TableName: tableName,
65
+ IndexName: gsiName,
66
+ KeyConditionExpression: `${keyName} = :value`,
67
+ ExpressionAttributeValues: {
68
+ ':value': keyValue
69
+ }
70
+ };
71
+ const results = await DynamoDbClient.queryAll(query);
72
+ return results;
73
+ };
74
+ static safeBatchGet = async (tableName, keys) => {
75
+ try {
76
+ const params = {
77
+ RequestItems: {}
78
+ };
79
+ params.RequestItems[tableName] = {
80
+ Keys: keys
81
+ };
82
+ const res = await client.batchGet(params);
83
+ log.info('batchget res', { batchGetRes: res });
84
+ if (res?.Responses?.[tableName]) {
85
+ return res?.Responses?.[tableName];
86
+ }
87
+ return [];
88
+ }
89
+ catch (e) {
90
+ log.error(e, { message: 'Dynamo failed safeBatchGet' });
91
+ return [];
92
+ }
93
+ };
94
+ static queryAll = async (params) => {
95
+ try {
96
+ log.info('Invoke Query All', { params });
97
+ let currentResult, exclusiveStartKey;
98
+ let accumulatedResults = [];
99
+ do {
100
+ params.ExclusiveStartKey = exclusiveStartKey;
101
+ params.Limit = 200;
102
+ currentResult = await client.query(params);
103
+ if (currentResult.Items) {
104
+ exclusiveStartKey = currentResult.LastEvaluatedKey;
105
+ accumulatedResults = [...accumulatedResults, ...currentResult.Items];
106
+ }
107
+ } while (currentResult.Items && currentResult.Items.length > 0 && currentResult.LastEvaluatedKey);
108
+ return accumulatedResults;
109
+ }
110
+ catch (e) {
111
+ log.error(e, { message: 'Dynamo failed queryAll' });
112
+ return null;
113
+ }
114
+ };
115
+ static batchGet = (params) => client.batchGet(params);
116
+ static get = (params) => client.get(params);
117
+ static put = (params) => client.put(params);
118
+ static query = (params) => client.query(params);
119
+ static scan = (params) => client.scan(params);
120
+ static update = (params) => client.update(params);
121
+ static delete = (params) => client.delete(params);
122
+ }
123
+ //# sourceMappingURL=dynamodb-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb-client.js","sourceRoot":"","sources":["../../../src/clients/generic/dynamodb-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { EventBridgeClient as EventBridge } from '@aws-sdk/client-eventbridge';
2
+ export declare class EventBridgeClient {
3
+ eventBridge: EventBridge;
4
+ EVENT_BUS_NAME: string;
5
+ constructor(eventBusName: string);
6
+ buildAndSendEvent: (eventSource: string, eventType: string, eventData: any) => Promise<import("@aws-sdk/client-eventbridge").PutEventsCommandOutput>;
7
+ buildEvent: (eventType: string, eventData: any, eventId?: string, eventTime?: string) => {
8
+ eventId: string;
9
+ eventType: string;
10
+ eventTime: string;
11
+ eventData: any;
12
+ };
13
+ putEvent: (source: string, detailType: string, data: any, headers?: any) => Promise<import("@aws-sdk/client-eventbridge").PutEventsCommandOutput>;
14
+ }
@@ -0,0 +1,46 @@
1
+ import { EventBridgeClient as EventBridge, PutEventsCommand } from '@aws-sdk/client-eventbridge';
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ import { getCurrentTimestamp } from '../../libs/dates.js';
4
+ import * as log from 'lambda-log';
5
+ export class EventBridgeClient {
6
+ eventBridge;
7
+ EVENT_BUS_NAME;
8
+ constructor(eventBusName) {
9
+ this.eventBridge = new EventBridge({});
10
+ this.EVENT_BUS_NAME = eventBusName;
11
+ }
12
+ buildAndSendEvent = async (eventSource, eventType, eventData) => {
13
+ const event = this.buildEvent(eventType, eventData);
14
+ return await this.putEvent(eventSource, eventType, event);
15
+ };
16
+ buildEvent = (eventType, eventData, eventId = uuidv4(), eventTime = getCurrentTimestamp()) => {
17
+ return {
18
+ eventId,
19
+ eventType,
20
+ eventTime,
21
+ eventData
22
+ };
23
+ };
24
+ putEvent = async (source, detailType, data, headers = null) => {
25
+ const params = {
26
+ Entries: [{
27
+ Detail: JSON.stringify({ headers, data }),
28
+ DetailType: detailType,
29
+ EventBusName: this.EVENT_BUS_NAME,
30
+ Source: source,
31
+ Time: new Date(),
32
+ }],
33
+ };
34
+ const putEventscommand = new PutEventsCommand(params);
35
+ const response = await this.eventBridge.send(putEventscommand);
36
+ log.debug('EventBus Event Published', {
37
+ eventBusName: this.EVENT_BUS_NAME,
38
+ eventSource: source,
39
+ eventType: detailType,
40
+ event: data,
41
+ response
42
+ });
43
+ return response;
44
+ };
45
+ }
46
+ //# sourceMappingURL=eventbridge-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventbridge-client.js","sourceRoot":"","sources":["../../../src/clients/generic/eventbridge-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,gBAAgB,EAAyB,MAAM,6BAA6B,CAAC;AACxH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAElC,MAAM,OAAO,iBAAiB;IACrB,WAAW,CAAc;IACzB,cAAc,CAAS;IAE9B,YAAa,YAAoB;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;IACrC,CAAC;IAEM,iBAAiB,GAAG,KAAK,EAAE,WAAmB,EAAE,SAAiB,EAAE,SAAc,EAAE,EAAE;QAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACpD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC;IAEK,UAAU,GAAG,CAAC,SAAiB,EAAE,SAAc,EAAE,UAAkB,MAAM,EAAE,EAAE,YAAoB,mBAAmB,EAAE,EAAE,EAAE;QAC/H,OAAO;YACL,OAAO;YACP,SAAS;YACT,SAAS;YACT,SAAS;SACV,CAAC;IACJ,CAAC,CAAC;IAEK,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,UAAkB,EAAE,IAAS,EAAE,UAAe,IAAI,EAAE,EAAE;QAC7F,MAAM,MAAM,GAA0B;YACpC,OAAO,EAAE,CAAE;oBACT,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oBACzC,UAAU,EAAE,UAAU;oBACtB,YAAY,EAAE,IAAI,CAAC,cAAc;oBACjC,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAAI,IAAI,EAAE;iBACjB,CAAE;SACJ,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/D,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAClC;YACE,YAAY,EAAE,IAAI,CAAC,cAAc;YACjC,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,IAAI;YACX,QAAQ;SACT,CAAC,CAAC;QACL,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;CAEH"}
@@ -0,0 +1,30 @@
1
+ import { CreateAxiosDefaults } from 'axios';
2
+ export declare const axiosHttpService: (config?: CreateAxiosDefaults) => {
3
+ instance: () => import("axios").AxiosInstance;
4
+ get: (url: string, config?: any) => Promise<{
5
+ headers: any;
6
+ data: any;
7
+ status: any;
8
+ }>;
9
+ post: (url: string, data?: any, config?: any) => Promise<{
10
+ headers: any;
11
+ data: any;
12
+ status: any;
13
+ }>;
14
+ delete: (url: string, config?: any) => Promise<{
15
+ headers: any;
16
+ data: any;
17
+ status: any;
18
+ }>;
19
+ put: (url: string, data?: any, config?: any) => Promise<{
20
+ headers: any;
21
+ data: any;
22
+ status: any;
23
+ }>;
24
+ patch: (url: string, data?: any, config?: any) => Promise<{
25
+ headers: any;
26
+ data: any;
27
+ status: any;
28
+ }>;
29
+ setBaseUrl: (url: string) => boolean;
30
+ };
@@ -0,0 +1,29 @@
1
+ import axios from 'axios';
2
+ import https from 'https';
3
+ const httpResponse = (res = {}) => {
4
+ return {
5
+ headers: res?.header || {},
6
+ data: res?.data || {},
7
+ status: res?.status || 0,
8
+ };
9
+ };
10
+ const handleAxiosError = (error) => {
11
+ if (!error?.response && !error?.request)
12
+ throw error;
13
+ return error.response ? httpResponse(error.response) : httpResponse({ status: 500, data: { error: error.request } });
14
+ };
15
+ export const axiosHttpService = (config = {}) => {
16
+ config.adapter = 'http';
17
+ config.httpsAgent = new https.Agent({ keepAlive: true });
18
+ const axiosService = axios.create(config);
19
+ return {
20
+ instance: () => axiosService,
21
+ get: (url, config) => axiosService.get(url, config).then(httpResponse, handleAxiosError),
22
+ post: (url, data, config) => axiosService.post(url, data, config).then(httpResponse, handleAxiosError),
23
+ delete: (url, config) => axiosService.delete(url, config).then(httpResponse, handleAxiosError),
24
+ put: (url, data, config) => axiosService.put(url, data, config).then(httpResponse, handleAxiosError),
25
+ patch: (url, data, config) => axiosService.patch(url, data, config).then(httpResponse, handleAxiosError),
26
+ setBaseUrl: (url) => !!(axiosService.defaults.baseURL = url)
27
+ };
28
+ };
29
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/clients/generic/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,YAAY,GAAG,CAAC,MAAW,EAAE,EAAE,EAAE;IACrC,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,EAAE;QAC1B,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE;QACrB,MAAM,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;KACzB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAE,EAAE;IACtC,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO;QAAE,MAAM,KAAK,CAAC;IACrD,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACvH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAA8B,EAAE,EAAE,EAAE;IACnE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY;QAC5B,GAAG,EAAE,CAAC,GAAW,EAAE,MAAY,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC;QACtG,IAAI,EAAE,CAAC,GAAW,EAAE,IAAU,EAAE,MAAY,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC;QAC1H,MAAM,EAAE,CAAC,GAAW,EAAE,MAAY,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC;QAC5G,GAAG,EAAE,CAAC,GAAW,EAAE,IAAU,EAAE,MAAY,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC;QACxH,KAAK,EAAE,CAAC,GAAW,EAAE,IAAU,EAAE,MAAY,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC;QAC5H,UAAU,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC;KACrE,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './dynamodb-client.js';
2
+ export * from './eventbridge-client.js';
3
+ export * from './http-client.js';
4
+ export * from './s3-client.js';
5
+ export * from './cognito-client.js';
@@ -0,0 +1,6 @@
1
+ export * from './dynamodb-client.js';
2
+ export * from './eventbridge-client.js';
3
+ export * from './http-client.js';
4
+ export * from './s3-client.js';
5
+ export * from './cognito-client.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/generic/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ObjectCannedACL, S3 } from '@aws-sdk/client-s3';
2
+ export declare class S3Client {
3
+ s3: S3;
4
+ constructor(region?: string);
5
+ uploadJson(path: string, bucket: string, jsonData: any, ACL?: ObjectCannedACL | string): Promise<unknown>;
6
+ }
@@ -0,0 +1,25 @@
1
+ import { ObjectCannedACL, S3 } from '@aws-sdk/client-s3';
2
+ import * as log from 'lambda-log';
3
+ export class S3Client {
4
+ s3;
5
+ constructor(region = 'us-west-2') {
6
+ this.s3 = new S3({ region });
7
+ }
8
+ async uploadJson(path, bucket, jsonData, ACL = ObjectCannedACL.private) {
9
+ try {
10
+ const res = await this.s3.putObject({
11
+ ACL,
12
+ Bucket: bucket,
13
+ ContentType: 'application/json; charset=utf-8',
14
+ Body: JSON.stringify(jsonData),
15
+ Key: path
16
+ });
17
+ return res;
18
+ }
19
+ catch (error) {
20
+ log.error('Error in s3 upload json', { error });
21
+ return error;
22
+ }
23
+ }
24
+ }
25
+ //# sourceMappingURL=s3-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-client.js","sourceRoot":"","sources":["../../../src/clients/generic/s3-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAElC,MAAM,OAAO,QAAQ;IACnB,EAAE,CAAK;IAEP,YAAa,MAAM,GAAG,WAAW;QAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,MAAc,EAAE,QAAa,EAAE,MAAgC,eAAe,CAAC,OAAO;QACnH,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;gBAClC,GAAG;gBACH,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,iCAAiC;gBAC9C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC9B,GAAG,EAAE,IAAI;aACV,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC;SACd;IACH,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import { SQS } from '@aws-sdk/client-sqs';
2
+ export declare class SQSClient {
3
+ sqs: SQS;
4
+ queueUrl: string;
5
+ constructor(region: string, accountId: string, queueName: string);
6
+ buildAndSendEvent: (eventType: string, eventData: any, deplaySeconds?: number) => Promise<import("@aws-sdk/client-sqs").SendMessageCommandOutput>;
7
+ buildEvent: (eventType: string, eventData: any, eventId?: string, eventTime?: string) => {
8
+ eventId: string;
9
+ eventType: string;
10
+ eventTime: string;
11
+ eventData: any;
12
+ };
13
+ putEvent: (data: any, delaySeconds?: number) => Promise<import("@aws-sdk/client-sqs").SendMessageCommandOutput>;
14
+ }
@@ -0,0 +1,35 @@
1
+ import { SQS } from '@aws-sdk/client-sqs';
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ import { getCurrentTimestamp } from '../../libs/dates.js';
4
+ import * as log from 'lambda-log';
5
+ export class SQSClient {
6
+ sqs;
7
+ queueUrl;
8
+ constructor(region, accountId, queueName) {
9
+ this.sqs = new SQS({ region });
10
+ this.queueUrl = `https://sqs.${region}.amazonaws.com/${accountId}/${queueName}`;
11
+ }
12
+ buildAndSendEvent = async (eventType, eventData, deplaySeconds = 0) => {
13
+ const event = this.buildEvent(eventType, eventData);
14
+ return await this.putEvent(event, deplaySeconds);
15
+ };
16
+ buildEvent = (eventType, eventData, eventId = uuidv4(), eventTime = getCurrentTimestamp()) => {
17
+ return {
18
+ eventId,
19
+ eventType,
20
+ eventTime,
21
+ eventData
22
+ };
23
+ };
24
+ putEvent = async (data, delaySeconds = 0) => {
25
+ const params = {
26
+ QueueUrl: this.queueUrl,
27
+ DelaySeconds: delaySeconds,
28
+ MessageBody: JSON.stringify(data)
29
+ };
30
+ const response = await this.sqs.sendMessage(params);
31
+ log.debug('SQS Event Published', { queueUrl: this.queueUrl, event: data });
32
+ return response;
33
+ };
34
+ }
35
+ //# sourceMappingURL=sqs-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqs-client.js","sourceRoot":"","sources":["../../../src/clients/generic/sqs-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA2B,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAElC,MAAM,OAAO,SAAS;IACb,GAAG,CAAM;IACT,QAAQ,CAAS;IAExB,YAAa,MAAc,EAAE,SAAiB,EAAE,SAAiB;QAC/D,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,eAAe,MAAM,kBAAkB,SAAS,IAAI,SAAS,EAAE,CAAC;IAClF,CAAC;IAEM,iBAAiB,GAAG,KAAK,EAAE,SAAiB,EAAE,SAAc,EAAE,aAAa,GAAG,CAAC,EAAE,EAAE;QACxF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACpD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC,CAAC;IAEK,UAAU,GAAG,CAAC,SAAiB,EAAE,SAAc,EAAE,UAAkB,MAAM,EAAE,EAAE,YAAoB,mBAAmB,EAAE,EAAE,EAAE;QAC/H,OAAO;YACL,OAAO;YACP,SAAS;YACT,SAAS;YACT,SAAS;SACV,CAAC;IACJ,CAAC,CAAC;IAEK,QAAQ,GAAG,KAAK,EAAE,IAAS,EAAE,YAAY,GAAG,CAAC,EAAE,EAAE;QACtD,MAAM,MAAM,GAA4B;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAClC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAEnD,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3E,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;CAEH"}
@@ -0,0 +1,3 @@
1
+ export * from './generic/index.js';
2
+ export * from './internal-api/index.js';
3
+ export * from './third-party/index.js';
@@ -0,0 +1,4 @@
1
+ export * from './generic/index.js';
2
+ export * from './internal-api/index.js';
3
+ export * from './third-party/index.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC"}