@abyss-project/monitor 6.5.0 → 7.0.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.
Files changed (70) hide show
  1. package/dist/api/alert-rule.api.d.ts +2 -1
  2. package/dist/api/alert-rule.api.js +5 -1
  3. package/dist/api/alert-rule.api.js.map +1 -1
  4. package/dist/index.d.ts +4 -11
  5. package/dist/index.js +4 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/models/logger.model.d.ts +0 -1
  8. package/dist/models/logger.model.js +0 -24
  9. package/dist/models/logger.model.js.map +1 -1
  10. package/dist/models/stats-publisher.model.js +0 -11
  11. package/dist/models/stats-publisher.model.js.map +1 -1
  12. package/dist/rules/condition.bounds.d.ts +35 -0
  13. package/dist/rules/condition.bounds.js +298 -0
  14. package/dist/rules/condition.bounds.js.map +1 -0
  15. package/dist/rules/condition.compiler.d.ts +4 -0
  16. package/dist/rules/condition.compiler.js +102 -0
  17. package/dist/rules/condition.compiler.js.map +1 -0
  18. package/dist/rules/condition.parser.d.ts +2 -0
  19. package/dist/rules/condition.parser.js +381 -0
  20. package/dist/rules/condition.parser.js.map +1 -0
  21. package/dist/rules/condition.printer.d.ts +2 -0
  22. package/dist/rules/condition.printer.js +85 -0
  23. package/dist/rules/condition.printer.js.map +1 -0
  24. package/dist/rules/condition.types.d.ts +74 -0
  25. package/dist/rules/condition.types.js +50 -0
  26. package/dist/rules/condition.types.js.map +1 -0
  27. package/dist/rules/index.d.ts +6 -0
  28. package/dist/rules/index.js +23 -0
  29. package/dist/rules/index.js.map +1 -0
  30. package/dist/rules/safe-regex.d.ts +9 -0
  31. package/dist/rules/safe-regex.js +28 -0
  32. package/dist/rules/safe-regex.js.map +1 -0
  33. package/dist/types/enum/alert-rule-evaluation.enum.d.ts +4 -0
  34. package/dist/types/enum/alert-rule-evaluation.enum.js +9 -0
  35. package/dist/types/enum/alert-rule-evaluation.enum.js.map +1 -0
  36. package/dist/types/enum/alert-rule-field.enum.d.ts +12 -0
  37. package/dist/types/enum/alert-rule-field.enum.js +15 -0
  38. package/dist/types/enum/alert-rule-field.enum.js.map +1 -0
  39. package/dist/types/enum/alert-rule-operator.enum.d.ts +16 -0
  40. package/dist/types/enum/alert-rule-operator.enum.js +21 -0
  41. package/dist/types/enum/alert-rule-operator.enum.js.map +1 -0
  42. package/dist/types/enum/api-error.enum.d.ts +2 -1
  43. package/dist/types/enum/api-error.enum.js +1 -0
  44. package/dist/types/enum/api-error.enum.js.map +1 -1
  45. package/dist/types/enum/index.d.ts +3 -1
  46. package/dist/types/enum/index.js +3 -1
  47. package/dist/types/enum/index.js.map +1 -1
  48. package/dist/types/enum/monitor-warning-code.enum.d.ts +5 -1
  49. package/dist/types/enum/monitor-warning-code.enum.js +6 -1
  50. package/dist/types/enum/monitor-warning-code.enum.js.map +1 -1
  51. package/dist/types/enum/notification-delivery-kind.enum.d.ts +2 -1
  52. package/dist/types/enum/notification-delivery-kind.enum.js +1 -0
  53. package/dist/types/enum/notification-delivery-kind.enum.js.map +1 -1
  54. package/dist/types/interface/api/requests/alert-rule.request.d.ts +13 -3
  55. package/dist/types/interface/api/responses/alert-rule.response.d.ts +1 -0
  56. package/dist/types/interface/models/monitor-alert-rule.model.d.ts +6 -1
  57. package/dist/types/interface/models/user.model.d.ts +1 -0
  58. package/dist/utils/index.d.ts +0 -2
  59. package/dist/utils/index.js +0 -2
  60. package/dist/utils/index.js.map +1 -1
  61. package/package.json +2 -3
  62. package/dist/types/enum/application-alert-type.enum.d.ts +0 -5
  63. package/dist/types/enum/application-alert-type.enum.js +0 -10
  64. package/dist/types/enum/application-alert-type.enum.js.map +0 -1
  65. package/dist/utils/alert.utils.d.ts +0 -36
  66. package/dist/utils/alert.utils.js +0 -138
  67. package/dist/utils/alert.utils.js.map +0 -1
  68. package/dist/utils/discord-webhook-log-formatter.utils.d.ts +0 -48
  69. package/dist/utils/discord-webhook-log-formatter.utils.js +0 -335
  70. package/dist/utils/discord-webhook-log-formatter.utils.js.map +0 -1
@@ -1,138 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.sendStatsAlert = exports.sendLogAlert = exports.buildDashboardLogUrl = void 0;
30
- const __1 = require("..");
31
- const json_utils_1 = require("./json.utils");
32
- const axios_1 = __importDefault(require("axios"));
33
- const axios_rate_limit_1 = __importDefault(require("axios-rate-limit"));
34
- const axios_retry_1 = __importStar(require("axios-retry"));
35
- const webhookClients = new Map();
36
- const MAX_REQUEST_PER_MINUTE = 30;
37
- const RATE_LIMIT_PERIOD_IN_MS = 60 * 1000;
38
- const APPLICATION_LOG_ID_QUERY_PARAMS = 'application_log_id';
39
- const buildDashboardLogUrl = (applicationLogId) => {
40
- const base = `${__1.AbyssMonitorCore.getConfig().baseClientURL}dashboard/project/${__1.AbyssMonitorCore.getConfig().projectId}/application/${__1.AbyssMonitorCore.getConfig().applicationId}/monitor/log`;
41
- return applicationLogId ? `${base}?${APPLICATION_LOG_ID_QUERY_PARAMS}=${applicationLogId}` : base;
42
- };
43
- exports.buildDashboardLogUrl = buildDashboardLogUrl;
44
- const sendLogAlert = async (params) => {
45
- const webhookUrl = params.webhookUrl ||
46
- (await __1.AbyssMonitorCore.getConfig().getWebhookUrl({
47
- type: __1.ApplicationAlertType.LOG,
48
- payload: params,
49
- }));
50
- if (!webhookUrl) {
51
- return;
52
- }
53
- if (params.logData.applicationLogEndpoint) {
54
- await sendAlert({
55
- logger: params.logger,
56
- body: (0, __1.generateDiscordApiLogMessageContent)({
57
- ...params.logData,
58
- author: params.author || __1.AbyssMonitorCore.getConfig().applicationName,
59
- dashboardLogUrl: (0, exports.buildDashboardLogUrl)(params.applicationLogId),
60
- dateValue: params.logData.dateValue,
61
- }),
62
- webhookUrl,
63
- });
64
- }
65
- else {
66
- await sendAlert({
67
- logger: params.logger,
68
- body: (0, __1.generateDiscordAlertLogMessageContent)({
69
- title: params.logData.title,
70
- level: params.logData.level,
71
- author: params.author || __1.AbyssMonitorCore.getConfig().applicationName,
72
- message: params.logData.message,
73
- context: params.logData.context,
74
- scenario: params.logData.scenario,
75
- stack: params.logData.stack,
76
- processId: params.logData.processId,
77
- requestId: params.logData.requestId,
78
- dashboardLogUrl: (0, exports.buildDashboardLogUrl)(params.applicationLogId),
79
- dateValue: params.logData.dateValue,
80
- }, { compact: params.compact }),
81
- webhookUrl,
82
- });
83
- }
84
- };
85
- exports.sendLogAlert = sendLogAlert;
86
- const sendStatsAlert = async (params) => {
87
- const webhookUrl = params.webhookUrl ||
88
- (await __1.AbyssMonitorCore.getConfig().getWebhookUrl({
89
- type: __1.ApplicationAlertType.STATS,
90
- payload: params,
91
- }));
92
- if (!webhookUrl) {
93
- return;
94
- }
95
- await sendAlert({
96
- logger: params.logger,
97
- body: (0, __1.generateDiscordStatsMessageContent)({
98
- ...params,
99
- dashboardStatsUrl: `${__1.AbyssMonitorCore.getConfig().baseClientURL}dashboard/project/${__1.AbyssMonitorCore.getConfig().projectId}/application/${__1.AbyssMonitorCore.getConfig().applicationId}/monitor/stats`,
100
- author: params.author || __1.AbyssMonitorCore.getConfig().applicationName,
101
- }),
102
- webhookUrl,
103
- });
104
- };
105
- exports.sendStatsAlert = sendStatsAlert;
106
- const sendAlert = async (params) => {
107
- const webhookUrls = Array.isArray(params.webhookUrl) ? params.webhookUrl : [params.webhookUrl];
108
- await Promise.allSettled(webhookUrls.map(async (webhookUrl) => {
109
- try {
110
- const webhookClient = findOrCreateWebhookClient(webhookUrl);
111
- await webhookClient.post('', params.body);
112
- }
113
- catch (error) {
114
- params.logger?.error(`Unable to deliver alert to ${params.webhookUrl}. Error: ${error}`, {
115
- data: (0, json_utils_1.isValidJson)(params.body) ? params.body : undefined,
116
- });
117
- }
118
- }));
119
- };
120
- const findOrCreateWebhookClient = (webhookUrl) => {
121
- const existingWebhookClient = webhookClients.get(webhookUrl);
122
- if (existingWebhookClient) {
123
- return existingWebhookClient;
124
- }
125
- const webhookClient = (0, axios_rate_limit_1.default)(axios_1.default.create({ baseURL: webhookUrl }), {
126
- maxRequests: MAX_REQUEST_PER_MINUTE,
127
- perMilliseconds: RATE_LIMIT_PERIOD_IN_MS,
128
- });
129
- (0, axios_retry_1.default)(webhookClient, {
130
- retries: __1.NUMBER_RETRY_API,
131
- retryDelay: (retryCount) => retryCount * __1.BASE_DELAY_BETWEEN_RETRY,
132
- retryCondition: (error) => (0, axios_retry_1.isNetworkOrIdempotentRequestError)(error) ||
133
- __1.RETRY_CODES.includes(error.response?.status || 502),
134
- });
135
- webhookClients.set(webhookUrl, webhookClient);
136
- return webhookClient;
137
- };
138
- //# sourceMappingURL=alert.utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alert.utils.js","sourceRoot":"","sources":["../../src/utils/alert.utils.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- import type { WebhookMessageCreateOptions } from 'discord.js';
2
- import { IApplicationCronTask, IApplicationCronTaskHistory } from '../types';
3
- import { LogData } from '../models';
4
- import { PayloadSendStatsAlert } from './alert.utils';
5
- export declare const MAX_DESCRIPTION_LENGTH = 4096;
6
- export declare const MAX_FIELD_NAME_LENGTH = 256;
7
- export declare const MAX_FIELD_VALUE_LENGTH = 1024;
8
- export declare const MAX_FOOTER_LENGTH = 2048;
9
- export declare const MAX_TITLE_LENGTH = 256;
10
- export declare const MAX_AUTHOR_NAME_LENGTH = 256;
11
- export declare const HIGHLIGHT = "```";
12
- export declare enum DISCORD_EMBED_COLORS {
13
- red = 16711680,
14
- green = 4961603,
15
- blue = 52479,
16
- orange = 16753920,
17
- grey = 8421504
18
- }
19
- export declare const DATE_FORMAT = "DD/MM/YYYY HH:mm:ss";
20
- export declare const dateFormatted: (date?: Date) => string;
21
- export declare const generateDiscordHighlightBlock: (content: string) => string;
22
- export declare const generateDiscordHighlightBlockWithColor: (color: keyof typeof DISCORD_EMBED_COLORS, message: string) => string;
23
- export declare const getBlockColorByResultCode: (resultCode: number) => keyof typeof DISCORD_EMBED_COLORS;
24
- export declare const getAPIEmbedColor: (color: keyof typeof DISCORD_EMBED_COLORS) => DISCORD_EMBED_COLORS;
25
- export type ParamsGenerateDiscordAlertLogMessageContent = {
26
- dashboardLogUrl: string;
27
- author: string;
28
- } & LogData;
29
- export declare const generateDiscordAlertLogMessageContent: (params: ParamsGenerateDiscordAlertLogMessageContent, options?: {
30
- compact?: boolean;
31
- }) => WebhookMessageCreateOptions;
32
- export type ParamsGenerateDiscordApiLogMessageContent = {
33
- dashboardLogUrl: string;
34
- author: string;
35
- } & LogData;
36
- export declare const generateDiscordApiLogMessageContent: (params: ParamsGenerateDiscordApiLogMessageContent) => WebhookMessageCreateOptions;
37
- type ParamsGenerateDiscordStatsMessageContent = {
38
- dashboardStatsUrl: string;
39
- author: string;
40
- } & PayloadSendStatsAlert;
41
- export declare const generateDiscordStatsMessageContent: (params: ParamsGenerateDiscordStatsMessageContent) => WebhookMessageCreateOptions;
42
- type ParamsGenerateDiscordCronTaskHistoryMessageContent = {
43
- applicationCronTaskHistory: IApplicationCronTaskHistory;
44
- applicationCronTask: IApplicationCronTask;
45
- dashboardCronTaskHistoryUrl: string;
46
- };
47
- export declare const generateDiscordCronTaskHistoryMessageContent: (params: ParamsGenerateDiscordCronTaskHistoryMessageContent) => WebhookMessageCreateOptions;
48
- export {};
@@ -1,335 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateDiscordCronTaskHistoryMessageContent = exports.generateDiscordStatsMessageContent = exports.generateDiscordApiLogMessageContent = exports.generateDiscordAlertLogMessageContent = exports.getAPIEmbedColor = exports.getBlockColorByResultCode = exports.generateDiscordHighlightBlockWithColor = exports.generateDiscordHighlightBlock = exports.dateFormatted = exports.DATE_FORMAT = exports.DISCORD_EMBED_COLORS = exports.HIGHLIGHT = exports.MAX_AUTHOR_NAME_LENGTH = exports.MAX_TITLE_LENGTH = exports.MAX_FOOTER_LENGTH = exports.MAX_FIELD_VALUE_LENGTH = exports.MAX_FIELD_NAME_LENGTH = exports.MAX_DESCRIPTION_LENGTH = void 0;
7
- const lodash_1 = require("lodash");
8
- const types_1 = require("../types");
9
- const dayjs_1 = __importDefault(require("dayjs"));
10
- exports.MAX_DESCRIPTION_LENGTH = 4096;
11
- exports.MAX_FIELD_NAME_LENGTH = 256;
12
- exports.MAX_FIELD_VALUE_LENGTH = 1024;
13
- exports.MAX_FOOTER_LENGTH = 2048;
14
- exports.MAX_TITLE_LENGTH = 256;
15
- exports.MAX_AUTHOR_NAME_LENGTH = 256;
16
- const truncate = (text, maxLength) => {
17
- if (text.length <= maxLength) {
18
- return text;
19
- }
20
- return text.substring(0, maxLength - 3) + '...';
21
- };
22
- exports.HIGHLIGHT = '```';
23
- var DISCORD_EMBED_COLORS;
24
- (function (DISCORD_EMBED_COLORS) {
25
- DISCORD_EMBED_COLORS[DISCORD_EMBED_COLORS["red"] = 16711680] = "red";
26
- DISCORD_EMBED_COLORS[DISCORD_EMBED_COLORS["green"] = 4961603] = "green";
27
- DISCORD_EMBED_COLORS[DISCORD_EMBED_COLORS["blue"] = 52479] = "blue";
28
- DISCORD_EMBED_COLORS[DISCORD_EMBED_COLORS["orange"] = 16753920] = "orange";
29
- DISCORD_EMBED_COLORS[DISCORD_EMBED_COLORS["grey"] = 8421504] = "grey";
30
- })(DISCORD_EMBED_COLORS || (exports.DISCORD_EMBED_COLORS = DISCORD_EMBED_COLORS = {}));
31
- const COLOR_FOR_LOG_LEVEL = {
32
- [types_1.LogLevel.CRITICAL]: DISCORD_EMBED_COLORS.red,
33
- [types_1.LogLevel.ERROR]: DISCORD_EMBED_COLORS.red,
34
- [types_1.LogLevel.INFO]: DISCORD_EMBED_COLORS.blue,
35
- [types_1.LogLevel.LOG]: DISCORD_EMBED_COLORS.grey,
36
- [types_1.LogLevel.DEBUG]: DISCORD_EMBED_COLORS.grey,
37
- [types_1.LogLevel.WARN]: DISCORD_EMBED_COLORS.orange,
38
- };
39
- exports.DATE_FORMAT = 'DD/MM/YYYY HH:mm:ss';
40
- const dateFormatted = (date = new Date()) => {
41
- return (0, dayjs_1.default)(date).format(exports.DATE_FORMAT);
42
- };
43
- exports.dateFormatted = dateFormatted;
44
- const generateDiscordHighlightBlock = (content) => {
45
- return `${exports.HIGHLIGHT}\n${content}\n${exports.HIGHLIGHT}`;
46
- };
47
- exports.generateDiscordHighlightBlock = generateDiscordHighlightBlock;
48
- const generateDiscordHighlightBlockWithColor = (color, message) => {
49
- if (color === 'green') {
50
- return `${exports.HIGHLIGHT}diff\n+ ${message}\n${exports.HIGHLIGHT}`;
51
- }
52
- else if (color === 'red') {
53
- return `${exports.HIGHLIGHT}diff\n- ${message}\n${exports.HIGHLIGHT}`;
54
- }
55
- else if (color === 'orange') {
56
- return `${exports.HIGHLIGHT}fix\n${message}\n${exports.HIGHLIGHT}`;
57
- }
58
- else if (color === 'blue') {
59
- return `${exports.HIGHLIGHT}ini\n[${message}]\n${exports.HIGHLIGHT}`;
60
- }
61
- else {
62
- return `${exports.HIGHLIGHT}${message}${exports.HIGHLIGHT}`;
63
- }
64
- };
65
- exports.generateDiscordHighlightBlockWithColor = generateDiscordHighlightBlockWithColor;
66
- const getBlockColorByResultCode = (resultCode) => {
67
- if (resultCode >= 100 && resultCode <= 199) {
68
- return 'blue';
69
- }
70
- else if (resultCode >= 200 && resultCode <= 299) {
71
- return 'green';
72
- }
73
- else if (resultCode >= 300 && resultCode <= 399) {
74
- return 'grey';
75
- }
76
- else if (resultCode >= 400 && resultCode <= 499) {
77
- return 'orange';
78
- }
79
- else if (resultCode >= 500 && resultCode <= 599) {
80
- return 'red';
81
- }
82
- return 'grey';
83
- };
84
- exports.getBlockColorByResultCode = getBlockColorByResultCode;
85
- const getAPIEmbedColor = (color) => {
86
- if (['blue', 'green'].includes(color)) {
87
- return DISCORD_EMBED_COLORS.green;
88
- }
89
- else if (['orange'].includes(color)) {
90
- return DISCORD_EMBED_COLORS.orange;
91
- }
92
- else if (['red'].includes(color)) {
93
- return DISCORD_EMBED_COLORS.red;
94
- }
95
- else {
96
- return DISCORD_EMBED_COLORS.grey;
97
- }
98
- };
99
- exports.getAPIEmbedColor = getAPIEmbedColor;
100
- const generateDiscordAlertLogMessageContent = (params, options) => {
101
- if (params.applicationLogEndpoint) {
102
- return (0, exports.generateDiscordApiLogMessageContent)(params);
103
- }
104
- if (options?.compact && params.level === types_1.LogLevel.INFO) {
105
- return {
106
- content: `**[${params.author}]** ${types_1.LogLevel[params.level]} - ${params.message}`,
107
- };
108
- }
109
- return {
110
- embeds: [
111
- {
112
- color: COLOR_FOR_LOG_LEVEL[params.level],
113
- author: {
114
- name: truncate(`${params.author} - ${types_1.LogLevel[params.level]}`, exports.MAX_AUTHOR_NAME_LENGTH),
115
- },
116
- ...(params.title || params.level === types_1.LogLevel.ERROR
117
- ? {
118
- title: truncate(`${params.title ? params.title : 'Not named Error'}`, exports.MAX_TITLE_LENGTH),
119
- }
120
- : {}),
121
- description: truncate(`${params.message} ${params.stack ? params.stack : ''}`, exports.MAX_DESCRIPTION_LENGTH),
122
- fields: [
123
- {
124
- name: truncate(`Context`, exports.MAX_FIELD_NAME_LENGTH),
125
- value: truncate((0, exports.generateDiscordHighlightBlock)(params.context || 'No Context'), exports.MAX_FIELD_VALUE_LENGTH),
126
- inline: true,
127
- },
128
- {
129
- name: truncate(`Scenario`, exports.MAX_FIELD_NAME_LENGTH),
130
- value: truncate((0, exports.generateDiscordHighlightBlock)(params.scenario || 'No Scenario'), exports.MAX_FIELD_VALUE_LENGTH),
131
- inline: true,
132
- },
133
- ],
134
- footer: {
135
- text: truncate(`${(0, exports.dateFormatted)(params.dateValue)} - ${params.processId} - ${params.requestId || 'No Request id'} - [See Log](${params.dashboardLogUrl})`, exports.MAX_FOOTER_LENGTH),
136
- },
137
- },
138
- ],
139
- };
140
- };
141
- exports.generateDiscordAlertLogMessageContent = generateDiscordAlertLogMessageContent;
142
- const generateDiscordApiLogMessageContent = (params) => {
143
- if (!params.applicationLogEndpoint) {
144
- return (0, exports.generateDiscordAlertLogMessageContent)(params);
145
- }
146
- const color = (0, exports.getBlockColorByResultCode)(params.applicationLogEndpoint.responseHttpCode);
147
- let durationColor;
148
- if (params.applicationLogEndpoint.responseTime < 100) {
149
- durationColor = 'green';
150
- }
151
- else if (params.applicationLogEndpoint.responseTime < 250) {
152
- durationColor = 'orange';
153
- }
154
- else {
155
- durationColor = 'red';
156
- }
157
- return {
158
- embeds: [
159
- {
160
- color: (0, exports.getAPIEmbedColor)(color),
161
- author: {
162
- name: truncate(`${params.author} - API`, exports.MAX_AUTHOR_NAME_LENGTH),
163
- },
164
- fields: [
165
- {
166
- name: truncate(`Request ID`, exports.MAX_FIELD_NAME_LENGTH),
167
- value: truncate((0, exports.generateDiscordHighlightBlock)(params.requestId || ''), exports.MAX_FIELD_VALUE_LENGTH),
168
- inline: true,
169
- },
170
- {
171
- name: truncate(`Process ID`, exports.MAX_FIELD_NAME_LENGTH),
172
- value: truncate((0, exports.generateDiscordHighlightBlock)(params.processId), exports.MAX_FIELD_VALUE_LENGTH),
173
- inline: true,
174
- },
175
- {
176
- name: truncate(`Authentication`, exports.MAX_FIELD_NAME_LENGTH),
177
- value: truncate((0, exports.generateDiscordHighlightBlock)(params.applicationLogEndpoint.authentication || 'None'), exports.MAX_FIELD_VALUE_LENGTH),
178
- },
179
- {
180
- name: truncate(`Method`, exports.MAX_FIELD_NAME_LENGTH),
181
- value: truncate(`${(0, exports.generateDiscordHighlightBlockWithColor)('blue', types_1.APIMethod[params.applicationLogEndpoint.method].toUpperCase())}`, exports.MAX_FIELD_VALUE_LENGTH),
182
- inline: true,
183
- },
184
- {
185
- name: truncate(`Response HTTP Code`, exports.MAX_FIELD_NAME_LENGTH),
186
- value: truncate((0, exports.generateDiscordHighlightBlockWithColor)(color, params.applicationLogEndpoint.responseHttpCode.toString()), exports.MAX_FIELD_VALUE_LENGTH),
187
- inline: true,
188
- },
189
- {
190
- name: truncate(`Duration`, exports.MAX_FIELD_NAME_LENGTH),
191
- value: truncate((0, exports.generateDiscordHighlightBlockWithColor)(durationColor, `${params.applicationLogEndpoint.responseTime}ms`), exports.MAX_FIELD_VALUE_LENGTH),
192
- inline: true,
193
- },
194
- {
195
- name: truncate(`Controller`, exports.MAX_FIELD_NAME_LENGTH),
196
- value: truncate((0, exports.generateDiscordHighlightBlock)((0, lodash_1.upperFirst)(params.applicationLogEndpoint.controller || 'Unknown Controller')), exports.MAX_FIELD_VALUE_LENGTH),
197
- inline: true,
198
- },
199
- {
200
- name: truncate(`Endpoint`, exports.MAX_FIELD_NAME_LENGTH),
201
- value: truncate((0, exports.generateDiscordHighlightBlock)(params.applicationLogEndpoint.endpoint), exports.MAX_FIELD_VALUE_LENGTH),
202
- inline: true,
203
- },
204
- {
205
- name: truncate(`Client IPs`, exports.MAX_FIELD_NAME_LENGTH),
206
- value: truncate((0, exports.generateDiscordHighlightBlock)(params.applicationLogEndpoint.ip.join('\n')), exports.MAX_FIELD_VALUE_LENGTH),
207
- },
208
- ...(params.applicationLogEndpoint.responseHttpCode < 200 ||
209
- params.applicationLogEndpoint.responseHttpCode > 399
210
- ? [
211
- {
212
- name: truncate(`Error`, exports.MAX_FIELD_NAME_LENGTH),
213
- value: truncate(`${JSON.stringify(params.applicationLogEndpoint.responseBody)}`, exports.MAX_FIELD_VALUE_LENGTH),
214
- },
215
- ]
216
- : []),
217
- ],
218
- footer: {
219
- text: truncate(`${(0, exports.dateFormatted)(params.dateValue)} - ${params.processId} - ${params.requestId || 'No Request id'} - [See Log](${params.dashboardLogUrl})`, exports.MAX_FOOTER_LENGTH),
220
- },
221
- },
222
- ],
223
- };
224
- };
225
- exports.generateDiscordApiLogMessageContent = generateDiscordApiLogMessageContent;
226
- const generateDiscordStatsMessageContent = (params) => {
227
- return {
228
- embeds: [
229
- {
230
- color: (0, exports.getAPIEmbedColor)('orange'),
231
- title: truncate(`${params.author} - Performance Alert`, exports.MAX_TITLE_LENGTH),
232
- fields: [
233
- ...(params.statsData.cpu &&
234
- (params.statsData.cpu.value || params.statsData.cpu.percentValue)
235
- ? [
236
- {
237
- name: truncate('CPU Usage', exports.MAX_FIELD_NAME_LENGTH),
238
- value: truncate((0, exports.generateDiscordHighlightBlock)(`${params.statsData.cpu.value
239
- ? `${(params.statsData.cpu.value / 1000 / 1000 / 1000).toFixed(2)} Ghz`
240
- : 'Unknown'}`), exports.MAX_FIELD_VALUE_LENGTH),
241
- inline: true,
242
- },
243
- {
244
- name: truncate('CPU Percent Usage', exports.MAX_FIELD_NAME_LENGTH),
245
- value: truncate((0, exports.generateDiscordHighlightBlock)(`${params.statsData.cpu.percentValue
246
- ? `${params.statsData.cpu.percentValue.toFixed(2)}%`
247
- : 'Unknown'}`), exports.MAX_FIELD_VALUE_LENGTH),
248
- inline: true,
249
- },
250
- {
251
- name: truncate('\n', exports.MAX_FIELD_NAME_LENGTH),
252
- value: truncate('\n', exports.MAX_FIELD_VALUE_LENGTH),
253
- inline: true,
254
- },
255
- ]
256
- : []),
257
- ...(params.statsData.ram &&
258
- (params.statsData.ram.value || params.statsData.ram.percentValue)
259
- ? [
260
- {
261
- name: truncate('Memory Usage', exports.MAX_FIELD_NAME_LENGTH),
262
- value: truncate((0, exports.generateDiscordHighlightBlock)(`${params.statsData.ram.value
263
- ? `${(params.statsData.ram.value / 1024 / 1024 / 1024).toFixed(2)} Go`
264
- : 'Unknown'}`), exports.MAX_FIELD_VALUE_LENGTH),
265
- inline: true,
266
- },
267
- {
268
- name: truncate('Memory Percent Usage', exports.MAX_FIELD_NAME_LENGTH),
269
- value: truncate((0, exports.generateDiscordHighlightBlock)(`${params.statsData.ram.percentValue
270
- ? `${params.statsData.ram.percentValue.toFixed(2)}%`
271
- : 'Unknown'}`), exports.MAX_FIELD_VALUE_LENGTH),
272
- inline: true,
273
- },
274
- {
275
- name: truncate('\n', exports.MAX_FIELD_NAME_LENGTH),
276
- value: truncate('\n', exports.MAX_FIELD_VALUE_LENGTH),
277
- inline: true,
278
- },
279
- ]
280
- : []),
281
- ...(params.statsData.disk &&
282
- (params.statsData.disk.value || params.statsData.disk.percentValue)
283
- ? [
284
- {
285
- name: truncate('Disk Usage', exports.MAX_FIELD_NAME_LENGTH),
286
- value: truncate((0, exports.generateDiscordHighlightBlock)(`${params.statsData.disk.value
287
- ? `${(params.statsData.disk.value / 1024 / 1024 / 1024).toFixed(2)}`
288
- : 'Unknown'}`), exports.MAX_FIELD_VALUE_LENGTH),
289
- inline: true,
290
- },
291
- {
292
- name: truncate('Disk Percent Usage', exports.MAX_FIELD_NAME_LENGTH),
293
- value: truncate((0, exports.generateDiscordHighlightBlock)(`${params.statsData.disk.percentValue
294
- ? `${params.statsData.disk.percentValue.toFixed(2)}%`
295
- : 'Unknown'}`), exports.MAX_FIELD_VALUE_LENGTH),
296
- inline: true,
297
- },
298
- {
299
- name: truncate('\n', exports.MAX_FIELD_NAME_LENGTH),
300
- value: truncate('\n', exports.MAX_FIELD_VALUE_LENGTH),
301
- inline: true,
302
- },
303
- ]
304
- : []),
305
- ],
306
- footer: {
307
- text: truncate(`${(0, exports.dateFormatted)(params.dateValue)} - ${params.processId} - [See Stats](${params.dashboardStatsUrl})`, exports.MAX_FOOTER_LENGTH),
308
- },
309
- },
310
- ],
311
- };
312
- };
313
- exports.generateDiscordStatsMessageContent = generateDiscordStatsMessageContent;
314
- const generateDiscordCronTaskHistoryMessageContent = (params) => {
315
- return {
316
- embeds: [
317
- {
318
- color: (0, exports.getAPIEmbedColor)(params.applicationCronTaskHistory.hasFailed ? 'red' : 'green'),
319
- title: truncate(`CronTask ${params.applicationCronTask.name}`, exports.MAX_TITLE_LENGTH),
320
- fields: [
321
- {
322
- name: truncate('Status', exports.MAX_FIELD_NAME_LENGTH),
323
- value: truncate((0, exports.generateDiscordHighlightBlock)(`${params.applicationCronTaskHistory.hasFailed ? 'FAILED' : 'SUCCEEDED'}`), exports.MAX_FIELD_VALUE_LENGTH),
324
- inline: true,
325
- },
326
- ],
327
- footer: {
328
- text: truncate(`${(0, exports.dateFormatted)(params.applicationCronTaskHistory.startDate)} - ${params.applicationCronTaskHistory.requestId || 'No Request id'} - [See CronTask history](${params.dashboardCronTaskHistoryUrl})`, exports.MAX_FOOTER_LENGTH),
329
- },
330
- },
331
- ],
332
- };
333
- };
334
- exports.generateDiscordCronTaskHistoryMessageContent = generateDiscordCronTaskHistoryMessageContent;
335
- //# sourceMappingURL=discord-webhook-log-formatter.utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discord-webhook-log-formatter.utils.js","sourceRoot":"","sources":["../../src/utils/discord-webhook-log-formatter.utils.ts"],"names":[],"mappings":"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"}