@gus-eip/loggers 4.2.7 → 4.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.
package/README.md CHANGED
@@ -1,92 +1,92 @@
1
- # @gus-eip/loggers
2
-
3
- ## Overview
4
-
5
- `@gus-eip/loggers` is a package designed to provide logging functionality for your Node.js applications. It offers integration with various logging services, including CloudWatchLogger.
6
-
7
- ## Installation
8
-
9
- You can install the package via npm:
10
-
11
- ```bash
12
- npm install @gus-eip/loggers
13
- ```
14
-
15
- ## Usage
16
-
17
- To use the logger module in your application, follow these steps:
18
-
19
- 1. Import `LoggerModule` from `@gus-eip/loggers` inside your module.
20
-
21
- ```javascript
22
- import { LoggerModule } from '@gus-eip/loggers';
23
- ```
24
-
25
- 2. Configure `LoggerModule` in your module by calling the `forRoot` method.
26
-
27
- ```javascript
28
- LoggerModule.forRoot({
29
- region: process.env.REGION,
30
- logGroupName: process.env.LOGGER_LOG_GROUP_NAME,
31
- options: 'CloudWatchLogger',
32
- }),
33
- ```
34
-
35
- Ensure you provide the necessary environment variables (`REGION` and `LOGGER_LOG_GROUP_NAME`) for configuration.
36
-
37
- ## Configuration Options
38
-
39
- - `region`: The AWS region where your CloudWatch logs are located.
40
- - `logGroupName`: The name of the log group where logs will be sent.
41
- - `options`: The options for the logger. Currently, only `'CloudWatchLogger'` is supported.
42
-
43
- ## Example
44
-
45
- ```javascript
46
- import { Module } from '@nestjs/common';
47
- import { LoggerModule } from '@gus-eip/loggers';
48
-
49
- @Module({
50
- imports: [
51
- LoggerModule.forRoot({
52
- region: process.env.REGION,
53
- logGroupName: process.env.LOGGER_LOG_GROUP_NAME,
54
- options: 'CloudWatchLogger',
55
- }),
56
- ],
57
- })
58
- export class AppModule {}
59
- ```
60
-
61
- ```
62
- This repository requires AWS SSM Parameter Store access to retrieve the SQS URL dynamically. Ensure that the application has permission to read LOGGER_SQS_URL.
63
-
64
- ```
65
-
66
- ## License
67
-
68
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
69
-
70
- ---
71
-
72
- ## OAP-EIP LOGGER
73
-
74
- Whenever any EIP integration (for example: `oap-handlers`, `oap-backend`, `eip-integration-handlers`, `platform-events-listener`, or `gus-middleware-service`) introduces a new use case, event, or component, follow these steps to keep this package as the single source of truth for EIP logging:
75
-
76
- 1. Add the new use case, event and component identifiers to `enum.ts`.
77
-
78
- 2. Add a user-friendly message/label for the use case in `mappings/usecase-mapping.ts`.
79
-
80
- 3. Update `mappings/source-destination-mapping.ts` to include the use case and the corresponding brand(s) with their `source` and `destination` values. If the use case already exists and a newly onboarded brand uses it, add the brand under that existing use case entry.
81
-
82
- Notes:
83
-
84
- - The `mappings/source-destination-mapping.ts` file is the ultimate source of truth for EIP logger routing and should accurately reflect brand → use case → (source, destination) mappings.
85
- - Keep `enum.ts` identifiers stable. Prefer adding new identifiers rather than renaming existing ones to avoid breaking downstream projects.
86
-
87
- Publishing and downstream updates:
88
-
89
- - After making changes, bump and publish this package.
90
- - Then update the dependency version used by the `gus-eip-analytics` repository: set the new package version in the `dev` branch for development deployments and in the `prod` branch for production deployments so downstream services pick up the release.
91
-
92
- ---
1
+ # @gus-eip/loggers
2
+
3
+ ## Overview
4
+
5
+ `@gus-eip/loggers` is a package designed to provide logging functionality for your Node.js applications. It offers integration with various logging services, including CloudWatchLogger.
6
+
7
+ ## Installation
8
+
9
+ You can install the package via npm:
10
+
11
+ ```bash
12
+ npm install @gus-eip/loggers
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ To use the logger module in your application, follow these steps:
18
+
19
+ 1. Import `LoggerModule` from `@gus-eip/loggers` inside your module.
20
+
21
+ ```javascript
22
+ import { LoggerModule } from '@gus-eip/loggers';
23
+ ```
24
+
25
+ 2. Configure `LoggerModule` in your module by calling the `forRoot` method.
26
+
27
+ ```javascript
28
+ LoggerModule.forRoot({
29
+ region: process.env.REGION,
30
+ logGroupName: process.env.LOGGER_LOG_GROUP_NAME,
31
+ options: 'CloudWatchLogger',
32
+ }),
33
+ ```
34
+
35
+ Ensure you provide the necessary environment variables (`REGION` and `LOGGER_LOG_GROUP_NAME`) for configuration.
36
+
37
+ ## Configuration Options
38
+
39
+ - `region`: The AWS region where your CloudWatch logs are located.
40
+ - `logGroupName`: The name of the log group where logs will be sent.
41
+ - `options`: The options for the logger. Currently, only `'CloudWatchLogger'` is supported.
42
+
43
+ ## Example
44
+
45
+ ```javascript
46
+ import { Module } from '@nestjs/common';
47
+ import { LoggerModule } from '@gus-eip/loggers';
48
+
49
+ @Module({
50
+ imports: [
51
+ LoggerModule.forRoot({
52
+ region: process.env.REGION,
53
+ logGroupName: process.env.LOGGER_LOG_GROUP_NAME,
54
+ options: 'CloudWatchLogger',
55
+ }),
56
+ ],
57
+ })
58
+ export class AppModule {}
59
+ ```
60
+
61
+ ```
62
+ This repository requires AWS SSM Parameter Store access to retrieve the SQS URL dynamically. Ensure that the application has permission to read LOGGER_SQS_URL.
63
+
64
+ ```
65
+
66
+ ## License
67
+
68
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
69
+
70
+ ---
71
+
72
+ ## OAP-EIP LOGGER
73
+
74
+ Whenever any EIP integration (for example: `oap-handlers`, `oap-backend`, `eip-integration-handlers`, `platform-events-listener`, or `gus-middleware-service`) introduces a new use case, event, or component, follow these steps to keep this package as the single source of truth for EIP logging:
75
+
76
+ 1. Add the new use case, event and component identifiers to `enum.ts`.
77
+
78
+ 2. Add a user-friendly message/label for the use case in `mappings/usecase-mapping.ts`.
79
+
80
+ 3. Update `mappings/source-destination-mapping.ts` to include the use case and the corresponding brand(s) with their `source` and `destination` values. If the use case already exists and a newly onboarded brand uses it, add the brand under that existing use case entry.
81
+
82
+ Notes:
83
+
84
+ - The `mappings/source-destination-mapping.ts` file is the ultimate source of truth for EIP logger routing and should accurately reflect brand → use case → (source, destination) mappings.
85
+ - Keep `enum.ts` identifiers stable. Prefer adding new identifiers rather than renaming existing ones to avoid breaking downstream projects.
86
+
87
+ Publishing and downstream updates:
88
+
89
+ - After making changes, bump and publish this package.
90
+ - Then update the dependency version used by the `gus-eip-analytics` repository: set the new package version in the `dev` branch for development deployments and in the `prod` branch for production deployments so downstream services pick up the release.
91
+
92
+ ---
@@ -152,9 +152,7 @@ let CloudWatchLoggerService = class CloudWatchLoggerService {
152
152
  entityKey: fullLogObject.entityKey || '',
153
153
  event: fullLogObject.event || '',
154
154
  status,
155
- message: type === 'error'
156
- ? fullLogObject.errorMessage
157
- : fullLogObject.logMessage,
155
+ message: type === 'error' ? fullLogObject.errorMessage : fullLogObject.logMessage,
158
156
  logGroupName: this.logGroupName,
159
157
  };
160
158
  const sqsUrl = await ssm_utils_1.ssmUtils.getSqsUrl();
@@ -201,114 +199,40 @@ let CloudWatchLoggerService = class CloudWatchLoggerService {
201
199
  : typeof summary === 'object'
202
200
  ? JSON.stringify(summary)
203
201
  : summary;
204
- const awsLogUrl = `https://eu-west-1.console.aws.amazon.com/cloudwatch/home?region=eu-west-1#logsV2:log-groups/log-group/${this.logGroupName}/log-events/${logStreamName}`;
205
- const isPowerAutomate = webhookUrl.includes('powerautomate');
206
- const alertMessage = isPowerAutomate
207
- ? {
208
- attachments: [
209
- {
210
- contentType: 'application/vnd.microsoft.card.adaptive',
211
- content: {
212
- type: 'AdaptiveCard',
213
- version: '1.4',
214
- body: [
215
- {
216
- type: 'TextBlock',
217
- text: `🚨 ${title} 🚨`,
218
- weight: 'Bolder',
219
- size: 'Large',
220
- color: type === 'Error'
221
- ? 'Attention'
222
- : type === 'Warning'
223
- ? 'Warning'
224
- : 'Good',
225
- },
226
- {
227
- type: 'TextBlock',
228
- text: `Handler: ${handler}`,
229
- wrap: true,
230
- },
231
- {
232
- type: 'TextBlock',
233
- text: `Timestamp: ${timestamp}`,
234
- wrap: true,
235
- },
236
- {
237
- type: 'TextBlock',
238
- text: `Type: ${type}`,
239
- wrap: true,
240
- },
241
- {
242
- type: 'Container',
243
- items: summary.map((item) => ({
244
- type: 'Container',
245
- items: Object.entries(item).map(([key, value]) => ({
246
- type: 'ColumnSet',
247
- columns: [
248
- {
249
- type: 'Column',
250
- width: 'auto',
251
- items: [
252
- {
253
- type: 'TextBlock',
254
- text: key,
255
- weight: 'Bolder',
256
- wrap: true,
257
- },
258
- ],
259
- },
260
- {
261
- type: 'Column',
262
- width: 'stretch',
263
- items: [
264
- {
265
- type: 'TextBlock',
266
- text: typeof value === 'object'
267
- ? JSON.stringify(value, null, 2)
268
- : String(value !== null && value !== void 0 ? value : ''),
269
- wrap: true,
270
- },
271
- ],
272
- },
273
- ],
274
- })),
275
- separator: true,
276
- })),
277
- },
278
- ],
279
- actions: [
280
- {
281
- type: 'Action.OpenUrl',
282
- title: '🔍 View AWS Logs',
283
- url: awsLogUrl,
284
- },
285
- ],
202
+ const alertMessage = {
203
+ '@type': 'MessageCard',
204
+ '@context': 'http://schema.org/extensions',
205
+ summary: 'System Alert',
206
+ themeColor: 'FF0000',
207
+ title: `🚨 ${title} 🚨`,
208
+ sections: [
209
+ {
210
+ facts: [
211
+ {
212
+ name: 'summary:',
213
+ value: summaryMsg,
286
214
  },
287
- },
288
- ],
289
- }
290
- : {
291
- '@type': 'MessageCard',
292
- '@context': 'http://schema.org/extensions',
293
- summary: 'System Alert',
294
- themeColor: 'FF0000',
295
- title: `🚨 ${title} 🚨`,
296
- sections: [
297
- {
298
- facts: [
299
- { name: 'summary:', value: summaryMsg },
300
- { name: 'component:', value: handler },
301
- { name: 'timestamp:', value: timestamp },
302
- { name: 'type:', value: type },
303
- {
304
- name: '',
305
- value: `[Click here for more details](${awsLogUrl})`,
306
- },
307
- ],
308
- markdown: true,
309
- },
310
- ],
311
- };
215
+ {
216
+ name: 'component:',
217
+ value: handler,
218
+ },
219
+ {
220
+ name: 'timestamp:',
221
+ value: timestamp,
222
+ },
223
+ {
224
+ name: 'type:',
225
+ value: type,
226
+ },
227
+ {
228
+ name: '',
229
+ value: `[Click here for more details](https://eu-west-1.console.aws.amazon.com/cloudwatch/home?region=eu-west-1#logsV2:log-groups/log-group/${this.logGroupName}/log-events/${logStreamName})`,
230
+ },
231
+ ],
232
+ markdown: true,
233
+ },
234
+ ],
235
+ };
312
236
  try {
313
237
  await axios_1.default.post(webhookUrl, alertMessage, {
314
238
  headers: {
@@ -272,6 +272,90 @@ exports.BRAND_USECASE_MAPPING = [
272
272
  source: 'OAP',
273
273
  destination: 'GUS Salesforce',
274
274
  },
275
+ {
276
+ brands: ['UNFC'],
277
+ usecase: 'GUS_NEW_APPLICATION',
278
+ source: 'GUS Salesforce',
279
+ destination: 'Ellucian',
280
+ },
281
+ {
282
+ brands: ['UNFC'],
283
+ usecase: 'GUS_NEW_DOCUMENT',
284
+ source: 'Gus Salesforce',
285
+ destination: 'TeamIA'
286
+ },
287
+ {
288
+ brands: ['UNFC'],
289
+ usecase: 'GUS_DOCUMENT_UPDATE',
290
+ source: 'Gus Salesforce',
291
+ destination: 'TeamIA'
292
+ },
293
+ {
294
+ brands: ['UNFC'],
295
+ usecase: 'GUS_CLARIFICATION_SUBMITTED',
296
+ source: 'Gus Salesforce',
297
+ destination: 'Ellucian'
298
+ },
299
+ {
300
+ brands: ['UNFC'],
301
+ usecase: 'UNFC_WITHDRAWN_APPLICATION',
302
+ source: 'Ellucian',
303
+ destination: 'Gus Salesforce'
304
+ },
305
+ {
306
+ brands: ['UNFC'],
307
+ usecase: 'UNFC_DENIED_APPLICATION',
308
+ source: 'Ellucian',
309
+ destination: 'Gus Salesforce'
310
+ },
311
+ {
312
+ brands: ['UNFC'],
313
+ usecase: 'UNFC_FURTHER_CLARIFICATION_REQUIRED',
314
+ source: 'Ellucian',
315
+ destination: 'Gus Salesforce'
316
+ },
317
+ {
318
+ brands: ['UNFC'],
319
+ usecase: 'UNFC_OFFER_APPROVED',
320
+ source: 'Ellucian + TeamIA',
321
+ destination: 'Gus Salesforce'
322
+ },
323
+ {
324
+ brands: ['UNFC'],
325
+ usecase: 'UNFC_REGISTRATION',
326
+ source: 'Ellucian',
327
+ destination: 'Gus Salesforce'
328
+ },
329
+ {
330
+ brands: ['UNFC'],
331
+ usecase: 'UNFC_APPLICATION_DEFERRED',
332
+ source: 'Ellucian',
333
+ destination: 'Gus Salesforce'
334
+ },
335
+ {
336
+ brands: ['UNFC'],
337
+ usecase: 'UNFC_DEPOSIT_CONFIRMED',
338
+ source: 'Ellucian + TeamIA',
339
+ destination: 'Gus Salesforce'
340
+ },
341
+ {
342
+ brands: ['UNFC'],
343
+ usecase: 'UNFC_APPLICATION_ASSESSMENT',
344
+ source: 'Ellucian',
345
+ destination: 'Gus Salesforce'
346
+ },
347
+ {
348
+ brands: ['UNFC'],
349
+ usecase: 'UNFC_APPEALS_COMMITTEE',
350
+ source: 'Ellucian',
351
+ destination: 'Gus Salesforce'
352
+ },
353
+ {
354
+ brands: ['UNFC'],
355
+ usecase: 'UNFC_VISA_GRANTED',
356
+ source: 'Ellucian',
357
+ destination: 'Gus Salesforce'
358
+ },
275
359
  {
276
360
  brands: ['HZU'],
277
361
  usecase: 'GUS_NEW_APPLICATION',
package/package.json CHANGED
@@ -1,79 +1,79 @@
1
- {
2
- "name": "@gus-eip/loggers",
3
- "version": "4.2.7",
4
- "description": "@gus-eip/loggers is a package designed to provide logging functionality for your Node.js applications.",
5
- "author": "gus",
6
- "readmeFilename": "README.md",
7
- "main": "dist/index.js",
8
- "files": [
9
- "dist/**/*",
10
- "*.md"
11
- ],
12
- "scripts": {
13
- "start:dev": "tsc -w",
14
- "build": "tsc",
15
- "prepare": "npm run build",
16
- "format": "prettier --write \"src/**/*.ts\"",
17
- "lint": "tslint -p tsconfig.json -c tslint.json",
18
- "test": "node --experimental-vm-modules ./node_modules/.bin/jest",
19
- "test:watch": "jest --watch",
20
- "test:cov": "jest --coverage",
21
- "test:e2e": "jest --config ./test/jest-e2e.json"
22
- },
23
- "keywords": [
24
- "nestjs",
25
- "nodejs",
26
- "javascript",
27
- "typescript",
28
- "eip-loggers"
29
- ],
30
- "publishConfig": {
31
- "access": "public"
32
- },
33
- "dependencies": {
34
- "@aws-sdk/client-ssm": "^3.759.0",
35
- "aws-sdk": "^2.1590.0",
36
- "axios": "^1.7.4"
37
- },
38
- "devDependencies": {
39
- "@nestjs/common": "^10.0.2",
40
- "@nestjs/core": "^10.0.2",
41
- "@nestjs/platform-express": "^10.0.2",
42
- "@nestjs/testing": "10.0.2",
43
- "@types/express": "4.17.17",
44
- "@types/jest": "29.5.2",
45
- "@types/lodash": "^4.17.7",
46
- "@types/node": "20.3.1",
47
- "@types/supertest": "2.0.12",
48
- "@typescript-eslint/eslint-plugin": "^5.60.0",
49
- "@typescript-eslint/parser": "^5.60.0",
50
- "eslint": "^8.43.0",
51
- "eslint-config-prettier": "^8.8.0",
52
- "eslint-plugin-prettier": "^4.2.1",
53
- "jest": "29.5.0",
54
- "prettier": "2.8.8",
55
- "reflect-metadata": "^0.1.13",
56
- "rxjs": "^7.8.1",
57
- "supertest": "6.3.3",
58
- "ts-jest": "29.1.0",
59
- "ts-node": "10.9.1",
60
- "tsc-watch": "6.0.4",
61
- "tsconfig-paths": "4.2.0",
62
- "tslint": "5.20.1",
63
- "typescript": "^5.5.4"
64
- },
65
- "jest": {
66
- "moduleFileExtensions": [
67
- "js",
68
- "json",
69
- "ts"
70
- ],
71
- "rootDir": "src",
72
- "testRegex": ".spec.ts$",
73
- "transform": {
74
- "^.+\\.(t|j)s$": "ts-jest"
75
- },
76
- "coverageDirectory": "../coverage",
77
- "testEnvironment": "node"
78
- }
79
- }
1
+ {
2
+ "name": "@gus-eip/loggers",
3
+ "version": "4.2.8",
4
+ "description": "@gus-eip/loggers is a package designed to provide logging functionality for your Node.js applications.",
5
+ "author": "gus",
6
+ "readmeFilename": "README.md",
7
+ "main": "dist/index.js",
8
+ "files": [
9
+ "dist/**/*",
10
+ "*.md"
11
+ ],
12
+ "scripts": {
13
+ "start:dev": "tsc -w",
14
+ "build": "tsc",
15
+ "prepare": "npm run build",
16
+ "format": "prettier --write \"src/**/*.ts\"",
17
+ "lint": "tslint -p tsconfig.json -c tslint.json",
18
+ "test": "node --experimental-vm-modules ./node_modules/.bin/jest",
19
+ "test:watch": "jest --watch",
20
+ "test:cov": "jest --coverage",
21
+ "test:e2e": "jest --config ./test/jest-e2e.json"
22
+ },
23
+ "keywords": [
24
+ "nestjs",
25
+ "nodejs",
26
+ "javascript",
27
+ "typescript",
28
+ "eip-loggers"
29
+ ],
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "dependencies": {
34
+ "@aws-sdk/client-ssm": "^3.759.0",
35
+ "aws-sdk": "^2.1590.0",
36
+ "axios": "^1.7.4"
37
+ },
38
+ "devDependencies": {
39
+ "@nestjs/common": "^10.0.2",
40
+ "@nestjs/core": "^10.0.2",
41
+ "@nestjs/platform-express": "^10.0.2",
42
+ "@nestjs/testing": "10.0.2",
43
+ "@types/express": "4.17.17",
44
+ "@types/jest": "29.5.2",
45
+ "@types/lodash": "^4.17.7",
46
+ "@types/node": "20.3.1",
47
+ "@types/supertest": "2.0.12",
48
+ "@typescript-eslint/eslint-plugin": "^5.60.0",
49
+ "@typescript-eslint/parser": "^5.60.0",
50
+ "eslint": "^8.43.0",
51
+ "eslint-config-prettier": "^8.8.0",
52
+ "eslint-plugin-prettier": "^4.2.1",
53
+ "jest": "29.5.0",
54
+ "prettier": "2.8.8",
55
+ "reflect-metadata": "^0.1.13",
56
+ "rxjs": "^7.8.1",
57
+ "supertest": "6.3.3",
58
+ "ts-jest": "29.1.0",
59
+ "ts-node": "10.9.1",
60
+ "tsc-watch": "6.0.4",
61
+ "tsconfig-paths": "4.2.0",
62
+ "tslint": "5.20.1",
63
+ "typescript": "^5.5.4"
64
+ },
65
+ "jest": {
66
+ "moduleFileExtensions": [
67
+ "js",
68
+ "json",
69
+ "ts"
70
+ ],
71
+ "rootDir": "src",
72
+ "testRegex": ".spec.ts$",
73
+ "transform": {
74
+ "^.+\\.(t|j)s$": "ts-jest"
75
+ },
76
+ "coverageDirectory": "../coverage",
77
+ "testEnvironment": "node"
78
+ }
79
+ }
package/dist/test.d.ts DELETED
@@ -1,2 +0,0 @@
1
- declare const axios: any;
2
- declare function sendNotificationtoTeams(title: any, summary: any, handler: any, logStreamName: any, isFormattingRequired: boolean, type: any): Promise<any>;
package/dist/test.js DELETED
@@ -1,168 +0,0 @@
1
- const axios = require('axios');
2
- async function sendNotificationtoTeams(title, summary, handler, logStreamName, isFormattingRequired = true, type) {
3
- console.log('Notification summary', summary);
4
- const webhookUrl = 'https://gus.webhook.office.com/webhookb2/a7847242-acac-4b2e-9d64-a3818681a2ec@5665ee7a-3634-4975-9c21-2778cda48edd/IncomingWebhook/6b32fef8240843359b1b3e902fb4d716/e06d3c50-7be6-44a2-87e7-48a4696d8297/V26sOW3X1erzRoeQSKP8rq1toiHD1Qtr41icu1ZxSHyh01';
5
- const timestamp = new Date().toISOString();
6
- let headers;
7
- let headerRow;
8
- let separatorRow;
9
- let rows;
10
- let formattedSummary;
11
- if (isFormattingRequired) {
12
- headers = Object.keys(summary[0]);
13
- headerRow = `| ${headers.join(' | ')} |`;
14
- separatorRow = `| ${headers.map(() => '---').join(' | ')} |`;
15
- rows = summary
16
- .map((item) => `| ${headers.map((header) => item[header] || '').join(' | ')} |`)
17
- .join('\n');
18
- formattedSummary = [headerRow, separatorRow, rows].join('\n');
19
- }
20
- const summaryMsg = isFormattingRequired
21
- ? formattedSummary
22
- : typeof summary === 'object'
23
- ? JSON.stringify(summary)
24
- : summary;
25
- const awsLogUrl = `https://eu-west-1.console.aws.amazon.com/cloudwatch/home?region=eu-west-1#logsV2:log-groups/log-group/${this.logGroupName}/log-events/${logStreamName}`;
26
- const isPowerAutomate = webhookUrl.includes('powerautomate');
27
- const alertMessage = isPowerAutomate
28
- ? {
29
- attachments: [
30
- {
31
- contentType: 'application/vnd.microsoft.card.adaptive',
32
- content: {
33
- type: 'AdaptiveCard',
34
- version: '1.4',
35
- body: [
36
- {
37
- type: 'TextBlock',
38
- text: `🚨 ${title} 🚨`,
39
- weight: 'Bolder',
40
- size: 'Large',
41
- color: type === 'Error'
42
- ? 'Attention'
43
- : type === 'Warning'
44
- ? 'Warning'
45
- : 'Good',
46
- },
47
- {
48
- type: 'TextBlock',
49
- text: `Handler: ${handler}`,
50
- wrap: true,
51
- },
52
- {
53
- type: 'TextBlock',
54
- text: `Timestamp: ${timestamp}`,
55
- wrap: true,
56
- },
57
- {
58
- type: 'TextBlock',
59
- text: `Type: ${type}`,
60
- wrap: true,
61
- },
62
- {
63
- type: 'Container',
64
- items: summary.map((item) => ({
65
- type: 'Container',
66
- items: Object.entries(item).map(([key, value]) => ({
67
- type: 'ColumnSet',
68
- columns: [
69
- {
70
- type: 'Column',
71
- width: 'auto',
72
- items: [
73
- {
74
- type: 'TextBlock',
75
- text: key,
76
- weight: 'Bolder',
77
- wrap: true,
78
- },
79
- ],
80
- },
81
- {
82
- type: 'Column',
83
- width: 'stretch',
84
- items: [
85
- {
86
- type: 'TextBlock',
87
- text: typeof value === 'object'
88
- ? JSON.stringify(value, null, 2)
89
- : String(value !== null && value !== void 0 ? value : ''),
90
- wrap: true,
91
- },
92
- ],
93
- },
94
- ],
95
- })),
96
- separator: true,
97
- })),
98
- },
99
- ],
100
- actions: [
101
- {
102
- type: 'Action.OpenUrl',
103
- title: '🔍 View AWS Logs',
104
- url: awsLogUrl,
105
- },
106
- ],
107
- },
108
- },
109
- ],
110
- }
111
- : {
112
- '@type': 'MessageCard',
113
- '@context': 'http://schema.org/extensions',
114
- summary: 'System Alert',
115
- themeColor: type === 'Error'
116
- ? 'FF0000'
117
- : type === 'Warning'
118
- ? 'FFFF00'
119
- : '00FF00',
120
- title: `🚨 ${title} 🚨`,
121
- sections: [
122
- {
123
- facts: [
124
- { name: 'summary:', value: summaryMsg },
125
- { name: 'component:', value: handler },
126
- { name: 'timestamp:', value: timestamp },
127
- { name: 'type:', value: type },
128
- {
129
- name: '',
130
- value: `[Click here for more details](${awsLogUrl})`,
131
- },
132
- ],
133
- markdown: true,
134
- },
135
- ],
136
- };
137
- try {
138
- await axios.post(webhookUrl, alertMessage, {
139
- headers: {
140
- 'Content-Type': 'application/json',
141
- },
142
- });
143
- console.log('Message sent successfully');
144
- }
145
- catch (error) {
146
- console.error('Error sending message:', error);
147
- }
148
- }
149
- (async () => {
150
- await sendNotificationtoTeams('Test Alert', [
151
- {
152
- job: 'gus-dlq-alert-job',
153
- runStatus: 'Started',
154
- ErrorsCount: 0,
155
- },
156
- {
157
- job: 'kyb-kyc-event-listener',
158
- totalhrsRun: 24,
159
- listenerErrorsCount: 0,
160
- },
161
- {
162
- job: 'kyb-kyc-verification-process',
163
- screeningEnquiryCount: 0,
164
- screeningEnquiryFeedbackCount: 0,
165
- sfErrorsCount: 0,
166
- },
167
- ], 'ZoomToBoxSyncHandler', 'TestStream123', true, 'Error');
168
- })();