@trebired/code-discipline 2.1.0 → 2.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 +14 -0
- package/README.md +64 -8
- package/dist/checks/fix-folderization.d.ts.map +1 -1
- package/dist/checks/fix-folderization.js +4 -16
- package/dist/checks/fix-folderization.js.map +1 -1
- package/dist/checks/index.d.ts +4 -2
- package/dist/checks/index.d.ts.map +1 -1
- package/dist/checks/index.js +36 -8
- package/dist/checks/index.js.map +1 -1
- package/dist/checks/rules/dry.d.ts.map +1 -1
- package/dist/checks/rules/dry.js +7 -15
- package/dist/checks/rules/dry.js.map +1 -1
- package/dist/checks/rules/folderize-compound-files.js +1 -1
- package/dist/checks/rules/folderize-compound-files.js.map +1 -1
- package/dist/checks/rules/folderize-plan.d.ts.map +1 -1
- package/dist/checks/rules/folderize-plan.js +3 -0
- package/dist/checks/rules/folderize-plan.js.map +1 -1
- package/dist/checks/rules/max-function-lines.d.ts.map +1 -1
- package/dist/checks/rules/max-function-lines.js +120 -3
- package/dist/checks/rules/max-function-lines.js.map +1 -1
- package/dist/checks/types.d.ts +5 -7
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/cli/run-cli.d.ts +1 -0
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +65 -15
- package/dist/cli/run-cli.js.map +1 -1
- package/dist/config/normalize-rule-options.d.ts +3 -3
- package/dist/config/normalize-rule-options.d.ts.map +1 -1
- package/dist/config/normalize-rule-options.js +11 -6
- package/dist/config/normalize-rule-options.js.map +1 -1
- package/dist/config/normalize-source-options.d.ts +6 -1
- package/dist/config/normalize-source-options.d.ts.map +1 -1
- package/dist/config/normalize-source-options.js +20 -2
- package/dist/config/normalize-source-options.js.map +1 -1
- package/dist/imports/check-sync-imports.d.ts.map +1 -1
- package/dist/imports/check-sync-imports.js +7 -5
- package/dist/imports/check-sync-imports.js.map +1 -1
- package/dist/imports/module-specifiers.d.ts.map +1 -1
- package/dist/imports/module-specifiers.js +5 -1
- package/dist/imports/module-specifiers.js.map +1 -1
- package/dist/imports/resolve.d.ts +2 -1
- package/dist/imports/resolve.d.ts.map +1 -1
- package/dist/imports/resolve.js.map +1 -1
- package/dist/imports/scan.d.ts.map +1 -1
- package/dist/imports/scan.js +8 -2
- package/dist/imports/scan.js.map +1 -1
- package/dist/imports/sync-imports.d.ts +2 -2
- package/dist/imports/sync-imports.d.ts.map +1 -1
- package/dist/imports/sync-imports.js +8 -2
- package/dist/imports/sync-imports.js.map +1 -1
- package/dist/imports/types.d.ts +10 -2
- package/dist/imports/types.d.ts.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +4 -0
- package/dist/run.js.map +1 -1
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +1 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/gitignore.d.ts +3 -0
- package/dist/shared/gitignore.d.ts.map +1 -0
- package/dist/shared/gitignore.js +69 -0
- package/dist/shared/gitignore.js.map +1 -0
- package/dist/shared/languages.d.ts +8 -0
- package/dist/shared/languages.d.ts.map +1 -0
- package/dist/shared/languages.js +36 -0
- package/dist/shared/languages.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@trebired/code-discipline` will be documented here.
|
|
4
4
|
|
|
5
|
+
## 2.2.0
|
|
6
|
+
|
|
7
|
+
- Added mixed-language source-tree support so repositories can include Go and Rust files alongside JavaScript and TypeScript without breaking scan-based discipline runs.
|
|
8
|
+
- Added Go and Rust function-length detection to `maxFunctionLines`.
|
|
9
|
+
- Added additive source scanning controls so custom `sourceExtensions` can extend or replace the built-in defaults, while `excludeDirs` now uses a single `{ dirs, gitignore }` shape for extra directory excludes and optional root `.gitignore` reuse.
|
|
10
|
+
- Kept folderization import repair limited to move-aware relative rewrites, while leaving alias rewriting under `sync-imports`.
|
|
11
|
+
- Made `sync-imports` and `dry` explicitly ignore non-JS/TS module files instead of trying to parse or rewrite them.
|
|
12
|
+
|
|
13
|
+
## 2.1.1
|
|
14
|
+
|
|
15
|
+
- Removed rule-level `fix` toggles from discipline config so mutation is decided by running `code-discipline fix`.
|
|
16
|
+
- Added saved CLI reports through `save`.
|
|
17
|
+
- Changed saved report filenames to explicit timestamped `cd-report-YYYY-MM-DD-HH-mm-ss.txt`.
|
|
18
|
+
|
|
5
19
|
## 2.1.0
|
|
6
20
|
|
|
7
21
|
- Removed severity from the public rule config, violation objects, and result summaries.
|
package/README.md
CHANGED
|
@@ -26,6 +26,7 @@ npm install @trebired/code-discipline
|
|
|
26
26
|
|
|
27
27
|
```sh
|
|
28
28
|
code-discipline check
|
|
29
|
+
code-discipline check save
|
|
29
30
|
code-discipline check max-function-lines dry
|
|
30
31
|
code-discipline fix
|
|
31
32
|
code-discipline fix sync-imports dry
|
|
@@ -39,6 +40,14 @@ Top-level `sync` is gone.
|
|
|
39
40
|
code-discipline fix sync-imports
|
|
40
41
|
```
|
|
41
42
|
|
|
43
|
+
If you want the terminal output written to a top-level file too, add `save`:
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
code-discipline check save
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
This writes a plain-text report to a timestamped file such as `cd-report-2026-05-26-19-00-00.txt`.
|
|
50
|
+
|
|
42
51
|
Typical `package.json` scripts can stay simple:
|
|
43
52
|
|
|
44
53
|
```json
|
|
@@ -80,8 +89,11 @@ import { defineCodeDisciplineConfig } from "@trebired/code-discipline";
|
|
|
80
89
|
|
|
81
90
|
export default defineCodeDisciplineConfig({
|
|
82
91
|
sourceRoot: "src",
|
|
83
|
-
sourceExtensions: [".
|
|
84
|
-
excludeDirs:
|
|
92
|
+
sourceExtensions: [".go", ".rs"],
|
|
93
|
+
excludeDirs: {
|
|
94
|
+
dirs: ["coverage"],
|
|
95
|
+
gitignore: true,
|
|
96
|
+
},
|
|
85
97
|
tsconfigPaths: {
|
|
86
98
|
normalize: "relative-dot-prefix",
|
|
87
99
|
restoreAfterRun: true,
|
|
@@ -99,11 +111,9 @@ export default defineCodeDisciplineConfig({
|
|
|
99
111
|
max: 80,
|
|
100
112
|
},
|
|
101
113
|
folderizeCompoundFiles: {
|
|
102
|
-
fix: true,
|
|
103
114
|
separators: ["_", "-"],
|
|
104
115
|
},
|
|
105
116
|
syncImports: {
|
|
106
|
-
fix: true,
|
|
107
117
|
alias: {
|
|
108
118
|
prefix: "#",
|
|
109
119
|
strategy: "relative-path-slug",
|
|
@@ -115,7 +125,6 @@ export default defineCodeDisciplineConfig({
|
|
|
115
125
|
},
|
|
116
126
|
},
|
|
117
127
|
dry: {
|
|
118
|
-
fix: true,
|
|
119
128
|
helpers: [
|
|
120
129
|
{
|
|
121
130
|
from: "./src/shared/to-text.ts",
|
|
@@ -127,6 +136,39 @@ export default defineCodeDisciplineConfig({
|
|
|
127
136
|
});
|
|
128
137
|
```
|
|
129
138
|
|
|
139
|
+
Source scanning stays additive by default:
|
|
140
|
+
|
|
141
|
+
- built-in source extensions are included unless `includeDefaultSourceExtensions: false`
|
|
142
|
+
- built-in excluded directories are always included
|
|
143
|
+
- root `.gitignore` directory entries are included only when `excludeDirs.gitignore: true`
|
|
144
|
+
|
|
145
|
+
So you can extend the defaults without having to repeat the generated-folder list inline.
|
|
146
|
+
|
|
147
|
+
Example scan configuration:
|
|
148
|
+
|
|
149
|
+
```ts
|
|
150
|
+
export default defineCodeDisciplineConfig({
|
|
151
|
+
sourceRoot: "src",
|
|
152
|
+
|
|
153
|
+
// Add extra file types on top of the built-in JS/TS set.
|
|
154
|
+
sourceExtensions: [".go", ".rs"],
|
|
155
|
+
|
|
156
|
+
// Add extra ignored directories on top of the built-in set.
|
|
157
|
+
excludeDirs: {
|
|
158
|
+
dirs: ["coverage"],
|
|
159
|
+
|
|
160
|
+
// Opt into reusing root .gitignore directory entries.
|
|
161
|
+
gitignore: true,
|
|
162
|
+
},
|
|
163
|
+
|
|
164
|
+
rules: {
|
|
165
|
+
maxFunctionLines: {
|
|
166
|
+
max: 80,
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
```
|
|
171
|
+
|
|
130
172
|
## Rule Selectors
|
|
131
173
|
|
|
132
174
|
`check` and `fix` both accept positional rule selectors:
|
|
@@ -162,7 +204,6 @@ const result = await codeDiscipline({
|
|
|
162
204
|
onlyRules: ["sync-imports"],
|
|
163
205
|
rules: {
|
|
164
206
|
syncImports: {
|
|
165
|
-
fix: true,
|
|
166
207
|
alias: {
|
|
167
208
|
strategy: "relative-path-slug",
|
|
168
209
|
},
|
|
@@ -183,7 +224,6 @@ const discipline = createCodeDiscipline({
|
|
|
183
224
|
max: 80,
|
|
184
225
|
},
|
|
185
226
|
syncImports: {
|
|
186
|
-
fix: true,
|
|
187
227
|
alias: {
|
|
188
228
|
strategy: "relative-path-slug",
|
|
189
229
|
},
|
|
@@ -213,6 +253,10 @@ Reports function-like declarations whose total span exceeds `max`.
|
|
|
213
253
|
|
|
214
254
|
Detects flat compound names such as `user_route.ts` and can move them into structural folders such as `user/route.ts`.
|
|
215
255
|
|
|
256
|
+
The rule config only describes separators now. Whether it mutates is decided by running `code-discipline fix`.
|
|
257
|
+
|
|
258
|
+
Folderization autofix stays intentionally conservative: move-aware relative import repair is implemented for the JavaScript and TypeScript module family, while Go and Rust files are scanned safely for other rules but are not folderized automatically.
|
|
259
|
+
|
|
216
260
|
### `syncImports`
|
|
217
261
|
|
|
218
262
|
Validates and optionally fixes:
|
|
@@ -221,6 +265,19 @@ Validates and optionally fixes:
|
|
|
221
265
|
- relative source imports that should become aliases
|
|
222
266
|
- optional `package.json#imports` drift through `packageJsonImports`
|
|
223
267
|
|
|
268
|
+
`syncImports` only rewrites JavaScript and TypeScript module files. Mixed-language repositories can still include Go and Rust under the same `sourceRoot`; those files are ignored by alias syncing instead of causing parser failures.
|
|
269
|
+
|
|
270
|
+
`excludeDirs` now groups scan exclusions in one place, so you can add explicit directories through `excludeDirs.dirs` and opt into root `.gitignore` directory entries through `excludeDirs.gitignore`.
|
|
271
|
+
|
|
272
|
+
Example:
|
|
273
|
+
|
|
274
|
+
```ts
|
|
275
|
+
excludeDirs: {
|
|
276
|
+
dirs: ["coverage", "tmp"],
|
|
277
|
+
gitignore: true,
|
|
278
|
+
},
|
|
279
|
+
```
|
|
280
|
+
|
|
224
281
|
Example targeted CLI usage:
|
|
225
282
|
|
|
226
283
|
```sh
|
|
@@ -242,7 +299,6 @@ Canonical helpers are registered by module export reference:
|
|
|
242
299
|
|
|
243
300
|
```ts
|
|
244
301
|
dry: {
|
|
245
|
-
fix: true,
|
|
246
302
|
helpers: [
|
|
247
303
|
{
|
|
248
304
|
from: "./src/shared/to-text.ts",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-folderization.d.ts","sourceRoot":"","sources":["../../src/checks/fix-folderization.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,uBAAuB,EACvB,oCAAoC,EACrC,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"fix-folderization.d.ts","sourceRoot":"","sources":["../../src/checks/fix-folderization.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,uBAAuB,EACvB,oCAAoC,EACrC,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAQ7E,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;AAEF,iBAAS,4BAA4B,CACnC,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,CAqBjE;AAuKD,iBAAe,gBAAgB,CAC7B,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,EAC7C,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAwDlC;AAED,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -2,13 +2,14 @@ import fs from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { applyTextReplacements, collectModuleSpecifiers } from "../imports/module-specifiers.js";
|
|
4
4
|
import { isRelativeImportSpecifier } from "../imports/resolve.js";
|
|
5
|
+
import { supportsFolderizationFix } from "../shared/languages.js";
|
|
5
6
|
import { FileConflictError, FixFailureError, RewriteFailureError } from "../shared/errors.js";
|
|
6
7
|
import { ensureDotExtension, pathExists, stripKnownExtension, toPosixPath } from "../shared/utils.js";
|
|
7
8
|
import { planFolderizeCompoundFiles } from "./rules/folderize-plan.js";
|
|
8
9
|
function createFolderizationViolation(filePath, suggestedPath, options, details) {
|
|
9
10
|
return {
|
|
10
11
|
rule: "folderize-compound-files",
|
|
11
|
-
fix:
|
|
12
|
+
fix: true,
|
|
12
13
|
filePath,
|
|
13
14
|
message: `file can be grouped under ${suggestedPath}`,
|
|
14
15
|
suggestedPath,
|
|
@@ -76,6 +77,8 @@ async function planImportRewritesForFolderizationMoves(sourceFiles, moves, optio
|
|
|
76
77
|
let rewrittenFiles = 0;
|
|
77
78
|
let rewrittenImports = 0;
|
|
78
79
|
for (const file of sourceFiles) {
|
|
80
|
+
if (!supportsFolderizationFix(file.extension))
|
|
81
|
+
continue;
|
|
79
82
|
const originalText = await fs.readFile(file.absolutePath, "utf8");
|
|
80
83
|
const futureFilePath = movedPaths.get(file.absolutePath) ?? file.absolutePath;
|
|
81
84
|
const replacements = [];
|
|
@@ -169,21 +172,6 @@ async function fixFolderization(sourceFiles, options, logger) {
|
|
|
169
172
|
violations: [],
|
|
170
173
|
};
|
|
171
174
|
}
|
|
172
|
-
if (!options.rules.folderizeCompoundFiles.fix) {
|
|
173
|
-
logger.warn("fix-folderization-disabled", "folderization fix is disabled", {
|
|
174
|
-
candidates: moves.length,
|
|
175
|
-
violationCount: violations.length,
|
|
176
|
-
});
|
|
177
|
-
return {
|
|
178
|
-
ok: false,
|
|
179
|
-
violationCount: violations.length,
|
|
180
|
-
moved_files: 0,
|
|
181
|
-
rewritten_files: 0,
|
|
182
|
-
rewritten_imports: 0,
|
|
183
|
-
ruleResults: {},
|
|
184
|
-
violations,
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
175
|
await validateMovePlan(moves);
|
|
188
176
|
const sourceDirectories = moves.map((move) => path.dirname(move.fromAbsolutePath));
|
|
189
177
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-folderization.js","sourceRoot":"","sources":["../../src/checks/fix-folderization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AASvE,SAAS,4BAA4B,CACnC,QAAgB,EAChB,aAAqB,EACrB,OAA6C,EAC7C,OAAgC;IAEhC,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"fix-folderization.js","sourceRoot":"","sources":["../../src/checks/fix-folderization.ts"],"names":[],"mappings":"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"}
|
package/dist/checks/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { CheckCodeDisciplineOptions, CheckCodeDisciplineResult, CodeDisciplineSyncImportsRuleOptions, FixCodeDisciplineOptions, FixCodeDisciplineResult, NormalizedCheckCodeDisciplineOptions } from "./types.js";
|
|
2
|
-
declare function buildNormalizedSyncOptions(options: NormalizedCheckCodeDisciplineOptions, rule?: CodeDisciplineSyncImportsRuleOptions | undefined): {
|
|
2
|
+
declare function buildNormalizedSyncOptions(options: NormalizedCheckCodeDisciplineOptions, fix: boolean, rule?: CodeDisciplineSyncImportsRuleOptions | undefined): Promise<{
|
|
3
3
|
configPath: string;
|
|
4
4
|
projectRoot: string;
|
|
5
5
|
sourceRoot: string;
|
|
6
6
|
sourceRootRelative: string;
|
|
7
7
|
sourceExtensions: string[];
|
|
8
8
|
excludeDirs: string[];
|
|
9
|
+
excludeGitignoreDirs: boolean;
|
|
10
|
+
gitignorePath: string;
|
|
9
11
|
tsconfigPath: string;
|
|
10
12
|
fix: boolean;
|
|
11
13
|
alias: {
|
|
@@ -16,7 +18,7 @@ declare function buildNormalizedSyncOptions(options: NormalizedCheckCodeDiscipli
|
|
|
16
18
|
allowRelative: string[] | import("../index.js").AllowRelativeFn;
|
|
17
19
|
packageJsonImports: import("../index.js").PackageJsonImportsSyncOptions;
|
|
18
20
|
logging: import("../index.js").LoggingOptions;
|
|
19
|
-
}
|
|
21
|
+
}>;
|
|
20
22
|
declare function checkCodeDiscipline(options: CheckCodeDisciplineOptions): Promise<CheckCodeDisciplineResult>;
|
|
21
23
|
declare function fixCodeDiscipline(options: FixCodeDisciplineOptions): Promise<FixCodeDisciplineResult>;
|
|
22
24
|
export { buildNormalizedSyncOptions, checkCodeDiscipline, fixCodeDiscipline };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,oCAAoC,EACpC,wBAAwB,EACxB,uBAAuB,EAGvB,oCAAoC,EACrC,MAAM,YAAY,CAAC;AAEpB,iBAAe,0BAA0B,CACvC,OAAO,EAAE,oCAAoC,EAC7C,GAAG,EAAE,OAAO,EACZ,IAAI,GAAE,oCAAoC,GAAG,SAAqC;;;;;;;;;;;;;;;;;;;GA+CnF;AAuFD,iBAAe,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAQ1G;AAED,iBAAe,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAmEpG;AAED,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/checks/index.js
CHANGED
|
@@ -1,26 +1,54 @@
|
|
|
1
|
+
import path from "node:path";
|
|
1
2
|
import { normalizeCheckCodeDisciplineOptions } from "../config/normalize-check-options.js";
|
|
2
3
|
import { collectSyncImportViolations } from "../imports/check-sync-imports.js";
|
|
3
4
|
import { scanSourceFiles } from "../imports/scan.js";
|
|
4
5
|
import { syncImports } from "../imports/sync-imports.js";
|
|
6
|
+
import { DEFAULT_EXCLUDE_DIRS, DEFAULT_SOURCE_EXTENSIONS } from "../shared/constants.js";
|
|
7
|
+
import { readGitignoreExcludedDirs } from "../shared/gitignore.js";
|
|
5
8
|
import { resolveLogger } from "../shared/logging.js";
|
|
9
|
+
import { ensureDotExtension, normalizeRelativePath, uniqueStrings } from "../shared/utils.js";
|
|
6
10
|
import { shouldRunRule } from "./rule-slugs.js";
|
|
7
11
|
import { fixFolderization } from "./fix-folderization.js";
|
|
8
12
|
import { runFolderizeCompoundFilesRule } from "./rules/folderize-compound-files.js";
|
|
9
13
|
import { collectDryViolations, fixDryRule } from "./rules/dry.js";
|
|
10
14
|
import { runMaxFileLinesRule } from "./rules/max-file-lines.js";
|
|
11
15
|
import { runMaxFunctionLinesRule } from "./rules/max-function-lines.js";
|
|
12
|
-
function buildNormalizedSyncOptions(options, rule = options.rules.syncImports) {
|
|
16
|
+
async function buildNormalizedSyncOptions(options, fix, rule = options.rules.syncImports) {
|
|
13
17
|
if (!rule)
|
|
14
18
|
return null;
|
|
19
|
+
const sourceRootInput = rule.sourceRoot ?? options.sourceRoot;
|
|
20
|
+
const sourceRoot = path.isAbsolute(sourceRootInput)
|
|
21
|
+
? path.resolve(sourceRootInput)
|
|
22
|
+
: path.resolve(options.projectRoot, sourceRootInput);
|
|
23
|
+
const sourceRootRelative = normalizeRelativePath(path.relative(options.projectRoot, sourceRoot));
|
|
24
|
+
const sourceExtensions = rule.sourceExtensions
|
|
25
|
+
? uniqueStrings([
|
|
26
|
+
...(rule.includeDefaultSourceExtensions === false ? [] : DEFAULT_SOURCE_EXTENSIONS),
|
|
27
|
+
...rule.sourceExtensions.map(ensureDotExtension),
|
|
28
|
+
])
|
|
29
|
+
: options.sourceExtensions;
|
|
30
|
+
const gitignorePath = rule.gitignorePath ?? options.gitignorePath;
|
|
31
|
+
const gitignoreDirs = rule.excludeDirs?.gitignore === true
|
|
32
|
+
? await readGitignoreExcludedDirs(options.projectRoot, gitignorePath)
|
|
33
|
+
: [];
|
|
34
|
+
const excludeDirs = rule.excludeDirs
|
|
35
|
+
? uniqueStrings([
|
|
36
|
+
...DEFAULT_EXCLUDE_DIRS,
|
|
37
|
+
...(rule.excludeDirs.dirs ?? []),
|
|
38
|
+
...gitignoreDirs,
|
|
39
|
+
])
|
|
40
|
+
: options.excludeDirs;
|
|
15
41
|
return {
|
|
16
42
|
configPath: options.configPath,
|
|
17
43
|
projectRoot: options.projectRoot,
|
|
18
|
-
sourceRoot
|
|
19
|
-
sourceRootRelative
|
|
20
|
-
sourceExtensions
|
|
21
|
-
excludeDirs
|
|
44
|
+
sourceRoot,
|
|
45
|
+
sourceRootRelative,
|
|
46
|
+
sourceExtensions,
|
|
47
|
+
excludeDirs,
|
|
48
|
+
excludeGitignoreDirs: rule.excludeDirs?.gitignore ?? options.excludeGitignoreDirs,
|
|
49
|
+
gitignorePath,
|
|
22
50
|
tsconfigPath: rule.tsconfigPath ?? `${options.projectRoot}/tsconfig.json`,
|
|
23
|
-
fix
|
|
51
|
+
fix,
|
|
24
52
|
alias: {
|
|
25
53
|
prefix: rule.alias?.prefix ?? "#",
|
|
26
54
|
strategy: rule.alias?.strategy ?? "random",
|
|
@@ -68,7 +96,7 @@ async function collectViolations(options) {
|
|
|
68
96
|
violations.push(...await collectDryViolations(sourceFiles, options));
|
|
69
97
|
}
|
|
70
98
|
if (options.rules.syncImports && shouldRunRule("sync-imports", options.onlyRules)) {
|
|
71
|
-
const normalizedSyncOptions = buildNormalizedSyncOptions(options);
|
|
99
|
+
const normalizedSyncOptions = await buildNormalizedSyncOptions(options, false);
|
|
72
100
|
if (normalizedSyncOptions) {
|
|
73
101
|
violations.push(...await collectSyncImportViolations(sourceFiles, normalizedSyncOptions));
|
|
74
102
|
}
|
|
@@ -128,7 +156,7 @@ async function fixCodeDiscipline(options) {
|
|
|
128
156
|
}
|
|
129
157
|
}
|
|
130
158
|
if (normalized.rules.syncImports && shouldRunFixRule("sync-imports", normalized)) {
|
|
131
|
-
const syncOptions = buildNormalizedSyncOptions(normalized);
|
|
159
|
+
const syncOptions = await buildNormalizedSyncOptions(normalized, true);
|
|
132
160
|
if (syncOptions) {
|
|
133
161
|
const syncResult = await syncImports(syncOptions);
|
|
134
162
|
ruleResults["sync-imports"] = mapFixRuleResult(syncResult);
|
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,mCAAmC,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAYxE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dry.d.ts","sourceRoot":"","sources":["../../../src/checks/rules/dry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,2BAA2B,EAC3B,oCAAoC,EAErC,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"dry.d.ts","sourceRoot":"","sources":["../../../src/checks/rules/dry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,2BAA2B,EAC3B,oCAAoC,EAErC,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AA09BhF,iBAAe,UAAU,CACvB,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,2BAA2B,CAAC,CAsJtC;AAED,iBAAe,oBAAoB,CACjC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAOpC;AAED,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/checks/rules/dry.js
CHANGED
|
@@ -3,6 +3,7 @@ import path from "node:path";
|
|
|
3
3
|
import ts from "typescript";
|
|
4
4
|
import { parseSource } from "../../imports/module-specifiers.js";
|
|
5
5
|
import { resolveRelativeImport } from "../../imports/resolve.js";
|
|
6
|
+
import { isTypeScriptFamilyExtension } from "../../shared/languages.js";
|
|
6
7
|
import { FixFailureError, InvalidCodeDisciplineConfigError, } from "../../shared/errors.js";
|
|
7
8
|
import { isFile, stableSerialize, stripKnownExtension, toPosixPath, } from "../../shared/utils.js";
|
|
8
9
|
const DRY_RESOLUTION_EXTENSIONS = [
|
|
@@ -15,6 +16,9 @@ const DRY_RESOLUTION_EXTENSIONS = [
|
|
|
15
16
|
".cts",
|
|
16
17
|
".cjs",
|
|
17
18
|
];
|
|
19
|
+
function filterDrySourceFiles(sourceFiles) {
|
|
20
|
+
return sourceFiles.filter((file) => isTypeScriptFamilyExtension(file.extension));
|
|
21
|
+
}
|
|
18
22
|
const SAFE_GLOBAL_IDENTIFIERS = new Set([
|
|
19
23
|
"Array",
|
|
20
24
|
"BigInt",
|
|
@@ -569,7 +573,7 @@ async function resolveDryHelpers(rule, options) {
|
|
|
569
573
|
function createDryViolation(candidate, options) {
|
|
570
574
|
return {
|
|
571
575
|
rule: "dry",
|
|
572
|
-
fix:
|
|
576
|
+
fix: true,
|
|
573
577
|
filePath: candidate.filePath,
|
|
574
578
|
message: `${candidate.localName ?? "anonymous function"} duplicates registered helper ${candidate.helper.helperKey}`,
|
|
575
579
|
details: {
|
|
@@ -663,11 +667,8 @@ async function collectExistingImports(sourceFile, filePath, options) {
|
|
|
663
667
|
continue;
|
|
664
668
|
}
|
|
665
669
|
const resolved = await resolveRelativeImport(statement.moduleSpecifier.text, filePath, {
|
|
666
|
-
projectRoot: options.projectRoot,
|
|
667
670
|
sourceRoot: options.sourceRoot,
|
|
668
|
-
sourceRootRelative: options.sourceRootRelative,
|
|
669
671
|
sourceExtensions: options.sourceExtensions,
|
|
670
|
-
excludeDirs: options.excludeDirs,
|
|
671
672
|
});
|
|
672
673
|
if (!resolved)
|
|
673
674
|
continue;
|
|
@@ -770,7 +771,7 @@ async function fixDryRule(sourceFiles, options) {
|
|
|
770
771
|
};
|
|
771
772
|
}
|
|
772
773
|
const helpers = await resolveDryHelpers(rule, options);
|
|
773
|
-
const candidates = await collectDryCandidates(sourceFiles, helpers, options);
|
|
774
|
+
const candidates = await collectDryCandidates(filterDrySourceFiles(sourceFiles), helpers, options);
|
|
774
775
|
const violations = candidates.map((candidate) => createDryViolation(candidate, options));
|
|
775
776
|
if (violations.length === 0) {
|
|
776
777
|
return {
|
|
@@ -781,15 +782,6 @@ async function fixDryRule(sourceFiles, options) {
|
|
|
781
782
|
removed_duplicates: 0,
|
|
782
783
|
};
|
|
783
784
|
}
|
|
784
|
-
if (!rule.fix) {
|
|
785
|
-
return {
|
|
786
|
-
ok: false,
|
|
787
|
-
violationCount: violations.length,
|
|
788
|
-
violations,
|
|
789
|
-
added_imports: 0,
|
|
790
|
-
removed_duplicates: 0,
|
|
791
|
-
};
|
|
792
|
-
}
|
|
793
785
|
const candidatesByFile = new Map();
|
|
794
786
|
const fixedCandidates = new Set();
|
|
795
787
|
for (const candidate of candidates.filter((entry) => entry.safeToFix)) {
|
|
@@ -906,7 +898,7 @@ async function collectDryViolations(sourceFiles, options) {
|
|
|
906
898
|
if (!rule)
|
|
907
899
|
return [];
|
|
908
900
|
const helpers = await resolveDryHelpers(rule, options);
|
|
909
|
-
const candidates = await collectDryCandidates(sourceFiles, helpers, options);
|
|
901
|
+
const candidates = await collectDryCandidates(filterDrySourceFiles(sourceFiles), helpers, options);
|
|
910
902
|
return candidates.map((candidate) => createDryViolation(candidate, options));
|
|
911
903
|
}
|
|
912
904
|
export { collectDryViolations, fixDryRule };
|