@cloudcare/codemirror-dql 0.0.57 → 0.0.61
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/cjs/complete/dql.terms.d.ts +6 -0
- package/dist/cjs/complete/dql.terms.js +60 -4
- package/dist/cjs/complete/dql.terms.js.map +1 -1
- package/dist/cjs/complete/hybrid.d.ts +2 -1
- package/dist/cjs/complete/hybrid.js +49 -5
- package/dist/cjs/complete/hybrid.js.map +1 -1
- package/dist/cjs/complete/studioql.d.ts +3 -0
- package/dist/cjs/complete/studioql.js +159 -0
- package/dist/cjs/complete/studioql.js.map +1 -0
- package/dist/cjs/parser/parser.d.ts +16 -0
- package/dist/cjs/parser/parser.js +625 -30
- package/dist/cjs/parser/parser.js.map +1 -1
- package/dist/esm/complete/dql.terms.d.ts +6 -0
- package/dist/esm/complete/dql.terms.js +22 -1
- package/dist/esm/complete/dql.terms.js.map +1 -1
- package/dist/esm/complete/hybrid.d.ts +2 -1
- package/dist/esm/complete/hybrid.js +51 -7
- package/dist/esm/complete/hybrid.js.map +1 -1
- package/dist/esm/complete/studioql.d.ts +3 -0
- package/dist/esm/complete/studioql.js +144 -0
- package/dist/esm/complete/studioql.js.map +1 -0
- package/dist/esm/parser/parser.d.ts +16 -0
- package/dist/esm/parser/parser.js +588 -28
- package/dist/esm/parser/parser.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { snippet } from '@codemirror/autocomplete';
|
|
2
|
+
import { syntaxTree } from '@codemirror/language';
|
|
3
|
+
const incidentsFunctions = [
|
|
4
|
+
{ name: 'incidents_total_count', info: 'Total incident count' },
|
|
5
|
+
{ name: 'open_incidents_count', info: 'Open incident count' },
|
|
6
|
+
{ name: 'working_incidents_count', info: 'Working incident count' },
|
|
7
|
+
{ name: 'incidents_duration_by_assignee', info: 'Incident duration by assignee', extraParameter: 'top' },
|
|
8
|
+
{ name: 'unresolved_incidents_assignee_distribution', info: 'Unresolved incident distribution by assignee' },
|
|
9
|
+
{ name: 'incidents_count_distribution_by_level', info: 'Incident count distribution by level' },
|
|
10
|
+
{ name: 'incidents_count_by_assignee', info: 'Incident count by assignee', extraParameter: 'top' },
|
|
11
|
+
{ name: 'max_incidents_duration', info: 'Maximum incident duration' },
|
|
12
|
+
{ name: 'unresolved_incidents_list', info: 'Unresolved incident list', extraParameter: 'limit' },
|
|
13
|
+
{ name: 'resolved_issue_count', info: 'Resolved issue count' },
|
|
14
|
+
];
|
|
15
|
+
export const studioQLNamespaceTerm = {
|
|
16
|
+
label: 'STUDIOQL',
|
|
17
|
+
type: 'namespace',
|
|
18
|
+
detail: 'Studio query',
|
|
19
|
+
apply: 'STUDIOQL.',
|
|
20
|
+
};
|
|
21
|
+
export function completeStudioQuery(context) {
|
|
22
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
23
|
+
const { state, pos } = context;
|
|
24
|
+
const tree = syntaxTree(state);
|
|
25
|
+
const query = (_a = tree.topNode.getChild('QueryExpr')) === null || _a === void 0 ? void 0 : _a.getChild('StudioQuery');
|
|
26
|
+
if (!query || pos < query.from)
|
|
27
|
+
return null;
|
|
28
|
+
const endTime = Date.now();
|
|
29
|
+
const timeRangeSnippet = `time_range=[\${1:${endTime - 60 * 60 * 1000}}, \${2:${endTime}}]`;
|
|
30
|
+
const parameterSnippets = {
|
|
31
|
+
time_range: timeRangeSnippet,
|
|
32
|
+
top: "top='${3:10}'",
|
|
33
|
+
limit: "limit='${3:500}'",
|
|
34
|
+
};
|
|
35
|
+
const result = (from, to, options) => ({
|
|
36
|
+
from,
|
|
37
|
+
to,
|
|
38
|
+
options,
|
|
39
|
+
validFor: /^[a-zA-Z0-9_]*$/,
|
|
40
|
+
});
|
|
41
|
+
const empty = () => result(pos, pos, []);
|
|
42
|
+
if (tree.resolve(pos, -1).name === 'LineComment')
|
|
43
|
+
return empty();
|
|
44
|
+
const skipTrivia = (from) => {
|
|
45
|
+
while (from < state.doc.length) {
|
|
46
|
+
const comment = tree.resolve(from, 1);
|
|
47
|
+
if (comment.name === 'LineComment' && comment.to > from) {
|
|
48
|
+
from = comment.to;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const whitespace = state.sliceDoc(from).match(/^\s+/);
|
|
52
|
+
if (!whitespace)
|
|
53
|
+
break;
|
|
54
|
+
from += whitespace[0].length;
|
|
55
|
+
}
|
|
56
|
+
return from;
|
|
57
|
+
};
|
|
58
|
+
const hasFollowing = (to, char) => {
|
|
59
|
+
const next = skipTrivia(to);
|
|
60
|
+
return state.sliceDoc(next, next + 1) === char;
|
|
61
|
+
};
|
|
62
|
+
const completeDotGap = (from, nextFrom) => {
|
|
63
|
+
if (pos <= from || (nextFrom !== undefined && pos >= nextFrom))
|
|
64
|
+
return null;
|
|
65
|
+
const dot = skipTrivia(from);
|
|
66
|
+
if (state.sliceDoc(dot, dot + 1) !== '.')
|
|
67
|
+
return result(pos, pos, [{ label: '.', apply: '.' }]);
|
|
68
|
+
return pos <= dot ? empty() : null;
|
|
69
|
+
};
|
|
70
|
+
const prefix = query.getChild('StudioQL');
|
|
71
|
+
const module = query.getChild('StudioModule');
|
|
72
|
+
const func = query.getChild('StudioFunction');
|
|
73
|
+
const body = query.getChild('StudioCallBody');
|
|
74
|
+
if (prefix && pos <= prefix.to) {
|
|
75
|
+
return result(prefix.from, prefix.to, [{ ...studioQLNamespaceTerm, apply: hasFollowing(prefix.to, '.') ? 'STUDIOQL' : 'STUDIOQL.' }]);
|
|
76
|
+
}
|
|
77
|
+
const moduleGap = prefix && completeDotGap(prefix.to, module === null || module === void 0 ? void 0 : module.from);
|
|
78
|
+
if (moduleGap)
|
|
79
|
+
return moduleGap;
|
|
80
|
+
if (!module || pos <= module.to) {
|
|
81
|
+
const from = Math.min((_b = module === null || module === void 0 ? void 0 : module.from) !== null && _b !== void 0 ? _b : pos, pos);
|
|
82
|
+
const to = (_c = module === null || module === void 0 ? void 0 : module.to) !== null && _c !== void 0 ? _c : pos;
|
|
83
|
+
return result(from, to, [{ label: 'incidents', type: 'namespace', apply: hasFollowing(to, '.') ? 'incidents' : 'incidents.' }]);
|
|
84
|
+
}
|
|
85
|
+
if (state.sliceDoc(module.from, module.to).toLowerCase() !== 'incidents')
|
|
86
|
+
return empty();
|
|
87
|
+
const functionGap = completeDotGap(module.to, func === null || func === void 0 ? void 0 : func.from);
|
|
88
|
+
if (functionGap)
|
|
89
|
+
return functionGap;
|
|
90
|
+
if (!func || pos <= func.to || (!body && !state.sliceDoc(func.to, pos).trim())) {
|
|
91
|
+
const from = Math.min((_d = func === null || func === void 0 ? void 0 : func.from) !== null && _d !== void 0 ? _d : pos, pos);
|
|
92
|
+
const to = (_e = func === null || func === void 0 ? void 0 : func.to) !== null && _e !== void 0 ? _e : pos;
|
|
93
|
+
return result(from, to, incidentsFunctions.map((fn) => ({
|
|
94
|
+
label: fn.name,
|
|
95
|
+
type: 'function',
|
|
96
|
+
detail: fn.extraParameter ? `(time_range, ${fn.extraParameter})` : '(time_range)',
|
|
97
|
+
info: fn.info,
|
|
98
|
+
apply: hasFollowing(to, '(')
|
|
99
|
+
? fn.name
|
|
100
|
+
: snippet(`${fn.name}(${timeRangeSnippet}${fn.extraParameter ? ', ' + parameterSnippets[fn.extraParameter] : ''})`),
|
|
101
|
+
})));
|
|
102
|
+
}
|
|
103
|
+
if (!body)
|
|
104
|
+
return empty();
|
|
105
|
+
const fn = incidentsFunctions.find((fn) => fn.name === state.sliceDoc(func.from, func.to).toLowerCase());
|
|
106
|
+
if (!fn || pos <= body.from || (pos >= body.to && state.sliceDoc(body.to - 1, body.to) === ')'))
|
|
107
|
+
return empty();
|
|
108
|
+
const args = body.getChildren('StudioArgument');
|
|
109
|
+
const current = (_f = args.find((arg) => arg.from <= pos && pos <= arg.to)) !== null && _f !== void 0 ? _f : args.find((arg) => arg.from === skipTrivia(pos));
|
|
110
|
+
const identifier = current === null || current === void 0 ? void 0 : current.getChild('Identifier');
|
|
111
|
+
if (current && (!identifier || pos > identifier.to))
|
|
112
|
+
return empty();
|
|
113
|
+
if (identifier && pos < identifier.from && !(current === null || current === void 0 ? void 0 : current.getChild('EqlSingle')))
|
|
114
|
+
return empty();
|
|
115
|
+
if (!current) {
|
|
116
|
+
const previous = args.filter((arg) => arg.to < pos).pop();
|
|
117
|
+
let slot = skipTrivia((_g = previous === null || previous === void 0 ? void 0 : previous.to) !== null && _g !== void 0 ? _g : body.from + 1);
|
|
118
|
+
if (previous) {
|
|
119
|
+
if (slot >= pos || state.sliceDoc(slot, slot + 1) !== ',')
|
|
120
|
+
return empty();
|
|
121
|
+
slot = skipTrivia(slot + 1);
|
|
122
|
+
}
|
|
123
|
+
if (slot < pos)
|
|
124
|
+
return empty();
|
|
125
|
+
}
|
|
126
|
+
const used = new Set(args
|
|
127
|
+
.filter((arg) => arg !== current && arg.getChild('EqlSingle'))
|
|
128
|
+
.map((arg) => {
|
|
129
|
+
const key = arg.getChild('Identifier');
|
|
130
|
+
return key ? state.sliceDoc(key.from, key.to).toLowerCase() : '';
|
|
131
|
+
}));
|
|
132
|
+
const parameters = fn.extraParameter ? ['time_range', fn.extraParameter] : ['time_range'];
|
|
133
|
+
const from = Math.min((_h = identifier === null || identifier === void 0 ? void 0 : identifier.from) !== null && _h !== void 0 ? _h : pos, pos);
|
|
134
|
+
const leadingTrivia = identifier ? state.sliceDoc(from, identifier.from) : '';
|
|
135
|
+
return result(from, (_j = identifier === null || identifier === void 0 ? void 0 : identifier.to) !== null && _j !== void 0 ? _j : pos, parameters
|
|
136
|
+
.filter((name) => !used.has(name))
|
|
137
|
+
.map((name) => ({
|
|
138
|
+
label: name,
|
|
139
|
+
type: 'property',
|
|
140
|
+
detail: name === 'time_range' ? '[start_time, end_time]' : 'string',
|
|
141
|
+
apply: (current === null || current === void 0 ? void 0 : current.getChild('EqlSingle')) ? leadingTrivia + name : snippet(parameterSnippets[name]),
|
|
142
|
+
})));
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=studioql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studioql.js","sourceRoot":"","sources":["../../../src/complete/studioql.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ export declare class Parser {
|
|
|
15
15
|
private quotedQueryDelimiterInfo;
|
|
16
16
|
private caseResultDiagnostics;
|
|
17
17
|
private caseResultRecoveryErrors;
|
|
18
|
+
private caseShiftPresence;
|
|
18
19
|
constructor(state: EditorState, deadline?: number);
|
|
19
20
|
getDiagnostics(): Diagnostic[];
|
|
20
21
|
analyze(): void;
|
|
@@ -60,6 +61,7 @@ export declare class Parser {
|
|
|
60
61
|
private maskLineComments;
|
|
61
62
|
private maskStringsAndLineComments;
|
|
62
63
|
private containsError;
|
|
64
|
+
private firstErrorFrom;
|
|
63
65
|
private looksLikeProjectionAfterMissingColon;
|
|
64
66
|
private containsNode;
|
|
65
67
|
private findAncestor;
|
|
@@ -93,22 +95,36 @@ export declare class Parser {
|
|
|
93
95
|
private findStringNewlineRecovery;
|
|
94
96
|
checkAST(node: SyntaxNode | null): void;
|
|
95
97
|
private checkDuplicateQueryClauses;
|
|
98
|
+
private checkQueryShiftPlacement;
|
|
99
|
+
private checkExpressionShiftOffsets;
|
|
100
|
+
private checkShiftDuration;
|
|
101
|
+
private checkShiftExpression;
|
|
102
|
+
private checkEvalFieldReferenceContext;
|
|
103
|
+
private checkEvalReferences;
|
|
96
104
|
private checkDuplicateShowClauses;
|
|
97
105
|
private checkIntegerClause;
|
|
98
106
|
private checkTimeRangeShape;
|
|
99
107
|
private checkBareRollup;
|
|
100
108
|
private checkRollupFunctionCall;
|
|
101
109
|
private checkFunctionCall;
|
|
110
|
+
private functionArityMessage;
|
|
102
111
|
private checkOuterFunctionCall;
|
|
103
112
|
private checkProjectionAlias;
|
|
104
113
|
private checkFilterSubqueryOperator;
|
|
105
114
|
private checkFieldName;
|
|
106
115
|
private checkCaseFunction;
|
|
116
|
+
private caseContainsShift;
|
|
107
117
|
private checkCaseResults;
|
|
108
118
|
private checkShowFunctionRequirements;
|
|
109
119
|
private pushSemanticDiagnostic;
|
|
110
120
|
private pushSemanticDiagnosticAt;
|
|
111
121
|
private directChildren;
|
|
122
|
+
private descendantsNamed;
|
|
123
|
+
private shiftOperandFunctionCalls;
|
|
124
|
+
private errorDescendantsWithText;
|
|
125
|
+
private functionCallName;
|
|
126
|
+
private isPositiveFixedDuration;
|
|
127
|
+
private fixedDurationMilliseconds;
|
|
112
128
|
private numericValue;
|
|
113
129
|
private splitTopLevelSegments;
|
|
114
130
|
private describeUnknownFunction;
|