@abyss-project/monitor 16.6.1 → 17.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.
- package/dist/api/rum-read.api.d.ts +1 -6
- package/dist/api/rum-read.api.js +1 -21
- package/dist/api/rum-read.api.js.map +1 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp/monitor-mcp-tool.types.d.ts +2 -14
- package/dist/mcp/monitor-mcp-tool.types.js.map +1 -1
- package/dist/mcp/monitor-mcp-tools.d.ts +1 -2
- package/dist/mcp/monitor-mcp-tools.js +4 -33
- package/dist/mcp/monitor-mcp-tools.js.map +1 -1
- package/dist/rules/index.d.ts +0 -6
- package/dist/rules/index.js +0 -6
- package/dist/rules/index.js.map +1 -1
- package/dist/types/enum/incident-event-type.enum.d.ts +0 -1
- package/dist/types/enum/incident-event-type.enum.js +0 -1
- package/dist/types/enum/incident-event-type.enum.js.map +1 -1
- package/dist/types/enum/index.d.ts +0 -3
- package/dist/types/enum/index.js +0 -3
- package/dist/types/enum/index.js.map +1 -1
- package/dist/types/enum/rum-read.enum.d.ts +0 -4
- package/dist/types/enum/rum-read.enum.js +1 -6
- package/dist/types/enum/rum-read.enum.js.map +1 -1
- package/dist/types/interface/api/requests/alert-rule.request.d.ts +18 -12
- package/dist/types/interface/api/requests/alert-rule.request.js +46 -0
- package/dist/types/interface/api/requests/alert-rule.request.js.map +1 -1
- package/dist/types/interface/api/requests/application-event.request.d.ts +0 -6
- package/dist/types/interface/api/requests/application-log.request.d.ts +0 -9
- package/dist/types/interface/api/requests/error-group.request.d.ts +2 -10
- package/dist/types/interface/api/requests/error-group.request.js +0 -2
- package/dist/types/interface/api/requests/error-group.request.js.map +1 -1
- package/dist/types/interface/api/requests/explore.request.d.ts +6 -2
- package/dist/types/interface/api/requests/explore.request.js +6 -1
- package/dist/types/interface/api/requests/explore.request.js.map +1 -1
- package/dist/types/interface/api/requests/incident.request.d.ts +0 -4
- package/dist/types/interface/api/requests/rum-read.request.d.ts +6 -66
- package/dist/types/interface/api/requests/rum-read.request.js.map +1 -1
- package/dist/types/interface/api/requests/rum-socket-messages.request.d.ts +0 -4
- package/dist/types/interface/api/responses/alert-rule.response.d.ts +1 -0
- package/dist/types/interface/api/responses/rum-read.response.d.ts +0 -11
- package/dist/types/interface/api/type-message/keyset-paginate.d.ts +0 -1
- package/dist/types/interface/index.d.ts +0 -1
- package/dist/types/interface/index.js +0 -1
- package/dist/types/interface/index.js.map +1 -1
- package/dist/types/interface/models/monitor-alert-rule.model.d.ts +4 -13
- package/dist/types/interface/models/monitor-incident.model.d.ts +7 -7
- package/package.json +1 -2
- package/dist/rules/condition.bounds.d.ts +0 -44
- package/dist/rules/condition.bounds.js +0 -356
- package/dist/rules/condition.bounds.js.map +0 -1
- package/dist/rules/condition.compiler.d.ts +0 -4
- package/dist/rules/condition.compiler.js +0 -101
- package/dist/rules/condition.compiler.js.map +0 -1
- package/dist/rules/condition.parser.d.ts +0 -3
- package/dist/rules/condition.parser.js +0 -413
- package/dist/rules/condition.parser.js.map +0 -1
- package/dist/rules/condition.printer.d.ts +0 -3
- package/dist/rules/condition.printer.js +0 -92
- package/dist/rules/condition.printer.js.map +0 -1
- package/dist/rules/condition.types.d.ts +0 -87
- package/dist/rules/condition.types.js +0 -52
- package/dist/rules/condition.types.js.map +0 -1
- package/dist/rules/safe-regex.d.ts +0 -9
- package/dist/rules/safe-regex.js +0 -28
- package/dist/rules/safe-regex.js.map +0 -1
- package/dist/types/enum/alert-rule-field.enum.d.ts +0 -18
- package/dist/types/enum/alert-rule-field.enum.js +0 -22
- package/dist/types/enum/alert-rule-field.enum.js.map +0 -1
- package/dist/types/enum/alert-rule-group-by.enum.d.ts +0 -7
- package/dist/types/enum/alert-rule-group-by.enum.js +0 -12
- package/dist/types/enum/alert-rule-group-by.enum.js.map +0 -1
- package/dist/types/enum/alert-rule-operator.enum.d.ts +0 -16
- package/dist/types/enum/alert-rule-operator.enum.js +0 -21
- package/dist/types/enum/alert-rule-operator.enum.js.map +0 -1
- package/dist/types/interface/models/rum-saved-view.model.d.ts +0 -15
- package/dist/types/interface/models/rum-saved-view.model.js +0 -3
- package/dist/types/interface/models/rum-saved-view.model.js.map +0 -1
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isBuilderRepresentable = exports.validateConditionBounds = exports.decodeRegexValue = exports.encodeRegexValue = exports.alertRuleValueKindOf = exports.AlertRuleValueKind = exports.alertRuleOperatorsFor = exports.isValidAlertRuleDataPath = exports.isAlertRuleDataField = exports.ALERT_RULE_EMITTER_NAMES = exports.ALERT_RULE_LEVEL_NAMES = exports.ALERT_RULE_DATA_FIELD_OPERATORS = exports.alertRuleReadsDataFields = exports.alertRuleFieldsFor = exports.ALERT_RULE_ERROR_GROUP_FIELDS = exports.ALERT_RULE_LOG_FIELDS = exports.ALERT_RULE_FIELD_OPERATORS = exports.ALERT_RULE_DATA_PATH_MAX_SEGMENTS = exports.ALERT_RULE_CONDITION_MAX_REGEX_LENGTH = exports.ALERT_RULE_CONDITION_MAX_IN_VALUES = exports.ALERT_RULE_CONDITION_MAX_TEXT_LENGTH = exports.ALERT_RULE_CONDITION_MAX_NODES = exports.ALERT_RULE_CONDITION_MAX_DEPTH = void 0;
|
|
4
|
-
const enum_1 = require("../types/enum");
|
|
5
|
-
const condition_types_1 = require("./condition.types");
|
|
6
|
-
const safe_regex_1 = require("./safe-regex");
|
|
7
|
-
exports.ALERT_RULE_CONDITION_MAX_DEPTH = 5;
|
|
8
|
-
exports.ALERT_RULE_CONDITION_MAX_NODES = 50;
|
|
9
|
-
exports.ALERT_RULE_CONDITION_MAX_TEXT_LENGTH = 200;
|
|
10
|
-
exports.ALERT_RULE_CONDITION_MAX_IN_VALUES = 50;
|
|
11
|
-
exports.ALERT_RULE_CONDITION_MAX_REGEX_LENGTH = 200;
|
|
12
|
-
exports.ALERT_RULE_DATA_PATH_MAX_SEGMENTS = 5;
|
|
13
|
-
const DATA_PATH_PATTERN = new RegExp(`^data(?:\\.[A-Za-z0-9_-]+){1,${exports.ALERT_RULE_DATA_PATH_MAX_SEGMENTS}}$`);
|
|
14
|
-
const EQUALITY_OPERATORS = [
|
|
15
|
-
enum_1.AlertRuleOperator.EQUALS,
|
|
16
|
-
enum_1.AlertRuleOperator.NOT_EQUALS,
|
|
17
|
-
enum_1.AlertRuleOperator.IN,
|
|
18
|
-
enum_1.AlertRuleOperator.NOT_IN,
|
|
19
|
-
];
|
|
20
|
-
const ORDER_OPERATORS = [
|
|
21
|
-
enum_1.AlertRuleOperator.GT,
|
|
22
|
-
enum_1.AlertRuleOperator.GTE,
|
|
23
|
-
enum_1.AlertRuleOperator.LT,
|
|
24
|
-
enum_1.AlertRuleOperator.LTE,
|
|
25
|
-
];
|
|
26
|
-
const TEXT_OPERATORS = [
|
|
27
|
-
enum_1.AlertRuleOperator.CONTAINS,
|
|
28
|
-
enum_1.AlertRuleOperator.STARTS_WITH,
|
|
29
|
-
enum_1.AlertRuleOperator.ENDS_WITH,
|
|
30
|
-
enum_1.AlertRuleOperator.MATCHES,
|
|
31
|
-
];
|
|
32
|
-
const PRESENCE_OPERATORS = [enum_1.AlertRuleOperator.EXISTS, enum_1.AlertRuleOperator.NOT_EXISTS];
|
|
33
|
-
const TEXT_FIELD_OPERATORS = [...EQUALITY_OPERATORS, ...TEXT_OPERATORS, ...PRESENCE_OPERATORS];
|
|
34
|
-
exports.ALERT_RULE_FIELD_OPERATORS = {
|
|
35
|
-
[enum_1.AlertRuleField.LEVEL]: [...EQUALITY_OPERATORS, ...ORDER_OPERATORS],
|
|
36
|
-
[enum_1.AlertRuleField.TITLE]: TEXT_FIELD_OPERATORS,
|
|
37
|
-
[enum_1.AlertRuleField.MESSAGE]: TEXT_FIELD_OPERATORS,
|
|
38
|
-
[enum_1.AlertRuleField.STACK]: TEXT_FIELD_OPERATORS,
|
|
39
|
-
[enum_1.AlertRuleField.CONTEXT]: TEXT_FIELD_OPERATORS,
|
|
40
|
-
[enum_1.AlertRuleField.SCENARIO]: TEXT_FIELD_OPERATORS,
|
|
41
|
-
[enum_1.AlertRuleField.ENDPOINT]: TEXT_FIELD_OPERATORS,
|
|
42
|
-
[enum_1.AlertRuleField.HTTP_STATUS]: [...EQUALITY_OPERATORS, ...ORDER_OPERATORS, ...PRESENCE_OPERATORS],
|
|
43
|
-
[enum_1.AlertRuleField.FINGERPRINT]: TEXT_FIELD_OPERATORS,
|
|
44
|
-
[enum_1.AlertRuleField.EMITTER]: EQUALITY_OPERATORS,
|
|
45
|
-
[enum_1.AlertRuleErrorGroupField.ERROR_TYPE]: EQUALITY_OPERATORS,
|
|
46
|
-
[enum_1.AlertRuleErrorGroupField.ENVIRONMENT]: [...EQUALITY_OPERATORS, ...TEXT_OPERATORS],
|
|
47
|
-
};
|
|
48
|
-
exports.ALERT_RULE_LOG_FIELDS = Object.values(enum_1.AlertRuleField);
|
|
49
|
-
exports.ALERT_RULE_ERROR_GROUP_FIELDS = [
|
|
50
|
-
enum_1.AlertRuleErrorGroupField.ERROR_TYPE,
|
|
51
|
-
enum_1.AlertRuleField.LEVEL,
|
|
52
|
-
enum_1.AlertRuleField.CONTEXT,
|
|
53
|
-
enum_1.AlertRuleField.SCENARIO,
|
|
54
|
-
enum_1.AlertRuleErrorGroupField.ENVIRONMENT,
|
|
55
|
-
enum_1.AlertRuleField.MESSAGE,
|
|
56
|
-
enum_1.AlertRuleField.EMITTER,
|
|
57
|
-
];
|
|
58
|
-
const alertRuleFieldsFor = (evaluation) => {
|
|
59
|
-
switch (evaluation) {
|
|
60
|
-
case enum_1.AlertRuleEvaluation.ERROR_GROUP_EVENT:
|
|
61
|
-
return exports.ALERT_RULE_ERROR_GROUP_FIELDS;
|
|
62
|
-
case enum_1.AlertRuleEvaluation.RUM_METRIC:
|
|
63
|
-
return [];
|
|
64
|
-
case enum_1.AlertRuleEvaluation.WINDOW:
|
|
65
|
-
case enum_1.AlertRuleEvaluation.EACH_OCCURRENCE:
|
|
66
|
-
return exports.ALERT_RULE_LOG_FIELDS;
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
exports.alertRuleFieldsFor = alertRuleFieldsFor;
|
|
70
|
-
const alertRuleReadsDataFields = (evaluation) => evaluation === enum_1.AlertRuleEvaluation.WINDOW || evaluation === enum_1.AlertRuleEvaluation.EACH_OCCURRENCE;
|
|
71
|
-
exports.alertRuleReadsDataFields = alertRuleReadsDataFields;
|
|
72
|
-
exports.ALERT_RULE_DATA_FIELD_OPERATORS = Object.values(enum_1.AlertRuleOperator);
|
|
73
|
-
exports.ALERT_RULE_LEVEL_NAMES = {
|
|
74
|
-
CRITICAL: enum_1.LogLevel.CRITICAL,
|
|
75
|
-
ERROR: enum_1.LogLevel.ERROR,
|
|
76
|
-
WARN: enum_1.LogLevel.WARN,
|
|
77
|
-
INFO: enum_1.LogLevel.INFO,
|
|
78
|
-
LOG: enum_1.LogLevel.LOG,
|
|
79
|
-
DEBUG: enum_1.LogLevel.DEBUG,
|
|
80
|
-
};
|
|
81
|
-
exports.ALERT_RULE_EMITTER_NAMES = {
|
|
82
|
-
SERVER: enum_1.LogEmitter.SERVER,
|
|
83
|
-
BROWSER: enum_1.LogEmitter.BROWSER,
|
|
84
|
-
};
|
|
85
|
-
const OPERATORS = new Set(Object.values(enum_1.AlertRuleOperator));
|
|
86
|
-
const LEVELS = new Set(Object.values(exports.ALERT_RULE_LEVEL_NAMES));
|
|
87
|
-
const ERROR_TYPES = new Set(Object.values(enum_1.MonitorErrorType));
|
|
88
|
-
const EMITTERS = new Set(Object.values(exports.ALERT_RULE_EMITTER_NAMES));
|
|
89
|
-
const isAlertRuleDataField = (field) => field.startsWith('data.');
|
|
90
|
-
exports.isAlertRuleDataField = isAlertRuleDataField;
|
|
91
|
-
const isValidAlertRuleDataPath = (field) => DATA_PATH_PATTERN.test(field);
|
|
92
|
-
exports.isValidAlertRuleDataPath = isValidAlertRuleDataPath;
|
|
93
|
-
const alertRuleOperatorsFor = (field) => (0, exports.isAlertRuleDataField)(field)
|
|
94
|
-
? exports.ALERT_RULE_DATA_FIELD_OPERATORS
|
|
95
|
-
: exports.ALERT_RULE_FIELD_OPERATORS[field];
|
|
96
|
-
exports.alertRuleOperatorsFor = alertRuleOperatorsFor;
|
|
97
|
-
var AlertRuleValueKind;
|
|
98
|
-
(function (AlertRuleValueKind) {
|
|
99
|
-
AlertRuleValueKind["NONE"] = "NONE";
|
|
100
|
-
AlertRuleValueKind["LEVEL"] = "LEVEL";
|
|
101
|
-
AlertRuleValueKind["LEVEL_LIST"] = "LEVEL_LIST";
|
|
102
|
-
AlertRuleValueKind["ERROR_TYPE"] = "ERROR_TYPE";
|
|
103
|
-
AlertRuleValueKind["ERROR_TYPE_LIST"] = "ERROR_TYPE_LIST";
|
|
104
|
-
AlertRuleValueKind["EMITTER"] = "EMITTER";
|
|
105
|
-
AlertRuleValueKind["EMITTER_LIST"] = "EMITTER_LIST";
|
|
106
|
-
AlertRuleValueKind["TEXT"] = "TEXT";
|
|
107
|
-
AlertRuleValueKind["TEXT_LIST"] = "TEXT_LIST";
|
|
108
|
-
AlertRuleValueKind["INTEGER"] = "INTEGER";
|
|
109
|
-
AlertRuleValueKind["INTEGER_LIST"] = "INTEGER_LIST";
|
|
110
|
-
AlertRuleValueKind["NUMBER"] = "NUMBER";
|
|
111
|
-
AlertRuleValueKind["SCALAR"] = "SCALAR";
|
|
112
|
-
AlertRuleValueKind["TEXT_OR_NUMBER_LIST"] = "TEXT_OR_NUMBER_LIST";
|
|
113
|
-
AlertRuleValueKind["REGEX"] = "REGEX";
|
|
114
|
-
})(AlertRuleValueKind || (exports.AlertRuleValueKind = AlertRuleValueKind = {}));
|
|
115
|
-
const alertRuleValueKindOf = (field, operator) => {
|
|
116
|
-
if (PRESENCE_OPERATORS.includes(operator)) {
|
|
117
|
-
return AlertRuleValueKind.NONE;
|
|
118
|
-
}
|
|
119
|
-
if (operator === enum_1.AlertRuleOperator.MATCHES) {
|
|
120
|
-
return AlertRuleValueKind.REGEX;
|
|
121
|
-
}
|
|
122
|
-
const isList = operator === enum_1.AlertRuleOperator.IN || operator === enum_1.AlertRuleOperator.NOT_IN;
|
|
123
|
-
if (field === enum_1.AlertRuleField.LEVEL) {
|
|
124
|
-
return isList ? AlertRuleValueKind.LEVEL_LIST : AlertRuleValueKind.LEVEL;
|
|
125
|
-
}
|
|
126
|
-
if (field === enum_1.AlertRuleField.HTTP_STATUS) {
|
|
127
|
-
return isList ? AlertRuleValueKind.INTEGER_LIST : AlertRuleValueKind.INTEGER;
|
|
128
|
-
}
|
|
129
|
-
if (field === enum_1.AlertRuleErrorGroupField.ERROR_TYPE) {
|
|
130
|
-
return isList ? AlertRuleValueKind.ERROR_TYPE_LIST : AlertRuleValueKind.ERROR_TYPE;
|
|
131
|
-
}
|
|
132
|
-
if (field === enum_1.AlertRuleField.EMITTER) {
|
|
133
|
-
return isList ? AlertRuleValueKind.EMITTER_LIST : AlertRuleValueKind.EMITTER;
|
|
134
|
-
}
|
|
135
|
-
if (!(0, exports.isAlertRuleDataField)(field)) {
|
|
136
|
-
return isList ? AlertRuleValueKind.TEXT_LIST : AlertRuleValueKind.TEXT;
|
|
137
|
-
}
|
|
138
|
-
if (isList) {
|
|
139
|
-
return AlertRuleValueKind.TEXT_OR_NUMBER_LIST;
|
|
140
|
-
}
|
|
141
|
-
if (ORDER_OPERATORS.includes(operator)) {
|
|
142
|
-
return AlertRuleValueKind.NUMBER;
|
|
143
|
-
}
|
|
144
|
-
if (operator === enum_1.AlertRuleOperator.CONTAINS ||
|
|
145
|
-
operator === enum_1.AlertRuleOperator.STARTS_WITH ||
|
|
146
|
-
operator === enum_1.AlertRuleOperator.ENDS_WITH) {
|
|
147
|
-
return AlertRuleValueKind.TEXT;
|
|
148
|
-
}
|
|
149
|
-
return AlertRuleValueKind.SCALAR;
|
|
150
|
-
};
|
|
151
|
-
exports.alertRuleValueKindOf = alertRuleValueKindOf;
|
|
152
|
-
const encodeRegexValue = (source, flags) => `/${source}/${flags}`;
|
|
153
|
-
exports.encodeRegexValue = encodeRegexValue;
|
|
154
|
-
const decodeRegexValue = (value) => {
|
|
155
|
-
const closing = value.lastIndexOf('/');
|
|
156
|
-
if (!value.startsWith('/') || closing < 1) {
|
|
157
|
-
return null;
|
|
158
|
-
}
|
|
159
|
-
const flags = value.slice(closing + 1);
|
|
160
|
-
if (flags !== '' && flags !== 'i') {
|
|
161
|
-
return null;
|
|
162
|
-
}
|
|
163
|
-
return { source: value.slice(1, closing), flags };
|
|
164
|
-
};
|
|
165
|
-
exports.decodeRegexValue = decodeRegexValue;
|
|
166
|
-
const isFiniteNumber = (value) => typeof value === 'number' && Number.isFinite(value);
|
|
167
|
-
const checkText = (value) => {
|
|
168
|
-
if (typeof value !== 'string') {
|
|
169
|
-
return condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
170
|
-
}
|
|
171
|
-
return value.length > exports.ALERT_RULE_CONDITION_MAX_TEXT_LENGTH
|
|
172
|
-
? condition_types_1.AlertRuleConditionViolation.TEXT_TOO_LONG
|
|
173
|
-
: null;
|
|
174
|
-
};
|
|
175
|
-
const checkScalar = (kind, value) => {
|
|
176
|
-
switch (kind) {
|
|
177
|
-
case AlertRuleValueKind.LEVEL:
|
|
178
|
-
return isFiniteNumber(value) && LEVELS.has(value)
|
|
179
|
-
? null
|
|
180
|
-
: condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
181
|
-
case AlertRuleValueKind.ERROR_TYPE:
|
|
182
|
-
return typeof value === 'string' && ERROR_TYPES.has(value)
|
|
183
|
-
? null
|
|
184
|
-
: condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
185
|
-
case AlertRuleValueKind.EMITTER:
|
|
186
|
-
return isFiniteNumber(value) && EMITTERS.has(value)
|
|
187
|
-
? null
|
|
188
|
-
: condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
189
|
-
case AlertRuleValueKind.INTEGER:
|
|
190
|
-
return Number.isInteger(value) ? null : condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
191
|
-
case AlertRuleValueKind.NUMBER:
|
|
192
|
-
return isFiniteNumber(value) ? null : condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
193
|
-
case AlertRuleValueKind.TEXT:
|
|
194
|
-
return checkText(value);
|
|
195
|
-
case AlertRuleValueKind.SCALAR:
|
|
196
|
-
if (typeof value === 'string') {
|
|
197
|
-
return checkText(value);
|
|
198
|
-
}
|
|
199
|
-
return isFiniteNumber(value) || typeof value === 'boolean'
|
|
200
|
-
? null
|
|
201
|
-
: condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
202
|
-
default:
|
|
203
|
-
return condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
const LIST_ITEM_KIND = {
|
|
207
|
-
[AlertRuleValueKind.LEVEL_LIST]: AlertRuleValueKind.LEVEL,
|
|
208
|
-
[AlertRuleValueKind.ERROR_TYPE_LIST]: AlertRuleValueKind.ERROR_TYPE,
|
|
209
|
-
[AlertRuleValueKind.EMITTER_LIST]: AlertRuleValueKind.EMITTER,
|
|
210
|
-
[AlertRuleValueKind.INTEGER_LIST]: AlertRuleValueKind.INTEGER,
|
|
211
|
-
[AlertRuleValueKind.TEXT_LIST]: AlertRuleValueKind.TEXT,
|
|
212
|
-
};
|
|
213
|
-
const checkListItem = (kind, item) => {
|
|
214
|
-
if (kind === AlertRuleValueKind.TEXT_OR_NUMBER_LIST) {
|
|
215
|
-
return typeof item === 'string'
|
|
216
|
-
? checkText(item)
|
|
217
|
-
: checkScalar(AlertRuleValueKind.NUMBER, item);
|
|
218
|
-
}
|
|
219
|
-
const itemKind = LIST_ITEM_KIND[kind];
|
|
220
|
-
return itemKind === undefined
|
|
221
|
-
? condition_types_1.AlertRuleConditionViolation.INVALID_VALUE
|
|
222
|
-
: checkScalar(itemKind, item);
|
|
223
|
-
};
|
|
224
|
-
const checkRegex = (value) => {
|
|
225
|
-
if (typeof value !== 'string') {
|
|
226
|
-
return condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
227
|
-
}
|
|
228
|
-
const regex = (0, exports.decodeRegexValue)(value);
|
|
229
|
-
if (regex === null) {
|
|
230
|
-
return condition_types_1.AlertRuleConditionViolation.INVALID_REGEX;
|
|
231
|
-
}
|
|
232
|
-
if (regex.source.length > exports.ALERT_RULE_CONDITION_MAX_REGEX_LENGTH) {
|
|
233
|
-
return condition_types_1.AlertRuleConditionViolation.REGEX_TOO_LONG;
|
|
234
|
-
}
|
|
235
|
-
try {
|
|
236
|
-
(0, safe_regex_1.compileSafeRegex)(regex.source, regex.flags);
|
|
237
|
-
}
|
|
238
|
-
catch (error) {
|
|
239
|
-
if (error instanceof safe_regex_1.InvalidSafeRegexError) {
|
|
240
|
-
return condition_types_1.AlertRuleConditionViolation.INVALID_REGEX;
|
|
241
|
-
}
|
|
242
|
-
throw error;
|
|
243
|
-
}
|
|
244
|
-
return null;
|
|
245
|
-
};
|
|
246
|
-
const checkValue = (kind, value) => {
|
|
247
|
-
if (kind === AlertRuleValueKind.NONE) {
|
|
248
|
-
return value === undefined ? null : condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
249
|
-
}
|
|
250
|
-
if (kind === AlertRuleValueKind.REGEX) {
|
|
251
|
-
return checkRegex(value);
|
|
252
|
-
}
|
|
253
|
-
const isList = kind === AlertRuleValueKind.LEVEL_LIST ||
|
|
254
|
-
kind === AlertRuleValueKind.ERROR_TYPE_LIST ||
|
|
255
|
-
kind === AlertRuleValueKind.EMITTER_LIST ||
|
|
256
|
-
kind === AlertRuleValueKind.INTEGER_LIST ||
|
|
257
|
-
kind === AlertRuleValueKind.TEXT_LIST ||
|
|
258
|
-
kind === AlertRuleValueKind.TEXT_OR_NUMBER_LIST;
|
|
259
|
-
if (!isList) {
|
|
260
|
-
return checkScalar(kind, value);
|
|
261
|
-
}
|
|
262
|
-
if (!Array.isArray(value) || value.length === 0) {
|
|
263
|
-
return condition_types_1.AlertRuleConditionViolation.INVALID_VALUE;
|
|
264
|
-
}
|
|
265
|
-
if (value.length > exports.ALERT_RULE_CONDITION_MAX_IN_VALUES) {
|
|
266
|
-
return condition_types_1.AlertRuleConditionViolation.TOO_MANY_VALUES;
|
|
267
|
-
}
|
|
268
|
-
for (const item of value) {
|
|
269
|
-
const violation = checkListItem(kind, item);
|
|
270
|
-
if (violation !== null) {
|
|
271
|
-
return violation;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
return null;
|
|
275
|
-
};
|
|
276
|
-
const hasOnlyKeys = (node, keys) => Object.keys(node).every((key) => keys.includes(key));
|
|
277
|
-
const checkCompare = (node, evaluation) => {
|
|
278
|
-
const { field, operator, value } = node;
|
|
279
|
-
if (!hasOnlyKeys(node, ['op', 'field', 'operator', 'value'])) {
|
|
280
|
-
return condition_types_1.AlertRuleConditionViolation.MALFORMED_NODE;
|
|
281
|
-
}
|
|
282
|
-
if (typeof field !== 'string' || typeof operator !== 'string' || !OPERATORS.has(operator)) {
|
|
283
|
-
return condition_types_1.AlertRuleConditionViolation.MALFORMED_NODE;
|
|
284
|
-
}
|
|
285
|
-
if (field === 'data' || (0, exports.isAlertRuleDataField)(field)) {
|
|
286
|
-
if (!(0, exports.alertRuleReadsDataFields)(evaluation)) {
|
|
287
|
-
return condition_types_1.AlertRuleConditionViolation.UNKNOWN_FIELD;
|
|
288
|
-
}
|
|
289
|
-
if (!(0, exports.isValidAlertRuleDataPath)(field)) {
|
|
290
|
-
return condition_types_1.AlertRuleConditionViolation.INVALID_DATA_PATH;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
else if (!(0, exports.alertRuleFieldsFor)(evaluation).includes(field)) {
|
|
294
|
-
return condition_types_1.AlertRuleConditionViolation.UNKNOWN_FIELD;
|
|
295
|
-
}
|
|
296
|
-
const conditionField = field;
|
|
297
|
-
const conditionOperator = operator;
|
|
298
|
-
if (!(0, exports.alertRuleOperatorsFor)(conditionField).includes(conditionOperator)) {
|
|
299
|
-
return condition_types_1.AlertRuleConditionViolation.OPERATOR_NOT_ALLOWED;
|
|
300
|
-
}
|
|
301
|
-
return checkValue((0, exports.alertRuleValueKindOf)(conditionField, conditionOperator), value);
|
|
302
|
-
};
|
|
303
|
-
const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
304
|
-
const checkNode = (node, depth, counter, evaluation) => {
|
|
305
|
-
if (depth > exports.ALERT_RULE_CONDITION_MAX_DEPTH) {
|
|
306
|
-
return condition_types_1.AlertRuleConditionViolation.DEPTH_EXCEEDED;
|
|
307
|
-
}
|
|
308
|
-
counter.nodes += 1;
|
|
309
|
-
if (counter.nodes > exports.ALERT_RULE_CONDITION_MAX_NODES) {
|
|
310
|
-
return condition_types_1.AlertRuleConditionViolation.TOO_MANY_NODES;
|
|
311
|
-
}
|
|
312
|
-
if (!isObject(node)) {
|
|
313
|
-
return condition_types_1.AlertRuleConditionViolation.MALFORMED_NODE;
|
|
314
|
-
}
|
|
315
|
-
switch (node.op) {
|
|
316
|
-
case 'COMPARE':
|
|
317
|
-
return checkCompare(node, evaluation);
|
|
318
|
-
case 'NOT':
|
|
319
|
-
if (!hasOnlyKeys(node, ['op', 'child']) || !isObject(node.child)) {
|
|
320
|
-
return condition_types_1.AlertRuleConditionViolation.MALFORMED_NODE;
|
|
321
|
-
}
|
|
322
|
-
return checkNode(node.child, depth + 1, counter, evaluation);
|
|
323
|
-
case 'AND':
|
|
324
|
-
case 'OR': {
|
|
325
|
-
const { children } = node;
|
|
326
|
-
if (!hasOnlyKeys(node, ['op', 'children']) || !Array.isArray(children)) {
|
|
327
|
-
return condition_types_1.AlertRuleConditionViolation.MALFORMED_NODE;
|
|
328
|
-
}
|
|
329
|
-
if (children.length === 0) {
|
|
330
|
-
return condition_types_1.AlertRuleConditionViolation.EMPTY_GROUP;
|
|
331
|
-
}
|
|
332
|
-
for (const child of children) {
|
|
333
|
-
const violation = checkNode(child, depth + 1, counter, evaluation);
|
|
334
|
-
if (violation !== null) {
|
|
335
|
-
return violation;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
return null;
|
|
339
|
-
}
|
|
340
|
-
default:
|
|
341
|
-
return condition_types_1.AlertRuleConditionViolation.MALFORMED_NODE;
|
|
342
|
-
}
|
|
343
|
-
};
|
|
344
|
-
const validateConditionBounds = (c, evaluation = enum_1.AlertRuleEvaluation.WINDOW) => checkNode(c, 1, { nodes: 0 }, evaluation);
|
|
345
|
-
exports.validateConditionBounds = validateConditionBounds;
|
|
346
|
-
const isBuilderRow = (c) => c.op === 'COMPARE' || (c.op === 'NOT' && c.child.op === 'COMPARE');
|
|
347
|
-
const isBuilderLeafGroup = (c) => (c.op === 'AND' || c.op === 'OR') && c.children.every(isBuilderRow);
|
|
348
|
-
const isBuilderRepresentable = (c) => {
|
|
349
|
-
if (isBuilderRow(c) || isBuilderLeafGroup(c)) {
|
|
350
|
-
return true;
|
|
351
|
-
}
|
|
352
|
-
return ((c.op === 'AND' || c.op === 'OR') &&
|
|
353
|
-
c.children.every((child) => isBuilderRow(child) || isBuilderLeafGroup(child)));
|
|
354
|
-
};
|
|
355
|
-
exports.isBuilderRepresentable = isBuilderRepresentable;
|
|
356
|
-
//# sourceMappingURL=condition.bounds.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"condition.bounds.js","sourceRoot":"","sources":["../../src/rules/condition.bounds.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { AlertRuleEvaluation } from '../types/enum';
|
|
2
|
-
import { IAlertRuleCondition, IAlertRuleErrorGroupView, IAlertRuleLogView } from './condition.types';
|
|
3
|
-
export declare function compileCondition(c: IAlertRuleCondition, evaluation?: AlertRuleEvaluation.WINDOW | AlertRuleEvaluation.EACH_OCCURRENCE): (log: IAlertRuleLogView) => boolean;
|
|
4
|
-
export declare function compileCondition(c: IAlertRuleCondition, evaluation: AlertRuleEvaluation.ERROR_GROUP_EVENT): (group: IAlertRuleErrorGroupView) => boolean;
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compileCondition = compileCondition;
|
|
4
|
-
const enum_1 = require("../types/enum");
|
|
5
|
-
const condition_bounds_1 = require("./condition.bounds");
|
|
6
|
-
const condition_types_1 = require("./condition.types");
|
|
7
|
-
const safe_regex_1 = require("./safe-regex");
|
|
8
|
-
const ABSENT = { kind: 'ABSENT' };
|
|
9
|
-
const isPlainObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
10
|
-
const dataReader = (segments) => (view) => {
|
|
11
|
-
let current = view.data;
|
|
12
|
-
for (const segment of segments) {
|
|
13
|
-
if (!isPlainObject(current) || !Object.prototype.hasOwnProperty.call(current, segment)) {
|
|
14
|
-
return ABSENT;
|
|
15
|
-
}
|
|
16
|
-
current = current[segment];
|
|
17
|
-
}
|
|
18
|
-
return current === null || current === undefined ? ABSENT : { kind: 'PRESENT', value: current };
|
|
19
|
-
};
|
|
20
|
-
const columnReader = (field) => (view) => {
|
|
21
|
-
const value = view[field];
|
|
22
|
-
return value === null || value === undefined ? ABSENT : { kind: 'PRESENT', value };
|
|
23
|
-
};
|
|
24
|
-
const readerFor = (field) => (0, condition_bounds_1.isAlertRuleDataField)(field)
|
|
25
|
-
? dataReader(field.slice('data.'.length).split('.'))
|
|
26
|
-
: columnReader(field);
|
|
27
|
-
const valueTest = (field, operator, operand) => {
|
|
28
|
-
const severityOrder = field === enum_1.AlertRuleField.LEVEL ? -1 : 1;
|
|
29
|
-
const numeric = (compare) => (value) => typeof value === 'number' &&
|
|
30
|
-
compare(value * severityOrder, operand * severityOrder);
|
|
31
|
-
const lowered = typeof operand === 'string' ? operand.toLowerCase() : '';
|
|
32
|
-
const text = (test) => (value) => typeof value === 'string' && test(value.toLowerCase());
|
|
33
|
-
switch (operator) {
|
|
34
|
-
case enum_1.AlertRuleOperator.EQUALS:
|
|
35
|
-
return (value) => value === operand;
|
|
36
|
-
case enum_1.AlertRuleOperator.NOT_EQUALS:
|
|
37
|
-
return (value) => value !== operand;
|
|
38
|
-
case enum_1.AlertRuleOperator.IN:
|
|
39
|
-
return (value) => operand.includes(value);
|
|
40
|
-
case enum_1.AlertRuleOperator.NOT_IN:
|
|
41
|
-
return (value) => !operand.includes(value);
|
|
42
|
-
case enum_1.AlertRuleOperator.GT:
|
|
43
|
-
return numeric((a, b) => a > b);
|
|
44
|
-
case enum_1.AlertRuleOperator.GTE:
|
|
45
|
-
return numeric((a, b) => a >= b);
|
|
46
|
-
case enum_1.AlertRuleOperator.LT:
|
|
47
|
-
return numeric((a, b) => a < b);
|
|
48
|
-
case enum_1.AlertRuleOperator.LTE:
|
|
49
|
-
return numeric((a, b) => a <= b);
|
|
50
|
-
case enum_1.AlertRuleOperator.CONTAINS:
|
|
51
|
-
return text((value) => value.includes(lowered));
|
|
52
|
-
case enum_1.AlertRuleOperator.STARTS_WITH:
|
|
53
|
-
return text((value) => value.startsWith(lowered));
|
|
54
|
-
case enum_1.AlertRuleOperator.ENDS_WITH:
|
|
55
|
-
return text((value) => value.endsWith(lowered));
|
|
56
|
-
case enum_1.AlertRuleOperator.MATCHES: {
|
|
57
|
-
const { source, flags } = (0, condition_bounds_1.decodeRegexValue)(operand);
|
|
58
|
-
const regex = (0, safe_regex_1.compileSafeRegex)(source, flags);
|
|
59
|
-
return (value) => typeof value === 'string' && regex.test(value);
|
|
60
|
-
}
|
|
61
|
-
case enum_1.AlertRuleOperator.EXISTS:
|
|
62
|
-
return () => true;
|
|
63
|
-
case enum_1.AlertRuleOperator.NOT_EXISTS:
|
|
64
|
-
return () => false;
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
const compileCompare = (c) => {
|
|
68
|
-
const read = readerFor(c.field);
|
|
69
|
-
const test = valueTest(c.field, c.operator, c.value);
|
|
70
|
-
const whenAbsent = c.operator === enum_1.AlertRuleOperator.NOT_EXISTS;
|
|
71
|
-
return (view) => {
|
|
72
|
-
const result = read(view);
|
|
73
|
-
return result.kind === 'PRESENT' ? test(result.value) : whenAbsent;
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
const compile = (c) => {
|
|
77
|
-
switch (c.op) {
|
|
78
|
-
case 'COMPARE':
|
|
79
|
-
return compileCompare(c);
|
|
80
|
-
case 'NOT': {
|
|
81
|
-
const child = compile(c.child);
|
|
82
|
-
return (view) => !child(view);
|
|
83
|
-
}
|
|
84
|
-
case 'AND': {
|
|
85
|
-
const children = c.children.map(compile);
|
|
86
|
-
return (view) => children.every((child) => child(view));
|
|
87
|
-
}
|
|
88
|
-
case 'OR': {
|
|
89
|
-
const children = c.children.map(compile);
|
|
90
|
-
return (view) => children.some((child) => child(view));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
function compileCondition(c, evaluation = enum_1.AlertRuleEvaluation.WINDOW) {
|
|
95
|
-
const violation = (0, condition_bounds_1.validateConditionBounds)(c, evaluation);
|
|
96
|
-
if (violation !== null) {
|
|
97
|
-
throw new condition_types_1.InvalidAlertRuleConditionError(violation);
|
|
98
|
-
}
|
|
99
|
-
return compile(c);
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=condition.compiler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"condition.compiler.js","sourceRoot":"","sources":["../../src/rules/condition.compiler.ts"],"names":[],"mappings":"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"}
|