lostconf 0.2.0 → 0.3.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 (65) hide show
  1. package/CHANGELOG.md +41 -3
  2. package/README.md +17 -3
  3. package/dist/cli.js +1 -1
  4. package/dist/output/sarif.js +1 -1
  5. package/dist/parsers/alex.d.ts +10 -0
  6. package/dist/parsers/alex.d.ts.map +1 -0
  7. package/dist/parsers/alex.js +59 -0
  8. package/dist/parsers/alex.js.map +1 -0
  9. package/dist/parsers/ansible-lint.d.ts +8 -0
  10. package/dist/parsers/ansible-lint.d.ts.map +1 -0
  11. package/dist/parsers/ansible-lint.js +71 -0
  12. package/dist/parsers/ansible-lint.js.map +1 -0
  13. package/dist/parsers/brakeman.d.ts +8 -0
  14. package/dist/parsers/brakeman.d.ts.map +1 -0
  15. package/dist/parsers/brakeman.js +85 -0
  16. package/dist/parsers/brakeman.js.map +1 -0
  17. package/dist/parsers/buf.d.ts +8 -0
  18. package/dist/parsers/buf.d.ts.map +1 -0
  19. package/dist/parsers/buf.js +121 -0
  20. package/dist/parsers/buf.js.map +1 -0
  21. package/dist/parsers/bundler-audit.d.ts +11 -0
  22. package/dist/parsers/bundler-audit.d.ts.map +1 -0
  23. package/dist/parsers/bundler-audit.js +73 -0
  24. package/dist/parsers/bundler-audit.js.map +1 -0
  25. package/dist/parsers/commitlint.d.ts +8 -0
  26. package/dist/parsers/commitlint.d.ts.map +1 -0
  27. package/dist/parsers/commitlint.js +86 -0
  28. package/dist/parsers/commitlint.js.map +1 -0
  29. package/dist/parsers/eslint-flat.d.ts +9 -0
  30. package/dist/parsers/eslint-flat.d.ts.map +1 -0
  31. package/dist/parsers/eslint-flat.js +79 -0
  32. package/dist/parsers/eslint-flat.js.map +1 -0
  33. package/dist/parsers/index.d.ts +14 -0
  34. package/dist/parsers/index.d.ts.map +1 -1
  35. package/dist/parsers/index.js +55 -1
  36. package/dist/parsers/index.js.map +1 -1
  37. package/dist/parsers/lefthook.d.ts +8 -0
  38. package/dist/parsers/lefthook.d.ts.map +1 -0
  39. package/dist/parsers/lefthook.js +111 -0
  40. package/dist/parsers/lefthook.js.map +1 -0
  41. package/dist/parsers/lint-staged.d.ts +8 -0
  42. package/dist/parsers/lint-staged.d.ts.map +1 -0
  43. package/dist/parsers/lint-staged.js +74 -0
  44. package/dist/parsers/lint-staged.js.map +1 -0
  45. package/dist/parsers/oxlint.d.ts +8 -0
  46. package/dist/parsers/oxlint.d.ts.map +1 -0
  47. package/dist/parsers/oxlint.js +65 -0
  48. package/dist/parsers/oxlint.js.map +1 -0
  49. package/dist/parsers/pre-commit.d.ts +8 -0
  50. package/dist/parsers/pre-commit.d.ts.map +1 -0
  51. package/dist/parsers/pre-commit.js +95 -0
  52. package/dist/parsers/pre-commit.js.map +1 -0
  53. package/dist/parsers/reek.d.ts +8 -0
  54. package/dist/parsers/reek.d.ts.map +1 -0
  55. package/dist/parsers/reek.js +70 -0
  56. package/dist/parsers/reek.js.map +1 -0
  57. package/dist/parsers/sqlfluff.d.ts +10 -0
  58. package/dist/parsers/sqlfluff.d.ts.map +1 -0
  59. package/dist/parsers/sqlfluff.js +88 -0
  60. package/dist/parsers/sqlfluff.js.map +1 -0
  61. package/dist/parsers/yard-lint.d.ts +8 -0
  62. package/dist/parsers/yard-lint.d.ts.map +1 -0
  63. package/dist/parsers/yard-lint.js +97 -0
  64. package/dist/parsers/yard-lint.js.map +1 -0
  65. package/package.json +5 -5
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Parser for bundler-audit configuration files
3
+ * https://github.com/rubysec/bundler-audit
4
+ *
5
+ * Note: bundler-audit's ignore field contains advisory IDs (CVE-YYYY-XXXX),
6
+ * not file paths. These are tracked but cannot be validated against the filesystem.
7
+ */
8
+ import { parse as parseYaml } from 'yaml';
9
+ import { PatternType } from '../core/types.js';
10
+ /** Parse bundler-audit configuration */
11
+ function parseBundlerAudit(_filename, content) {
12
+ const patterns = [];
13
+ let config;
14
+ try {
15
+ config = parseYaml(content);
16
+ }
17
+ catch {
18
+ return patterns;
19
+ }
20
+ if (!config || typeof config !== 'object') {
21
+ return patterns;
22
+ }
23
+ const lineMap = buildLineMap(content);
24
+ // Extract ignore list (advisory IDs like CVE-2021-22885, OSVDB-108664, GHSA-xxx)
25
+ // Note: These are not file paths, but we track them as PATH type patterns
26
+ if (Array.isArray(config.ignore)) {
27
+ for (const value of config.ignore) {
28
+ if (typeof value !== 'string')
29
+ continue;
30
+ const lineInfo = lineMap.get(value);
31
+ // Advisory IDs are not file paths, but we use PATH type for tracking
32
+ patterns.push({
33
+ value,
34
+ type: PatternType.PATH,
35
+ line: lineInfo?.line ?? 1,
36
+ column: lineInfo?.column
37
+ });
38
+ }
39
+ }
40
+ return patterns;
41
+ }
42
+ function buildLineMap(content) {
43
+ const map = new Map();
44
+ const lines = content.split('\n');
45
+ for (let i = 0; i < lines.length; i++) {
46
+ const line = lines[i];
47
+ const lineNum = i + 1;
48
+ // Match YAML string values (quoted and unquoted)
49
+ const quotedMatches = line.matchAll(/["']([^"']+)["']/g);
50
+ for (const match of quotedMatches) {
51
+ const value = match[1];
52
+ if (value && !map.has(value)) {
53
+ map.set(value, { line: lineNum, column: (match.index ?? 0) + 1 });
54
+ }
55
+ }
56
+ // Match unquoted list items
57
+ const listItemMatch = line.match(/^\s*-\s+([^\s#]+)/);
58
+ if (listItemMatch && listItemMatch[1]) {
59
+ const value = listItemMatch[1];
60
+ if (!map.has(value)) {
61
+ map.set(value, { line: lineNum, column: (listItemMatch.index ?? 0) + 1 });
62
+ }
63
+ }
64
+ }
65
+ return map;
66
+ }
67
+ /** bundler-audit config parser */
68
+ export const bundlerAuditParser = {
69
+ name: 'bundler-audit',
70
+ filePatterns: ['.bundler-audit.yml', '**/.bundler-audit.yml'],
71
+ parse: parseBundlerAudit
72
+ };
73
+ //# sourceMappingURL=bundler-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundler-audit.js","sourceRoot":"","sources":["../../src/parsers/bundler-audit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,wCAAwC;AACxC,SAAS,iBAAiB,CAAC,SAAiB,EAAE,OAAe;IAC3D,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,IAAI,MAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,OAAO,CAAuB,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtC,iFAAiF;IACjF,0EAA0E;IAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,SAAS;YAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEpC,qEAAqE;YACrE,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK;gBACL,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;gBACzB,MAAM,EAAE,QAAQ,EAAE,MAAM;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,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,iDAAiD;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACzD,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;QAED,4BAA4B;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtD,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAW;IACxC,IAAI,EAAE,eAAe;IACrB,YAAY,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;IAC7D,KAAK,EAAE,iBAAiB;CACzB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Parser for commitlint configuration files
3
+ * https://commitlint.js.org/
4
+ */
5
+ import type { Parser } from '../plugin/types.js';
6
+ /** commitlint config parser */
7
+ export declare const commitlintParser: Parser;
8
+ //# sourceMappingURL=commitlint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitlint.d.ts","sourceRoot":"","sources":["../../src/parsers/commitlint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA2FjD,+BAA+B;AAC/B,eAAO,MAAM,gBAAgB,EAAE,MAS9B,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Parser for commitlint configuration files
3
+ * https://commitlint.js.org/
4
+ */
5
+ import { PatternType } from '../core/types.js';
6
+ import { looksLikeRegex } from '../validator/regex.js';
7
+ /** Parse commitlint config and extract patterns */
8
+ function parseCommitlintConfig(_filename, content) {
9
+ const patterns = [];
10
+ let config;
11
+ try {
12
+ config = JSON.parse(content);
13
+ }
14
+ catch {
15
+ return patterns;
16
+ }
17
+ if (!config || typeof config !== 'object') {
18
+ return patterns;
19
+ }
20
+ const lineMap = buildLineMap(content);
21
+ // Extract ignores patterns (regex strings for commit message patterns)
22
+ if (Array.isArray(config.ignores)) {
23
+ for (const value of config.ignores) {
24
+ // Ignores can be functions or strings in JS, but in JSON they'll be strings
25
+ if (typeof value !== 'string')
26
+ continue;
27
+ const lineInfo = lineMap.get(value);
28
+ // Commit message patterns are typically regexes
29
+ const type = looksLikeRegex(value) ? PatternType.REGEX : PatternType.PATH;
30
+ patterns.push({
31
+ value,
32
+ type,
33
+ line: lineInfo?.line ?? 1,
34
+ column: lineInfo?.column
35
+ });
36
+ }
37
+ }
38
+ // Extract extends (package names or file paths)
39
+ if (Array.isArray(config.extends)) {
40
+ for (const value of config.extends) {
41
+ if (typeof value !== 'string')
42
+ continue;
43
+ // Skip npm package names (start with @ or don't start with . or /)
44
+ // Only include relative paths (./...) or absolute paths (/...)
45
+ if (value.startsWith('@') || (!value.startsWith('.') && !value.startsWith('/'))) {
46
+ continue;
47
+ }
48
+ const lineInfo = lineMap.get(value);
49
+ patterns.push({
50
+ value,
51
+ type: PatternType.PATH,
52
+ line: lineInfo?.line ?? 1,
53
+ column: lineInfo?.column
54
+ });
55
+ }
56
+ }
57
+ return patterns;
58
+ }
59
+ function buildLineMap(content) {
60
+ const map = new Map();
61
+ const lines = content.split('\n');
62
+ for (let i = 0; i < lines.length; i++) {
63
+ const line = lines[i];
64
+ const lineNum = i + 1;
65
+ const stringMatches = line.matchAll(/"([^"]+)"/g);
66
+ for (const match of stringMatches) {
67
+ const value = match[1];
68
+ if (value && !map.has(value)) {
69
+ map.set(value, { line: lineNum, column: (match.index ?? 0) + 1 });
70
+ }
71
+ }
72
+ }
73
+ return map;
74
+ }
75
+ /** commitlint config parser */
76
+ export const commitlintParser = {
77
+ name: 'commitlint',
78
+ filePatterns: [
79
+ '.commitlintrc',
80
+ '.commitlintrc.json',
81
+ '**/.commitlintrc',
82
+ '**/.commitlintrc.json'
83
+ ],
84
+ parse: parseCommitlintConfig
85
+ };
86
+ //# sourceMappingURL=commitlint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitlint.js","sourceRoot":"","sources":["../../src/parsers/commitlint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Parser for ESLint flat config files
3
+ * https://eslint.org/docs/latest/use/configure/configuration-files
4
+ * Note: Only supports JSON format for safety. JS/MJS/CJS require code execution.
5
+ */
6
+ import type { Parser } from '../plugin/types.js';
7
+ /** ESLint flat config parser (JSON only) */
8
+ export declare const eslintFlatParser: Parser;
9
+ //# sourceMappingURL=eslint-flat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint-flat.d.ts","sourceRoot":"","sources":["../../src/parsers/eslint-flat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAsFjD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,EAAE,MAI9B,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Parser for ESLint flat config files
3
+ * https://eslint.org/docs/latest/use/configure/configuration-files
4
+ * Note: Only supports JSON format for safety. JS/MJS/CJS require code execution.
5
+ */
6
+ import { PatternType } from '../core/types.js';
7
+ import { isGlobPattern } from '../validator/glob.js';
8
+ /** Parse eslint.config.json and extract patterns */
9
+ function parseESLintFlat(_filename, content) {
10
+ const patterns = [];
11
+ let config;
12
+ try {
13
+ config = JSON.parse(content);
14
+ }
15
+ catch {
16
+ return patterns;
17
+ }
18
+ // Config can be an array or a single object
19
+ const configs = Array.isArray(config) ? config : [config];
20
+ const lineMap = buildLineMap(content);
21
+ for (const configObj of configs) {
22
+ if (!configObj || typeof configObj !== 'object')
23
+ continue;
24
+ // Extract ignores patterns
25
+ if (Array.isArray(configObj.ignores)) {
26
+ for (const value of configObj.ignores) {
27
+ if (typeof value !== 'string')
28
+ continue;
29
+ const lineInfo = lineMap.get(value);
30
+ const type = isGlobPattern(value) ? PatternType.GLOB : PatternType.PATH;
31
+ patterns.push({
32
+ value,
33
+ type,
34
+ line: lineInfo?.line ?? 1,
35
+ column: lineInfo?.column
36
+ });
37
+ }
38
+ }
39
+ // Extract files patterns
40
+ if (Array.isArray(configObj.files)) {
41
+ for (const value of configObj.files) {
42
+ if (typeof value !== 'string')
43
+ continue;
44
+ const lineInfo = lineMap.get(value);
45
+ const type = isGlobPattern(value) ? PatternType.GLOB : PatternType.PATH;
46
+ patterns.push({
47
+ value,
48
+ type,
49
+ line: lineInfo?.line ?? 1,
50
+ column: lineInfo?.column
51
+ });
52
+ }
53
+ }
54
+ }
55
+ return patterns;
56
+ }
57
+ function buildLineMap(content) {
58
+ const map = new Map();
59
+ const lines = content.split('\n');
60
+ for (let i = 0; i < lines.length; i++) {
61
+ const line = lines[i];
62
+ const lineNum = i + 1;
63
+ const stringMatches = line.matchAll(/"([^"]+)"/g);
64
+ for (const match of stringMatches) {
65
+ const value = match[1];
66
+ if (value && !map.has(value)) {
67
+ map.set(value, { line: lineNum, column: (match.index ?? 0) + 1 });
68
+ }
69
+ }
70
+ }
71
+ return map;
72
+ }
73
+ /** ESLint flat config parser (JSON only) */
74
+ export const eslintFlatParser = {
75
+ name: 'eslint-flat',
76
+ filePatterns: ['eslint.config.json', '**/eslint.config.json'],
77
+ parse: parseESLintFlat
78
+ };
79
+ //# sourceMappingURL=eslint-flat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint-flat.js","sourceRoot":"","sources":["../../src/parsers/eslint-flat.ts"],"names":[],"mappings":"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"}
@@ -3,18 +3,26 @@
3
3
  */
4
4
  export { gitignoreParser, dockerignoreParser, createIgnoreParser } from './gitignore.js';
5
5
  export { eslintIgnoreParser } from './eslint.js';
6
+ export { eslintFlatParser } from './eslint-flat.js';
6
7
  export { prettierIgnoreParser } from './prettier.js';
7
8
  export { tsconfigParser } from './typescript.js';
8
9
  export { jestConfigParser } from './jest.js';
9
10
  export { stylelintIgnoreParser, stylelintRcParser } from './stylelint.js';
10
11
  export { biomeParser } from './biome.js';
11
12
  export { denoParser } from './deno.js';
13
+ export { oxlintParser } from './oxlint.js';
14
+ export { commitlintParser } from './commitlint.js';
15
+ export { lintStagedParser } from './lint-staged.js';
12
16
  export { pyprojectParser } from './pyproject.js';
13
17
  export { flake8Parser, flake8SetupCfgParser } from './flake8.js';
14
18
  export { pylintrcParser } from './pylint.js';
15
19
  export { banditParser } from './bandit.js';
16
20
  export { pyrightParser } from './pyright.js';
17
21
  export { rubocopParser } from './rubocop.js';
22
+ export { brakemanParser } from './brakeman.js';
23
+ export { reekParser } from './reek.js';
24
+ export { bundlerAuditParser } from './bundler-audit.js';
25
+ export { yardLintParser } from './yard-lint.js';
18
26
  export { golangciParser } from './golangci.js';
19
27
  export { rustfmtParser, clippyParser } from './rust.js';
20
28
  export { checkstyleParser, pmdParser, spotbugsParser } from './java.js';
@@ -32,6 +40,12 @@ export { tflintParser } from './tflint.js';
32
40
  export { semgrepYmlParser, semgrepIgnoreParser } from './semgrep.js';
33
41
  export { gitleaksParser } from './gitleaks.js';
34
42
  export { hadolintParser } from './hadolint.js';
43
+ export { lefthookParser } from './lefthook.js';
44
+ export { preCommitParser } from './pre-commit.js';
45
+ export { ansibleLintParser } from './ansible-lint.js';
46
+ export { sqlfluffParser, sqlfluffSetupCfgParser } from './sqlfluff.js';
47
+ export { bufParser } from './buf.js';
48
+ export { alexIgnoreParser, alexRcParser } from './alex.js';
35
49
  import type { Parser } from '../plugin/types.js';
36
50
  /** Get all built-in parsers */
37
51
  export declare function getBuiltinParsers(): Parser[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGxE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAmCjD,+BAA+B;AAC/B,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAoF5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,16 @@
5
5
  export { gitignoreParser, dockerignoreParser, createIgnoreParser } from './gitignore.js';
6
6
  // JavaScript/TypeScript
7
7
  export { eslintIgnoreParser } from './eslint.js';
8
+ export { eslintFlatParser } from './eslint-flat.js';
8
9
  export { prettierIgnoreParser } from './prettier.js';
9
10
  export { tsconfigParser } from './typescript.js';
10
11
  export { jestConfigParser } from './jest.js';
11
12
  export { stylelintIgnoreParser, stylelintRcParser } from './stylelint.js';
12
13
  export { biomeParser } from './biome.js';
13
14
  export { denoParser } from './deno.js';
15
+ export { oxlintParser } from './oxlint.js';
16
+ export { commitlintParser } from './commitlint.js';
17
+ export { lintStagedParser } from './lint-staged.js';
14
18
  // Python
15
19
  export { pyprojectParser } from './pyproject.js';
16
20
  export { flake8Parser, flake8SetupCfgParser } from './flake8.js';
@@ -19,6 +23,10 @@ export { banditParser } from './bandit.js';
19
23
  export { pyrightParser } from './pyright.js';
20
24
  // Ruby
21
25
  export { rubocopParser } from './rubocop.js';
26
+ export { brakemanParser } from './brakeman.js';
27
+ export { reekParser } from './reek.js';
28
+ export { bundlerAuditParser } from './bundler-audit.js';
29
+ export { yardLintParser } from './yard-lint.js';
22
30
  // Go
23
31
  export { golangciParser } from './golangci.js';
24
32
  // Rust
@@ -52,21 +60,40 @@ export { semgrepYmlParser, semgrepIgnoreParser } from './semgrep.js';
52
60
  export { gitleaksParser } from './gitleaks.js';
53
61
  // Docker
54
62
  export { hadolintParser } from './hadolint.js';
63
+ // Git Hooks
64
+ export { lefthookParser } from './lefthook.js';
65
+ export { preCommitParser } from './pre-commit.js';
66
+ // DevOps
67
+ export { ansibleLintParser } from './ansible-lint.js';
68
+ // SQL
69
+ export { sqlfluffParser, sqlfluffSetupCfgParser } from './sqlfluff.js';
70
+ // Protocol Buffers
71
+ export { bufParser } from './buf.js';
72
+ // Documentation
73
+ export { alexIgnoreParser, alexRcParser } from './alex.js';
55
74
  // Import all parsers for getBuiltinParsers
56
75
  import { gitignoreParser, dockerignoreParser } from './gitignore.js';
57
76
  import { eslintIgnoreParser } from './eslint.js';
77
+ import { eslintFlatParser } from './eslint-flat.js';
58
78
  import { prettierIgnoreParser } from './prettier.js';
59
79
  import { tsconfigParser } from './typescript.js';
60
80
  import { jestConfigParser } from './jest.js';
61
81
  import { stylelintIgnoreParser, stylelintRcParser } from './stylelint.js';
62
82
  import { biomeParser } from './biome.js';
63
83
  import { denoParser } from './deno.js';
84
+ import { oxlintParser } from './oxlint.js';
85
+ import { commitlintParser } from './commitlint.js';
86
+ import { lintStagedParser } from './lint-staged.js';
64
87
  import { pyprojectParser } from './pyproject.js';
65
88
  import { flake8Parser, flake8SetupCfgParser } from './flake8.js';
66
89
  import { pylintrcParser } from './pylint.js';
67
90
  import { banditParser } from './bandit.js';
68
91
  import { pyrightParser } from './pyright.js';
69
92
  import { rubocopParser } from './rubocop.js';
93
+ import { brakemanParser } from './brakeman.js';
94
+ import { reekParser } from './reek.js';
95
+ import { bundlerAuditParser } from './bundler-audit.js';
96
+ import { yardLintParser } from './yard-lint.js';
70
97
  import { golangciParser } from './golangci.js';
71
98
  import { rustfmtParser, clippyParser } from './rust.js';
72
99
  import { checkstyleParser, pmdParser, spotbugsParser } from './java.js';
@@ -84,6 +111,12 @@ import { tflintParser } from './tflint.js';
84
111
  import { semgrepYmlParser, semgrepIgnoreParser } from './semgrep.js';
85
112
  import { gitleaksParser } from './gitleaks.js';
86
113
  import { hadolintParser } from './hadolint.js';
114
+ import { lefthookParser } from './lefthook.js';
115
+ import { preCommitParser } from './pre-commit.js';
116
+ import { ansibleLintParser } from './ansible-lint.js';
117
+ import { sqlfluffParser, sqlfluffSetupCfgParser } from './sqlfluff.js';
118
+ import { bufParser } from './buf.js';
119
+ import { alexIgnoreParser, alexRcParser } from './alex.js';
87
120
  /** Get all built-in parsers */
88
121
  export function getBuiltinParsers() {
89
122
  return [
@@ -92,6 +125,7 @@ export function getBuiltinParsers() {
92
125
  dockerignoreParser,
93
126
  // JavaScript/TypeScript
94
127
  eslintIgnoreParser,
128
+ eslintFlatParser,
95
129
  prettierIgnoreParser,
96
130
  tsconfigParser,
97
131
  jestConfigParser,
@@ -99,6 +133,9 @@ export function getBuiltinParsers() {
99
133
  stylelintRcParser,
100
134
  biomeParser,
101
135
  denoParser,
136
+ oxlintParser,
137
+ commitlintParser,
138
+ lintStagedParser,
102
139
  // Python
103
140
  pyprojectParser,
104
141
  flake8Parser,
@@ -108,6 +145,10 @@ export function getBuiltinParsers() {
108
145
  pyrightParser,
109
146
  // Ruby
110
147
  rubocopParser,
148
+ brakemanParser,
149
+ reekParser,
150
+ bundlerAuditParser,
151
+ yardLintParser,
111
152
  // Go
112
153
  golangciParser,
113
154
  // Rust
@@ -148,7 +189,20 @@ export function getBuiltinParsers() {
148
189
  semgrepIgnoreParser,
149
190
  gitleaksParser,
150
191
  // Docker
151
- hadolintParser
192
+ hadolintParser,
193
+ // Git Hooks
194
+ lefthookParser,
195
+ preCommitParser,
196
+ // DevOps
197
+ ansibleLintParser,
198
+ // SQL
199
+ sqlfluffParser,
200
+ sqlfluffSetupCfgParser,
201
+ // Protocol Buffers
202
+ bufParser,
203
+ // Documentation
204
+ alexIgnoreParser,
205
+ alexRcParser
152
206
  ];
153
207
  }
154
208
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Parser for lefthook configuration files
3
+ * https://lefthook.dev/
4
+ */
5
+ import type { Parser } from '../plugin/types.js';
6
+ /** lefthook config parser */
7
+ export declare const lefthookParser: Parser;
8
+ //# sourceMappingURL=lefthook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lefthook.d.ts","sourceRoot":"","sources":["../../src/parsers/lefthook.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAsIjD,6BAA6B;AAC7B,eAAO,MAAM,cAAc,EAAE,MAI5B,CAAC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Parser for lefthook configuration files
3
+ * https://lefthook.dev/
4
+ */
5
+ import { parse as parseYaml } from 'yaml';
6
+ import { PatternType } from '../core/types.js';
7
+ import { isGlobPattern } from '../validator/glob.js';
8
+ /** Parse lefthook.yml configuration */
9
+ function parseLefthook(_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
+ const lineMap = buildLineMap(content);
22
+ // Iterate through all hooks (pre-commit, pre-push, etc.)
23
+ for (const [key, value] of Object.entries(config)) {
24
+ // Skip top-level config keys
25
+ if (key === 'skip_output' || key === 'source_dir' || key === 'rc' || key === 'colors') {
26
+ continue;
27
+ }
28
+ if (typeof value !== 'object' || value === null) {
29
+ continue;
30
+ }
31
+ const hook = value;
32
+ // Extract file patterns from hook-level
33
+ if (hook.files) {
34
+ addPattern(patterns, hook.files, lineMap);
35
+ }
36
+ if (hook.glob) {
37
+ addPattern(patterns, hook.glob, lineMap);
38
+ }
39
+ if (hook.exclude) {
40
+ addPattern(patterns, hook.exclude, lineMap);
41
+ }
42
+ // Extract skip patterns
43
+ if (hook.skip) {
44
+ const skipPatterns = Array.isArray(hook.skip) ? hook.skip : [hook.skip];
45
+ for (const pattern of skipPatterns) {
46
+ if (typeof pattern === 'string') {
47
+ addPattern(patterns, pattern, lineMap);
48
+ }
49
+ }
50
+ }
51
+ // Extract patterns from commands
52
+ if (hook.commands && typeof hook.commands === 'object') {
53
+ for (const command of Object.values(hook.commands)) {
54
+ if (typeof command === 'object' && command !== null) {
55
+ if (command.files) {
56
+ addPattern(patterns, command.files, lineMap);
57
+ }
58
+ if (command.glob) {
59
+ addPattern(patterns, command.glob, lineMap);
60
+ }
61
+ if (command.exclude) {
62
+ addPattern(patterns, command.exclude, lineMap);
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ return patterns;
69
+ }
70
+ function addPattern(patterns, value, lineMap) {
71
+ const lineInfo = lineMap.get(value);
72
+ const type = isGlobPattern(value) ? PatternType.GLOB : PatternType.PATH;
73
+ patterns.push({
74
+ value,
75
+ type,
76
+ line: lineInfo?.line ?? 1,
77
+ column: lineInfo?.column
78
+ });
79
+ }
80
+ function buildLineMap(content) {
81
+ const map = new Map();
82
+ const lines = content.split('\n');
83
+ for (let i = 0; i < lines.length; i++) {
84
+ const line = lines[i];
85
+ const lineNum = i + 1;
86
+ // Match YAML string values (quoted and unquoted)
87
+ const quotedMatches = line.matchAll(/["']([^"']+)["']/g);
88
+ for (const match of quotedMatches) {
89
+ const value = match[1];
90
+ if (value && !map.has(value)) {
91
+ map.set(value, { line: lineNum, column: (match.index ?? 0) + 1 });
92
+ }
93
+ }
94
+ // Match unquoted values after colon
95
+ const unquotedMatch = line.match(/:\s*([^\s#]+)/);
96
+ if (unquotedMatch && unquotedMatch[1]) {
97
+ const value = unquotedMatch[1];
98
+ if (!map.has(value)) {
99
+ map.set(value, { line: lineNum, column: (unquotedMatch.index ?? 0) + 1 });
100
+ }
101
+ }
102
+ }
103
+ return map;
104
+ }
105
+ /** lefthook config parser */
106
+ export const lefthookParser = {
107
+ name: 'lefthook',
108
+ filePatterns: ['lefthook.yml', '.lefthook.yml', 'lefthook-local.yml', '**/lefthook.yml'],
109
+ parse: parseLefthook
110
+ };
111
+ //# sourceMappingURL=lefthook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lefthook.js","sourceRoot":"","sources":["../../src/parsers/lefthook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Parser for lint-staged configuration files
3
+ * https://github.com/lint-staged/lint-staged
4
+ */
5
+ import type { Parser } from '../plugin/types.js';
6
+ /** lint-staged config parser */
7
+ export declare const lintStagedParser: Parser;
8
+ //# sourceMappingURL=lint-staged.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint-staged.d.ts","sourceRoot":"","sources":["../../src/parsers/lint-staged.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAyEjD,gCAAgC;AAChC,eAAO,MAAM,gBAAgB,EAAE,MAS9B,CAAC"}