@abyss-project/monitor 6.5.0 → 6.6.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 (52) 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 -0
  5. package/dist/index.js +4 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/rules/condition.bounds.d.ts +35 -0
  8. package/dist/rules/condition.bounds.js +298 -0
  9. package/dist/rules/condition.bounds.js.map +1 -0
  10. package/dist/rules/condition.compiler.d.ts +4 -0
  11. package/dist/rules/condition.compiler.js +102 -0
  12. package/dist/rules/condition.compiler.js.map +1 -0
  13. package/dist/rules/condition.parser.d.ts +2 -0
  14. package/dist/rules/condition.parser.js +381 -0
  15. package/dist/rules/condition.parser.js.map +1 -0
  16. package/dist/rules/condition.printer.d.ts +2 -0
  17. package/dist/rules/condition.printer.js +85 -0
  18. package/dist/rules/condition.printer.js.map +1 -0
  19. package/dist/rules/condition.types.d.ts +74 -0
  20. package/dist/rules/condition.types.js +50 -0
  21. package/dist/rules/condition.types.js.map +1 -0
  22. package/dist/rules/index.d.ts +6 -0
  23. package/dist/rules/index.js +23 -0
  24. package/dist/rules/index.js.map +1 -0
  25. package/dist/rules/safe-regex.d.ts +9 -0
  26. package/dist/rules/safe-regex.js +28 -0
  27. package/dist/rules/safe-regex.js.map +1 -0
  28. package/dist/types/enum/alert-rule-evaluation.enum.d.ts +4 -0
  29. package/dist/types/enum/alert-rule-evaluation.enum.js +9 -0
  30. package/dist/types/enum/alert-rule-evaluation.enum.js.map +1 -0
  31. package/dist/types/enum/alert-rule-field.enum.d.ts +12 -0
  32. package/dist/types/enum/alert-rule-field.enum.js +15 -0
  33. package/dist/types/enum/alert-rule-field.enum.js.map +1 -0
  34. package/dist/types/enum/alert-rule-operator.enum.d.ts +16 -0
  35. package/dist/types/enum/alert-rule-operator.enum.js +21 -0
  36. package/dist/types/enum/alert-rule-operator.enum.js.map +1 -0
  37. package/dist/types/enum/api-error.enum.d.ts +2 -1
  38. package/dist/types/enum/api-error.enum.js +1 -0
  39. package/dist/types/enum/api-error.enum.js.map +1 -1
  40. package/dist/types/enum/index.d.ts +3 -0
  41. package/dist/types/enum/index.js +3 -0
  42. package/dist/types/enum/index.js.map +1 -1
  43. package/dist/types/enum/monitor-warning-code.enum.d.ts +5 -1
  44. package/dist/types/enum/monitor-warning-code.enum.js +6 -1
  45. package/dist/types/enum/monitor-warning-code.enum.js.map +1 -1
  46. package/dist/types/enum/notification-delivery-kind.enum.d.ts +2 -1
  47. package/dist/types/enum/notification-delivery-kind.enum.js +1 -0
  48. package/dist/types/enum/notification-delivery-kind.enum.js.map +1 -1
  49. package/dist/types/interface/api/requests/alert-rule.request.d.ts +13 -3
  50. package/dist/types/interface/api/responses/alert-rule.response.d.ts +1 -0
  51. package/dist/types/interface/models/monitor-alert-rule.model.d.ts +6 -1
  52. package/package.json +2 -1
@@ -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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"}
@@ -0,0 +1,74 @@
1
+ import { AlertRuleConditionField, AlertRuleOperator, LogLevel } from '../types/enum';
2
+ export type IAlertRuleCondition = {
3
+ op: 'AND' | 'OR';
4
+ children: IAlertRuleCondition[];
5
+ } | {
6
+ op: 'NOT';
7
+ child: IAlertRuleCondition;
8
+ } | {
9
+ op: 'COMPARE';
10
+ field: AlertRuleConditionField;
11
+ operator: AlertRuleOperator;
12
+ value?: string | number | boolean | Array<string | number>;
13
+ };
14
+ export interface IAlertRuleLogView {
15
+ level: LogLevel;
16
+ title: string | null;
17
+ message: string;
18
+ stack: string | null;
19
+ context: string | null;
20
+ scenario: string | null;
21
+ endpoint: string | null;
22
+ httpStatus: number | null;
23
+ data: unknown;
24
+ }
25
+ export declare enum AlertRuleConditionExpected {
26
+ FIELD = "FIELD",
27
+ DATA_PATH = "DATA_PATH",
28
+ OPERATOR = "OPERATOR",
29
+ OPERATOR_FOR_FIELD = "OPERATOR_FOR_FIELD",
30
+ LEVEL_NAME = "LEVEL_NAME",
31
+ TEXT = "TEXT",
32
+ NUMBER = "NUMBER",
33
+ INTEGER = "INTEGER",
34
+ SCALAR = "SCALAR",
35
+ TEXT_OR_NUMBER = "TEXT_OR_NUMBER",
36
+ LIST = "LIST",
37
+ REGEX = "REGEX",
38
+ REGEX_FLAG = "REGEX_FLAG",
39
+ VALID_REGEX = "VALID_REGEX",
40
+ CLOSING_QUOTE = "CLOSING_QUOTE",
41
+ STRING_ESCAPE = "STRING_ESCAPE",
42
+ CLOSING_SLASH = "CLOSING_SLASH",
43
+ CLOSING_PAREN = "CLOSING_PAREN",
44
+ END = "END",
45
+ SHALLOWER_NESTING = "SHALLOWER_NESTING"
46
+ }
47
+ export type ParseConditionResult = {
48
+ ok: true;
49
+ condition: IAlertRuleCondition;
50
+ } | {
51
+ ok: false;
52
+ error: {
53
+ position: number;
54
+ expected: AlertRuleConditionExpected;
55
+ };
56
+ };
57
+ export declare enum AlertRuleConditionViolation {
58
+ MALFORMED_NODE = "MALFORMED_NODE",
59
+ EMPTY_GROUP = "EMPTY_GROUP",
60
+ DEPTH_EXCEEDED = "DEPTH_EXCEEDED",
61
+ TOO_MANY_NODES = "TOO_MANY_NODES",
62
+ TEXT_TOO_LONG = "TEXT_TOO_LONG",
63
+ TOO_MANY_VALUES = "TOO_MANY_VALUES",
64
+ REGEX_TOO_LONG = "REGEX_TOO_LONG",
65
+ INVALID_REGEX = "INVALID_REGEX",
66
+ INVALID_DATA_PATH = "INVALID_DATA_PATH",
67
+ UNKNOWN_FIELD = "UNKNOWN_FIELD",
68
+ OPERATOR_NOT_ALLOWED = "OPERATOR_NOT_ALLOWED",
69
+ INVALID_VALUE = "INVALID_VALUE"
70
+ }
71
+ export declare class InvalidAlertRuleConditionError extends Error {
72
+ readonly violation: AlertRuleConditionViolation;
73
+ constructor(violation: AlertRuleConditionViolation);
74
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidAlertRuleConditionError = exports.AlertRuleConditionViolation = exports.AlertRuleConditionExpected = void 0;
4
+ var AlertRuleConditionExpected;
5
+ (function (AlertRuleConditionExpected) {
6
+ AlertRuleConditionExpected["FIELD"] = "FIELD";
7
+ AlertRuleConditionExpected["DATA_PATH"] = "DATA_PATH";
8
+ AlertRuleConditionExpected["OPERATOR"] = "OPERATOR";
9
+ AlertRuleConditionExpected["OPERATOR_FOR_FIELD"] = "OPERATOR_FOR_FIELD";
10
+ AlertRuleConditionExpected["LEVEL_NAME"] = "LEVEL_NAME";
11
+ AlertRuleConditionExpected["TEXT"] = "TEXT";
12
+ AlertRuleConditionExpected["NUMBER"] = "NUMBER";
13
+ AlertRuleConditionExpected["INTEGER"] = "INTEGER";
14
+ AlertRuleConditionExpected["SCALAR"] = "SCALAR";
15
+ AlertRuleConditionExpected["TEXT_OR_NUMBER"] = "TEXT_OR_NUMBER";
16
+ AlertRuleConditionExpected["LIST"] = "LIST";
17
+ AlertRuleConditionExpected["REGEX"] = "REGEX";
18
+ AlertRuleConditionExpected["REGEX_FLAG"] = "REGEX_FLAG";
19
+ AlertRuleConditionExpected["VALID_REGEX"] = "VALID_REGEX";
20
+ AlertRuleConditionExpected["CLOSING_QUOTE"] = "CLOSING_QUOTE";
21
+ AlertRuleConditionExpected["STRING_ESCAPE"] = "STRING_ESCAPE";
22
+ AlertRuleConditionExpected["CLOSING_SLASH"] = "CLOSING_SLASH";
23
+ AlertRuleConditionExpected["CLOSING_PAREN"] = "CLOSING_PAREN";
24
+ AlertRuleConditionExpected["END"] = "END";
25
+ AlertRuleConditionExpected["SHALLOWER_NESTING"] = "SHALLOWER_NESTING";
26
+ })(AlertRuleConditionExpected || (exports.AlertRuleConditionExpected = AlertRuleConditionExpected = {}));
27
+ var AlertRuleConditionViolation;
28
+ (function (AlertRuleConditionViolation) {
29
+ AlertRuleConditionViolation["MALFORMED_NODE"] = "MALFORMED_NODE";
30
+ AlertRuleConditionViolation["EMPTY_GROUP"] = "EMPTY_GROUP";
31
+ AlertRuleConditionViolation["DEPTH_EXCEEDED"] = "DEPTH_EXCEEDED";
32
+ AlertRuleConditionViolation["TOO_MANY_NODES"] = "TOO_MANY_NODES";
33
+ AlertRuleConditionViolation["TEXT_TOO_LONG"] = "TEXT_TOO_LONG";
34
+ AlertRuleConditionViolation["TOO_MANY_VALUES"] = "TOO_MANY_VALUES";
35
+ AlertRuleConditionViolation["REGEX_TOO_LONG"] = "REGEX_TOO_LONG";
36
+ AlertRuleConditionViolation["INVALID_REGEX"] = "INVALID_REGEX";
37
+ AlertRuleConditionViolation["INVALID_DATA_PATH"] = "INVALID_DATA_PATH";
38
+ AlertRuleConditionViolation["UNKNOWN_FIELD"] = "UNKNOWN_FIELD";
39
+ AlertRuleConditionViolation["OPERATOR_NOT_ALLOWED"] = "OPERATOR_NOT_ALLOWED";
40
+ AlertRuleConditionViolation["INVALID_VALUE"] = "INVALID_VALUE";
41
+ })(AlertRuleConditionViolation || (exports.AlertRuleConditionViolation = AlertRuleConditionViolation = {}));
42
+ class InvalidAlertRuleConditionError extends Error {
43
+ constructor(violation) {
44
+ super(`Invalid alert rule condition: ${violation}`);
45
+ this.violation = violation;
46
+ this.name = 'InvalidAlertRuleConditionError';
47
+ }
48
+ }
49
+ exports.InvalidAlertRuleConditionError = InvalidAlertRuleConditionError;
50
+ //# sourceMappingURL=condition.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.types.js","sourceRoot":"","sources":["../../src/rules/condition.types.ts"],"names":[],"mappings":";;;AAuCA,IAAY,0BA6BX;AA7BD,WAAY,0BAA0B;IACpC,6CAAe,CAAA;IAEf,qDAAuB,CAAA;IACvB,mDAAqB,CAAA;IAErB,uEAAyC,CAAA;IACzC,uDAAyB,CAAA;IACzB,2CAAa,CAAA;IACb,+CAAiB,CAAA;IACjB,iDAAmB,CAAA;IAEnB,+CAAiB,CAAA;IACjB,+DAAiC,CAAA;IAEjC,2CAAa,CAAA;IACb,6CAAe,CAAA;IAEf,uDAAyB,CAAA;IAEzB,yDAA2B,CAAA;IAC3B,6DAA+B,CAAA;IAE/B,6DAA+B,CAAA;IAC/B,6DAA+B,CAAA;IAC/B,6DAA+B,CAAA;IAC/B,yCAAW,CAAA;IAEX,qEAAuC,CAAA;AACzC,CAAC,EA7BW,0BAA0B,0CAA1B,0BAA0B,QA6BrC;AAOD,IAAY,2BAgBX;AAhBD,WAAY,2BAA2B;IAErC,gEAAiC,CAAA;IAEjC,0DAA2B,CAAA;IAC3B,gEAAiC,CAAA;IACjC,gEAAiC,CAAA;IACjC,8DAA+B,CAAA;IAC/B,kEAAmC,CAAA;IACnC,gEAAiC,CAAA;IACjC,8DAA+B,CAAA;IAC/B,sEAAuC,CAAA;IACvC,8DAA+B,CAAA;IAC/B,4EAA6C,CAAA;IAE7C,8DAA+B,CAAA;AACjC,CAAC,EAhBW,2BAA2B,2CAA3B,2BAA2B,QAgBtC;AAGD,MAAa,8BAA+B,SAAQ,KAAK;IACvD,YAA4B,SAAsC;QAChE,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;QAD1B,cAAS,GAAT,SAAS,CAA6B;QAEhE,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF;AALD,wEAKC"}
@@ -0,0 +1,6 @@
1
+ export * from './condition.types';
2
+ export * from './condition.bounds';
3
+ export * from './condition.parser';
4
+ export * from './condition.printer';
5
+ export * from './condition.compiler';
6
+ export * from './safe-regex';
@@ -0,0 +1,23 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./condition.types"), exports);
18
+ __exportStar(require("./condition.bounds"), exports);
19
+ __exportStar(require("./condition.parser"), exports);
20
+ __exportStar(require("./condition.printer"), exports);
21
+ __exportStar(require("./condition.compiler"), exports);
22
+ __exportStar(require("./safe-regex"), exports);
23
+ //# sourceMappingURL=index.js.map