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.
Files changed (136) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +127 -0
  3. package/dist/browser/index.browser.js +48 -0
  4. package/dist/browser/index.browser.js.map +122 -0
  5. package/dist/cli/lsp-server.d.ts +3 -0
  6. package/dist/cli/lsp-server.d.ts.map +1 -0
  7. package/dist/cli/validate.d.ts +2 -0
  8. package/dist/cli/validate.d.ts.map +1 -0
  9. package/dist/core/action-registry.d.ts +12 -0
  10. package/dist/core/action-registry.d.ts.map +1 -0
  11. package/dist/core/context-adapter.d.ts +23 -0
  12. package/dist/core/context-adapter.d.ts.map +1 -0
  13. package/dist/core/dependency-graph.d.ts +18 -0
  14. package/dist/core/dependency-graph.d.ts.map +1 -0
  15. package/dist/core/engine.d.ts +24 -0
  16. package/dist/core/engine.d.ts.map +1 -0
  17. package/dist/core/event-queue.d.ts +25 -0
  18. package/dist/core/event-queue.d.ts.map +1 -0
  19. package/dist/core/expression-engine.d.ts +31 -0
  20. package/dist/core/expression-engine.d.ts.map +1 -0
  21. package/dist/core/index.d.ts +10 -0
  22. package/dist/core/index.d.ts.map +1 -0
  23. package/dist/core/persistence-browser.d.ts +20 -0
  24. package/dist/core/persistence-browser.d.ts.map +1 -0
  25. package/dist/core/persistence.d.ts +34 -0
  26. package/dist/core/persistence.d.ts.map +1 -0
  27. package/dist/core/persistence.node.d.ts +18 -0
  28. package/dist/core/persistence.node.d.ts.map +1 -0
  29. package/dist/core/plugin-manager.d.ts +15 -0
  30. package/dist/core/plugin-manager.d.ts.map +1 -0
  31. package/dist/core/rule-engine.d.ts +39 -0
  32. package/dist/core/rule-engine.d.ts.map +1 -0
  33. package/dist/core/state-manager.d.ts +41 -0
  34. package/dist/core/state-manager.d.ts.map +1 -0
  35. package/dist/domain/index.d.ts +2 -0
  36. package/dist/domain/index.d.ts.map +1 -0
  37. package/dist/domain/validator.d.ts +2433 -0
  38. package/dist/domain/validator.d.ts.map +1 -0
  39. package/dist/index.browser.d.ts +6 -0
  40. package/dist/index.browser.d.ts.map +1 -0
  41. package/dist/index.d.ts +7 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/io/index.d.ts +2 -0
  44. package/dist/io/index.d.ts.map +1 -0
  45. package/dist/io/loader.node.d.ts +14 -0
  46. package/dist/io/loader.node.d.ts.map +1 -0
  47. package/dist/lsp/completions.d.ts +6 -0
  48. package/dist/lsp/completions.d.ts.map +1 -0
  49. package/dist/lsp/completions.js +624 -0
  50. package/dist/lsp/completions.js.map +1 -0
  51. package/dist/lsp/data-context.d.ts +60 -0
  52. package/dist/lsp/data-context.d.ts.map +1 -0
  53. package/dist/lsp/data-context.js +172 -0
  54. package/dist/lsp/data-context.js.map +1 -0
  55. package/dist/lsp/diagnostics.d.ts +7 -0
  56. package/dist/lsp/diagnostics.d.ts.map +1 -0
  57. package/dist/lsp/diagnostics.js +373 -0
  58. package/dist/lsp/diagnostics.js.map +1 -0
  59. package/dist/lsp/directives.d.ts +44 -0
  60. package/dist/lsp/directives.d.ts.map +1 -0
  61. package/dist/lsp/directives.js +232 -0
  62. package/dist/lsp/directives.js.map +1 -0
  63. package/dist/lsp/domain/index.d.ts +2 -0
  64. package/dist/lsp/domain/index.d.ts.map +1 -0
  65. package/dist/lsp/domain/index.js +18 -0
  66. package/dist/lsp/domain/index.js.map +1 -0
  67. package/dist/lsp/domain/validator.d.ts +2433 -0
  68. package/dist/lsp/domain/validator.d.ts.map +1 -0
  69. package/dist/lsp/domain/validator.js +225 -0
  70. package/dist/lsp/domain/validator.js.map +1 -0
  71. package/dist/lsp/hover.d.ts +7 -0
  72. package/dist/lsp/hover.d.ts.map +1 -0
  73. package/dist/lsp/hover.js +462 -0
  74. package/dist/lsp/hover.js.map +1 -0
  75. package/dist/lsp/lsp/completions.d.ts +6 -0
  76. package/dist/lsp/lsp/completions.d.ts.map +1 -0
  77. package/dist/lsp/lsp/completions.js +624 -0
  78. package/dist/lsp/lsp/completions.js.map +1 -0
  79. package/dist/lsp/lsp/data-context.d.ts +60 -0
  80. package/dist/lsp/lsp/data-context.d.ts.map +1 -0
  81. package/dist/lsp/lsp/data-context.js +172 -0
  82. package/dist/lsp/lsp/data-context.js.map +1 -0
  83. package/dist/lsp/lsp/diagnostics.d.ts +7 -0
  84. package/dist/lsp/lsp/diagnostics.d.ts.map +1 -0
  85. package/dist/lsp/lsp/diagnostics.js +373 -0
  86. package/dist/lsp/lsp/diagnostics.js.map +1 -0
  87. package/dist/lsp/lsp/directives.d.ts +44 -0
  88. package/dist/lsp/lsp/directives.d.ts.map +1 -0
  89. package/dist/lsp/lsp/directives.js +232 -0
  90. package/dist/lsp/lsp/directives.js.map +1 -0
  91. package/dist/lsp/lsp/hover.d.ts +7 -0
  92. package/dist/lsp/lsp/hover.d.ts.map +1 -0
  93. package/dist/lsp/lsp/hover.js +462 -0
  94. package/dist/lsp/lsp/hover.js.map +1 -0
  95. package/dist/lsp/lsp/semantic_tokens.d.ts +4 -0
  96. package/dist/lsp/lsp/semantic_tokens.d.ts.map +1 -0
  97. package/dist/lsp/lsp/semantic_tokens.js +158 -0
  98. package/dist/lsp/lsp/semantic_tokens.js.map +1 -0
  99. package/dist/lsp/lsp/server.d.ts +2 -0
  100. package/dist/lsp/lsp/server.d.ts.map +1 -0
  101. package/dist/lsp/lsp/server.js +216 -0
  102. package/dist/lsp/lsp/server.js.map +1 -0
  103. package/dist/lsp/semantic_tokens.d.ts +4 -0
  104. package/dist/lsp/semantic_tokens.d.ts.map +1 -0
  105. package/dist/lsp/semantic_tokens.js +158 -0
  106. package/dist/lsp/semantic_tokens.js.map +1 -0
  107. package/dist/lsp/server.bundle.d.ts +2 -0
  108. package/dist/lsp/server.bundle.d.ts.map +1 -0
  109. package/dist/lsp/server.bundle.js +256 -0
  110. package/dist/lsp/server.d.ts +2 -0
  111. package/dist/lsp/server.d.ts.map +1 -0
  112. package/dist/lsp/server.js +216 -0
  113. package/dist/lsp/server.js.map +1 -0
  114. package/dist/lsp/types.d.ts +71 -0
  115. package/dist/lsp/types.d.ts.map +1 -0
  116. package/dist/lsp/types.js +4 -0
  117. package/dist/lsp/types.js.map +1 -0
  118. package/dist/node/index.js +186 -0
  119. package/dist/node/index.js.map +196 -0
  120. package/dist/node/node.js +187 -0
  121. package/dist/node/node.js.map +198 -0
  122. package/dist/node.d.ts +4 -0
  123. package/dist/node.d.ts.map +1 -0
  124. package/dist/sdk/builder.d.ts +39 -0
  125. package/dist/sdk/builder.d.ts.map +1 -0
  126. package/dist/sdk/exporter.d.ts +13 -0
  127. package/dist/sdk/exporter.d.ts.map +1 -0
  128. package/dist/sdk/index.d.ts +3 -0
  129. package/dist/sdk/index.d.ts.map +1 -0
  130. package/dist/types.d.ts +71 -0
  131. package/dist/types.d.ts.map +1 -0
  132. package/dist/utils/emitter.d.ts +25 -0
  133. package/dist/utils/emitter.d.ts.map +1 -0
  134. package/dist/utils/utils.d.ts +18 -0
  135. package/dist/utils/utils.d.ts.map +1 -0
  136. package/package.json +91 -0
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDiagnosticsForText = getDiagnosticsForText;
4
+ const node_1 = require("vscode-languageserver/node");
5
+ const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
6
+ const yaml_1 = require("yaml");
7
+ const validator_1 = require("../domain/validator");
8
+ const directives_1 = require("./directives");
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ /**
12
+ * Validates the text content of a document and returns diagnostics.
13
+ * Extracted for easier testing without the full LSP connection mock.
14
+ */
15
+ async function getDiagnosticsForText(text) {
16
+ const diagnostics = [];
17
+ // Create a minimal TextDocument object for position calculation
18
+ // We use the library one if accessible, but for simple calculation this is enough.
19
+ const textDocument = vscode_languageserver_textdocument_1.TextDocument.create("file://test", "yaml", 1, text);
20
+ // Parse directives from comments
21
+ const directives = (0, directives_1.processRangeDirectives)((0, directives_1.parseDirectives)(textDocument));
22
+ // Parse YAML with CST (Concrete Syntax Tree) from 'yaml' package
23
+ const doc = (0, yaml_1.parseDocument)(text);
24
+ // 1. Syntax Errors
25
+ if (doc.errors.length > 0) {
26
+ for (const err of doc.errors) {
27
+ const diagnostic = {
28
+ severity: node_1.DiagnosticSeverity.Error,
29
+ range: {
30
+ start: textDocument.positionAt(err.pos[0]),
31
+ end: textDocument.positionAt(err.pos[1])
32
+ },
33
+ message: err.message,
34
+ source: 'yaml-parser'
35
+ };
36
+ // Check if diagnostic is suppressed
37
+ const line = diagnostic.range.start.line;
38
+ if (!(0, directives_1.isDiagnosticSuppressed)(line, directives, 'yaml-parser')) {
39
+ diagnostics.push(diagnostic);
40
+ }
41
+ }
42
+ }
43
+ // 1.5 Check for multi-document YAML and suggest list format
44
+ // Multi-document separator is '---' (on its own line after the first document)
45
+ const lines = text.split('\n');
46
+ let foundFirstDocument = false;
47
+ for (let i = 0; i < lines.length; i++) {
48
+ const line = lines[i]?.trim() || '';
49
+ // Skip initial '---' (YAML document start marker)
50
+ if (i === 0 && line === '---') {
51
+ foundFirstDocument = true;
52
+ continue;
53
+ }
54
+ // If we find '---' after content, it's a multi-document file
55
+ if (line === '---' && foundFirstDocument) {
56
+ const lineStartOffset = text.split('\n').slice(0, i).join('\n').length + (i > 0 ? 1 : 0);
57
+ // Check if suppressed
58
+ if (!(0, directives_1.isDiagnosticSuppressed)(i, directives, 'trigger-best-practices')) {
59
+ diagnostics.push({
60
+ severity: node_1.DiagnosticSeverity.Information,
61
+ range: {
62
+ start: textDocument.positionAt(lineStartOffset),
63
+ end: textDocument.positionAt(lineStartOffset + line.length)
64
+ },
65
+ message: 'Multi-document YAML detected. Consider using list format (- id: ...) for better compatibility and clearer semantics.',
66
+ source: 'trigger-best-practices',
67
+ tags: [1] // DiagnosticTag.Unnecessary would be [1] - marks as hint
68
+ });
69
+ }
70
+ break; // Only show once per file
71
+ }
72
+ // Track that we've seen content
73
+ if (line.length > 0 && !line.startsWith('#')) {
74
+ foundFirstDocument = true;
75
+ }
76
+ }
77
+ // 1.6 Validate import directives
78
+ const importDiagnostics = validateImportDirectives(textDocument, text);
79
+ for (const diagnostic of importDiagnostics) {
80
+ // Check if diagnostic is suppressed
81
+ const line = diagnostic.range.start.line;
82
+ if (!(0, directives_1.isDiagnosticSuppressed)(line, directives, 'trigger-import-validator')) {
83
+ diagnostics.push(diagnostic);
84
+ }
85
+ }
86
+ // 2. Semantic Validation (ArkType)
87
+ // We attempt validation even if there are syntax errors
88
+ try {
89
+ const json = doc.toJS();
90
+ if (json && typeof json === 'object') {
91
+ // Handle Wrapper Object (Headers), Array of Rules, or Single Rule
92
+ let items = [];
93
+ // Check if it's a wrapper object with "rules"
94
+ const isWrapper = !Array.isArray(json) && json.rules && Array.isArray(json.rules);
95
+ const isArray = Array.isArray(json);
96
+ if (isWrapper) {
97
+ items = json.rules;
98
+ }
99
+ else {
100
+ items = isArray ? json : [json];
101
+ }
102
+ items.forEach((item, index) => {
103
+ // Check for missing 'id' field
104
+ if (item && typeof item === 'object' && !item.id) {
105
+ let fullPathParts = ['id'];
106
+ if (isWrapper) {
107
+ fullPathParts.unshift(String(index));
108
+ fullPathParts.unshift('rules');
109
+ }
110
+ else if (isArray) {
111
+ fullPathParts.unshift(String(index));
112
+ }
113
+ const range = findRangeForPath(doc.contents, fullPathParts.slice(0, -1), textDocument);
114
+ const line = range.start.line;
115
+ if (!(0, directives_1.isDiagnosticSuppressed)(line, directives, 'trigger-validator')) {
116
+ diagnostics.push({
117
+ severity: node_1.DiagnosticSeverity.Error,
118
+ range: range,
119
+ message: 'Rule is missing required field: id. Every rule must have a unique identifier.',
120
+ source: 'trigger-validator'
121
+ });
122
+ }
123
+ }
124
+ if (item && typeof item === 'object' && item.actions && !item.do) {
125
+ item.do = item.actions;
126
+ }
127
+ const result = validator_1.TriggerValidator.validate(item);
128
+ if (!result.valid) {
129
+ for (const issue of result.issues) {
130
+ let fullPathParts = issue.path.split('.');
131
+ if (isWrapper) {
132
+ fullPathParts.unshift(String(index));
133
+ fullPathParts.unshift('rules');
134
+ }
135
+ else if (isArray) {
136
+ fullPathParts.unshift(String(index));
137
+ }
138
+ const range = findRangeForPath(doc.contents, fullPathParts, textDocument);
139
+ const line = range.start.line;
140
+ if (!(0, directives_1.isDiagnosticSuppressed)(line, directives, 'trigger-validator')) {
141
+ diagnostics.push({
142
+ severity: node_1.DiagnosticSeverity.Error,
143
+ range: range,
144
+ message: issue.message + (issue.suggestion ? ` (Suggestion: ${issue.suggestion})` : ''),
145
+ source: 'trigger-validator'
146
+ });
147
+ }
148
+ }
149
+ }
150
+ });
151
+ }
152
+ }
153
+ catch (e) {
154
+ // verification failed, likely due to severe syntax errors, which are already reported.
155
+ }
156
+ return diagnostics;
157
+ }
158
+ function findRangeForPath(contents, pathParts, textDocument) {
159
+ let current = contents;
160
+ let parentNode = null;
161
+ let lastFoundIndex = -1;
162
+ for (let i = 0; i < pathParts.length; i++) {
163
+ const key = pathParts[i];
164
+ if (!current)
165
+ break;
166
+ parentNode = current; // Keep track of parent
167
+ lastFoundIndex = i;
168
+ if ((0, yaml_1.isMap)(current)) {
169
+ // current is YAMLMap
170
+ const pair = current.items.find((p) => {
171
+ if (isScalar(p.key) && String(p.key.value) === key)
172
+ return true;
173
+ return false;
174
+ });
175
+ if (pair && pair.value) {
176
+ current = pair.value;
177
+ }
178
+ else {
179
+ // Key not found in map
180
+ current = null;
181
+ break;
182
+ }
183
+ }
184
+ else if ((0, yaml_1.isSeq)(current)) {
185
+ // current is YAMLSeq
186
+ const idx = parseInt(key);
187
+ if (!isNaN(idx) && current.items[idx]) {
188
+ current = current.items[idx];
189
+ }
190
+ else {
191
+ current = null;
192
+ break;
193
+ }
194
+ }
195
+ else {
196
+ current = null;
197
+ break;
198
+ }
199
+ }
200
+ // If we found the node, return its range
201
+ // NOTE: Only Node types have range, not Pair types
202
+ if (current && current.range) {
203
+ return {
204
+ start: textDocument.positionAt(current.range[0]),
205
+ end: textDocument.positionAt(current.range[1])
206
+ };
207
+ }
208
+ // If we couldn't find the exact path, but found a parent, use parent's range
209
+ // This happens when a required field is missing
210
+ if (parentNode && parentNode.range) {
211
+ // Try to find the specific key that's missing
212
+ const missingKey = pathParts[lastFoundIndex + 1];
213
+ // If the parent is a map and we know which key is missing
214
+ if ((0, yaml_1.isMap)(parentNode) && missingKey) {
215
+ // Position the error after the last item in the map
216
+ // This gives better context than position (0,0)
217
+ const lastItem = parentNode.items[parentNode.items.length - 1];
218
+ // Pairs don't have range, but their value nodes do
219
+ if (lastItem && 'value' in lastItem && lastItem.value) {
220
+ const valueNode = lastItem.value;
221
+ if (valueNode.range) {
222
+ const pos = textDocument.positionAt(valueNode.range[1]);
223
+ return {
224
+ start: pos,
225
+ end: pos
226
+ };
227
+ }
228
+ }
229
+ }
230
+ // Otherwise use the start of the parent node
231
+ if ('range' in parentNode && parentNode.range) {
232
+ return {
233
+ start: textDocument.positionAt(parentNode.range[0]),
234
+ end: textDocument.positionAt(parentNode.range[0])
235
+ };
236
+ }
237
+ }
238
+ // Last resort: try to find the rule that has the issue
239
+ // For array indices, go back and find the rule
240
+ if (pathParts.length > 0 && !isNaN(parseInt(pathParts[0]))) {
241
+ const ruleIndex = parseInt(pathParts[0]);
242
+ if ((0, yaml_1.isSeq)(contents) && contents.items[ruleIndex]) {
243
+ const ruleNode = contents.items[ruleIndex];
244
+ if (ruleNode && 'range' in ruleNode && ruleNode.range) {
245
+ return {
246
+ start: textDocument.positionAt(ruleNode.range[0]),
247
+ end: textDocument.positionAt(ruleNode.range[0])
248
+ };
249
+ }
250
+ }
251
+ }
252
+ // Absolute fallback
253
+ return {
254
+ start: textDocument.positionAt(0),
255
+ end: textDocument.positionAt(0)
256
+ };
257
+ }
258
+ function isScalar(node) {
259
+ return node && node.type !== undefined && (node.type === 'SCALAR' || node.type === 'QUOTE_DOUBLE' || node.type === 'QUOTE_SINGLE' || typeof node.value !== 'undefined');
260
+ }
261
+ /**
262
+ * Validate import directives and return diagnostics for invalid imports
263
+ */
264
+ function validateImportDirectives(document, text) {
265
+ const diagnostics = [];
266
+ const directives = (0, directives_1.parseDirectives)(document);
267
+ for (const directive of directives) {
268
+ if (directive.type === 'import' && directive.importPath) {
269
+ try {
270
+ // Handle test URIs and real file URIs
271
+ let documentDir;
272
+ if (document.uri === 'file://test' || document.uri === 'file:///test') {
273
+ // For test documents, use the directory where test files are located
274
+ documentDir = (0, path_1.join)(process.cwd(), 'tests', 'rules', 'examples');
275
+ console.log(`[LSP] Test document detected, using test directory: ${documentDir}`);
276
+ }
277
+ else {
278
+ // Resolve the path relative to the document
279
+ const decodedUri = decodeURIComponent(document.uri);
280
+ // Handle Windows file URIs properly
281
+ let documentPath;
282
+ if (decodedUri.startsWith('file:///')) {
283
+ // Remove file:/// prefix
284
+ documentPath = decodedUri.substring(8);
285
+ // Handle Windows drive letters (C:, D:, etc.)
286
+ if (documentPath.match(/^[A-Za-z]:/)) {
287
+ // Already has drive letter, just replace forward slashes
288
+ documentPath = documentPath.replace(/\//g, '\\');
289
+ }
290
+ else if (documentPath.match(/^\/[A-Za-z]:/)) {
291
+ // Has leading slash before drive letter, remove it
292
+ documentPath = documentPath.substring(1).replace(/\//g, '\\');
293
+ }
294
+ else {
295
+ // Unix-style path, keep as is
296
+ documentPath = documentPath.replace(/\//g, '/');
297
+ }
298
+ }
299
+ else {
300
+ // Fallback for non-file URIs
301
+ documentPath = decodedUri.replace('file:///', '');
302
+ }
303
+ documentDir = (0, path_1.dirname)(documentPath);
304
+ }
305
+ const resolvedPath = (0, path_1.join)(documentDir, directive.importPath);
306
+ // Debug logging
307
+ console.log(`[LSP] Import validation debug:`);
308
+ console.log(`[LSP] Document URI: ${document.uri}`);
309
+ console.log(`[LSP] Document dir: ${documentDir}`);
310
+ console.log(`[LSP] Import path: ${directive.importPath}`);
311
+ console.log(`[LSP] Resolved path: ${resolvedPath}`);
312
+ console.log(`[LSP] File exists: ${(0, fs_1.existsSync)(resolvedPath)}`);
313
+ // Check if file exists
314
+ if (!(0, fs_1.existsSync)(resolvedPath)) {
315
+ // Find the line and character position of the import path in the directive
316
+ const lines = text.split('\n');
317
+ const line = lines[directive.line] || '';
318
+ const importPathMatch = line.match(new RegExp(`['"]${directive.importPath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}['"]`));
319
+ let startChar = line.indexOf(directive.importPath);
320
+ let endChar = startChar + directive.importPath.length;
321
+ if (importPathMatch) {
322
+ startChar = importPathMatch.index || startChar;
323
+ endChar = startChar + importPathMatch[0].length;
324
+ }
325
+ diagnostics.push({
326
+ severity: node_1.DiagnosticSeverity.Error,
327
+ range: {
328
+ start: { line: directive.line, character: startChar },
329
+ end: { line: directive.line, character: endChar }
330
+ },
331
+ message: `Import file not found: ${directive.importPath}`,
332
+ source: 'trigger-import-validator',
333
+ data: {
334
+ suggestion: `Check that the file exists at the specified path: ${resolvedPath}`
335
+ }
336
+ });
337
+ continue;
338
+ }
339
+ // Check file extension
340
+ const ext = (0, path_1.extname)(resolvedPath).toLowerCase();
341
+ const validExtensions = ['.json', '.yaml', '.yml'];
342
+ if (!validExtensions.includes(ext)) {
343
+ const lines = text.split('\n');
344
+ const line = lines[directive.line] || '';
345
+ const importPathMatch = line.match(new RegExp(`['"]${directive.importPath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}['"]`));
346
+ let startChar = line.indexOf(directive.importPath);
347
+ let endChar = startChar + directive.importPath.length;
348
+ if (importPathMatch) {
349
+ startChar = importPathMatch.index || startChar;
350
+ endChar = startChar + importPathMatch[0].length;
351
+ }
352
+ diagnostics.push({
353
+ severity: node_1.DiagnosticSeverity.Error,
354
+ range: {
355
+ start: { line: directive.line, character: startChar },
356
+ end: { line: directive.line, character: endChar }
357
+ },
358
+ message: `Invalid file type for import: ${ext}. Only JSON and YAML files are supported.`,
359
+ source: 'trigger-import-validator',
360
+ data: {
361
+ suggestion: 'Use a .json, .yaml, or .yml file for data imports.'
362
+ }
363
+ });
364
+ }
365
+ }
366
+ catch (error) {
367
+ console.error(`[LSP] Error validating import directive:`, error);
368
+ }
369
+ }
370
+ }
371
+ return diagnostics;
372
+ }
373
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/lsp/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { TextDocument } from 'vscode-languageserver-textdocument';
2
+ /**
3
+ * Directive types supported in comments
4
+ */
5
+ export type DirectiveType = 'disable-lint' | 'enable-lint' | 'disable-next-line' | 'disable-line' | 'disable-rule' | 'enable-rule' | 'import';
6
+ export interface Directive {
7
+ type: DirectiveType;
8
+ line: number;
9
+ rules?: string[];
10
+ affectedLines: number[];
11
+ importPath?: string;
12
+ importAlias?: string;
13
+ }
14
+ /**
15
+ * Parse directives from document comments
16
+ * Supported formats:
17
+ * - @disable-lint
18
+ * - @enable-lint
19
+ * - @disable-next-line
20
+ * - @disable-line
21
+ * - @disable-rule rule-name, rule-name2
22
+ * - @enable-rule rule-name
23
+ * - @import alias from './path/to/file.json'
24
+ * - @import alias from './path/to/file.yaml'
25
+ */
26
+ export declare function parseDirectives(document: TextDocument): Directive[];
27
+ /**
28
+ * Check if diagnostics should be suppressed for a given line
29
+ */
30
+ export declare function isDiagnosticSuppressed(line: number, directives: Directive[], diagnosticSource?: string): boolean;
31
+ /**
32
+ * Process directives that affect ranges
33
+ * This handles block-level directives like @disable-lint ... @enable-lint
34
+ */
35
+ export declare function processRangeDirectives(directives: Directive[]): Directive[];
36
+ /**
37
+ * Extract import directives from a document
38
+ * Returns array of import directives with resolved paths
39
+ */
40
+ export declare function getImportDirectives(document: TextDocument, documentUri: string): Array<{
41
+ alias: string;
42
+ path: string;
43
+ }>;
44
+ //# sourceMappingURL=directives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../../src/lsp/directives.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGvE;;GAEG;AACH,MAAM,MAAM,aAAa,GACnB,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,cAAc,GACd,aAAa,GACb,QAAQ,CAAC;AAEf,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,CA+CnE;AAgED;;GAEG;AACH,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,EAAE,EACvB,gBAAgB,CAAC,EAAE,MAAM,GAC1B,OAAO,CA6BT;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CA6B3E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAyDvH"}