@birdcc/linter 0.0.1-alpha.0 → 0.1.0-beta.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/README.md +53 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -7
- package/dist/index.js.map +1 -1
- package/dist/rules/bgp.d.ts.map +1 -1
- package/dist/rules/bgp.js +14 -2
- package/dist/rules/bgp.js.map +1 -1
- package/dist/rules/catalog.d.ts.map +1 -1
- package/dist/rules/catalog.js +7 -6
- package/dist/rules/catalog.js.map +1 -1
- package/dist/rules/cfg.d.ts.map +1 -1
- package/dist/rules/cfg.js +39 -1
- package/dist/rules/cfg.js.map +1 -1
- package/dist/rules/net.d.ts.map +1 -1
- package/dist/rules/net.js +41 -11
- package/dist/rules/net.js.map +1 -1
- package/dist/rules/normalize.d.ts.map +1 -1
- package/dist/rules/normalize.js +9 -1
- package/dist/rules/normalize.js.map +1 -1
- package/dist/rules/shared.d.ts +4 -0
- package/dist/rules/shared.d.ts.map +1 -1
- package/dist/rules/shared.js +156 -4
- package/dist/rules/shared.js.map +1 -1
- package/dist/rules/sym.d.ts.map +1 -1
- package/dist/rules/sym.js +47 -9
- package/dist/rules/sym.js.map +1 -1
- package/dist/rules/type.d.ts.map +1 -1
- package/dist/rules/type.js +14 -37
- package/dist/rules/type.js.map +1 -1
- package/package.json +16 -8
- package/.oxfmtrc.json +0 -16
- package/src/index.ts +0 -155
- package/src/rules/bgp.ts +0 -239
- package/src/rules/catalog.ts +0 -80
- package/src/rules/cfg.ts +0 -562
- package/src/rules/net.ts +0 -262
- package/src/rules/normalize.ts +0 -90
- package/src/rules/ospf.ts +0 -221
- package/src/rules/shared.ts +0 -354
- package/src/rules/sym.ts +0 -342
- package/src/rules/type.ts +0 -210
- package/test/linter.bgp-ospf.test.ts +0 -129
- package/test/linter.migration.test.ts +0 -66
- package/test/linter.net-type.test.ts +0 -132
- package/test/linter.sym-cfg.test.ts +0 -224
- package/test/linter.test.ts +0 -21
- package/tsconfig.json +0 -8
package/dist/rules/net.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/rules/net.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/rules/net.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/rules/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/rules/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAiFzD,eAAO,MAAM,wBAAwB,GACnC,QAAQ,kBAAkB,EAC1B,iBAAiB,cAAc,EAAE,EACjC,UAAS;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,KAC7B,cAAc,EAkBhB,CAAC"}
|
package/dist/rules/normalize.js
CHANGED
|
@@ -36,12 +36,20 @@ const normalizeMessage = (code, mappedCode, message) => {
|
|
|
36
36
|
}
|
|
37
37
|
return `[${code}] ${message}`;
|
|
38
38
|
};
|
|
39
|
+
const normalizedSeverity = (diagnostic, mappedCode) => {
|
|
40
|
+
if (diagnostic.source === "parser" &&
|
|
41
|
+
diagnostic.code === "parser/missing-symbol" &&
|
|
42
|
+
diagnostic.message === "Missing name for protocol declaration") {
|
|
43
|
+
return "info";
|
|
44
|
+
}
|
|
45
|
+
return RULE_SEVERITY[mappedCode];
|
|
46
|
+
};
|
|
39
47
|
const toNormalizedDiagnostic = (diagnostic, fallbackUri) => {
|
|
40
48
|
const mappedCode = normalizeCode(diagnostic.code);
|
|
41
49
|
return {
|
|
42
50
|
...diagnostic,
|
|
43
51
|
code: mappedCode,
|
|
44
|
-
severity:
|
|
52
|
+
severity: normalizedSeverity(diagnostic, mappedCode),
|
|
45
53
|
message: normalizeMessage(diagnostic.code, mappedCode, diagnostic.message),
|
|
46
54
|
uri: diagnostic.uri ?? fallbackUri,
|
|
47
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/rules/normalize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAiB,aAAa,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,aAAa,GAA6B;IAC9C,+BAA+B,EAAE,eAAe;IAChD,8BAA8B,EAAE,eAAe;IAC/C,4BAA4B,EAAE,uBAAuB;IACrD,eAAe,EAAE,eAAe;IAChC,yBAAyB,EAAE,oBAAoB;IAC/C,yBAAyB,EAAE,uBAAuB;IAClD,4BAA4B,EAAE,uBAAuB;IACrD,mCAAmC,EAAE,uBAAuB;IAC5D,uBAAuB,EAAE,2BAA2B;IACpD,0BAA0B,EAAE,eAAe;CAC5C,CAAC;AAEF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,0BAA0B;IAC1B,yBAAyB;IACzB,qBAAqB;IACrB,uBAAuB;IACvB,sBAAsB;CACvB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,IAAY,EAAY,EAAE;IAC/C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,IAAI,aAAa,EAAE,CAAC;QAC1B,OAAO,aAAa,CAAC,IAAI,CAAa,CAAC;IACzC,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,OAAO,uBAAuB,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,IAAY,EACZ,UAAoB,EACpB,OAAe,EACP,EAAE;IACV,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,UAA0B,EAC1B,WAAoB,EACJ,EAAE;IAClB,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO;QACL,GAAG,UAAU;QACb,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/rules/normalize.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/shared.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface RuleContext {
|
|
|
5
5
|
text: string;
|
|
6
6
|
parsed: ParsedBirdDocument;
|
|
7
7
|
core: CoreSnapshot;
|
|
8
|
+
uri?: string;
|
|
8
9
|
}
|
|
9
10
|
export type BirdRule = (context: RuleContext) => BirdDiagnostic[];
|
|
10
11
|
export declare const normalizeClause: (text: string) => string;
|
|
@@ -19,6 +20,7 @@ export declare const filterDeclarations: (parsed: ParsedBirdDocument) => FilterD
|
|
|
19
20
|
export declare const functionDeclarations: (parsed: ParsedBirdDocument) => FunctionDeclaration[];
|
|
20
21
|
export declare const filterAndFunctionDeclarations: (parsed: ParsedBirdDocument) => Array<FilterDeclaration | FunctionDeclaration>;
|
|
21
22
|
export declare const routerIdDeclarations: (parsed: ParsedBirdDocument) => BirdDeclaration[];
|
|
23
|
+
export declare const hasIncludeDeclarations: (parsed: ParsedBirdDocument) => boolean;
|
|
22
24
|
export declare const isProtocolType: (declaration: ProtocolDeclaration, expected: string) => boolean;
|
|
23
25
|
export declare const protocolOtherStatements: (declaration: ProtocolDeclaration) => ProtocolStatement[];
|
|
24
26
|
export declare const protocolOtherTextEntries: (declaration: ProtocolDeclaration) => Array<{
|
|
@@ -41,6 +43,8 @@ export declare const eachFilterBodyExpression: (parsed: ParsedBirdDocument) => A
|
|
|
41
43
|
declarationName: string;
|
|
42
44
|
}>;
|
|
43
45
|
export declare const findTemplateByName: (parsed: ParsedBirdDocument, templateName: string) => TemplateDeclaration | undefined;
|
|
46
|
+
export type LintDocumentRole = "entry" | "fragment" | "library" | "unknown";
|
|
47
|
+
export declare const inferLintDocumentRole: (parsed: ParsedBirdDocument, uri: string | undefined, text?: string) => LintDocumentRole;
|
|
44
48
|
export declare const hasSymbolKind: (core: CoreSnapshot, kind: "protocol" | "template" | "filter" | "function" | "table", name: string) => boolean;
|
|
45
49
|
export declare const createProtocolDiagnostic: (code: RuleCode, message: string, declaration: ProtocolDeclaration, severity?: BirdDiagnosticSeverity) => BirdDiagnostic;
|
|
46
50
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/rules/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/rules/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/shared.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
1
2
|
import { isIP } from "node:net";
|
|
3
|
+
import { basename, dirname, extname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
2
5
|
import { RULE_SEVERITY } from "./catalog.js";
|
|
3
6
|
export const normalizeClause = (text) => text.trim().replace(/\s+/g, " ").toLowerCase();
|
|
4
7
|
export const createRuleDiagnostic = (code, message, range, source = "linter") => ({
|
|
@@ -41,6 +44,7 @@ export const filterDeclarations = (parsed) => parsed.program.declarations.filter
|
|
|
41
44
|
export const functionDeclarations = (parsed) => parsed.program.declarations.filter((declaration) => declaration.kind === "function");
|
|
42
45
|
export const filterAndFunctionDeclarations = (parsed) => parsed.program.declarations.filter((declaration) => declaration.kind === "filter" || declaration.kind === "function");
|
|
43
46
|
export const routerIdDeclarations = (parsed) => parsed.program.declarations.filter((declaration) => declaration.kind === "router-id");
|
|
47
|
+
export const hasIncludeDeclarations = (parsed) => parsed.program.declarations.some((declaration) => declaration.kind === "include");
|
|
44
48
|
export const isProtocolType = (declaration, expected) => declaration.protocolType.toLowerCase() === expected;
|
|
45
49
|
export const protocolOtherStatements = (declaration) => declaration.statements.filter((statement) => statement.kind === "other");
|
|
46
50
|
export const protocolOtherTextEntries = (declaration) => {
|
|
@@ -93,24 +97,25 @@ export const numericValue = (value) => {
|
|
|
93
97
|
return Number.isNaN(parsed) ? null : parsed;
|
|
94
98
|
};
|
|
95
99
|
export const extractFirstNumberAfterKeyword = (text, keyword) => {
|
|
96
|
-
const pattern = new RegExp(`${keyword}
|
|
100
|
+
const pattern = new RegExp(`${keyword}(?:\\s+time)?\\s+(-?\\d+)`, "i");
|
|
97
101
|
const matched = text.match(pattern);
|
|
98
102
|
return numericValue(matched?.[1]);
|
|
99
103
|
};
|
|
100
104
|
export const hasBooleanValue = (value) => ["on", "off", "yes", "no", "true", "false", "enabled", "disabled"].includes(normalizeClause(value));
|
|
101
105
|
export const extractFunctionCalls = (text) => {
|
|
102
106
|
const names = [];
|
|
107
|
+
const sanitized = text.replace(/#.*$/gm, "");
|
|
103
108
|
const pattern = /\b([A-Za-z_][A-Za-z0-9_]*)\s*\(/g;
|
|
104
109
|
const ignored = new Set(["if", "switch", "print", "defined"]);
|
|
105
|
-
let current = pattern.exec(
|
|
110
|
+
let current = pattern.exec(sanitized);
|
|
106
111
|
while (current) {
|
|
107
112
|
const name = current[1] ?? "";
|
|
108
113
|
const matchIndex = current.index ?? -1;
|
|
109
|
-
const isMethodCall = matchIndex > 0 &&
|
|
114
|
+
const isMethodCall = matchIndex > 0 && sanitized[matchIndex - 1] === ".";
|
|
110
115
|
if (name.length > 0 && !ignored.has(name.toLowerCase()) && !isMethodCall) {
|
|
111
116
|
names.push(name);
|
|
112
117
|
}
|
|
113
|
-
current = pattern.exec(
|
|
118
|
+
current = pattern.exec(sanitized);
|
|
114
119
|
}
|
|
115
120
|
return names;
|
|
116
121
|
};
|
|
@@ -165,6 +170,153 @@ export const findTemplateByName = (parsed, templateName) => {
|
|
|
165
170
|
const lowered = templateName.toLowerCase();
|
|
166
171
|
return templateDeclarations(parsed).find((item) => item.name.toLowerCase() === lowered);
|
|
167
172
|
};
|
|
173
|
+
const CANONICAL_ENTRY_FILE_NAMES = new Set([
|
|
174
|
+
"bird.conf",
|
|
175
|
+
"bird2.conf",
|
|
176
|
+
"bird3.conf",
|
|
177
|
+
]);
|
|
178
|
+
const normalizeUriPath = (uri) => {
|
|
179
|
+
if (!uri) {
|
|
180
|
+
return "";
|
|
181
|
+
}
|
|
182
|
+
if (!uri.includes("://")) {
|
|
183
|
+
return uri;
|
|
184
|
+
}
|
|
185
|
+
if (uri.startsWith("file://")) {
|
|
186
|
+
try {
|
|
187
|
+
return fileURLToPath(uri);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return uri;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return uri;
|
|
194
|
+
};
|
|
195
|
+
const FRAGMENT_DIR_MARKERS = [
|
|
196
|
+
"peer",
|
|
197
|
+
"peers",
|
|
198
|
+
"pubpeers",
|
|
199
|
+
"downstream",
|
|
200
|
+
"upstream",
|
|
201
|
+
"customer",
|
|
202
|
+
"transit",
|
|
203
|
+
"neighbor",
|
|
204
|
+
"snippet",
|
|
205
|
+
"snippets",
|
|
206
|
+
"parts",
|
|
207
|
+
"routeserver",
|
|
208
|
+
"route-server",
|
|
209
|
+
"route_server",
|
|
210
|
+
];
|
|
211
|
+
const LIBRARY_DIR_MARKERS = [
|
|
212
|
+
"lib",
|
|
213
|
+
"libs",
|
|
214
|
+
"common",
|
|
215
|
+
"shared",
|
|
216
|
+
"function",
|
|
217
|
+
"functions",
|
|
218
|
+
"filter",
|
|
219
|
+
"filters",
|
|
220
|
+
"macro",
|
|
221
|
+
"macros",
|
|
222
|
+
];
|
|
223
|
+
const FRAGMENT_FILE_MARKERS = [
|
|
224
|
+
"babel",
|
|
225
|
+
"bfd",
|
|
226
|
+
"pipe",
|
|
227
|
+
"protocol",
|
|
228
|
+
"route",
|
|
229
|
+
"router",
|
|
230
|
+
"static",
|
|
231
|
+
];
|
|
232
|
+
const LIBRARY_FILE_MARKERS = [
|
|
233
|
+
"communities",
|
|
234
|
+
"filter",
|
|
235
|
+
"filters",
|
|
236
|
+
"protocol",
|
|
237
|
+
"rpki",
|
|
238
|
+
"table",
|
|
239
|
+
"templates",
|
|
240
|
+
"time",
|
|
241
|
+
];
|
|
242
|
+
const hasNamedProtocols = (parsed) => protocolDeclarations(parsed).some((declaration) => declaration.name.length > 0);
|
|
243
|
+
const hasLibraryLikeContent = (parsed) => parsed.program.declarations.some((declaration) => ["define", "include", "filter", "function", "template", "table"].includes(declaration.kind));
|
|
244
|
+
const stemOfPath = (path) => {
|
|
245
|
+
const fileName = basename(path).toLowerCase();
|
|
246
|
+
const extension = extname(fileName);
|
|
247
|
+
return extension.length > 0 ? fileName.slice(0, -extension.length) : fileName;
|
|
248
|
+
};
|
|
249
|
+
const hasTimeformatOnlyContent = (text) => {
|
|
250
|
+
const normalizedLines = text
|
|
251
|
+
.split(/\r?\n/u)
|
|
252
|
+
.map((line) => line.replace(/#.*$/u, "").trim())
|
|
253
|
+
.filter((line) => line.length > 0);
|
|
254
|
+
if (normalizedLines.length === 0) {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
return normalizedLines.every((line) => /^timeformat\s+[A-Za-z0-9_-]+\s+[A-Za-z0-9_-]+(?:\s+[A-Za-z0-9_-]+)*;$/u.test(line));
|
|
258
|
+
};
|
|
259
|
+
const findAncestorEntryFile = (path) => {
|
|
260
|
+
let currentDir = dirname(path);
|
|
261
|
+
for (let depth = 0; depth < 6; depth += 1) {
|
|
262
|
+
for (const entryFileName of CANONICAL_ENTRY_FILE_NAMES) {
|
|
263
|
+
const candidate = join(currentDir, entryFileName);
|
|
264
|
+
if (existsSync(candidate)) {
|
|
265
|
+
return candidate;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const parentDir = dirname(currentDir);
|
|
269
|
+
if (parentDir === currentDir) {
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
currentDir = parentDir;
|
|
273
|
+
}
|
|
274
|
+
return null;
|
|
275
|
+
};
|
|
276
|
+
export const inferLintDocumentRole = (parsed, uri, text = "") => {
|
|
277
|
+
const normalizedPath = normalizeUriPath(uri);
|
|
278
|
+
if (normalizedPath.length === 0 || normalizedPath.startsWith("memory://")) {
|
|
279
|
+
return "unknown";
|
|
280
|
+
}
|
|
281
|
+
const loweredPath = normalizedPath.replace(/\\/g, "/").toLowerCase();
|
|
282
|
+
const fileName = basename(loweredPath);
|
|
283
|
+
const fileStem = stemOfPath(loweredPath);
|
|
284
|
+
const pathParts = loweredPath.split("/").filter(Boolean);
|
|
285
|
+
const inFragmentDir = pathParts.some((part) => FRAGMENT_DIR_MARKERS.some((marker) => part.includes(marker)));
|
|
286
|
+
const inLibraryDir = pathParts.some((part) => LIBRARY_DIR_MARKERS.some((marker) => part === marker || part.includes(marker)));
|
|
287
|
+
const fragmentFile = FRAGMENT_FILE_MARKERS.some((marker) => fileStem.includes(marker));
|
|
288
|
+
const libraryFile = LIBRARY_FILE_MARKERS.some((marker) => fileStem.includes(marker));
|
|
289
|
+
const hasAncestorEntry = findAncestorEntryFile(normalizedPath) !== null;
|
|
290
|
+
if (CANONICAL_ENTRY_FILE_NAMES.has(fileName)) {
|
|
291
|
+
return "entry";
|
|
292
|
+
}
|
|
293
|
+
if (hasTimeformatOnlyContent(text)) {
|
|
294
|
+
return "library";
|
|
295
|
+
}
|
|
296
|
+
if (routerIdDeclarations(parsed).length > 0 ||
|
|
297
|
+
hasIncludeDeclarations(parsed)) {
|
|
298
|
+
return "entry";
|
|
299
|
+
}
|
|
300
|
+
if (inLibraryDir && !hasNamedProtocols(parsed)) {
|
|
301
|
+
return "library";
|
|
302
|
+
}
|
|
303
|
+
if (inFragmentDir && hasNamedProtocols(parsed)) {
|
|
304
|
+
return "fragment";
|
|
305
|
+
}
|
|
306
|
+
if (hasAncestorEntry && hasNamedProtocols(parsed)) {
|
|
307
|
+
return "fragment";
|
|
308
|
+
}
|
|
309
|
+
if (hasAncestorEntry && (inLibraryDir || libraryFile || fragmentFile)) {
|
|
310
|
+
return hasNamedProtocols(parsed) ? "fragment" : "library";
|
|
311
|
+
}
|
|
312
|
+
if (!hasNamedProtocols(parsed) && hasLibraryLikeContent(parsed)) {
|
|
313
|
+
return "library";
|
|
314
|
+
}
|
|
315
|
+
if (inLibraryDir && fileStem.includes("community")) {
|
|
316
|
+
return "library";
|
|
317
|
+
}
|
|
318
|
+
return "entry";
|
|
319
|
+
};
|
|
168
320
|
export const hasSymbolKind = (core, kind, name) => {
|
|
169
321
|
const lowered = name.toLowerCase();
|
|
170
322
|
return core.symbols.some((symbol) => symbol.kind === kind && symbol.name.toLowerCase() === lowered);
|
package/dist/rules/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/rules/shared.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/rules/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/sym.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sym.d.ts","sourceRoot":"","sources":["../../src/rules/sym.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQnD,OAAO,EAYL,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"sym.d.ts","sourceRoot":"","sources":["../../src/rules/sym.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQnD,OAAO,EAYL,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AA+WrB,eAAO,MAAM,QAAQ,EAAE,QAAQ,EAK9B,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,SAAS,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAC/B,cAAc,EAEhB,CAAC"}
|
package/dist/rules/sym.js
CHANGED
|
@@ -19,10 +19,21 @@ const BUILTIN_FUNCTION_NAMES = new Set([
|
|
|
19
19
|
"match",
|
|
20
20
|
"route_source",
|
|
21
21
|
"roa_check",
|
|
22
|
+
"delete",
|
|
23
|
+
"filter",
|
|
22
24
|
"prefix",
|
|
23
25
|
"ip",
|
|
24
26
|
"int",
|
|
27
|
+
"append",
|
|
25
28
|
]);
|
|
29
|
+
const BUILTIN_TABLE_NAMES = new Set([
|
|
30
|
+
"master4",
|
|
31
|
+
"master6",
|
|
32
|
+
"master",
|
|
33
|
+
"main4",
|
|
34
|
+
"main6",
|
|
35
|
+
]);
|
|
36
|
+
const isNumericTableReference = (value) => /^-?\d+$/u.test(value.trim());
|
|
26
37
|
const isImportOrExportFilterClause = (value) => {
|
|
27
38
|
if (!value || typeof value !== "object") {
|
|
28
39
|
return false;
|
|
@@ -31,13 +42,33 @@ const isImportOrExportFilterClause = (value) => {
|
|
|
31
42
|
};
|
|
32
43
|
const isChannelFilterClause = (entry) => (entry.kind === "import" || entry.kind === "export") &&
|
|
33
44
|
entry.mode === "filter";
|
|
34
|
-
const
|
|
45
|
+
const textInRange = (source, range) => {
|
|
46
|
+
const lines = source.split(/\r?\n/u);
|
|
47
|
+
const startLine = Math.max(range.line - 1, 0);
|
|
48
|
+
const endLine = Math.max(range.endLine - 1, startLine);
|
|
49
|
+
const selected = lines.slice(startLine, endLine + 1);
|
|
50
|
+
if (selected.length === 0) {
|
|
51
|
+
return "";
|
|
52
|
+
}
|
|
53
|
+
const first = selected[0] ?? "";
|
|
54
|
+
const last = selected[selected.length - 1] ?? "";
|
|
55
|
+
selected[0] = first.slice(Math.max(range.column - 1, 0));
|
|
56
|
+
selected[selected.length - 1] = last.slice(0, Math.max(range.endColumn - 1, 0));
|
|
57
|
+
return selected.join("\n");
|
|
58
|
+
};
|
|
59
|
+
const hasInlineFilterBlock = (source, range) => {
|
|
60
|
+
const clauseText = textInRange(source, range).toLowerCase();
|
|
61
|
+
return /\bfilter\s*\{/u.test(clauseText);
|
|
62
|
+
};
|
|
63
|
+
const collectProtocolFilterClauses = (source, declaration) => {
|
|
35
64
|
const clauses = [];
|
|
36
65
|
for (const statement of declaration.statements) {
|
|
37
66
|
if (isImportOrExportFilterClause(statement)) {
|
|
67
|
+
const range = statement.filterNameRange ?? statement;
|
|
38
68
|
clauses.push({
|
|
39
69
|
filterName: statement.filterName,
|
|
40
|
-
range
|
|
70
|
+
range,
|
|
71
|
+
requiresFilterName: !hasInlineFilterBlock(source, range),
|
|
41
72
|
});
|
|
42
73
|
continue;
|
|
43
74
|
}
|
|
@@ -51,6 +82,7 @@ const collectProtocolFilterClauses = (declaration) => {
|
|
|
51
82
|
clauses.push({
|
|
52
83
|
filterName: entry.filterName,
|
|
53
84
|
range: entry.filterNameRange ?? entry,
|
|
85
|
+
requiresFilterName: !hasInlineFilterBlock(source, entry.filterNameRange ?? entry),
|
|
54
86
|
});
|
|
55
87
|
}
|
|
56
88
|
}
|
|
@@ -78,17 +110,20 @@ const symProtoTypeMismatchRule = ({ parsed }) => {
|
|
|
78
110
|
}
|
|
79
111
|
return diagnostics;
|
|
80
112
|
};
|
|
81
|
-
const symFilterRequiredRule = ({ parsed, core }) => {
|
|
113
|
+
const symFilterRequiredRule = ({ text, parsed, core }) => {
|
|
82
114
|
const diagnostics = [];
|
|
83
115
|
const seen = new Set();
|
|
84
116
|
const filterNames = new Set(filterDeclarations(parsed).map((item) => item.name.toLowerCase()));
|
|
85
117
|
for (const declaration of protocolDeclarations(parsed)) {
|
|
86
|
-
for (const clause of collectProtocolFilterClauses(declaration)) {
|
|
118
|
+
for (const clause of collectProtocolFilterClauses(text, declaration)) {
|
|
87
119
|
const name = clause.filterName?.trim();
|
|
88
|
-
if (!name) {
|
|
120
|
+
if (!name && clause.requiresFilterName) {
|
|
89
121
|
pushUniqueDiagnostic(diagnostics, seen, createRuleDiagnostic("sym/filter-required", `Protocol '${declaration.name}' requires a filter name in import/export filter clause`, clause.range));
|
|
90
122
|
continue;
|
|
91
123
|
}
|
|
124
|
+
if (!name) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
92
127
|
const loweredName = name.toLowerCase();
|
|
93
128
|
if (!filterNames.has(loweredName) &&
|
|
94
129
|
!hasSymbolKind(core, "filter", name)) {
|
|
@@ -150,7 +185,8 @@ const symTableRequiredRule = ({ parsed, core }) => {
|
|
|
150
185
|
continue;
|
|
151
186
|
}
|
|
152
187
|
if (!tableNames.has(tableName.toLowerCase()) &&
|
|
153
|
-
!hasSymbolKind(core, "table", tableName)
|
|
188
|
+
!hasSymbolKind(core, "table", tableName) &&
|
|
189
|
+
!BUILTIN_TABLE_NAMES.has(tableName.toLowerCase())) {
|
|
154
190
|
pushUniqueDiagnostic(diagnostics, seen, createRuleDiagnostic("sym/table-required", `Protocol '${declaration.name}' references unknown table '${tableName}'`, entry.tableNameRange));
|
|
155
191
|
}
|
|
156
192
|
}
|
|
@@ -159,7 +195,7 @@ const symTableRequiredRule = ({ parsed, core }) => {
|
|
|
159
195
|
continue;
|
|
160
196
|
}
|
|
161
197
|
const text = statement.text;
|
|
162
|
-
const matched = text.match(/\btable\b(?:\s+([
|
|
198
|
+
const matched = text.match(/\btable\b(?:\s+([^;#\s]+))?/i);
|
|
163
199
|
if (!matched) {
|
|
164
200
|
continue;
|
|
165
201
|
}
|
|
@@ -168,8 +204,10 @@ const symTableRequiredRule = ({ parsed, core }) => {
|
|
|
168
204
|
pushUniqueDiagnostic(diagnostics, seen, createRuleDiagnostic("sym/table-required", `Protocol '${declaration.name}' requires table name after 'table'`, statement));
|
|
169
205
|
continue;
|
|
170
206
|
}
|
|
171
|
-
if (!
|
|
172
|
-
!
|
|
207
|
+
if (!isNumericTableReference(tableName) &&
|
|
208
|
+
!tableNames.has(tableName.toLowerCase()) &&
|
|
209
|
+
!hasSymbolKind(core, "table", tableName) &&
|
|
210
|
+
!BUILTIN_TABLE_NAMES.has(tableName.toLowerCase())) {
|
|
173
211
|
pushUniqueDiagnostic(diagnostics, seen, createRuleDiagnostic("sym/table-required", `Protocol '${declaration.name}' references unknown table '${tableName}'`, statement));
|
|
174
212
|
}
|
|
175
213
|
}
|
package/dist/rules/sym.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sym.js","sourceRoot":"","sources":["../../src/rules/sym.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,aAAa,CAAC;AAErB,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAU,EAAE,CACvD,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,KAAK;IACL,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,UAAU;CACX,CAAC,CAAC;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,KAAK;IACL,UAAU;IACV,eAAe;IACf,mBAAmB;IACnB,qBAAqB;IACrB,YAAY;IACZ,SAAS;IACT,KAAK;IACL,OAAO;IACP,cAAc;IACd,WAAW;IACX,QAAQ;IACR,IAAI;IACJ,KAAK;
|
|
1
|
+
{"version":3,"file":"sym.js","sourceRoot":"","sources":["../../src/rules/sym.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,aAAa,CAAC;AAErB,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAU,EAAE,CACvD,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,KAAK;IACL,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,UAAU;CACX,CAAC,CAAC;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,KAAK;IACL,UAAU;IACV,eAAe;IACf,mBAAmB;IACnB,qBAAqB;IACrB,YAAY;IACZ,SAAS;IACT,KAAK;IACL,OAAO;IACP,cAAc;IACd,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,KAAK;IACL,QAAQ;CACT,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,SAAS;IACT,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AACH,MAAM,uBAAuB,GAAG,CAAC,KAAa,EAAW,EAAE,CACzD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAEhC,MAAM,4BAA4B,GAAG,CACnC,KAAc,EAKd,EAAE;IACF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,KAAmB,EAC+B,EAAE,CACpD,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IACpD,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAE1B,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,KAAkB,EAAU,EAAE;IACjE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAErD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CACxC,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CACjC,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAE,KAAkB,EAAW,EAAE;IAC3E,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,OAAO,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAG,CACnC,MAAc,EACd,WAAgC,EAK/B,EAAE;IACH,MAAM,OAAO,GAIR,EAAE,CAAC;IAER,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;QAC/C,IAAI,4BAA4B,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,KAAK;gBACL,kBAAkB,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC;aACzD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,KAAK,EAAE,KAAK,CAAC,eAAe,IAAI,KAAK;gBACrC,kBAAkB,EAAE,CAAC,oBAAoB,CACvC,MAAM,EACN,KAAK,CAAC,eAAe,IAAI,KAAK,CAC/B;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAa,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACxD,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,WAAW,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,uBAAuB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,uBAAuB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtE,IACE,cAAc,CAAC,MAAM,KAAK,CAAC;YAC3B,cAAc,CAAC,MAAM,KAAK,CAAC;YAC3B,cAAc,KAAK,cAAc,EACjC,CAAC;YACD,SAAS;QACX,CAAC;QAED,oBAAoB,CAClB,WAAW,EACX,IAAI,EACJ,oBAAoB,CAClB,yBAAyB,EACzB,aAAa,WAAW,CAAC,IAAI,MAAM,WAAW,CAAC,YAAY,0BAA0B,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,YAAY,GAAG,EAChI,WAAW,CAAC,iBAAiB,IAAI,WAAW,CAAC,SAAS,CACvD,CACF,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IACjE,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAClE,CAAC;IAEF,KAAK,MAAM,WAAW,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,MAAM,IAAI,4BAA4B,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACvC,oBAAoB,CAClB,WAAW,EACX,IAAI,EACJ,oBAAoB,CAClB,qBAAqB,EACrB,aAAa,WAAW,CAAC,IAAI,yDAAyD,EACtF,MAAM,CAAC,KAAK,CACb,CACF,CAAC;gBACF,SAAS;YACX,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,IACE,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC7B,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EACpC,CAAC;gBACD,IAAI,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC1C,SAAS;gBACX,CAAC;gBAED,oBAAoB,CAClB,WAAW,EACX,IAAI,EACJ,oBAAoB,CAClB,qBAAqB,EACrB,aAAa,WAAW,CAAC,IAAI,gCAAgC,IAAI,GAAG,EACpE,MAAM,CAAC,KAAK,CACb,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IAC7D,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACpE,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;QAC7C,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,wBAAwB,CACnE,MAAM,CACP,EAAE,CAAC;QACF,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YACvD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,KAAK,MAAM,QAAQ,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,IACE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACrC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EACzC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,oBAAoB,CAClB,WAAW,EACX,IAAI,EACJ,oBAAoB,CAClB,uBAAuB,EACvB,gBAAgB,eAAe,oCAAoC,QAAQ,GAAG,EAC9E,SAAS,CACV,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IAC1D,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACjE,CAAC;IAEF,KAAK,MAAM,WAAW,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;oBACtC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC3B,SAAS;oBACX,CAAC;oBAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;oBACzC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,oBAAoB,CAClB,WAAW,EACX,IAAI,EACJ,oBAAoB,CAClB,oBAAoB,EACpB,aAAa,WAAW,CAAC,IAAI,iDAAiD,EAC9E,KAAK,CACN,CACF,CAAC;wBACF,SAAS;oBACX,CAAC;oBAED,IACE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;wBACxC,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC;wBACxC,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EACjD,CAAC;wBACD,oBAAoB,CAClB,WAAW,EACX,IAAI,EACJ,oBAAoB,CAClB,oBAAoB,EACpB,aAAa,WAAW,CAAC,IAAI,+BAA+B,SAAS,GAAG,EACxE,KAAK,CAAC,cAAc,CACrB,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,oBAAoB,CAClB,WAAW,EACX,IAAI,EACJ,oBAAoB,CAClB,oBAAoB,EACpB,aAAa,WAAW,CAAC,IAAI,qCAAqC,EAClE,SAAS,CACV,CACF,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IACE,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBACnC,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;gBACxC,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC;gBACxC,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EACjD,CAAC;gBACD,oBAAoB,CAClB,WAAW,EACX,IAAI,EACJ,oBAAoB,CAClB,oBAAoB,EACpB,aAAa,WAAW,CAAC,IAAI,+BAA+B,SAAS,GAAG,EACxE,SAAS,CACV,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAe;IAClC,wBAAwB;IACxB,qBAAqB;IACrB,uBAAuB;IACvB,oBAAoB;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,OAAgC,EACd,EAAE;IACpB,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC"}
|
package/dist/rules/type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/rules/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/rules/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AAgKrB,eAAO,MAAM,SAAS,EAAE,QAAQ,EAG/B,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,SAAS,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAC/B,cAAc,EAEhB,CAAC"}
|
package/dist/rules/type.js
CHANGED
|
@@ -28,46 +28,32 @@ const splitSetItems = (setText) => {
|
|
|
28
28
|
.map((item) => item.trim())
|
|
29
29
|
.filter((item) => item.length > 0);
|
|
30
30
|
};
|
|
31
|
-
const statementText = (statement) => {
|
|
32
|
-
if (statement.kind === "expression") {
|
|
33
|
-
return statement.expressionText;
|
|
34
|
-
}
|
|
35
|
-
if (statement.kind === "other") {
|
|
36
|
-
return statement.text;
|
|
37
|
-
}
|
|
38
|
-
if (statement.kind === "if") {
|
|
39
|
-
return statement.conditionText ?? "";
|
|
40
|
-
}
|
|
41
|
-
if (statement.kind === "return") {
|
|
42
|
-
return statement.valueText ?? "";
|
|
43
|
-
}
|
|
44
|
-
return "";
|
|
45
|
-
};
|
|
46
31
|
const declarationText = (source, range) => {
|
|
47
32
|
const lines = source.split(/\r?\n/);
|
|
48
33
|
const startLine = Math.max(1, range.line);
|
|
49
34
|
const endLine = Math.max(startLine, range.endLine);
|
|
50
35
|
return lines.slice(startLine - 1, endLine).join("\n");
|
|
51
36
|
};
|
|
37
|
+
const isLikelyReference = (value) => /^[A-Za-z_][A-Za-z0-9_.]*$/u.test(value.trim());
|
|
38
|
+
const isLikelyPrefixPattern = (value) => /^[0-9A-Fa-f:.]+\/\d+(?:\+|\{\d+,\d+\})?$/u.test(value.trim());
|
|
39
|
+
const isLikelyTupleLiteral = (value) => {
|
|
40
|
+
const normalized = value.trim();
|
|
41
|
+
return (normalized.startsWith("(") &&
|
|
42
|
+
normalized.endsWith(")") &&
|
|
43
|
+
normalized.includes(","));
|
|
44
|
+
};
|
|
52
45
|
const typeNotIterableRule = ({ parsed }) => {
|
|
53
46
|
const diagnostics = [];
|
|
54
47
|
const seen = new Set();
|
|
55
48
|
for (const declaration of filterAndFunctionDeclarations(parsed)) {
|
|
56
|
-
for (const statement of declaration.statements) {
|
|
57
|
-
const text = statementText(statement);
|
|
58
|
-
if (!text) {
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
for (const match of extractMatches(text)) {
|
|
62
|
-
if (match.right.startsWith("[") && match.right.endsWith("]")) {
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
pushUniqueDiagnostic(diagnostics, seen, createRuleDiagnostic("type/not-iterable", `Type '${match.right}' is not iterable in match expression '${match.left} ~ ${match.right}'`, statement));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
49
|
for (const match of declaration.matches) {
|
|
69
50
|
const right = normalizeRightExpression(match.right);
|
|
70
|
-
if (right.startsWith("[")
|
|
51
|
+
if (right.startsWith("[") ||
|
|
52
|
+
isLikelyTupleLiteral(right) ||
|
|
53
|
+
isLikelyReference(right) ||
|
|
54
|
+
isLikelyPrefixPattern(right) ||
|
|
55
|
+
scalarTypeOfExpression(right) === "ip" ||
|
|
56
|
+
scalarTypeOfExpression(right) === "prefix") {
|
|
71
57
|
continue;
|
|
72
58
|
}
|
|
73
59
|
pushUniqueDiagnostic(diagnostics, seen, createRuleDiagnostic("type/not-iterable", `Type '${right}' is not iterable in match expression '${match.left} ${match.operator} ${match.right}'`, match));
|
|
@@ -98,15 +84,6 @@ const typeSetIncompatibleRule = ({ parsed, text }) => {
|
|
|
98
84
|
pushUniqueDiagnostic(diagnostics, seen, createRuleDiagnostic("type/set-incompatible", `Set-incompatible type (${leftType}) for match set '${normalizedRight}'`, range));
|
|
99
85
|
};
|
|
100
86
|
for (const declaration of filterAndFunctionDeclarations(parsed)) {
|
|
101
|
-
for (const statement of declaration.statements) {
|
|
102
|
-
const text = statementText(statement);
|
|
103
|
-
if (!text) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
for (const match of extractMatches(text)) {
|
|
107
|
-
evaluateSetCompatibility(match.left, match.right, statement);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
87
|
for (const match of declaration.matches) {
|
|
111
88
|
evaluateSetCompatibility(match.left, match.right, match);
|
|
112
89
|
}
|