lostconf 0.2.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/CHANGELOG.md +83 -0
- package/LICENSE +21 -0
- package/LICENSE.md +21 -0
- package/README.md +445 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +139 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/discovery.d.ts +23 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js +75 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/engine.d.ts +24 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +86 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/severity.d.ts +25 -0
- package/dist/core/severity.d.ts.map +1 -0
- package/dist/core/severity.js +225 -0
- package/dist/core/severity.js.map +1 -0
- package/dist/core/types.d.ts +77 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +21 -0
- package/dist/core/types.js.map +1 -0
- package/dist/filetree/scanner.d.ts +26 -0
- package/dist/filetree/scanner.d.ts.map +1 -0
- package/dist/filetree/scanner.js +71 -0
- package/dist/filetree/scanner.js.map +1 -0
- package/dist/filetree/tree.d.ts +5 -0
- package/dist/filetree/tree.d.ts.map +1 -0
- package/dist/filetree/tree.js +5 -0
- package/dist/filetree/tree.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/output/formatter.d.ts +12 -0
- package/dist/output/formatter.d.ts.map +1 -0
- package/dist/output/formatter.js +5 -0
- package/dist/output/formatter.js.map +1 -0
- package/dist/output/json.d.ts +9 -0
- package/dist/output/json.d.ts.map +1 -0
- package/dist/output/json.js +14 -0
- package/dist/output/json.js.map +1 -0
- package/dist/output/sarif.d.ts +9 -0
- package/dist/output/sarif.d.ts.map +1 -0
- package/dist/output/sarif.js +84 -0
- package/dist/output/sarif.js.map +1 -0
- package/dist/output/text.d.ts +9 -0
- package/dist/output/text.d.ts.map +1 -0
- package/dist/output/text.js +87 -0
- package/dist/output/text.js.map +1 -0
- package/dist/parsers/bandit.d.ts +8 -0
- package/dist/parsers/bandit.d.ts.map +1 -0
- package/dist/parsers/bandit.js +66 -0
- package/dist/parsers/bandit.js.map +1 -0
- package/dist/parsers/biome.d.ts +8 -0
- package/dist/parsers/biome.d.ts.map +1 -0
- package/dist/parsers/biome.js +74 -0
- package/dist/parsers/biome.js.map +1 -0
- package/dist/parsers/clang.d.ts +9 -0
- package/dist/parsers/clang.d.ts.map +1 -0
- package/dist/parsers/clang.js +99 -0
- package/dist/parsers/clang.js.map +1 -0
- package/dist/parsers/deno.d.ts +8 -0
- package/dist/parsers/deno.d.ts.map +1 -0
- package/dist/parsers/deno.js +73 -0
- package/dist/parsers/deno.js.map +1 -0
- package/dist/parsers/dotnet.d.ts +9 -0
- package/dist/parsers/dotnet.d.ts.map +1 -0
- package/dist/parsers/dotnet.js +89 -0
- package/dist/parsers/dotnet.js.map +1 -0
- package/dist/parsers/elixir.d.ts +7 -0
- package/dist/parsers/elixir.d.ts.map +1 -0
- package/dist/parsers/elixir.js +59 -0
- package/dist/parsers/elixir.js.map +1 -0
- package/dist/parsers/eslint.d.ts +7 -0
- package/dist/parsers/eslint.d.ts.map +1 -0
- package/dist/parsers/eslint.js +43 -0
- package/dist/parsers/eslint.js.map +1 -0
- package/dist/parsers/flake8.d.ts +10 -0
- package/dist/parsers/flake8.d.ts.map +1 -0
- package/dist/parsers/flake8.js +89 -0
- package/dist/parsers/flake8.js.map +1 -0
- package/dist/parsers/gitignore.d.ts +11 -0
- package/dist/parsers/gitignore.d.ts.map +1 -0
- package/dist/parsers/gitignore.js +72 -0
- package/dist/parsers/gitignore.js.map +1 -0
- package/dist/parsers/gitleaks.d.ts +8 -0
- package/dist/parsers/gitleaks.d.ts.map +1 -0
- package/dist/parsers/gitleaks.js +127 -0
- package/dist/parsers/gitleaks.js.map +1 -0
- package/dist/parsers/golangci.d.ts +7 -0
- package/dist/parsers/golangci.d.ts.map +1 -0
- package/dist/parsers/golangci.js +73 -0
- package/dist/parsers/golangci.js.map +1 -0
- package/dist/parsers/hadolint.d.ts +8 -0
- package/dist/parsers/hadolint.d.ts.map +1 -0
- package/dist/parsers/hadolint.js +95 -0
- package/dist/parsers/hadolint.js.map +1 -0
- package/dist/parsers/index.d.ts +38 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +154 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/java.d.ts +11 -0
- package/dist/parsers/java.d.ts.map +1 -0
- package/dist/parsers/java.js +75 -0
- package/dist/parsers/java.js.map +1 -0
- package/dist/parsers/jest.d.ts +7 -0
- package/dist/parsers/jest.d.ts.map +1 -0
- package/dist/parsers/jest.js +118 -0
- package/dist/parsers/jest.js.map +1 -0
- package/dist/parsers/kotlin.d.ts +7 -0
- package/dist/parsers/kotlin.d.ts.map +1 -0
- package/dist/parsers/kotlin.js +90 -0
- package/dist/parsers/kotlin.js.map +1 -0
- package/dist/parsers/markdown.d.ts +7 -0
- package/dist/parsers/markdown.d.ts.map +1 -0
- package/dist/parsers/markdown.js +40 -0
- package/dist/parsers/markdown.js.map +1 -0
- package/dist/parsers/php.d.ts +9 -0
- package/dist/parsers/php.d.ts.map +1 -0
- package/dist/parsers/php.js +92 -0
- package/dist/parsers/php.js.map +1 -0
- package/dist/parsers/prettier.d.ts +7 -0
- package/dist/parsers/prettier.d.ts.map +1 -0
- package/dist/parsers/prettier.js +43 -0
- package/dist/parsers/prettier.js.map +1 -0
- package/dist/parsers/pylint.d.ts +8 -0
- package/dist/parsers/pylint.d.ts.map +1 -0
- package/dist/parsers/pylint.js +92 -0
- package/dist/parsers/pylint.js.map +1 -0
- package/dist/parsers/pyproject.d.ts +7 -0
- package/dist/parsers/pyproject.d.ts.map +1 -0
- package/dist/parsers/pyproject.js +127 -0
- package/dist/parsers/pyproject.js.map +1 -0
- package/dist/parsers/pyright.d.ts +8 -0
- package/dist/parsers/pyright.d.ts.map +1 -0
- package/dist/parsers/pyright.js +63 -0
- package/dist/parsers/pyright.js.map +1 -0
- package/dist/parsers/rubocop.d.ts +7 -0
- package/dist/parsers/rubocop.d.ts.map +1 -0
- package/dist/parsers/rubocop.js +102 -0
- package/dist/parsers/rubocop.js.map +1 -0
- package/dist/parsers/rust.d.ts +9 -0
- package/dist/parsers/rust.d.ts.map +1 -0
- package/dist/parsers/rust.js +68 -0
- package/dist/parsers/rust.js.map +1 -0
- package/dist/parsers/scala.d.ts +9 -0
- package/dist/parsers/scala.d.ts.map +1 -0
- package/dist/parsers/scala.js +72 -0
- package/dist/parsers/scala.js.map +1 -0
- package/dist/parsers/semgrep.d.ts +10 -0
- package/dist/parsers/semgrep.d.ts.map +1 -0
- package/dist/parsers/semgrep.js +111 -0
- package/dist/parsers/semgrep.js.map +1 -0
- package/dist/parsers/shellcheck.d.ts +8 -0
- package/dist/parsers/shellcheck.d.ts.map +1 -0
- package/dist/parsers/shellcheck.js +49 -0
- package/dist/parsers/shellcheck.js.map +1 -0
- package/dist/parsers/stylelint.d.ts +9 -0
- package/dist/parsers/stylelint.d.ts.map +1 -0
- package/dist/parsers/stylelint.js +95 -0
- package/dist/parsers/stylelint.js.map +1 -0
- package/dist/parsers/swift.d.ts +7 -0
- package/dist/parsers/swift.d.ts.map +1 -0
- package/dist/parsers/swift.js +64 -0
- package/dist/parsers/swift.js.map +1 -0
- package/dist/parsers/tflint.d.ts +8 -0
- package/dist/parsers/tflint.d.ts.map +1 -0
- package/dist/parsers/tflint.js +59 -0
- package/dist/parsers/tflint.js.map +1 -0
- package/dist/parsers/typescript.d.ts +7 -0
- package/dist/parsers/typescript.d.ts.map +1 -0
- package/dist/parsers/typescript.js +138 -0
- package/dist/parsers/typescript.js.map +1 -0
- package/dist/parsers/yamllint.d.ts +8 -0
- package/dist/parsers/yamllint.d.ts.map +1 -0
- package/dist/parsers/yamllint.js +93 -0
- package/dist/parsers/yamllint.js.map +1 -0
- package/dist/plugin/registry.d.ts +20 -0
- package/dist/plugin/registry.d.ts.map +1 -0
- package/dist/plugin/registry.js +52 -0
- package/dist/plugin/registry.js.map +1 -0
- package/dist/plugin/types.d.ts +16 -0
- package/dist/plugin/types.d.ts.map +1 -0
- package/dist/plugin/types.js +5 -0
- package/dist/plugin/types.js.map +1 -0
- package/dist/validator/glob.d.ts +16 -0
- package/dist/validator/glob.d.ts.map +1 -0
- package/dist/validator/glob.js +44 -0
- package/dist/validator/glob.js.map +1 -0
- package/dist/validator/regex.d.ts +10 -0
- package/dist/validator/regex.d.ts.map +1 -0
- package/dist/validator/regex.js +45 -0
- package/dist/validator/regex.js.map +1 -0
- package/dist/validator/validator.d.ts +17 -0
- package/dist/validator/validator.d.ts.map +1 -0
- package/dist/validator/validator.js +85 -0
- package/dist/validator/validator.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for PHP linter configuration files (phpcs.xml, phpstan.neon)
|
|
3
|
+
*/
|
|
4
|
+
import { PatternType } from '../core/types.js';
|
|
5
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
6
|
+
/** Parse phpcs.xml and extract file patterns */
|
|
7
|
+
function parsePhpcsConfig(_filename, content) {
|
|
8
|
+
const patterns = [];
|
|
9
|
+
const lines = content.split('\n');
|
|
10
|
+
// Regex patterns for PHPCS XML
|
|
11
|
+
const filePatternRegexes = [
|
|
12
|
+
// <exclude-pattern>...</exclude-pattern>
|
|
13
|
+
/<exclude-pattern[^>]*>([^<]+)<\/exclude-pattern>/gi,
|
|
14
|
+
// <file>...</file>
|
|
15
|
+
/<file[^>]*>([^<]+)<\/file>/gi,
|
|
16
|
+
// <exclude name="..." />
|
|
17
|
+
/<exclude[^>]*\sname\s*=\s*["']([^"']+)["']/gi
|
|
18
|
+
];
|
|
19
|
+
for (let i = 0; i < lines.length; i++) {
|
|
20
|
+
const line = lines[i];
|
|
21
|
+
const lineNum = i + 1;
|
|
22
|
+
for (const regex of filePatternRegexes) {
|
|
23
|
+
regex.lastIndex = 0;
|
|
24
|
+
let match;
|
|
25
|
+
while ((match = regex.exec(line)) !== null) {
|
|
26
|
+
const value = match[1]?.trim();
|
|
27
|
+
if (!value)
|
|
28
|
+
continue;
|
|
29
|
+
const type = isGlobPattern(value) ? PatternType.GLOB : PatternType.PATH;
|
|
30
|
+
patterns.push({
|
|
31
|
+
value,
|
|
32
|
+
type,
|
|
33
|
+
line: lineNum,
|
|
34
|
+
column: (match.index ?? 0) + 1
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return patterns;
|
|
40
|
+
}
|
|
41
|
+
/** Parse phpstan.neon and extract file patterns */
|
|
42
|
+
function parsePhpstanConfig(_filename, content) {
|
|
43
|
+
const patterns = [];
|
|
44
|
+
const lines = content.split('\n');
|
|
45
|
+
// Track if we're in a paths/excludes section
|
|
46
|
+
let inPathsSection = false;
|
|
47
|
+
for (let i = 0; i < lines.length; i++) {
|
|
48
|
+
const line = lines[i];
|
|
49
|
+
const lineNum = i + 1;
|
|
50
|
+
const trimmed = line.trim();
|
|
51
|
+
// Check for paths/excludes section headers
|
|
52
|
+
if (/^(paths|excludePaths|scanFiles|scanDirectories|excludes_analyse):/.test(trimmed)) {
|
|
53
|
+
inPathsSection = true;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
// End of section (new key at same or lower indent)
|
|
57
|
+
if (inPathsSection && /^\w+:/.test(trimmed) && !trimmed.startsWith('-')) {
|
|
58
|
+
inPathsSection = false;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
// Extract list items
|
|
62
|
+
if (inPathsSection) {
|
|
63
|
+
const listMatch = trimmed.match(/^-\s+(?:%[^%]+%\/)?(.+)$/);
|
|
64
|
+
if (listMatch) {
|
|
65
|
+
const value = listMatch[1].trim();
|
|
66
|
+
if (value && !value.startsWith('%')) {
|
|
67
|
+
const type = isGlobPattern(value) ? PatternType.GLOB : PatternType.PATH;
|
|
68
|
+
patterns.push({
|
|
69
|
+
value,
|
|
70
|
+
type,
|
|
71
|
+
line: lineNum,
|
|
72
|
+
column: line.indexOf(value) + 1
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return patterns;
|
|
79
|
+
}
|
|
80
|
+
/** PHPCS parser */
|
|
81
|
+
export const phpcsParser = {
|
|
82
|
+
name: 'phpcs',
|
|
83
|
+
filePatterns: ['phpcs.xml', 'phpcs.xml.dist', '.phpcs.xml', '**/phpcs.xml', '**/phpcs.xml.dist'],
|
|
84
|
+
parse: parsePhpcsConfig
|
|
85
|
+
};
|
|
86
|
+
/** PHPStan parser */
|
|
87
|
+
export const phpstanParser = {
|
|
88
|
+
name: 'phpstan',
|
|
89
|
+
filePatterns: ['phpstan.neon', 'phpstan.neon.dist', '**/phpstan.neon', '**/phpstan.neon.dist'],
|
|
90
|
+
parse: parsePhpstanConfig
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=php.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.js","sourceRoot":"","sources":["../../src/parsers/php.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prettier.d.ts","sourceRoot":"","sources":["../../src/parsers/prettier.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAyCjD,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,EAAE,MAIlC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Prettier ignore files
|
|
3
|
+
*/
|
|
4
|
+
import { PatternType } from '../core/types.js';
|
|
5
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
6
|
+
/** Parse .prettierignore file (same format as .gitignore) */
|
|
7
|
+
function parsePrettierIgnore(_filename, content) {
|
|
8
|
+
const patterns = [];
|
|
9
|
+
const lines = content.split('\n');
|
|
10
|
+
for (let i = 0; i < lines.length; i++) {
|
|
11
|
+
const line = lines[i];
|
|
12
|
+
const lineNum = i + 1;
|
|
13
|
+
// Skip empty lines and comments
|
|
14
|
+
const trimmed = line.trim();
|
|
15
|
+
if (!trimmed || trimmed.startsWith('#')) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
// Check for negation
|
|
19
|
+
let patternValue = trimmed;
|
|
20
|
+
let negated = false;
|
|
21
|
+
if (patternValue.startsWith('!')) {
|
|
22
|
+
negated = true;
|
|
23
|
+
patternValue = patternValue.slice(1);
|
|
24
|
+
}
|
|
25
|
+
// Determine pattern type
|
|
26
|
+
const type = isGlobPattern(patternValue) ? PatternType.GLOB : PatternType.PATH;
|
|
27
|
+
patterns.push({
|
|
28
|
+
value: patternValue,
|
|
29
|
+
type,
|
|
30
|
+
line: lineNum,
|
|
31
|
+
column: 1,
|
|
32
|
+
negated
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return patterns;
|
|
36
|
+
}
|
|
37
|
+
/** Prettier ignore file parser */
|
|
38
|
+
export const prettierIgnoreParser = {
|
|
39
|
+
name: 'prettierignore',
|
|
40
|
+
filePatterns: ['.prettierignore', '**/.prettierignore'],
|
|
41
|
+
parse: parsePrettierIgnore
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=prettier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prettier.js","sourceRoot":"","sources":["../../src/parsers/prettier.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,6DAA6D;AAC7D,SAAS,mBAAmB,CAAC,SAAiB,EAAE,OAAe;IAC7D,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAEtB,gCAAgC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,qBAAqB;QACrB,IAAI,YAAY,GAAG,OAAO,CAAC;QAC3B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,yBAAyB;QACzB,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;QAE/E,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,YAAY;YACnB,IAAI;YACJ,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC;YACT,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAW;IAC1C,IAAI,EAAE,gBAAgB;IACtB,YAAY,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;IACvD,KAAK,EAAE,mBAAmB;CAC3B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Pylint configuration files
|
|
3
|
+
* Pylint is a Python static code analysis tool
|
|
4
|
+
*/
|
|
5
|
+
import type { Parser } from '../plugin/types.js';
|
|
6
|
+
/** Pylint .pylintrc file parser */
|
|
7
|
+
export declare const pylintrcParser: Parser;
|
|
8
|
+
//# sourceMappingURL=pylint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pylint.d.ts","sourceRoot":"","sources":["../../src/parsers/pylint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA8FjD,mCAAmC;AACnC,eAAO,MAAM,cAAc,EAAE,MAI5B,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Pylint configuration files
|
|
3
|
+
* Pylint is a Python static code analysis tool
|
|
4
|
+
*/
|
|
5
|
+
import { PatternType } from '../core/types.js';
|
|
6
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
7
|
+
import { looksLikeRegex } from '../validator/regex.js';
|
|
8
|
+
/** Parse .pylintrc or pylintrc file */
|
|
9
|
+
function parsePylint(_filename, content) {
|
|
10
|
+
const patterns = [];
|
|
11
|
+
const lines = content.split('\n');
|
|
12
|
+
let inMasterSection = false;
|
|
13
|
+
let currentKey = '';
|
|
14
|
+
for (let i = 0; i < lines.length; i++) {
|
|
15
|
+
const line = lines[i];
|
|
16
|
+
const lineNum = i + 1;
|
|
17
|
+
const trimmed = line.trim();
|
|
18
|
+
// Check for [MASTER] or [MAIN] section
|
|
19
|
+
if (trimmed === '[MASTER]' || trimmed === '[MAIN]') {
|
|
20
|
+
inMasterSection = true;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
// Check if we've entered a different section
|
|
24
|
+
if (trimmed.startsWith('[') &&
|
|
25
|
+
trimmed.endsWith(']') &&
|
|
26
|
+
trimmed !== '[MASTER]' &&
|
|
27
|
+
trimmed !== '[MAIN]') {
|
|
28
|
+
inMasterSection = false;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (!inMasterSection)
|
|
32
|
+
continue;
|
|
33
|
+
// Skip empty lines and comments
|
|
34
|
+
if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith(';')) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
// Parse key = value
|
|
38
|
+
if (trimmed.includes('=')) {
|
|
39
|
+
const [key, value] = trimmed.split('=').map((s) => s.trim());
|
|
40
|
+
currentKey = key;
|
|
41
|
+
// Check if this is a path-related field
|
|
42
|
+
if (isPathField(key) && value) {
|
|
43
|
+
extractPatterns(value, lineNum, patterns);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (currentKey && isPathField(currentKey)) {
|
|
47
|
+
// Continuation line
|
|
48
|
+
extractPatterns(trimmed, lineNum, patterns);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return patterns;
|
|
52
|
+
}
|
|
53
|
+
/** Check if a key is a path-related field */
|
|
54
|
+
function isPathField(key) {
|
|
55
|
+
return ['ignore', 'ignore-paths', 'ignore-patterns', 'source-roots'].includes(key);
|
|
56
|
+
}
|
|
57
|
+
/** Extract patterns from a value string */
|
|
58
|
+
function extractPatterns(value, line, patterns) {
|
|
59
|
+
// Split by comma
|
|
60
|
+
const parts = value
|
|
61
|
+
.split(',')
|
|
62
|
+
.map((s) => s.trim())
|
|
63
|
+
.filter(Boolean);
|
|
64
|
+
for (const part of parts) {
|
|
65
|
+
if (!part)
|
|
66
|
+
continue;
|
|
67
|
+
// Determine pattern type
|
|
68
|
+
let type;
|
|
69
|
+
if (looksLikeRegex(part)) {
|
|
70
|
+
type = PatternType.REGEX;
|
|
71
|
+
}
|
|
72
|
+
else if (isGlobPattern(part)) {
|
|
73
|
+
type = PatternType.GLOB;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
type = PatternType.PATH;
|
|
77
|
+
}
|
|
78
|
+
patterns.push({
|
|
79
|
+
value: part,
|
|
80
|
+
type,
|
|
81
|
+
line,
|
|
82
|
+
column: 1
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** Pylint .pylintrc file parser */
|
|
87
|
+
export const pylintrcParser = {
|
|
88
|
+
name: 'pylintrc',
|
|
89
|
+
filePatterns: ['.pylintrc', 'pylintrc', '**/.pylintrc', '**/pylintrc'],
|
|
90
|
+
parse: parsePylint
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=pylint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pylint.js","sourceRoot":"","sources":["../../src/parsers/pylint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pyproject.d.ts","sourceRoot":"","sources":["../../src/parsers/pyproject.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA0IjD,4BAA4B;AAC5B,eAAO,MAAM,eAAe,EAAE,MAI7B,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for pyproject.toml files
|
|
3
|
+
*/
|
|
4
|
+
import { parse as parseToml } from 'smol-toml';
|
|
5
|
+
import { PatternType } from '../core/types.js';
|
|
6
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
7
|
+
import { looksLikeRegex } from '../validator/regex.js';
|
|
8
|
+
/** Known path/pattern fields in pyproject.toml */
|
|
9
|
+
const PATTERN_FIELDS = [
|
|
10
|
+
// pytest
|
|
11
|
+
'tool.pytest.ini_options.testpaths',
|
|
12
|
+
'tool.pytest.ini_options.python_files',
|
|
13
|
+
'tool.pytest.ini_options.python_classes',
|
|
14
|
+
'tool.pytest.ini_options.python_functions',
|
|
15
|
+
'tool.pytest.ini_options.norecursedirs',
|
|
16
|
+
// coverage
|
|
17
|
+
'tool.coverage.run.source',
|
|
18
|
+
'tool.coverage.run.omit',
|
|
19
|
+
'tool.coverage.run.include',
|
|
20
|
+
'tool.coverage.report.exclude_lines',
|
|
21
|
+
'tool.coverage.report.omit',
|
|
22
|
+
// mypy
|
|
23
|
+
'tool.mypy.exclude',
|
|
24
|
+
'tool.mypy.files',
|
|
25
|
+
// ruff
|
|
26
|
+
'tool.ruff.exclude',
|
|
27
|
+
'tool.ruff.extend-exclude',
|
|
28
|
+
'tool.ruff.include',
|
|
29
|
+
'tool.ruff.lint.exclude',
|
|
30
|
+
// black
|
|
31
|
+
'tool.black.exclude',
|
|
32
|
+
'tool.black.extend-exclude',
|
|
33
|
+
'tool.black.include',
|
|
34
|
+
// isort
|
|
35
|
+
'tool.isort.skip',
|
|
36
|
+
'tool.isort.skip_glob',
|
|
37
|
+
'tool.isort.src_paths'
|
|
38
|
+
];
|
|
39
|
+
/** Parse pyproject.toml and extract patterns */
|
|
40
|
+
function parsePyproject(_filename, content) {
|
|
41
|
+
const patterns = [];
|
|
42
|
+
let toml;
|
|
43
|
+
try {
|
|
44
|
+
toml = parseToml(content);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return patterns;
|
|
48
|
+
}
|
|
49
|
+
// Track line numbers by parsing the raw content
|
|
50
|
+
const lineMap = buildLineMap(content);
|
|
51
|
+
for (const fieldPath of PATTERN_FIELDS) {
|
|
52
|
+
const value = getNestedValue(toml, fieldPath);
|
|
53
|
+
if (!value)
|
|
54
|
+
continue;
|
|
55
|
+
const values = Array.isArray(value) ? value : [value];
|
|
56
|
+
for (const v of values) {
|
|
57
|
+
if (typeof v !== 'string')
|
|
58
|
+
continue;
|
|
59
|
+
const lineInfo = lineMap.get(v);
|
|
60
|
+
const line = lineInfo?.line ?? 1;
|
|
61
|
+
const column = lineInfo?.column;
|
|
62
|
+
const type = determinePatternType(v, fieldPath);
|
|
63
|
+
patterns.push({
|
|
64
|
+
value: v,
|
|
65
|
+
type,
|
|
66
|
+
line,
|
|
67
|
+
column
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return patterns;
|
|
72
|
+
}
|
|
73
|
+
/** Determine pattern type based on value and field */
|
|
74
|
+
function determinePatternType(value, fieldPath) {
|
|
75
|
+
// Regex fields
|
|
76
|
+
if (fieldPath.includes('exclude_lines') ||
|
|
77
|
+
fieldPath.includes('python_files') ||
|
|
78
|
+
fieldPath.includes('python_classes') ||
|
|
79
|
+
fieldPath.includes('python_functions')) {
|
|
80
|
+
if (looksLikeRegex(value)) {
|
|
81
|
+
return PatternType.REGEX;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Glob patterns
|
|
85
|
+
if (isGlobPattern(value)) {
|
|
86
|
+
return PatternType.GLOB;
|
|
87
|
+
}
|
|
88
|
+
// Default to path
|
|
89
|
+
return PatternType.PATH;
|
|
90
|
+
}
|
|
91
|
+
/** Get a nested value from an object using dot notation */
|
|
92
|
+
function getNestedValue(obj, path) {
|
|
93
|
+
const parts = path.split('.');
|
|
94
|
+
let current = obj;
|
|
95
|
+
for (const part of parts) {
|
|
96
|
+
if (current === null || typeof current !== 'object') {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
current = current[part];
|
|
100
|
+
}
|
|
101
|
+
return current;
|
|
102
|
+
}
|
|
103
|
+
/** Build a map of string values to their line numbers */
|
|
104
|
+
function buildLineMap(content) {
|
|
105
|
+
const map = new Map();
|
|
106
|
+
const lines = content.split('\n');
|
|
107
|
+
for (let i = 0; i < lines.length; i++) {
|
|
108
|
+
const line = lines[i];
|
|
109
|
+
const lineNum = i + 1;
|
|
110
|
+
// Match quoted strings
|
|
111
|
+
const stringMatches = line.matchAll(/"([^"]+)"|'([^']+)'/g);
|
|
112
|
+
for (const match of stringMatches) {
|
|
113
|
+
const value = match[1] || match[2];
|
|
114
|
+
if (value && !map.has(value)) {
|
|
115
|
+
map.set(value, { line: lineNum, column: (match.index ?? 0) + 1 });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return map;
|
|
120
|
+
}
|
|
121
|
+
/** pyproject.toml parser */
|
|
122
|
+
export const pyprojectParser = {
|
|
123
|
+
name: 'pyproject',
|
|
124
|
+
filePatterns: ['pyproject.toml', '**/pyproject.toml'],
|
|
125
|
+
parse: parsePyproject
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=pyproject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pyproject.js","sourceRoot":"","sources":["../../src/parsers/pyproject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Pyright configuration files
|
|
3
|
+
* Pyright is a fast type checker for Python
|
|
4
|
+
*/
|
|
5
|
+
import type { Parser } from '../plugin/types.js';
|
|
6
|
+
/** Pyright configuration parser */
|
|
7
|
+
export declare const pyrightParser: Parser;
|
|
8
|
+
//# sourceMappingURL=pyright.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pyright.d.ts","sourceRoot":"","sources":["../../src/parsers/pyright.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAyEjD,mCAAmC;AACnC,eAAO,MAAM,aAAa,EAAE,MAI3B,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Pyright configuration files
|
|
3
|
+
* Pyright is a fast type checker for Python
|
|
4
|
+
*/
|
|
5
|
+
import { PatternType } from '../core/types.js';
|
|
6
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
7
|
+
/** Parse pyrightconfig.json file */
|
|
8
|
+
function parsePyright(_filename, content) {
|
|
9
|
+
const patterns = [];
|
|
10
|
+
let config;
|
|
11
|
+
try {
|
|
12
|
+
config = JSON.parse(content);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return patterns;
|
|
16
|
+
}
|
|
17
|
+
const lineMap = buildLineMap(content);
|
|
18
|
+
// Extract patterns from various fields
|
|
19
|
+
const fields = [config.include, config.exclude, config.ignore, config.extraPaths];
|
|
20
|
+
for (const field of fields) {
|
|
21
|
+
if (!field || !Array.isArray(field))
|
|
22
|
+
continue;
|
|
23
|
+
for (const pattern of field) {
|
|
24
|
+
if (typeof pattern !== 'string')
|
|
25
|
+
continue;
|
|
26
|
+
const lineInfo = lineMap.get(pattern);
|
|
27
|
+
const line = lineInfo?.line ?? 1;
|
|
28
|
+
const column = lineInfo?.column;
|
|
29
|
+
const type = isGlobPattern(pattern) ? PatternType.GLOB : PatternType.PATH;
|
|
30
|
+
patterns.push({
|
|
31
|
+
value: pattern,
|
|
32
|
+
type,
|
|
33
|
+
line,
|
|
34
|
+
column
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return patterns;
|
|
39
|
+
}
|
|
40
|
+
/** Build a map of string values to their line numbers */
|
|
41
|
+
function buildLineMap(content) {
|
|
42
|
+
const map = new Map();
|
|
43
|
+
const lines = content.split('\n');
|
|
44
|
+
for (let i = 0; i < lines.length; i++) {
|
|
45
|
+
const line = lines[i];
|
|
46
|
+
const lineNum = i + 1;
|
|
47
|
+
const stringMatches = line.matchAll(/"([^"]+)"/g);
|
|
48
|
+
for (const match of stringMatches) {
|
|
49
|
+
const value = match[1];
|
|
50
|
+
if (value && !map.has(value)) {
|
|
51
|
+
map.set(value, { line: lineNum, column: (match.index ?? 0) + 1 });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return map;
|
|
56
|
+
}
|
|
57
|
+
/** Pyright configuration parser */
|
|
58
|
+
export const pyrightParser = {
|
|
59
|
+
name: 'pyright',
|
|
60
|
+
filePatterns: ['pyrightconfig.json', '**/pyrightconfig.json'],
|
|
61
|
+
parse: parsePyright
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=pyright.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pyright.js","sourceRoot":"","sources":["../../src/parsers/pyright.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAWrD,oCAAoC;AACpC,SAAS,YAAY,CAAC,SAAiB,EAAE,OAAe;IACtD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,IAAI,MAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtC,uCAAuC;IACvC,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAElF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QAE9C,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,SAAS;YAE1C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC;YAEhC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;YAE1E,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,OAAO;gBACd,IAAI;gBACJ,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,yDAAyD;AACzD,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6C,CAAC;IACjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAEtB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClD,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;IAC7D,KAAK,EAAE,YAAY;CACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rubocop.d.ts","sourceRoot":"","sources":["../../src/parsers/rubocop.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA0HjD,qBAAqB;AACrB,eAAO,MAAM,aAAa,EAAE,MAI3B,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for .rubocop.yml files
|
|
3
|
+
*/
|
|
4
|
+
import { parse as parseYaml } from 'yaml';
|
|
5
|
+
import { PatternType } from '../core/types.js';
|
|
6
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
7
|
+
import { looksLikeRegex } from '../validator/regex.js';
|
|
8
|
+
/** Parse .rubocop.yml and extract patterns */
|
|
9
|
+
function parseRubocop(_filename, content) {
|
|
10
|
+
const patterns = [];
|
|
11
|
+
let config;
|
|
12
|
+
try {
|
|
13
|
+
config = parseYaml(content);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return patterns;
|
|
17
|
+
}
|
|
18
|
+
if (!config || typeof config !== 'object') {
|
|
19
|
+
return patterns;
|
|
20
|
+
}
|
|
21
|
+
// Build line map for accurate line numbers
|
|
22
|
+
const lineMap = buildLineMap(content);
|
|
23
|
+
// Extract patterns from AllCops
|
|
24
|
+
if (config.AllCops) {
|
|
25
|
+
extractPatterns(config.AllCops.Exclude, patterns, lineMap);
|
|
26
|
+
extractPatterns(config.AllCops.Include, patterns, lineMap);
|
|
27
|
+
}
|
|
28
|
+
// Extract patterns from individual cops
|
|
29
|
+
for (const [key, value] of Object.entries(config)) {
|
|
30
|
+
if (key === 'AllCops' || !value || typeof value !== 'object') {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const cop = value;
|
|
34
|
+
if (Array.isArray(cop.Exclude)) {
|
|
35
|
+
extractPatterns(cop.Exclude, patterns, lineMap);
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(cop.Include)) {
|
|
38
|
+
extractPatterns(cop.Include, patterns, lineMap);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return patterns;
|
|
42
|
+
}
|
|
43
|
+
/** Extract patterns from an array of values */
|
|
44
|
+
function extractPatterns(values, patterns, lineMap) {
|
|
45
|
+
if (!Array.isArray(values)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
for (const value of values) {
|
|
49
|
+
if (typeof value !== 'string') {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
// Skip special RuboCop patterns like !ruby/regexp
|
|
53
|
+
if (value.startsWith('!ruby/')) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const lineInfo = lineMap.get(value);
|
|
57
|
+
const line = lineInfo?.line ?? 1;
|
|
58
|
+
const column = lineInfo?.column;
|
|
59
|
+
const type = determinePatternType(value);
|
|
60
|
+
patterns.push({
|
|
61
|
+
value,
|
|
62
|
+
type,
|
|
63
|
+
line,
|
|
64
|
+
column
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** Determine pattern type */
|
|
69
|
+
function determinePatternType(value) {
|
|
70
|
+
if (looksLikeRegex(value)) {
|
|
71
|
+
return PatternType.REGEX;
|
|
72
|
+
}
|
|
73
|
+
if (isGlobPattern(value)) {
|
|
74
|
+
return PatternType.GLOB;
|
|
75
|
+
}
|
|
76
|
+
return PatternType.PATH;
|
|
77
|
+
}
|
|
78
|
+
/** Build a map of string values to their line numbers */
|
|
79
|
+
function buildLineMap(content) {
|
|
80
|
+
const map = new Map();
|
|
81
|
+
const lines = content.split('\n');
|
|
82
|
+
for (let i = 0; i < lines.length; i++) {
|
|
83
|
+
const line = lines[i];
|
|
84
|
+
const lineNum = i + 1;
|
|
85
|
+
// Match YAML list items: - value or - "value" or - 'value'
|
|
86
|
+
const listMatch = line.match(/^\s*-\s+(?:"([^"]+)"|'([^']+)'|([^\s#]+))/);
|
|
87
|
+
if (listMatch) {
|
|
88
|
+
const value = listMatch[1] || listMatch[2] || listMatch[3];
|
|
89
|
+
if (value && !map.has(value)) {
|
|
90
|
+
map.set(value, { line: lineNum, column: line.indexOf(value) + 1 });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return map;
|
|
95
|
+
}
|
|
96
|
+
/** Rubocop parser */
|
|
97
|
+
export const rubocopParser = {
|
|
98
|
+
name: 'rubocop',
|
|
99
|
+
filePatterns: ['.rubocop.yml', '**/.rubocop.yml'],
|
|
100
|
+
parse: parseRubocop
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=rubocop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rubocop.js","sourceRoot":"","sources":["../../src/parsers/rubocop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Rust configuration files (rustfmt.toml, .rustfmt.toml, clippy.toml)
|
|
3
|
+
*/
|
|
4
|
+
import type { Parser } from '../plugin/types.js';
|
|
5
|
+
/** Rustfmt parser */
|
|
6
|
+
export declare const rustfmtParser: Parser;
|
|
7
|
+
/** Clippy parser */
|
|
8
|
+
export declare const clippyParser: Parser;
|
|
9
|
+
//# sourceMappingURL=rust.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../src/parsers/rust.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAgEjD,qBAAqB;AACrB,eAAO,MAAM,aAAa,EAAE,MAI3B,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,YAAY,EAAE,MAI1B,CAAC"}
|