@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.
Files changed (47) hide show
  1. package/README.md +53 -35
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +45 -7
  4. package/dist/index.js.map +1 -1
  5. package/dist/rules/bgp.d.ts.map +1 -1
  6. package/dist/rules/bgp.js +14 -2
  7. package/dist/rules/bgp.js.map +1 -1
  8. package/dist/rules/catalog.d.ts.map +1 -1
  9. package/dist/rules/catalog.js +7 -6
  10. package/dist/rules/catalog.js.map +1 -1
  11. package/dist/rules/cfg.d.ts.map +1 -1
  12. package/dist/rules/cfg.js +39 -1
  13. package/dist/rules/cfg.js.map +1 -1
  14. package/dist/rules/net.d.ts.map +1 -1
  15. package/dist/rules/net.js +41 -11
  16. package/dist/rules/net.js.map +1 -1
  17. package/dist/rules/normalize.d.ts.map +1 -1
  18. package/dist/rules/normalize.js +9 -1
  19. package/dist/rules/normalize.js.map +1 -1
  20. package/dist/rules/shared.d.ts +4 -0
  21. package/dist/rules/shared.d.ts.map +1 -1
  22. package/dist/rules/shared.js +156 -4
  23. package/dist/rules/shared.js.map +1 -1
  24. package/dist/rules/sym.d.ts.map +1 -1
  25. package/dist/rules/sym.js +47 -9
  26. package/dist/rules/sym.js.map +1 -1
  27. package/dist/rules/type.d.ts.map +1 -1
  28. package/dist/rules/type.js +14 -37
  29. package/dist/rules/type.js.map +1 -1
  30. package/package.json +16 -8
  31. package/.oxfmtrc.json +0 -16
  32. package/src/index.ts +0 -155
  33. package/src/rules/bgp.ts +0 -239
  34. package/src/rules/catalog.ts +0 -80
  35. package/src/rules/cfg.ts +0 -562
  36. package/src/rules/net.ts +0 -262
  37. package/src/rules/normalize.ts +0 -90
  38. package/src/rules/ospf.ts +0 -221
  39. package/src/rules/shared.ts +0 -354
  40. package/src/rules/sym.ts +0 -342
  41. package/src/rules/type.ts +0 -210
  42. package/test/linter.bgp-ospf.test.ts +0 -129
  43. package/test/linter.migration.test.ts +0 -66
  44. package/test/linter.net-type.test.ts +0 -132
  45. package/test/linter.sym-cfg.test.ts +0 -224
  46. package/test/linter.test.ts +0 -21
  47. package/tsconfig.json +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/rules/net.ts"],"names":[],"mappings":"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"}
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;AAkEzD,eAAO,MAAM,wBAAwB,GACnC,QAAQ,kBAAkB,EAC1B,iBAAiB,cAAc,EAAE,EACjC,UAAS;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,KAC7B,cAAc,EAkBhB,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"}
@@ -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: RULE_SEVERITY[mappedCode],
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,aAAa,CAAC,UAAU,CAAC;QACnC,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC;QAC1E,GAAG,EAAE,UAAU,CAAC,GAAG,IAAI,WAAW;KACnC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,MAA0B,EAC1B,eAAiC,EACjC,UAA4B,EAAE,EACZ,EAAE;IACpB,MAAM,iBAAiB,GAAqB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B;KACF,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,GAAG,iBAAiB,EAAE,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACnE,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAChD,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/rules/normalize.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/rules/shared.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,cAAc,EAAE,CAAC;AAElE,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MACC,CAAC;AAEjD,eAAO,MAAM,oBAAoB,GAC/B,MAAM,QAAQ,EACd,SAAS,MAAM,EACf,OAAO,WAAW,EAClB,SAAQ,cAAc,CAAC,QAAQ,CAAY,KAC1C,cAWD,CAAC;AAEH,eAAO,MAAM,kBAAkB,GAAI,YAAY,cAAc,KAAG,MAQnD,CAAC;AAEd,eAAO,MAAM,oBAAoB,GAC/B,aAAa,cAAc,EAAE,EAC7B,MAAM,GAAG,CAAC,MAAM,CAAC,EACjB,YAAY,cAAc,KACzB,IAQF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,MAAM,QAAQ,EACd,YAAY,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,CAAC,KACpD,cAID,CAAC;AAEH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,kBAAkB,KACzB,mBAAmB,EAInB,CAAC;AAEJ,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,kBAAkB,KACzB,mBAAmB,EAInB,CAAC;AAEJ,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,kBAAkB,KACzB,gBAAgB,EAIhB,CAAC;AAEJ,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,kBAAkB,KACzB,iBAAiB,EAIjB,CAAC;AAEJ,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,kBAAkB,KACzB,mBAAmB,EAInB,CAAC;AAEJ,eAAO,MAAM,6BAA6B,GACxC,QAAQ,kBAAkB,KACzB,KAAK,CAAC,iBAAiB,GAAG,mBAAmB,CAI7C,CAAC;AAEJ,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,kBAAkB,KACzB,eAAe,EAGf,CAAC;AAEJ,eAAO,MAAM,sBAAsB,GAAI,QAAQ,kBAAkB,KAAG,OAGjE,CAAC;AAEJ,eAAO,MAAM,cAAc,GACzB,aAAa,mBAAmB,EAChC,UAAU,MAAM,KACf,OAA8D,CAAC;AAElE,eAAO,MAAM,uBAAuB,GAClC,aAAa,mBAAmB,KAC/B,iBAAiB,EACsD,CAAC;AAE3E,eAAO,MAAM,wBAAwB,GACnC,aAAa,mBAAmB,KAC/B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAuB5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,aAAa,mBAAmB,KAC/B,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CA0BjE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,IAYjE,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,MAAM,MAAM,EACZ,SAAS,MAAM,KACd,MAAM,GAAG,IAIX,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,OAG7C,CAAC;AAEJ,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG,MAAM,EAkBzD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,gBAAgB,MAAM,KACrB,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,SAqBhD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,OAqB/C,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,kBAAkB,KACzB,KAAK,CAAC;IAAE,SAAS,EAAE,mBAAmB,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAanE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,kBAAkB,EAC1B,cAAc,MAAM,KACnB,mBAAmB,GAAG,SAKxB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAuI5E,eAAO,MAAM,qBAAqB,GAChC,QAAQ,kBAAkB,EAC1B,KAAK,MAAM,GAAG,SAAS,EACvB,aAAS,KACR,gBAkEF,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,MAAM,YAAY,EAClB,MAAM,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,EAC/D,MAAM,MAAM,KACX,OAKF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,MAAM,QAAQ,EACd,SAAS,MAAM,EACf,aAAa,mBAAmB,EAChC,WAAW,sBAAsB,KAChC,cAWD,CAAC"}
@@ -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}\\s+(-?\\d+)`, "i");
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(text);
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 && text[matchIndex - 1] === ".";
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(text);
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);
@@ -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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"}
@@ -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;AAqTrB,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"}
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 collectProtocolFilterClauses = (declaration) => {
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: statement.filterNameRange ?? statement,
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+([A-Za-z_][A-Za-z0-9_]*))?/i);
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 (!tableNames.has(tableName.toLowerCase()) &&
172
- !hasSymbolKind(core, "table", tableName)) {
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sym.js","sourceRoot":"","sources":["../../src/rules/sym.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sym.js","sourceRoot":"","sources":["../../src/rules/sym.ts"],"names":[],"mappings":"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"}
@@ -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;AAgMrB,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"}
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"}
@@ -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("[") && right.endsWith("]")) {
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
  }