@trebired/code-discipline 1.4.1 → 1.5.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 +8 -0
- package/README.md +147 -6
- package/dist/checks/index.d.ts.map +1 -1
- package/dist/checks/index.js +5 -0
- package/dist/checks/index.js.map +1 -1
- package/dist/checks/rules/max-function-lines.d.ts +6 -0
- package/dist/checks/rules/max-function-lines.d.ts.map +1 -0
- package/dist/checks/rules/max-function-lines.js +103 -0
- package/dist/checks/rules/max-function-lines.js.map +1 -0
- package/dist/checks/types.d.ts +43 -1
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +10 -12
- package/dist/cli/run-cli.js.map +1 -1
- package/dist/config/index.d.ts +4 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +29 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/normalize-check-options.d.ts.map +1 -1
- package/dist/config/normalize-check-options.js +2 -1
- package/dist/config/normalize-check-options.js.map +1 -1
- package/dist/config/normalize-rule-options.d.ts +6 -2
- package/dist/config/normalize-rule-options.d.ts.map +1 -1
- package/dist/config/normalize-rule-options.js +16 -1
- package/dist/config/normalize-rule-options.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/run.d.ts +3 -3
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +28 -8
- package/dist/run.js.map +1 -1
- package/dist/runtime/orchestrate.d.ts +20 -0
- package/dist/runtime/orchestrate.d.ts.map +1 -0
- package/dist/runtime/orchestrate.js +60 -0
- package/dist/runtime/orchestrate.js.map +1 -0
- package/dist/runtime/runtime-imports-sync.d.ts +13 -0
- package/dist/runtime/runtime-imports-sync.d.ts.map +1 -0
- package/dist/runtime/runtime-imports-sync.js +87 -0
- package/dist/runtime/runtime-imports-sync.js.map +1 -0
- package/dist/runtime/tsconfig-paths.d.ts +21 -0
- package/dist/runtime/tsconfig-paths.d.ts.map +1 -0
- package/dist/runtime/tsconfig-paths.js +89 -0
- package/dist/runtime/tsconfig-paths.js.map +1 -0
- package/dist/shared/discipline-types.d.ts +1 -1
- package/dist/shared/discipline-types.d.ts.map +1 -1
- package/package.json +9 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@trebired/code-discipline` will be documented here.
|
|
4
4
|
|
|
5
|
+
## 1.5.0
|
|
6
|
+
|
|
7
|
+
- Added direct config auto-discovery so the CLI can be used as `code-discipline check`, `fix`, and `sync` without mandatory wrapper scripts or `--config` flags.
|
|
8
|
+
- Added generic lifecycle hooks through config with `beforeRun`, `afterRun`, `beforeMode`, and `afterMode`.
|
|
9
|
+
- Added optional `tsconfigPaths` normalization support with package-owned pre-run transforms and optional restoration after the run.
|
|
10
|
+
- Added optional `runtimeImportsSync` so `package.json#imports` can be synced from `tsconfig.compilerOptions.paths` while preserving unrelated existing imports.
|
|
11
|
+
- Added exports for config discovery and package-owned runtime helper utilities.
|
|
12
|
+
|
|
5
13
|
## 1.4.1
|
|
6
14
|
|
|
7
15
|
- Fixed relative import resolution for TypeScript ESM-style `.js` specifiers so imports like `./x.js` can resolve to source files such as `./x.ts` during sync checks and rewrites.
|
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ npm install @trebired/code-discipline
|
|
|
17
17
|
Some repository rules are not really single-file lint rules. They are about the shape of the tree:
|
|
18
18
|
|
|
19
19
|
- files growing too large
|
|
20
|
+
- functions growing too large
|
|
20
21
|
- compound filenames that want to become folders
|
|
21
22
|
- alias drift between `tsconfig.json` and source imports
|
|
22
23
|
- returning structured policy results that a caller can interpret
|
|
@@ -25,19 +26,50 @@ That is the lane of this package.
|
|
|
25
26
|
|
|
26
27
|
## Commands
|
|
27
28
|
|
|
29
|
+
```sh
|
|
30
|
+
code-discipline check
|
|
31
|
+
code-discipline sync
|
|
32
|
+
code-discipline fix
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The CLI auto-discovers a config module in the current project root. Supported default names:
|
|
36
|
+
|
|
37
|
+
- `discipline.config.mjs`
|
|
38
|
+
- `discipline.config.js`
|
|
39
|
+
- `discipline.config.cjs`
|
|
40
|
+
- `code-discipline.config.mjs`
|
|
41
|
+
- `code-discipline.config.js`
|
|
42
|
+
- `code-discipline.config.cjs`
|
|
43
|
+
|
|
44
|
+
You can still override discovery explicitly:
|
|
45
|
+
|
|
28
46
|
```sh
|
|
29
47
|
code-discipline check --config ./discipline.config.mjs
|
|
30
|
-
|
|
31
|
-
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Typical `package.json` scripts can now stay direct and generic:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"scripts": {
|
|
55
|
+
"discipline:check": "code-discipline check",
|
|
56
|
+
"discipline:fix": "code-discipline fix",
|
|
57
|
+
"discipline:sync": "code-discipline sync"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
32
60
|
```
|
|
33
61
|
|
|
34
62
|
Command responsibilities stay clean:
|
|
35
63
|
|
|
36
64
|
- `check`: read-only validation and logging
|
|
37
|
-
- `sync`:
|
|
38
|
-
- `fix`:
|
|
65
|
+
- `sync`: package-owned synchronization work from config
|
|
66
|
+
- `fix`: configured structural fixes only
|
|
39
67
|
|
|
40
|
-
|
|
68
|
+
Mutations stay opt-in:
|
|
69
|
+
|
|
70
|
+
- `syncImports` rewrites imports and `tsconfig.json` only when `syncImports.fix` is `true`
|
|
71
|
+
- `runtimeImportsSync` updates `package.json#imports` only when that feature is enabled
|
|
72
|
+
- `fix` applies folderization moves only when `folderizeCompoundFiles.fix` is `true`
|
|
41
73
|
|
|
42
74
|
## Simple Runtime API
|
|
43
75
|
|
|
@@ -54,6 +86,10 @@ const result = await codeDiscipline({
|
|
|
54
86
|
severity: "warning",
|
|
55
87
|
max: 500,
|
|
56
88
|
},
|
|
89
|
+
maxFunctionLines: {
|
|
90
|
+
severity: "warning",
|
|
91
|
+
max: 80,
|
|
92
|
+
},
|
|
57
93
|
},
|
|
58
94
|
});
|
|
59
95
|
```
|
|
@@ -120,11 +156,33 @@ export default {
|
|
|
120
156
|
enabled: true,
|
|
121
157
|
quiet: false,
|
|
122
158
|
},
|
|
159
|
+
tsconfigPaths: {
|
|
160
|
+
normalize: "relative-dot-prefix",
|
|
161
|
+
restoreAfterRun: true,
|
|
162
|
+
},
|
|
163
|
+
runtimeImportsSync: {
|
|
164
|
+
enabled: true,
|
|
165
|
+
source: "tsconfig.paths",
|
|
166
|
+
target: "package.json.imports",
|
|
167
|
+
aliasPrefix: "#",
|
|
168
|
+
},
|
|
169
|
+
lifecycle: {
|
|
170
|
+
async beforeRun(context) {
|
|
171
|
+
context.state.started = true;
|
|
172
|
+
},
|
|
173
|
+
async afterRun(context, result) {
|
|
174
|
+
context.state.finished = result.ok;
|
|
175
|
+
},
|
|
176
|
+
},
|
|
123
177
|
rules: {
|
|
124
178
|
maxFileLines: {
|
|
125
179
|
severity: "warning",
|
|
126
180
|
max: 500,
|
|
127
181
|
},
|
|
182
|
+
maxFunctionLines: {
|
|
183
|
+
severity: "warning",
|
|
184
|
+
max: 80,
|
|
185
|
+
},
|
|
128
186
|
folderizeCompoundFiles: {
|
|
129
187
|
severity: "error",
|
|
130
188
|
fix: true,
|
|
@@ -142,6 +200,67 @@ export default {
|
|
|
142
200
|
};
|
|
143
201
|
```
|
|
144
202
|
|
|
203
|
+
## Generic Lifecycle Hooks
|
|
204
|
+
|
|
205
|
+
If a project needs package-owned preprocessing or postprocessing around discipline commands, use config hooks instead of wrapper scripts.
|
|
206
|
+
|
|
207
|
+
Available hooks:
|
|
208
|
+
|
|
209
|
+
- `lifecycle.beforeRun(context)`
|
|
210
|
+
- `lifecycle.afterRun(context, result)`
|
|
211
|
+
- `lifecycle.beforeMode(context)`
|
|
212
|
+
- `lifecycle.afterMode(context, result)`
|
|
213
|
+
|
|
214
|
+
The hook context includes:
|
|
215
|
+
|
|
216
|
+
- `mode`
|
|
217
|
+
- `projectRoot`
|
|
218
|
+
- `configPath`
|
|
219
|
+
- `config`
|
|
220
|
+
- mutable `state`
|
|
221
|
+
|
|
222
|
+
## Optional Tsconfig Path Normalization
|
|
223
|
+
|
|
224
|
+
Use `tsconfigPaths` when a project needs temporary normalization of `compilerOptions.paths` before discipline runs.
|
|
225
|
+
|
|
226
|
+
```js
|
|
227
|
+
export default {
|
|
228
|
+
tsconfigPaths: {
|
|
229
|
+
normalize: "relative-dot-prefix",
|
|
230
|
+
restoreAfterRun: true,
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Supported normalization modes:
|
|
236
|
+
|
|
237
|
+
- `"relative-dot-prefix"`: turns `src/x.ts` into `./src/x.ts`
|
|
238
|
+
- `"strip-dot-prefix"`: turns `./src/x.ts` into `src/x.ts`
|
|
239
|
+
- `"none"`: disables the helper
|
|
240
|
+
|
|
241
|
+
`restoreAfterRun: true` restores the original `tsconfig.json` after read-oriented runs so the normalization can stay package-owned instead of living in shell wrappers.
|
|
242
|
+
|
|
243
|
+
## Optional Package Imports Sync
|
|
244
|
+
|
|
245
|
+
Use `runtimeImportsSync` when a project wants `package.json#imports` mirrored from `tsconfig.compilerOptions.paths`.
|
|
246
|
+
|
|
247
|
+
```js
|
|
248
|
+
export default {
|
|
249
|
+
runtimeImportsSync: {
|
|
250
|
+
enabled: true,
|
|
251
|
+
source: "tsconfig.paths",
|
|
252
|
+
target: "package.json.imports",
|
|
253
|
+
aliasPrefix: "#",
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Behavior:
|
|
259
|
+
|
|
260
|
+
- only aliases matching the configured prefix or prefixes are managed
|
|
261
|
+
- unrelated existing `package.json#imports` entries are preserved
|
|
262
|
+
- the feature runs through `code-discipline sync` and `mode: "sync"` / `mode: "startup"`
|
|
263
|
+
|
|
145
264
|
## Checks
|
|
146
265
|
|
|
147
266
|
`checkCodeDiscipline()` is read-only. It never moves files, rewrites imports, or updates `tsconfig.json`.
|
|
@@ -156,6 +275,10 @@ const result = await checkCodeDiscipline({
|
|
|
156
275
|
severity: "warning",
|
|
157
276
|
max: 500,
|
|
158
277
|
},
|
|
278
|
+
maxFunctionLines: {
|
|
279
|
+
severity: "warning",
|
|
280
|
+
max: 80,
|
|
281
|
+
},
|
|
159
282
|
folderizeCompoundFiles: {
|
|
160
283
|
severity: "error",
|
|
161
284
|
separators: ["_", "-"],
|
|
@@ -178,7 +301,7 @@ Result shape:
|
|
|
178
301
|
type CodeDisciplineSeverity = "error" | "warning";
|
|
179
302
|
|
|
180
303
|
type CodeDisciplineViolation = {
|
|
181
|
-
rule: "max-file-lines" | "folderize-compound-files" | "sync-imports";
|
|
304
|
+
rule: "max-file-lines" | "max-function-lines" | "folderize-compound-files" | "sync-imports";
|
|
182
305
|
severity: CodeDisciplineSeverity;
|
|
183
306
|
fix: boolean;
|
|
184
307
|
filePath: string;
|
|
@@ -197,6 +320,19 @@ type CodeDisciplineResult = {
|
|
|
197
320
|
|
|
198
321
|
`ok` becomes `false` only when at least one returned violation has `severity: "error"`.
|
|
199
322
|
|
|
323
|
+
## Function Length
|
|
324
|
+
|
|
325
|
+
`maxFunctionLines` reports function-like declarations whose total span exceeds a configured limit.
|
|
326
|
+
|
|
327
|
+
- function declarations
|
|
328
|
+
- function expressions
|
|
329
|
+
- arrow functions
|
|
330
|
+
- class methods
|
|
331
|
+
- constructors
|
|
332
|
+
- getters and setters
|
|
333
|
+
|
|
334
|
+
Violations include the function name when available, plus `startLine` and `endLine` details.
|
|
335
|
+
|
|
200
336
|
## Folderization
|
|
201
337
|
|
|
202
338
|
`folderizeCompoundFiles` is structural. It does not depend on configured suffix lists.
|
|
@@ -274,5 +410,10 @@ The default/common logger adaptation path is powered by `@trebired/logger-adapte
|
|
|
274
410
|
- `fixCodeDiscipline()`
|
|
275
411
|
- `syncImports()`
|
|
276
412
|
- `defineCodeDisciplineConfig()`
|
|
413
|
+
- `findCodeDisciplineConfigModule()`
|
|
414
|
+
- `loadResolvedCodeDisciplineConfig()`
|
|
415
|
+
- `prepareTsconfigPaths()`
|
|
416
|
+
- `restoreTsconfigPaths()`
|
|
417
|
+
- `syncPackageJsonImportsFromTsconfigPaths()`
|
|
277
418
|
|
|
278
419
|
The package also exports the public TypeScript types for severity, rule config, results, violations, alias strategies, logging adapters, and source scan rows.
|
|
@@ -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":"AASA,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,oCAAoC,EACrC,MAAM,YAAY,CAAC;AAEpB,iBAAS,0BAA0B,CAAC,OAAO,EAAE,oCAAoC;;;;;;;;;;;;;;;;EAoBhF;AAoFD,iBAAe,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAQ1G;AAED,iBAAe,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAuBpG;AAED,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/checks/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { resolveLogger } from "../shared/logging.js";
|
|
|
5
5
|
import { fixFolderization } from "./fix-folderization.js";
|
|
6
6
|
import { runFolderizeCompoundFilesRule } from "./rules/folderize-compound-files.js";
|
|
7
7
|
import { runMaxFileLinesRule } from "./rules/max-file-lines.js";
|
|
8
|
+
import { runMaxFunctionLinesRule } from "./rules/max-function-lines.js";
|
|
8
9
|
function buildNormalizedSyncOptions(options) {
|
|
9
10
|
if (!options.rules.syncImports)
|
|
10
11
|
return null;
|
|
@@ -79,6 +80,9 @@ async function collectViolations(options) {
|
|
|
79
80
|
const maxFileViolations = options.rules.maxFileLines
|
|
80
81
|
? await runMaxFileLinesRule(sourceFiles, options)
|
|
81
82
|
: [];
|
|
83
|
+
const maxFunctionViolations = options.rules.maxFunctionLines
|
|
84
|
+
? await runMaxFunctionLinesRule(sourceFiles, options)
|
|
85
|
+
: [];
|
|
82
86
|
const folderizeViolations = options.rules.folderizeCompoundFiles
|
|
83
87
|
? runFolderizeCompoundFilesRule(sourceFiles, options)
|
|
84
88
|
: [];
|
|
@@ -88,6 +92,7 @@ async function collectViolations(options) {
|
|
|
88
92
|
: [];
|
|
89
93
|
return sortViolations([
|
|
90
94
|
...maxFileViolations,
|
|
95
|
+
...maxFunctionViolations,
|
|
91
96
|
...folderizeViolations,
|
|
92
97
|
...syncImportViolations,
|
|
93
98
|
]);
|
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,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { NormalizedCheckCodeDisciplineOptions } from "../types.js";
|
|
2
|
+
import type { ScannedSourceFile } from "../../imports/types.js";
|
|
3
|
+
import type { CodeDisciplineViolation } from "../../shared/discipline-types.js";
|
|
4
|
+
declare function runMaxFunctionLinesRule(sourceFiles: ScannedSourceFile[], options: NormalizedCheckCodeDisciplineOptions): Promise<CodeDisciplineViolation[]>;
|
|
5
|
+
export { runMaxFunctionLinesRule };
|
|
6
|
+
//# sourceMappingURL=max-function-lines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-function-lines.d.ts","sourceRoot":"","sources":["../../../src/checks/rules/max-function-lines.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAwFhF,iBAAe,uBAAuB,CACpC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAgCpC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
import { parseSource } from "../../imports/module-specifiers.js";
|
|
4
|
+
function isFunctionLikeWithBody(node) {
|
|
5
|
+
return ((ts.isFunctionDeclaration(node) && node.body !== undefined)
|
|
6
|
+
|| (ts.isMethodDeclaration(node) && node.body !== undefined)
|
|
7
|
+
|| (ts.isConstructorDeclaration(node) && node.body !== undefined)
|
|
8
|
+
|| (ts.isGetAccessorDeclaration(node) && node.body !== undefined)
|
|
9
|
+
|| (ts.isSetAccessorDeclaration(node) && node.body !== undefined)
|
|
10
|
+
|| (ts.isFunctionExpression(node) && node.body !== undefined)
|
|
11
|
+
|| (ts.isArrowFunction(node) && node.body !== undefined));
|
|
12
|
+
}
|
|
13
|
+
function resolveFunctionKind(node) {
|
|
14
|
+
if (ts.isMethodDeclaration(node))
|
|
15
|
+
return "method";
|
|
16
|
+
if (ts.isConstructorDeclaration(node))
|
|
17
|
+
return "constructor";
|
|
18
|
+
if (ts.isGetAccessorDeclaration(node))
|
|
19
|
+
return "getter";
|
|
20
|
+
if (ts.isSetAccessorDeclaration(node))
|
|
21
|
+
return "setter";
|
|
22
|
+
if (ts.isArrowFunction(node))
|
|
23
|
+
return "arrow-function";
|
|
24
|
+
if (ts.isFunctionExpression(node))
|
|
25
|
+
return "function-expression";
|
|
26
|
+
return "function";
|
|
27
|
+
}
|
|
28
|
+
function resolveFunctionName(node, sourceFile) {
|
|
29
|
+
if ("name" in node && node.name) {
|
|
30
|
+
return node.name.getText(sourceFile);
|
|
31
|
+
}
|
|
32
|
+
const parent = node.parent;
|
|
33
|
+
if (parent && ts.isVariableDeclaration(parent) && ts.isIdentifier(parent.name)) {
|
|
34
|
+
return parent.name.text;
|
|
35
|
+
}
|
|
36
|
+
if (parent && ts.isBinaryExpression(parent) && ts.isIdentifier(parent.left)) {
|
|
37
|
+
return parent.left.text;
|
|
38
|
+
}
|
|
39
|
+
if (parent && ts.isPropertyAssignment(parent)) {
|
|
40
|
+
return parent.name.getText(sourceFile);
|
|
41
|
+
}
|
|
42
|
+
return "anonymous";
|
|
43
|
+
}
|
|
44
|
+
function describeFunction(node, sourceFile) {
|
|
45
|
+
const start = node.getStart(sourceFile);
|
|
46
|
+
const end = node.getEnd();
|
|
47
|
+
const startLine = sourceFile.getLineAndCharacterOfPosition(start).line + 1;
|
|
48
|
+
const endLine = sourceFile.getLineAndCharacterOfPosition(end).line + 1;
|
|
49
|
+
const lineCount = Math.max(1, endLine - startLine + 1);
|
|
50
|
+
return {
|
|
51
|
+
kind: resolveFunctionKind(node),
|
|
52
|
+
lineCount,
|
|
53
|
+
name: resolveFunctionName(node, sourceFile),
|
|
54
|
+
startLine,
|
|
55
|
+
endLine,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function collectFunctionDescriptors(sourceFile) {
|
|
59
|
+
const descriptors = [];
|
|
60
|
+
function visit(node) {
|
|
61
|
+
if (isFunctionLikeWithBody(node)) {
|
|
62
|
+
const descriptor = describeFunction(node, sourceFile);
|
|
63
|
+
if (descriptor) {
|
|
64
|
+
descriptors.push(descriptor);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
ts.forEachChild(node, visit);
|
|
68
|
+
}
|
|
69
|
+
visit(sourceFile);
|
|
70
|
+
return descriptors;
|
|
71
|
+
}
|
|
72
|
+
async function runMaxFunctionLinesRule(sourceFiles, options) {
|
|
73
|
+
if (!options.rules.maxFunctionLines)
|
|
74
|
+
return [];
|
|
75
|
+
const violations = [];
|
|
76
|
+
for (const file of sourceFiles) {
|
|
77
|
+
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
78
|
+
const sourceFile = parseSource(text, file.absolutePath);
|
|
79
|
+
const functions = collectFunctionDescriptors(sourceFile);
|
|
80
|
+
for (const descriptor of functions) {
|
|
81
|
+
if (descriptor.lineCount <= options.rules.maxFunctionLines.max)
|
|
82
|
+
continue;
|
|
83
|
+
violations.push({
|
|
84
|
+
rule: "max-function-lines",
|
|
85
|
+
severity: options.rules.maxFunctionLines.severity,
|
|
86
|
+
fix: false,
|
|
87
|
+
filePath: file.relativeFromProjectRoot,
|
|
88
|
+
message: `${descriptor.kind} ${descriptor.name} has ${descriptor.lineCount} lines and exceeds the limit of ${options.rules.maxFunctionLines.max}`,
|
|
89
|
+
details: {
|
|
90
|
+
functionKind: descriptor.kind,
|
|
91
|
+
functionName: descriptor.name,
|
|
92
|
+
lineCount: descriptor.lineCount,
|
|
93
|
+
max: options.rules.maxFunctionLines.max,
|
|
94
|
+
startLine: descriptor.startLine,
|
|
95
|
+
endLine: descriptor.endLine,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return violations;
|
|
101
|
+
}
|
|
102
|
+
export { runMaxFunctionLinesRule };
|
|
103
|
+
//# sourceMappingURL=max-function-lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-function-lines.js","sourceRoot":"","sources":["../../../src/checks/rules/max-function-lines.ts"],"names":[],"mappings":"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"}
|
package/dist/checks/types.d.ts
CHANGED
|
@@ -1,21 +1,55 @@
|
|
|
1
1
|
import type { LoggingOptions } from "../shared/logging-types.js";
|
|
2
2
|
import type { SourceScanOptions, SyncImportsRuleOptions } from "../imports/types.js";
|
|
3
3
|
import type { CodeDisciplineResult, CodeDisciplineSeverity } from "../shared/discipline-types.js";
|
|
4
|
+
type CodeDisciplineMode = "check" | "fix" | "sync";
|
|
5
|
+
type CodeDisciplineRuntimeMode = CodeDisciplineMode | "startup";
|
|
4
6
|
type SeverityRuleOptions = {
|
|
5
7
|
severity?: CodeDisciplineSeverity;
|
|
6
8
|
};
|
|
7
9
|
type MaxFileLinesRuleOptions = SeverityRuleOptions & {
|
|
8
10
|
max?: number;
|
|
9
11
|
};
|
|
12
|
+
type MaxFunctionLinesRuleOptions = SeverityRuleOptions & {
|
|
13
|
+
max?: number;
|
|
14
|
+
};
|
|
10
15
|
type FolderizeCompoundFilesRuleOptions = SeverityRuleOptions & {
|
|
11
16
|
fix?: boolean;
|
|
12
17
|
separators?: string[];
|
|
13
18
|
};
|
|
14
19
|
type CodeDisciplineRules = {
|
|
15
20
|
maxFileLines?: MaxFileLinesRuleOptions;
|
|
21
|
+
maxFunctionLines?: MaxFunctionLinesRuleOptions;
|
|
16
22
|
folderizeCompoundFiles?: FolderizeCompoundFilesRuleOptions;
|
|
17
23
|
syncImports?: SyncImportsRuleOptions;
|
|
18
24
|
};
|
|
25
|
+
type TsconfigPathsNormalizeMode = "relative-dot-prefix" | "strip-dot-prefix" | "none";
|
|
26
|
+
type CodeDisciplineTsconfigPathsOptions = {
|
|
27
|
+
tsconfigPath?: string;
|
|
28
|
+
normalize?: TsconfigPathsNormalizeMode;
|
|
29
|
+
restoreAfterRun?: boolean;
|
|
30
|
+
};
|
|
31
|
+
type CodeDisciplineRuntimeImportsSyncOptions = {
|
|
32
|
+
enabled?: boolean;
|
|
33
|
+
source?: "tsconfig.paths";
|
|
34
|
+
target?: "package.json.imports";
|
|
35
|
+
aliasPrefix?: string | string[];
|
|
36
|
+
packageJsonPath?: string;
|
|
37
|
+
tsconfigPath?: string;
|
|
38
|
+
};
|
|
39
|
+
type CodeDisciplineLifecycleContext = {
|
|
40
|
+
mode: CodeDisciplineRuntimeMode;
|
|
41
|
+
projectRoot: string;
|
|
42
|
+
configPath?: string;
|
|
43
|
+
config: CodeDisciplineConfig;
|
|
44
|
+
state: Record<string, unknown>;
|
|
45
|
+
};
|
|
46
|
+
type CodeDisciplineLifecycleHookResult = void | Promise<void>;
|
|
47
|
+
type CodeDisciplineLifecycleHooks = {
|
|
48
|
+
beforeRun?: (context: CodeDisciplineLifecycleContext) => CodeDisciplineLifecycleHookResult;
|
|
49
|
+
afterRun?: (context: CodeDisciplineLifecycleContext, result: unknown) => CodeDisciplineLifecycleHookResult;
|
|
50
|
+
beforeMode?: (context: CodeDisciplineLifecycleContext) => CodeDisciplineLifecycleHookResult;
|
|
51
|
+
afterMode?: (context: CodeDisciplineLifecycleContext, result: unknown) => CodeDisciplineLifecycleHookResult;
|
|
52
|
+
};
|
|
19
53
|
type CheckCodeDisciplineOptions = {
|
|
20
54
|
projectRoot: string;
|
|
21
55
|
sourceRoot?: string;
|
|
@@ -23,6 +57,9 @@ type CheckCodeDisciplineOptions = {
|
|
|
23
57
|
excludeDirs?: string[];
|
|
24
58
|
logging?: LoggingOptions;
|
|
25
59
|
rules?: CodeDisciplineRules;
|
|
60
|
+
lifecycle?: CodeDisciplineLifecycleHooks;
|
|
61
|
+
tsconfigPaths?: CodeDisciplineTsconfigPathsOptions;
|
|
62
|
+
runtimeImportsSync?: CodeDisciplineRuntimeImportsSyncOptions;
|
|
26
63
|
};
|
|
27
64
|
type FixCodeDisciplineOptions = CheckCodeDisciplineOptions;
|
|
28
65
|
type CodeDisciplineConfig = Omit<CheckCodeDisciplineOptions, "projectRoot">;
|
|
@@ -30,6 +67,10 @@ type NormalizedMaxFileLinesRule = {
|
|
|
30
67
|
severity: CodeDisciplineSeverity;
|
|
31
68
|
max: number;
|
|
32
69
|
};
|
|
70
|
+
type NormalizedMaxFunctionLinesRule = {
|
|
71
|
+
severity: CodeDisciplineSeverity;
|
|
72
|
+
max: number;
|
|
73
|
+
};
|
|
33
74
|
type NormalizedFolderizeCompoundFilesRule = {
|
|
34
75
|
severity: CodeDisciplineSeverity;
|
|
35
76
|
fix: boolean;
|
|
@@ -40,6 +81,7 @@ type NormalizedCheckCodeDisciplineOptions = SourceScanOptions & {
|
|
|
40
81
|
logging: LoggingOptions;
|
|
41
82
|
rules: {
|
|
42
83
|
maxFileLines?: NormalizedMaxFileLinesRule;
|
|
84
|
+
maxFunctionLines?: NormalizedMaxFunctionLinesRule;
|
|
43
85
|
folderizeCompoundFiles?: NormalizedFolderizeCompoundFilesRule;
|
|
44
86
|
syncImports?: SyncImportsRuleOptions;
|
|
45
87
|
};
|
|
@@ -50,5 +92,5 @@ type FixCodeDisciplineResult = CodeDisciplineResult & {
|
|
|
50
92
|
rewritten_files: number;
|
|
51
93
|
rewritten_imports: number;
|
|
52
94
|
};
|
|
53
|
-
export type { CheckCodeDisciplineOptions, CheckCodeDisciplineResult, CodeDisciplineConfig, CodeDisciplineRules, FixCodeDisciplineOptions, FixCodeDisciplineResult, FolderizeCompoundFilesRuleOptions, MaxFileLinesRuleOptions, NormalizedCheckCodeDisciplineOptions, NormalizedFolderizeCompoundFilesRule, NormalizedMaxFileLinesRule, SeverityRuleOptions, };
|
|
95
|
+
export type { CheckCodeDisciplineOptions, CheckCodeDisciplineResult, CodeDisciplineConfig, CodeDisciplineLifecycleContext, CodeDisciplineLifecycleHookResult, CodeDisciplineLifecycleHooks, CodeDisciplineMode, CodeDisciplineRuntimeImportsSyncOptions, CodeDisciplineRuntimeMode, CodeDisciplineRules, CodeDisciplineTsconfigPathsOptions, FixCodeDisciplineOptions, FixCodeDisciplineResult, FolderizeCompoundFilesRuleOptions, MaxFileLinesRuleOptions, MaxFunctionLinesRuleOptions, NormalizedCheckCodeDisciplineOptions, NormalizedFolderizeCompoundFilesRule, NormalizedMaxFileLinesRule, NormalizedMaxFunctionLinesRule, SeverityRuleOptions, TsconfigPathsNormalizeMode, };
|
|
54
96
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/checks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAElG,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAEF,KAAK,uBAAuB,GAAG,mBAAmB,GAAG;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,iCAAiC,GAAG,mBAAmB,GAAG;IAC7D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,sBAAsB,CAAC,EAAE,iCAAiC,CAAC;IAC3D,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/checks/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../../src/cli/run-cli.ts"],"names":[],"mappings":";AAQA,KAAK,aAAa,GAAG;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../../src/cli/run-cli.ts"],"names":[],"mappings":";AAQA,KAAK,aAAa,GAAG;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAgDF,iBAAe,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8ExF;AAQD,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/cli/run-cli.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { pathToFileURL } from "node:url";
|
|
3
3
|
import { codeDiscipline } from "../run.js";
|
|
4
|
-
import {
|
|
4
|
+
import { loadResolvedCodeDisciplineConfig } from "../config/index.js";
|
|
5
5
|
function renderHelp() {
|
|
6
6
|
return [
|
|
7
|
-
"Usage: code-discipline <command> --config <path>",
|
|
7
|
+
"Usage: code-discipline <command> [--config <path>]",
|
|
8
8
|
"",
|
|
9
9
|
"Commands:",
|
|
10
10
|
" check run read-only discipline validation",
|
|
11
|
-
" sync
|
|
12
|
-
" fix apply
|
|
11
|
+
" sync run package-owned sync operations from config",
|
|
12
|
+
" fix apply configured discipline fixes",
|
|
13
13
|
"",
|
|
14
14
|
"Config:",
|
|
15
|
-
" --config <path>
|
|
15
|
+
" --config <path> optionally points to a module that default-exports the config object.",
|
|
16
|
+
" If omitted, code-discipline will auto-discover a config module in the current project root.",
|
|
16
17
|
"",
|
|
17
18
|
].join("\n");
|
|
18
19
|
}
|
|
@@ -53,13 +54,11 @@ async function runCli(argv, options = {}) {
|
|
|
53
54
|
if (parsed.extra.length > 0) {
|
|
54
55
|
throw new Error(`Unexpected arguments: ${parsed.extra.join(" ")}`);
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
throw new Error("Missing required --config <path> option");
|
|
58
|
-
}
|
|
59
|
-
const { config } = await loadCodeDisciplineConfigModule(cwd, parsed.configPath);
|
|
57
|
+
const { config, configPath } = await loadResolvedCodeDisciplineConfig(cwd, parsed.configPath);
|
|
60
58
|
if (command === "check") {
|
|
61
59
|
const result = await codeDiscipline({
|
|
62
60
|
...config,
|
|
61
|
+
configPath,
|
|
63
62
|
mode: "check",
|
|
64
63
|
projectRoot: cwd,
|
|
65
64
|
});
|
|
@@ -67,15 +66,13 @@ async function runCli(argv, options = {}) {
|
|
|
67
66
|
stdout("No discipline violations found.\n");
|
|
68
67
|
return { exitCode: 0 };
|
|
69
68
|
}
|
|
70
|
-
for (const violation of result.violations) {
|
|
71
|
-
stdout(`${formatViolation(violation)}\n`);
|
|
72
|
-
}
|
|
73
69
|
stdout(`Summary: ${result.errors} errors, ${result.warnings} warnings.\n`);
|
|
74
70
|
return { exitCode: result.ok ? 0 : 1 };
|
|
75
71
|
}
|
|
76
72
|
if (command === "sync") {
|
|
77
73
|
const result = await codeDiscipline({
|
|
78
74
|
...config,
|
|
75
|
+
configPath,
|
|
79
76
|
mode: "sync",
|
|
80
77
|
projectRoot: cwd,
|
|
81
78
|
});
|
|
@@ -85,6 +82,7 @@ async function runCli(argv, options = {}) {
|
|
|
85
82
|
if (command === "fix") {
|
|
86
83
|
const result = await codeDiscipline({
|
|
87
84
|
...config,
|
|
85
|
+
configPath,
|
|
88
86
|
mode: "fix",
|
|
89
87
|
projectRoot: cwd,
|
|
90
88
|
});
|
package/dist/cli/run-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../src/cli/run-cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../src/cli/run-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { CodeDisciplineConfig } from "../checks/types.js";
|
|
2
|
+
declare const DEFAULT_CONFIG_FILENAMES: string[];
|
|
2
3
|
type LoadedCodeDisciplineConfig = {
|
|
3
4
|
config: CodeDisciplineConfig;
|
|
4
5
|
configPath: string;
|
|
5
6
|
};
|
|
6
7
|
declare function defineCodeDisciplineConfig(config: CodeDisciplineConfig): CodeDisciplineConfig;
|
|
7
8
|
declare function loadCodeDisciplineConfigModule(projectRoot: string, configPath: string): Promise<LoadedCodeDisciplineConfig>;
|
|
8
|
-
|
|
9
|
+
declare function findCodeDisciplineConfigModule(projectRoot: string): Promise<string | null>;
|
|
10
|
+
declare function loadResolvedCodeDisciplineConfig(projectRoot: string, configPath?: string): Promise<LoadedCodeDisciplineConfig>;
|
|
11
|
+
export { DEFAULT_CONFIG_FILENAMES, defineCodeDisciplineConfig, findCodeDisciplineConfigModule, loadCodeDisciplineConfigModule, loadResolvedCodeDisciplineConfig };
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,KAAK,0BAA0B,GAAG;IAChC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,iBAAS,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAEtF;AAED,iBAAe,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAsB1H;AAED,OAAO,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,QAAA,MAAM,wBAAwB,UAO7B,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,iBAAS,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAEtF;AAED,iBAAe,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAsB1H;AAED,iBAAe,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASzF;AAED,iBAAe,gCAAgC,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAY7H;AAED,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,gCAAgC,EAAE,CAAC"}
|