@trebired/code-discipline 4.10.0 → 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.
Files changed (40) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +7 -3
  3. package/dist/checks/rules/comments/python.d.ts +4 -0
  4. package/dist/checks/rules/comments/python.d.ts.map +1 -0
  5. package/dist/checks/rules/comments/python.js +68 -0
  6. package/dist/checks/rules/comments/python.js.map +1 -0
  7. package/dist/checks/rules/comments/quoted.d.ts +3 -0
  8. package/dist/checks/rules/comments/quoted.d.ts.map +1 -0
  9. package/dist/checks/rules/comments/quoted.js +16 -0
  10. package/dist/checks/rules/comments/quoted.js.map +1 -0
  11. package/dist/checks/rules/comments/ranges.d.ts.map +1 -1
  12. package/dist/checks/rules/comments/ranges.js +8 -15
  13. package/dist/checks/rules/comments/ranges.js.map +1 -1
  14. package/dist/checks/rules/comments/shell.d.ts +4 -0
  15. package/dist/checks/rules/comments/shell.d.ts.map +1 -0
  16. package/dist/checks/rules/comments/shell.js +93 -0
  17. package/dist/checks/rules/comments/shell.js.map +1 -0
  18. package/dist/checks/rules/max/function-lines.d.ts.map +1 -1
  19. package/dist/checks/rules/max/function-lines.js +15 -6
  20. package/dist/checks/rules/max/function-lines.js.map +1 -1
  21. package/dist/checks/rules/max/python.d.ts +11 -0
  22. package/dist/checks/rules/max/python.d.ts.map +1 -0
  23. package/dist/checks/rules/max/python.js +83 -0
  24. package/dist/checks/rules/max/python.js.map +1 -0
  25. package/dist/checks/rules/max/shell.d.ts +10 -0
  26. package/dist/checks/rules/max/shell.d.ts.map +1 -0
  27. package/dist/checks/rules/max/shell.js +90 -0
  28. package/dist/checks/rules/max/shell.js.map +1 -0
  29. package/dist/shared/constants.d.ts.map +1 -1
  30. package/dist/shared/constants.js +1 -1
  31. package/dist/shared/constants.js.map +1 -1
  32. package/dist/shared/languages.d.ts +3 -1
  33. package/dist/shared/languages.d.ts.map +1 -1
  34. package/dist/shared/languages.js +11 -3
  35. package/dist/shared/languages.js.map +1 -1
  36. package/native/darwin-arm64.node +0 -0
  37. package/native/darwin-x64.node +0 -0
  38. package/native/linux-arm64-gnu.node +0 -0
  39. package/native/linux-x64-gnu.node +0 -0
  40. package/package.json +5 -4
package/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ 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
+
13
+ ## 4.10.1
14
+
15
+ - Refreshed package dependency ranges and lockfile state with `bun update` after the `.trebired/code-discipline` migration.
16
+
7
17
  ## 4.10.0
8
18
 
9
19
  - Changed automatic config discovery to `.trebired/code-discipline/config.ts` only; old `code-discipline.config.ts` and `.code-discipline/config.ts` files are no longer auto-discovered.
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 Rust; those files are ignored by alias syncing instead of causing parser failures.
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, and raw-string content intact while removing actual source comments. When a removed comment occupied the whole line, that empty line is removed in the same file rewrite.
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,4 @@
1
+ import type { CommentRange } from "./ranges.js";
2
+ declare function collectPythonCommentRanges(text: string): CommentRange[];
3
+ export { collectPythonCommentRanges };
4
+ //# sourceMappingURL=python.d.ts.map
@@ -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,3 @@
1
+ declare function scanEscapedQuotedLiteral(text: string, start: number, quote: "\"" | "'"): number;
2
+ export { scanEscapedQuotedLiteral };
3
+ //# sourceMappingURL=quoted.d.ts.map
@@ -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":"AAIA,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;AA4OF,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAM7E;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,CAAC"}
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":"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"}
1
+ {"version":3,"file":"ranges.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/ranges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAUvD,SAAS,8BAA8B,CAAC,IAAY,EAAE,SAAiB;IACrE,MAAM,eAAe,GAAG,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM;QAClE,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG;QACxB,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;IAChC,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACvF,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChG,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC,UAAU,CAAC,uBAAuB;YAC1D,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,UAAU,CAAC,sBAAsB;gBAC9C,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa;IACtD,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtB,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;YAAE,OAAO,KAAK,GAAG,CAAC,CAAC;QAC1C,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtB,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3E,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,MAAe;IACpE,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC7D,KAAK,IAAI,CAAC,CAAC;YACX,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnD,KAAK,IAAI,CAAC,CAAC;YACX,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAE7B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACjD,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAClD,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAClC,KAAK,GAAG,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACzC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACrC,KAAK,IAAI,CAAC,CAAC;IAEX,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,SAAS,IAAI,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtC,KAAK,IAAI,CAAC,CAAC;IAEX,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACzE,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAE,SAAiB;IAC1E,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa;IACtD,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtB,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtF,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACzB,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa;IACtD,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAE7C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACnD,KAAK,IAAI,CAAC,CAAC;QACX,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;QAC9D,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAED,OAAO,KAAK,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,YAAY,IAAI,IAAI;QAAE,OAAO,YAAY,CAAC;IAE9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,wBAAwB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACtE,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,GAAG,UAAU,CAAC;YACnB,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACjD,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAClD,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS;QACX,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,SAAiB;IAC3D,IAAI,2BAA2B,CAAC,SAAS,CAAC;QAAE,OAAO,8BAA8B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnG,IAAI,aAAa,CAAC,SAAS,CAAC;QAAE,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC1E,IAAI,gBAAgB,CAAC,SAAS,CAAC;QAAE,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,gBAAgB,CAAC,SAAS,CAAC;QAAE,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CommentRange } from "./ranges.js";
2
+ declare function collectShellCommentRanges(text: string): CommentRange[];
3
+ export { collectShellCommentRanges };
4
+ //# sourceMappingURL=shell.d.ts.map
@@ -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;AAIvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAqI7D,iBAAe,uBAAuB,CACpC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAoFpC;AAED,OAAO,EAAE,uBAAuB,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 = isTypeScriptFamilyExtension(extension)
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":"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"}
1
+ {"version":3,"file":"function-lines.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/function-lines.ts"],"names":[],"mappings":"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"}
@@ -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,UAAgG,CAAC;AAChI,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"}
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"}
@@ -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;AAChI,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
+ {"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":"AAqBA,iBAAS,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/C;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,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,GAChB,CAAC"}
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"}
@@ -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;AAC9F,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,2BAA2B,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACzH,CAAC;AAED,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,GAChB,CAAC"}
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/shared/languages.ts"],"names":[],"mappings":"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"}
Binary file
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.0",
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,17 +40,18 @@
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": {
52
- "@package/logger": "npm:@trebired/logger@^2.5.11",
53
- "@package/result": "npm:@trebired/result@^1.1.4",
53
+ "@package/logger": "npm:@trebired/logger@^2.5.13",
54
+ "@package/result": "npm:@trebired/result@^1.1.6",
54
55
  "prettier": "3.9.6",
55
56
  "typescript": "^6.0.3"
56
57
  },