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,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Flake8 configuration files
|
|
3
|
+
* Flake8 is a Python linting tool that checks for PEP 8 compliance
|
|
4
|
+
*/
|
|
5
|
+
import { PatternType } from '../core/types.js';
|
|
6
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
7
|
+
/** Parse .flake8 or setup.cfg file */
|
|
8
|
+
function parseFlake8(filename, content) {
|
|
9
|
+
const patterns = [];
|
|
10
|
+
const lines = content.split('\n');
|
|
11
|
+
let inFlake8Section = false;
|
|
12
|
+
let currentKey = '';
|
|
13
|
+
for (let i = 0; i < lines.length; i++) {
|
|
14
|
+
const line = lines[i];
|
|
15
|
+
const lineNum = i + 1;
|
|
16
|
+
const trimmed = line.trim();
|
|
17
|
+
// Check for [flake8] section
|
|
18
|
+
if (trimmed === '[flake8]') {
|
|
19
|
+
inFlake8Section = true;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
// Check if we've entered a different section
|
|
23
|
+
if (trimmed.startsWith('[') && trimmed.endsWith(']') && trimmed !== '[flake8]') {
|
|
24
|
+
inFlake8Section = false;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (!inFlake8Section)
|
|
28
|
+
continue;
|
|
29
|
+
// Skip empty lines and comments
|
|
30
|
+
if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith(';')) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Parse key = value
|
|
34
|
+
if (trimmed.includes('=')) {
|
|
35
|
+
const [key, value] = trimmed.split('=').map((s) => s.trim());
|
|
36
|
+
currentKey = key;
|
|
37
|
+
// Check if this is a path-related field
|
|
38
|
+
if (isPathField(key) && value) {
|
|
39
|
+
extractPatterns(value, lineNum, patterns);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (currentKey && isPathField(currentKey)) {
|
|
43
|
+
// Continuation line
|
|
44
|
+
extractPatterns(trimmed, lineNum, patterns);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return patterns;
|
|
48
|
+
}
|
|
49
|
+
/** Check if a key is a path-related field */
|
|
50
|
+
function isPathField(key) {
|
|
51
|
+
return ['exclude', 'extend-exclude', 'filename', 'per-file-ignores'].includes(key);
|
|
52
|
+
}
|
|
53
|
+
/** Extract patterns from a value string */
|
|
54
|
+
function extractPatterns(value, line, patterns) {
|
|
55
|
+
// Split by comma or newline
|
|
56
|
+
const parts = value
|
|
57
|
+
.split(/[,\n]/)
|
|
58
|
+
.map((s) => s.trim())
|
|
59
|
+
.filter(Boolean);
|
|
60
|
+
for (const part of parts) {
|
|
61
|
+
// For per-file-ignores, extract the file pattern before the colon
|
|
62
|
+
let patternValue = part;
|
|
63
|
+
if (part.includes(':')) {
|
|
64
|
+
patternValue = part.split(':')[0].trim();
|
|
65
|
+
}
|
|
66
|
+
if (!patternValue)
|
|
67
|
+
continue;
|
|
68
|
+
const type = isGlobPattern(patternValue) ? PatternType.GLOB : PatternType.PATH;
|
|
69
|
+
patterns.push({
|
|
70
|
+
value: patternValue,
|
|
71
|
+
type,
|
|
72
|
+
line,
|
|
73
|
+
column: 1
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Flake8 .flake8 file parser */
|
|
78
|
+
export const flake8Parser = {
|
|
79
|
+
name: 'flake8',
|
|
80
|
+
filePatterns: ['.flake8', '**/.flake8'],
|
|
81
|
+
parse: parseFlake8
|
|
82
|
+
};
|
|
83
|
+
/** Flake8 setup.cfg parser (only processes [flake8] section) */
|
|
84
|
+
export const flake8SetupCfgParser = {
|
|
85
|
+
name: 'flake8-setup',
|
|
86
|
+
filePatterns: ['setup.cfg', '**/setup.cfg'],
|
|
87
|
+
parse: parseFlake8
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=flake8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flake8.js","sourceRoot":"","sources":["../../src/parsers/flake8.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for .gitignore, .dockerignore, and similar ignore files
|
|
3
|
+
*/
|
|
4
|
+
import type { Parser } from '../plugin/types.js';
|
|
5
|
+
/** Gitignore parser */
|
|
6
|
+
export declare const gitignoreParser: Parser;
|
|
7
|
+
/** Dockerignore parser (same format) */
|
|
8
|
+
export declare const dockerignoreParser: Parser;
|
|
9
|
+
/** Generic ignore file parser factory */
|
|
10
|
+
export declare function createIgnoreParser(name: string, filePatterns: string[]): Parser;
|
|
11
|
+
//# sourceMappingURL=gitignore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/parsers/gitignore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA4DjD,uBAAuB;AACvB,eAAO,MAAM,eAAe,EAAE,MAI7B,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,kBAAkB,EAAE,MAIhC,CAAC;AAEF,yCAAyC;AACzC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAM/E"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for .gitignore, .dockerignore, and similar ignore files
|
|
3
|
+
*/
|
|
4
|
+
import { PatternType } from '../core/types.js';
|
|
5
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
6
|
+
/** Parse a gitignore-style file and extract patterns */
|
|
7
|
+
function parseIgnoreFile(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
|
+
// Remove trailing spaces (unless escaped)
|
|
26
|
+
patternValue = patternValue.replace(/(?<!\\)\s+$/, '');
|
|
27
|
+
// Skip empty patterns after processing
|
|
28
|
+
if (!patternValue) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// Determine pattern type
|
|
32
|
+
const type = determinePatternType(patternValue);
|
|
33
|
+
patterns.push({
|
|
34
|
+
value: patternValue,
|
|
35
|
+
type,
|
|
36
|
+
line: lineNum,
|
|
37
|
+
column: 1,
|
|
38
|
+
negated
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return patterns;
|
|
42
|
+
}
|
|
43
|
+
/** Determine if a pattern is a path or glob */
|
|
44
|
+
function determinePatternType(pattern) {
|
|
45
|
+
// Contains glob characters
|
|
46
|
+
if (isGlobPattern(pattern)) {
|
|
47
|
+
return PatternType.GLOB;
|
|
48
|
+
}
|
|
49
|
+
// Treat as path
|
|
50
|
+
return PatternType.PATH;
|
|
51
|
+
}
|
|
52
|
+
/** Gitignore parser */
|
|
53
|
+
export const gitignoreParser = {
|
|
54
|
+
name: 'gitignore',
|
|
55
|
+
filePatterns: ['.gitignore', '**/.gitignore'],
|
|
56
|
+
parse: parseIgnoreFile
|
|
57
|
+
};
|
|
58
|
+
/** Dockerignore parser (same format) */
|
|
59
|
+
export const dockerignoreParser = {
|
|
60
|
+
name: 'dockerignore',
|
|
61
|
+
filePatterns: ['.dockerignore'],
|
|
62
|
+
parse: parseIgnoreFile
|
|
63
|
+
};
|
|
64
|
+
/** Generic ignore file parser factory */
|
|
65
|
+
export function createIgnoreParser(name, filePatterns) {
|
|
66
|
+
return {
|
|
67
|
+
name,
|
|
68
|
+
filePatterns,
|
|
69
|
+
parse: parseIgnoreFile
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=gitignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/parsers/gitignore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,wDAAwD;AACxD,SAAS,eAAe,CAAC,QAAgB,EAAE,OAAe;IACxD,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,0CAA0C;QAC1C,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAEvD,uCAAuC;QACvC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,yBAAyB;QACzB,MAAM,IAAI,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAEhD,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,+CAA+C;AAC/C,SAAS,oBAAoB,CAAC,OAAe;IAC3C,2BAA2B;IAC3B,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,gBAAgB;IAChB,OAAO,WAAW,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED,uBAAuB;AACvB,MAAM,CAAC,MAAM,eAAe,GAAW;IACrC,IAAI,EAAE,WAAW;IACjB,YAAY,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;IAC7C,KAAK,EAAE,eAAe;CACvB,CAAC;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAW;IACxC,IAAI,EAAE,cAAc;IACpB,YAAY,EAAE,CAAC,eAAe,CAAC;IAC/B,KAAK,EAAE,eAAe;CACvB,CAAC;AAEF,yCAAyC;AACzC,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,YAAsB;IACrE,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,KAAK,EAAE,eAAe;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Gitleaks configuration files
|
|
3
|
+
* Gitleaks is a SAST tool for detecting and preventing hardcoded secrets
|
|
4
|
+
*/
|
|
5
|
+
import type { Parser } from '../plugin/types.js';
|
|
6
|
+
/** Gitleaks configuration parser */
|
|
7
|
+
export declare const gitleaksParser: Parser;
|
|
8
|
+
//# sourceMappingURL=gitleaks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitleaks.d.ts","sourceRoot":"","sources":["../../src/parsers/gitleaks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAgIjD,oCAAoC;AACpC,eAAO,MAAM,cAAc,EAAE,MAI5B,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Gitleaks configuration files
|
|
3
|
+
* Gitleaks is a SAST tool for detecting and preventing hardcoded secrets
|
|
4
|
+
*/
|
|
5
|
+
import { parse as parseToml } from 'smol-toml';
|
|
6
|
+
import { PatternType } from '../core/types.js';
|
|
7
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
8
|
+
import { looksLikeRegex } from '../validator/regex.js';
|
|
9
|
+
/** Parse .gitleaks.toml file */
|
|
10
|
+
function parseGitleaks(_filename, content) {
|
|
11
|
+
const patterns = [];
|
|
12
|
+
let toml;
|
|
13
|
+
try {
|
|
14
|
+
toml = parseToml(content);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return patterns;
|
|
18
|
+
}
|
|
19
|
+
const lineMap = buildLineMap(content);
|
|
20
|
+
// Extract allowlist paths
|
|
21
|
+
const allowlist = toml.allowlist;
|
|
22
|
+
if (allowlist) {
|
|
23
|
+
const paths = allowlist.paths;
|
|
24
|
+
if (paths && Array.isArray(paths)) {
|
|
25
|
+
for (const path of paths) {
|
|
26
|
+
if (typeof path !== 'string')
|
|
27
|
+
continue;
|
|
28
|
+
const lineInfo = lineMap.get(path);
|
|
29
|
+
const line = lineInfo?.line ?? 1;
|
|
30
|
+
const column = lineInfo?.column;
|
|
31
|
+
// Determine type
|
|
32
|
+
let type;
|
|
33
|
+
if (looksLikeRegex(path)) {
|
|
34
|
+
type = PatternType.REGEX;
|
|
35
|
+
}
|
|
36
|
+
else if (isGlobPattern(path)) {
|
|
37
|
+
type = PatternType.GLOB;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
type = PatternType.PATH;
|
|
41
|
+
}
|
|
42
|
+
patterns.push({
|
|
43
|
+
value: path,
|
|
44
|
+
type,
|
|
45
|
+
line,
|
|
46
|
+
column
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Extract regex patterns from allowlist
|
|
51
|
+
const regexes = allowlist.regexes;
|
|
52
|
+
if (regexes && Array.isArray(regexes)) {
|
|
53
|
+
for (const regex of regexes) {
|
|
54
|
+
if (typeof regex !== 'string')
|
|
55
|
+
continue;
|
|
56
|
+
const lineInfo = lineMap.get(regex);
|
|
57
|
+
patterns.push({
|
|
58
|
+
value: regex,
|
|
59
|
+
type: PatternType.REGEX,
|
|
60
|
+
line: lineInfo?.line ?? 1,
|
|
61
|
+
column: lineInfo?.column
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Extract rules with path filters
|
|
67
|
+
const rules = toml.rules;
|
|
68
|
+
if (rules && Array.isArray(rules)) {
|
|
69
|
+
for (const rule of rules) {
|
|
70
|
+
const allowlistRule = rule.allowlist;
|
|
71
|
+
if (!allowlistRule)
|
|
72
|
+
continue;
|
|
73
|
+
const paths = allowlistRule.paths;
|
|
74
|
+
if (paths && Array.isArray(paths)) {
|
|
75
|
+
for (const path of paths) {
|
|
76
|
+
if (typeof path !== 'string')
|
|
77
|
+
continue;
|
|
78
|
+
const lineInfo = lineMap.get(path);
|
|
79
|
+
const line = lineInfo?.line ?? 1;
|
|
80
|
+
const column = lineInfo?.column;
|
|
81
|
+
let type;
|
|
82
|
+
if (looksLikeRegex(path)) {
|
|
83
|
+
type = PatternType.REGEX;
|
|
84
|
+
}
|
|
85
|
+
else if (isGlobPattern(path)) {
|
|
86
|
+
type = PatternType.GLOB;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
type = PatternType.PATH;
|
|
90
|
+
}
|
|
91
|
+
patterns.push({
|
|
92
|
+
value: path,
|
|
93
|
+
type,
|
|
94
|
+
line,
|
|
95
|
+
column
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return patterns;
|
|
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 in TOML
|
|
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
|
+
/** Gitleaks configuration parser */
|
|
122
|
+
export const gitleaksParser = {
|
|
123
|
+
name: 'gitleaks',
|
|
124
|
+
filePatterns: ['.gitleaks.toml', 'gitleaks.toml', '**/.gitleaks.toml'],
|
|
125
|
+
parse: parseGitleaks
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=gitleaks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitleaks.js","sourceRoot":"","sources":["../../src/parsers/gitleaks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"golangci.d.ts","sourceRoot":"","sources":["../../src/parsers/golangci.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAgGjD,2BAA2B;AAC3B,eAAO,MAAM,cAAc,EAAE,MAI5B,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for .golangci.yml (Go linter configuration)
|
|
3
|
+
*/
|
|
4
|
+
import { parse as parseYaml } from 'yaml';
|
|
5
|
+
import { PatternType } from '../core/types.js';
|
|
6
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
7
|
+
/** Parse .golangci.yml and extract patterns */
|
|
8
|
+
function parseGolangci(_filename, content) {
|
|
9
|
+
const patterns = [];
|
|
10
|
+
let config;
|
|
11
|
+
try {
|
|
12
|
+
config = parseYaml(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 from run section
|
|
22
|
+
if (config.run) {
|
|
23
|
+
extractPatterns(config.run.skip, patterns, lineMap);
|
|
24
|
+
extractPatterns(config.run['skip-dirs'], patterns, lineMap);
|
|
25
|
+
extractPatterns(config.run['skip-files'], patterns, lineMap);
|
|
26
|
+
}
|
|
27
|
+
// Extract from issues section
|
|
28
|
+
if (config.issues) {
|
|
29
|
+
extractPatterns(config.issues['exclude-dirs'], patterns, lineMap);
|
|
30
|
+
extractPatterns(config.issues['exclude-files'], patterns, lineMap);
|
|
31
|
+
}
|
|
32
|
+
return patterns;
|
|
33
|
+
}
|
|
34
|
+
function extractPatterns(values, patterns, lineMap) {
|
|
35
|
+
if (!Array.isArray(values))
|
|
36
|
+
return;
|
|
37
|
+
for (const value of values) {
|
|
38
|
+
if (typeof value !== 'string')
|
|
39
|
+
continue;
|
|
40
|
+
const lineInfo = lineMap.get(value);
|
|
41
|
+
const type = isGlobPattern(value) ? PatternType.GLOB : PatternType.PATH;
|
|
42
|
+
patterns.push({
|
|
43
|
+
value,
|
|
44
|
+
type,
|
|
45
|
+
line: lineInfo?.line ?? 1,
|
|
46
|
+
column: lineInfo?.column
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function buildLineMap(content) {
|
|
51
|
+
const map = new Map();
|
|
52
|
+
const lines = content.split('\n');
|
|
53
|
+
for (let i = 0; i < lines.length; i++) {
|
|
54
|
+
const line = lines[i];
|
|
55
|
+
const lineNum = i + 1;
|
|
56
|
+
// Match YAML list items or quoted strings
|
|
57
|
+
const listMatch = line.match(/^\s*-\s+(?:"([^"]+)"|'([^']+)'|([^\s#]+))/);
|
|
58
|
+
if (listMatch) {
|
|
59
|
+
const value = listMatch[1] || listMatch[2] || listMatch[3];
|
|
60
|
+
if (value && !map.has(value)) {
|
|
61
|
+
map.set(value, { line: lineNum, column: line.indexOf(value) + 1 });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return map;
|
|
66
|
+
}
|
|
67
|
+
/** GolangCI-Lint parser */
|
|
68
|
+
export const golangciParser = {
|
|
69
|
+
name: 'golangci',
|
|
70
|
+
filePatterns: ['.golangci.yml', '.golangci.yaml', '**/.golangci.yml', '**/.golangci.yaml'],
|
|
71
|
+
parse: parseGolangci
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=golangci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"golangci.js","sourceRoot":"","sources":["../../src/parsers/golangci.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Hadolint configuration files
|
|
3
|
+
* Hadolint is a Dockerfile linter that helps you build best practice Docker images
|
|
4
|
+
*/
|
|
5
|
+
import type { Parser } from '../plugin/types.js';
|
|
6
|
+
/** Hadolint configuration parser */
|
|
7
|
+
export declare const hadolintParser: Parser;
|
|
8
|
+
//# sourceMappingURL=hadolint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hadolint.d.ts","sourceRoot":"","sources":["../../src/parsers/hadolint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAiGjD,oCAAoC;AACpC,eAAO,MAAM,cAAc,EAAE,MAW5B,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for Hadolint configuration files
|
|
3
|
+
* Hadolint is a Dockerfile linter that helps you build best practice Docker images
|
|
4
|
+
*/
|
|
5
|
+
import { parse as parseYaml } from 'yaml';
|
|
6
|
+
import { PatternType } from '../core/types.js';
|
|
7
|
+
import { isGlobPattern } from '../validator/glob.js';
|
|
8
|
+
/** Parse .hadolint.yaml file */
|
|
9
|
+
function parseHadolint(_filename, content) {
|
|
10
|
+
const patterns = [];
|
|
11
|
+
let config;
|
|
12
|
+
try {
|
|
13
|
+
config = parseYaml(content);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return patterns;
|
|
17
|
+
}
|
|
18
|
+
const lineMap = buildLineMap(content);
|
|
19
|
+
// Extract ignored files
|
|
20
|
+
if (config.ignored && Array.isArray(config.ignored)) {
|
|
21
|
+
for (const pattern of config.ignored) {
|
|
22
|
+
if (typeof pattern !== 'string')
|
|
23
|
+
continue;
|
|
24
|
+
const lineInfo = lineMap.get(pattern);
|
|
25
|
+
const line = lineInfo?.line ?? 1;
|
|
26
|
+
const column = lineInfo?.column;
|
|
27
|
+
const type = isGlobPattern(pattern) ? PatternType.GLOB : PatternType.PATH;
|
|
28
|
+
patterns.push({
|
|
29
|
+
value: pattern,
|
|
30
|
+
type,
|
|
31
|
+
line,
|
|
32
|
+
column
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Extract trusted registries (these are URLs/paths that should exist)
|
|
37
|
+
if (config.trustedRegistries && Array.isArray(config.trustedRegistries)) {
|
|
38
|
+
for (const registry of config.trustedRegistries) {
|
|
39
|
+
if (typeof registry !== 'string')
|
|
40
|
+
continue;
|
|
41
|
+
// Skip if it's a URL (starts with http:// or https://)
|
|
42
|
+
if (registry.startsWith('http://') || registry.startsWith('https://')) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const lineInfo = lineMap.get(registry);
|
|
46
|
+
const line = lineInfo?.line ?? 1;
|
|
47
|
+
const column = lineInfo?.column;
|
|
48
|
+
patterns.push({
|
|
49
|
+
value: registry,
|
|
50
|
+
type: PatternType.PATH,
|
|
51
|
+
line,
|
|
52
|
+
column
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return patterns;
|
|
57
|
+
}
|
|
58
|
+
/** Build a map of string values to their line numbers */
|
|
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 quotedMatches = line.matchAll(/["']([^"']+)["']/g);
|
|
66
|
+
for (const match of quotedMatches) {
|
|
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
|
+
const unquotedMatch = line.match(/:\s*-\s*([^\s#]+)/);
|
|
73
|
+
if (unquotedMatch && unquotedMatch[1]) {
|
|
74
|
+
const value = unquotedMatch[1].trim();
|
|
75
|
+
if (value && !map.has(value)) {
|
|
76
|
+
map.set(value, { line: lineNum, column: (unquotedMatch.index ?? 0) + 1 });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return map;
|
|
81
|
+
}
|
|
82
|
+
/** Hadolint configuration parser */
|
|
83
|
+
export const hadolintParser = {
|
|
84
|
+
name: 'hadolint',
|
|
85
|
+
filePatterns: [
|
|
86
|
+
'.hadolint.yaml',
|
|
87
|
+
'.hadolint.yml',
|
|
88
|
+
'hadolint.yaml',
|
|
89
|
+
'hadolint.yml',
|
|
90
|
+
'**/.hadolint.yaml',
|
|
91
|
+
'**/.hadolint.yml'
|
|
92
|
+
],
|
|
93
|
+
parse: parseHadolint
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=hadolint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hadolint.js","sourceRoot":"","sources":["../../src/parsers/hadolint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser exports
|
|
3
|
+
*/
|
|
4
|
+
export { gitignoreParser, dockerignoreParser, createIgnoreParser } from './gitignore.js';
|
|
5
|
+
export { eslintIgnoreParser } from './eslint.js';
|
|
6
|
+
export { prettierIgnoreParser } from './prettier.js';
|
|
7
|
+
export { tsconfigParser } from './typescript.js';
|
|
8
|
+
export { jestConfigParser } from './jest.js';
|
|
9
|
+
export { stylelintIgnoreParser, stylelintRcParser } from './stylelint.js';
|
|
10
|
+
export { biomeParser } from './biome.js';
|
|
11
|
+
export { denoParser } from './deno.js';
|
|
12
|
+
export { pyprojectParser } from './pyproject.js';
|
|
13
|
+
export { flake8Parser, flake8SetupCfgParser } from './flake8.js';
|
|
14
|
+
export { pylintrcParser } from './pylint.js';
|
|
15
|
+
export { banditParser } from './bandit.js';
|
|
16
|
+
export { pyrightParser } from './pyright.js';
|
|
17
|
+
export { rubocopParser } from './rubocop.js';
|
|
18
|
+
export { golangciParser } from './golangci.js';
|
|
19
|
+
export { rustfmtParser, clippyParser } from './rust.js';
|
|
20
|
+
export { checkstyleParser, pmdParser, spotbugsParser } from './java.js';
|
|
21
|
+
export { phpcsParser, phpstanParser } from './php.js';
|
|
22
|
+
export { swiftlintParser } from './swift.js';
|
|
23
|
+
export { clangTidyParser, clangFormatParser } from './clang.js';
|
|
24
|
+
export { detektParser } from './kotlin.js';
|
|
25
|
+
export { scalafmtParser, scalafixParser } from './scala.js';
|
|
26
|
+
export { credoParser } from './elixir.js';
|
|
27
|
+
export { editorConfigParser, buildPropsParser } from './dotnet.js';
|
|
28
|
+
export { markdownlintIgnoreParser } from './markdown.js';
|
|
29
|
+
export { shellcheckParser } from './shellcheck.js';
|
|
30
|
+
export { yamllintParser } from './yamllint.js';
|
|
31
|
+
export { tflintParser } from './tflint.js';
|
|
32
|
+
export { semgrepYmlParser, semgrepIgnoreParser } from './semgrep.js';
|
|
33
|
+
export { gitleaksParser } from './gitleaks.js';
|
|
34
|
+
export { hadolintParser } from './hadolint.js';
|
|
35
|
+
import type { Parser } from '../plugin/types.js';
|
|
36
|
+
/** Get all built-in parsers */
|
|
37
|
+
export declare function getBuiltinParsers(): Parser[];
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|