@trebired/code-discipline 4.10.1 → 4.10.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 +6 -0
- package/README.md +7 -3
- package/dist/checks/rules/comments/python.d.ts +4 -0
- package/dist/checks/rules/comments/python.d.ts.map +1 -0
- package/dist/checks/rules/comments/python.js +68 -0
- package/dist/checks/rules/comments/python.js.map +1 -0
- package/dist/checks/rules/comments/quoted.d.ts +3 -0
- package/dist/checks/rules/comments/quoted.d.ts.map +1 -0
- package/dist/checks/rules/comments/quoted.js +16 -0
- package/dist/checks/rules/comments/quoted.js.map +1 -0
- package/dist/checks/rules/comments/ranges.d.ts.map +1 -1
- package/dist/checks/rules/comments/ranges.js +8 -15
- package/dist/checks/rules/comments/ranges.js.map +1 -1
- package/dist/checks/rules/comments/shell.d.ts +4 -0
- package/dist/checks/rules/comments/shell.d.ts.map +1 -0
- package/dist/checks/rules/comments/shell.js +93 -0
- package/dist/checks/rules/comments/shell.js.map +1 -0
- package/dist/checks/rules/max/function-lines.d.ts.map +1 -1
- package/dist/checks/rules/max/function-lines.js +15 -6
- package/dist/checks/rules/max/function-lines.js.map +1 -1
- package/dist/checks/rules/max/python.d.ts +11 -0
- package/dist/checks/rules/max/python.d.ts.map +1 -0
- package/dist/checks/rules/max/python.js +83 -0
- package/dist/checks/rules/max/python.js.map +1 -0
- package/dist/checks/rules/max/shell.d.ts +10 -0
- package/dist/checks/rules/max/shell.d.ts.map +1 -0
- package/dist/checks/rules/max/shell.js +90 -0
- package/dist/checks/rules/max/shell.js.map +1 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +1 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/languages.d.ts +3 -1
- package/dist/shared/languages.d.ts.map +1 -1
- package/dist/shared/languages.js +11 -3
- package/dist/shared/languages.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 +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ All notable changes to `@trebired/code-discipline` will be documented here.
|
|
|
4
4
|
|
|
5
5
|
This project follows semantic versioning once published.
|
|
6
6
|
|
|
7
|
+
## 4.10.2
|
|
8
|
+
|
|
9
|
+
- Added Python source support with comment-aware line counting, removable `#` comment detection, shebang/encoding-comment preservation, triple-string preservation, and indentation-based `maxFunctionLines` detection for `def` and `async def`.
|
|
10
|
+
- Added shell source support for `.sh`, `.bash`, and `.zsh` files, including shebang preservation, heredoc-aware `#` comment handling, and brace-style shell function detection for `maxFunctionLines`.
|
|
11
|
+
- Updated the Rust native backend comment scanner so native-backed runs understand Python and shell comments instead of only matching extensions in the TypeScript fallback.
|
|
12
|
+
|
|
7
13
|
## 4.10.1
|
|
8
14
|
|
|
9
15
|
- Refreshed package dependency ranges and lockfile state with `bun update` after the `.trebired/code-discipline` migration.
|
package/README.md
CHANGED
|
@@ -129,6 +129,8 @@ Unsafe cases stay unchanged and remain reported after the fix pass. The fixer in
|
|
|
129
129
|
|
|
130
130
|
Reports function-like declarations whose total span exceeds `max`.
|
|
131
131
|
|
|
132
|
+
JavaScript and TypeScript use the TypeScript AST. Go and Rust use brace-aware function scanning. Python uses indentation-aware `def` and `async def` spans. Shell files with `.sh`, `.bash`, or `.zsh` use quote/comment-aware brace function spans.
|
|
133
|
+
|
|
132
134
|
#### `folderizeCompoundFiles`
|
|
133
135
|
|
|
134
136
|
Detects flat compound names such as `user_route.ts` and can move them into structural folders such as `user/route.ts`.
|
|
@@ -146,7 +148,7 @@ Validates and optionally fixes:
|
|
|
146
148
|
- `project-manifests` output drift in root `tsconfig.json` and `package.json#imports`
|
|
147
149
|
- `alias-map` output drift in `.trebired/code-discipline/imports/*.json` and the generated tsconfig projection
|
|
148
150
|
|
|
149
|
-
`imports` rewrites JavaScript, TypeScript, and SCSS module specifiers. Mixed-language repositories can still include Go and
|
|
151
|
+
`imports` rewrites JavaScript, TypeScript, and SCSS module specifiers. Mixed-language repositories can still include Go, Rust, Python, and extension-bearing shell files; those files are ignored by alias syncing instead of causing parser failures.
|
|
150
152
|
|
|
151
153
|
When `imports` sees a relative import that resolves nowhere, check mode reports it. Fix mode removes safe line-isolated static import/export declarations and Sass `@use`, `@forward`, or single-specifier quoted `@import` directives. Dynamic `import(...)`, comments, strings, CSS `url(...)`, and arbitrary CSS values are left alone.
|
|
152
154
|
|
|
@@ -191,9 +193,11 @@ The rule supports the same language families this package currently scans for di
|
|
|
191
193
|
- JavaScript and TypeScript
|
|
192
194
|
- Go
|
|
193
195
|
- Rust
|
|
196
|
+
- Python
|
|
197
|
+
- shell files with `.sh`, `.bash`, or `.zsh`
|
|
194
198
|
- SCSS and CSS
|
|
195
199
|
|
|
196
|
-
It keeps string, regex, rune, char, byte-string,
|
|
200
|
+
It keeps string, regex, rune, char, byte-string, raw-string, Python triple-string, shell quoted-string, and shell heredoc content intact while removing actual source comments. Python shebang and encoding comments are preserved, and shell shebangs are preserved. When a removed comment occupied the whole line, that empty line is removed in the same file rewrite.
|
|
197
201
|
|
|
198
202
|
You can preserve specific comments by matching plain substrings inside the comment text itself, without hardcoding any comment syntax:
|
|
199
203
|
|
|
@@ -535,7 +539,7 @@ formatters: {
|
|
|
535
539
|
|
|
536
540
|
`@trebired/code-discipline` can use a Rust native backend when a matching binary is available, with the TypeScript implementation as the fallback. This follows the same native-fast-path shape as `@trebired/logger`: package users keep the same CLI/API, while hot scanning and rewrite paths can move into Rust.
|
|
537
541
|
|
|
538
|
-
The current native backend accelerates source scanning, `max-file-lines`, common `max-function-lines` paths, `folderize-compound-files` checks, and `remove-comments`. If no binary is present, the package automatically uses the TypeScript fallback.
|
|
542
|
+
The current native backend accelerates source scanning, `max-file-lines`, common `max-function-lines` paths, `folderize-compound-files` checks, and `remove-comments`. Its comment scanner understands JavaScript, TypeScript, Go, Rust, Python, shell, SCSS, and CSS. If no binary is present, the package automatically uses the TypeScript fallback.
|
|
539
543
|
|
|
540
544
|
Useful native controls:
|
|
541
545
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/comments/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA4ChD,iBAAS,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAkBhE;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { scanEscapedQuotedLiteral } from "./quoted.js";
|
|
2
|
+
function scanHashLineComment(text, start) {
|
|
3
|
+
let index = start + 1;
|
|
4
|
+
while (index < text.length && text[index] !== "\n" && text[index] !== "\r")
|
|
5
|
+
index += 1;
|
|
6
|
+
return index;
|
|
7
|
+
}
|
|
8
|
+
function isPythonStringPrefix(value) {
|
|
9
|
+
return value.length === 1 && /[bfru]/iu.test(value);
|
|
10
|
+
}
|
|
11
|
+
function scanPythonStringLiteral(text, start) {
|
|
12
|
+
let quoteIndex = start;
|
|
13
|
+
if (text[start] !== "\"" && text[start] !== "'") {
|
|
14
|
+
if (!isPythonStringPrefix(text[start] ?? ""))
|
|
15
|
+
return null;
|
|
16
|
+
while (quoteIndex < text.length && isPythonStringPrefix(text[quoteIndex] ?? ""))
|
|
17
|
+
quoteIndex += 1;
|
|
18
|
+
if (quoteIndex - start > 3 || (text[quoteIndex] !== "\"" && text[quoteIndex] !== "'"))
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const quote = text[quoteIndex];
|
|
22
|
+
const triple = text.slice(quoteIndex, quoteIndex + 3) === quote.repeat(3);
|
|
23
|
+
if (!triple)
|
|
24
|
+
return scanEscapedQuotedLiteral(text, quoteIndex, quote);
|
|
25
|
+
let index = quoteIndex + 3;
|
|
26
|
+
while (index < text.length) {
|
|
27
|
+
if (text[index] === "\\") {
|
|
28
|
+
index += 2;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (text.slice(index, index + 3) === quote.repeat(3))
|
|
32
|
+
return index + 3;
|
|
33
|
+
index += 1;
|
|
34
|
+
}
|
|
35
|
+
return text.length;
|
|
36
|
+
}
|
|
37
|
+
function isProtectedPythonHashComment(text, start) {
|
|
38
|
+
if (start === 0 && text[start + 1] === "!")
|
|
39
|
+
return true;
|
|
40
|
+
const lineStart = text.lastIndexOf("\n", Math.max(0, start - 1)) + 1;
|
|
41
|
+
const lineNumber = text.slice(0, lineStart).split(/\n/u).length;
|
|
42
|
+
if (lineNumber > 2)
|
|
43
|
+
return false;
|
|
44
|
+
const lineEnd = scanHashLineComment(text, start);
|
|
45
|
+
return /\bcoding[:=]\s*[-\w.]+/u.test(text.slice(start, lineEnd));
|
|
46
|
+
}
|
|
47
|
+
function collectPythonCommentRanges(text) {
|
|
48
|
+
const ranges = [];
|
|
49
|
+
let index = 0;
|
|
50
|
+
while (index < text.length) {
|
|
51
|
+
const literalEnd = scanPythonStringLiteral(text, index);
|
|
52
|
+
if (literalEnd != null) {
|
|
53
|
+
index = literalEnd;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (text[index] === "#") {
|
|
57
|
+
const end = scanHashLineComment(text, index);
|
|
58
|
+
if (!isProtectedPythonHashComment(text, index))
|
|
59
|
+
ranges.push({ start: index, end, kind: "line" });
|
|
60
|
+
index = end;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
index += 1;
|
|
64
|
+
}
|
|
65
|
+
return ranges;
|
|
66
|
+
}
|
|
67
|
+
export { collectPythonCommentRanges };
|
|
68
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/python.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quoted.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/comments/quoted.ts"],"names":[],"mappings":"AAAA,iBAAS,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,MAAM,CAYxF;AAED,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function scanEscapedQuotedLiteral(text, start, quote) {
|
|
2
|
+
let index = start + 1;
|
|
3
|
+
while (index < text.length) {
|
|
4
|
+
const char = text[index];
|
|
5
|
+
if (char === "\\") {
|
|
6
|
+
index += 2;
|
|
7
|
+
continue;
|
|
8
|
+
}
|
|
9
|
+
index += 1;
|
|
10
|
+
if (char === quote)
|
|
11
|
+
return index;
|
|
12
|
+
}
|
|
13
|
+
return text.length;
|
|
14
|
+
}
|
|
15
|
+
export { scanEscapedQuotedLiteral };
|
|
16
|
+
//# sourceMappingURL=quoted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quoted.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/quoted.ts"],"names":[],"mappings":"AAAA,SAAS,wBAAwB,CAAC,IAAY,EAAE,KAAa,EAAE,KAAiB;IAC9E,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranges.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/comments/ranges.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ranges.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/comments/ranges.ts"],"names":[],"mappings":"AAcA,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpC,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AA2NF,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAQ7E;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
-
import { isGoExtension, isRustExtension, isStyleExtension, isTypeScriptFamilyExtension } from "../../../shared/languages.js";
|
|
2
|
+
import { isGoExtension, isPythonExtension, isRustExtension, isShellExtension, isStyleExtension, isTypeScriptFamilyExtension, } from "../../../shared/languages.js";
|
|
3
|
+
import { collectPythonCommentRanges } from "./python.js";
|
|
4
|
+
import { scanEscapedQuotedLiteral } from "./quoted.js";
|
|
5
|
+
import { collectShellCommentRanges } from "./shell.js";
|
|
3
6
|
function collectTypeScriptCommentRanges(text, extension) {
|
|
4
7
|
const languageVariant = extension === ".jsx" || extension === ".tsx"
|
|
5
8
|
? ts.LanguageVariant.JSX
|
|
@@ -18,20 +21,6 @@ function collectTypeScriptCommentRanges(text, extension) {
|
|
|
18
21
|
}
|
|
19
22
|
return ranges;
|
|
20
23
|
}
|
|
21
|
-
function scanEscapedQuotedLiteral(text, start, quote) {
|
|
22
|
-
let index = start + 1;
|
|
23
|
-
while (index < text.length) {
|
|
24
|
-
const char = text[index];
|
|
25
|
-
if (char === "\\") {
|
|
26
|
-
index += 2;
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
index += 1;
|
|
30
|
-
if (char === quote)
|
|
31
|
-
return index;
|
|
32
|
-
}
|
|
33
|
-
return text.length;
|
|
34
|
-
}
|
|
35
24
|
function scanBacktickLiteral(text, start) {
|
|
36
25
|
let index = start + 1;
|
|
37
26
|
while (index < text.length) {
|
|
@@ -204,6 +193,10 @@ function collectCommentRanges(text, extension) {
|
|
|
204
193
|
return collectGoCommentRanges(text);
|
|
205
194
|
if (isRustExtension(extension))
|
|
206
195
|
return collectRustCommentRanges(text);
|
|
196
|
+
if (isPythonExtension(extension))
|
|
197
|
+
return collectPythonCommentRanges(text);
|
|
198
|
+
if (isShellExtension(extension))
|
|
199
|
+
return collectShellCommentRanges(text);
|
|
207
200
|
if (isStyleExtension(extension))
|
|
208
201
|
return collectGoCommentRanges(text);
|
|
209
202
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranges.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/ranges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"ranges.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/ranges.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/comments/shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgEhD,iBAAS,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAsB/D;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
function isShellCommentBoundary(line, index) {
|
|
2
|
+
if (index === 0)
|
|
3
|
+
return true;
|
|
4
|
+
return /[\s;&|(){}]/u.test(line[index - 1] ?? "");
|
|
5
|
+
}
|
|
6
|
+
function shellCommentStart(line) {
|
|
7
|
+
let single = false;
|
|
8
|
+
let double = false;
|
|
9
|
+
let backtick = false;
|
|
10
|
+
let escaped = false;
|
|
11
|
+
for (let index = 0; index < line.length; index += 1) {
|
|
12
|
+
const char = line[index] ?? "";
|
|
13
|
+
if (escaped) {
|
|
14
|
+
escaped = false;
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
if (!single && char === "\\") {
|
|
18
|
+
escaped = true;
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (!double && !backtick && char === "'")
|
|
22
|
+
single = !single;
|
|
23
|
+
else if (!single && !backtick && char === "\"")
|
|
24
|
+
double = !double;
|
|
25
|
+
else if (!single && char === "`")
|
|
26
|
+
backtick = !backtick;
|
|
27
|
+
else if (!single && !double && !backtick && char === "#" && isShellCommentBoundary(line, index))
|
|
28
|
+
return index;
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
function parseShellHeredocWord(line, start, limit) {
|
|
33
|
+
const quote = line[start];
|
|
34
|
+
if (quote === "\"" || quote === "'") {
|
|
35
|
+
const end = line.indexOf(quote, start + 1);
|
|
36
|
+
return end > start && end <= limit ? line.slice(start + 1, end) : "";
|
|
37
|
+
}
|
|
38
|
+
let end = start;
|
|
39
|
+
while (end < limit && !/[\s;&|()<>]/u.test(line[end] ?? ""))
|
|
40
|
+
end += 1;
|
|
41
|
+
return line.slice(start, end);
|
|
42
|
+
}
|
|
43
|
+
function shellHeredocDelimiter(line, limit) {
|
|
44
|
+
let single = false;
|
|
45
|
+
let double = false;
|
|
46
|
+
for (let index = 0; index < limit - 1; index += 1) {
|
|
47
|
+
const char = line[index] ?? "";
|
|
48
|
+
if (!double && char === "'")
|
|
49
|
+
single = !single;
|
|
50
|
+
else if (!single && char === "\"")
|
|
51
|
+
double = !double;
|
|
52
|
+
if (single || double || char !== "<" || line[index + 1] !== "<")
|
|
53
|
+
continue;
|
|
54
|
+
let cursor = index + 2;
|
|
55
|
+
const stripTabs = line[cursor] === "-";
|
|
56
|
+
if (stripTabs)
|
|
57
|
+
cursor += 1;
|
|
58
|
+
while (cursor < limit && /\s/u.test(line[cursor] ?? ""))
|
|
59
|
+
cursor += 1;
|
|
60
|
+
const delimiter = parseShellHeredocWord(line, cursor, limit);
|
|
61
|
+
if (delimiter)
|
|
62
|
+
return { delimiter, stripTabs };
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
function collectShellCommentRanges(text) {
|
|
67
|
+
const ranges = [];
|
|
68
|
+
let lineStart = 0;
|
|
69
|
+
let heredoc = null;
|
|
70
|
+
while (lineStart <= text.length) {
|
|
71
|
+
const newline = text.indexOf("\n", lineStart);
|
|
72
|
+
const contentEnd = newline > 0 && text[newline - 1] === "\r" ? newline - 1 : newline < 0 ? text.length : newline;
|
|
73
|
+
const line = text.slice(lineStart, contentEnd);
|
|
74
|
+
if (heredoc) {
|
|
75
|
+
if ((heredoc.stripTabs ? line.replace(/^\t+/u, "") : line).trimEnd() === heredoc.delimiter)
|
|
76
|
+
heredoc = null;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const commentStart = shellCommentStart(line);
|
|
80
|
+
const limit = commentStart ?? line.length;
|
|
81
|
+
if (!(lineStart === 0 && line.startsWith("#!")) && commentStart != null) {
|
|
82
|
+
ranges.push({ start: lineStart + commentStart, end: contentEnd, kind: "line" });
|
|
83
|
+
}
|
|
84
|
+
heredoc = shellHeredocDelimiter(line, limit);
|
|
85
|
+
}
|
|
86
|
+
if (newline < 0)
|
|
87
|
+
break;
|
|
88
|
+
lineStart = newline + 1;
|
|
89
|
+
}
|
|
90
|
+
return ranges;
|
|
91
|
+
}
|
|
92
|
+
export { collectShellCommentRanges };
|
|
93
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-lines.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/function-lines.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"function-lines.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/function-lines.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAWvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AA+I7D,iBAAe,uBAAuB,CACpC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAgFpC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -3,10 +3,12 @@ import path from "node:path";
|
|
|
3
3
|
import ts from "typescript";
|
|
4
4
|
import { loadNativeBinding } from "../../../native/native.js";
|
|
5
5
|
import { parseSource } from "../../../imports/module-specifiers.js";
|
|
6
|
-
import { isGoExtension, isRustExtension, isTypeScriptFamilyExtension, supportsMaxFunctionLines } from "../../../shared/languages.js";
|
|
6
|
+
import { isGoExtension, isPythonExtension, isRustExtension, isShellExtension, isTypeScriptFamilyExtension, supportsMaxFunctionLines, } from "../../../shared/languages.js";
|
|
7
7
|
import { createRuleProgress, emitRuleChunk, emitRuleCompleted } from "../../progress.js";
|
|
8
8
|
import { getEndLine, getStartLine, isFunctionLikeWithBody, resolveFunctionKind, resolveFunctionName } from "../typescript-functions.js";
|
|
9
9
|
import { countCodeLinesInRange, maskCommentsForLineCounting } from "./code-lines.js";
|
|
10
|
+
import { collectPythonFunctionDescriptors } from "./python.js";
|
|
11
|
+
import { collectShellFunctionDescriptors } from "./shell.js";
|
|
10
12
|
import { stripCommentsAndStrings } from "./strip.js";
|
|
11
13
|
function describeLineLimitedFunction(node, sourceFile) {
|
|
12
14
|
const startLine = getStartLine(sourceFile, node);
|
|
@@ -101,6 +103,17 @@ function collectBlockFunctionDescriptors(text, extension) {
|
|
|
101
103
|
}
|
|
102
104
|
return descriptors;
|
|
103
105
|
}
|
|
106
|
+
function collectLanguageFunctionDescriptors(text, extension, filePath) {
|
|
107
|
+
if (isTypeScriptFamilyExtension(extension))
|
|
108
|
+
return collectTypeScriptFunctionDescriptors(parseSource(text, filePath));
|
|
109
|
+
if (isGoExtension(extension) || isRustExtension(extension))
|
|
110
|
+
return collectBlockFunctionDescriptors(text, extension);
|
|
111
|
+
if (isPythonExtension(extension))
|
|
112
|
+
return collectPythonFunctionDescriptors(text);
|
|
113
|
+
if (isShellExtension(extension))
|
|
114
|
+
return collectShellFunctionDescriptors(text);
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
104
117
|
async function runMaxFunctionLinesRule(sourceFiles, options) {
|
|
105
118
|
if (!options.rules.maxFunctionLines)
|
|
106
119
|
return [];
|
|
@@ -131,11 +144,7 @@ async function runMaxFunctionLinesRule(sourceFiles, options) {
|
|
|
131
144
|
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
132
145
|
const extension = path.extname(file.absolutePath).toLowerCase();
|
|
133
146
|
const maskedText = maskCommentsForLineCounting(text, extension);
|
|
134
|
-
const functions =
|
|
135
|
-
? collectTypeScriptFunctionDescriptors(parseSource(text, file.absolutePath))
|
|
136
|
-
: (isGoExtension(extension) || isRustExtension(extension))
|
|
137
|
-
? collectBlockFunctionDescriptors(text, extension)
|
|
138
|
-
: [];
|
|
147
|
+
const functions = collectLanguageFunctionDescriptors(text, extension, file.absolutePath);
|
|
139
148
|
for (const descriptor of functions) {
|
|
140
149
|
const codeLineCount = countCodeLinesInRange(maskedText, descriptor.startLine, descriptor.endLine);
|
|
141
150
|
const physicalLineCount = descriptor.lineCount;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-lines.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/function-lines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"function-lines.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/function-lines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3H,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAuBrD,SAAS,2BAA2B,CAAC,IAAgC,EAAE,UAAyB;IAC9F,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAC/B,SAAS;QACT,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC;QAC3C,SAAS;QACT,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAAC,UAAyB;IACrE,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,SAAS,KAAK,CAAC,IAAa;QAC1B,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACjE,IAAI,UAAU,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,KAAK,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;QAClC,IAAI,SAAS,KAAK,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,0BAA0B;IACjC,OAAO;QACL,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,CAAC;KACb,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,OAA6B,EAAE,OAAe;IACnF,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACvD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CAAC,IAAY,EAAE,SAAiB;IACtE,MAAM,WAAW,GAAyB,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,kBAAkB,GAAG,IAAI;QAC7B,CAAC,CAAC,+BAA+B;QACjC,CAAC,CAAC,6EAA6E,CAAC;IAClF,MAAM,iBAAiB,GAAG,IAAI;QAC5B,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,wBAAwB,CAAC;IAC7B,IAAI,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAE3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YACtB,OAAO,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;YACzE,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAClD,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvF,SAAS;QACX,CAAC;QAED,OAAO,CAAC,UAAU,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC;YAAE,SAAS;QAErC,WAAW,CAAC,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,GAAG,0BAA0B,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,kCAAkC,CAAC,IAAY,EAAE,SAAiB,EAAE,QAAgB;IAC3F,IAAI,2BAA2B,CAAC,SAAS,CAAC;QAAE,OAAO,oCAAoC,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrH,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,+BAA+B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpH,IAAI,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,gCAAgC,CAAC,IAAI,CAAC,CAAC;IAChF,IAAI,gBAAgB,CAAC,SAAS,CAAC;QAAE,OAAO,+BAA+B,CAAC,IAAI,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,WAAgC,EAChC,OAA6C;IAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB;QAAE,OAAO,EAAE,CAAC;IAE/C,MAAM,UAAU,GAA8B,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,QAAQ,EAAE,OAAO,CAAC,gBAAgB;QAClC,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE,WAAW,CAAC,MAAM;KAC/B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC;YACjF,WAAW;YACX,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG;YACvC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAiC,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAC5C,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,YAAY;YAAE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrF,CAAC;IAED,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,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3F,aAAa,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACtD,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAChE,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,kCAAkC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzF,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE,CAAC;YACnC,MAAM,aAAa,GAAG,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YAClG,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC;YAC/C,IAAI,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;gBACvD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,oBAAoB;oBAC1B,GAAG,EAAE,KAAK;oBACV,QAAQ,EAAE,IAAI,CAAC,uBAAuB;oBACtC,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,QAAQ,aAAa,mCAAmC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE;oBAC1I,OAAO,EAAE;wBACP,YAAY,EAAE,UAAU,CAAC,IAAI;wBAC7B,YAAY,EAAE,UAAU,CAAC,IAAI;wBAC7B,SAAS,EAAE,aAAa;wBACxB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG;wBACvC,SAAS,EAAE,UAAU,CAAC,SAAS;wBAC/B,OAAO,EAAE,UAAU,CAAC,OAAO;qBAC5B;iBACF,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IAAI,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;gBAC3D,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,oBAAoB;oBAC1B,GAAG,EAAE,KAAK;oBACV,QAAQ,EAAE,IAAI,CAAC,uBAAuB;oBACtC,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,QAAQ,iBAAiB,6BAA6B,aAAa,yCAAyC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE;oBAC9L,OAAO,EAAE;wBACP,YAAY,EAAE,UAAU,CAAC,IAAI;wBAC7B,YAAY,EAAE,UAAU,CAAC,IAAI;wBAC7B,SAAS,EAAE,iBAAiB;wBAC5B,aAAa;wBACb,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG;wBACvC,SAAS,EAAE,UAAU,CAAC,SAAS;wBAC/B,OAAO,EAAE,UAAU,CAAC,OAAO;qBAC5B;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,aAAa,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type FunctionDescriptor = {
|
|
2
|
+
kind: string;
|
|
3
|
+
lineCount: number;
|
|
4
|
+
name: string;
|
|
5
|
+
startLine: number;
|
|
6
|
+
endLine: number;
|
|
7
|
+
};
|
|
8
|
+
declare function collectPythonFunctionDescriptors(text: string): FunctionDescriptor[];
|
|
9
|
+
export { collectPythonFunctionDescriptors };
|
|
10
|
+
export type { FunctionDescriptor };
|
|
11
|
+
//# sourceMappingURL=python.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/python.ts"],"names":[],"mappings":"AAAA,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AA4EF,iBAAS,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAwB5E;AAED,OAAO,EAAE,gCAAgC,EAAE,CAAC;AAC5C,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
function measurePythonIndent(line) {
|
|
2
|
+
let indent = 0;
|
|
3
|
+
for (const char of line) {
|
|
4
|
+
if (char === " ")
|
|
5
|
+
indent += 1;
|
|
6
|
+
else if (char === "\t")
|
|
7
|
+
indent += 8 - indent % 8;
|
|
8
|
+
else
|
|
9
|
+
break;
|
|
10
|
+
}
|
|
11
|
+
return indent;
|
|
12
|
+
}
|
|
13
|
+
function findPythonFunctionStart(line) {
|
|
14
|
+
const match = /^(\s*)(async\s+def|def)\s+([A-Za-z_]\w*)\s*\(/u.exec(line);
|
|
15
|
+
if (!match)
|
|
16
|
+
return null;
|
|
17
|
+
return {
|
|
18
|
+
indent: measurePythonIndent(match[1] ?? ""),
|
|
19
|
+
kind: match[2] === "def" ? "function" : "async-function",
|
|
20
|
+
name: match[3] ?? "anonymous",
|
|
21
|
+
startLine: 0,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function isPythonMeaningfulLine(line) {
|
|
25
|
+
const trimmed = line.trim();
|
|
26
|
+
return trimmed.length > 0 && !trimmed.startsWith("#");
|
|
27
|
+
}
|
|
28
|
+
function closePythonFunctions(stack, descriptors, currentIndent, endLine) {
|
|
29
|
+
while (stack.length > 0 && currentIndent <= stack[stack.length - 1].indent) {
|
|
30
|
+
const pending = stack.pop();
|
|
31
|
+
const resolvedEnd = Math.max(pending.startLine, endLine);
|
|
32
|
+
descriptors.push({
|
|
33
|
+
kind: pending.kind,
|
|
34
|
+
lineCount: resolvedEnd - pending.startLine + 1,
|
|
35
|
+
name: pending.name,
|
|
36
|
+
startLine: pending.startLine,
|
|
37
|
+
endLine: resolvedEnd,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function updatePythonTripleState(line, state) {
|
|
42
|
+
for (let index = 0; index < line.length; index += 1) {
|
|
43
|
+
const triple = line.slice(index, index + 3);
|
|
44
|
+
if (state.quote) {
|
|
45
|
+
if (triple === state.quote) {
|
|
46
|
+
state.quote = null;
|
|
47
|
+
index += 2;
|
|
48
|
+
}
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (line[index] === "#")
|
|
52
|
+
return;
|
|
53
|
+
if (triple === "\"\"\"" || triple === "'''") {
|
|
54
|
+
state.quote = triple;
|
|
55
|
+
index += 2;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function collectPythonFunctionDescriptors(text) {
|
|
60
|
+
const descriptors = [];
|
|
61
|
+
const stack = [];
|
|
62
|
+
const state = { quote: null };
|
|
63
|
+
const lines = text.split(/\r?\n/u);
|
|
64
|
+
let lastMeaningfulLine = 0;
|
|
65
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
66
|
+
const line = lines[index] ?? "";
|
|
67
|
+
const insideTripleString = state.quote !== null;
|
|
68
|
+
const functionStart = insideTripleString ? null : findPythonFunctionStart(line);
|
|
69
|
+
if (!insideTripleString && isPythonMeaningfulLine(line)) {
|
|
70
|
+
const indent = measurePythonIndent(line);
|
|
71
|
+
closePythonFunctions(stack, descriptors, indent, Math.max(lastMeaningfulLine, index));
|
|
72
|
+
lastMeaningfulLine = index + 1;
|
|
73
|
+
}
|
|
74
|
+
if (functionStart) {
|
|
75
|
+
stack.push({ ...functionStart, startLine: index + 1 });
|
|
76
|
+
}
|
|
77
|
+
updatePythonTripleState(line, state);
|
|
78
|
+
}
|
|
79
|
+
closePythonFunctions(stack, descriptors, -1, lastMeaningfulLine || lines.length);
|
|
80
|
+
return descriptors;
|
|
81
|
+
}
|
|
82
|
+
export { collectPythonFunctionDescriptors };
|
|
83
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/python.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type FunctionDescriptor = {
|
|
2
|
+
kind: string;
|
|
3
|
+
lineCount: number;
|
|
4
|
+
name: string;
|
|
5
|
+
startLine: number;
|
|
6
|
+
endLine: number;
|
|
7
|
+
};
|
|
8
|
+
declare function collectShellFunctionDescriptors(text: string): FunctionDescriptor[];
|
|
9
|
+
export { collectShellFunctionDescriptors };
|
|
10
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/shell.ts"],"names":[],"mappings":"AAAA,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AA2EF,iBAAS,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAmB3E;AAED,OAAO,EAAE,+BAA+B,EAAE,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
function stripShellStringsAndComments(line) {
|
|
2
|
+
let result = "";
|
|
3
|
+
let single = false;
|
|
4
|
+
let double = false;
|
|
5
|
+
let backtick = false;
|
|
6
|
+
let escaped = false;
|
|
7
|
+
for (let index = 0; index < line.length; index += 1) {
|
|
8
|
+
const char = line[index] ?? "";
|
|
9
|
+
if (escaped) {
|
|
10
|
+
escaped = false;
|
|
11
|
+
result += " ";
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
if (!single && char === "\\") {
|
|
15
|
+
escaped = true;
|
|
16
|
+
result += " ";
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (!double && !backtick && char === "'")
|
|
20
|
+
single = !single;
|
|
21
|
+
else if (!single && !backtick && char === "\"")
|
|
22
|
+
double = !double;
|
|
23
|
+
else if (!single && char === "`")
|
|
24
|
+
backtick = !backtick;
|
|
25
|
+
if (!single && !double && !backtick && char === "#" && hasShellCommentPrefix(line, index))
|
|
26
|
+
break;
|
|
27
|
+
result += single || double || backtick ? " " : char;
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
function hasShellCommentPrefix(line, index) {
|
|
32
|
+
const previous = index > 0 ? line.charCodeAt(index - 1) : 0;
|
|
33
|
+
return previous === 0
|
|
34
|
+
|| previous === 9
|
|
35
|
+
|| previous === 10
|
|
36
|
+
|| previous === 13
|
|
37
|
+
|| previous === 32
|
|
38
|
+
|| previous === 38
|
|
39
|
+
|| previous === 40
|
|
40
|
+
|| previous === 41
|
|
41
|
+
|| previous === 59
|
|
42
|
+
|| previous === 123
|
|
43
|
+
|| previous === 124
|
|
44
|
+
|| previous === 125;
|
|
45
|
+
}
|
|
46
|
+
function countShellBraceDelta(line) {
|
|
47
|
+
return Array.from(stripShellStringsAndComments(line)).reduce((sum, char) => {
|
|
48
|
+
if (char === "{")
|
|
49
|
+
return sum + 1;
|
|
50
|
+
if (char === "}")
|
|
51
|
+
return sum - 1;
|
|
52
|
+
return sum;
|
|
53
|
+
}, 0);
|
|
54
|
+
}
|
|
55
|
+
function findShellFunctionStart(line) {
|
|
56
|
+
const stripped = stripShellStringsAndComments(line);
|
|
57
|
+
const match = /^\s*(?:function\s+)?([A-Za-z_][\w-]*)\s*(?:\(\s*\))?\s*\{/u.exec(stripped);
|
|
58
|
+
return match?.[1] ?? null;
|
|
59
|
+
}
|
|
60
|
+
function createShellDescriptor(pending, endLine) {
|
|
61
|
+
return {
|
|
62
|
+
kind: "function",
|
|
63
|
+
lineCount: Math.max(1, endLine - pending.startLine + 1),
|
|
64
|
+
name: pending.name || "anonymous",
|
|
65
|
+
startLine: pending.startLine,
|
|
66
|
+
endLine,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function collectShellFunctionDescriptors(text) {
|
|
70
|
+
const descriptors = [];
|
|
71
|
+
const lines = text.split(/\r?\n/u);
|
|
72
|
+
let pending = null;
|
|
73
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
74
|
+
const line = lines[index] ?? "";
|
|
75
|
+
if (!pending) {
|
|
76
|
+
const name = findShellFunctionStart(line);
|
|
77
|
+
if (!name)
|
|
78
|
+
continue;
|
|
79
|
+
pending = { braceDepth: 0, name, startLine: index + 1 };
|
|
80
|
+
}
|
|
81
|
+
pending.braceDepth += countShellBraceDelta(line);
|
|
82
|
+
if (pending.braceDepth > 0)
|
|
83
|
+
continue;
|
|
84
|
+
descriptors.push(createShellDescriptor(pending, index + 1));
|
|
85
|
+
pending = null;
|
|
86
|
+
}
|
|
87
|
+
return descriptors;
|
|
88
|
+
}
|
|
89
|
+
export { collectShellFunctionDescriptors };
|
|
90
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/shell.ts"],"names":[],"mappings":"AAcA,SAAS,4BAA4B,CAAC,IAAY;IAChD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,GAAG,KAAK,CAAC;YAChB,MAAM,IAAI,GAAG,CAAC;YACd,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,IAAI,GAAG,CAAC;YACd,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG;YAAE,MAAM,GAAG,CAAC,MAAM,CAAC;aACtD,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,IAAI;YAAE,MAAM,GAAG,CAAC,MAAM,CAAC;aAC5D,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,GAAG;YAAE,QAAQ,GAAG,CAAC,QAAQ,CAAC;QACvD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC;YAAE,MAAM;QACjG,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAAa;IACxD,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,QAAQ,KAAK,CAAC;WAChB,QAAQ,KAAK,CAAC;WACd,QAAQ,KAAK,EAAE;WACf,QAAQ,KAAK,EAAE;WACf,QAAQ,KAAK,EAAE;WACf,QAAQ,KAAK,EAAE;WACf,QAAQ,KAAK,EAAE;WACf,QAAQ,KAAK,EAAE;WACf,QAAQ,KAAK,EAAE;WACf,QAAQ,KAAK,GAAG;WAChB,QAAQ,KAAK,GAAG;WAChB,QAAQ,KAAK,GAAG,CAAC;AACxB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACzE,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,4DAA4D,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1F,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA6B,EAAE,OAAe;IAC3E,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACvD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CAAC,IAAY;IACnD,MAAM,WAAW,GAAyB,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,OAAO,GAAgC,IAAI,CAAC;IAEhD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,OAAO,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,UAAU,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC;YAAE,SAAS;QACrC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,OAAO,EAAE,+BAA+B,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,mBAAmB,MAAM,CAAC;AAChC,QAAA,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,mBAAmB,MAAM,CAAC;AAChC,QAAA,MAAM,yBAAyB,UAA+H,CAAC;AAC/J,QAAA,MAAM,oBAAoB,UAAyE,CAAC;AACpG,QAAA,MAAM,oBAAoB,MAAM,CAAC;AACjC,QAAA,MAAM,sBAAsB,WAAW,CAAC;AACxC,QAAA,MAAM,2BAA2B,KAAK,CAAC;AACvC,QAAA,MAAM,gBAAgB,QAAQ,CAAC;AAC/B,QAAA,MAAM,sBAAsB,UAAS,CAAC;AACtC,QAAA,MAAM,2BAA2B,QAAQ,CAAC;AAC1C,QAAA,MAAM,0CAA0C,UAAa,CAAC;AAC9D,QAAA,MAAM,yBAAyB,QAAyB,CAAC;AACzD,QAAA,MAAM,4BAA4B,QAAe,CAAC;AAClD,QAAA,MAAM,qBAAqB,yCAAyC,CAAC;AACrE,QAAA,MAAM,iBAAiB,KAAK,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,0CAA0C,EAC1C,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,GAC7B,CAAC"}
|
package/dist/shared/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { buildPackageLogGroup, PACKAGE_NAME } from "./package-metadata.js";
|
|
2
2
|
const DEFAULT_SOURCE_ROOT = ".";
|
|
3
|
-
const DEFAULT_SOURCE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".mts", ".cts", ".cjs", ".go", ".rs", ".scss", ".css"];
|
|
3
|
+
const DEFAULT_SOURCE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".mts", ".cts", ".cjs", ".go", ".rs", ".py", ".sh", ".bash", ".zsh", ".scss", ".css"];
|
|
4
4
|
const DEFAULT_EXCLUDE_DIRS = [".git", "node_modules", "dist", ".vite", ".trebired/code-discipline"];
|
|
5
5
|
const DEFAULT_ALIAS_PREFIX = "#";
|
|
6
6
|
const DEFAULT_ALIAS_STRATEGY = "random";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/J,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC;AACpG,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,sBAAsB,GAAG,QAAQ,CAAC;AACxC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAC1C,MAAM,0CAA0C,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9D,MAAM,yBAAyB,GAAG,oBAAoB,EAAE,CAAC;AACzD,MAAM,4BAA4B,GAAG,YAAY,CAAC;AAClD,MAAM,qBAAqB,GAAG,sCAAsC,CAAC;AACrE,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,0CAA0C,EAC1C,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,GAC7B,CAAC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
declare function isTypeScriptFamilyExtension(value: string): boolean;
|
|
2
2
|
declare function isGoExtension(value: string): boolean;
|
|
3
|
+
declare function isPythonExtension(value: string): boolean;
|
|
3
4
|
declare function isRustExtension(value: string): boolean;
|
|
5
|
+
declare function isShellExtension(value: string): boolean;
|
|
4
6
|
declare function isScssExtension(value: string): boolean;
|
|
5
7
|
declare function isStyleExtension(value: string): boolean;
|
|
6
8
|
declare function supportsImports(value: string): boolean;
|
|
7
9
|
declare function supportsFolderizationFix(value: string): boolean;
|
|
8
10
|
declare function supportsMaxFunctionLines(value: string): boolean;
|
|
9
11
|
declare function supportsRemoveComments(value: string): boolean;
|
|
10
|
-
export { isGoExtension, isRustExtension, isScssExtension, isStyleExtension, isTypeScriptFamilyExtension, supportsFolderizationFix, supportsMaxFunctionLines, supportsRemoveComments, supportsImports, };
|
|
12
|
+
export { isGoExtension, isPythonExtension, isRustExtension, isShellExtension, isScssExtension, isStyleExtension, isTypeScriptFamilyExtension, supportsFolderizationFix, supportsMaxFunctionLines, supportsRemoveComments, supportsImports, };
|
|
11
13
|
//# sourceMappingURL=languages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../src/shared/languages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../src/shared/languages.ts"],"names":[],"mappings":"AAuBA,iBAAS,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,iBAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,GAChB,CAAC"}
|
package/dist/shared/languages.js
CHANGED
|
@@ -10,7 +10,9 @@ const TYPESCRIPT_FAMILY_EXTENSIONS = new Set([
|
|
|
10
10
|
".tsx",
|
|
11
11
|
]);
|
|
12
12
|
const GO_FAMILY_EXTENSIONS = new Set([".go"]);
|
|
13
|
+
const PYTHON_FAMILY_EXTENSIONS = new Set([".py"]);
|
|
13
14
|
const RUST_FAMILY_EXTENSIONS = new Set([".rs"]);
|
|
15
|
+
const SHELL_FAMILY_EXTENSIONS = new Set([".bash", ".sh", ".zsh"]);
|
|
14
16
|
const STYLE_FAMILY_EXTENSIONS = new Set([".scss", ".css"]);
|
|
15
17
|
function normalizeExtension(value) {
|
|
16
18
|
return value.startsWith(".") ? value.toLowerCase() : path.extname(value).toLowerCase();
|
|
@@ -21,9 +23,15 @@ function isTypeScriptFamilyExtension(value) {
|
|
|
21
23
|
function isGoExtension(value) {
|
|
22
24
|
return GO_FAMILY_EXTENSIONS.has(normalizeExtension(value));
|
|
23
25
|
}
|
|
26
|
+
function isPythonExtension(value) {
|
|
27
|
+
return PYTHON_FAMILY_EXTENSIONS.has(normalizeExtension(value));
|
|
28
|
+
}
|
|
24
29
|
function isRustExtension(value) {
|
|
25
30
|
return RUST_FAMILY_EXTENSIONS.has(normalizeExtension(value));
|
|
26
31
|
}
|
|
32
|
+
function isShellExtension(value) {
|
|
33
|
+
return SHELL_FAMILY_EXTENSIONS.has(normalizeExtension(value));
|
|
34
|
+
}
|
|
27
35
|
function isScssExtension(value) {
|
|
28
36
|
return normalizeExtension(value) === ".scss";
|
|
29
37
|
}
|
|
@@ -37,10 +45,10 @@ function supportsFolderizationFix(value) {
|
|
|
37
45
|
return supportsImports(value);
|
|
38
46
|
}
|
|
39
47
|
function supportsMaxFunctionLines(value) {
|
|
40
|
-
return isTypeScriptFamilyExtension(value) || isGoExtension(value) || isRustExtension(value);
|
|
48
|
+
return isTypeScriptFamilyExtension(value) || isGoExtension(value) || isRustExtension(value) || isPythonExtension(value) || isShellExtension(value);
|
|
41
49
|
}
|
|
42
50
|
function supportsRemoveComments(value) {
|
|
43
|
-
return isTypeScriptFamilyExtension(value) || isGoExtension(value) || isRustExtension(value) || isStyleExtension(value);
|
|
51
|
+
return isTypeScriptFamilyExtension(value) || isGoExtension(value) || isRustExtension(value) || isPythonExtension(value) || isShellExtension(value) || isStyleExtension(value);
|
|
44
52
|
}
|
|
45
|
-
export { isGoExtension, isRustExtension, isScssExtension, isStyleExtension, isTypeScriptFamilyExtension, supportsFolderizationFix, supportsMaxFunctionLines, supportsRemoveComments, supportsImports, };
|
|
53
|
+
export { isGoExtension, isPythonExtension, isRustExtension, isShellExtension, isScssExtension, isStyleExtension, isTypeScriptFamilyExtension, supportsFolderizationFix, supportsMaxFunctionLines, supportsRemoveComments, supportsImports, };
|
|
46
54
|
//# sourceMappingURL=languages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/shared/languages.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3D,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACzF,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAa;IAChD,OAAO,4BAA4B,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,oBAAoB,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,sBAAsB,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC;AAC/C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,uBAAuB,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,2BAA2B,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,2BAA2B,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/shared/languages.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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trebired/code-discipline",
|
|
3
|
-
"version": "4.10.
|
|
3
|
+
"version": "4.10.2",
|
|
4
4
|
"description": "Configurable codebase discipline checks and rule-driven fixes for Bun projects.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -40,12 +40,13 @@
|
|
|
40
40
|
"demo": "bun run examples/dummy.ts",
|
|
41
41
|
"discipline": "bun node_modules/@trebired/code-discipline/dist/cli.js check",
|
|
42
42
|
"discipline:fix": "bun node_modules/@trebired/code-discipline/dist/cli.js fix",
|
|
43
|
-
"prepublishOnly": "bun run typecheck && bun run build && bun run verify:max-line-fixer && bun run verify:generated-artifacts",
|
|
43
|
+
"prepublishOnly": "bun run typecheck && bun run build && bun run verify:max-line-fixer && bun run verify:language-support && bun run verify:generated-artifacts",
|
|
44
44
|
"prepare:generated": "bun ./scripts/build/generated/tsconfig.mjs",
|
|
45
45
|
"publish:package": "bun run build:native:matrix && bun publish",
|
|
46
46
|
"publish:package:host": "bun run build:native && bun publish",
|
|
47
47
|
"typecheck": "bun run prepare:generated && tsc --noEmit",
|
|
48
48
|
"verify:generated-artifacts": "bun ./scripts/verify/generated/artifacts.mjs",
|
|
49
|
+
"verify:language-support": "bun ./scripts/verify/language/support.mjs",
|
|
49
50
|
"verify:max-line-fixer": "bun ./scripts/verify/max/line/fixer.mjs"
|
|
50
51
|
},
|
|
51
52
|
"dependencies": {
|