trigger_system 1.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/LICENSE +21 -0
- package/README.md +127 -0
- package/dist/browser/index.browser.js +48 -0
- package/dist/browser/index.browser.js.map +122 -0
- package/dist/cli/lsp-server.d.ts +3 -0
- package/dist/cli/lsp-server.d.ts.map +1 -0
- package/dist/cli/validate.d.ts +2 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/core/action-registry.d.ts +12 -0
- package/dist/core/action-registry.d.ts.map +1 -0
- package/dist/core/context-adapter.d.ts +23 -0
- package/dist/core/context-adapter.d.ts.map +1 -0
- package/dist/core/dependency-graph.d.ts +18 -0
- package/dist/core/dependency-graph.d.ts.map +1 -0
- package/dist/core/engine.d.ts +24 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/event-queue.d.ts +25 -0
- package/dist/core/event-queue.d.ts.map +1 -0
- package/dist/core/expression-engine.d.ts +31 -0
- package/dist/core/expression-engine.d.ts.map +1 -0
- package/dist/core/index.d.ts +10 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/persistence-browser.d.ts +20 -0
- package/dist/core/persistence-browser.d.ts.map +1 -0
- package/dist/core/persistence.d.ts +34 -0
- package/dist/core/persistence.d.ts.map +1 -0
- package/dist/core/persistence.node.d.ts +18 -0
- package/dist/core/persistence.node.d.ts.map +1 -0
- package/dist/core/plugin-manager.d.ts +15 -0
- package/dist/core/plugin-manager.d.ts.map +1 -0
- package/dist/core/rule-engine.d.ts +39 -0
- package/dist/core/rule-engine.d.ts.map +1 -0
- package/dist/core/state-manager.d.ts +41 -0
- package/dist/core/state-manager.d.ts.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/validator.d.ts +2433 -0
- package/dist/domain/validator.d.ts.map +1 -0
- package/dist/index.browser.d.ts +6 -0
- package/dist/index.browser.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/io/index.d.ts +2 -0
- package/dist/io/index.d.ts.map +1 -0
- package/dist/io/loader.node.d.ts +14 -0
- package/dist/io/loader.node.d.ts.map +1 -0
- package/dist/lsp/completions.d.ts +6 -0
- package/dist/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/completions.js +624 -0
- package/dist/lsp/completions.js.map +1 -0
- package/dist/lsp/data-context.d.ts +60 -0
- package/dist/lsp/data-context.d.ts.map +1 -0
- package/dist/lsp/data-context.js +172 -0
- package/dist/lsp/data-context.js.map +1 -0
- package/dist/lsp/diagnostics.d.ts +7 -0
- package/dist/lsp/diagnostics.d.ts.map +1 -0
- package/dist/lsp/diagnostics.js +373 -0
- package/dist/lsp/diagnostics.js.map +1 -0
- package/dist/lsp/directives.d.ts +44 -0
- package/dist/lsp/directives.d.ts.map +1 -0
- package/dist/lsp/directives.js +232 -0
- package/dist/lsp/directives.js.map +1 -0
- package/dist/lsp/domain/index.d.ts +2 -0
- package/dist/lsp/domain/index.d.ts.map +1 -0
- package/dist/lsp/domain/index.js +18 -0
- package/dist/lsp/domain/index.js.map +1 -0
- package/dist/lsp/domain/validator.d.ts +2433 -0
- package/dist/lsp/domain/validator.d.ts.map +1 -0
- package/dist/lsp/domain/validator.js +225 -0
- package/dist/lsp/domain/validator.js.map +1 -0
- package/dist/lsp/hover.d.ts +7 -0
- package/dist/lsp/hover.d.ts.map +1 -0
- package/dist/lsp/hover.js +462 -0
- package/dist/lsp/hover.js.map +1 -0
- package/dist/lsp/lsp/completions.d.ts +6 -0
- package/dist/lsp/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/lsp/completions.js +624 -0
- package/dist/lsp/lsp/completions.js.map +1 -0
- package/dist/lsp/lsp/data-context.d.ts +60 -0
- package/dist/lsp/lsp/data-context.d.ts.map +1 -0
- package/dist/lsp/lsp/data-context.js +172 -0
- package/dist/lsp/lsp/data-context.js.map +1 -0
- package/dist/lsp/lsp/diagnostics.d.ts +7 -0
- package/dist/lsp/lsp/diagnostics.d.ts.map +1 -0
- package/dist/lsp/lsp/diagnostics.js +373 -0
- package/dist/lsp/lsp/diagnostics.js.map +1 -0
- package/dist/lsp/lsp/directives.d.ts +44 -0
- package/dist/lsp/lsp/directives.d.ts.map +1 -0
- package/dist/lsp/lsp/directives.js +232 -0
- package/dist/lsp/lsp/directives.js.map +1 -0
- package/dist/lsp/lsp/hover.d.ts +7 -0
- package/dist/lsp/lsp/hover.d.ts.map +1 -0
- package/dist/lsp/lsp/hover.js +462 -0
- package/dist/lsp/lsp/hover.js.map +1 -0
- package/dist/lsp/lsp/semantic_tokens.d.ts +4 -0
- package/dist/lsp/lsp/semantic_tokens.d.ts.map +1 -0
- package/dist/lsp/lsp/semantic_tokens.js +158 -0
- package/dist/lsp/lsp/semantic_tokens.js.map +1 -0
- package/dist/lsp/lsp/server.d.ts +2 -0
- package/dist/lsp/lsp/server.d.ts.map +1 -0
- package/dist/lsp/lsp/server.js +216 -0
- package/dist/lsp/lsp/server.js.map +1 -0
- package/dist/lsp/semantic_tokens.d.ts +4 -0
- package/dist/lsp/semantic_tokens.d.ts.map +1 -0
- package/dist/lsp/semantic_tokens.js +158 -0
- package/dist/lsp/semantic_tokens.js.map +1 -0
- package/dist/lsp/server.bundle.d.ts +2 -0
- package/dist/lsp/server.bundle.d.ts.map +1 -0
- package/dist/lsp/server.bundle.js +256 -0
- package/dist/lsp/server.d.ts +2 -0
- package/dist/lsp/server.d.ts.map +1 -0
- package/dist/lsp/server.js +216 -0
- package/dist/lsp/server.js.map +1 -0
- package/dist/lsp/types.d.ts +71 -0
- package/dist/lsp/types.d.ts.map +1 -0
- package/dist/lsp/types.js +4 -0
- package/dist/lsp/types.js.map +1 -0
- package/dist/node/index.js +186 -0
- package/dist/node/index.js.map +196 -0
- package/dist/node/node.js +187 -0
- package/dist/node/node.js.map +198 -0
- package/dist/node.d.ts +4 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/sdk/builder.d.ts +39 -0
- package/dist/sdk/builder.d.ts.map +1 -0
- package/dist/sdk/exporter.d.ts +13 -0
- package/dist/sdk/exporter.d.ts.map +1 -0
- package/dist/sdk/index.d.ts +3 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/emitter.d.ts +25 -0
- package/dist/utils/emitter.d.ts.map +1 -0
- package/dist/utils/utils.d.ts +18 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getHover = getHover;
|
|
4
|
+
const yaml_1 = require("yaml");
|
|
5
|
+
const data_context_1 = require("./data-context");
|
|
6
|
+
const directives_1 = require("./directives");
|
|
7
|
+
/**
|
|
8
|
+
* Field documentation with descriptions and allowed values
|
|
9
|
+
*/
|
|
10
|
+
const FIELD_DOCS = {
|
|
11
|
+
id: {
|
|
12
|
+
description: 'Unique identifier for this rule',
|
|
13
|
+
examples: ['my-rule-1', 'donation-handler', 'user-login-tracker']
|
|
14
|
+
},
|
|
15
|
+
name: {
|
|
16
|
+
description: 'Human-readable name for the rule',
|
|
17
|
+
examples: ['Donation Handler', 'User Login Tracker']
|
|
18
|
+
},
|
|
19
|
+
description: {
|
|
20
|
+
description: 'Detailed description of what this rule does',
|
|
21
|
+
},
|
|
22
|
+
on: {
|
|
23
|
+
description: 'The event name that triggers this rule',
|
|
24
|
+
values: 'String event name (e.g., `Donation`, `UserLogin`, `minecraft:player_join`)',
|
|
25
|
+
examples: ['Donation', 'UserLogin', 'minecraft:player_join', 'COMMAND']
|
|
26
|
+
},
|
|
27
|
+
if: {
|
|
28
|
+
description: 'Condition(s) that must be met for the rule to execute',
|
|
29
|
+
values: 'Single condition object, array of conditions, or condition group with AND/OR operator'
|
|
30
|
+
},
|
|
31
|
+
do: {
|
|
32
|
+
description: 'Action(s) to execute when conditions are met',
|
|
33
|
+
values: 'Single action object, array of actions, or action group with mode (ALL, SEQUENCE, EITHER)'
|
|
34
|
+
},
|
|
35
|
+
priority: {
|
|
36
|
+
description: 'Execution priority (higher values execute first)',
|
|
37
|
+
values: 'Integer number',
|
|
38
|
+
examples: ['1', '10', '100']
|
|
39
|
+
},
|
|
40
|
+
enabled: {
|
|
41
|
+
description: 'Whether this rule is active',
|
|
42
|
+
values: 'Boolean: `true` or `false`',
|
|
43
|
+
examples: ['true', 'false']
|
|
44
|
+
},
|
|
45
|
+
cooldown: {
|
|
46
|
+
description: 'Minimum time in milliseconds between executions',
|
|
47
|
+
values: 'Non-negative integer (milliseconds)',
|
|
48
|
+
examples: ['1000', '5000', '60000']
|
|
49
|
+
},
|
|
50
|
+
tags: {
|
|
51
|
+
description: 'Tags for categorizing and organizing rules',
|
|
52
|
+
values: 'Array of strings',
|
|
53
|
+
examples: ['["gameplay", "monetization"]', '["debug", "test"]']
|
|
54
|
+
},
|
|
55
|
+
comment: {
|
|
56
|
+
description: 'Internal developer note (not used in execution)',
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
const OPERATOR_DOCS = {
|
|
60
|
+
EQ: {
|
|
61
|
+
description: 'Equal to (==)',
|
|
62
|
+
valueType: 'Any value',
|
|
63
|
+
examples: ['value: 100', 'value: "hello"', 'value: true']
|
|
64
|
+
},
|
|
65
|
+
'==': {
|
|
66
|
+
description: 'Equal to (same as EQ)',
|
|
67
|
+
valueType: 'Any value',
|
|
68
|
+
examples: ['value: 100', 'value: "hello"']
|
|
69
|
+
},
|
|
70
|
+
NEQ: {
|
|
71
|
+
description: 'Not equal to (!=)',
|
|
72
|
+
valueType: 'Any value',
|
|
73
|
+
examples: ['value: 0', 'value: "goodbye"']
|
|
74
|
+
},
|
|
75
|
+
'!=': {
|
|
76
|
+
description: 'Not equal to (same as NEQ)',
|
|
77
|
+
valueType: 'Any value',
|
|
78
|
+
examples: ['value: 0']
|
|
79
|
+
},
|
|
80
|
+
GT: {
|
|
81
|
+
description: 'Greater than (>)',
|
|
82
|
+
valueType: 'Number or expression string',
|
|
83
|
+
examples: ['value: 100', 'value: "${state.count}"']
|
|
84
|
+
},
|
|
85
|
+
'>': {
|
|
86
|
+
description: 'Greater than (same as GT)',
|
|
87
|
+
valueType: 'Number or expression string',
|
|
88
|
+
examples: ['value: 50']
|
|
89
|
+
},
|
|
90
|
+
GTE: {
|
|
91
|
+
description: 'Greater than or equal to (>=)',
|
|
92
|
+
valueType: 'Number or expression string',
|
|
93
|
+
examples: ['value: 100']
|
|
94
|
+
},
|
|
95
|
+
'>=': {
|
|
96
|
+
description: 'Greater than or equal to (same as GTE)',
|
|
97
|
+
valueType: 'Number or expression string',
|
|
98
|
+
examples: ['value: 100']
|
|
99
|
+
},
|
|
100
|
+
LT: {
|
|
101
|
+
description: 'Less than (<)',
|
|
102
|
+
valueType: 'Number or expression string',
|
|
103
|
+
examples: ['value: 100']
|
|
104
|
+
},
|
|
105
|
+
'<': {
|
|
106
|
+
description: 'Less than (same as LT)',
|
|
107
|
+
valueType: 'Number or expression string',
|
|
108
|
+
examples: ['value: 50']
|
|
109
|
+
},
|
|
110
|
+
LTE: {
|
|
111
|
+
description: 'Less than or equal to (<=)',
|
|
112
|
+
valueType: 'Number or expression string',
|
|
113
|
+
examples: ['value: 100']
|
|
114
|
+
},
|
|
115
|
+
'<=': {
|
|
116
|
+
description: 'Less than or equal to (same as LTE)',
|
|
117
|
+
valueType: 'Number or expression string',
|
|
118
|
+
examples: ['value: 100']
|
|
119
|
+
},
|
|
120
|
+
IN: {
|
|
121
|
+
description: 'Value is in the given list',
|
|
122
|
+
valueType: 'Array of values',
|
|
123
|
+
examples: ['value: [1, 2, 3]', 'value: ["a", "b", "c"]']
|
|
124
|
+
},
|
|
125
|
+
NOT_IN: {
|
|
126
|
+
description: 'Value is not in the given list',
|
|
127
|
+
valueType: 'Array of values',
|
|
128
|
+
examples: ['value: [0, null]']
|
|
129
|
+
},
|
|
130
|
+
CONTAINS: {
|
|
131
|
+
description: 'String contains substring, or array includes item',
|
|
132
|
+
valueType: 'String (for substring) or Array (for item check)',
|
|
133
|
+
examples: ['value: "hello"', 'value: ["item1", "item2"]']
|
|
134
|
+
},
|
|
135
|
+
MATCHES: {
|
|
136
|
+
description: 'Value matches the regular expression pattern',
|
|
137
|
+
valueType: 'String (regex pattern)',
|
|
138
|
+
examples: ['value: "^[A-Z].*"', 'value: "\\\\d{3}-\\\\d{4}"']
|
|
139
|
+
},
|
|
140
|
+
RANGE: {
|
|
141
|
+
description: 'Value is within the specified range [min, max] (inclusive)',
|
|
142
|
+
valueType: 'Array of exactly 2 numbers: [min, max]',
|
|
143
|
+
examples: ['value: [0, 100]', 'value: [1, 10]']
|
|
144
|
+
},
|
|
145
|
+
SINCE: {
|
|
146
|
+
description: 'Date/time is after or equal to the specified value',
|
|
147
|
+
valueType: 'Date string or timestamp',
|
|
148
|
+
examples: ['value: "2024-01-01"']
|
|
149
|
+
},
|
|
150
|
+
AFTER: {
|
|
151
|
+
description: 'Date/time is after the specified value (alias for SINCE)',
|
|
152
|
+
valueType: 'Date string or timestamp',
|
|
153
|
+
examples: ['value: "2024-01-01T00:00:00Z"']
|
|
154
|
+
},
|
|
155
|
+
BEFORE: {
|
|
156
|
+
description: 'Date/time is before the specified value',
|
|
157
|
+
valueType: 'Date string or timestamp',
|
|
158
|
+
examples: ['value: "2024-12-31"']
|
|
159
|
+
},
|
|
160
|
+
UNTIL: {
|
|
161
|
+
description: 'Date/time is before or equal to the specified value (alias for BEFORE)',
|
|
162
|
+
valueType: 'Date string or timestamp',
|
|
163
|
+
examples: ['value: "2024-12-31T23:59:59Z"']
|
|
164
|
+
},
|
|
165
|
+
AND: {
|
|
166
|
+
description: 'Logical AND - all conditions must be true',
|
|
167
|
+
valueType: 'Used in condition groups',
|
|
168
|
+
examples: ['operator: AND\nconditions:\n - field: data.x\n operator: GT\n value: 0']
|
|
169
|
+
},
|
|
170
|
+
OR: {
|
|
171
|
+
description: 'Logical OR - at least one condition must be true',
|
|
172
|
+
valueType: 'Used in condition groups',
|
|
173
|
+
examples: ['operator: OR\nconditions:\n - field: data.x\n operator: EQ\n value: 1']
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
const CONDITION_FIELD_DOCS = {
|
|
177
|
+
field: {
|
|
178
|
+
description: 'The field path to check (e.g., `data.amount`, `event.user.id`)',
|
|
179
|
+
values: 'String path using dot notation'
|
|
180
|
+
},
|
|
181
|
+
operator: {
|
|
182
|
+
description: 'The comparison operator to use',
|
|
183
|
+
values: 'One of: EQ, ==, NEQ, !=, GT, >, GTE, >=, LT, <, LTE, <=, IN, NOT_IN, CONTAINS, MATCHES, RANGE, SINCE, AFTER, BEFORE, UNTIL'
|
|
184
|
+
},
|
|
185
|
+
value: {
|
|
186
|
+
description: 'The value to compare against (type depends on operator)',
|
|
187
|
+
values: 'Varies by operator - see operator documentation for details'
|
|
188
|
+
},
|
|
189
|
+
conditions: {
|
|
190
|
+
description: 'Array of sub-conditions for AND/OR groups',
|
|
191
|
+
values: 'Array of condition objects'
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
const ACTION_FIELD_DOCS = {
|
|
195
|
+
type: {
|
|
196
|
+
description: 'The type of action to perform',
|
|
197
|
+
values: 'String action type (e.g., `log`, `execute`, `http`, `STATE_SET`, `EMIT_EVENT`)'
|
|
198
|
+
},
|
|
199
|
+
params: {
|
|
200
|
+
description: 'Parameters for the action (varies by action type)',
|
|
201
|
+
values: 'Object with action-specific parameters'
|
|
202
|
+
},
|
|
203
|
+
delay: {
|
|
204
|
+
description: 'Delay in milliseconds before executing this action',
|
|
205
|
+
values: 'Non-negative integer (milliseconds)'
|
|
206
|
+
},
|
|
207
|
+
probability: {
|
|
208
|
+
description: 'Probability of executing this action (0.0 to 1.0)',
|
|
209
|
+
values: 'Number between 0 and 1 (e.g., 0.5 for 50% chance)'
|
|
210
|
+
},
|
|
211
|
+
mode: {
|
|
212
|
+
description: 'Execution mode for action groups',
|
|
213
|
+
values: 'ALL (execute all), SEQUENCE (execute in order), or EITHER (execute one randomly)'
|
|
214
|
+
},
|
|
215
|
+
actions: {
|
|
216
|
+
description: 'Array of sub-actions for action groups',
|
|
217
|
+
values: 'Array of action objects'
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* Get hover information for a position in the document
|
|
222
|
+
*/
|
|
223
|
+
function getHover(document, position) {
|
|
224
|
+
// Load data from import directives only (declarative approach)
|
|
225
|
+
const imports = (0, directives_1.getImportDirectives)(document, document.uri);
|
|
226
|
+
if (imports.length > 0) {
|
|
227
|
+
(0, data_context_1.loadDataFromImports)(imports);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// Clear data context when no imports are defined
|
|
231
|
+
data_context_1.globalDataContext.clear();
|
|
232
|
+
}
|
|
233
|
+
const text = document.getText();
|
|
234
|
+
const offset = document.offsetAt(position);
|
|
235
|
+
const doc = (0, yaml_1.parseDocument)(text);
|
|
236
|
+
if (!doc.contents)
|
|
237
|
+
return null;
|
|
238
|
+
// Check if we're hovering over a template variable
|
|
239
|
+
const lines = text.split('\n');
|
|
240
|
+
const line = lines[position.line] || '';
|
|
241
|
+
const templateHover = checkTemplateVariableHover(line, position.character);
|
|
242
|
+
if (templateHover) {
|
|
243
|
+
return templateHover;
|
|
244
|
+
}
|
|
245
|
+
// Find the node at the cursor position
|
|
246
|
+
const path = findPathAtOffset(doc.contents, offset);
|
|
247
|
+
if (!path || path.length === 0)
|
|
248
|
+
return null;
|
|
249
|
+
const targetNode = path[path.length - 1];
|
|
250
|
+
// Check if we're hovering on a key
|
|
251
|
+
if ('key' in targetNode && targetNode.key) {
|
|
252
|
+
const keyNode = targetNode.key;
|
|
253
|
+
if ((0, yaml_1.isScalar)(keyNode) && keyNode.range) {
|
|
254
|
+
const [keyStart, keyEnd] = keyNode.range;
|
|
255
|
+
if (offset >= keyStart && offset <= keyEnd) {
|
|
256
|
+
const keyValue = String(keyNode.value);
|
|
257
|
+
const hoverContent = getKeyDocumentation(keyValue, path);
|
|
258
|
+
if (hoverContent) {
|
|
259
|
+
return {
|
|
260
|
+
contents: hoverContent
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Check if we're hovering on a value that is an operator
|
|
267
|
+
if ((0, yaml_1.isScalar)(targetNode) && targetNode.range) {
|
|
268
|
+
const [valueStart, valueEnd] = targetNode.range;
|
|
269
|
+
if (offset >= valueStart && offset <= valueEnd) {
|
|
270
|
+
const value = String(targetNode.value);
|
|
271
|
+
// Check if this is an operator value
|
|
272
|
+
if (OPERATOR_DOCS[value]) {
|
|
273
|
+
const opDoc = OPERATOR_DOCS[value];
|
|
274
|
+
const markdown = {
|
|
275
|
+
kind: 'markdown',
|
|
276
|
+
value: [
|
|
277
|
+
`**Operator: \`${value}\`**`,
|
|
278
|
+
'',
|
|
279
|
+
opDoc.description,
|
|
280
|
+
'',
|
|
281
|
+
`**Value Type:** ${opDoc.valueType}`,
|
|
282
|
+
...(opDoc.examples ? ['', '**Examples:**', ...opDoc.examples.map(ex => `\`\`\`yaml\n${ex}\n\`\`\``)] : [])
|
|
283
|
+
].join('\n')
|
|
284
|
+
};
|
|
285
|
+
return { contents: markdown };
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Check if hovering over a template variable and return hover info
|
|
293
|
+
*/
|
|
294
|
+
function checkTemplateVariableHover(line, character) {
|
|
295
|
+
const regex = /\$\{([^}]+)\}/g;
|
|
296
|
+
let match;
|
|
297
|
+
while ((match = regex.exec(line)) !== null) {
|
|
298
|
+
const start = match.index;
|
|
299
|
+
const end = match.index + match[0].length;
|
|
300
|
+
// Check if cursor is inside this template
|
|
301
|
+
if (character >= start && character <= end) {
|
|
302
|
+
const variablePath = match[1].trim();
|
|
303
|
+
// Try to get value from data context
|
|
304
|
+
const value = data_context_1.globalDataContext.getValue(variablePath);
|
|
305
|
+
if (value !== undefined) {
|
|
306
|
+
const formattedValue = data_context_1.globalDataContext.getFormattedValue(value);
|
|
307
|
+
const valueType = typeof value === 'object' && value !== null
|
|
308
|
+
? (Array.isArray(value) ? 'array' : 'object')
|
|
309
|
+
: typeof value;
|
|
310
|
+
const markdown = {
|
|
311
|
+
kind: 'markdown',
|
|
312
|
+
value: [
|
|
313
|
+
`**Template Variable: \`\${${variablePath}}\`**`,
|
|
314
|
+
'',
|
|
315
|
+
`**Type:** \`${valueType}\``,
|
|
316
|
+
'',
|
|
317
|
+
'**Test Value:**',
|
|
318
|
+
'```json',
|
|
319
|
+
formattedValue,
|
|
320
|
+
'```'
|
|
321
|
+
].join('\n')
|
|
322
|
+
};
|
|
323
|
+
return { contents: markdown };
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
// Variable not found in data context
|
|
327
|
+
const markdown = {
|
|
328
|
+
kind: 'markdown',
|
|
329
|
+
value: [
|
|
330
|
+
`**Template Variable: \`\${${variablePath}}\`**`,
|
|
331
|
+
'',
|
|
332
|
+
'_No test data available for this variable._',
|
|
333
|
+
'',
|
|
334
|
+
'Add a `data.json` or `data.yaml` file in your workspace to provide test values.'
|
|
335
|
+
].join('\n')
|
|
336
|
+
};
|
|
337
|
+
return { contents: markdown };
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Get documentation for a specific key based on its context
|
|
345
|
+
*/
|
|
346
|
+
function getKeyDocumentation(key, path) {
|
|
347
|
+
// Try to determine context
|
|
348
|
+
const parentContext = getParentContext(path);
|
|
349
|
+
let doc;
|
|
350
|
+
// Check in order of specificity
|
|
351
|
+
if (parentContext === 'action') {
|
|
352
|
+
doc = ACTION_FIELD_DOCS[key];
|
|
353
|
+
}
|
|
354
|
+
else if (parentContext === 'condition') {
|
|
355
|
+
doc = CONDITION_FIELD_DOCS[key];
|
|
356
|
+
}
|
|
357
|
+
// Fall back to general field docs
|
|
358
|
+
if (!doc) {
|
|
359
|
+
doc = FIELD_DOCS[key];
|
|
360
|
+
}
|
|
361
|
+
if (!doc)
|
|
362
|
+
return null;
|
|
363
|
+
const parts = [
|
|
364
|
+
`**${key}**`,
|
|
365
|
+
'',
|
|
366
|
+
doc.description
|
|
367
|
+
];
|
|
368
|
+
if (doc.values) {
|
|
369
|
+
parts.push('', `**Allowed Values:** ${doc.values}`);
|
|
370
|
+
}
|
|
371
|
+
if (doc.examples && doc.examples.length > 0) {
|
|
372
|
+
parts.push('', '**Examples:**');
|
|
373
|
+
doc.examples.forEach(example => {
|
|
374
|
+
parts.push(`\`\`\`yaml\n${example}\n\`\`\``);
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
return {
|
|
378
|
+
kind: 'markdown',
|
|
379
|
+
value: parts.join('\n')
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Determine the parent context (rule, condition, action) from the path
|
|
384
|
+
*/
|
|
385
|
+
function getParentContext(path) {
|
|
386
|
+
// Walk up the path to find context clues
|
|
387
|
+
for (let i = path.length - 1; i >= 0; i--) {
|
|
388
|
+
const node = path[i];
|
|
389
|
+
if (!('key' in node) || !node.key)
|
|
390
|
+
continue;
|
|
391
|
+
if (!(0, yaml_1.isScalar)(node.key))
|
|
392
|
+
continue;
|
|
393
|
+
const keyValue = String(node.key.value);
|
|
394
|
+
// If we're inside an 'if' or 'conditions', we're in condition context
|
|
395
|
+
if (keyValue === 'if' || keyValue === 'conditions') {
|
|
396
|
+
return 'condition';
|
|
397
|
+
}
|
|
398
|
+
// If we're inside a 'do' or 'actions', we're in action context
|
|
399
|
+
if (keyValue === 'do' || keyValue === 'actions') {
|
|
400
|
+
return 'action';
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return 'rule';
|
|
404
|
+
}
|
|
405
|
+
function findPathAtOffset(node, offset, currentPath = []) {
|
|
406
|
+
if (!node)
|
|
407
|
+
return null;
|
|
408
|
+
// For Pair types, we need to check manually if they can be processed
|
|
409
|
+
// Pairs are used in Maps, and we need different logic for them
|
|
410
|
+
const isPair = (n) => 'key' in n && 'value' in n;
|
|
411
|
+
if (isPair(node)) {
|
|
412
|
+
// Pair doesn't have range, but we can check its key and value
|
|
413
|
+
const pair = node;
|
|
414
|
+
const newPath = [...currentPath, node];
|
|
415
|
+
// Check if key has range and if offset is within it
|
|
416
|
+
if (pair.key && typeof pair.key === 'object' && 'range' in pair.key) {
|
|
417
|
+
const keyNode = pair.key;
|
|
418
|
+
if (keyNode.range) {
|
|
419
|
+
const [keyStart, keyEnd] = keyNode.range;
|
|
420
|
+
if (offset >= keyStart && offset <= keyEnd) {
|
|
421
|
+
return newPath;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// Check value recursively
|
|
426
|
+
if (pair.value) {
|
|
427
|
+
const valuePath = findPathAtOffset(pair.value, offset, newPath);
|
|
428
|
+
if (valuePath)
|
|
429
|
+
return valuePath;
|
|
430
|
+
}
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
// From here, we're dealing with Node types that should have range
|
|
434
|
+
if (!('range' in node) || !node.range)
|
|
435
|
+
return null;
|
|
436
|
+
const [start, end] = node.range;
|
|
437
|
+
if (offset < start || offset > end)
|
|
438
|
+
return null;
|
|
439
|
+
// Add current node to path
|
|
440
|
+
const newPath = [...currentPath, node];
|
|
441
|
+
// If it's a Map, check items (which are Pairs)
|
|
442
|
+
if ((0, yaml_1.isMap)(node)) {
|
|
443
|
+
for (const item of node.items) {
|
|
444
|
+
const itemPath = findPathAtOffset(item, offset, newPath);
|
|
445
|
+
if (itemPath)
|
|
446
|
+
return itemPath;
|
|
447
|
+
}
|
|
448
|
+
return newPath;
|
|
449
|
+
}
|
|
450
|
+
// If it's a Seq, check items
|
|
451
|
+
if ('items' in node && Array.isArray(node.items)) {
|
|
452
|
+
for (const item of node.items) {
|
|
453
|
+
const itemPath = findPathAtOffset(item, offset, newPath);
|
|
454
|
+
if (itemPath)
|
|
455
|
+
return itemPath;
|
|
456
|
+
}
|
|
457
|
+
return newPath;
|
|
458
|
+
}
|
|
459
|
+
// Scalar or other leaf node
|
|
460
|
+
return newPath;
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=hover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover.js","sourceRoot":"","sources":["../../../src/lsp/hover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic_tokens.d.ts","sourceRoot":"","sources":["../../../src/lsp/semantic_tokens.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAKvE,eAAO,MAAM,oBAAoB,EAAE,oBAoBlC,CAAC;AAkBF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAaxD"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.semanticTokensLegend = void 0;
|
|
4
|
+
exports.getSemanticTokens = getSemanticTokens;
|
|
5
|
+
const node_1 = require("vscode-languageserver/node");
|
|
6
|
+
const yaml_1 = require("yaml");
|
|
7
|
+
// Define the legend
|
|
8
|
+
exports.semanticTokensLegend = {
|
|
9
|
+
tokenTypes: [
|
|
10
|
+
'property', // 0
|
|
11
|
+
'keyword', // 1
|
|
12
|
+
'function', // 2
|
|
13
|
+
'string', // 3
|
|
14
|
+
'number', // 4
|
|
15
|
+
'operator', // 5
|
|
16
|
+
'variable', // 6
|
|
17
|
+
'parameter', // 7
|
|
18
|
+
'comment', // 8
|
|
19
|
+
'type', // 9 - for directive types
|
|
20
|
+
'macro', // 10 - for import directives
|
|
21
|
+
'namespace', // 11 - for lint control directives
|
|
22
|
+
'enumMember' // 12 - for rule control directives
|
|
23
|
+
],
|
|
24
|
+
tokenModifiers: [
|
|
25
|
+
'declaration',
|
|
26
|
+
'readonly'
|
|
27
|
+
]
|
|
28
|
+
};
|
|
29
|
+
const TOKEN_TYPES = {
|
|
30
|
+
property: 0,
|
|
31
|
+
keyword: 1,
|
|
32
|
+
function: 2,
|
|
33
|
+
string: 3,
|
|
34
|
+
number: 4,
|
|
35
|
+
operator: 5,
|
|
36
|
+
variable: 6,
|
|
37
|
+
parameter: 7,
|
|
38
|
+
comment: 8,
|
|
39
|
+
type: 9,
|
|
40
|
+
macro: 10,
|
|
41
|
+
namespace: 11,
|
|
42
|
+
enumMember: 12
|
|
43
|
+
};
|
|
44
|
+
function getSemanticTokens(text) {
|
|
45
|
+
const lineCounter = new yaml_1.LineCounter();
|
|
46
|
+
const doc = (0, yaml_1.parseDocument)(text, { lineCounter });
|
|
47
|
+
const builder = new node_1.SemanticTokensBuilder();
|
|
48
|
+
if (doc.contents) {
|
|
49
|
+
visit(doc.contents, builder, lineCounter);
|
|
50
|
+
}
|
|
51
|
+
// Process comments for directives
|
|
52
|
+
processCommentsForDirectives(text, builder, lineCounter);
|
|
53
|
+
return builder.build().data;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Process comments to highlight directives
|
|
57
|
+
*/
|
|
58
|
+
function processCommentsForDirectives(text, builder, lineCounter) {
|
|
59
|
+
const lines = text.split('\n');
|
|
60
|
+
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
|
|
61
|
+
const line = lines[lineIndex] || '';
|
|
62
|
+
// Check if line is a comment
|
|
63
|
+
if (!line.trim().startsWith('#'))
|
|
64
|
+
continue;
|
|
65
|
+
// Look for directives in the comment
|
|
66
|
+
const directiveRegex = /@([\w-]+)/g;
|
|
67
|
+
let match;
|
|
68
|
+
while ((match = directiveRegex.exec(line)) !== null) {
|
|
69
|
+
const directiveName = match[1];
|
|
70
|
+
const startIndex = match.index;
|
|
71
|
+
const endIndex = startIndex + match[0].length;
|
|
72
|
+
// Calculate position in the document
|
|
73
|
+
let charOffset = 0;
|
|
74
|
+
for (let i = 0; i < lineIndex; i++) {
|
|
75
|
+
const currentLine = lines[i] || '';
|
|
76
|
+
charOffset += currentLine.length + 1; // +1 for newline
|
|
77
|
+
}
|
|
78
|
+
charOffset += startIndex;
|
|
79
|
+
const startPos = lineCounter.linePos(charOffset);
|
|
80
|
+
// Determine token type based on directive with specific colors for each type
|
|
81
|
+
let tokenType = TOKEN_TYPES.keyword;
|
|
82
|
+
switch (directiveName) {
|
|
83
|
+
case 'import':
|
|
84
|
+
tokenType = TOKEN_TYPES.macro; // Import directives as macros (distinctive color)
|
|
85
|
+
break;
|
|
86
|
+
case 'disable-lint':
|
|
87
|
+
case 'enable-lint':
|
|
88
|
+
tokenType = TOKEN_TYPES.namespace; // Global lint control as namespace
|
|
89
|
+
break;
|
|
90
|
+
case 'disable-next-line':
|
|
91
|
+
case 'disable-line':
|
|
92
|
+
tokenType = TOKEN_TYPES.enumMember; // Line-specific control as enum member
|
|
93
|
+
break;
|
|
94
|
+
case 'disable-rule':
|
|
95
|
+
case 'enable-rule':
|
|
96
|
+
tokenType = TOKEN_TYPES.type; // Rule-specific control as type
|
|
97
|
+
break;
|
|
98
|
+
default:
|
|
99
|
+
tokenType = TOKEN_TYPES.keyword;
|
|
100
|
+
}
|
|
101
|
+
builder.push(startPos.line - 1, startPos.col - 1, endIndex - startIndex, tokenType, 0);
|
|
102
|
+
}
|
|
103
|
+
// Also highlight the @ symbol
|
|
104
|
+
const atSymbolRegex = /@/g;
|
|
105
|
+
while ((match = atSymbolRegex.exec(line)) !== null) {
|
|
106
|
+
const startIndex = match.index;
|
|
107
|
+
const charOffset = lineIndex * (line.length + 1) + startIndex;
|
|
108
|
+
const pos = lineCounter.linePos(charOffset);
|
|
109
|
+
builder.push(pos.line - 1, pos.col - 1, 1, // @ symbol length
|
|
110
|
+
TOKEN_TYPES.operator, 0);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function visit(node, builder, lineCounter) {
|
|
115
|
+
if (!node)
|
|
116
|
+
return;
|
|
117
|
+
if ((0, yaml_1.isMap)(node)) {
|
|
118
|
+
for (const pair of node.items) {
|
|
119
|
+
visitPair(pair, builder, lineCounter);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else if ((0, yaml_1.isSeq)(node)) {
|
|
123
|
+
for (const item of node.items) {
|
|
124
|
+
visit(item, builder, lineCounter);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function visitPair(pair, builder, lineCounter) {
|
|
129
|
+
const key = pair.key;
|
|
130
|
+
// Ensure key exists and has a range
|
|
131
|
+
if (key && key.range) {
|
|
132
|
+
const keyText = String(key.value);
|
|
133
|
+
let type = TOKEN_TYPES.property;
|
|
134
|
+
// Custom coloring logic
|
|
135
|
+
if (['if', 'when', 'conditions', 'match'].includes(keyText)) {
|
|
136
|
+
type = TOKEN_TYPES.keyword;
|
|
137
|
+
}
|
|
138
|
+
else if (['do', 'actions', 'then', 'execute'].includes(keyText)) {
|
|
139
|
+
type = TOKEN_TYPES.function;
|
|
140
|
+
}
|
|
141
|
+
else if (['id', 'rule', 'name'].includes(keyText)) {
|
|
142
|
+
type = TOKEN_TYPES.variable;
|
|
143
|
+
}
|
|
144
|
+
else if (['on', 'trigger', 'events'].includes(keyText)) {
|
|
145
|
+
type = TOKEN_TYPES.parameter;
|
|
146
|
+
}
|
|
147
|
+
else if (['operator', 'op'].includes(keyText)) {
|
|
148
|
+
type = TOKEN_TYPES.operator;
|
|
149
|
+
}
|
|
150
|
+
const startPos = lineCounter.linePos(key.range[0]);
|
|
151
|
+
// linePos returns 1-based line and col
|
|
152
|
+
builder.push(startPos.line - 1, startPos.col - 1, key.range[1] - key.range[0], type, 0);
|
|
153
|
+
}
|
|
154
|
+
if (pair.value) {
|
|
155
|
+
visit(pair.value, builder, lineCounter);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=semantic_tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic_tokens.js","sourceRoot":"","sources":["../../../src/lsp/semantic_tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/lsp/server.ts"],"names":[],"mappings":""}
|