ng-checkup 0.2.0 → 0.4.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/README.md +75 -13
- package/dist/angular-versions.d.ts +14 -0
- package/dist/angular-versions.js +157 -0
- package/dist/angular-versions.js.map +1 -0
- package/dist/baseline.d.ts +72 -0
- package/dist/baseline.js +82 -0
- package/dist/baseline.js.map +1 -0
- package/dist/checks/change-detection.js +5 -0
- package/dist/checks/change-detection.js.map +1 -1
- package/dist/checks/circular-deps.js +3 -0
- package/dist/checks/circular-deps.js.map +1 -1
- package/dist/checks/components.js +5 -0
- package/dist/checks/components.js.map +1 -1
- package/dist/checks/deprecated-apis.js +5 -0
- package/dist/checks/deprecated-apis.js.map +1 -1
- package/dist/checks/state.js +5 -0
- package/dist/checks/state.js.map +1 -1
- package/dist/checks/testing.js +3 -0
- package/dist/checks/testing.js.map +1 -1
- package/dist/checks/type-safety.js +8 -0
- package/dist/checks/type-safety.js.map +1 -1
- package/dist/checks/version.js +5 -0
- package/dist/checks/version.js.map +1 -1
- package/dist/cli.d.ts +28 -6
- package/dist/cli.js +100 -12
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +6 -2
- package/dist/config.js +13 -3
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +17 -3
- package/dist/init.js +32 -13
- package/dist/init.js.map +1 -1
- package/dist/plan.d.ts +69 -0
- package/dist/plan.js +183 -0
- package/dist/plan.js.map +1 -0
- package/dist/report/html.js +55 -0
- package/dist/report/html.js.map +1 -1
- package/dist/report/markdown.js +32 -0
- package/dist/report/markdown.js.map +1 -1
- package/dist/report/terminal.js +40 -0
- package/dist/report/terminal.js.map +1 -1
- package/dist/types.d.ts +25 -0
- package/package.json +1 -1
- package/schematics/ng-add/index.cjs +7 -2
package/README.md
CHANGED
|
@@ -21,6 +21,8 @@ npx ng-checkup
|
|
|
21
21
|
- [Quick start](#quick-start)
|
|
22
22
|
- [Set it up in a project](#set-it-up-in-a-project)
|
|
23
23
|
- [Configuration](#configuration)
|
|
24
|
+
- [Baseline: adopt it on legacy code](#baseline-adopt-it-on-legacy-code)
|
|
25
|
+
- [Upgrade plan](#upgrade-plan)
|
|
24
26
|
- [What it checks](#what-it-checks)
|
|
25
27
|
- [Reports](#reports)
|
|
26
28
|
- [In CI](#in-ci)
|
|
@@ -42,8 +44,9 @@ npx ng-checkup
|
|
|
42
44
|
# 2. The full report as a page to share
|
|
43
45
|
npx ng-checkup --report checkup.html
|
|
44
46
|
|
|
45
|
-
# 3.
|
|
46
|
-
npx ng-checkup
|
|
47
|
+
# 3. Record today's numbers, then fail CI only when one gets worse
|
|
48
|
+
npx ng-checkup baseline
|
|
49
|
+
npx ng-checkup --fail-on regression
|
|
47
50
|
```
|
|
48
51
|
|
|
49
52
|
Install dependencies first (`npm install`) if you can: the deprecated-API check reads the installed Angular packages, and without them it is skipped.
|
|
@@ -65,7 +68,8 @@ Both make the same changes and list what they changed:
|
|
|
65
68
|
| `package.json` | a `"checkup": "ng-checkup"` script, and `ng-checkup` in `devDependencies` (`init` only; `ng add` installs it itself) |
|
|
66
69
|
| `ng-checkup.config.json` | writes `checkup.html` on every run, and an empty `ignore` list |
|
|
67
70
|
| `.gitignore` | the generated reports, if the repository has a `.gitignore` |
|
|
68
|
-
|
|
|
71
|
+
| `ng-checkup.baseline.json` | today's numbers, so CI fails only when one gets worse ([baseline](#baseline-adopt-it-on-legacy-code)) |
|
|
72
|
+
| `.github/workflows/ng-checkup.yml` | runs on every pull request with `--fail-on regression`, uploads the reports (when `.github/` exists) |
|
|
69
73
|
| `ng-checkup.gitlab-ci.yml` | the same as a GitLab job; add `include: [{ local: ng-checkup.gitlab-ci.yml }]` to your `.gitlab-ci.yml` (when that file exists) |
|
|
70
74
|
|
|
71
75
|
After that it is `npm run checkup` (or `pnpm checkup`, `yarn checkup`; the lockfile decides). Running either command again changes nothing. It never overwrites a file you wrote: an existing workflow or config is kept, and a different `checkup` script is kept unless you pass `--force`.
|
|
@@ -92,13 +96,66 @@ npx ng-checkup init --ci gitlab # pick the CI instead of detecting it (github
|
|
|
92
96
|
| Key | Meaning | Flag |
|
|
93
97
|
| --- | --- | --- |
|
|
94
98
|
| `reports` | report files to write, relative to the config file | `--report` |
|
|
95
|
-
| `failOn` | exit with 1 when an area is `poor` (or `fair`) | `--fail-on` |
|
|
99
|
+
| `failOn` | exit with 1 when an area is `poor` (or `fair`), or with `regression` when a measure is worse than the baseline | `--fail-on` |
|
|
96
100
|
| `maxExamples` | example files listed per finding | `--max-examples` |
|
|
97
101
|
| `offline` | skip the npm lookup of the latest Angular version | `--offline` |
|
|
98
102
|
| `ignore` | paths left out of the analysis; a path matches everything below it, `*` stays within a folder, `**` crosses folders | |
|
|
103
|
+
| `baseline` | the baseline file, relative to the config file (default `ng-checkup.baseline.json` in the root) | |
|
|
104
|
+
| `plan` | add the upgrade plan to every run | `--plan` |
|
|
99
105
|
|
|
100
106
|
An unknown key or a wrong type stops the run with an error, so a typo cannot silently switch off a CI threshold. Use `--config path/to/file.json` for a file elsewhere.
|
|
101
107
|
|
|
108
|
+
## Baseline: adopt it on legacy code
|
|
109
|
+
|
|
110
|
+
A ten-year-old Angular app will not pass `--fail-on poor` on day one, and a CI check that is red from the start gets switched off. The baseline fixes that: it records today's numbers, and CI fails only when one of them gets worse.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
npx ng-checkup baseline # writes ng-checkup.baseline.json; commit it
|
|
114
|
+
npx ng-checkup --fail-on regression # in CI: fails only on a number that went up
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
Baseline 2 worse
|
|
119
|
+
worse Type safety: Explicit any in application code 13 → 15
|
|
120
|
+
worse Type safety: Non-null assertions (x!) 0 → 1
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
- **It records counts, not grades:** explicit `any`, `x!`, files in import cycles, components without OnPush or a spec, NgModule-declared components, deprecated API uses and [18 more](https://github.com/stefankuburovic/ng-checkup/blob/main/docs/checks.md#measures). Lower is better for every one.
|
|
124
|
+
- **It only goes down.** When numbers drop, the run says so; `npx ng-checkup baseline` locks the new numbers in. If a number went up, `baseline` refuses and lists it, so a regression cannot be waved through by re-running the command. `--force` accepts it, which is the moment someone has to explain why in review.
|
|
125
|
+
- **It is a plain, sorted JSON file**, so lowering a number is a one-line diff in a merge request.
|
|
126
|
+
- **The gap to the latest Angular is not in it.** That grows when Angular ships, not when the code gets worse.
|
|
127
|
+
|
|
128
|
+
`ng add ng-checkup` and `npx ng-checkup init` create the first baseline and set CI to `--fail-on regression` for you.
|
|
129
|
+
|
|
130
|
+
## Upgrade plan
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
npx ng-checkup --plan --report plan.md
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
`--plan` adds the way from your Angular version to the latest, one major at a time as `ng update` requires:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
Upgrade plan 12 → 22, 10 steps, one major at a time
|
|
140
|
+
Before you start
|
|
141
|
+
· Move from TSLint to ESLint ng add @angular-eslint/schematics
|
|
142
|
+
→ 13 ng update @angular/core@13 @angular/cli@13
|
|
143
|
+
Node.js ^12.20.0 || ^14.15.0 || >=16.10.0 · TypeScript >=4.4.2 <4.7 (now 4.3.5)
|
|
144
|
+
...
|
|
145
|
+
→ 16 ng update @angular/core@16 @angular/cli@16
|
|
146
|
+
Node.js ^16.14.0 || >=18.10.0 · TypeScript >=4.9.3 <5.2 · zone.js ~0.13.0 (now 0.11.8)
|
|
147
|
+
· Convert NgModule components to standalone (18) ng generate @angular/core:standalone
|
|
148
|
+
→ 17 ng update @angular/core@17 @angular/cli@17
|
|
149
|
+
· Move templates to built-in control flow (13) ng generate @angular/core:control-flow
|
|
150
|
+
...
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
- **The same for everyone:** each step's `ng update` command (with Material and NgRx when you use them) and the Node.js, TypeScript, RxJS and zone.js ranges that major requires, from the versions' published package metadata. A range your project is outside of today is flagged at the step that has to move it.
|
|
154
|
+
- **Specific to your code:** the migrations your findings call for (standalone, built-in control flow, the esbuild builder, signal inputs, Vitest, zoneless), each scheduled at the first step where Angular ships it, with the number of places it touches. Migrations your code does not need are left out.
|
|
155
|
+
- **No time estimate.** Counts are measured; days would be a guess.
|
|
156
|
+
|
|
157
|
+
The plan is in every format, including the HTML report ([example](https://stefankuburovic.github.io/ng-checkup/example.html#plan-title)) and the JSON (`report.plan`).
|
|
158
|
+
|
|
102
159
|
## What it checks
|
|
103
160
|
|
|
104
161
|
| Area | It looks at | Poor when |
|
|
@@ -137,6 +194,7 @@ Defaults that changed between versions are applied per version: a component with
|
|
|
137
194
|
```text
|
|
138
195
|
Usage: ng-checkup [path] [options]
|
|
139
196
|
ng-checkup init [path] [init options]
|
|
197
|
+
ng-checkup baseline [path] [--force]
|
|
140
198
|
|
|
141
199
|
Arguments:
|
|
142
200
|
path Repository root (default: current directory)
|
|
@@ -146,8 +204,11 @@ Options:
|
|
|
146
204
|
.html, .md or .json. Repeatable.
|
|
147
205
|
--json Print the report as JSON to stdout instead of the summary
|
|
148
206
|
-v, --verbose Print every finding with its files
|
|
149
|
-
--
|
|
150
|
-
|
|
207
|
+
--plan Add an upgrade plan to the latest Angular, one major
|
|
208
|
+
at a time, with the migrations this code needs
|
|
209
|
+
--fail-on <grade> Exit with code 1 if any area is graded <grade> or worse
|
|
210
|
+
(poor or fair), or with regression if a measure is
|
|
211
|
+
worse than the baseline (for CI)
|
|
151
212
|
--max-examples <n> Example files listed per finding (default 5)
|
|
152
213
|
--offline Do not look up the latest Angular version online
|
|
153
214
|
--config <file> Config file (default: ng-checkup.config.json in the root)
|
|
@@ -159,9 +220,12 @@ Init options (ng-checkup init):
|
|
|
159
220
|
--ci <provider> auto (default), github, gitlab or none
|
|
160
221
|
--dry-run Show what would change without writing anything
|
|
161
222
|
--force Replace an existing "checkup" script
|
|
223
|
+
|
|
224
|
+
Baseline options (ng-checkup baseline):
|
|
225
|
+
--force Accept measures that went up since the last baseline
|
|
162
226
|
```
|
|
163
227
|
|
|
164
|
-
Exit codes: `0` done, `1` `--fail-on` tripped, `2` usage error. Areas graded `info` never fail a run.
|
|
228
|
+
Exit codes: `0` done, `1` `--fail-on` tripped, `2` usage error (including `--fail-on regression` without a baseline). Areas graded `info` never fail a run.
|
|
165
229
|
|
|
166
230
|
</details>
|
|
167
231
|
|
|
@@ -176,7 +240,7 @@ Exit codes: `0` done, `1` `--fail-on` tripped, `2` usage error. Areas graded `in
|
|
|
176
240
|
with:
|
|
177
241
|
node-version: 22
|
|
178
242
|
- run: npm ci
|
|
179
|
-
- run: npx ng-checkup --fail-on
|
|
243
|
+
- run: npx ng-checkup --fail-on regression --report checkup.md --report checkup.html
|
|
180
244
|
- uses: actions/upload-artifact@v4
|
|
181
245
|
if: always()
|
|
182
246
|
with:
|
|
@@ -191,13 +255,13 @@ ng-checkup:
|
|
|
191
255
|
image: node:22
|
|
192
256
|
script:
|
|
193
257
|
- npm ci
|
|
194
|
-
- npx ng-checkup --fail-on
|
|
258
|
+
- npx ng-checkup --fail-on regression --report checkup.md --report checkup.html
|
|
195
259
|
artifacts:
|
|
196
260
|
when: always
|
|
197
261
|
paths: [checkup.md, checkup.html]
|
|
198
262
|
```
|
|
199
263
|
|
|
200
|
-
|
|
264
|
+
On an existing codebase, start with a [baseline](#baseline-adopt-it-on-legacy-code) and `--fail-on regression`. `--fail-on poor` and `--fail-on fair` are for codebases that are already in good shape and want to stay there.
|
|
201
265
|
|
|
202
266
|
## Programmatic API
|
|
203
267
|
|
|
@@ -216,7 +280,7 @@ for (const check of report.checks) {
|
|
|
216
280
|
await writeFile('checkup.md', renderMarkdown(report));
|
|
217
281
|
```
|
|
218
282
|
|
|
219
|
-
`runCheckup` never writes anything. `renderHtml`, `renderMarkdown`, `overallScore`, `topPriorities`, `loadConfig
|
|
283
|
+
`runCheckup` never writes anything. `renderHtml`, `renderMarkdown`, `overallScore`, `topPriorities`, `loadConfig`, `planInit` (what `init` would change, without writing it) and the baseline functions (`createBaseline`, `compareWithBaseline`, `readBaseline`, `serializeBaseline`) are exported too, along with the `Report`, `CheckResult`, `Finding` and `Grade` types. `Report` is also the schema of the JSON output.
|
|
220
284
|
|
|
221
285
|
## What leaves your machine
|
|
222
286
|
|
|
@@ -244,8 +308,6 @@ One request: the latest `@angular/core` version from the npm registry, with a th
|
|
|
244
308
|
|
|
245
309
|
## Roadmap
|
|
246
310
|
|
|
247
|
-
- Baseline mode: fail CI only when a number gets worse, so legacy code can adopt it on day one
|
|
248
|
-
- Upgrade plan: the steps from your version to the latest, with the migrations each needs
|
|
249
311
|
- Per-project reports for Nx and multi-project workspaces
|
|
250
312
|
- Bundle size from the build's esbuild metafile
|
|
251
313
|
- SARIF output for GitHub code scanning
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** What one Angular major requires, from the npm registry. A null field was not published for that major. */
|
|
2
|
+
export interface AngularVersionInfo {
|
|
3
|
+
major: number;
|
|
4
|
+
/** The last released version of the major when the snapshot was taken. */
|
|
5
|
+
version: string;
|
|
6
|
+
/** Node.js range from @angular/core's `engines`. */
|
|
7
|
+
node: string | null;
|
|
8
|
+
/** TypeScript range from @angular/compiler-cli's peer dependency. */
|
|
9
|
+
typescript: string | null;
|
|
10
|
+
rxjs: string | null;
|
|
11
|
+
zoneJs: string | null;
|
|
12
|
+
}
|
|
13
|
+
/** Every Angular major from 4 to the newest, oldest first. */
|
|
14
|
+
export declare const ANGULAR_VERSIONS: AngularVersionInfo[];
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// Generated by scripts/update-angular-versions.mjs on 2026-10-20. Do not edit by hand.
|
|
2
|
+
/** Every Angular major from 4 to the newest, oldest first. */
|
|
3
|
+
export const ANGULAR_VERSIONS = [
|
|
4
|
+
{
|
|
5
|
+
"major": 4,
|
|
6
|
+
"version": "4.4.7",
|
|
7
|
+
"node": null,
|
|
8
|
+
"typescript": "^2.0.2",
|
|
9
|
+
"rxjs": "^5.0.1",
|
|
10
|
+
"zoneJs": "^0.8.4"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"major": 5,
|
|
14
|
+
"version": "5.2.11",
|
|
15
|
+
"node": null,
|
|
16
|
+
"typescript": ">=2.4.2 <2.7",
|
|
17
|
+
"rxjs": "^5.5.0",
|
|
18
|
+
"zoneJs": "^0.8.4"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"major": 6,
|
|
22
|
+
"version": "6.1.10",
|
|
23
|
+
"node": null,
|
|
24
|
+
"typescript": ">=2.7.2 <2.10",
|
|
25
|
+
"rxjs": "^6.0.0",
|
|
26
|
+
"zoneJs": "~0.8.26"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"major": 7,
|
|
30
|
+
"version": "7.2.15",
|
|
31
|
+
"node": null,
|
|
32
|
+
"typescript": ">=3.1.1 <3.3",
|
|
33
|
+
"rxjs": "^6.0.0",
|
|
34
|
+
"zoneJs": "~0.8.26"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"major": 8,
|
|
38
|
+
"version": "8.2.14",
|
|
39
|
+
"node": null,
|
|
40
|
+
"typescript": ">=3.4 <3.6",
|
|
41
|
+
"rxjs": "^6.4.0",
|
|
42
|
+
"zoneJs": "~0.9.1"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"major": 9,
|
|
46
|
+
"version": "9.1.13",
|
|
47
|
+
"node": null,
|
|
48
|
+
"typescript": ">=3.6 <3.9",
|
|
49
|
+
"rxjs": "^6.5.3",
|
|
50
|
+
"zoneJs": "~0.10.3"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"major": 10,
|
|
54
|
+
"version": "10.2.5",
|
|
55
|
+
"node": null,
|
|
56
|
+
"typescript": ">=3.9 <4.1",
|
|
57
|
+
"rxjs": "^6.5.3",
|
|
58
|
+
"zoneJs": "~0.10.3"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"major": 11,
|
|
62
|
+
"version": "11.2.14",
|
|
63
|
+
"node": null,
|
|
64
|
+
"typescript": ">=4.0 <4.2",
|
|
65
|
+
"rxjs": "^6.5.3",
|
|
66
|
+
"zoneJs": "^0.10.2 || ^0.11.3"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"major": 12,
|
|
70
|
+
"version": "12.2.17",
|
|
71
|
+
"node": "^12.14.1 || >=14.0.0",
|
|
72
|
+
"typescript": ">=4.2.3 <4.4",
|
|
73
|
+
"rxjs": "^6.5.3 || ^7.0.0",
|
|
74
|
+
"zoneJs": "~0.11.4"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"major": 13,
|
|
78
|
+
"version": "13.4.0",
|
|
79
|
+
"node": "^12.20.0 || ^14.15.0 || >=16.10.0",
|
|
80
|
+
"typescript": ">=4.4.2 <4.7",
|
|
81
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
82
|
+
"zoneJs": "~0.11.4"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"major": 14,
|
|
86
|
+
"version": "14.3.0",
|
|
87
|
+
"node": "^14.15.0 || >=16.10.0",
|
|
88
|
+
"typescript": ">=4.6.2 <4.9",
|
|
89
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
90
|
+
"zoneJs": "~0.11.4 || ~0.12.0"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"major": 15,
|
|
94
|
+
"version": "15.2.10",
|
|
95
|
+
"node": "^14.20.0 || ^16.13.0 || >=18.10.0",
|
|
96
|
+
"typescript": ">=4.8.2 <5.0",
|
|
97
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
98
|
+
"zoneJs": "~0.11.4 || ~0.12.0 || ~0.13.0"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"major": 16,
|
|
102
|
+
"version": "16.2.12",
|
|
103
|
+
"node": "^16.14.0 || >=18.10.0",
|
|
104
|
+
"typescript": ">=4.9.3 <5.2",
|
|
105
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
106
|
+
"zoneJs": "~0.13.0"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"major": 17,
|
|
110
|
+
"version": "17.3.12",
|
|
111
|
+
"node": "^18.13.0 || >=20.9.0",
|
|
112
|
+
"typescript": ">=5.2 <5.5",
|
|
113
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
114
|
+
"zoneJs": "~0.14.0"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"major": 18,
|
|
118
|
+
"version": "18.2.14",
|
|
119
|
+
"node": "^18.19.1 || ^20.11.1 || >=22.0.0",
|
|
120
|
+
"typescript": ">=5.4 <5.6",
|
|
121
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
122
|
+
"zoneJs": "~0.14.10"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"major": 19,
|
|
126
|
+
"version": "19.2.25",
|
|
127
|
+
"node": "^18.19.1 || ^20.11.1 || >=22.0.0",
|
|
128
|
+
"typescript": ">=5.5 <5.9",
|
|
129
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
130
|
+
"zoneJs": "~0.15.0"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"major": 20,
|
|
134
|
+
"version": "20.3.34",
|
|
135
|
+
"node": "^20.19.0 || ^22.12.0 || >=24.0.0",
|
|
136
|
+
"typescript": ">=5.8 <6.0",
|
|
137
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
138
|
+
"zoneJs": "~0.15.0"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"major": 21,
|
|
142
|
+
"version": "21.2.25",
|
|
143
|
+
"node": "^20.19.0 || ^22.12.0 || >=24.0.0",
|
|
144
|
+
"typescript": ">=5.9 <6.1",
|
|
145
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
146
|
+
"zoneJs": "~0.15.0 || ~0.16.0"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"major": 22,
|
|
150
|
+
"version": "22.2.3",
|
|
151
|
+
"node": "^22.22.3 || ^24.15.0 || >=26.0.0",
|
|
152
|
+
"typescript": ">=6.0 <6.1",
|
|
153
|
+
"rxjs": "^6.5.3 || ^7.4.0",
|
|
154
|
+
"zoneJs": "~0.15.0 || ~0.16.0"
|
|
155
|
+
}
|
|
156
|
+
];
|
|
157
|
+
//# sourceMappingURL=angular-versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-versions.js","sourceRoot":"","sources":["../src/angular-versions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { Report } from './types.js';
|
|
2
|
+
/** The file `ng-checkup baseline` writes and every run compares against, in the analysed root. */
|
|
3
|
+
export declare const BASELINE_FILE = "ng-checkup.baseline.json";
|
|
4
|
+
/**
|
|
5
|
+
* Recorded measures of one point in time.
|
|
6
|
+
*
|
|
7
|
+
* Kept deliberately flat (`"type-safety.explicit-any": 28`) and with sorted
|
|
8
|
+
* keys, because it is committed and reviewed: a merge request that lowers a
|
|
9
|
+
* number shows as a one-line diff, and one that raises it stands out.
|
|
10
|
+
*/
|
|
11
|
+
export interface Baseline {
|
|
12
|
+
version: 1;
|
|
13
|
+
/** `ng-checkup <version>` that wrote it. */
|
|
14
|
+
tool: string;
|
|
15
|
+
/** Date of the last update, `YYYY-MM-DD`. */
|
|
16
|
+
updated: string;
|
|
17
|
+
/** `checkId.measureId` to its value. Lower is better for every one. */
|
|
18
|
+
measures: Record<string, number>;
|
|
19
|
+
}
|
|
20
|
+
/** One measure that moved against the baseline. */
|
|
21
|
+
export interface MeasureDelta {
|
|
22
|
+
/** `checkId.measureId`. */
|
|
23
|
+
key: string;
|
|
24
|
+
check: string;
|
|
25
|
+
label: string;
|
|
26
|
+
before: number;
|
|
27
|
+
after: number;
|
|
28
|
+
}
|
|
29
|
+
/** How a report compares with a baseline. Attached to `Report.baseline`. */
|
|
30
|
+
export interface BaselineComparison {
|
|
31
|
+
/** The baseline file, as given. */
|
|
32
|
+
path: string;
|
|
33
|
+
/** Measures that went up: what `--fail-on regression` fails on. */
|
|
34
|
+
regressions: MeasureDelta[];
|
|
35
|
+
/** Measures that went down: run `ng-checkup baseline` to lock them in. */
|
|
36
|
+
improvements: MeasureDelta[];
|
|
37
|
+
/** Measures the baseline does not know yet, e.g. from a newer ng-checkup. Never a failure. */
|
|
38
|
+
added: string[];
|
|
39
|
+
}
|
|
40
|
+
/** Every measure of a report under its baseline key, with its check's title for display. */
|
|
41
|
+
export declare function measuresOf(report: Report): Map<string, {
|
|
42
|
+
check: string;
|
|
43
|
+
label: string;
|
|
44
|
+
value: number;
|
|
45
|
+
}>;
|
|
46
|
+
/** A baseline of the report's current measures. */
|
|
47
|
+
export declare function createBaseline(report: Report, today?: string): Baseline;
|
|
48
|
+
/** The baseline as committed: two-space JSON with a final newline. */
|
|
49
|
+
export declare function serializeBaseline(baseline: Baseline): string;
|
|
50
|
+
/**
|
|
51
|
+
* Reads a baseline file. Undefined when it does not exist.
|
|
52
|
+
*
|
|
53
|
+
* @throws On malformed content. A broken baseline must stop a CI run rather
|
|
54
|
+
* than compare against nothing and pass.
|
|
55
|
+
*/
|
|
56
|
+
export declare function readBaseline(path: string): Baseline | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Compares a report with a baseline. A measure the report has no value for
|
|
59
|
+
* (its check graded `info` this time) is skipped rather than counted as an
|
|
60
|
+
* improvement: it was not measured, not fixed.
|
|
61
|
+
*/
|
|
62
|
+
export declare function compareWithBaseline(report: Report, baseline: Baseline, path: string): BaselineComparison;
|
|
63
|
+
/**
|
|
64
|
+
* The measures that would go up if `next` replaced `previous`. Updating a
|
|
65
|
+
* baseline may only lower numbers; raising one needs `--force`, which is the
|
|
66
|
+
* moment someone has to say why in review. Empty for a first baseline.
|
|
67
|
+
*/
|
|
68
|
+
export declare function baselineIncreases(previous: Baseline | undefined, next: Baseline): Array<{
|
|
69
|
+
key: string;
|
|
70
|
+
before: number;
|
|
71
|
+
after: number;
|
|
72
|
+
}>;
|
package/dist/baseline.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
/** The file `ng-checkup baseline` writes and every run compares against, in the analysed root. */
|
|
3
|
+
export const BASELINE_FILE = 'ng-checkup.baseline.json';
|
|
4
|
+
/** Every measure of a report under its baseline key, with its check's title for display. */
|
|
5
|
+
export function measuresOf(report) {
|
|
6
|
+
const result = new Map();
|
|
7
|
+
for (const check of report.checks) {
|
|
8
|
+
for (const measure of check.measures ?? [])
|
|
9
|
+
result.set(`${check.id}.${measure.id}`, { check: check.title, label: measure.label, value: measure.value });
|
|
10
|
+
}
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
13
|
+
/** A baseline of the report's current measures. */
|
|
14
|
+
export function createBaseline(report, today = report.generatedAt.slice(0, 10)) {
|
|
15
|
+
const measures = {};
|
|
16
|
+
for (const [key, measure] of [...measuresOf(report)].sort(([left], [right]) => left.localeCompare(right)))
|
|
17
|
+
measures[key] = measure.value;
|
|
18
|
+
return { version: 1, tool: `${report.tool.name} ${report.tool.version}`, updated: today, measures };
|
|
19
|
+
}
|
|
20
|
+
/** The baseline as committed: two-space JSON with a final newline. */
|
|
21
|
+
export function serializeBaseline(baseline) {
|
|
22
|
+
return `${JSON.stringify(baseline, null, 2)}\n`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Reads a baseline file. Undefined when it does not exist.
|
|
26
|
+
*
|
|
27
|
+
* @throws On malformed content. A broken baseline must stop a CI run rather
|
|
28
|
+
* than compare against nothing and pass.
|
|
29
|
+
*/
|
|
30
|
+
export function readBaseline(path) {
|
|
31
|
+
if (!existsSync(path))
|
|
32
|
+
return undefined;
|
|
33
|
+
let raw;
|
|
34
|
+
try {
|
|
35
|
+
raw = JSON.parse(readFileSync(path, 'utf8'));
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
throw new Error(`${path} is not valid JSON: ${error instanceof Error ? error.message : String(error)}`);
|
|
39
|
+
}
|
|
40
|
+
const record = (typeof raw === 'object' && raw !== null ? raw : {});
|
|
41
|
+
const measures = record['measures'];
|
|
42
|
+
if (record['version'] !== 1 || typeof measures !== 'object' || measures === null || Array.isArray(measures) || !Object.values(measures).every((value) => typeof value === 'number')) {
|
|
43
|
+
throw new Error(`${path} is not an ng-checkup baseline (expected version 1 and numeric measures). Recreate it with ng-checkup baseline --force.`);
|
|
44
|
+
}
|
|
45
|
+
return { version: 1, tool: String(record['tool'] ?? ''), updated: String(record['updated'] ?? ''), measures: measures };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Compares a report with a baseline. A measure the report has no value for
|
|
49
|
+
* (its check graded `info` this time) is skipped rather than counted as an
|
|
50
|
+
* improvement: it was not measured, not fixed.
|
|
51
|
+
*/
|
|
52
|
+
export function compareWithBaseline(report, baseline, path) {
|
|
53
|
+
const regressions = [];
|
|
54
|
+
const improvements = [];
|
|
55
|
+
const added = [];
|
|
56
|
+
for (const [key, current] of measuresOf(report)) {
|
|
57
|
+
const before = baseline.measures[key];
|
|
58
|
+
if (before === undefined) {
|
|
59
|
+
added.push(key);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const delta = { key, check: current.check, label: current.label, before, after: current.value };
|
|
63
|
+
if (current.value > before)
|
|
64
|
+
regressions.push(delta);
|
|
65
|
+
else if (current.value < before)
|
|
66
|
+
improvements.push(delta);
|
|
67
|
+
}
|
|
68
|
+
return { path, regressions, improvements, added };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The measures that would go up if `next` replaced `previous`. Updating a
|
|
72
|
+
* baseline may only lower numbers; raising one needs `--force`, which is the
|
|
73
|
+
* moment someone has to say why in review. Empty for a first baseline.
|
|
74
|
+
*/
|
|
75
|
+
export function baselineIncreases(previous, next) {
|
|
76
|
+
if (!previous)
|
|
77
|
+
return [];
|
|
78
|
+
return Object.entries(next.measures)
|
|
79
|
+
.filter(([key, value]) => previous.measures[key] !== undefined && value > previous.measures[key])
|
|
80
|
+
.map(([key, after]) => ({ key, before: previous.measures[key], after }));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=baseline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,6 +84,11 @@ export function changeDetectionCheck(context) {
|
|
|
84
84
|
{ label: 'Zone test helpers', value: formatCount(zoneHelpers) },
|
|
85
85
|
],
|
|
86
86
|
findings,
|
|
87
|
+
measures: [
|
|
88
|
+
{ id: 'eager-components', label: 'Components with eager change detection', value: eager.length },
|
|
89
|
+
{ id: 'ngzone-files', label: 'Files injecting NgZone', value: ngZoneFiles.length },
|
|
90
|
+
{ id: 'zone-test-helpers', label: 'Zone-based test helper calls', value: zoneHelpers },
|
|
91
|
+
],
|
|
87
92
|
};
|
|
88
93
|
}
|
|
89
94
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-detection.js","sourceRoot":"","sources":["../../src/checks/change-detection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"change-detection.js","sourceRoot":"","sources":["../../src/checks/change-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,9 @@ export function circularDepsCheck(context) {
|
|
|
38
38
|
{ label: 'Largest tangle', value: formatCount(largest), hint: 'files' },
|
|
39
39
|
],
|
|
40
40
|
findings,
|
|
41
|
+
measures: [
|
|
42
|
+
{ id: 'files-in-cycles', label: 'Files in import cycles', value: filesInTangles },
|
|
43
|
+
],
|
|
41
44
|
};
|
|
42
45
|
}
|
|
43
46
|
//# sourceMappingURL=circular-deps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circular-deps.js","sourceRoot":"","sources":["../../src/checks/circular-deps.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"circular-deps.js","sourceRoot":"","sources":["../../src/checks/circular-deps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAwB,MAAM,cAAc,CAAC;AAEzE,wFAAwF;AACxF,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAc,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5E,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;QACvD,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,8BAA8B;QAC7E,MAAM,EAAE,gBAAgB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,uLAAuL;QACtQ,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;KAC3B,CAAC,CAAC,CAAC;IACJ,IAAI,OAAO,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,oDAAoD,EAAE,CAAC,CAAC;IAC3O,CAAC;IAED,MAAM,KAAK,GAAU,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAEnH,OAAO;QACL,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,uBAAuB;QAC9B,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,6CAA6C,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY;QACzM,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;YAC3F,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE;YAC/D,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;SACxE;QACD,QAAQ;QACR,QAAQ,EAAE;YACR,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,cAAc,EAAE;SAClF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -85,6 +85,11 @@ export function componentsCheck(context) {
|
|
|
85
85
|
summary: `${plural(components.length, 'component')}: ${standaloneShare}% standalone, ${inputs > 0 ? `${signalInputShare}% signal inputs` : 'no inputs'}, ${controlFlow > 0 ? `${controlFlowShare}% built-in control flow` : 'no control flow'}.`,
|
|
86
86
|
metrics,
|
|
87
87
|
findings,
|
|
88
|
+
measures: [
|
|
89
|
+
{ id: 'module-components', label: 'Components declared in NgModules', value: moduleBased.length },
|
|
90
|
+
{ id: 'decorator-inputs-outputs', label: '@Input() / @Output() decorators', value: decoratorInputs + decoratorOutputs },
|
|
91
|
+
{ id: 'legacy-control-flow', label: '*ngIf / *ngFor / [ngSwitch] uses', value: totals.legacy },
|
|
92
|
+
],
|
|
88
93
|
};
|
|
89
94
|
}
|
|
90
95
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/checks/components.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/checks/components.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ export function deprecatedApisCheck(context) {
|
|
|
29
29
|
detail: 'Deprecations are read from the `@deprecated` tags of the installed `@angular/*` and `@ngrx/*` type definitions, so they always match the version the project actually uses.',
|
|
30
30
|
},
|
|
31
31
|
],
|
|
32
|
+
measures: [{ id: 'legacy-template-directives', label: '*ngIf / *ngFor / [ngSwitch] uses', value: legacyUses }],
|
|
32
33
|
};
|
|
33
34
|
}
|
|
34
35
|
const usages = new Map();
|
|
@@ -95,6 +96,10 @@ export function deprecatedApisCheck(context) {
|
|
|
95
96
|
{ label: 'Legacy template directives', value: formatCount(legacyUses), hint: ngIf ? 'deprecated' : 'not deprecated in this version' },
|
|
96
97
|
],
|
|
97
98
|
findings,
|
|
99
|
+
measures: [
|
|
100
|
+
{ id: 'deprecated-usages', label: 'Deprecated API uses (symbol × file)', value: sorted.reduce((sum, usage) => sum + usage.refs.length, 0) },
|
|
101
|
+
{ id: 'legacy-template-directives', label: '*ngIf / *ngFor / [ngSwitch] uses', value: legacyUses },
|
|
102
|
+
],
|
|
98
103
|
};
|
|
99
104
|
}
|
|
100
105
|
/**
|