@thethracian/oxlint-config 0.3.0 → 0.3.2
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 +13 -0
- package/dist/codemods/arrow-body-style.d.ts.map +1 -1
- package/dist/codemods/arrow-body-style.js +29 -68
- package/dist/codemods/arrow-body-style.js.map +1 -1
- package/dist/codemods/comment-format.d.ts.map +1 -1
- package/dist/codemods/comment-format.js +22 -32
- package/dist/codemods/comment-format.js.map +1 -1
- package/dist/codemods/explicit-return-types.d.ts.map +1 -1
- package/dist/codemods/explicit-return-types.js +58 -167
- package/dist/codemods/explicit-return-types.js.map +1 -1
- package/dist/codemods/format-file-header.d.ts.map +1 -1
- package/dist/codemods/format-file-header.js +33 -72
- package/dist/codemods/format-file-header.js.map +1 -1
- package/dist/codemods/format-jsdoc-comments.d.ts.map +1 -1
- package/dist/codemods/format-jsdoc-comments.js +58 -66
- package/dist/codemods/format-jsdoc-comments.js.map +1 -1
- package/dist/codemods/function-declarations.d.ts.map +1 -1
- package/dist/codemods/function-declarations.js +45 -80
- package/dist/codemods/function-declarations.js.map +1 -1
- package/dist/codemods/inline-export-lists.d.ts.map +1 -1
- package/dist/codemods/inline-export-lists.js +60 -108
- package/dist/codemods/inline-export-lists.js.map +1 -1
- package/dist/codemods/internal-export-docs.d.ts.map +1 -1
- package/dist/codemods/internal-export-docs.js +21 -59
- package/dist/codemods/internal-export-docs.js.map +1 -1
- package/dist/codemods/no-ternary-branch-initializers.d.ts.map +1 -1
- package/dist/codemods/no-ternary-branch-initializers.js +72 -144
- package/dist/codemods/no-ternary-branch-initializers.js.map +1 -1
- package/dist/codemods/no-ternary-variable-initializers.d.ts.map +1 -1
- package/dist/codemods/no-ternary-variable-initializers.js +69 -152
- package/dist/codemods/no-ternary-variable-initializers.js.map +1 -1
- package/dist/codemods/no-ternary.d.ts.map +1 -1
- package/dist/codemods/no-ternary.js +44 -108
- package/dist/codemods/no-ternary.js.map +1 -1
- package/dist/codemods/rename-acronyms.d.ts.map +1 -1
- package/dist/codemods/rename-acronyms.js +73 -99
- package/dist/codemods/rename-acronyms.js.map +1 -1
- package/dist/codemods/run.d.ts.map +1 -1
- package/dist/codemods/run.js +15 -7
- package/dist/codemods/run.js.map +1 -1
- package/dist/codemods/sort-imports.d.ts.map +1 -1
- package/dist/codemods/sort-imports.js +52 -94
- package/dist/codemods/sort-imports.js.map +1 -1
- package/dist/rules/acronym-case.d.ts.map +1 -1
- package/dist/rules/acronym-case.js +68 -141
- package/dist/rules/acronym-case.js.map +1 -1
- package/dist/rules/acronyms-1.d.ts +1 -1
- package/dist/rules/acronyms-1.d.ts.map +1 -1
- package/dist/rules/acronyms-1.js +2 -402
- package/dist/rules/acronyms-1.js.map +1 -1
- package/dist/rules/acronyms-2.d.ts +1 -1
- package/dist/rules/acronyms-2.d.ts.map +1 -1
- package/dist/rules/acronyms-2.js +2 -402
- package/dist/rules/acronyms-2.js.map +1 -1
- package/dist/rules/acronyms-3.d.ts +1 -1
- package/dist/rules/acronyms-3.d.ts.map +1 -1
- package/dist/rules/acronyms-3.js +2 -402
- package/dist/rules/acronyms-3.js.map +1 -1
- package/dist/rules/acronyms-4.d.ts +1 -1
- package/dist/rules/acronyms-4.d.ts.map +1 -1
- package/dist/rules/acronyms-4.js +2 -372
- package/dist/rules/acronyms-4.js.map +1 -1
- package/dist/rules/acronyms.d.ts.map +1 -1
- package/dist/rules/acronyms.js +3 -6
- package/dist/rules/acronyms.js.map +1 -1
- package/dist/rules/boolean-prefix.d.ts.map +1 -1
- package/dist/rules/boolean-prefix.js +25 -71
- package/dist/rules/boolean-prefix.js.map +1 -1
- package/dist/rules/camel-case-identifiers.d.ts.map +1 -1
- package/dist/rules/camel-case-identifiers.js +15 -54
- package/dist/rules/camel-case-identifiers.js.map +1 -1
- package/dist/rules/char-class.d.ts +1 -1
- package/dist/rules/char-class.d.ts.map +1 -1
- package/dist/rules/char-class.js +16 -16
- package/dist/rules/char-class.js.map +1 -1
- package/dist/rules/diagnostic-guidance.d.ts.map +1 -1
- package/dist/rules/diagnostic-guidance.js +11 -20
- package/dist/rules/diagnostic-guidance.js.map +1 -1
- package/dist/rules/effect-default-ast.d.ts.map +1 -1
- package/dist/rules/effect-default-ast.js +35 -116
- package/dist/rules/effect-default-ast.js.map +1 -1
- package/dist/rules/effect-default-compat-rules.d.ts.map +1 -1
- package/dist/rules/effect-default-compat-rules.js +41 -79
- package/dist/rules/effect-default-compat-rules.js.map +1 -1
- package/dist/rules/effect-default-env-rules.d.ts.map +1 -1
- package/dist/rules/effect-default-env-rules.js +23 -29
- package/dist/rules/effect-default-env-rules.js.map +1 -1
- package/dist/rules/effect-default-fiber-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-fiber-helpers.js +12 -26
- package/dist/rules/effect-default-fiber-helpers.js.map +1 -1
- package/dist/rules/effect-default-floating-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-floating-helpers.js +59 -67
- package/dist/rules/effect-default-floating-helpers.js.map +1 -1
- package/dist/rules/effect-default-resource-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-resource-helpers.js +36 -44
- package/dist/rules/effect-default-resource-helpers.js.map +1 -1
- package/dist/rules/effect-default-safety-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-safety-helpers.js +29 -68
- package/dist/rules/effect-default-safety-helpers.js.map +1 -1
- package/dist/rules/effect-default-scan-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-scan-helpers.js +51 -70
- package/dist/rules/effect-default-scan-helpers.js.map +1 -1
- package/dist/rules/effect-default-schema-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-schema-helpers.js +32 -43
- package/dist/rules/effect-default-schema-helpers.js.map +1 -1
- package/dist/rules/effect-default-test-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-test-helpers.js +13 -25
- package/dist/rules/effect-default-test-helpers.js.map +1 -1
- package/dist/rules/effect-default-workflow-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-workflow-helpers.js +53 -113
- package/dist/rules/effect-default-workflow-helpers.js.map +1 -1
- package/dist/rules/effect-exported-declarations.d.ts.map +1 -1
- package/dist/rules/effect-exported-declarations.js +90 -177
- package/dist/rules/effect-exported-declarations.js.map +1 -1
- package/dist/rules/effect-path-options.d.ts.map +1 -1
- package/dist/rules/effect-path-options.js +48 -58
- package/dist/rules/effect-path-options.js.map +1 -1
- package/dist/rules/effect-rule-aliases.d.ts.map +1 -1
- package/dist/rules/effect-rule-aliases.js +43 -101
- package/dist/rules/effect-rule-aliases.js.map +1 -1
- package/dist/rules/effect-rule-core.d.ts.map +1 -1
- package/dist/rules/effect-rule-core.js +42 -78
- package/dist/rules/effect-rule-core.js.map +1 -1
- package/dist/rules/effect-rule-names.d.ts +2 -2
- package/dist/rules/effect-rule-names.d.ts.map +1 -1
- package/dist/rules/effect-rule-names.js +3 -145
- package/dist/rules/effect-rule-names.js.map +1 -1
- package/dist/rules/effect-source-comments.d.ts.map +1 -1
- package/dist/rules/effect-source-comments.js +112 -167
- package/dist/rules/effect-source-comments.js.map +1 -1
- package/dist/rules/effect-source-navigation.d.ts.map +1 -1
- package/dist/rules/effect-source-navigation.js +103 -185
- package/dist/rules/effect-source-navigation.js.map +1 -1
- package/dist/rules/effect-source-regex-scan.d.ts +13 -0
- package/dist/rules/effect-source-regex-scan.d.ts.map +1 -0
- package/dist/rules/effect-source-regex-scan.js +126 -0
- package/dist/rules/effect-source-regex-scan.js.map +1 -0
- package/dist/rules/effect-source-scan.d.ts +1 -12
- package/dist/rules/effect-source-scan.d.ts.map +1 -1
- package/dist/rules/effect-source-scan.js +93 -239
- package/dist/rules/effect-source-scan.js.map +1 -1
- package/dist/rules/effect-strict-ast-specs.d.ts.map +1 -1
- package/dist/rules/effect-strict-ast-specs.js +11 -8
- package/dist/rules/effect-strict-ast-specs.js.map +1 -1
- package/dist/rules/effect-strict-boundary-helpers.d.ts.map +1 -1
- package/dist/rules/effect-strict-boundary-helpers.js +51 -87
- package/dist/rules/effect-strict-boundary-helpers.js.map +1 -1
- package/dist/rules/effect-strict-core-specs.d.ts.map +1 -1
- package/dist/rules/effect-strict-core-specs.js +8 -6
- package/dist/rules/effect-strict-core-specs.js.map +1 -1
- package/dist/rules/effect-strict-external-helpers.d.ts.map +1 -1
- package/dist/rules/effect-strict-external-helpers.js +20 -40
- package/dist/rules/effect-strict-external-helpers.js.map +1 -1
- package/dist/rules/effect-strict-helpers.d.ts.map +1 -1
- package/dist/rules/effect-strict-helpers.js +47 -72
- package/dist/rules/effect-strict-helpers.js.map +1 -1
- package/dist/rules/effect-strict-internals.d.ts.map +1 -1
- package/dist/rules/effect-strict-internals.js +46 -101
- package/dist/rules/effect-strict-internals.js.map +1 -1
- package/dist/rules/effect-strict-segment-helpers.d.ts.map +1 -1
- package/dist/rules/effect-strict-segment-helpers.js +103 -174
- package/dist/rules/effect-strict-segment-helpers.js.map +1 -1
- package/dist/rules/effect-strict.d.ts.map +1 -1
- package/dist/rules/effect-strict.js +3 -2
- package/dist/rules/effect-strict.js.map +1 -1
- package/dist/rules/max-import-depth.d.ts +2 -1
- package/dist/rules/max-import-depth.d.ts.map +1 -1
- package/dist/rules/max-import-depth.js +13 -15
- package/dist/rules/max-import-depth.js.map +1 -1
- package/dist/rules/max-line-length.d.ts.map +1 -1
- package/dist/rules/max-line-length.js +26 -39
- package/dist/rules/max-line-length.js.map +1 -1
- package/dist/rules/no-commented-out-code.d.ts.map +1 -1
- package/dist/rules/no-commented-out-code.js +53 -156
- package/dist/rules/no-commented-out-code.js.map +1 -1
- package/dist/rules/pascal-case-types.d.ts.map +1 -1
- package/dist/rules/pascal-case-types.js +16 -70
- package/dist/rules/pascal-case-types.js.map +1 -1
- package/dist/rules/plugin-commented-out-code-rule.d.ts.map +1 -1
- package/dist/rules/plugin-commented-out-code-rule.js +50 -77
- package/dist/rules/plugin-commented-out-code-rule.js.map +1 -1
- package/dist/rules/plugin.d.ts +5 -1
- package/dist/rules/plugin.d.ts.map +1 -1
- package/dist/rules/plugin.js +19 -36
- package/dist/rules/plugin.js.map +1 -1
- package/dist/rules/private-underscore.d.ts +3 -1
- package/dist/rules/private-underscore.d.ts.map +1 -1
- package/dist/rules/private-underscore.js +7 -9
- package/dist/rules/private-underscore.js.map +1 -1
- package/dist/rules/require-file-doc.d.ts.map +1 -1
- package/dist/rules/require-file-doc.js +28 -94
- package/dist/rules/require-file-doc.js.map +1 -1
- package/dist/rules/require-function-doc-ignored-text.d.ts.map +1 -1
- package/dist/rules/require-function-doc-ignored-text.js +6 -9
- package/dist/rules/require-function-doc-ignored-text.js.map +1 -1
- package/dist/rules/require-function-doc-local-exports.d.ts.map +1 -1
- package/dist/rules/require-function-doc-local-exports.js +16 -58
- package/dist/rules/require-function-doc-local-exports.js.map +1 -1
- package/dist/rules/require-function-doc.d.ts.map +1 -1
- package/dist/rules/require-function-doc.js +87 -196
- package/dist/rules/require-function-doc.js.map +1 -1
- package/dist/rules/source-cache.d.ts.map +1 -1
- package/dist/rules/source-cache.js +23 -33
- package/dist/rules/source-cache.js.map +1 -1
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max-import-depth.js","sourceRoot":"","sources":["../../src/rules/max-import-depth.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;
|
|
1
|
+
{"version":3,"file":"max-import-depth.js","sourceRoot":"","sources":["../../src/rules/max-import-depth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max-line-length.d.ts","sourceRoot":"","sources":["../../src/rules/max-line-length.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"max-line-length.d.ts","sourceRoot":"","sources":["../../src/rules/max-line-length.ts"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AA+GD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,SAAqB,GAC7B,mBAAmB,EAAE,CAUvB"}
|
|
@@ -1,49 +1,46 @@
|
|
|
1
|
+
/* -------------------------------------------------------------------------- */
|
|
2
|
+
/* Maximum source line length helper used by the custom Oxlint plugin. */
|
|
3
|
+
/* -------------------------------------------------------------------------- */
|
|
4
|
+
import { Array, Match, Option, pipe } from 'effect';
|
|
1
5
|
const DEFAULT_MAX_LENGTH = 150;
|
|
2
6
|
const CHAR_CODE_CARRIAGE_RETURN = 13;
|
|
3
|
-
const lineContainsURL = (source, start, end) => {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
const httpsIndex = source.indexOf('https://', start);
|
|
9
|
-
return httpsIndex !== -1 && httpsIndex < end;
|
|
10
|
-
};
|
|
7
|
+
const lineContainsURL = (source, start, end) => pipe(['http://', 'https://'], Array.some((protocol) => {
|
|
8
|
+
const protocolIndex = source.indexOf(protocol, start);
|
|
9
|
+
return protocolIndex !== -1 && protocolIndex < end;
|
|
10
|
+
}));
|
|
11
11
|
const nextLineEnd = (source, lineStart) => {
|
|
12
12
|
const newlineIndex = source.indexOf('\n', lineStart);
|
|
13
|
-
|
|
14
|
-
return source.length;
|
|
15
|
-
}
|
|
16
|
-
return newlineIndex;
|
|
17
|
-
};
|
|
18
|
-
const contentEndForLine = (source, lineStart, lineEnd) => {
|
|
19
|
-
if (lineEnd > lineStart && source.charCodeAt(lineEnd - 1) === CHAR_CODE_CARRIAGE_RETURN) {
|
|
20
|
-
return lineEnd - 1;
|
|
21
|
-
}
|
|
22
|
-
return lineEnd;
|
|
13
|
+
return Match.value(newlineIndex).pipe(Match.when((index) => index === -1, () => source.length), Match.orElse((index) => index));
|
|
23
14
|
};
|
|
24
|
-
const
|
|
15
|
+
const contentEndForLine = (source, lineStart, lineEnd) => Match.value(lineEnd).pipe(Match.when((end) => end > lineStart && source.charCodeAt(end - 1) === CHAR_CODE_CARRIAGE_RETURN, (end) => end - 1), Match.orElse((end) => end));
|
|
16
|
+
const lineViolationForCheck = (check) => {
|
|
25
17
|
const { lineEnd, lineNumber, lineStart, maxLength, source } = check;
|
|
26
18
|
const contentEnd = contentEndForLine(source, lineStart, lineEnd);
|
|
27
19
|
const length = contentEnd - lineStart;
|
|
28
|
-
|
|
29
|
-
violations.push({ length, line: lineNumber });
|
|
30
|
-
}
|
|
20
|
+
return Match.value(length).pipe(Match.when((lineLength) => lineLength > maxLength && !lineContainsURL(source, lineStart, contentEnd), (lineLength) => Option.some({ length: lineLength, line: lineNumber })), Match.orElse(() => Option.none()));
|
|
31
21
|
};
|
|
32
22
|
const nextLineStart = (lineEnd) => lineEnd + 1;
|
|
33
23
|
const nextLineCursor = (cursor, lineEnd) => ({
|
|
34
24
|
lineNumber: cursor.lineNumber + 1,
|
|
35
25
|
lineStart: nextLineStart(lineEnd),
|
|
36
26
|
});
|
|
37
|
-
const
|
|
27
|
+
const appendCursorViolation = (violations, source, maxLength, cursor) => {
|
|
38
28
|
const lineEnd = nextLineEnd(source, cursor.lineStart);
|
|
39
|
-
|
|
29
|
+
return pipe(lineViolationForCheck({
|
|
40
30
|
lineEnd,
|
|
41
31
|
lineNumber: cursor.lineNumber,
|
|
42
32
|
lineStart: cursor.lineStart,
|
|
43
33
|
maxLength,
|
|
44
34
|
source,
|
|
45
|
-
})
|
|
46
|
-
|
|
35
|
+
}), Option.match({
|
|
36
|
+
onNone: () => violations,
|
|
37
|
+
onSome: (violation) => pipe(violations, Array.append(violation)),
|
|
38
|
+
}));
|
|
39
|
+
};
|
|
40
|
+
const collectLongLines = (source, maxLength, cursor, violations) => {
|
|
41
|
+
const lineEnd = nextLineEnd(source, cursor.lineStart);
|
|
42
|
+
const nextViolations = appendCursorViolation(violations, source, maxLength, cursor);
|
|
43
|
+
return Match.value(lineEnd).pipe(Match.when((end) => end === source.length, () => nextViolations), Match.orElse((end) => collectLongLines(source, maxLength, nextLineCursor(cursor, end), nextViolations)));
|
|
47
44
|
};
|
|
48
45
|
/**
|
|
49
46
|
* Finds source lines that exceed the configured maximum width.
|
|
@@ -53,18 +50,8 @@ const addCursorViolation = (violations, source, maxLength, cursor) => {
|
|
|
53
50
|
* @returns Line-length violations with one-based line numbers.
|
|
54
51
|
*/
|
|
55
52
|
export default function findLongLines(source, maxLength = DEFAULT_MAX_LENGTH) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const violations = [];
|
|
60
|
-
let cursor = { lineNumber: 1, lineStart: 0 };
|
|
61
|
-
while (cursor.lineStart <= source.length) {
|
|
62
|
-
const lineEnd = addCursorViolation(violations, source, maxLength, cursor);
|
|
63
|
-
if (lineEnd === source.length) {
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
cursor = nextLineCursor(cursor, lineEnd);
|
|
67
|
-
}
|
|
68
|
-
return violations;
|
|
53
|
+
return Match.value(source.length).pipe(Match.when((length) => length <= maxLength, () => []), Match.orElse(() => [
|
|
54
|
+
...collectLongLines(source, maxLength, { lineNumber: 1, lineStart: 0 }, []),
|
|
55
|
+
]));
|
|
69
56
|
}
|
|
70
57
|
//# sourceMappingURL=max-line-length.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max-line-length.js","sourceRoot":"","sources":["../../src/rules/max-line-length.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"max-line-length.js","sourceRoot":"","sources":["../../src/rules/max-line-length.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-commented-out-code.d.ts","sourceRoot":"","sources":["../../src/rules/no-commented-out-code.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"no-commented-out-code.d.ts","sourceRoot":"","sources":["../../src/rules/no-commented-out-code.ts"],"names":[],"mappings":"AA8RA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAiBhE"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
/* Meets the threshold, the comment is flagged. Optimized: pre-compiled */
|
|
6
6
|
/* Regex, line scanning via indexOf, minimal string allocations. */
|
|
7
7
|
/* -------------------------------------------------------------------------- */
|
|
8
|
+
import { Array, HashSet, Match, pipe } from 'effect';
|
|
8
9
|
// Pre-compiled regex patterns
|
|
9
10
|
const RE_ARROW_FN = /\b=>\s*[{(\w]/;
|
|
10
11
|
const RE_ASSIGNMENT = /\b\w+\s*=\s*[^=]/;
|
|
@@ -35,107 +36,31 @@ const URL_PENALTY = 5;
|
|
|
35
36
|
const SENTENCE_CASE_PENALTY = 2;
|
|
36
37
|
const FLAG_SCORE_THRESHOLD = 3;
|
|
37
38
|
// Code-indicative keywords
|
|
38
|
-
const CODE_KEYWORDS = new
|
|
39
|
-
|
|
40
|
-
'let',
|
|
41
|
-
'var',
|
|
42
|
-
'function',
|
|
43
|
-
'class',
|
|
44
|
-
'import',
|
|
45
|
-
'export',
|
|
46
|
-
'return',
|
|
47
|
-
'if',
|
|
48
|
-
'for',
|
|
49
|
-
'while',
|
|
50
|
-
'switch',
|
|
51
|
-
'try',
|
|
52
|
-
'catch',
|
|
53
|
-
'throw',
|
|
54
|
-
'await',
|
|
55
|
-
'async',
|
|
56
|
-
'interface',
|
|
57
|
-
'type',
|
|
58
|
-
'enum',
|
|
59
|
-
'new',
|
|
60
|
-
'yield',
|
|
61
|
-
'extends',
|
|
62
|
-
'implements',
|
|
63
|
-
'typeof',
|
|
64
|
-
'instanceof',
|
|
65
|
-
'break',
|
|
66
|
-
'continue',
|
|
67
|
-
'default',
|
|
68
|
-
'case',
|
|
69
|
-
'finally',
|
|
70
|
-
'static',
|
|
71
|
-
'get',
|
|
72
|
-
'set',
|
|
73
|
-
'readonly',
|
|
74
|
-
'abstract',
|
|
75
|
-
'declare',
|
|
76
|
-
'protected',
|
|
77
|
-
'private',
|
|
78
|
-
'public',
|
|
79
|
-
]);
|
|
39
|
+
const CODE_KEYWORDS = HashSet.make('const', 'let', 'var', 'function', 'class', 'import', 'export', 'return', 'if', 'for', 'while', 'switch', 'try', 'catch', 'throw', 'await', 'async', 'interface', 'type', 'enum', 'new', 'yield', 'extends', 'implements', 'typeof', 'instanceof', 'break', 'continue', 'default', 'case', 'finally', 'static', 'get', 'set', 'readonly', 'abstract', 'declare', 'protected', 'private', 'public');
|
|
40
|
+
const scanIndexes = (startIndex, endIndex) => Match.value(startIndex).pipe(Match.when((value) => value > endIndex, () => []), Match.orElse((value) => Array.range(value, endIndex)));
|
|
80
41
|
/**
|
|
81
42
|
* Extract first whitespace-delimited word from text.
|
|
82
43
|
*/
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (source.charCodeAt(idx) === CHAR_CODE_OPEN_BRACE) {
|
|
95
|
-
count++;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return count;
|
|
99
|
-
};
|
|
100
|
-
const hasCodeTokenSignal = (normalized) => {
|
|
101
|
-
if (RE_CODE_TOKEN.test(normalized)) {
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
if (CODE_KEYWORDS.has(firstWord(normalized))) {
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
return RE_KEYWORD_SCAN.test(normalized);
|
|
108
|
-
};
|
|
109
|
-
const nextLineEnd = (source, position) => {
|
|
110
|
-
const lineEnd = source.indexOf('\n', position);
|
|
111
|
-
if (lineEnd === -1) {
|
|
112
|
-
return source.length;
|
|
113
|
-
}
|
|
114
|
-
return lineEnd;
|
|
115
|
-
};
|
|
116
|
-
const firstNonWhitespaceIndex = (source, start, end) => {
|
|
117
|
-
let index = start;
|
|
118
|
-
while (index < end && source.charCodeAt(index) <= CHAR_CODE_SPACE) {
|
|
119
|
-
index++;
|
|
120
|
-
}
|
|
121
|
-
return index;
|
|
122
|
-
};
|
|
123
|
-
const firstLineWord = (source, start, end) => {
|
|
124
|
-
let wordEnd = start;
|
|
125
|
-
while (wordEnd < end && source.charCodeAt(wordEnd) > CHAR_CODE_SPACE) {
|
|
126
|
-
wordEnd++;
|
|
127
|
-
}
|
|
128
|
-
return source
|
|
129
|
-
.slice(start, wordEnd)
|
|
130
|
-
.toLowerCase()
|
|
131
|
-
.replace(/[;:,]$/, '');
|
|
132
|
-
};
|
|
44
|
+
const firstWhitespaceIndex = (text, index) => Match.value(index).pipe(Match.when((current) => current >= text.length || text.charCodeAt(current) <= CHAR_CODE_SPACE, (current) => current), Match.orElse((current) => firstWhitespaceIndex(text, current + 1)));
|
|
45
|
+
const firstWord = (text) => text.slice(0, firstWhitespaceIndex(text, 0)).toLowerCase();
|
|
46
|
+
const countOpenBraces = (source, start, end) => pipe(scanIndexes(start, end - 1), Array.reduce(0, (count, idx) => Match.value(source.charCodeAt(idx)).pipe(Match.when(CHAR_CODE_OPEN_BRACE, () => count + 1), Match.orElse(() => count))));
|
|
47
|
+
const hasCodeTokenSignal = (normalized) => Match.value(RE_CODE_TOKEN.test(normalized)).pipe(Match.when(true, () => true), Match.when(() => HashSet.has(CODE_KEYWORDS, firstWord(normalized)), () => true), Match.orElse(() => RE_KEYWORD_SCAN.test(normalized)));
|
|
48
|
+
const nextLineEnd = (source, position) => Match.value(source.indexOf('\n', position)).pipe(Match.when(-1, () => source.length), Match.orElse((lineEnd) => lineEnd));
|
|
49
|
+
const firstNonWhitespaceIndex = (source, start, end) => Match.value(start).pipe(Match.when((index) => index >= end || source.charCodeAt(index) > CHAR_CODE_SPACE, (index) => index), Match.orElse((index) => firstNonWhitespaceIndex(source, index + 1, end)));
|
|
50
|
+
const lineWordEnd = (source, start, end) => Match.value(start).pipe(Match.when((wordEnd) => wordEnd >= end || source.charCodeAt(wordEnd) <= CHAR_CODE_SPACE, (wordEnd) => wordEnd), Match.orElse((wordEnd) => lineWordEnd(source, wordEnd + 1, end)));
|
|
51
|
+
const firstLineWord = (source, start, end) => source
|
|
52
|
+
.slice(start, lineWordEnd(source, start, end))
|
|
53
|
+
.toLowerCase()
|
|
54
|
+
.replace(/[;:,]$/, '');
|
|
133
55
|
const lineKeywordScore = (source, lineStart, lineEnd) => {
|
|
134
56
|
const clean = firstLineWord(source, lineStart, lineEnd);
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
57
|
+
return Match.value(HashSet.has(CODE_KEYWORDS, clean)).pipe(Match.when(true, () => ({
|
|
58
|
+
hasFoundKeyword: true,
|
|
59
|
+
score: KEYWORD_SCORE,
|
|
60
|
+
})), Match.orElse(() => ({
|
|
61
|
+
hasFoundKeyword: false,
|
|
62
|
+
score: 0,
|
|
63
|
+
})));
|
|
139
64
|
};
|
|
140
65
|
const addLineStats = (stats, normalized, lineStart, lineEnd) => {
|
|
141
66
|
const keywordScore = lineKeywordScore(normalized, lineStart, lineEnd);
|
|
@@ -146,24 +71,19 @@ const addLineStats = (stats, normalized, lineStart, lineEnd) => {
|
|
|
146
71
|
score: stats.score + keywordScore.score,
|
|
147
72
|
};
|
|
148
73
|
};
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
pos = lineEnd + 1;
|
|
164
|
-
}
|
|
165
|
-
return stats;
|
|
166
|
-
};
|
|
74
|
+
const initialLineStats = () => ({
|
|
75
|
+
braceCount: 0,
|
|
76
|
+
hasFoundKeyword: false,
|
|
77
|
+
lineCount: 0,
|
|
78
|
+
score: 0,
|
|
79
|
+
});
|
|
80
|
+
const scanLineStatsFrom = (normalized, pos, stats) => Match.value(pos).pipe(Match.when((position) => position >= normalized.length, () => stats), Match.orElse((position) => {
|
|
81
|
+
const lineEnd = nextLineEnd(normalized, position);
|
|
82
|
+
const lineStart = firstNonWhitespaceIndex(normalized, position, lineEnd);
|
|
83
|
+
const nextStats = Match.value(lineStart < lineEnd).pipe(Match.when(true, () => addLineStats(stats, normalized, lineStart, lineEnd)), Match.orElse(() => stats));
|
|
84
|
+
return scanLineStatsFrom(normalized, lineEnd + 1, nextStats);
|
|
85
|
+
}));
|
|
86
|
+
const scanLineStats = (normalized) => scanLineStatsFrom(normalized, 0, initialLineStats());
|
|
167
87
|
const patternScore = (normalized) => {
|
|
168
88
|
const patterns = [
|
|
169
89
|
RE_ARROW_FN,
|
|
@@ -174,12 +94,7 @@ const patternScore = (normalized) => {
|
|
|
174
94
|
RE_JSX_TAG,
|
|
175
95
|
RE_SPREAD,
|
|
176
96
|
];
|
|
177
|
-
return patterns.reduce((score, pattern) =>
|
|
178
|
-
if (pattern.test(normalized)) {
|
|
179
|
-
return score + PATTERN_SCORE;
|
|
180
|
-
}
|
|
181
|
-
return score;
|
|
182
|
-
}, 0);
|
|
97
|
+
return pipe(patterns, Array.reduce(0, (score, pattern) => Match.value(pattern.test(normalized)).pipe(Match.when(true, () => score + PATTERN_SCORE), Match.orElse(() => score))));
|
|
183
98
|
};
|
|
184
99
|
const isSentenceCaseSingleLine = (normalized, stats) => !stats.hasFoundKeyword &&
|
|
185
100
|
stats.braceCount === 0 &&
|
|
@@ -188,33 +103,19 @@ const isSentenceCaseSingleLine = (normalized, stats) => !stats.hasFoundKeyword &
|
|
|
188
103
|
normalized.charCodeAt(0) <= CHAR_CODE_UPPER_Z &&
|
|
189
104
|
normalized.charCodeAt(1) >= CHAR_CODE_LOWER_A &&
|
|
190
105
|
normalized.charCodeAt(1) <= CHAR_CODE_LOWER_Z;
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
return penalty;
|
|
206
|
-
};
|
|
207
|
-
const structuralScore = (stats) => {
|
|
208
|
-
const { braceCount, lineCount, score: baseScore } = stats;
|
|
209
|
-
let score = baseScore;
|
|
210
|
-
if (braceCount >= 1) {
|
|
211
|
-
score += braceCount;
|
|
212
|
-
}
|
|
213
|
-
if (lineCount >= MULTILINE_LINE_THRESHOLD) {
|
|
214
|
-
score += MULTILINE_SCORE;
|
|
215
|
-
}
|
|
216
|
-
return score;
|
|
217
|
-
};
|
|
106
|
+
const scoreWhen = (condition, score) => Match.value(condition).pipe(Match.when(true, () => score), Match.orElse(() => 0));
|
|
107
|
+
const languagePenaltyChecks = (normalized, stats) => [
|
|
108
|
+
scoreWhen(!stats.hasFoundKeyword && RE_NATURAL_START.test(normalized), NATURAL_LANGUAGE_PENALTY),
|
|
109
|
+
scoreWhen(RE_JSDOC_TAG.test(normalized), JSDOC_TAG_PENALTY),
|
|
110
|
+
scoreWhen(!stats.hasFoundKeyword && RE_URL.test(normalized), URL_PENALTY),
|
|
111
|
+
scoreWhen(isSentenceCaseSingleLine(normalized, stats), SENTENCE_CASE_PENALTY),
|
|
112
|
+
];
|
|
113
|
+
const languagePenalty = (normalized, stats) => pipe(languagePenaltyChecks(normalized, stats), Array.reduce(0, (penalty, value) => penalty + value));
|
|
114
|
+
const structuralScore = (stats) => pipe([
|
|
115
|
+
stats.score,
|
|
116
|
+
scoreWhen(stats.braceCount >= 1, stats.braceCount),
|
|
117
|
+
scoreWhen(stats.lineCount >= MULTILINE_LINE_THRESHOLD, MULTILINE_SCORE),
|
|
118
|
+
], Array.reduce(0, (score, value) => score + value));
|
|
218
119
|
/**
|
|
219
120
|
* Determines whether comment text is likely dead source code.
|
|
220
121
|
*
|
|
@@ -223,14 +124,10 @@ const structuralScore = (stats) => {
|
|
|
223
124
|
*/
|
|
224
125
|
export default function isCommentedOutCode(text) {
|
|
225
126
|
const normalized = text.trim();
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
const stats = scanLineStats(normalized);
|
|
233
|
-
const score = structuralScore(stats) + patternScore(normalized) - languagePenalty(normalized, stats);
|
|
234
|
-
return score >= FLAG_SCORE_THRESHOLD;
|
|
127
|
+
return Match.value(normalized).pipe(Match.when((value) => value.length < MIN_COMMENT_LENGTH, () => false), Match.when((value) => !hasCodeTokenSignal(value), () => false), Match.orElse((value) => {
|
|
128
|
+
const stats = scanLineStats(value);
|
|
129
|
+
const score = structuralScore(stats) + patternScore(value) - languagePenalty(value, stats);
|
|
130
|
+
return score >= FLAG_SCORE_THRESHOLD;
|
|
131
|
+
}));
|
|
235
132
|
}
|
|
236
133
|
//# sourceMappingURL=no-commented-out-code.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-commented-out-code.js","sourceRoot":"","sources":["../../src/rules/no-commented-out-code.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;
|
|
1
|
+
{"version":3,"file":"no-commented-out-code.js","sourceRoot":"","sources":["../../src/rules/no-commented-out-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pascal-case-types.d.ts","sourceRoot":"","sources":["../../src/rules/pascal-case-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pascal-case-types.d.ts","sourceRoot":"","sources":["../../src/rules/pascal-case-types.ts"],"names":[],"mappings":"AA6EA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAS1D;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAWzC,CAAC"}
|
|
@@ -1,93 +1,39 @@
|
|
|
1
1
|
/* -------------------------------------------------------------------------- */
|
|
2
2
|
/* PascalCase naming helpers for type-like declarations. */
|
|
3
3
|
/* -------------------------------------------------------------------------- */
|
|
4
|
+
import { Array, Match, pipe } from 'effect';
|
|
4
5
|
import { CHAR_CLASS, CLS_LOWER, CLS_UPPER } from './char-class.js';
|
|
5
6
|
const CHAR_CODE_UNDERSCORE = 95;
|
|
6
7
|
const isUp = (code) => (CHAR_CLASS[code] & CLS_UPPER) !== 0;
|
|
7
8
|
const isLo = (code) => (CHAR_CLASS[code] & CLS_LOWER) !== 0;
|
|
8
9
|
const isLt = (code) => (CHAR_CLASS[code] & (CLS_UPPER | CLS_LOWER)) !== 0;
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
return false;
|
|
16
|
-
};
|
|
17
|
-
const alphaLetterCount = (name) => {
|
|
18
|
-
let count = 0;
|
|
19
|
-
for (let idx = 0; idx < name.length; idx++) {
|
|
20
|
-
if (isLt(name.charCodeAt(idx))) {
|
|
21
|
-
count++;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return count;
|
|
25
|
-
};
|
|
26
|
-
const nextSegmentStart = (name, start) => {
|
|
27
|
-
let segmentStart = start;
|
|
28
|
-
while (segmentStart < name.length && name.charCodeAt(segmentStart) === CHAR_CODE_UNDERSCORE) {
|
|
29
|
-
segmentStart++;
|
|
30
|
-
}
|
|
31
|
-
return segmentStart;
|
|
32
|
-
};
|
|
33
|
-
const nextSegmentEnd = (name, start) => {
|
|
34
|
-
let segmentEnd = start;
|
|
35
|
-
while (segmentEnd < name.length && name.charCodeAt(segmentEnd) !== CHAR_CODE_UNDERSCORE) {
|
|
36
|
-
segmentEnd++;
|
|
37
|
-
}
|
|
38
|
-
return segmentEnd;
|
|
39
|
-
};
|
|
10
|
+
const nameChars = (name) => Array.fromIterable(name);
|
|
11
|
+
const hasLowercaseLetter = (name) => pipe(nameChars(name), Array.some((char) => isLo(char.charCodeAt(0))));
|
|
12
|
+
const alphaLetterCount = (name) => pipe(nameChars(name), Array.filter((char) => isLt(char.charCodeAt(0))), Array.length);
|
|
13
|
+
const nextSegmentStart = (name, start) => Match.value(start).pipe(Match.when((segmentStart) => segmentStart < name.length && name.charCodeAt(segmentStart) === CHAR_CODE_UNDERSCORE, (segmentStart) => nextSegmentStart(name, segmentStart + 1)), Match.orElse((segmentStart) => segmentStart));
|
|
14
|
+
const nextSegmentEnd = (name, start) => Match.value(start).pipe(Match.when((segmentEnd) => segmentEnd < name.length && name.charCodeAt(segmentEnd) !== CHAR_CODE_UNDERSCORE, (segmentEnd) => nextSegmentEnd(name, segmentEnd + 1)), Match.orElse((segmentEnd) => segmentEnd));
|
|
40
15
|
const pascalSegment = (name, start, end) => name.charAt(start).toUpperCase() + name.slice(start + 1, end).toLowerCase();
|
|
41
16
|
const appendPascalSegments = (name, result, start) => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
const segEnd = nextSegmentEnd(name, segStart);
|
|
50
|
-
output += pascalSegment(name, segStart, segEnd);
|
|
51
|
-
segStart = segEnd + 1;
|
|
52
|
-
}
|
|
53
|
-
return output;
|
|
17
|
+
const segmentStart = nextSegmentStart(name, start);
|
|
18
|
+
return Match.value(segmentStart).pipe(Match.when((normalizedSegmentStart) => normalizedSegmentStart >= name.length, () => result), Match.orElse((normalizedSegmentStart) => {
|
|
19
|
+
const segmentEnd = nextSegmentEnd(name, normalizedSegmentStart);
|
|
20
|
+
const nextResult = result + pascalSegment(name, normalizedSegmentStart, segmentEnd);
|
|
21
|
+
return appendPascalSegments(name, nextResult, segmentEnd + 1);
|
|
22
|
+
}));
|
|
54
23
|
};
|
|
55
|
-
const underscoreNameToPascalCase = (name) => {
|
|
56
|
-
const start = nextSegmentStart(name, 0);
|
|
57
|
-
if (start >= name.length) {
|
|
58
|
-
return '';
|
|
59
|
-
}
|
|
24
|
+
const underscoreNameToPascalCase = (name) => Match.value(nextSegmentStart(name, 0)).pipe(Match.when((start) => start >= name.length, () => ''), Match.orElse((start) => {
|
|
60
25
|
const end = nextSegmentEnd(name, start);
|
|
61
26
|
return appendPascalSegments(name, pascalSegment(name, start, end), end + 1);
|
|
62
|
-
};
|
|
27
|
+
}));
|
|
63
28
|
/**
|
|
64
29
|
* Check if a name follows PascalCase convention.
|
|
65
30
|
*/
|
|
66
31
|
export default function isPascalCase(name) {
|
|
67
32
|
const len = name.length;
|
|
68
|
-
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
if (!isUp(name.charCodeAt(0))) {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
if (name.includes('_')) {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
// Must not be entirely uppercase (that's the constant convention).
|
|
78
|
-
// Digits are fine — only check alphabetic characters.
|
|
79
|
-
return hasLowercaseLetter(name) || alphaLetterCount(name) <= 1;
|
|
33
|
+
return Match.value(name).pipe(Match.when((value) => len === 0 || !isUp(value.charCodeAt(0)) || value.includes('_'), () => false), Match.orElse((value) => hasLowercaseLetter(value) || alphaLetterCount(value) <= 1));
|
|
80
34
|
}
|
|
81
35
|
/**
|
|
82
36
|
* Convert a name to PascalCase.
|
|
83
37
|
*/
|
|
84
|
-
export const toPascalCase = (name) =>
|
|
85
|
-
if (name.length === 0) {
|
|
86
|
-
return '';
|
|
87
|
-
}
|
|
88
|
-
if (name.includes('_')) {
|
|
89
|
-
return underscoreNameToPascalCase(name);
|
|
90
|
-
}
|
|
91
|
-
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
92
|
-
};
|
|
38
|
+
export const toPascalCase = (name) => Match.value(name).pipe(Match.when((value) => value.length === 0, () => ''), Match.when((value) => value.includes('_'), (value) => underscoreNameToPascalCase(value)), Match.orElse((value) => value.charAt(0).toUpperCase() + value.slice(1)));
|
|
93
39
|
//# sourceMappingURL=pascal-case-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pascal-case-types.js","sourceRoot":"","sources":["../../src/rules/pascal-case-types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;AAE3F,MAAM,
|
|
1
|
+
{"version":3,"file":"pascal-case-types.js","sourceRoot":"","sources":["../../src/rules/pascal-case-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-commented-out-code-rule.d.ts","sourceRoot":"","sources":["../../src/rules/plugin-commented-out-code-rule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-commented-out-code-rule.d.ts","sourceRoot":"","sources":["../../src/rules/plugin-commented-out-code-rule.ts"],"names":[],"mappings":"AAQA,UAAU,GAAG;IACX,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,KAAK;IACb,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;CAC3C;AAED,KAAK,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAC;AAEzC,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,OAAO;IACf,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA0PD,QAAA,MAAM,sBAAsB;wBACN,OAAO;sBAET,MAAM,GAAG,IAAI;;;;;;;sBAFX,OAAO;sBAET,MAAM,GAAG,IAAI;;CAgB/B,CAAC;AAEH,eAAe,sBAAsB,CAAC"}
|