@adtrackify/at-service-common 1.1.7 → 1.1.9
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/.editorconfig +12 -12
- package/.vscode/settings.json +9 -9
- package/bitbucket-pipelines.yml +20 -20
- package/dist/index.d.ts +20 -21
- package/dist/index.js +61321 -19
- package/dist/index.js.map +4 -4
- package/jest.config.ts +40 -40
- package/package.json +5 -3
- package/src/__tests__/helpers/subscription-helper.spec.ts +40 -40
- package/src/clients/generic/axios.d.ts +7 -7
- package/src/clients/generic/dynamodb-client.ts +126 -113
- package/src/clients/generic/eventbridge-client.ts +53 -52
- package/src/clients/internal-api/destinations-client.ts +58 -58
- package/src/clients/internal-api/index.ts +4 -4
- package/src/clients/internal-api/shopify-app-install-client.ts +66 -66
- package/src/clients/third-party/shopify-client.ts +139 -139
- package/src/helpers/index.ts +5 -5
- package/src/helpers/input-validation-helper.ts +21 -21
- package/src/helpers/shopify-helper.ts +39 -39
- package/src/index.ts +4 -4
- package/src/libs/index.ts +7 -7
- package/src/libs/url.ts +9 -9
- package/src/services/eventbridge-integration-service.ts +44 -44
- package/src/types/internal-events/event-detail-types.ts +9 -9
package/jest.config.ts
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
/*eslint-disable */
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
globals: {
|
|
5
|
-
'ts-jest': {
|
|
6
|
-
isolatedModules: true
|
|
7
|
-
},
|
|
8
|
-
'@swc/jest': {
|
|
9
|
-
isolatedModules: true
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
},
|
|
13
|
-
roots: [ '<rootDir>/src' ],
|
|
14
|
-
testRegex: '\\.spec\\.(js|ts)$',
|
|
15
|
-
transform: {
|
|
16
|
-
"^.+\\.(t|j)sx?$": [ "@swc/jest" ],
|
|
17
|
-
},
|
|
18
|
-
moduleFileExtensions: [ 'js', 'json', 'ts' ],
|
|
19
|
-
transformIgnorePatterns: [],
|
|
20
|
-
runner: 'groups',
|
|
21
|
-
verbose: false,
|
|
22
|
-
coverageThreshold: {
|
|
23
|
-
global: {
|
|
24
|
-
branches: 0,
|
|
25
|
-
functions: 0,
|
|
26
|
-
lines: 0,
|
|
27
|
-
statements: 0
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
coverageReporters: [ 'html', 'text', 'text-summary', 'cobertura' ],
|
|
31
|
-
reporters: [ 'default', 'jest-junit' ],
|
|
32
|
-
collectCoverageFrom: [
|
|
33
|
-
'src/**/*.ts',
|
|
34
|
-
'!src/**/*.spec.js',
|
|
35
|
-
'src/**/*.js',
|
|
36
|
-
'!src/**/*.spec.ts',
|
|
37
|
-
'!src/**/tests/**'
|
|
38
|
-
],
|
|
39
|
-
setupFilesAfterEnv: [],
|
|
40
|
-
};
|
|
1
|
+
/*eslint-disable */
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
globals: {
|
|
5
|
+
'ts-jest': {
|
|
6
|
+
isolatedModules: true
|
|
7
|
+
},
|
|
8
|
+
'@swc/jest': {
|
|
9
|
+
isolatedModules: true
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
},
|
|
13
|
+
roots: [ '<rootDir>/src' ],
|
|
14
|
+
testRegex: '\\.spec\\.(js|ts)$',
|
|
15
|
+
transform: {
|
|
16
|
+
"^.+\\.(t|j)sx?$": [ "@swc/jest" ],
|
|
17
|
+
},
|
|
18
|
+
moduleFileExtensions: [ 'js', 'json', 'ts' ],
|
|
19
|
+
transformIgnorePatterns: [],
|
|
20
|
+
runner: 'groups',
|
|
21
|
+
verbose: false,
|
|
22
|
+
coverageThreshold: {
|
|
23
|
+
global: {
|
|
24
|
+
branches: 0,
|
|
25
|
+
functions: 0,
|
|
26
|
+
lines: 0,
|
|
27
|
+
statements: 0
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
coverageReporters: [ 'html', 'text', 'text-summary', 'cobertura' ],
|
|
31
|
+
reporters: [ 'default', 'jest-junit' ],
|
|
32
|
+
collectCoverageFrom: [
|
|
33
|
+
'src/**/*.ts',
|
|
34
|
+
'!src/**/*.spec.js',
|
|
35
|
+
'src/**/*.js',
|
|
36
|
+
'!src/**/*.spec.ts',
|
|
37
|
+
'!src/**/tests/**'
|
|
38
|
+
],
|
|
39
|
+
setupFilesAfterEnv: [],
|
|
40
|
+
};
|
|
41
41
|
/*eslint-enable */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adtrackify/at-service-common",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.9",
|
|
4
4
|
"description": "",
|
|
5
5
|
"module": "./dist/index.js",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"modules": "esm",
|
|
9
9
|
"engines": {
|
|
10
10
|
"npm": ">=8.0.0 <9.0.0",
|
|
11
|
-
"node": ">=16.0.0 <
|
|
11
|
+
"node": ">=16.0.0 <18.14.2"
|
|
12
12
|
},
|
|
13
13
|
"scripts": {
|
|
14
14
|
"clean": "rimraf dist",
|
|
@@ -47,6 +47,9 @@
|
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@adtrackify/at-tracking-event-types": "^1.1.2",
|
|
50
|
+
"@aws-sdk/client-dynamodb": "^3.278.0",
|
|
51
|
+
"@aws-sdk/client-eventbridge": "^3.278.0",
|
|
52
|
+
"@aws-sdk/lib-dynamodb": "^3.279.0",
|
|
50
53
|
"@babel/cli": "^7.13.16",
|
|
51
54
|
"@babel/core": "^7.19.1",
|
|
52
55
|
"@babel/plugin-proposal-optional-chaining": "^7.13.8",
|
|
@@ -61,7 +64,6 @@
|
|
|
61
64
|
"@types/node": "^17.0.8",
|
|
62
65
|
"@typescript-eslint/eslint-plugin": "^5.37.0",
|
|
63
66
|
"@typescript-eslint/parser": "^5.37.0",
|
|
64
|
-
"aws-sdk": "^2.1217.0",
|
|
65
67
|
"core-js": "^3.25.1",
|
|
66
68
|
"cross-env": "^7.0.3",
|
|
67
69
|
"esbuild": "^0.14.54",
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* @group unit
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/* eslint-disable */
|
|
7
|
-
|
|
8
|
-
jest.mock('lambda-log');
|
|
9
|
-
import * as Logger from 'lambda-log';
|
|
10
|
-
import { getPlanDetails } from '../../helpers';
|
|
11
|
-
|
|
12
|
-
describe('postmark service email test', () => {
|
|
13
|
-
jest.spyOn(Logger, 'warn').mockImplementation(() => {
|
|
14
|
-
return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
|
|
15
|
-
});
|
|
16
|
-
jest.spyOn(Logger, 'info').mockImplementation(() => {
|
|
17
|
-
return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
|
|
18
|
-
});
|
|
19
|
-
jest.spyOn(Logger, 'debug').mockImplementation(() => {
|
|
20
|
-
return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
|
|
21
|
-
});
|
|
22
|
-
jest.spyOn(Logger, 'error').mockImplementation(() => {
|
|
23
|
-
return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
beforeEach(async () => {
|
|
27
|
-
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
afterEach(() => {
|
|
31
|
-
jest.resetAllMocks();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
it('should call send email message', async () => {
|
|
36
|
-
const plan = getPlanDetails(2, 'dev');
|
|
37
|
-
console.log(plan);
|
|
38
|
-
expect(plan).not.toEqual(null);
|
|
39
|
-
});
|
|
40
|
-
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @group unit
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/* eslint-disable */
|
|
7
|
+
|
|
8
|
+
jest.mock('lambda-log');
|
|
9
|
+
import * as Logger from 'lambda-log';
|
|
10
|
+
import { getPlanDetails } from '../../helpers';
|
|
11
|
+
|
|
12
|
+
describe('postmark service email test', () => {
|
|
13
|
+
jest.spyOn(Logger, 'warn').mockImplementation(() => {
|
|
14
|
+
return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
|
|
15
|
+
});
|
|
16
|
+
jest.spyOn(Logger, 'info').mockImplementation(() => {
|
|
17
|
+
return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
|
|
18
|
+
});
|
|
19
|
+
jest.spyOn(Logger, 'debug').mockImplementation(() => {
|
|
20
|
+
return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
|
|
21
|
+
});
|
|
22
|
+
jest.spyOn(Logger, 'error').mockImplementation(() => {
|
|
23
|
+
return new Logger.LogMessage({ level: 'null', msg: 'null' }, {});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
beforeEach(async () => {
|
|
27
|
+
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
afterEach(() => {
|
|
31
|
+
jest.resetAllMocks();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
it('should call send email message', async () => {
|
|
36
|
+
const plan = getPlanDetails(2, 'dev');
|
|
37
|
+
console.log(plan);
|
|
38
|
+
expect(plan).not.toEqual(null);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
41
|
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
declare module 'axios/lib/adapters/http' {
|
|
2
|
-
import { AxiosAdapter } from 'axios';
|
|
3
|
-
|
|
4
|
-
const httpAdapter: AxiosAdapter;
|
|
5
|
-
namespace httpAdapter { }
|
|
6
|
-
|
|
7
|
-
export = httpAdapter;
|
|
1
|
+
declare module 'axios/lib/adapters/http' {
|
|
2
|
+
import { AxiosAdapter } from 'axios';
|
|
3
|
+
|
|
4
|
+
const httpAdapter: AxiosAdapter;
|
|
5
|
+
namespace httpAdapter { }
|
|
6
|
+
|
|
7
|
+
export = httpAdapter;
|
|
8
8
|
}
|
|
@@ -1,114 +1,127 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import * as log from 'lambda-log';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
static
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
log.info('
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
1
|
+
import { DynamoDBClient, QueryOutput } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
|
|
3
|
+
import * as log from 'lambda-log';
|
|
4
|
+
|
|
5
|
+
const marshallOptions = {
|
|
6
|
+
convertEmptyValues: false,
|
|
7
|
+
removeUndefinedValues: false,
|
|
8
|
+
convertClassInstanceToMap: false
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const unmarshallOptions = {
|
|
12
|
+
wrapNumbers: false,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const translateConfig = { marshallOptions, unmarshallOptions };
|
|
16
|
+
const ddbClient = new DynamoDBClient({});
|
|
17
|
+
const client = DynamoDBDocument.from(ddbClient, translateConfig);
|
|
18
|
+
|
|
19
|
+
export class DynamoDbClient {
|
|
20
|
+
static safeGet = async (tableName: string, keyName: string, keyValue: any) => {
|
|
21
|
+
try {
|
|
22
|
+
const params = {
|
|
23
|
+
TableName: tableName,
|
|
24
|
+
Key: {
|
|
25
|
+
[ keyName ]: keyValue
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const res = await client.get(params);
|
|
29
|
+
return res?.Item ?? null;
|
|
30
|
+
} catch (e: any) {
|
|
31
|
+
log.error(e, { message: 'Dynamo Client Get Failed' });
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
static safePut = async (tableName: string, data: any) => {
|
|
37
|
+
try {
|
|
38
|
+
const params = {
|
|
39
|
+
TableName: tableName,
|
|
40
|
+
Item: data
|
|
41
|
+
};
|
|
42
|
+
const res = await client.put(params);
|
|
43
|
+
return res;
|
|
44
|
+
} catch (e: any) {
|
|
45
|
+
log.error(e, { message: 'Dynamo failed simplePut' });
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
static safeDelete = async (tableName: string, keyName: string, keyValue: any) => {
|
|
51
|
+
try {
|
|
52
|
+
const params = {
|
|
53
|
+
TableName: tableName,
|
|
54
|
+
Key: {
|
|
55
|
+
[ keyName ]: keyValue
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const res = await client.delete(params);
|
|
59
|
+
return res;
|
|
60
|
+
} catch (e: any) {
|
|
61
|
+
log.error(e, { message: 'Dynamo failed safeDelete' });
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
static safeQueryByGSI = async (tableName: string, gsiName: string, keyName: string, keyValue: any) => {
|
|
67
|
+
const query = {
|
|
68
|
+
TableName: tableName,
|
|
69
|
+
IndexName: gsiName,
|
|
70
|
+
KeyConditionExpression: `${keyName} = :value`,
|
|
71
|
+
ExpressionAttributeValues: {
|
|
72
|
+
':value': keyValue
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const results = await DynamoDbClient.queryAll(query);
|
|
76
|
+
return results;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
static safeBatchGet = async (tableName: string, keys: any) => {
|
|
80
|
+
try {
|
|
81
|
+
const params: any = {
|
|
82
|
+
RequestItems: {}
|
|
83
|
+
};
|
|
84
|
+
params.RequestItems[ tableName ] = {
|
|
85
|
+
Keys: keys
|
|
86
|
+
};
|
|
87
|
+
const res = await client.batchGet(params);
|
|
88
|
+
log.info('batchget res', { batchGetRes: res });
|
|
89
|
+
if (res?.Responses?.[ tableName ]) {
|
|
90
|
+
return res?.Responses?.[ tableName ];
|
|
91
|
+
}
|
|
92
|
+
return [];
|
|
93
|
+
} catch (e: any) {
|
|
94
|
+
log.error(e, { message: 'Dynamo failed safeBatchGet' });
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
static queryAll = async (params: any) => {
|
|
100
|
+
try {
|
|
101
|
+
log.info('Invoke Query All', { params });
|
|
102
|
+
let currentResult: QueryOutput, exclusiveStartKey;
|
|
103
|
+
let accumulatedResults: any[] = [];
|
|
104
|
+
do {
|
|
105
|
+
params.ExclusiveStartKey = exclusiveStartKey;
|
|
106
|
+
params.Limit = 200;
|
|
107
|
+
currentResult = await client.query(params);
|
|
108
|
+
if (currentResult.Items) {
|
|
109
|
+
exclusiveStartKey = currentResult.LastEvaluatedKey;
|
|
110
|
+
accumulatedResults = [ ...accumulatedResults, ...currentResult.Items ];
|
|
111
|
+
}
|
|
112
|
+
} while (currentResult.Items && currentResult.Items.length > 0 && currentResult.LastEvaluatedKey);
|
|
113
|
+
return accumulatedResults;
|
|
114
|
+
} catch (e: any) {
|
|
115
|
+
log.error(e, { message: 'Dynamo failed queryAll' });
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
static batchGet = (params: any) => client.batchGet(params);
|
|
121
|
+
static get = (params: any) => client.get(params);
|
|
122
|
+
static put = (params: any) => client.put(params);
|
|
123
|
+
static query = (params: any) => client.query(params);
|
|
124
|
+
static scan = (params: any) => client.scan(params);
|
|
125
|
+
static update = (params: any) => client.update(params);
|
|
126
|
+
static delete = (params: any) => client.delete(params);
|
|
114
127
|
}
|
|
@@ -1,52 +1,53 @@
|
|
|
1
|
-
import { EventBridge } from 'aws-sdk';
|
|
2
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
3
|
-
import { getCurrentTimestamp } from '../../libs/dates';
|
|
4
|
-
import * as log from 'lambda-log';
|
|
5
|
-
|
|
6
|
-
export class EventBridgeClient {
|
|
7
|
-
public eventBridge: EventBridge;
|
|
8
|
-
public EVENT_BUS_NAME: string;
|
|
9
|
-
|
|
10
|
-
constructor (eventBusName: string) {
|
|
11
|
-
this.eventBridge = new EventBridge();
|
|
12
|
-
this.EVENT_BUS_NAME = eventBusName;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
public buildAndSendEvent = async (eventSource: string, eventType: string, eventData: any) => {
|
|
16
|
-
const event = this.buildEvent(eventType, eventData);
|
|
17
|
-
return await this.putEvent(eventSource, eventType, event);
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
public buildEvent = (eventType: string, eventData: any, eventId: string = uuidv4(), eventTime: string = getCurrentTimestamp()) => {
|
|
21
|
-
return {
|
|
22
|
-
eventId,
|
|
23
|
-
eventType,
|
|
24
|
-
eventTime,
|
|
25
|
-
eventData
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
public putEvent = async (source: string, detailType: string, data: any, headers: any = null) => {
|
|
30
|
-
const params = {
|
|
31
|
-
Entries: [ {
|
|
32
|
-
Detail: JSON.stringify({ headers, data }),
|
|
33
|
-
DetailType: detailType,
|
|
34
|
-
EventBusName: this.EVENT_BUS_NAME,
|
|
35
|
-
Source: source,
|
|
36
|
-
Time: new Date(),
|
|
37
|
-
} ],
|
|
38
|
-
};
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
1
|
+
import { EventBridgeClient as EventBridge, PutEventsCommand, PutEventsCommandInput } from '@aws-sdk/client-eventbridge';
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
3
|
+
import { getCurrentTimestamp } from '../../libs/dates';
|
|
4
|
+
import * as log from 'lambda-log';
|
|
5
|
+
|
|
6
|
+
export class EventBridgeClient {
|
|
7
|
+
public eventBridge: EventBridge;
|
|
8
|
+
public EVENT_BUS_NAME: string;
|
|
9
|
+
|
|
10
|
+
constructor (eventBusName: string) {
|
|
11
|
+
this.eventBridge = new EventBridge({});
|
|
12
|
+
this.EVENT_BUS_NAME = eventBusName;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public buildAndSendEvent = async (eventSource: string, eventType: string, eventData: any) => {
|
|
16
|
+
const event = this.buildEvent(eventType, eventData);
|
|
17
|
+
return await this.putEvent(eventSource, eventType, event);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
public buildEvent = (eventType: string, eventData: any, eventId: string = uuidv4(), eventTime: string = getCurrentTimestamp()) => {
|
|
21
|
+
return {
|
|
22
|
+
eventId,
|
|
23
|
+
eventType,
|
|
24
|
+
eventTime,
|
|
25
|
+
eventData
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
public putEvent = async (source: string, detailType: string, data: any, headers: any = null) => {
|
|
30
|
+
const params: PutEventsCommandInput = {
|
|
31
|
+
Entries: [ {
|
|
32
|
+
Detail: JSON.stringify({ headers, data }),
|
|
33
|
+
DetailType: detailType,
|
|
34
|
+
EventBusName: this.EVENT_BUS_NAME,
|
|
35
|
+
Source: source,
|
|
36
|
+
Time: new Date(),
|
|
37
|
+
} ],
|
|
38
|
+
};
|
|
39
|
+
const putEventscommand = new PutEventsCommand(params);
|
|
40
|
+
const response = await this.eventBridge.send(putEventscommand);
|
|
41
|
+
log.debug('EventBus Event Published',
|
|
42
|
+
{
|
|
43
|
+
eventBusName: this.EVENT_BUS_NAME,
|
|
44
|
+
eventSource: source,
|
|
45
|
+
eventType: detailType,
|
|
46
|
+
event: data,
|
|
47
|
+
response
|
|
48
|
+
});
|
|
49
|
+
return response;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
|