@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.
@@ -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;