@trebired/code-discipline 4.2.0 → 4.2.1
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 +4 -0
- package/dist/checks/rules/max/characters-per-line.d.ts.map +1 -1
- package/dist/checks/rules/max/characters-per-line.js +49 -1
- package/dist/checks/rules/max/characters-per-line.js.map +1 -1
- package/native/darwin-arm64.node +0 -0
- package/native/darwin-x64.node +0 -0
- package/native/linux-arm64-gnu.node +0 -0
- package/native/linux-x64-gnu.node +0 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@trebired/code-discipline` will be documented here.
|
|
4
4
|
|
|
5
|
+
## 4.2.1
|
|
6
|
+
|
|
7
|
+
- Made `maxCharactersPerLine` ignore SVG files and inline JSX `<svg>...</svg>` regions while still reporting ordinary long lines.
|
|
8
|
+
|
|
5
9
|
## 4.2.0
|
|
6
10
|
|
|
7
11
|
- Changed the configured `minFileLines` default from `5` to `1`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"characters-per-line.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/characters-per-line.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"characters-per-line.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/characters-per-line.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AA8CnF,iBAAe,2BAA2B,CACxC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAqDpC;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -3,6 +3,39 @@ import { createRuleProgress, emitRuleChunk, emitRuleCompleted } from "../../prog
|
|
|
3
3
|
function countCharacters(line) {
|
|
4
4
|
return Array.from(line).length;
|
|
5
5
|
}
|
|
6
|
+
function isSvgFile(file) {
|
|
7
|
+
return file.extension.toLowerCase() === ".svg";
|
|
8
|
+
}
|
|
9
|
+
function canContainJsxSvg(file) {
|
|
10
|
+
return [".js", ".jsx", ".mjs", ".mts", ".ts", ".tsx"].includes(file.extension.toLowerCase());
|
|
11
|
+
}
|
|
12
|
+
function isLikelyJsxSvgStart(line, matchIndex) {
|
|
13
|
+
const before = line.slice(0, matchIndex).trimEnd();
|
|
14
|
+
const trimmed = line.trimStart();
|
|
15
|
+
if (trimmed.startsWith("//") || trimmed.startsWith("*"))
|
|
16
|
+
return false;
|
|
17
|
+
if (!before)
|
|
18
|
+
return true;
|
|
19
|
+
return /(?:return|[({\[<>=?:,])$/.test(before);
|
|
20
|
+
}
|
|
21
|
+
function countInlineSvgOpenTags(line) {
|
|
22
|
+
let count = 0;
|
|
23
|
+
const matcher = /<svg\b/gi;
|
|
24
|
+
let match;
|
|
25
|
+
while ((match = matcher.exec(line))) {
|
|
26
|
+
if (!isLikelyJsxSvgStart(line, match.index))
|
|
27
|
+
continue;
|
|
28
|
+
const tagEnd = line.indexOf(">", match.index);
|
|
29
|
+
const tagText = tagEnd === -1 ? line.slice(match.index) : line.slice(match.index, tagEnd + 1);
|
|
30
|
+
if (/\/\s*>$/.test(tagText))
|
|
31
|
+
continue;
|
|
32
|
+
count += 1;
|
|
33
|
+
}
|
|
34
|
+
return count;
|
|
35
|
+
}
|
|
36
|
+
function countInlineSvgCloseTags(line) {
|
|
37
|
+
return Array.from(line.matchAll(/<\/svg\s*>/gi)).length;
|
|
38
|
+
}
|
|
6
39
|
async function runMaxCharactersPerLineRule(sourceFiles, options) {
|
|
7
40
|
if (!options.rules.maxCharactersPerLine)
|
|
8
41
|
return [];
|
|
@@ -14,9 +47,24 @@ async function runMaxCharactersPerLineRule(sourceFiles, options) {
|
|
|
14
47
|
const violations = [];
|
|
15
48
|
for (let index = 0; index < sourceFiles.length; index += 1) {
|
|
16
49
|
const file = sourceFiles[index];
|
|
50
|
+
if (isSvgFile(file)) {
|
|
51
|
+
emitRuleChunk(progress, index + 1, violations.length);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
17
54
|
const lines = (await fs.readFile(file.absolutePath, "utf8")).split(/\r?\n/);
|
|
55
|
+
const trackInlineSvg = canContainJsxSvg(file);
|
|
56
|
+
let inlineSvgDepth = 0;
|
|
18
57
|
for (let lineIndex = 0; lineIndex < lines.length; lineIndex += 1) {
|
|
19
|
-
const
|
|
58
|
+
const line = lines[lineIndex] ?? "";
|
|
59
|
+
if (trackInlineSvg) {
|
|
60
|
+
const openTags = countInlineSvgOpenTags(line);
|
|
61
|
+
const closeTags = countInlineSvgCloseTags(line);
|
|
62
|
+
const isInlineSvgLine = inlineSvgDepth > 0 || openTags > 0;
|
|
63
|
+
inlineSvgDepth = Math.max(0, inlineSvgDepth + openTags - closeTags);
|
|
64
|
+
if (isInlineSvgLine)
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const characterCount = countCharacters(line);
|
|
20
68
|
if (characterCount <= options.rules.maxCharactersPerLine.max)
|
|
21
69
|
continue;
|
|
22
70
|
violations.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"characters-per-line.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/characters-per-line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAKlC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEzF,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,WAAgC,EAChC,OAA6C;IAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB;QAAE,OAAO,EAAE,CAAC;IAEnD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,QAAQ,EAAE,OAAO,CAAC,gBAAgB;QAClC,IAAI,EAAE,yBAAyB;QAC/B,UAAU,EAAE,WAAW,CAAC,MAAM;KAC/B,CAAC,CAAC;IACH,MAAM,UAAU,GAA8B,EAAE,CAAC;IAEjD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"characters-per-line.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/characters-per-line.ts"],"names":[],"mappings":"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"}
|
package/native/darwin-arm64.node
CHANGED
|
Binary file
|
package/native/darwin-x64.node
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED