ng-checkup 0.11.1 → 1.0.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 +85 -10
- package/dist/cache.d.ts +1 -0
- package/dist/cache.js.map +1 -1
- package/dist/checks/architecture.js +31 -0
- package/dist/checks/architecture.js.map +1 -1
- package/dist/checks/context.d.ts +6 -0
- package/dist/checks/context.js.map +1 -1
- package/dist/checks/security.js +43 -5
- package/dist/checks/security.js.map +1 -1
- package/dist/churn.d.ts +25 -0
- package/dist/churn.js +44 -0
- package/dist/churn.js.map +1 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.js +173 -10
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.js +9 -1
- package/dist/config.js.map +1 -1
- package/dist/history.d.ts +66 -0
- package/dist/history.js +103 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +50 -9
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +3 -3
- package/dist/init.js +3 -3
- package/dist/report/history.d.ts +17 -0
- package/dist/report/history.js +138 -0
- package/dist/report/history.js.map +1 -0
- package/dist/report/html.d.ts +5 -0
- package/dist/report/html.js +1 -1
- package/dist/report/html.js.map +1 -1
- package/dist/report/site.d.ts +19 -0
- package/dist/report/site.js +32 -0
- package/dist/report/site.js.map +1 -0
- package/dist/report/terminal.d.ts +11 -0
- package/dist/report/terminal.js +2 -1
- package/dist/report/terminal.js.map +1 -1
- package/dist/site.d.ts +105 -0
- package/dist/site.js +252 -0
- package/dist/site.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/vulnerabilities.d.ts +54 -0
- package/dist/vulnerabilities.js +116 -0
- package/dist/vulnerabilities.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA2BnD,uCAAuC;AACvC,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,IAAI,GAAG,yBAAyB,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,UAAuJ,EAAE;IAC1M,MAAM,GAAG,GAAG,CAAC,GAAG,IAAc,EAAU,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrL,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,EAAE,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,uBAAuB,CAAC,GAAG,IAAI,6DAA6D,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,EAAE,yBAAyB,CAAC,KAAK,MAAM;QAAE,MAAM,IAAI,uBAAuB,CAAC,yIAAyI,CAAC,CAAC;IACzO,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAA4C,EAAE,CAAC;IAC5D,KAAK,IAAI,UAAU,GAAG,KAAK,EAAE,UAAU,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1G,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;YAAE,SAAS;QAC1E,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,OAAO,GAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAClH,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,MAA8C,EAAE,MAAc,EAAE,IAAY,EAAQ,EAAE;QACpG,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9B,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3N,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,gGAAgG;YAChG,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;YAC9J,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvF,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACxJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAqB,EAAE,KAAK,GAAG,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;SACtF,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE,EAAE,CAAC,CAAC;SAC3G,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;SAC7C,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClI,oFAAoF;SACnF,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;SAC9F,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export { buildMigrationPlan, buildPrimoPlan, type MigrationPhase, type Migration
|
|
|
14
14
|
export { ANGULAR_VERSIONS, type AngularVersionInfo } from './angular-versions.js';
|
|
15
15
|
export { BASELINE_FILE, baselineIncreases, compareWithBaseline, createBaseline, readBaseline, serializeBaseline, type Baseline, type BaselineComparison, type MeasureDelta, } from './baseline.js';
|
|
16
16
|
export { planInit, type InitChange, type InitOptions, type InitPlan } from './init.js';
|
|
17
|
+
export { collectHistory, HistoryUnavailableError, movedMeasures, type HistoryPoint, type HistoryReport } from './history.js';
|
|
18
|
+
export { renderHistoryHtml, renderHistoryMarkdown } from './report/history.js';
|
|
17
19
|
/**
|
|
18
20
|
* The newest Angular major this release of the tool knows about. Used only
|
|
19
21
|
* when the registry cannot be reached or `--offline` is set, and the report
|
|
@@ -25,6 +27,25 @@ export declare const BUNDLED_LATEST_ANGULAR_MAJOR = 22;
|
|
|
25
27
|
* deprecations), then the modernisation areas, then the structural ones.
|
|
26
28
|
*/
|
|
27
29
|
export declare const CHECKS: Check[];
|
|
30
|
+
/**
|
|
31
|
+
* Every check id a report can hold, for `--only` and `--skip`: the twelve
|
|
32
|
+
* that always run, and the two legacy areas that replace each other when
|
|
33
|
+
* there is legacy code.
|
|
34
|
+
*/
|
|
35
|
+
export declare const CHECK_IDS: readonly ["angularjs", "primo-nde", "version", "deprecated-apis", "dependencies", "change-detection", "components", "state", "architecture", "testing", "type-safety", "security", "circular-deps", "bundle"];
|
|
36
|
+
/**
|
|
37
|
+
* A predicate over check ids from `only` and `skip`. Every check still runs
|
|
38
|
+
* (they take milliseconds, and the plans read their measures); the ones it
|
|
39
|
+
* rejects are left out of the report and so out of the score and the baseline.
|
|
40
|
+
*
|
|
41
|
+
* @throws On an id that names no check, with the list of valid ones: a typo
|
|
42
|
+
* in CI must not quietly turn a gate off.
|
|
43
|
+
*/
|
|
44
|
+
export declare function checkFilter(options: Pick<CheckupOptions, 'only' | 'skip'>): (id: string) => boolean;
|
|
45
|
+
/** Thrown for an `only` or `skip` id that names no check. */
|
|
46
|
+
export declare class UnknownCheckError extends Error {
|
|
47
|
+
name: string;
|
|
48
|
+
}
|
|
28
49
|
/** Thrown by `runCheckup` for a `project` option that names no project; the message lists the names. */
|
|
29
50
|
export declare class ProjectNotFoundError extends Error {
|
|
30
51
|
name: string;
|
|
@@ -48,6 +69,12 @@ export declare const TOOL: {
|
|
|
48
69
|
export declare function runCheckup(root: string, options?: CheckupOptions): Promise<Report>;
|
|
49
70
|
/** Gathers everything the checks read. Exported for tests that want to inspect the facts. */
|
|
50
71
|
export declare function buildContext(root: string, options: CheckupOptions): Promise<AnalysisContext>;
|
|
72
|
+
/**
|
|
73
|
+
* The latest `@angular/core` major from the npm registry, or the bundled
|
|
74
|
+
* fallback when the request fails or takes longer than three seconds. A slow
|
|
75
|
+
* or offline network must never stall a run that is otherwise local.
|
|
76
|
+
*/
|
|
77
|
+
export declare function fetchLatestAngularMajor(): Promise<AnalysisContext['latestAngular']>;
|
|
51
78
|
/**
|
|
52
79
|
* `angularCompilerOptions` of a tsconfig, merged along its `extends` chain
|
|
53
80
|
* with the child winning. TypeScript's own config parser resolves `extends`
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,8 @@ import { testingCheck } from './checks/testing.js';
|
|
|
18
18
|
import { typeSafetyCheck } from './checks/type-safety.js';
|
|
19
19
|
import { versionCheck } from './checks/version.js';
|
|
20
20
|
import { cachedFacts, dependencyStamp } from './cache.js';
|
|
21
|
+
import { readChurn } from './churn.js';
|
|
22
|
+
import { lookUpVulnerabilities } from './vulnerabilities.js';
|
|
21
23
|
import { loadDeprecationIndex } from './typings.js';
|
|
22
24
|
import { ignoreMatcher } from './config.js';
|
|
23
25
|
import { collectFiles } from './files.js';
|
|
@@ -43,6 +45,9 @@ export { buildMigrationPlan, buildPrimoPlan } from './migration.js';
|
|
|
43
45
|
export { ANGULAR_VERSIONS } from './angular-versions.js';
|
|
44
46
|
export { BASELINE_FILE, baselineIncreases, compareWithBaseline, createBaseline, readBaseline, serializeBaseline, } from './baseline.js';
|
|
45
47
|
export { planInit } from './init.js';
|
|
48
|
+
// history.ts imports runCheckup from here; the cycle is safe because both sides only use each other inside functions.
|
|
49
|
+
export { collectHistory, HistoryUnavailableError, movedMeasures } from './history.js';
|
|
50
|
+
export { renderHistoryHtml, renderHistoryMarkdown } from './report/history.js';
|
|
46
51
|
/**
|
|
47
52
|
* The newest Angular major this release of the tool knows about. Used only
|
|
48
53
|
* when the registry cannot be reached or `--offline` is set, and the report
|
|
@@ -67,6 +72,33 @@ export const CHECKS = [
|
|
|
67
72
|
circularDepsCheck,
|
|
68
73
|
bundleCheck,
|
|
69
74
|
];
|
|
75
|
+
/**
|
|
76
|
+
* Every check id a report can hold, for `--only` and `--skip`: the twelve
|
|
77
|
+
* that always run, and the two legacy areas that replace each other when
|
|
78
|
+
* there is legacy code.
|
|
79
|
+
*/
|
|
80
|
+
export const CHECK_IDS = ['angularjs', 'primo-nde', 'version', 'deprecated-apis', 'dependencies', 'change-detection', 'components', 'state', 'architecture', 'testing', 'type-safety', 'security', 'circular-deps', 'bundle'];
|
|
81
|
+
/**
|
|
82
|
+
* A predicate over check ids from `only` and `skip`. Every check still runs
|
|
83
|
+
* (they take milliseconds, and the plans read their measures); the ones it
|
|
84
|
+
* rejects are left out of the report and so out of the score and the baseline.
|
|
85
|
+
*
|
|
86
|
+
* @throws On an id that names no check, with the list of valid ones: a typo
|
|
87
|
+
* in CI must not quietly turn a gate off.
|
|
88
|
+
*/
|
|
89
|
+
export function checkFilter(options) {
|
|
90
|
+
for (const id of [...(options.only ?? []), ...(options.skip ?? [])]) {
|
|
91
|
+
if (!CHECK_IDS.includes(id))
|
|
92
|
+
throw new UnknownCheckError(`No check named ${id}. Checks: ${CHECK_IDS.join(', ')}`);
|
|
93
|
+
}
|
|
94
|
+
const only = options.only && options.only.length > 0 ? new Set(options.only) : undefined;
|
|
95
|
+
const skip = new Set(options.skip ?? []);
|
|
96
|
+
return (id) => (only ? only.has(id) : true) && !skip.has(id);
|
|
97
|
+
}
|
|
98
|
+
/** Thrown for an `only` or `skip` id that names no check. */
|
|
99
|
+
export class UnknownCheckError extends Error {
|
|
100
|
+
name = 'UnknownCheckError';
|
|
101
|
+
}
|
|
70
102
|
/**
|
|
71
103
|
* The checks that grade a project's own code, for the per-project breakdown.
|
|
72
104
|
* `version` and `dependencies` read the root `package.json`, which all
|
|
@@ -92,6 +124,7 @@ export const TOOL = readToolInfo();
|
|
|
92
124
|
*/
|
|
93
125
|
export async function runCheckup(root, options = {}) {
|
|
94
126
|
const started = Date.now();
|
|
127
|
+
const keep = checkFilter(options);
|
|
95
128
|
const absoluteRoot = resolve(root);
|
|
96
129
|
const context = await buildContext(absoluteRoot, options);
|
|
97
130
|
// AngularJS comes first when there is any: it blocks everything else. A Primo VE customization
|
|
@@ -99,18 +132,19 @@ export async function runCheckup(root, options = {}) {
|
|
|
99
132
|
// the NDE custom module, so it gets its own area and plan instead of the general AngularJS ones.
|
|
100
133
|
const primo = summarizePrimo(context);
|
|
101
134
|
const legacy = primo.present ? [primoNdeCheck(context)] : hasAngularJs(context) ? [angularJsCheck(context)] : [];
|
|
102
|
-
const
|
|
135
|
+
const allChecks = [...legacy, ...CHECKS.map((check) => check(context))];
|
|
103
136
|
const application = context.sources.filter((file) => !file.isSpec && !file.isGenerated);
|
|
104
137
|
const generatedFiles = context.sources.filter((file) => file.isGenerated).length;
|
|
105
138
|
// AngularJS code is mostly JavaScript; without it an AngularJS app or a Primo package reported 0 lines.
|
|
106
139
|
const javascript = context.angularJs.files.filter((file) => file.language === 'js' && !file.isSpec);
|
|
107
|
-
const plan = options.plan ? buildPlan(context.workspace,
|
|
140
|
+
const plan = options.plan ? buildPlan(context.workspace, allChecks, context.latestAngular.major, undefined, context.compatibility) : undefined;
|
|
141
|
+
const checks = allChecks.filter((check) => keep(check.id));
|
|
108
142
|
const migration = !options.plan
|
|
109
143
|
? undefined
|
|
110
144
|
: primo.present
|
|
111
145
|
? buildPrimoPlan(primo)
|
|
112
146
|
: buildMigrationPlan(summarizeAngularJs(context), context.latestAngular.major, plan?.steps.length ?? 0, context.workspace.dependencies);
|
|
113
|
-
const projects = options.project ? [] : projectBreakdown(context);
|
|
147
|
+
const projects = options.project ? [] : projectBreakdown(context, keep);
|
|
114
148
|
return {
|
|
115
149
|
tool: TOOL,
|
|
116
150
|
generatedAt: new Date().toISOString(),
|
|
@@ -146,7 +180,7 @@ export async function runCheckup(root, options = {}) {
|
|
|
146
180
|
* Playwright e2e projects, and grading those on OnPush and strictTemplates
|
|
147
181
|
* would fill the table with noise.
|
|
148
182
|
*/
|
|
149
|
-
function projectBreakdown(context) {
|
|
183
|
+
function projectBreakdown(context, keep) {
|
|
150
184
|
const { projects } = context.workspace;
|
|
151
185
|
if (projects.length < 2)
|
|
152
186
|
return [];
|
|
@@ -157,7 +191,7 @@ function projectBreakdown(context) {
|
|
|
157
191
|
if (!sources.some((file) => file.imports.some((fact) => fact.specifier.startsWith('@angular/'))))
|
|
158
192
|
continue;
|
|
159
193
|
const projectContext = narrowContext(context, project, ownerOf);
|
|
160
|
-
const checks = PROJECT_CHECKS.map((check) => check(projectContext));
|
|
194
|
+
const checks = PROJECT_CHECKS.map((check) => check(projectContext)).filter((check) => keep(check.id));
|
|
161
195
|
rows.push({
|
|
162
196
|
name: project.name,
|
|
163
197
|
root: project.root,
|
|
@@ -206,13 +240,18 @@ export async function buildContext(root, options) {
|
|
|
206
240
|
cache.files.delete(key);
|
|
207
241
|
}
|
|
208
242
|
const appCompilerOptions = readCompilerOptions(workspace.appTsconfig);
|
|
243
|
+
const angularJs = assembleAngularJs(root, angularJsScans, templates, { exact: workspace.versions['angular'], declared: workspace.dependencies['angular'] });
|
|
209
244
|
const stamp = dependencyStamp(workspace.root);
|
|
210
245
|
let dependencies = cache?.dependencies?.stamp === stamp ? cache.dependencies : undefined;
|
|
211
246
|
if (!dependencies) {
|
|
212
247
|
const latestAngular = options.offline ? { major: BUNDLED_LATEST_ANGULAR_MAJOR, source: 'bundled' } : await fetchLatestAngularMajor();
|
|
213
248
|
const offline = options.offline ?? false;
|
|
214
|
-
const [{ index, typings }, compatibility] = await Promise.all([
|
|
215
|
-
|
|
249
|
+
const [{ index, typings }, compatibility, vulnerabilities] = await Promise.all([
|
|
250
|
+
loadDeprecationIndex(workspace.root, workspace, sources, offline),
|
|
251
|
+
readCompatibility(workspace, latestAngular.major, offline),
|
|
252
|
+
lookUpVulnerabilities(workspace, { offline, ...(angularJs.version ? { angularJsVersion: angularJs.version.version } : {}) }),
|
|
253
|
+
]);
|
|
254
|
+
dependencies = { stamp, latestAngular, deprecations: index, typings, compatibility, ...(vulnerabilities ? { vulnerabilities } : {}) };
|
|
216
255
|
if (cache)
|
|
217
256
|
cache.dependencies = dependencies;
|
|
218
257
|
}
|
|
@@ -223,13 +262,15 @@ export async function buildContext(root, options) {
|
|
|
223
262
|
workspace,
|
|
224
263
|
sources,
|
|
225
264
|
templates,
|
|
226
|
-
angularJs
|
|
265
|
+
angularJs,
|
|
266
|
+
churn: readChurn(root),
|
|
227
267
|
deprecations: dependencies.deprecations,
|
|
228
268
|
typings: dependencies.typings,
|
|
229
269
|
tangles: findTanglesIn(graph),
|
|
230
270
|
...(eagerFiles.size > 0 ? { eagerFiles } : {}),
|
|
231
271
|
latestAngular,
|
|
232
272
|
compatibility: dependencies.compatibility,
|
|
273
|
+
...(dependencies.vulnerabilities ? { vulnerabilities: dependencies.vulnerabilities } : {}),
|
|
233
274
|
bundles: readBundleStats(workspace),
|
|
234
275
|
appCompilerOptions,
|
|
235
276
|
angularCompilerOptions: workspace.appTsconfig ? readAngularCompilerOptions(workspace.appTsconfig) : {},
|
|
@@ -252,7 +293,7 @@ export async function buildContext(root, options) {
|
|
|
252
293
|
* fallback when the request fails or takes longer than three seconds. A slow
|
|
253
294
|
* or offline network must never stall a run that is otherwise local.
|
|
254
295
|
*/
|
|
255
|
-
async function fetchLatestAngularMajor() {
|
|
296
|
+
export async function fetchLatestAngularMajor() {
|
|
256
297
|
try {
|
|
257
298
|
const response = await fetch('https://registry.npmjs.org/@angular/core/latest', { signal: AbortSignal.timeout(3000) });
|
|
258
299
|
if (response.ok) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACvG,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAoB,MAAM,gBAAgB,CAAC;AAGvJ,4EAA4E;AAC5E,8EAA8E;AAC9E,6BAA6B;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAsB,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAsB,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,SAAS,EAA2E,MAAM,WAAW,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAA2C,MAAM,gBAAgB,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAA2B,MAAM,uBAAuB,CAAC;AAClF,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,GAIlB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAoD,MAAM,WAAW,CAAC;AACvF,sHAAsH;AACtH,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,aAAa,EAAyC,MAAM,cAAc,CAAC;AAC7H,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B,YAAY;IACZ,mBAAmB;IACnB,iBAAiB;IACjB,oBAAoB;IACpB,eAAe;IACf,UAAU;IACV,iBAAiB;IACjB,YAAY;IACZ,eAAe;IACf,aAAa;IACb,iBAAiB;IACjB,WAAW;CACZ,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,CAAU,CAAC;AAEvO;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAA8C;IACxE,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,CAAE,SAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,aAAa,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3I,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,6DAA6D;AAC7D,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,GAAG,mBAAmB,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,cAAc,GAAY,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,iBAAiB,CAAC,CAAC;AAEhH,wGAAwG;AACxG,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,GAAG,sBAAsB,CAAC;CACxC;AAED,yGAAyG;AACzG,MAAM,CAAC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,UAA0B,EAAE;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC1D,+FAA+F;IAC/F,gGAAgG;IAChG,iGAAiG;IACjG,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjH,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxF,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IACjF,wGAAwG;IACxG,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/I,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI;QAC7B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,KAAK,CAAC,OAAO;YACb,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;YACvB,CAAC,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5I,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAExE,OAAO;QACL,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE;YACP,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI;YAC5B,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI;YAC5B,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ;YACzF,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YACnC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM;YAC9E,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACvI,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzF;QACD,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;QAChC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CAAC,OAAwB,EAAE,IAA6B;IAC/E,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,CAAC,IAAY,EAA2B,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,IAAI,GAAqB,EAAE,CAAC;IAClC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;YAAE,SAAS;QAC3G,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACzH,KAAK,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;SAC7H,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACvH,CAAC;AAED,sIAAsI;AACtI,SAAS,aAAa,CAAC,OAAwB,EAAE,OAAoB,EAAE,OAAkD;IACvH,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO;QACL,GAAG,OAAO;QACV,SAAS;QACT,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;QACzE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;QACrF,SAAS,EAAE;YACT,GAAG,OAAO,CAAC,SAAS;YACpB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;YAC/E,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;SAChG;QACD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;QACpG,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC;QAC5E,kBAAkB,EAAE,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC;QAC9D,sBAAsB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;KACvG,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,OAAuB;IACtE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACvF,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3G,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAClK,MAAM,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/L,iFAAiF;IACjF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QACnF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAE5J,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,YAAY,GAAG,KAAK,EAAE,YAAY,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,aAAa,GAAqC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,uBAAuB,EAAE,CAAC;QACvK,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QACzC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7E,oBAAoB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;YACjE,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;YAC1D,qBAAqB,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;SAC7H,CAAC,CAAC;QACH,YAAY,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACtI,IAAI,KAAK;YAAE,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;IAC/C,CAAC;IACD,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC;IACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAoB;QAC/B,SAAS;QACT,OAAO;QACP,SAAS;QACT,SAAS;QACT,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC;QACtB,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC;QAC7B,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,aAAa;QACb,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC;QACnC,kBAAkB;QAClB,sBAAsB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;QACtG,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;KACtC,CAAC;IACF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAClD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,IAAI,oBAAoB,CAAC,oBAAoB,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,wEAAwE,EAAE,CAAC,CAAC;IAC1M,CAAC;IACD,uEAAuE;IACvE,yEAAyE;IACzE,iDAAiD;IACjD,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iDAAiD,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAuB,CAAC,CAAC;YACxF,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,YAAoB,EAAE,KAAK,GAAG,CAAC;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACpL,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC;QAClG,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,0BAA0B,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,wGAAwG;AACxG,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAwC,CAAC;QACzI,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAClD,CAAC;AACH,CAAC"}
|
package/dist/init.d.ts
CHANGED
|
@@ -84,7 +84,7 @@ export type CiFailOn = 'regression' | 'poor';
|
|
|
84
84
|
export declare function githubWorkflow(manager: PackageManager, failOn?: CiFailOn): string;
|
|
85
85
|
/**
|
|
86
86
|
* The GitLab job `init` writes: an `include` of the ng-checkup template at
|
|
87
|
-
* the `
|
|
87
|
+
* the `v1` tag, plus the one setting `init` decides, `NG_CHECKUP_FAIL_ON`.
|
|
88
88
|
*
|
|
89
89
|
* The template (`gitlab/ng-checkup.yml`) runs the release it names with
|
|
90
90
|
* `npx`, needs no install step, and brings the merge request integration:
|
|
@@ -95,8 +95,8 @@ export declare function githubWorkflow(manager: PackageManager, failOn?: CiFailO
|
|
|
95
95
|
* explains.
|
|
96
96
|
*/
|
|
97
97
|
export declare function gitlabJob(failOn?: CiFailOn): string;
|
|
98
|
-
/** Where `include: remote:` finds the GitLab template: the moving `
|
|
99
|
-
export declare const GITLAB_TEMPLATE_URL = "https://raw.githubusercontent.com/stefankuburovic/ng-checkup/
|
|
98
|
+
/** Where `include: remote:` finds the GitLab template: the moving `v1` tag, so fixes arrive without re-running `init`. */
|
|
99
|
+
export declare const GITLAB_TEMPLATE_URL = "https://raw.githubusercontent.com/stefankuburovic/ng-checkup/v1/gitlab/ng-checkup.yml";
|
|
100
100
|
/**
|
|
101
101
|
* Serialises `value` with the indentation and final newline of `original`,
|
|
102
102
|
* so `init` changes only the lines it means to and a `git diff` of
|
package/dist/init.js
CHANGED
|
@@ -205,7 +205,7 @@ ${CI_REPORTS.map((report) => ` ${report}`).join('\n')}
|
|
|
205
205
|
}
|
|
206
206
|
/**
|
|
207
207
|
* The GitLab job `init` writes: an `include` of the ng-checkup template at
|
|
208
|
-
* the `
|
|
208
|
+
* the `v1` tag, plus the one setting `init` decides, `NG_CHECKUP_FAIL_ON`.
|
|
209
209
|
*
|
|
210
210
|
* The template (`gitlab/ng-checkup.yml`) runs the release it names with
|
|
211
211
|
* `npx`, needs no install step, and brings the merge request integration:
|
|
@@ -232,8 +232,8 @@ ng-checkup:
|
|
|
232
232
|
NG_CHECKUP_FAIL_ON: ${failOn}
|
|
233
233
|
`;
|
|
234
234
|
}
|
|
235
|
-
/** Where `include: remote:` finds the GitLab template: the moving `
|
|
236
|
-
export const GITLAB_TEMPLATE_URL = 'https://raw.githubusercontent.com/stefankuburovic/ng-checkup/
|
|
235
|
+
/** Where `include: remote:` finds the GitLab template: the moving `v1` tag, so fixes arrive without re-running `init`. */
|
|
236
|
+
export const GITLAB_TEMPLATE_URL = 'https://raw.githubusercontent.com/stefankuburovic/ng-checkup/v1/gitlab/ng-checkup.yml';
|
|
237
237
|
/**
|
|
238
238
|
* Serialises `value` with the indentation and final newline of `original`,
|
|
239
239
|
* so `init` changes only the lines it means to and a `git diff` of
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type HistoryReport } from '../history.js';
|
|
2
|
+
/**
|
|
3
|
+
* `ng-checkup history` for a terminal: one line per point (date, commit,
|
|
4
|
+
* Angular, score, lines of code), then the measures that moved the most
|
|
5
|
+
* between the first point and now.
|
|
6
|
+
*/
|
|
7
|
+
export declare function renderHistoryTerminal(report: HistoryReport, options: {
|
|
8
|
+
color: boolean;
|
|
9
|
+
}): string;
|
|
10
|
+
/** `ng-checkup history --report x.md`: the same two tables, for a wiki or a pull request. */
|
|
11
|
+
export declare function renderHistoryMarkdown(report: HistoryReport): string;
|
|
12
|
+
/**
|
|
13
|
+
* `ng-checkup history --report x.html`: a self-contained page with the score
|
|
14
|
+
* over time, one small chart per measure that moved most, and the table of
|
|
15
|
+
* points. No script and no external request, like the checkup report.
|
|
16
|
+
*/
|
|
17
|
+
export declare function renderHistoryHtml(report: HistoryReport): string;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { formatCount } from '../checks/context.js';
|
|
2
|
+
import { movedMeasures } from '../history.js';
|
|
3
|
+
import { escape, STYLES } from './html.js';
|
|
4
|
+
import { palette } from './terminal.js';
|
|
5
|
+
/** A point's commit as the reports show it: seven characters, or `working tree`. */
|
|
6
|
+
function shortCommit(point) {
|
|
7
|
+
return point.commit === 'working tree' ? 'now' : point.commit.slice(0, 7);
|
|
8
|
+
}
|
|
9
|
+
/** `+3`, `-12`, `±0`: how a number moved, with its sign. */
|
|
10
|
+
function change(first, last) {
|
|
11
|
+
const delta = last - first;
|
|
12
|
+
return delta > 0 ? `+${formatCount(delta)}` : delta < 0 ? `-${formatCount(-delta)}` : '±0';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* `ng-checkup history` for a terminal: one line per point (date, commit,
|
|
16
|
+
* Angular, score, lines of code), then the measures that moved the most
|
|
17
|
+
* between the first point and now.
|
|
18
|
+
*/
|
|
19
|
+
export function renderHistoryTerminal(report, options) {
|
|
20
|
+
const c = palette(options.color);
|
|
21
|
+
const lines = [`${c.bold(report.tool.name)} ${c.dim(report.tool.version)} ${c.bold('history')} ${c.dim(`of ${report.root}, ${report.points.length} points`)}`, ''];
|
|
22
|
+
lines.push(c.dim(` ${'date'.padEnd(11)} ${'commit'.padEnd(8)} ${'Angular'.padEnd(9)} ${'score'.padStart(5)} ${'lines'.padStart(9)}`));
|
|
23
|
+
for (const point of report.points) {
|
|
24
|
+
const score = point.score === undefined ? '-' : String(point.score);
|
|
25
|
+
lines.push(` ${point.date.padEnd(11)} ${c.dim(shortCommit(point).padEnd(8))} ${(point.angularVersion ?? '-').padEnd(9)} ${c.bold(score.padStart(5))} ${formatCount(point.linesOfCode).padStart(9)}`);
|
|
26
|
+
}
|
|
27
|
+
const moved = movedMeasures(report);
|
|
28
|
+
lines.push('');
|
|
29
|
+
if (moved.length === 0)
|
|
30
|
+
lines.push(` ${c.dim('No measure moved between the first point and now.')}`);
|
|
31
|
+
else {
|
|
32
|
+
lines.push(c.bold('Moved most since the first point'));
|
|
33
|
+
// A measure counts debt, so a falling number is progress.
|
|
34
|
+
for (const entry of moved)
|
|
35
|
+
lines.push(` ${(entry.last < entry.first ? c.green : c.red)(change(entry.first, entry.last).padStart(7))} ${entry.label} ${c.dim(`(${formatCount(entry.first)} -> ${formatCount(entry.last)})`)}`);
|
|
36
|
+
}
|
|
37
|
+
return lines.join('\n');
|
|
38
|
+
}
|
|
39
|
+
/** `ng-checkup history --report x.md`: the same two tables, for a wiki or a pull request. */
|
|
40
|
+
export function renderHistoryMarkdown(report) {
|
|
41
|
+
const lines = [`# ${report.tool.name} history of \`${report.root}\``, '', `${report.points.length} points, one per month back from now. Generated ${report.generatedAt.slice(0, 10)} by ${report.tool.name} ${report.tool.version}.`, ''];
|
|
42
|
+
lines.push('| Date | Commit | Angular | Score | Lines of code |', '| --- | --- | --- | ---: | ---: |');
|
|
43
|
+
for (const point of report.points)
|
|
44
|
+
lines.push(`| ${point.date} | \`${shortCommit(point)}\` | ${point.angularVersion ?? '-'} | ${point.score ?? '-'} | ${formatCount(point.linesOfCode)} |`);
|
|
45
|
+
const moved = movedMeasures(report);
|
|
46
|
+
if (moved.length > 0) {
|
|
47
|
+
lines.push('', '## Moved most since the first point', '', '| Measure | First | Now | Change |', '| --- | ---: | ---: | ---: |');
|
|
48
|
+
for (const entry of moved)
|
|
49
|
+
lines.push(`| ${entry.label} | ${formatCount(entry.first)} | ${formatCount(entry.last)} | ${change(entry.first, entry.last)} |`);
|
|
50
|
+
}
|
|
51
|
+
return `${lines.join('\n')}\n`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* One line chart as inline SVG: a value per point, missing values leave a
|
|
55
|
+
* gap. The y axis starts at zero (or spans 0 to 100 for the score), so a
|
|
56
|
+
* drop from 412 to 398 looks like the small step it is rather than a cliff.
|
|
57
|
+
*/
|
|
58
|
+
function lineChart(points, values, options) {
|
|
59
|
+
// The small charts sit two to a row, so a narrower viewBox keeps their text at the same size as the wide one's.
|
|
60
|
+
const width = options.width ?? 640;
|
|
61
|
+
const height = 170;
|
|
62
|
+
const left = 44;
|
|
63
|
+
const right = 16;
|
|
64
|
+
const top = 14;
|
|
65
|
+
const bottom = 30;
|
|
66
|
+
const known = values.filter((value) => value !== undefined);
|
|
67
|
+
const max = options.max ?? roundUp(Math.max(1, ...known));
|
|
68
|
+
const x = (index) => (points.length === 1 ? left + (width - left - right) / 2 : left + (index * (width - left - right)) / (points.length - 1));
|
|
69
|
+
const y = (value) => top + (height - top - bottom) * (1 - value / max);
|
|
70
|
+
const segments = [[]];
|
|
71
|
+
values.forEach((value, index) => {
|
|
72
|
+
if (value === undefined)
|
|
73
|
+
segments.push([]);
|
|
74
|
+
else
|
|
75
|
+
segments.at(-1).push(`${x(index).toFixed(1)},${y(value).toFixed(1)}`);
|
|
76
|
+
});
|
|
77
|
+
const lines = segments.filter((segment) => segment.length > 1).map((segment) => `<polyline points="${segment.join(' ')}" fill="none" stroke="${options.colour}" stroke-width="2" stroke-linejoin="round"/>`);
|
|
78
|
+
const dots = values.map((value, index) => (value === undefined ? '' : `<circle cx="${x(index).toFixed(1)}" cy="${y(value).toFixed(1)}" r="3" fill="${options.colour}"><title>${escape(`${points[index].date}: ${formatCount(value)}`)}</title></circle>`));
|
|
79
|
+
// Every label would collide on a twelve-point chart: first, last, and every third in between.
|
|
80
|
+
const labels = points.map((point, index) => (index === 0 || index === points.length - 1 || index % 3 === 0 ? `<text x="${x(index).toFixed(1)}" y="${height - 10}" text-anchor="middle">${escape(index === points.length - 1 ? 'now' : point.date.slice(0, 7))}</text>` : ''));
|
|
81
|
+
const grid = [0, max / 2, max].map((value) => `<line x1="${left}" x2="${width - right}" y1="${y(value).toFixed(1)}" y2="${y(value).toFixed(1)}" class="grid"/><text x="${left - 8}" y="${(y(value) + 4).toFixed(1)}" text-anchor="end">${formatCount(Math.round(value))}</text>`);
|
|
82
|
+
return `<figure class="chart"><figcaption>${escape(options.title)}</figcaption><svg viewBox="0 0 ${width} ${height}" role="img" aria-label="${escape(options.title)}">${grid.join('')}${lines.join('')}${dots.join('')}${labels.join('')}</svg></figure>`;
|
|
83
|
+
}
|
|
84
|
+
/** The next round number (1, 1.5, 2, 3, 4, 5, 6 or 8 times a power of ten) at or above `value`, so an axis ends on 3 000 rather than 2 896. */
|
|
85
|
+
function roundUp(value) {
|
|
86
|
+
const power = 10 ** Math.floor(Math.log10(value));
|
|
87
|
+
return ([1, 1.5, 2, 3, 4, 5, 6, 8, 10].map((step) => step * power).find((candidate) => candidate >= value) ?? 10 * power);
|
|
88
|
+
}
|
|
89
|
+
/** Rules for the charts, on top of the report stylesheet. */
|
|
90
|
+
const HISTORY_STYLES = `
|
|
91
|
+
.charts { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; margin: 24px 0; }
|
|
92
|
+
.chart { margin: 0; padding: 14px 16px 6px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; }
|
|
93
|
+
.chart.wide { grid-column: 1 / -1; }
|
|
94
|
+
.chart figcaption { font-weight: 600; font-size: 14px; margin-bottom: 6px; }
|
|
95
|
+
.chart svg { display: block; width: 100%; height: auto; }
|
|
96
|
+
.chart text { fill: var(--muted); font-size: 11px; font-family: inherit; }
|
|
97
|
+
.chart .grid { stroke: var(--border); stroke-width: 1; }
|
|
98
|
+
h2 { margin: 36px 0 12px; font-size: 20px; }
|
|
99
|
+
`;
|
|
100
|
+
/**
|
|
101
|
+
* `ng-checkup history --report x.html`: a self-contained page with the score
|
|
102
|
+
* over time, one small chart per measure that moved most, and the table of
|
|
103
|
+
* points. No script and no external request, like the checkup report.
|
|
104
|
+
*/
|
|
105
|
+
export function renderHistoryHtml(report) {
|
|
106
|
+
const moved = movedMeasures(report);
|
|
107
|
+
const charts = [
|
|
108
|
+
lineChart(report.points, report.points.map((point) => point.score), { title: 'Score', max: 100, colour: 'var(--accent)' }).replace('class="chart"', 'class="chart wide"'),
|
|
109
|
+
...moved.map((entry) => lineChart(report.points, report.points.map((point) => point.measures[entry.key]), { title: `${entry.label} (${change(entry.first, entry.last)})`, colour: entry.last < entry.first ? 'var(--good)' : 'var(--poor)', width: 420 })),
|
|
110
|
+
];
|
|
111
|
+
const rows = report.points
|
|
112
|
+
.map((point) => `<tr><td>${escape(point.date)}</td><td><code>${escape(shortCommit(point))}</code></td><td>${escape(point.angularVersion ?? '-')}</td><td class="num">${point.score ?? '-'}</td><td class="num">${formatCount(point.linesOfCode)}</td></tr>`)
|
|
113
|
+
.join('');
|
|
114
|
+
return `<!doctype html>
|
|
115
|
+
<html lang="en">
|
|
116
|
+
<head>
|
|
117
|
+
<meta charset="utf-8">
|
|
118
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
119
|
+
<title>History of ${escape(report.root)}</title>
|
|
120
|
+
<style>${STYLES}${HISTORY_STYLES}</style>
|
|
121
|
+
</head>
|
|
122
|
+
<body>
|
|
123
|
+
<main>
|
|
124
|
+
<header class="masthead"><div>
|
|
125
|
+
<p class="eyebrow">${escape(report.tool.name)} history</p>
|
|
126
|
+
<h1>${escape(report.root)}</h1>
|
|
127
|
+
<p class="meta">${report.points.length} points, one per month back from now. Generated ${escape(report.generatedAt.slice(0, 10))} by ${escape(report.tool.name)} ${escape(report.tool.version)}.</p>
|
|
128
|
+
</div></header>
|
|
129
|
+
<section class="charts">${charts.join('\n')}</section>
|
|
130
|
+
${moved.length === 0 ? '<p class="meta">No measure moved between the first point and now.</p>' : ''}
|
|
131
|
+
<h2>Points</h2>
|
|
132
|
+
<div class="table-wrap"><table class="projects"><thead><tr><th>Date</th><th>Commit</th><th>Angular</th><th class="num">Score</th><th class="num">Lines of code</th></tr></thead><tbody>${rows}</tbody></table></div>
|
|
133
|
+
</main>
|
|
134
|
+
</body>
|
|
135
|
+
</html>
|
|
136
|
+
`;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/report/history.ts"],"names":[],"mappings":"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"}
|
package/dist/report/html.d.ts
CHANGED
|
@@ -12,3 +12,8 @@ import type { Report } from '../types.js';
|
|
|
12
12
|
export declare function renderHtml(report: Report): string;
|
|
13
13
|
/** HTML-escapes text for element content and double-quoted attributes. */
|
|
14
14
|
export declare function escape(text: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* The stylesheet. Colours are tokens on `:root`, redefined for dark mode, so
|
|
17
|
+
* the grade and severity colours stay legible on both backgrounds.
|
|
18
|
+
*/
|
|
19
|
+
export declare const STYLES = "\n:root {\n --bg: #f7f7f5; --surface: #ffffff; --text: #1b1d21; --muted: #5d636e; --border: #e3e3df; --code-bg: #f0f0ec;\n --good: #1f7a4d; --good-bg: #e3f3ea; --fair: #8a5a00; --fair-bg: #fbf0d9; --poor: #b42318; --poor-bg: #fde8e6; --info: #5d636e; --info-bg: #ececea;\n --accent: #3b5bdb; --ring-track: #e7e7e3;\n color-scheme: light;\n}\n@media (prefers-color-scheme: dark) {\n :root {\n --bg: #121316; --surface: #1b1d21; --text: #ececec; --muted: #9aa0aa; --border: #2c2f35; --code-bg: #25282e;\n --good: #5cc98f; --good-bg: #173326; --fair: #e8b54d; --fair-bg: #3a2d10; --poor: #f17a6e; --poor-bg: #3d1a17; --info: #9aa0aa; --info-bg: #2a2c31;\n --accent: #8ea6ff; --ring-track: #2c2f35;\n color-scheme: dark;\n }\n}\n* { box-sizing: border-box; }\nbody { margin: 0; background: var(--bg); color: var(--text); font: 15px/1.55 ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif; -webkit-font-smoothing: antialiased; }\nmain { max-width: 960px; margin: 0 auto; padding: 40px 16px 56px; }\ncode, .files { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.88em; }\ncode { background: var(--code-bg); padding: 1px 5px; border-radius: 4px; overflow-wrap: anywhere; }\na { color: inherit; }\n.masthead { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding-bottom: 28px; border-bottom: 1px solid var(--border); }\n.eyebrow { margin: 0 0 4px; color: var(--accent); font-size: 13px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }\nh1 { margin: 0 0 8px; font-size: 32px; line-height: 1.15; letter-spacing: -0.01em; overflow-wrap: anywhere; }\n.meta { margin: 0; color: var(--muted); font-size: 14px; }\n.score { margin: 0; position: relative; width: 112px; height: 112px; flex: none; }\n.score svg { display: block; }\n.ring-track { fill: none; stroke: var(--ring-track); stroke-width: 9; }\n.ring-value { fill: none; stroke-width: 9; stroke-linecap: round; }\n.ring-value.grade-good { stroke: var(--good); } .ring-value.grade-fair { stroke: var(--fair); } .ring-value.grade-poor { stroke: var(--poor); }\n.score figcaption { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }\n.score-value { font-size: 30px; font-weight: 700; font-variant-numeric: tabular-nums; }\n.score-unit { color: var(--muted); font-size: 13px; margin-left: 1px; padding-top: 10px; }\n.table-wrap { overflow-x: auto; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; }\n.projects { width: 100%; border-collapse: collapse; font-size: 14px; }\n.projects th, .projects td { text-align: left; vertical-align: top; padding: 10px 14px; border-bottom: 1px solid var(--border); }\n.projects tbody tr:last-child td { border-bottom: 0; }\n.projects th { color: var(--muted); font-weight: 600; font-size: 12.5px; }\n.projects .num { text-align: right; white-space: nowrap; }\n.projects code { color: var(--muted); font-size: 12.5px; }\n.projects .pill { margin: 0 4px 4px 0; }\n.section-title { font-size: 13px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin: 36px 0 12px; }\n.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }\n.card { display: flex; flex-direction: column; gap: 6px; padding: 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; text-decoration: none; transition: border-color 0.15s; }\n.card:hover { border-color: var(--accent); }\n.card strong { font-size: 15px; }\n.card-summary { color: var(--muted); font-size: 13.5px; }\n.pill, .chip { display: inline-block; width: fit-content; border-radius: 999px; font-size: 12px; font-weight: 600; padding: 2px 10px; }\n.grade-good.pill { color: var(--good); background: var(--good-bg); } .grade-fair.pill { color: var(--fair); background: var(--fair-bg); }\n.grade-poor.pill { color: var(--poor); background: var(--poor-bg); } .grade-info.pill { color: var(--info); background: var(--info-bg); }\n.chip { flex: none; padding: 1px 8px; font-size: 11.5px; }\n.sev-high { color: var(--poor); background: var(--poor-bg); } .sev-medium { color: var(--fair); background: var(--fair-bg); }\n.sev-low, .sev-info { color: var(--info); background: var(--info-bg); }\n.sev-good { color: var(--good); background: var(--good-bg); }\n.steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }\n.step.before { margin-bottom: 10px; }\n.step code.command { display: block; margin: 8px 0 0; padding: 6px 10px; border-radius: 6px; background: var(--code-bg); overflow-x: auto; white-space: nowrap; }\n.requirements { display: flex; flex-wrap: wrap; gap: 6px; }\n.req { font-size: 12.5px; padding: 2px 8px; border-radius: 999px; background: var(--info-bg); color: var(--info); }\n.req-move { background: var(--fair-bg); color: var(--fair); }\n.plan-items { margin: 8px 0 0; padding-left: 18px; color: var(--text); font-size: 14px; }\n.plan-items li { margin: 6px 0; }\n.plan-items p { margin: 2px 0 0; }\n.plan-items .count { color: var(--muted); font-size: 13px; }\n.priorities { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; counter-reset: priority; }\n.priorities li { display: flex; gap: 10px; align-items: baseline; padding: 12px 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; }\n.priorities .area { color: var(--muted); font-size: 13px; margin-left: 6px; white-space: nowrap; }\n.check { margin-top: 40px; padding-top: 28px; border-top: 1px solid var(--border); }\n.check-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }\n.check-head h2 { margin: 0; font-size: 22px; letter-spacing: -0.005em; }\n.check-summary { margin: 8px 0 16px; color: var(--muted); }\n.metrics { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin: 0 0 18px; }\n.metric { padding: 12px 14px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; }\n.metric dt { color: var(--muted); font-size: 12.5px; }\n.metric dd { margin: 2px 0 0; font-size: 20px; font-weight: 650; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }\n.metric dd.hint { font-size: 12.5px; font-weight: 400; color: var(--muted); }\n.findings { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }\n.finding { min-width: 0; padding: 14px 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; break-inside: avoid; }\n.finding-head { display: flex; gap: 10px; align-items: baseline; }\n.finding p { margin: 6px 0 0; color: var(--muted); font-size: 14px; }\n.files { margin: 8px 0 0; padding: 8px 12px; list-style: none; background: var(--code-bg); border-radius: 6px; color: var(--muted); overflow-x: auto; }\n.files li { white-space: nowrap; line-height: 1.7; }\n.files .more { font-family: inherit; font-style: italic; }\nfooter { margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--border); color: var(--muted); font-size: 13px; }\nfooter p { margin: 4px 0; }\n@media (max-width: 600px) {\n main { padding-top: 24px; }\n .masthead { flex-direction: column-reverse; align-items: flex-start; }\n h1 { font-size: 26px; }\n .priorities li, .finding-head { flex-direction: column; gap: 6px; }\n .priorities .area { margin-left: 0; }\n}\n@media print {\n /* Printing from a dark-mode browser must still give black on white. */\n :root {\n --bg: #fff; --surface: #fff; --text: #1b1d21; --muted: #5d636e; --border: #e3e3df; --code-bg: #f0f0ec;\n --good: #1f7a4d; --good-bg: #e3f3ea; --fair: #8a5a00; --fair-bg: #fbf0d9; --poor: #b42318; --poor-bg: #fde8e6; --info: #5d636e; --info-bg: #ececea;\n --accent: #3b5bdb; --ring-track: #e7e7e3; color-scheme: light;\n }\n main { padding: 0; max-width: none; }\n .card:hover { border-color: var(--border); }\n .check { break-before: auto; }\n}\n";
|
package/dist/report/html.js
CHANGED
|
@@ -383,7 +383,7 @@ const CLIENT_STYLES = `
|
|
|
383
383
|
* The stylesheet. Colours are tokens on `:root`, redefined for dark mode, so
|
|
384
384
|
* the grade and severity colours stay legible on both backgrounds.
|
|
385
385
|
*/
|
|
386
|
-
const STYLES = `
|
|
386
|
+
export const STYLES = `
|
|
387
387
|
:root {
|
|
388
388
|
--bg: #f7f7f5; --surface: #ffffff; --text: #1b1d21; --muted: #5d636e; --border: #e3e3df; --code-bg: #f0f0ec;
|
|
389
389
|
--good: #1f7a4d; --good-bg: #e3f3ea; --fair: #8a5a00; --fair-bg: #fbf0d9; --poor: #b42318; --poor-bg: #fde8e6; --info: #5d636e; --info-bg: #ececea;
|