@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.
- package/LICENSE +21 -0
- package/README.md +235 -0
- package/bin/gtlint.js +4 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +248 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +32 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +112 -0
- package/dist/config.js.map +1 -0
- package/dist/formatter/formatter.d.ts +22 -0
- package/dist/formatter/formatter.d.ts.map +1 -0
- package/dist/formatter/formatter.js +376 -0
- package/dist/formatter/formatter.js.map +1 -0
- package/dist/formatter/index.d.ts +2 -0
- package/dist/formatter/index.d.ts.map +1 -0
- package/dist/formatter/index.js +2 -0
- package/dist/formatter/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/language/index.d.ts +8 -0
- package/dist/language/index.d.ts.map +1 -0
- package/dist/language/index.js +8 -0
- package/dist/language/index.js.map +1 -0
- package/dist/language/keyword-spec.d.ts +87 -0
- package/dist/language/keyword-spec.d.ts.map +1 -0
- package/dist/language/keyword-spec.js +772 -0
- package/dist/language/keyword-spec.js.map +1 -0
- package/dist/lexer/index.d.ts +3 -0
- package/dist/lexer/index.d.ts.map +1 -0
- package/dist/lexer/index.js +3 -0
- package/dist/lexer/index.js.map +1 -0
- package/dist/lexer/lexer.d.ts +36 -0
- package/dist/lexer/lexer.d.ts.map +1 -0
- package/dist/lexer/lexer.js +709 -0
- package/dist/lexer/lexer.js.map +1 -0
- package/dist/lexer/tokens.d.ts +45 -0
- package/dist/lexer/tokens.d.ts.map +1 -0
- package/dist/lexer/tokens.js +170 -0
- package/dist/lexer/tokens.js.map +1 -0
- package/dist/linter/directives.d.ts +71 -0
- package/dist/linter/directives.d.ts.map +1 -0
- package/dist/linter/directives.js +329 -0
- package/dist/linter/directives.js.map +1 -0
- package/dist/linter/index.d.ts +6 -0
- package/dist/linter/index.d.ts.map +1 -0
- package/dist/linter/index.js +4 -0
- package/dist/linter/index.js.map +1 -0
- package/dist/linter/linter.d.ts +39 -0
- package/dist/linter/linter.d.ts.map +1 -0
- package/dist/linter/linter.js +292 -0
- package/dist/linter/linter.js.map +1 -0
- package/dist/linter/rules/correct-indentation.d.ts +22 -0
- package/dist/linter/rules/correct-indentation.d.ts.map +1 -0
- package/dist/linter/rules/correct-indentation.js +111 -0
- package/dist/linter/rules/correct-indentation.js.map +1 -0
- package/dist/linter/rules/goto-needs-reset-in-events.d.ts +28 -0
- package/dist/linter/rules/goto-needs-reset-in-events.d.ts.map +1 -0
- package/dist/linter/rules/goto-needs-reset-in-events.js +88 -0
- package/dist/linter/rules/goto-needs-reset-in-events.js.map +1 -0
- package/dist/linter/rules/indent-style.d.ts +3 -0
- package/dist/linter/rules/indent-style.d.ts.map +1 -0
- package/dist/linter/rules/indent-style.js +41 -0
- package/dist/linter/rules/indent-style.js.map +1 -0
- package/dist/linter/rules/index.d.ts +5 -0
- package/dist/linter/rules/index.d.ts.map +1 -0
- package/dist/linter/rules/index.js +47 -0
- package/dist/linter/rules/index.js.map +1 -0
- package/dist/linter/rules/no-duplicate-labels.d.ts +3 -0
- package/dist/linter/rules/no-duplicate-labels.d.ts.map +1 -0
- package/dist/linter/rules/no-duplicate-labels.js +75 -0
- package/dist/linter/rules/no-duplicate-labels.js.map +1 -0
- package/dist/linter/rules/no-empty-blocks.d.ts +15 -0
- package/dist/linter/rules/no-empty-blocks.d.ts.map +1 -0
- package/dist/linter/rules/no-empty-blocks.js +45 -0
- package/dist/linter/rules/no-empty-blocks.js.map +1 -0
- package/dist/linter/rules/no-inline-argument.d.ts +14 -0
- package/dist/linter/rules/no-inline-argument.d.ts.map +1 -0
- package/dist/linter/rules/no-inline-argument.js +56 -0
- package/dist/linter/rules/no-inline-argument.js.map +1 -0
- package/dist/linter/rules/no-invalid-goto.d.ts +3 -0
- package/dist/linter/rules/no-invalid-goto.d.ts.map +1 -0
- package/dist/linter/rules/no-invalid-goto.js +92 -0
- package/dist/linter/rules/no-invalid-goto.js.map +1 -0
- package/dist/linter/rules/no-single-quotes.d.ts +3 -0
- package/dist/linter/rules/no-single-quotes.d.ts.map +1 -0
- package/dist/linter/rules/no-single-quotes.js +73 -0
- package/dist/linter/rules/no-single-quotes.js.map +1 -0
- package/dist/linter/rules/no-unclosed-bracket.d.ts +3 -0
- package/dist/linter/rules/no-unclosed-bracket.d.ts.map +1 -0
- package/dist/linter/rules/no-unclosed-bracket.js +108 -0
- package/dist/linter/rules/no-unclosed-bracket.js.map +1 -0
- package/dist/linter/rules/no-unclosed-string.d.ts +3 -0
- package/dist/linter/rules/no-unclosed-string.d.ts.map +1 -0
- package/dist/linter/rules/no-unclosed-string.js +48 -0
- package/dist/linter/rules/no-unclosed-string.js.map +1 -0
- package/dist/linter/rules/no-undefined-vars.d.ts +3 -0
- package/dist/linter/rules/no-undefined-vars.d.ts.map +1 -0
- package/dist/linter/rules/no-undefined-vars.js +257 -0
- package/dist/linter/rules/no-undefined-vars.js.map +1 -0
- package/dist/linter/rules/no-unreachable-code.d.ts +3 -0
- package/dist/linter/rules/no-unreachable-code.d.ts.map +1 -0
- package/dist/linter/rules/no-unreachable-code.js +215 -0
- package/dist/linter/rules/no-unreachable-code.js.map +1 -0
- package/dist/linter/rules/no-unused-labels.d.ts +3 -0
- package/dist/linter/rules/no-unused-labels.d.ts.map +1 -0
- package/dist/linter/rules/no-unused-labels.js +77 -0
- package/dist/linter/rules/no-unused-labels.js.map +1 -0
- package/dist/linter/rules/no-unused-vars.d.ts +3 -0
- package/dist/linter/rules/no-unused-vars.d.ts.map +1 -0
- package/dist/linter/rules/no-unused-vars.js +288 -0
- package/dist/linter/rules/no-unused-vars.js.map +1 -0
- package/dist/linter/rules/purchase-subkeyword-constraints.d.ts +15 -0
- package/dist/linter/rules/purchase-subkeyword-constraints.d.ts.map +1 -0
- package/dist/linter/rules/purchase-subkeyword-constraints.js +88 -0
- package/dist/linter/rules/purchase-subkeyword-constraints.js.map +1 -0
- package/dist/linter/rules/required-subkeywords.d.ts +14 -0
- package/dist/linter/rules/required-subkeywords.d.ts.map +1 -0
- package/dist/linter/rules/required-subkeywords.js +64 -0
- package/dist/linter/rules/required-subkeywords.js.map +1 -0
- package/dist/linter/rules/valid-keyword.d.ts +3 -0
- package/dist/linter/rules/valid-keyword.d.ts.map +1 -0
- package/dist/linter/rules/valid-keyword.js +41 -0
- package/dist/linter/rules/valid-keyword.js.map +1 -0
- package/dist/linter/rules/valid-sub-keyword.d.ts +3 -0
- package/dist/linter/rules/valid-sub-keyword.d.ts.map +1 -0
- package/dist/linter/rules/valid-sub-keyword.js +89 -0
- package/dist/linter/rules/valid-sub-keyword.js.map +1 -0
- package/dist/linter/rules/valid-subkeyword-value.d.ts +16 -0
- package/dist/linter/rules/valid-subkeyword-value.d.ts.map +1 -0
- package/dist/linter/rules/valid-subkeyword-value.js +100 -0
- package/dist/linter/rules/valid-subkeyword-value.js.map +1 -0
- package/dist/parser/ast.d.ts +119 -0
- package/dist/parser/ast.d.ts.map +1 -0
- package/dist/parser/ast.js +58 -0
- package/dist/parser/ast.js.map +1 -0
- package/dist/parser/index.d.ts +3 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +3 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/parser.d.ts +55 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/parser/parser.js +608 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/types.d.ts +44 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +36 -0
- package/dist/types.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|