@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.bounds.js","sourceRoot":"","sources":["../../src/rules/condition.bounds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { IAlertRuleCondition, IAlertRuleLogView } from './condition.types';
2
+ type Predicate = (log: IAlertRuleLogView) => boolean;
3
+ export declare const compileCondition: (c: IAlertRuleCondition) => Predicate;
4
+ export {};
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compileCondition = void 0;
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) => (log) => {
11
+ let current = log.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) => (log) => {
21
+ const value = log[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 (log) => {
72
+ const result = read(log);
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 (log) => !child(log);
83
+ }
84
+ case 'AND': {
85
+ const children = c.children.map(compile);
86
+ return (log) => children.every((child) => child(log));
87
+ }
88
+ case 'OR': {
89
+ const children = c.children.map(compile);
90
+ return (log) => children.some((child) => child(log));
91
+ }
92
+ }
93
+ };
94
+ const compileCondition = (c) => {
95
+ const violation = (0, condition_bounds_1.validateConditionBounds)(c);
96
+ if (violation !== null) {
97
+ throw new condition_types_1.InvalidAlertRuleConditionError(violation);
98
+ }
99
+ return compile(c);
100
+ };
101
+ exports.compileCondition = compileCondition;
102
+ //# sourceMappingURL=condition.compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.compiler.js","sourceRoot":"","sources":["../../src/rules/condition.compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ParseConditionResult } from './condition.types';
2
+ export declare const parseCondition: (text: string) => ParseConditionResult;
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCondition = void 0;
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 MAX_PARSE_NESTING = 32;
9
+ const FIELD_BY_LOWER_NAME = new Map(Object.values(enum_1.AlertRuleField).map((field) => [field.toLowerCase(), field]));
10
+ const NUMBER_PATTERN = /-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/y;
11
+ const isIdentifierStart = (ch) => ch !== undefined && /[A-Za-z_]/.test(ch);
12
+ const isIdentifierPart = (ch) => ch !== undefined && /[A-Za-z0-9_]/.test(ch);
13
+ const isPathPart = (ch) => ch !== undefined && /[A-Za-z0-9_-]/.test(ch);
14
+ class ConditionSyntaxError {
15
+ constructor(position, expected) {
16
+ this.position = position;
17
+ this.expected = expected;
18
+ }
19
+ }
20
+ class ConditionParser {
21
+ constructor(text) {
22
+ this.text = text;
23
+ this.pos = 0;
24
+ this.nesting = 0;
25
+ }
26
+ parse() {
27
+ const condition = this.parseOr();
28
+ this.skipWhitespace();
29
+ if (this.pos < this.text.length) {
30
+ this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.END);
31
+ }
32
+ return condition;
33
+ }
34
+ fail(position, expected) {
35
+ throw new ConditionSyntaxError(position, expected);
36
+ }
37
+ skipWhitespace() {
38
+ while (this.pos < this.text.length && /\s/.test(this.text[this.pos])) {
39
+ this.pos += 1;
40
+ }
41
+ }
42
+ atKeyword(keyword) {
43
+ const candidate = this.text.slice(this.pos, this.pos + keyword.length);
44
+ return (candidate.toUpperCase() === keyword && !isIdentifierPart(this.text[this.pos + keyword.length]));
45
+ }
46
+ acceptKeyword(keyword) {
47
+ this.skipWhitespace();
48
+ if (!this.atKeyword(keyword)) {
49
+ return false;
50
+ }
51
+ this.pos += keyword.length;
52
+ return true;
53
+ }
54
+ enterNesting(position) {
55
+ this.nesting += 1;
56
+ if (this.nesting > MAX_PARSE_NESTING) {
57
+ this.fail(position, condition_types_1.AlertRuleConditionExpected.SHALLOWER_NESTING);
58
+ }
59
+ }
60
+ parseOr() {
61
+ const children = [this.parseAnd()];
62
+ while (this.acceptKeyword('OR')) {
63
+ children.push(this.parseAnd());
64
+ }
65
+ return children.length === 1 ? children[0] : { op: 'OR', children };
66
+ }
67
+ parseAnd() {
68
+ const children = [this.parseUnary()];
69
+ while (this.acceptKeyword('AND')) {
70
+ children.push(this.parseUnary());
71
+ }
72
+ return children.length === 1 ? children[0] : { op: 'AND', children };
73
+ }
74
+ parseUnary() {
75
+ this.skipWhitespace();
76
+ const start = this.pos;
77
+ if (this.atKeyword('NOT')) {
78
+ this.enterNesting(start);
79
+ this.pos += 'NOT'.length;
80
+ const child = this.parseUnary();
81
+ this.nesting -= 1;
82
+ return { op: 'NOT', child };
83
+ }
84
+ if (this.text[this.pos] === '(') {
85
+ this.enterNesting(start);
86
+ this.pos += 1;
87
+ const inner = this.parseOr();
88
+ this.skipWhitespace();
89
+ if (this.text[this.pos] !== ')') {
90
+ this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.CLOSING_PAREN);
91
+ }
92
+ this.pos += 1;
93
+ this.nesting -= 1;
94
+ return inner;
95
+ }
96
+ return this.parseCompare();
97
+ }
98
+ parseCompare() {
99
+ const field = this.readField();
100
+ this.skipWhitespace();
101
+ const operatorStart = this.pos;
102
+ const operator = this.readOperator();
103
+ if (!(0, condition_bounds_1.alertRuleOperatorsFor)(field).includes(operator)) {
104
+ this.fail(operatorStart, condition_types_1.AlertRuleConditionExpected.OPERATOR_FOR_FIELD);
105
+ }
106
+ const kind = (0, condition_bounds_1.alertRuleValueKindOf)(field, operator);
107
+ if (kind === condition_bounds_1.AlertRuleValueKind.NONE) {
108
+ return { op: 'COMPARE', field, operator };
109
+ }
110
+ this.skipWhitespace();
111
+ return { op: 'COMPARE', field, operator, value: this.readValue(kind) };
112
+ }
113
+ readIdentifier() {
114
+ const start = this.pos;
115
+ if (!isIdentifierStart(this.text[this.pos])) {
116
+ return '';
117
+ }
118
+ while (isIdentifierPart(this.text[this.pos])) {
119
+ this.pos += 1;
120
+ }
121
+ return this.text.slice(start, this.pos);
122
+ }
123
+ readField() {
124
+ const start = this.pos;
125
+ const name = this.readIdentifier().toLowerCase();
126
+ if (name === 'data') {
127
+ if (this.text[this.pos] !== '.') {
128
+ this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.DATA_PATH);
129
+ }
130
+ const segments = [];
131
+ while (this.text[this.pos] === '.') {
132
+ this.pos += 1;
133
+ const segmentStart = this.pos;
134
+ while (isPathPart(this.text[this.pos])) {
135
+ this.pos += 1;
136
+ }
137
+ if (this.pos === segmentStart) {
138
+ this.fail(segmentStart, condition_types_1.AlertRuleConditionExpected.DATA_PATH);
139
+ }
140
+ segments.push(this.text.slice(segmentStart, this.pos));
141
+ }
142
+ return `data.${segments.join('.')}`;
143
+ }
144
+ const field = FIELD_BY_LOWER_NAME.get(name);
145
+ if (field === undefined) {
146
+ this.fail(start, condition_types_1.AlertRuleConditionExpected.FIELD);
147
+ }
148
+ return field;
149
+ }
150
+ readOperator() {
151
+ const start = this.pos;
152
+ const ch = this.text[this.pos];
153
+ const next = this.text[this.pos + 1];
154
+ if (ch === '>' || ch === '<') {
155
+ const orEqual = next === '=';
156
+ this.pos += orEqual ? 2 : 1;
157
+ if (ch === '>') {
158
+ return orEqual ? enum_1.AlertRuleOperator.GTE : enum_1.AlertRuleOperator.GT;
159
+ }
160
+ return orEqual ? enum_1.AlertRuleOperator.LTE : enum_1.AlertRuleOperator.LT;
161
+ }
162
+ if (ch === '!' && next === '=') {
163
+ this.pos += 2;
164
+ return enum_1.AlertRuleOperator.NOT_EQUALS;
165
+ }
166
+ if (ch === '=') {
167
+ this.pos += 1;
168
+ return enum_1.AlertRuleOperator.EQUALS;
169
+ }
170
+ if (ch === '~') {
171
+ this.pos += 1;
172
+ return enum_1.AlertRuleOperator.MATCHES;
173
+ }
174
+ const word = this.readIdentifier().toUpperCase();
175
+ switch (word) {
176
+ case 'IN':
177
+ return enum_1.AlertRuleOperator.IN;
178
+ case 'EXISTS':
179
+ return enum_1.AlertRuleOperator.EXISTS;
180
+ case 'CONTAINS':
181
+ return enum_1.AlertRuleOperator.CONTAINS;
182
+ case 'NOT':
183
+ if (this.acceptKeyword('IN')) {
184
+ return enum_1.AlertRuleOperator.NOT_IN;
185
+ }
186
+ if (this.acceptKeyword('EXISTS')) {
187
+ return enum_1.AlertRuleOperator.NOT_EXISTS;
188
+ }
189
+ return this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.OPERATOR);
190
+ case 'STARTS':
191
+ case 'ENDS':
192
+ if (!this.acceptKeyword('WITH')) {
193
+ this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.OPERATOR);
194
+ }
195
+ return word === 'STARTS' ? enum_1.AlertRuleOperator.STARTS_WITH : enum_1.AlertRuleOperator.ENDS_WITH;
196
+ default:
197
+ return this.fail(start, condition_types_1.AlertRuleConditionExpected.OPERATOR);
198
+ }
199
+ }
200
+ readValue(kind) {
201
+ switch (kind) {
202
+ case condition_bounds_1.AlertRuleValueKind.LEVEL:
203
+ return this.readLevel();
204
+ case condition_bounds_1.AlertRuleValueKind.TEXT:
205
+ return this.readText(condition_types_1.AlertRuleConditionExpected.TEXT);
206
+ case condition_bounds_1.AlertRuleValueKind.INTEGER:
207
+ return this.readInteger();
208
+ case condition_bounds_1.AlertRuleValueKind.NUMBER:
209
+ return this.readNumber(condition_types_1.AlertRuleConditionExpected.NUMBER);
210
+ case condition_bounds_1.AlertRuleValueKind.SCALAR:
211
+ return this.readScalar();
212
+ case condition_bounds_1.AlertRuleValueKind.REGEX:
213
+ return this.readRegex();
214
+ case condition_bounds_1.AlertRuleValueKind.LEVEL_LIST:
215
+ return this.readList(() => this.readLevel());
216
+ case condition_bounds_1.AlertRuleValueKind.INTEGER_LIST:
217
+ return this.readList(() => this.readInteger());
218
+ case condition_bounds_1.AlertRuleValueKind.TEXT_LIST:
219
+ return this.readList(() => this.readText(condition_types_1.AlertRuleConditionExpected.TEXT));
220
+ case condition_bounds_1.AlertRuleValueKind.TEXT_OR_NUMBER_LIST:
221
+ return this.readList(() => this.text[this.pos] === '"'
222
+ ? this.readString()
223
+ : this.readNumber(condition_types_1.AlertRuleConditionExpected.TEXT_OR_NUMBER));
224
+ case condition_bounds_1.AlertRuleValueKind.NONE:
225
+ return this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.END);
226
+ }
227
+ }
228
+ readList(readItem) {
229
+ if (this.text[this.pos] !== '(') {
230
+ this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.LIST);
231
+ }
232
+ this.pos += 1;
233
+ const items = [];
234
+ for (;;) {
235
+ this.skipWhitespace();
236
+ items.push(readItem());
237
+ this.skipWhitespace();
238
+ if (this.text[this.pos] === ',') {
239
+ this.pos += 1;
240
+ }
241
+ else if (this.text[this.pos] === ')') {
242
+ this.pos += 1;
243
+ return items;
244
+ }
245
+ else {
246
+ this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.CLOSING_PAREN);
247
+ }
248
+ }
249
+ }
250
+ readLevel() {
251
+ const start = this.pos;
252
+ const name = this.readIdentifier().toUpperCase();
253
+ if (!Object.prototype.hasOwnProperty.call(condition_bounds_1.ALERT_RULE_LEVEL_NAMES, name)) {
254
+ this.fail(start, condition_types_1.AlertRuleConditionExpected.LEVEL_NAME);
255
+ }
256
+ return condition_bounds_1.ALERT_RULE_LEVEL_NAMES[name];
257
+ }
258
+ readText(expected) {
259
+ if (this.text[this.pos] !== '"') {
260
+ this.fail(this.pos, expected);
261
+ }
262
+ return this.readString();
263
+ }
264
+ readInteger() {
265
+ const start = this.pos;
266
+ const value = this.readNumber(condition_types_1.AlertRuleConditionExpected.INTEGER);
267
+ if (!Number.isInteger(value)) {
268
+ this.fail(start, condition_types_1.AlertRuleConditionExpected.INTEGER);
269
+ }
270
+ return value;
271
+ }
272
+ readScalar() {
273
+ if (this.text[this.pos] === '"') {
274
+ return this.readString();
275
+ }
276
+ for (const [keyword, value] of [
277
+ ['TRUE', true],
278
+ ['FALSE', false],
279
+ ]) {
280
+ if (this.atKeyword(keyword)) {
281
+ this.pos += keyword.length;
282
+ return value;
283
+ }
284
+ }
285
+ return this.readNumber(condition_types_1.AlertRuleConditionExpected.SCALAR);
286
+ }
287
+ readNumber(expected) {
288
+ NUMBER_PATTERN.lastIndex = this.pos;
289
+ const match = NUMBER_PATTERN.exec(this.text);
290
+ if (match === null) {
291
+ return this.fail(this.pos, expected);
292
+ }
293
+ const value = Number(match[0]);
294
+ if (!Number.isFinite(value)) {
295
+ this.fail(this.pos, expected);
296
+ }
297
+ this.pos += match[0].length;
298
+ return value === 0 ? 0 : value;
299
+ }
300
+ readString() {
301
+ const start = this.pos;
302
+ this.pos += 1;
303
+ let value = '';
304
+ for (;;) {
305
+ const ch = this.text[this.pos];
306
+ if (ch === undefined) {
307
+ return this.fail(start, condition_types_1.AlertRuleConditionExpected.CLOSING_QUOTE);
308
+ }
309
+ if (ch === '"') {
310
+ this.pos += 1;
311
+ return value;
312
+ }
313
+ if (ch === '\\') {
314
+ const escaped = this.text[this.pos + 1];
315
+ if (escaped === undefined) {
316
+ return this.fail(start, condition_types_1.AlertRuleConditionExpected.CLOSING_QUOTE);
317
+ }
318
+ if (escaped !== '"' && escaped !== '\\') {
319
+ return this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.STRING_ESCAPE);
320
+ }
321
+ value += escaped;
322
+ this.pos += 2;
323
+ }
324
+ else {
325
+ value += ch;
326
+ this.pos += 1;
327
+ }
328
+ }
329
+ }
330
+ readRegex() {
331
+ const start = this.pos;
332
+ if (this.text[this.pos] !== '/') {
333
+ return this.fail(start, condition_types_1.AlertRuleConditionExpected.REGEX);
334
+ }
335
+ this.pos += 1;
336
+ const sourceStart = this.pos;
337
+ for (;;) {
338
+ const ch = this.text[this.pos];
339
+ if (ch === undefined || (ch === '\\' && this.pos + 1 >= this.text.length)) {
340
+ return this.fail(start, condition_types_1.AlertRuleConditionExpected.CLOSING_SLASH);
341
+ }
342
+ if (ch === '/') {
343
+ break;
344
+ }
345
+ this.pos += ch === '\\' ? 2 : 1;
346
+ }
347
+ const source = this.text.slice(sourceStart, this.pos);
348
+ this.pos += 1;
349
+ let flags = '';
350
+ if (this.text[this.pos] === 'i') {
351
+ flags = 'i';
352
+ this.pos += 1;
353
+ }
354
+ if (isIdentifierPart(this.text[this.pos])) {
355
+ this.fail(this.pos, condition_types_1.AlertRuleConditionExpected.REGEX_FLAG);
356
+ }
357
+ try {
358
+ (0, safe_regex_1.compileSafeRegex)(source, flags);
359
+ }
360
+ catch (error) {
361
+ if (error instanceof safe_regex_1.InvalidSafeRegexError) {
362
+ this.fail(start, condition_types_1.AlertRuleConditionExpected.VALID_REGEX);
363
+ }
364
+ throw error;
365
+ }
366
+ return (0, condition_bounds_1.encodeRegexValue)(source, flags);
367
+ }
368
+ }
369
+ const parseCondition = (text) => {
370
+ try {
371
+ return { ok: true, condition: new ConditionParser(text).parse() };
372
+ }
373
+ catch (error) {
374
+ if (error instanceof ConditionSyntaxError) {
375
+ return { ok: false, error: { position: error.position, expected: error.expected } };
376
+ }
377
+ throw error;
378
+ }
379
+ };
380
+ exports.parseCondition = parseCondition;
381
+ //# sourceMappingURL=condition.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.parser.js","sourceRoot":"","sources":["../../src/rules/condition.parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { IAlertRuleCondition } from './condition.types';
2
+ export declare const printCondition: (c: IAlertRuleCondition) => string;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printCondition = void 0;
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 OPERATOR_TEXT = {
8
+ [enum_1.AlertRuleOperator.EQUALS]: '=',
9
+ [enum_1.AlertRuleOperator.NOT_EQUALS]: '!=',
10
+ [enum_1.AlertRuleOperator.GT]: '>',
11
+ [enum_1.AlertRuleOperator.GTE]: '>=',
12
+ [enum_1.AlertRuleOperator.LT]: '<',
13
+ [enum_1.AlertRuleOperator.LTE]: '<=',
14
+ [enum_1.AlertRuleOperator.MATCHES]: '~',
15
+ [enum_1.AlertRuleOperator.IN]: 'IN',
16
+ [enum_1.AlertRuleOperator.NOT_IN]: 'NOT IN',
17
+ [enum_1.AlertRuleOperator.CONTAINS]: 'CONTAINS',
18
+ [enum_1.AlertRuleOperator.STARTS_WITH]: 'STARTS WITH',
19
+ [enum_1.AlertRuleOperator.ENDS_WITH]: 'ENDS WITH',
20
+ [enum_1.AlertRuleOperator.EXISTS]: 'EXISTS',
21
+ [enum_1.AlertRuleOperator.NOT_EXISTS]: 'NOT EXISTS',
22
+ };
23
+ const LEVEL_NAME_BY_VALUE = new Map(Object.entries(condition_bounds_1.ALERT_RULE_LEVEL_NAMES).map(([name, level]) => [level, name]));
24
+ const printText = (value) => `"${value.replace(/[\\"]/g, (ch) => `\\${ch}`)}"`;
25
+ const printRegex = (value) => {
26
+ const { source, flags } = (0, condition_bounds_1.decodeRegexValue)(value);
27
+ let printed = '';
28
+ for (let i = 0; i < source.length; i++) {
29
+ const ch = source[i];
30
+ if (ch === '\\') {
31
+ printed += source.slice(i, i + 2);
32
+ i += 1;
33
+ }
34
+ else {
35
+ printed += ch === '/' ? '\\/' : ch;
36
+ }
37
+ }
38
+ return `/${printed}/${flags}`;
39
+ };
40
+ const printScalar = (field, value) => {
41
+ if (field === enum_1.AlertRuleField.LEVEL) {
42
+ return LEVEL_NAME_BY_VALUE.get(value);
43
+ }
44
+ if (typeof value === 'string') {
45
+ return printText(value);
46
+ }
47
+ return value.toString();
48
+ };
49
+ const printCompare = (c) => {
50
+ const head = `${c.field} ${OPERATOR_TEXT[c.operator]}`;
51
+ if (c.value === undefined) {
52
+ return head;
53
+ }
54
+ if (c.operator === enum_1.AlertRuleOperator.MATCHES) {
55
+ return `${head} ${printRegex(c.value)}`;
56
+ }
57
+ if (Array.isArray(c.value)) {
58
+ return `${head} (${c.value.map((item) => printScalar(c.field, item)).join(', ')})`;
59
+ }
60
+ return `${head} ${printScalar(c.field, c.value)}`;
61
+ };
62
+ const isGroup = (c) => c.op === 'AND' || c.op === 'OR';
63
+ const printOperand = (c) => (isGroup(c) ? `(${print(c)})` : print(c));
64
+ const print = (c) => {
65
+ switch (c.op) {
66
+ case 'COMPARE':
67
+ return printCompare(c);
68
+ case 'NOT':
69
+ return `NOT ${printOperand(c.child)}`;
70
+ case 'AND':
71
+ case 'OR':
72
+ return c.children.length === 1
73
+ ? printOperand(c.children[0])
74
+ : c.children.map(printOperand).join(` ${c.op} `);
75
+ }
76
+ };
77
+ const printCondition = (c) => {
78
+ const violation = (0, condition_bounds_1.validateConditionBounds)(c);
79
+ if (violation !== null) {
80
+ throw new condition_types_1.InvalidAlertRuleConditionError(violation);
81
+ }
82
+ return print(c);
83
+ };
84
+ exports.printCondition = printCondition;
85
+ //# sourceMappingURL=condition.printer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.printer.js","sourceRoot":"","sources":["../../src/rules/condition.printer.ts"],"names":[],"mappings":"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"}