@trebired/code-discipline 5.0.3 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +21 -12
- package/dist/checks/apply-fixes.d.ts +2 -2
- package/dist/checks/apply-fixes.d.ts.map +1 -1
- package/dist/checks/apply-fixes.js +6 -6
- package/dist/checks/apply-fixes.js.map +1 -1
- package/dist/checks/{fix-folderization.d.ts → fix-source-file-structure.d.ts} +4 -4
- package/dist/checks/fix-source-file-structure.d.ts.map +1 -0
- package/dist/checks/{fix-folderization.js → fix-source-file-structure.js} +25 -24
- package/dist/checks/fix-source-file-structure.js.map +1 -0
- package/dist/checks/index.js +5 -5
- package/dist/checks/index.js.map +1 -1
- package/dist/checks/rule-slugs.d.ts +1 -1
- package/dist/checks/rule-slugs.js +3 -3
- package/dist/checks/rule-slugs.js.map +1 -1
- package/dist/checks/rules/blank-lines/generic.d.ts +10 -0
- package/dist/checks/rules/blank-lines/generic.d.ts.map +1 -0
- package/dist/checks/rules/blank-lines/generic.js +242 -0
- package/dist/checks/rules/blank-lines/generic.js.map +1 -0
- package/dist/checks/rules/blank-lines/index.d.ts.map +1 -1
- package/dist/checks/rules/blank-lines/index.js +13 -7
- package/dist/checks/rules/blank-lines/index.js.map +1 -1
- package/dist/checks/rules/blank-lines/rewrite.d.ts +2 -1
- package/dist/checks/rules/blank-lines/rewrite.d.ts.map +1 -1
- package/dist/checks/rules/blank-lines/rewrite.js +1 -1
- package/dist/checks/rules/blank-lines/rewrite.js.map +1 -1
- package/dist/checks/rules/comments/ranges.d.ts +2 -1
- package/dist/checks/rules/comments/ranges.d.ts.map +1 -1
- package/dist/checks/rules/comments/ranges.js +1 -1
- package/dist/checks/rules/comments/ranges.js.map +1 -1
- package/dist/checks/rules/dry/candidates.d.ts.map +1 -1
- package/dist/checks/rules/dry/candidates.js +52 -32
- package/dist/checks/rules/dry/candidates.js.map +1 -1
- package/dist/checks/rules/dry/generic.d.ts +5 -0
- package/dist/checks/rules/dry/generic.d.ts.map +1 -0
- package/dist/checks/rules/dry/generic.js +231 -0
- package/dist/checks/rules/dry/generic.js.map +1 -0
- package/dist/checks/rules/dry/matching.d.ts.map +1 -1
- package/dist/checks/rules/dry/matching.js +12 -6
- package/dist/checks/rules/dry/matching.js.map +1 -1
- package/dist/checks/rules/dry/model.d.ts +6 -4
- package/dist/checks/rules/dry/model.d.ts.map +1 -1
- package/dist/checks/rules/dry/model.js +22 -3
- package/dist/checks/rules/dry/model.js.map +1 -1
- package/dist/checks/rules/dry/similarity.d.ts.map +1 -1
- package/dist/checks/rules/dry/similarity.js +2 -0
- package/dist/checks/rules/dry/similarity.js.map +1 -1
- package/dist/checks/rules/max/function-lines.d.ts +10 -1
- package/dist/checks/rules/max/function-lines.d.ts.map +1 -1
- package/dist/checks/rules/max/function-lines.js +1 -1
- package/dist/checks/rules/max/function-lines.js.map +1 -1
- package/dist/checks/rules/max/python.d.ts +7 -2
- package/dist/checks/rules/max/python.d.ts.map +1 -1
- package/dist/checks/rules/max/python.js +1 -1
- package/dist/checks/rules/max/python.js.map +1 -1
- package/dist/checks/rules/max/shell.d.ts +2 -1
- package/dist/checks/rules/max/shell.d.ts.map +1 -1
- package/dist/checks/rules/max/shell.js +1 -1
- package/dist/checks/rules/max/shell.js.map +1 -1
- package/dist/checks/rules/min/declaration-name.d.ts +1 -8
- package/dist/checks/rules/min/declaration-name.d.ts.map +1 -1
- package/dist/checks/rules/min/declaration-name.js +217 -7
- package/dist/checks/rules/min/declaration-name.js.map +1 -1
- package/dist/checks/rules/source-file-structure/index.d.ts +6 -0
- package/dist/checks/rules/source-file-structure/index.d.ts.map +1 -0
- package/dist/checks/rules/{folderize/compound-files.js → source-file-structure/index.js} +13 -11
- package/dist/checks/rules/source-file-structure/index.js.map +1 -0
- package/dist/checks/rules/source-file-structure/plan.d.ts +17 -0
- package/dist/checks/rules/source-file-structure/plan.d.ts.map +1 -0
- package/dist/checks/rules/{folderize → source-file-structure}/plan.js +67 -9
- package/dist/checks/rules/source-file-structure/plan.js.map +1 -0
- package/dist/checks/severity.js +1 -1
- package/dist/checks/severity.js.map +1 -1
- package/dist/checks/types.d.ts +8 -6
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/cli/logging.js +1 -1
- package/dist/cli/logging.js.map +1 -1
- package/dist/config/normalize/check-options.d.ts.map +1 -1
- package/dist/config/normalize/check-options.js +13 -2
- package/dist/config/normalize/check-options.js.map +1 -1
- package/dist/config/normalize/rule-options.d.ts +4 -3
- package/dist/config/normalize/rule-options.d.ts.map +1 -1
- package/dist/config/normalize/rule-options.js +16 -9
- package/dist/config/normalize/rule-options.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/native/native.d.ts +1 -1
- package/dist/native/native.d.ts.map +1 -1
- package/dist/shared/constants.d.ts +3 -2
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +3 -2
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/discipline-types.d.ts +1 -1
- package/dist/shared/discipline-types.d.ts.map +1 -1
- package/dist/shared/languages.d.ts +5 -2
- package/dist/shared/languages.d.ts.map +1 -1
- package/dist/shared/languages.js +9 -4
- 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/dist/checks/fix-folderization.d.ts.map +0 -1
- package/dist/checks/fix-folderization.js.map +0 -1
- package/dist/checks/rules/folderize/compound-files.d.ts +0 -6
- package/dist/checks/rules/folderize/compound-files.d.ts.map +0 -1
- package/dist/checks/rules/folderize/compound-files.js.map +0 -1
- package/dist/checks/rules/folderize/plan.d.ts +0 -16
- package/dist/checks/rules/folderize/plan.d.ts.map +0 -1
- package/dist/checks/rules/folderize/plan.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ 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
|
+
## 5.2.0
|
|
8
|
+
|
|
9
|
+
- Added formatter wrapping for QML top-level string concatenation expressions so formatting can resolve property lines that combine literals and runtime values.
|
|
10
|
+
- Expanded compact one-line QML blocks as part of `rules.formatting`, including single-statement helper functions and inline statement blocks.
|
|
11
|
+
- Fixed SVG/XML attribute wrapping inside Rust raw string bodies so tag text tails reserve line width and `maxCharactersPerLine` can pass after formatting.
|
|
12
|
+
- Renamed `folderizeCompoundFiles` to `sourceFileStructure` with the `source-file-structure` selector, with no legacy rule alias.
|
|
13
|
+
- Added redundant role suffix cleanup to `sourceFileStructure`, so paths such as `pages/home_page.ts` move to `pages/home.ts` by default.
|
|
14
|
+
- Expanded `sourceFileStructure` planning and moves across supported source languages instead of limiting path normalization to JavaScript and TypeScript family files.
|
|
15
|
+
- Expanded `minDeclarationName` checks across Go, Rust, Python, QML, shell, SCSS, and CSS with language-aware declaration scanning.
|
|
16
|
+
- Expanded `dry` duplicate-function checks across Go, Rust, Python, QML, and shell source files with language-aware token fingerprints.
|
|
17
|
+
- Added generic structural blank-line normalization for supported non-TypeScript languages while keeping the TypeScript AST path for JavaScript and TypeScript files.
|
|
18
|
+
|
|
7
19
|
## 5.0.3
|
|
8
20
|
|
|
9
21
|
- Removed the legacy top-level `formatter` compatibility alias; formatting is configured only through `rules.formatting`.
|
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ code-discipline check
|
|
|
30
30
|
code-discipline check save
|
|
31
31
|
code-discipline check max-function-lines dry format
|
|
32
32
|
code-discipline fix
|
|
33
|
-
code-discipline fix banned-files min-file-lines max-characters-per-line imports remove-comments structural-blank-lines format
|
|
33
|
+
code-discipline fix banned-files min-file-lines max-characters-per-line source-file-structure imports remove-comments structural-blank-lines format
|
|
34
34
|
code-discipline gate -- bun run dev
|
|
35
35
|
```
|
|
36
36
|
|
|
@@ -96,7 +96,9 @@ Reports files whose code line count is at or below `min`, defaulting to `1` when
|
|
|
96
96
|
|
|
97
97
|
#### `minDeclarationName`
|
|
98
98
|
|
|
99
|
-
Reports
|
|
99
|
+
Reports named declarations whose names are shorter than `min`, defaulting to `2` when the rule is configured.
|
|
100
|
+
|
|
101
|
+
JavaScript and TypeScript use the TypeScript AST for `function` declarations and simple `const` identifiers. Go, Rust, Python, QML, shell, SCSS, and CSS use language-aware declaration scanners for functions, declarations, properties, variables, and custom properties where those concepts exist.
|
|
100
102
|
|
|
101
103
|
#### `maxCharactersPerLine`
|
|
102
104
|
|
|
@@ -132,13 +134,13 @@ Reports function-like declarations whose total span exceeds `max`.
|
|
|
132
134
|
|
|
133
135
|
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. QML uses comment/string-aware scanning for JavaScript-style functions and signal-handler blocks.
|
|
134
136
|
|
|
135
|
-
#### `
|
|
137
|
+
#### `sourceFileStructure`
|
|
136
138
|
|
|
137
|
-
|
|
139
|
+
Normalizes source file paths. It detects flat compound names such as `user_route.ts` and can move them into structural folders such as `user/route.ts`. It also removes redundant role suffixes when the parent directory already names the role, such as `pages/home_page.ts` becoming `pages/home.ts`.
|
|
138
140
|
|
|
139
|
-
The rule config
|
|
141
|
+
The rule config describes compound-name separators and redundant role suffixes. Whether it mutates is decided by running `code-discipline fix`.
|
|
140
142
|
|
|
141
|
-
|
|
143
|
+
Source file structure scans and moves supported source files across JavaScript, TypeScript, Go, Rust, Python, QML, shell, SCSS, and CSS. Move-aware import repair is applied for languages whose import syntax is package-supported.
|
|
142
144
|
|
|
143
145
|
#### `imports`
|
|
144
146
|
|
|
@@ -219,9 +221,11 @@ code-discipline fix remove-comments
|
|
|
219
221
|
|
|
220
222
|
#### `structuralBlankLines`
|
|
221
223
|
|
|
222
|
-
Reports
|
|
224
|
+
Reports supported source files where major structural sections aren't visually separated, and normalizes the blank lines between them when you run `code-discipline fix`.
|
|
223
225
|
|
|
224
|
-
|
|
226
|
+
JavaScript and TypeScript use the TypeScript AST: after the file header, between imports and the first non-import statement, between declaration groups (variables, types, functions, classes, enums, namespaces), and between class fields/methods/constructors. Compact groups - consecutive imports, variables, type declarations, re-exports, top-level executable statements, class fields, directive prologues, function overload chains, and getter/setter pairs - allow zero or one blank line and only collapse two or more down to one.
|
|
227
|
+
|
|
228
|
+
Go, Rust, Python, QML, shell, SCSS, and CSS use language-aware structural scanning to normalize blank lines between adjacent top-level declarations, functions, handlers, or rules in the same scope.
|
|
225
229
|
|
|
226
230
|
It never touches statements inside function or method bodies, `if`/loop/`try` bodies, object literals, array elements, interface members, type literal members, enum members, or JSX children - spacing choices inside those remain up to the developer.
|
|
227
231
|
|
|
@@ -239,6 +243,8 @@ code-discipline fix structural-blank-lines
|
|
|
239
243
|
|
|
240
244
|
Reports duplicate function groups across the configured source tree.
|
|
241
245
|
|
|
246
|
+
- JavaScript and TypeScript use AST-aware structural and behavior fingerprints
|
|
247
|
+
- Go, Rust, Python, QML, and shell use language-aware function spans with conservative token fingerprints
|
|
242
248
|
- exact normalized structure is reported with 100% confidence
|
|
243
249
|
- equivalent normalized behavior in simple pure functions is reported with 100% confidence
|
|
244
250
|
- matching function names are reported with 100% confidence
|
|
@@ -378,8 +384,9 @@ export default defineCodeDisciplineConfig({
|
|
|
378
384
|
max: 80,
|
|
379
385
|
severity: "warning",
|
|
380
386
|
},
|
|
381
|
-
|
|
387
|
+
sourceFileStructure: {
|
|
382
388
|
separators: ["_", "-"],
|
|
389
|
+
roleSuffixes: ["page"],
|
|
383
390
|
},
|
|
384
391
|
removeComments: {
|
|
385
392
|
exclude: ["@ts-nocheck"],
|
|
@@ -488,7 +495,7 @@ Rules use kebab-case public slugs:
|
|
|
488
495
|
- `max-file-lines`
|
|
489
496
|
- `max-characters-per-line`
|
|
490
497
|
- `max-function-lines`
|
|
491
|
-
- `
|
|
498
|
+
- `source-file-structure`
|
|
492
499
|
- `imports`
|
|
493
500
|
- `remove-comments`
|
|
494
501
|
- `structural-blank-lines`
|
|
@@ -499,13 +506,15 @@ Rules use kebab-case public slugs:
|
|
|
499
506
|
|
|
500
507
|
The `format` selector is enabled by `rules.formatting`.
|
|
501
508
|
|
|
509
|
+
The `structural-blank-lines` selector is enabled by `rules.structuralBlankLines` and normalizes blank lines between structural declarations in supported source languages.
|
|
510
|
+
|
|
502
511
|
### Formatting
|
|
503
512
|
|
|
504
513
|
The package-owned Rust formatter is enabled as a rule with `rules.formatting: {}`. Omit `rules.formatting` to leave formatting disabled.
|
|
505
514
|
|
|
506
515
|
`check format` validates formatting without modifying files, while `fix format` writes formatted files. Running `code-discipline fix` with no selectors runs configured formatting after structural, import, comment, and blank-line fixes, then rechecks `max-characters-per-line` when that rule is configured.
|
|
507
516
|
|
|
508
|
-
The formatter supports JavaScript, TypeScript, Go, Rust, Python, QML, shell files with `.sh`, `.bash`, or `.zsh`, SCSS, and CSS. It normalizes line endings, trailing whitespace, final newline, repeated blank lines, brace-language indentation, indentation-sensitive language whitespace, and safe line wrapping against `rules.maxCharactersPerLine.max`.
|
|
517
|
+
The formatter supports JavaScript, TypeScript, Go, Rust, Python, QML, shell files with `.sh`, `.bash`, or `.zsh`, SCSS, and CSS. It normalizes line endings, trailing whitespace, final newline, repeated blank lines, brace-language indentation, indentation-sensitive language whitespace, compact QML blocks, and safe line wrapping against `rules.maxCharactersPerLine.max`.
|
|
509
518
|
|
|
510
519
|
If `rules.maxCharactersPerLine.max` is configured, the formatter uses that width. Without that rule, formatter line width defaults to `100`.
|
|
511
520
|
|
|
@@ -528,7 +537,7 @@ rules: {
|
|
|
528
537
|
|
|
529
538
|
`@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.
|
|
530
539
|
|
|
531
|
-
The current native backend accelerates source scanning, `max-file-lines`, common `max-function-lines` paths, `
|
|
540
|
+
The current native backend accelerates source scanning, `max-file-lines`, common `max-function-lines` paths, `source-file-structure` checks, and `remove-comments`. Its comment scanner understands JavaScript, TypeScript, Go, Rust, Python, QML, shell, SCSS, and CSS. If no binary is present, the package automatically uses the TypeScript fallback.
|
|
532
541
|
|
|
533
542
|
Useful native controls:
|
|
534
543
|
|
|
@@ -16,12 +16,12 @@ type FixState = {
|
|
|
16
16
|
};
|
|
17
17
|
declare function applyBannedFilesFix(state: FixState, normalized: NormalizedCheckCodeDisciplineOptions): Promise<void>;
|
|
18
18
|
declare function applyMinFileLinesFix(state: FixState, normalized: NormalizedCheckCodeDisciplineOptions, logger: ReturnType<typeof resolveLogger>): Promise<void>;
|
|
19
|
-
declare function
|
|
19
|
+
declare function applySourceFileStructureFix(state: FixState, normalized: NormalizedCheckCodeDisciplineOptions, logger: ReturnType<typeof resolveLogger>): Promise<void>;
|
|
20
20
|
declare function applyImportsFix(state: FixState, normalized: NormalizedCheckCodeDisciplineOptions): Promise<void>;
|
|
21
21
|
declare function applyMaxCharactersPerLineFix(state: FixState, normalized: NormalizedCheckCodeDisciplineOptions): Promise<void>;
|
|
22
22
|
declare function applyRemoveCommentsFix(state: FixState, normalized: NormalizedCheckCodeDisciplineOptions): Promise<void>;
|
|
23
23
|
declare function applyStructuralBlankLinesFix(state: FixState, normalized: NormalizedCheckCodeDisciplineOptions): Promise<void>;
|
|
24
24
|
declare function applyCodeFormatFix(state: FixState, normalized: NormalizedCheckCodeDisciplineOptions): Promise<void>;
|
|
25
|
-
export { applyBannedFilesFix, applyCodeFormatFix as applyCodeFormatterFix,
|
|
25
|
+
export { applyBannedFilesFix, applyCodeFormatFix as applyCodeFormatterFix, applySourceFileStructureFix, applyMaxCharactersPerLineFix, applyMinFileLinesFix, applyRemoveCommentsFix, applyStructuralBlankLinesFix, applyImportsFix, };
|
|
26
26
|
export type { FixState };
|
|
27
27
|
//# sourceMappingURL=apply-fixes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-fixes.d.ts","sourceRoot":"","sources":["../../src/checks/apply-fixes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAWnD,OAAO,KAAK,EAAE,eAAe,EAAE,2BAA2B,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAErH,KAAK,QAAQ,GAAG;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC,CAAC;IAC3E,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,UAAU,EAAE,uBAAuB,EAAE,CAAC;CACvC,CAAC;AAwCF,iBAAe,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnH;AAED,iBAAe,oBAAoB,CACjC,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,oCAAoC,EAChD,MAAM,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAef;AAED,iBAAe,
|
|
1
|
+
{"version":3,"file":"apply-fixes.d.ts","sourceRoot":"","sources":["../../src/checks/apply-fixes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAWnD,OAAO,KAAK,EAAE,eAAe,EAAE,2BAA2B,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAErH,KAAK,QAAQ,GAAG;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC,CAAC;IAC3E,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,UAAU,EAAE,uBAAuB,EAAE,CAAC;CACvC,CAAC;AAwCF,iBAAe,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnH;AAED,iBAAe,oBAAoB,CACjC,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,oCAAoC,EAChD,MAAM,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAef;AAED,iBAAe,2BAA2B,CACxC,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,oCAAoC,EAChD,MAAM,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,iBAAe,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/G;AAED,iBAAe,4BAA4B,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5H;AAED,iBAAe,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAStH;AAED,iBAAe,4BAA4B,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5H;AAED,iBAAe,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUlH;AAED,OAAO,EACL,mBAAmB,EACnB,kBAAkB,IAAI,qBAAqB,EAC3C,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,4BAA4B,EAC5B,eAAe,GAChB,CAAC;AACF,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { scanSourceFiles } from "../imports/scan.js";
|
|
2
2
|
import { imports } from "../imports/imports.js";
|
|
3
3
|
import { filterSourceFilesForRule } from "../shared/rule-exclusions.js";
|
|
4
|
-
import {
|
|
4
|
+
import { fixSourceFileStructure } from "./fix-source-file-structure.js";
|
|
5
5
|
import { applyCodeFormatterFix } from "./format.js";
|
|
6
6
|
import { shouldRunRule } from "./rule-slugs.js";
|
|
7
7
|
import { fixBannedFilesRule } from "./rules/banned/files.js";
|
|
@@ -59,12 +59,12 @@ async function applyMinFileLinesFix(state, normalized, logger) {
|
|
|
59
59
|
state.sourceFiles = await scanSourceFiles(normalized);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
async function
|
|
63
|
-
if (!normalized.rules.
|
|
62
|
+
async function applySourceFileStructureFix(state, normalized, logger) {
|
|
63
|
+
if (!normalized.rules.sourceFileStructure || !shouldRunFixRule("source-file-structure", normalized))
|
|
64
64
|
return;
|
|
65
|
-
const result = await
|
|
65
|
+
const result = await fixSourceFileStructure(filterSourceFilesForRule(state.sourceFiles, normalized.rules.sourceFileStructure), normalized, logger);
|
|
66
66
|
const violations = applyConfiguredSeverity(result.violations, normalized);
|
|
67
|
-
state.ruleResults["
|
|
67
|
+
state.ruleResults["source-file-structure"] = mapFixRuleResult({ ...result, violations });
|
|
68
68
|
state.violations.push(...violations);
|
|
69
69
|
state.movedFiles += result.moved_files;
|
|
70
70
|
state.rewrittenFiles += result.rewritten_files;
|
|
@@ -126,5 +126,5 @@ async function applyCodeFormatFix(state, normalized) {
|
|
|
126
126
|
state.unchangedFiles += result.unchangedFiles;
|
|
127
127
|
state.rewrittenFiles += result.rewrittenFiles;
|
|
128
128
|
}
|
|
129
|
-
export { applyBannedFilesFix, applyCodeFormatFix as applyCodeFormatterFix,
|
|
129
|
+
export { applyBannedFilesFix, applyCodeFormatFix as applyCodeFormatterFix, applySourceFileStructureFix, applyMaxCharactersPerLineFix, applyMinFileLinesFix, applyRemoveCommentsFix, applyStructuralBlankLinesFix, applyImportsFix, };
|
|
130
130
|
//# sourceMappingURL=apply-fixes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-fixes.js","sourceRoot":"","sources":["../../src/checks/apply-fixes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"apply-fixes.js","sourceRoot":"","sources":["../../src/checks/apply-fixes.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,11 @@ type PlannedMove = {
|
|
|
8
8
|
toAbsolutePath: string;
|
|
9
9
|
toRelativePath: string;
|
|
10
10
|
};
|
|
11
|
-
declare function
|
|
11
|
+
declare function createSourceFileStructureViolation(filePath: string, suggestedPath: string, options: NormalizedCheckCodeDisciplineOptions, details: Record<string, unknown>): CodeDisciplineViolation;
|
|
12
12
|
declare function buildMovePlan(sourceFiles: ScannedSourceFile[], options: NormalizedCheckCodeDisciplineOptions): {
|
|
13
13
|
moves: PlannedMove[];
|
|
14
14
|
violations: CodeDisciplineViolation[];
|
|
15
15
|
};
|
|
16
|
-
declare function
|
|
17
|
-
export { buildMovePlan,
|
|
18
|
-
//# sourceMappingURL=fix-
|
|
16
|
+
declare function fixSourceFileStructure(sourceFiles: ScannedSourceFile[], options: NormalizedCheckCodeDisciplineOptions, logger: NormalizedCodeDisciplineLogger): Promise<FixCodeDisciplineResult>;
|
|
17
|
+
export { buildMovePlan, createSourceFileStructureViolation, fixSourceFileStructure };
|
|
18
|
+
//# sourceMappingURL=fix-source-file-structure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-source-file-structure.d.ts","sourceRoot":"","sources":["../../src/checks/fix-source-file-structure.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,uBAAuB,EACvB,oCAAoC,EACrC,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAW7D,KAAK,WAAW,GAAG;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,iBAAS,kCAAkC,CACzC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,oCAAoC,EAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,uBAAuB,CASzB;AAED,iBAAS,aAAa,CACpB,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,UAAU,EAAE,uBAAuB,EAAE,CAAA;CAAE,CAsBjE;AAwLD,iBAAe,sBAAsB,CACnC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,EAC7C,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CA6DlC;AAED,OAAO,EAAE,aAAa,EAAE,kCAAkC,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -5,33 +5,34 @@ import { removeEmptyDirectories } from "../shared/directories.js";
|
|
|
5
5
|
import { formatRelativeSpecifier } from "../imports/format.js";
|
|
6
6
|
import { applyTextReplacements, collectModuleSpecifiers } from "../imports/module-specifiers.js";
|
|
7
7
|
import { isRelativeImportSpecifier } from "../imports/resolve.js";
|
|
8
|
-
import {
|
|
8
|
+
import { supportsImports } from "../shared/languages.js";
|
|
9
9
|
import { FileConflictError, FixFailureError, RewriteFailureError } from "../shared/errors.js";
|
|
10
10
|
import { ensureDotExtension, pathExists } from "../shared/utils.js";
|
|
11
11
|
import { createRuleProgress, emitRuleChunk, emitRuleCompleted } from "./progress.js";
|
|
12
|
-
import {
|
|
13
|
-
function
|
|
12
|
+
import { planSourceFileStructure } from "./rules/source-file-structure/plan.js";
|
|
13
|
+
function createSourceFileStructureViolation(filePath, suggestedPath, options, details) {
|
|
14
14
|
return {
|
|
15
|
-
rule: "
|
|
15
|
+
rule: "source-file-structure",
|
|
16
16
|
fix: true,
|
|
17
17
|
filePath,
|
|
18
|
-
message: `file
|
|
18
|
+
message: `file path should be normalized to ${suggestedPath}`,
|
|
19
19
|
suggestedPath,
|
|
20
20
|
details,
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
function buildMovePlan(sourceFiles, options) {
|
|
24
|
-
const candidates =
|
|
24
|
+
const candidates = planSourceFileStructure(sourceFiles, options);
|
|
25
25
|
const moves = candidates.map((candidate) => ({
|
|
26
26
|
fromAbsolutePath: candidate.absolutePath,
|
|
27
27
|
fromRelativePath: candidate.relativeFromProjectRoot,
|
|
28
28
|
toAbsolutePath: candidate.suggestedAbsolutePath,
|
|
29
29
|
toRelativePath: candidate.suggestedPath,
|
|
30
30
|
}));
|
|
31
|
-
const violations = candidates.map((candidate) =>
|
|
31
|
+
const violations = candidates.map((candidate) => createSourceFileStructureViolation(candidate.relativeFromProjectRoot, candidate.suggestedPath, options, {
|
|
32
32
|
mode: candidate.mode,
|
|
33
33
|
prefix: candidate.prefix,
|
|
34
34
|
remainder: candidate.remainder,
|
|
35
|
+
...(candidate.roleSuffix ? { roleSuffix: candidate.roleSuffix } : {}),
|
|
35
36
|
separator: candidate.separator,
|
|
36
37
|
}));
|
|
37
38
|
return { moves, violations };
|
|
@@ -50,7 +51,7 @@ function resolveRelativeFromInventory(specifier, sourceFilePath, sourceExtension
|
|
|
50
51
|
}
|
|
51
52
|
return null;
|
|
52
53
|
}
|
|
53
|
-
async function
|
|
54
|
+
async function planImportRewritesForSourceFileStructureMoves(sourceFiles, moves, options) {
|
|
54
55
|
if (moves.length === 0) {
|
|
55
56
|
return {
|
|
56
57
|
rewrittenByPath: new Map(),
|
|
@@ -63,7 +64,7 @@ async function planImportRewritesForFolderizationMoves(sourceFiles, moves, optio
|
|
|
63
64
|
const rewrittenByPath = new Map();
|
|
64
65
|
const progress = createRuleProgress({
|
|
65
66
|
observer: options.progressObserver,
|
|
66
|
-
rule: "
|
|
67
|
+
rule: "source-file-structure",
|
|
67
68
|
stage: "rewrite-plan",
|
|
68
69
|
totalItems: sourceFiles.length,
|
|
69
70
|
});
|
|
@@ -71,7 +72,7 @@ async function planImportRewritesForFolderizationMoves(sourceFiles, moves, optio
|
|
|
71
72
|
let rewrittenImports = 0;
|
|
72
73
|
for (let index = 0; index < sourceFiles.length; index += 1) {
|
|
73
74
|
const file = sourceFiles[index];
|
|
74
|
-
if (!
|
|
75
|
+
if (!supportsImports(file.extension)) {
|
|
75
76
|
emitRuleChunk(progress, index + 1, 0, { rewrittenFiles, rewrittenImports });
|
|
76
77
|
continue;
|
|
77
78
|
}
|
|
@@ -137,7 +138,7 @@ async function validateMovePlan(moves) {
|
|
|
137
138
|
async function moveFiles(moves, options) {
|
|
138
139
|
const progress = createRuleProgress({
|
|
139
140
|
observer: options.progressObserver,
|
|
140
|
-
rule: "
|
|
141
|
+
rule: "source-file-structure",
|
|
141
142
|
stage: "move",
|
|
142
143
|
totalItems: moves.length,
|
|
143
144
|
});
|
|
@@ -156,12 +157,12 @@ async function moveFiles(moves, options) {
|
|
|
156
157
|
emitRuleCompleted(progress, 0, { movedFiles });
|
|
157
158
|
return movedFiles;
|
|
158
159
|
}
|
|
159
|
-
async function
|
|
160
|
+
async function writeSourceFileStructureRewrites(rewrites, options) {
|
|
160
161
|
const entries = [...rewrites.entries()];
|
|
161
162
|
const totalImports = entries.reduce((sum, [, rewrite]) => sum + rewrite.count, 0);
|
|
162
163
|
const progress = createRuleProgress({
|
|
163
164
|
observer: options.progressObserver,
|
|
164
|
-
rule: "
|
|
165
|
+
rule: "source-file-structure",
|
|
165
166
|
stage: "write",
|
|
166
167
|
totalItems: entries.length,
|
|
167
168
|
});
|
|
@@ -178,12 +179,12 @@ async function writeFolderizationRewrites(rewrites, options) {
|
|
|
178
179
|
rewrittenImports: totalImports,
|
|
179
180
|
});
|
|
180
181
|
}
|
|
181
|
-
async function
|
|
182
|
+
async function fixSourceFileStructure(sourceFiles, options, logger) {
|
|
182
183
|
const { moves, violations } = buildMovePlan(sourceFiles, options);
|
|
183
|
-
if (!options.rules.
|
|
184
|
-
logger.info("fix-
|
|
184
|
+
if (!options.rules.sourceFileStructure || moves.length === 0) {
|
|
185
|
+
logger.info("fix-source-file-structure-unchanged", "no source file structure moves required", {
|
|
185
186
|
moves: 0,
|
|
186
|
-
}, { group: ruleLogGroup("
|
|
187
|
+
}, { group: ruleLogGroup("source-file-structure") });
|
|
187
188
|
return {
|
|
188
189
|
ok: true,
|
|
189
190
|
violationCount: 0,
|
|
@@ -201,15 +202,15 @@ async function fixFolderization(sourceFiles, options, logger) {
|
|
|
201
202
|
await validateMovePlan(moves);
|
|
202
203
|
const sourceDirectories = moves.map((move) => path.dirname(move.fromAbsolutePath));
|
|
203
204
|
try {
|
|
204
|
-
const rewriteState = await
|
|
205
|
+
const rewriteState = await planImportRewritesForSourceFileStructureMoves(sourceFiles, moves, options);
|
|
205
206
|
const movedFiles = await moveFiles(moves, options);
|
|
206
|
-
await
|
|
207
|
+
await writeSourceFileStructureRewrites(rewriteState.rewrittenByPath, options);
|
|
207
208
|
await removeEmptyDirectories(sourceDirectories);
|
|
208
|
-
logger.success("fix-
|
|
209
|
+
logger.success("fix-source-file-structure-finished", `source file structure moves=${movedFiles} rewrittenImports=${rewriteState.rewrittenImports}`, {
|
|
209
210
|
movedFiles,
|
|
210
211
|
rewrittenFiles: rewriteState.rewrittenFiles,
|
|
211
212
|
rewrittenImports: rewriteState.rewrittenImports,
|
|
212
|
-
}, { group: ruleLogGroup("
|
|
213
|
+
}, { group: ruleLogGroup("source-file-structure") });
|
|
213
214
|
return {
|
|
214
215
|
ok: true,
|
|
215
216
|
violationCount: 0,
|
|
@@ -228,10 +229,10 @@ async function fixFolderization(sourceFiles, options, logger) {
|
|
|
228
229
|
if (error instanceof FileConflictError || error instanceof RewriteFailureError) {
|
|
229
230
|
throw error;
|
|
230
231
|
}
|
|
231
|
-
throw new FixFailureError("
|
|
232
|
+
throw new FixFailureError("Source file structure fix failed", {
|
|
232
233
|
cause: error instanceof Error ? error.message : String(error),
|
|
233
234
|
});
|
|
234
235
|
}
|
|
235
236
|
}
|
|
236
|
-
export { buildMovePlan,
|
|
237
|
-
//# sourceMappingURL=fix-
|
|
237
|
+
export { buildMovePlan, createSourceFileStructureViolation, fixSourceFileStructure };
|
|
238
|
+
//# sourceMappingURL=fix-source-file-structure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-source-file-structure.js","sourceRoot":"","sources":["../../src/checks/fix-source-file-structure.ts"],"names":[],"mappings":"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"}
|
package/dist/checks/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { scanSourceFiles } from "../imports/scan.js";
|
|
|
5
5
|
import { runLogGroup } from "../shared/log-groups.js";
|
|
6
6
|
import { resolveLogger } from "../shared/logging.js";
|
|
7
7
|
import { filterSourceFilesForRule } from "../shared/rule-exclusions.js";
|
|
8
|
-
import { applyBannedFilesFix,
|
|
8
|
+
import { applyBannedFilesFix, applySourceFileStructureFix, applyMaxCharactersPerLineFix, applyMinFileLinesFix, applyCodeFormatterFix, applyRemoveCommentsFix, applyStructuralBlankLinesFix, applyImportsFix, } from "./apply-fixes.js";
|
|
9
9
|
import { collectFormatViolations } from "./format.js";
|
|
10
10
|
import { shouldRunRule } from "./rule-slugs.js";
|
|
11
11
|
import { collectBannedFileViolations } from "./rules/banned/files.js";
|
|
@@ -15,7 +15,7 @@ import { collectDryViolations } from "./rules/dry/index.js";
|
|
|
15
15
|
import { runMaxCharactersPerLineRule } from "./rules/max/characters-per-line.js";
|
|
16
16
|
import { runMaxFileLinesRule } from "./rules/max/file-lines.js";
|
|
17
17
|
import { runMaxFunctionLinesRule } from "./rules/max/function-lines.js";
|
|
18
|
-
import {
|
|
18
|
+
import { runSourceFileStructureRule } from "./rules/source-file-structure/index.js";
|
|
19
19
|
import { runMinDeclarationNameRule } from "./rules/min/declaration-name.js";
|
|
20
20
|
import { runMinFileLinesRule } from "./rules/min/file/lines.js";
|
|
21
21
|
import { collectRemoveCommentsViolations } from "./rules/remove-comments.js";
|
|
@@ -96,8 +96,8 @@ async function collectViolations(options) {
|
|
|
96
96
|
if (options.rules.maxFunctionLines && shouldRunRule("max-function-lines", options.onlyRules)) {
|
|
97
97
|
violations.push(...await runMaxFunctionLinesRule(filterSourceFilesForRule(sourceFiles, options.rules.maxFunctionLines), options));
|
|
98
98
|
}
|
|
99
|
-
if (options.rules.
|
|
100
|
-
violations.push(...
|
|
99
|
+
if (options.rules.sourceFileStructure && shouldRunRule("source-file-structure", options.onlyRules)) {
|
|
100
|
+
violations.push(...runSourceFileStructureRule(filterSourceFilesForRule(sourceFiles, options.rules.sourceFileStructure), options));
|
|
101
101
|
}
|
|
102
102
|
if (options.rules.dry && shouldRunRule("dry", options.onlyRules)) {
|
|
103
103
|
violations.push(...await collectDryViolations(filterSourceFilesForRule(sourceFiles, options.rules.dry), options));
|
|
@@ -172,7 +172,7 @@ async function fixCodeDiscipline(options) {
|
|
|
172
172
|
};
|
|
173
173
|
await applyBannedFilesFix(state, normalized);
|
|
174
174
|
await applyMinFileLinesFix(state, normalized, logger);
|
|
175
|
-
await
|
|
175
|
+
await applySourceFileStructureFix(state, normalized, logger);
|
|
176
176
|
await applyImportsFix(state, normalized);
|
|
177
177
|
await applyRemoveCommentsFix(state, normalized);
|
|
178
178
|
await applyStructuralBlankLinesFix(state, normalized);
|
package/dist/checks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,mCAAmC,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EACL,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ declare const RULE_SLUG_BY_CONFIG_KEY: {
|
|
|
5
5
|
readonly bannedFiles: "banned-files";
|
|
6
6
|
readonly bannedPatterns: "banned-patterns";
|
|
7
7
|
readonly dry: "dry";
|
|
8
|
-
readonly
|
|
8
|
+
readonly sourceFileStructure: "source-file-structure";
|
|
9
9
|
readonly maxCharactersPerLine: "max-characters-per-line";
|
|
10
10
|
readonly maxFileLines: "max-file-lines";
|
|
11
11
|
readonly maxFunctionLines: "max-function-lines";
|
|
@@ -7,7 +7,7 @@ const ALL_RULE_SLUGS = [
|
|
|
7
7
|
"max-file-lines",
|
|
8
8
|
"max-characters-per-line",
|
|
9
9
|
"max-function-lines",
|
|
10
|
-
"
|
|
10
|
+
"source-file-structure",
|
|
11
11
|
"imports",
|
|
12
12
|
"remove-comments",
|
|
13
13
|
"structural-blank-lines",
|
|
@@ -18,7 +18,7 @@ const FIXABLE_RULE_SLUGS = [
|
|
|
18
18
|
"banned-files",
|
|
19
19
|
"min-file-lines",
|
|
20
20
|
"max-characters-per-line",
|
|
21
|
-
"
|
|
21
|
+
"source-file-structure",
|
|
22
22
|
"imports",
|
|
23
23
|
"remove-comments",
|
|
24
24
|
"structural-blank-lines",
|
|
@@ -28,7 +28,7 @@ const RULE_SLUG_BY_CONFIG_KEY = {
|
|
|
28
28
|
bannedFiles: "banned-files",
|
|
29
29
|
bannedPatterns: "banned-patterns",
|
|
30
30
|
dry: "dry",
|
|
31
|
-
|
|
31
|
+
sourceFileStructure: "source-file-structure",
|
|
32
32
|
maxCharactersPerLine: "max-characters-per-line",
|
|
33
33
|
maxFileLines: "max-file-lines",
|
|
34
34
|
maxFunctionLines: "max-function-lines",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-slugs.js","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AASjE,MAAM,cAAc,GAA6B;IAC/C,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,sBAAsB;IACtB,gBAAgB;IAChB,yBAAyB;IACzB,oBAAoB;IACpB,
|
|
1
|
+
{"version":3,"file":"rule-slugs.js","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ApplyBoundaryEditsResult } from "./rewrite.js";
|
|
2
|
+
type GenericStructuralUnit = {
|
|
3
|
+
endLine: number;
|
|
4
|
+
scopeKey: string;
|
|
5
|
+
startLine: number;
|
|
6
|
+
};
|
|
7
|
+
declare function collectGenericStructuralUnits(text: string, extension: string): GenericStructuralUnit[];
|
|
8
|
+
declare function rewriteGenericStructuralBlankLines(text: string, extension: string): ApplyBoundaryEditsResult;
|
|
9
|
+
export { collectGenericStructuralUnits, rewriteGenericStructuralBlankLines };
|
|
10
|
+
//# sourceMappingURL=generic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/blank-lines/generic.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAsB,KAAK,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGjF,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA6QF,iBAAS,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAO/F;AAED,iBAAS,kCAAkC,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,wBAAwB,CAKrG;AAED,OAAO,EAAE,6BAA6B,EAAE,kCAAkC,EAAE,CAAC"}
|