@jrc03c/gtlint 0.12.1

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 (152) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/bin/gtlint.js +4 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +248 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/config.d.ts +32 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/config.js +112 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/formatter/formatter.d.ts +22 -0
  13. package/dist/formatter/formatter.d.ts.map +1 -0
  14. package/dist/formatter/formatter.js +376 -0
  15. package/dist/formatter/formatter.js.map +1 -0
  16. package/dist/formatter/index.d.ts +2 -0
  17. package/dist/formatter/index.d.ts.map +1 -0
  18. package/dist/formatter/index.js +2 -0
  19. package/dist/formatter/index.js.map +1 -0
  20. package/dist/index.d.ts +11 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +12 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/language/index.d.ts +8 -0
  25. package/dist/language/index.d.ts.map +1 -0
  26. package/dist/language/index.js +8 -0
  27. package/dist/language/index.js.map +1 -0
  28. package/dist/language/keyword-spec.d.ts +87 -0
  29. package/dist/language/keyword-spec.d.ts.map +1 -0
  30. package/dist/language/keyword-spec.js +772 -0
  31. package/dist/language/keyword-spec.js.map +1 -0
  32. package/dist/lexer/index.d.ts +3 -0
  33. package/dist/lexer/index.d.ts.map +1 -0
  34. package/dist/lexer/index.js +3 -0
  35. package/dist/lexer/index.js.map +1 -0
  36. package/dist/lexer/lexer.d.ts +36 -0
  37. package/dist/lexer/lexer.d.ts.map +1 -0
  38. package/dist/lexer/lexer.js +709 -0
  39. package/dist/lexer/lexer.js.map +1 -0
  40. package/dist/lexer/tokens.d.ts +45 -0
  41. package/dist/lexer/tokens.d.ts.map +1 -0
  42. package/dist/lexer/tokens.js +170 -0
  43. package/dist/lexer/tokens.js.map +1 -0
  44. package/dist/linter/directives.d.ts +71 -0
  45. package/dist/linter/directives.d.ts.map +1 -0
  46. package/dist/linter/directives.js +329 -0
  47. package/dist/linter/directives.js.map +1 -0
  48. package/dist/linter/index.d.ts +6 -0
  49. package/dist/linter/index.d.ts.map +1 -0
  50. package/dist/linter/index.js +4 -0
  51. package/dist/linter/index.js.map +1 -0
  52. package/dist/linter/linter.d.ts +39 -0
  53. package/dist/linter/linter.d.ts.map +1 -0
  54. package/dist/linter/linter.js +292 -0
  55. package/dist/linter/linter.js.map +1 -0
  56. package/dist/linter/rules/correct-indentation.d.ts +22 -0
  57. package/dist/linter/rules/correct-indentation.d.ts.map +1 -0
  58. package/dist/linter/rules/correct-indentation.js +111 -0
  59. package/dist/linter/rules/correct-indentation.js.map +1 -0
  60. package/dist/linter/rules/goto-needs-reset-in-events.d.ts +28 -0
  61. package/dist/linter/rules/goto-needs-reset-in-events.d.ts.map +1 -0
  62. package/dist/linter/rules/goto-needs-reset-in-events.js +88 -0
  63. package/dist/linter/rules/goto-needs-reset-in-events.js.map +1 -0
  64. package/dist/linter/rules/indent-style.d.ts +3 -0
  65. package/dist/linter/rules/indent-style.d.ts.map +1 -0
  66. package/dist/linter/rules/indent-style.js +41 -0
  67. package/dist/linter/rules/indent-style.js.map +1 -0
  68. package/dist/linter/rules/index.d.ts +5 -0
  69. package/dist/linter/rules/index.d.ts.map +1 -0
  70. package/dist/linter/rules/index.js +47 -0
  71. package/dist/linter/rules/index.js.map +1 -0
  72. package/dist/linter/rules/no-duplicate-labels.d.ts +3 -0
  73. package/dist/linter/rules/no-duplicate-labels.d.ts.map +1 -0
  74. package/dist/linter/rules/no-duplicate-labels.js +75 -0
  75. package/dist/linter/rules/no-duplicate-labels.js.map +1 -0
  76. package/dist/linter/rules/no-empty-blocks.d.ts +15 -0
  77. package/dist/linter/rules/no-empty-blocks.d.ts.map +1 -0
  78. package/dist/linter/rules/no-empty-blocks.js +45 -0
  79. package/dist/linter/rules/no-empty-blocks.js.map +1 -0
  80. package/dist/linter/rules/no-inline-argument.d.ts +14 -0
  81. package/dist/linter/rules/no-inline-argument.d.ts.map +1 -0
  82. package/dist/linter/rules/no-inline-argument.js +56 -0
  83. package/dist/linter/rules/no-inline-argument.js.map +1 -0
  84. package/dist/linter/rules/no-invalid-goto.d.ts +3 -0
  85. package/dist/linter/rules/no-invalid-goto.d.ts.map +1 -0
  86. package/dist/linter/rules/no-invalid-goto.js +92 -0
  87. package/dist/linter/rules/no-invalid-goto.js.map +1 -0
  88. package/dist/linter/rules/no-single-quotes.d.ts +3 -0
  89. package/dist/linter/rules/no-single-quotes.d.ts.map +1 -0
  90. package/dist/linter/rules/no-single-quotes.js +73 -0
  91. package/dist/linter/rules/no-single-quotes.js.map +1 -0
  92. package/dist/linter/rules/no-unclosed-bracket.d.ts +3 -0
  93. package/dist/linter/rules/no-unclosed-bracket.d.ts.map +1 -0
  94. package/dist/linter/rules/no-unclosed-bracket.js +108 -0
  95. package/dist/linter/rules/no-unclosed-bracket.js.map +1 -0
  96. package/dist/linter/rules/no-unclosed-string.d.ts +3 -0
  97. package/dist/linter/rules/no-unclosed-string.d.ts.map +1 -0
  98. package/dist/linter/rules/no-unclosed-string.js +48 -0
  99. package/dist/linter/rules/no-unclosed-string.js.map +1 -0
  100. package/dist/linter/rules/no-undefined-vars.d.ts +3 -0
  101. package/dist/linter/rules/no-undefined-vars.d.ts.map +1 -0
  102. package/dist/linter/rules/no-undefined-vars.js +257 -0
  103. package/dist/linter/rules/no-undefined-vars.js.map +1 -0
  104. package/dist/linter/rules/no-unreachable-code.d.ts +3 -0
  105. package/dist/linter/rules/no-unreachable-code.d.ts.map +1 -0
  106. package/dist/linter/rules/no-unreachable-code.js +215 -0
  107. package/dist/linter/rules/no-unreachable-code.js.map +1 -0
  108. package/dist/linter/rules/no-unused-labels.d.ts +3 -0
  109. package/dist/linter/rules/no-unused-labels.d.ts.map +1 -0
  110. package/dist/linter/rules/no-unused-labels.js +77 -0
  111. package/dist/linter/rules/no-unused-labels.js.map +1 -0
  112. package/dist/linter/rules/no-unused-vars.d.ts +3 -0
  113. package/dist/linter/rules/no-unused-vars.d.ts.map +1 -0
  114. package/dist/linter/rules/no-unused-vars.js +288 -0
  115. package/dist/linter/rules/no-unused-vars.js.map +1 -0
  116. package/dist/linter/rules/purchase-subkeyword-constraints.d.ts +15 -0
  117. package/dist/linter/rules/purchase-subkeyword-constraints.d.ts.map +1 -0
  118. package/dist/linter/rules/purchase-subkeyword-constraints.js +88 -0
  119. package/dist/linter/rules/purchase-subkeyword-constraints.js.map +1 -0
  120. package/dist/linter/rules/required-subkeywords.d.ts +14 -0
  121. package/dist/linter/rules/required-subkeywords.d.ts.map +1 -0
  122. package/dist/linter/rules/required-subkeywords.js +64 -0
  123. package/dist/linter/rules/required-subkeywords.js.map +1 -0
  124. package/dist/linter/rules/valid-keyword.d.ts +3 -0
  125. package/dist/linter/rules/valid-keyword.d.ts.map +1 -0
  126. package/dist/linter/rules/valid-keyword.js +41 -0
  127. package/dist/linter/rules/valid-keyword.js.map +1 -0
  128. package/dist/linter/rules/valid-sub-keyword.d.ts +3 -0
  129. package/dist/linter/rules/valid-sub-keyword.d.ts.map +1 -0
  130. package/dist/linter/rules/valid-sub-keyword.js +89 -0
  131. package/dist/linter/rules/valid-sub-keyword.js.map +1 -0
  132. package/dist/linter/rules/valid-subkeyword-value.d.ts +16 -0
  133. package/dist/linter/rules/valid-subkeyword-value.d.ts.map +1 -0
  134. package/dist/linter/rules/valid-subkeyword-value.js +100 -0
  135. package/dist/linter/rules/valid-subkeyword-value.js.map +1 -0
  136. package/dist/parser/ast.d.ts +119 -0
  137. package/dist/parser/ast.d.ts.map +1 -0
  138. package/dist/parser/ast.js +58 -0
  139. package/dist/parser/ast.js.map +1 -0
  140. package/dist/parser/index.d.ts +3 -0
  141. package/dist/parser/index.d.ts.map +1 -0
  142. package/dist/parser/index.js +3 -0
  143. package/dist/parser/index.js.map +1 -0
  144. package/dist/parser/parser.d.ts +55 -0
  145. package/dist/parser/parser.d.ts.map +1 -0
  146. package/dist/parser/parser.js +608 -0
  147. package/dist/parser/parser.js.map +1 -0
  148. package/dist/types.d.ts +44 -0
  149. package/dist/types.d.ts.map +1 -0
  150. package/dist/types.js +36 -0
  151. package/dist/types.js.map +1 -0
  152. package/package.json +49 -0
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Parses and tracks linter and formatter directives from comments.
3
+ *
4
+ * Supported directives:
5
+ *
6
+ * Combined (affects both linting and formatting):
7
+ * - `-- @gt-disable` - Disable both lint and format until `@gt-enable` or EOF
8
+ * - `-- @gt-enable` - Re-enable both lint and format
9
+ * - `-- @gt-disable-next-line` - Disable both lint and format for next line only
10
+ * - `-- @gt-disable-next-line rule1, rule2` - Disable specific lint rules and format for next line
11
+ *
12
+ * Lint-only:
13
+ * - `-- @gtlint-disable` - Disable all lint rules until `@gtlint-enable` or EOF
14
+ * - `-- @gtlint-disable rule1, rule2` - Disable specific lint rules
15
+ * - `-- @gtlint-enable` - Re-enable all lint rules
16
+ * - `-- @gtlint-enable rule1` - Re-enable specific lint rule
17
+ * - `-- @gtlint-disable-next-line` - Disable all lint rules for next line
18
+ * - `-- @gtlint-disable-next-line rule1, rule2` - Disable specific lint rules for next line
19
+ *
20
+ * Format-only:
21
+ * - `-- @gtformat-disable` - Disable formatting until `@gtformat-enable` or EOF
22
+ * - `-- @gtformat-enable` - Re-enable formatting
23
+ *
24
+ * Variable tracking:
25
+ * - `-- @from-parent: var1, var2` - Variables received from parent program (suppresses no-undefined-vars)
26
+ * - `-- @from-url: var1, var2` - Alias for @from-parent; variables received via URL query string (suppresses no-undefined-vars)
27
+ * - `-- @from-child: var1, var2` - Variables received from child program (suppresses no-undefined-vars)
28
+ * - `-- @to-parent: var1, var2` - Variables sent to parent program (suppresses no-unused-vars)
29
+ * - `-- @to-csv: var1, var2` - Alias for @to-parent; variables collected in CSV export (suppresses no-unused-vars)
30
+ * - `-- @to-child: var1, var2` - Variables sent to child program (suppresses no-unused-vars)
31
+ */
32
+ export function parseDirectives(source) {
33
+ const lines = source.split('\n');
34
+ const state = {
35
+ lintDisabledLines: new Map(),
36
+ formatDisabledLines: new Set(),
37
+ fromParentVars: new Map(),
38
+ fromChildVars: new Map(),
39
+ toParentVars: new Set(),
40
+ toChildVars: new Set(),
41
+ };
42
+ // Track active disable regions
43
+ // Key: 'all' or rule name, Value: start line
44
+ const activeLintDisables = new Map();
45
+ // For format: just track start line (no rule granularity)
46
+ let formatDisableStart = null;
47
+ // Track next-line disables
48
+ let nextLineLintDisable = null;
49
+ let nextLineFormatDisable = false;
50
+ for (let i = 0; i < lines.length; i++) {
51
+ const line = lines[i];
52
+ const lineNum = i + 1; // 1-indexed
53
+ // Apply next-line disables from previous line
54
+ if (nextLineLintDisable !== null) {
55
+ state.lintDisabledLines.set(lineNum, nextLineLintDisable);
56
+ nextLineLintDisable = null;
57
+ }
58
+ if (nextLineFormatDisable) {
59
+ state.formatDisabledLines.add(lineNum);
60
+ nextLineFormatDisable = false;
61
+ }
62
+ // Check for comment directives
63
+ const commentMatch = line.match(/^\s*--\s*(.+)$/);
64
+ if (!commentMatch)
65
+ continue;
66
+ const commentContent = commentMatch[1].trim();
67
+ // Parse @gt-disable-next-line (combined lint + format)
68
+ if (commentContent.startsWith('@gt-disable-next-line')) {
69
+ const rulesStr = commentContent.slice('@gt-disable-next-line'.length).trim();
70
+ if (rulesStr) {
71
+ nextLineLintDisable = parseRuleList(rulesStr);
72
+ }
73
+ else {
74
+ nextLineLintDisable = 'all';
75
+ }
76
+ nextLineFormatDisable = true;
77
+ continue;
78
+ }
79
+ // Parse @gt-disable (combined lint + format)
80
+ if (commentContent.startsWith('@gt-disable') && !commentContent.startsWith('@gt-disable-next-line')) {
81
+ const rulesStr = commentContent.slice('@gt-disable'.length).trim();
82
+ if (rulesStr) {
83
+ const rules = parseRuleList(rulesStr);
84
+ for (const rule of rules) {
85
+ activeLintDisables.set(rule, lineNum);
86
+ }
87
+ }
88
+ else {
89
+ activeLintDisables.set('all', lineNum);
90
+ }
91
+ // Also disable format
92
+ if (formatDisableStart === null) {
93
+ formatDisableStart = lineNum;
94
+ }
95
+ continue;
96
+ }
97
+ // Parse @gt-enable (combined lint + format)
98
+ if (commentContent.startsWith('@gt-enable')) {
99
+ const rulesStr = commentContent.slice('@gt-enable'.length).trim();
100
+ if (rulesStr) {
101
+ // Re-enable specific lint rules
102
+ const rules = parseRuleList(rulesStr);
103
+ for (const rule of rules) {
104
+ const startLine = activeLintDisables.get(rule);
105
+ if (startLine !== undefined) {
106
+ addLintDisabledRegion(state, startLine, lineNum - 1, new Set([rule]));
107
+ activeLintDisables.delete(rule);
108
+ }
109
+ }
110
+ }
111
+ else {
112
+ // Re-enable all lint rules
113
+ for (const [key, startLine] of activeLintDisables) {
114
+ if (key === 'all') {
115
+ addLintDisabledRegion(state, startLine, lineNum - 1, 'all');
116
+ }
117
+ else {
118
+ addLintDisabledRegion(state, startLine, lineNum - 1, new Set([key]));
119
+ }
120
+ }
121
+ activeLintDisables.clear();
122
+ }
123
+ // Also re-enable format
124
+ if (formatDisableStart !== null) {
125
+ addFormatDisabledRegion(state, formatDisableStart, lineNum - 1);
126
+ formatDisableStart = null;
127
+ }
128
+ continue;
129
+ }
130
+ // Parse @gtlint-disable-next-line
131
+ if (commentContent.startsWith('@gtlint-disable-next-line')) {
132
+ const rulesStr = commentContent.slice('@gtlint-disable-next-line'.length).trim();
133
+ if (rulesStr) {
134
+ nextLineLintDisable = parseRuleList(rulesStr);
135
+ }
136
+ else {
137
+ nextLineLintDisable = 'all';
138
+ }
139
+ continue;
140
+ }
141
+ // Parse @gtlint-disable
142
+ if (commentContent.startsWith('@gtlint-disable') && !commentContent.startsWith('@gtlint-disable-next-line')) {
143
+ const rulesStr = commentContent.slice('@gtlint-disable'.length).trim();
144
+ if (rulesStr) {
145
+ const rules = parseRuleList(rulesStr);
146
+ for (const rule of rules) {
147
+ activeLintDisables.set(rule, lineNum);
148
+ }
149
+ }
150
+ else {
151
+ activeLintDisables.set('all', lineNum);
152
+ }
153
+ continue;
154
+ }
155
+ // Parse @gtlint-enable
156
+ if (commentContent.startsWith('@gtlint-enable')) {
157
+ const rulesStr = commentContent.slice('@gtlint-enable'.length).trim();
158
+ if (rulesStr) {
159
+ // Re-enable specific rules
160
+ const rules = parseRuleList(rulesStr);
161
+ for (const rule of rules) {
162
+ const startLine = activeLintDisables.get(rule);
163
+ if (startLine !== undefined) {
164
+ // Mark all lines in the region as disabled for this rule
165
+ addLintDisabledRegion(state, startLine, lineNum - 1, new Set([rule]));
166
+ activeLintDisables.delete(rule);
167
+ }
168
+ }
169
+ }
170
+ else {
171
+ // Re-enable all rules
172
+ for (const [key, startLine] of activeLintDisables) {
173
+ if (key === 'all') {
174
+ addLintDisabledRegion(state, startLine, lineNum - 1, 'all');
175
+ }
176
+ else {
177
+ addLintDisabledRegion(state, startLine, lineNum - 1, new Set([key]));
178
+ }
179
+ }
180
+ activeLintDisables.clear();
181
+ }
182
+ continue;
183
+ }
184
+ // Parse @gtformat-disable
185
+ if (commentContent.startsWith('@gtformat-disable') && !commentContent.startsWith('@gtformat-disable-next-line')) {
186
+ if (formatDisableStart === null) {
187
+ formatDisableStart = lineNum;
188
+ }
189
+ continue;
190
+ }
191
+ // Parse @gtformat-enable
192
+ if (commentContent.startsWith('@gtformat-enable')) {
193
+ if (formatDisableStart !== null) {
194
+ addFormatDisabledRegion(state, formatDisableStart, lineNum - 1);
195
+ formatDisableStart = null;
196
+ }
197
+ continue;
198
+ }
199
+ // Parse @from-parent / @from-url (alias)
200
+ if (commentContent.startsWith('@from-parent:') || commentContent.startsWith('@from-url:')) {
201
+ const prefix = commentContent.startsWith('@from-parent:') ? '@from-parent:' : '@from-url:';
202
+ const varsStr = commentContent.slice(prefix.length).trim();
203
+ const vars = parseVarList(varsStr);
204
+ for (const v of vars) {
205
+ state.fromParentVars.set(v, lineNum);
206
+ }
207
+ continue;
208
+ }
209
+ // Parse @from-child
210
+ if (commentContent.startsWith('@from-child:')) {
211
+ const varsStr = commentContent.slice('@from-child:'.length).trim();
212
+ const vars = parseVarList(varsStr);
213
+ for (const v of vars) {
214
+ state.fromChildVars.set(v, lineNum);
215
+ }
216
+ continue;
217
+ }
218
+ // Parse @to-parent / @to-csv (alias)
219
+ if (commentContent.startsWith('@to-parent:') || commentContent.startsWith('@to-csv:')) {
220
+ const prefix = commentContent.startsWith('@to-parent:') ? '@to-parent:' : '@to-csv:';
221
+ const varsStr = commentContent.slice(prefix.length).trim();
222
+ const vars = parseVarList(varsStr);
223
+ for (const v of vars) {
224
+ state.toParentVars.add(v);
225
+ }
226
+ continue;
227
+ }
228
+ // Parse @to-child
229
+ if (commentContent.startsWith('@to-child:')) {
230
+ const varsStr = commentContent.slice('@to-child:'.length).trim();
231
+ const vars = parseVarList(varsStr);
232
+ for (const v of vars) {
233
+ state.toChildVars.add(v);
234
+ }
235
+ continue;
236
+ }
237
+ }
238
+ // Handle any unclosed disable regions (extend to end of file)
239
+ const totalLines = lines.length;
240
+ for (const [key, startLine] of activeLintDisables) {
241
+ if (key === 'all') {
242
+ addLintDisabledRegion(state, startLine, totalLines, 'all');
243
+ }
244
+ else {
245
+ addLintDisabledRegion(state, startLine, totalLines, new Set([key]));
246
+ }
247
+ }
248
+ if (formatDisableStart !== null) {
249
+ addFormatDisabledRegion(state, formatDisableStart, totalLines);
250
+ }
251
+ return state;
252
+ }
253
+ function parseRuleList(str) {
254
+ return new Set(str.split(',')
255
+ .map(s => s.trim())
256
+ .filter(s => s.length > 0));
257
+ }
258
+ function parseVarList(str) {
259
+ return str.split(',')
260
+ .map(s => s.trim())
261
+ .filter(s => s.length > 0);
262
+ }
263
+ function addLintDisabledRegion(state, startLine, endLine, rules) {
264
+ for (let line = startLine; line <= endLine; line++) {
265
+ const existing = state.lintDisabledLines.get(line);
266
+ if (rules === 'all') {
267
+ state.lintDisabledLines.set(line, 'all');
268
+ }
269
+ else if (existing === 'all') {
270
+ // Already all disabled, keep it
271
+ }
272
+ else if (existing) {
273
+ // Merge rule sets
274
+ for (const rule of rules) {
275
+ existing.add(rule);
276
+ }
277
+ }
278
+ else {
279
+ state.lintDisabledLines.set(line, new Set(rules));
280
+ }
281
+ }
282
+ }
283
+ function addFormatDisabledRegion(state, startLine, endLine) {
284
+ for (let line = startLine; line <= endLine; line++) {
285
+ state.formatDisabledLines.add(line);
286
+ }
287
+ }
288
+ /**
289
+ * Check if a lint rule is disabled at a given line.
290
+ */
291
+ export function isRuleDisabled(state, line, ruleId) {
292
+ const disabled = state.lintDisabledLines.get(line);
293
+ if (!disabled)
294
+ return false;
295
+ if (disabled === 'all')
296
+ return true;
297
+ return disabled.has(ruleId);
298
+ }
299
+ /**
300
+ * Check if formatting is disabled at a given line.
301
+ */
302
+ export function isFormatDisabled(state, line) {
303
+ return state.formatDisabledLines.has(line);
304
+ }
305
+ /**
306
+ * Check if a variable is received from parent program.
307
+ */
308
+ export function isFromParentVar(state, varName) {
309
+ return state.fromParentVars.has(varName);
310
+ }
311
+ /**
312
+ * Check if a variable is received from child program.
313
+ */
314
+ export function isFromChildVar(state, varName) {
315
+ return state.fromChildVars.has(varName);
316
+ }
317
+ /**
318
+ * Check if a variable is sent to parent program.
319
+ */
320
+ export function isToParentVar(state, varName) {
321
+ return state.toParentVars.has(varName);
322
+ }
323
+ /**
324
+ * Check if a variable is sent to child program.
325
+ */
326
+ export function isToChildVar(state, varName) {
327
+ return state.toChildVars.has(varName);
328
+ }
329
+ //# sourceMappingURL=directives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directives.js","sourceRoot":"","sources":["../../src/linter/directives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAiBH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAmB;QAC5B,iBAAiB,EAAE,IAAI,GAAG,EAAE;QAC5B,mBAAmB,EAAE,IAAI,GAAG,EAAE;QAC9B,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,WAAW,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;IAEF,+BAA+B;IAC/B,6CAA6C;IAC7C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,0DAA0D;IAC1D,IAAI,kBAAkB,GAAkB,IAAI,CAAC;IAE7C,2BAA2B;IAC3B,IAAI,mBAAmB,GAA+B,IAAI,CAAC;IAC3D,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;QAEnC,8CAA8C;QAC9C,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACjC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAC1D,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,qBAAqB,EAAE,CAAC;YAC1B,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvC,qBAAqB,GAAG,KAAK,CAAC;QAChC,CAAC;QAED,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE9C,uDAAuD;QACvD,IAAI,cAAc,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7E,IAAI,QAAQ,EAAE,CAAC;gBACb,mBAAmB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,mBAAmB,GAAG,KAAK,CAAC;YAC9B,CAAC;YACD,qBAAqB,GAAG,IAAI,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,6CAA6C;QAC7C,IAAI,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACpG,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACnE,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,sBAAsB;YACtB,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBAChC,kBAAkB,GAAG,OAAO,CAAC;YAC/B,CAAC;YACD,SAAS;QACX,CAAC;QAED,4CAA4C;QAC5C,IAAI,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAClE,IAAI,QAAQ,EAAE,CAAC;gBACb,gCAAgC;gBAChC,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC5B,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACtE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,2BAA2B;gBAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,kBAAkB,EAAE,CAAC;oBAClD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;wBAClB,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACN,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;gBACD,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;YACD,wBAAwB;YACxB,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBAChC,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAChE,kBAAkB,GAAG,IAAI,CAAC;YAC5B,CAAC;YACD,SAAS;QACX,CAAC;QAED,kCAAkC;QAClC,IAAI,cAAc,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACjF,IAAI,QAAQ,EAAE,CAAC;gBACb,mBAAmB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,mBAAmB,GAAG,KAAK,CAAC;YAC9B,CAAC;YACD,SAAS;QACX,CAAC;QAED,wBAAwB;QACxB,IAAI,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,CAAC;YAC5G,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACvE,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,SAAS;QACX,CAAC;QAED,uBAAuB;QACvB,IAAI,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,IAAI,QAAQ,EAAE,CAAC;gBACb,2BAA2B;gBAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC5B,yDAAyD;wBACzD,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACtE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,sBAAsB;gBACtB,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,kBAAkB,EAAE,CAAC;oBAClD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;wBAClB,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACN,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;gBACD,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;YACD,SAAS;QACX,CAAC;QAED,0BAA0B;QAC1B,IAAI,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC;YAChH,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBAChC,kBAAkB,GAAG,OAAO,CAAC;YAC/B,CAAC;YACD,SAAS;QACX,CAAC;QAED,yBAAyB;QACzB,IAAI,cAAc,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAClD,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBAChC,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAChE,kBAAkB,GAAG,IAAI,CAAC;YAC5B,CAAC;YACD,SAAS;QACX,CAAC;QAED,yCAAyC;QACzC,IAAI,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1F,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC;YAC3F,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACnC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;YACD,SAAS;QACX,CAAC;QAED,oBAAoB;QACpB,IAAI,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACnC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;YACD,SAAS;QACX,CAAC;QAED,qCAAqC;QACrC,IAAI,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACtF,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;YACrF,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACnC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACD,SAAS;QACX,CAAC;QAED,kBAAkB;QAClB,IAAI,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACnC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;YACD,SAAS;QACX,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,kBAAkB,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAClB,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAChC,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,IAAI,GAAG,CACZ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAqB,EACrB,SAAiB,EACjB,OAAe,EACf,KAA0B;IAE1B,KAAK,IAAI,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC9B,gCAAgC;QAClC,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,kBAAkB;YAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAqB,EACrB,SAAiB,EACjB,OAAe;IAEf,KAAK,IAAI,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACnD,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAqB,EAAE,IAAY,EAAE,MAAc;IAChF,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAqB,EAAE,IAAY;IAClE,OAAO,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAqB,EAAE,OAAe;IACpE,OAAO,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAqB,EAAE,OAAe;IACnE,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAqB,EAAE,OAAe;IAClE,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAqB,EAAE,OAAe;IACjE,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { Linter, lint } from './linter.js';
2
+ export type { LintRule, RuleContext, RuleVisitor, ReportDescriptor } from './linter.js';
3
+ export { rules, getRule, getAllRules } from './rules/index.js';
4
+ export { parseDirectives, isRuleDisabled, isFromParentVar, isFromChildVar, isToParentVar, isToChildVar } from './directives.js';
5
+ export type { DirectiveState } from './directives.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/linter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChI,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { Linter, lint } from './linter.js';
2
+ export { rules, getRule, getAllRules } from './rules/index.js';
3
+ export { parseDirectives, isRuleDisabled, isFromParentVar, isFromChildVar, isToParentVar, isToChildVar } from './directives.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/linter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { LintResult, LinterConfig } from '../types.js';
2
+ export interface ReportDescriptor {
3
+ message: string;
4
+ line: number;
5
+ column: number;
6
+ endLine?: number;
7
+ endColumn?: number;
8
+ }
9
+ export interface RuleContext {
10
+ report(descriptor: ReportDescriptor): void;
11
+ getSourceCode(): string;
12
+ /** Variables received from parent program (@from-parent); name → directive line number */
13
+ getFromParentVars(): Map<string, number>;
14
+ /** Variables received from child program (@from-child); name → directive line number */
15
+ getFromChildVars(): Map<string, number>;
16
+ /** Variables sent to parent program (@to-parent) */
17
+ getToParentVars(): Set<string>;
18
+ /** Variables sent to child program (@to-child) */
19
+ getToChildVars(): Set<string>;
20
+ }
21
+ export interface RuleVisitor {
22
+ [nodeType: string]: (node: any) => void;
23
+ }
24
+ export interface LintRule {
25
+ name: string;
26
+ description: string;
27
+ severity: 'error' | 'warning' | 'info';
28
+ create(context: RuleContext): RuleVisitor;
29
+ }
30
+ export declare class Linter {
31
+ private config;
32
+ private messages;
33
+ private source;
34
+ constructor(config?: Partial<LinterConfig>);
35
+ lint(source: string, filePath?: string): LintResult;
36
+ private visitNode;
37
+ }
38
+ export declare function lint(source: string, config?: Partial<LinterConfig>): LintResult;
39
+ //# sourceMappingURL=linter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter/linter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA8FzE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC3C,aAAa,IAAI,MAAM,CAAC;IACxB,0FAA0F;IAC1F,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,wFAAwF;IACxF,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,oDAAoD;IACpD,eAAe,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,kDAAkD;IAClD,cAAc,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAAC;CAC3C;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAe9C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAoB,GAAG,UAAU;IA6FhE,OAAO,CAAC,SAAS;CA6ElB;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,UAAU,CAG/E"}