@aiready/cli 0.12.20 → 0.12.23
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/.turbo/turbo-build.log +8 -8
- package/.turbo/turbo-lint.log +24 -5
- package/.turbo/turbo-test.log +66 -85
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +865 -0
- package/coverage/coverage-final.json +15 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +146 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/src/commands/agent-grounding.ts.html +271 -0
- package/coverage/src/commands/ai-signal-clarity.ts.html +253 -0
- package/coverage/src/commands/change-amplification.ts.html +94 -0
- package/coverage/src/commands/consistency.ts.html +781 -0
- package/coverage/src/commands/context.ts.html +871 -0
- package/coverage/src/commands/deps-health.ts.html +280 -0
- package/coverage/src/commands/doc-drift.ts.html +271 -0
- package/coverage/src/commands/index.html +281 -0
- package/coverage/src/commands/patterns.ts.html +745 -0
- package/coverage/src/commands/scan.ts.html +1393 -0
- package/coverage/src/commands/testability.ts.html +304 -0
- package/coverage/src/commands/upload.ts.html +466 -0
- package/coverage/src/commands/visualize.ts.html +1027 -0
- package/coverage/src/index.html +116 -0
- package/coverage/src/index.ts.html +1372 -0
- package/coverage/src/utils/helpers.ts.html +559 -0
- package/coverage/src/utils/index.html +116 -0
- package/dist/cli.js +249 -15
- package/dist/cli.mjs +247 -13
- package/package.json +13 -12
- package/src/.aiready/aiready-report-20260308-174006.json +29526 -0
- package/src/__tests__/unified.test.ts +95 -0
- package/src/cli.ts +86 -0
- package/src/commands/__tests__/agent-grounding.test.ts +24 -0
- package/src/commands/__tests__/ai-signal-clarity.test.ts +32 -0
- package/src/commands/__tests__/consistency.test.ts +97 -0
- package/src/commands/__tests__/deps-health.test.ts +26 -0
- package/src/commands/__tests__/doc-drift.test.ts +26 -0
- package/src/commands/__tests__/extra-commands.test.ts +177 -0
- package/src/commands/__tests__/scan.test.ts +147 -0
- package/src/commands/__tests__/testability.test.ts +36 -0
- package/src/commands/__tests__/upload.test.ts +51 -0
- package/src/commands/__tests__/visualize.test.ts +82 -0
- package/src/commands/clawmart.ts +162 -0
- package/src/commands/index.ts +8 -0
- package/src/commands/scan.ts +33 -11
- package/src/utils/__tests__/helpers.test.ts +35 -0
- package/vitest.config.ts +20 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @aiready/cli@0.12.
|
|
3
|
+
> @aiready/cli@0.12.22 build /Users/pengcao/projects/aiready/packages/cli
|
|
4
4
|
> tsup src/index.ts src/cli.ts --format cjs,esm
|
|
5
5
|
|
|
6
6
|
[34mCLI[39m Building entry: src/cli.ts, src/index.ts
|
|
@@ -10,20 +10,20 @@
|
|
|
10
10
|
[34mCJS[39m Build start
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
|
|
13
|
-
[90m[[
|
|
13
|
+
[90m[[90m3:18:55 pm[90m][39m [43m[30m WARN [39m[49m [33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1m"import.meta" is not available with the "cjs" output format and will be empty[0m [empty-import-meta]
|
|
14
14
|
|
|
15
|
-
src/cli.ts:
|
|
16
|
-
[37m
|
|
15
|
+
src/cli.ts:32:31:
|
|
16
|
+
[37m 32 │ return dirname(fileURLToPath([32mimport.meta[37m.url));
|
|
17
17
|
╵ [32m~~~~~~~~~~~[0m
|
|
18
18
|
|
|
19
19
|
You need to set the output format to "esm" for "import.meta" to work correctly.
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
[32mESM[39m [1mdist/cli.mjs [22m[32m56.89 KB[39m
|
|
24
23
|
[32mESM[39m [1mdist/index.mjs [22m[32m170.00 B[39m
|
|
25
24
|
[32mESM[39m [1mdist/chunk-VOKP7FGM.mjs [22m[32m9.52 KB[39m
|
|
26
|
-
[32mESM[39m
|
|
25
|
+
[32mESM[39m [1mdist/cli.mjs [22m[32m66.64 KB[39m
|
|
26
|
+
[32mESM[39m ⚡️ Build success in 28ms
|
|
27
27
|
[32mCJS[39m [1mdist/index.js [22m[32m10.62 KB[39m
|
|
28
|
-
[32mCJS[39m [1mdist/cli.js [22m[
|
|
29
|
-
[32mCJS[39m ⚡️ Build success in
|
|
28
|
+
[32mCJS[39m [1mdist/cli.js [22m[32m79.99 KB[39m
|
|
29
|
+
[32mCJS[39m ⚡️ Build success in 28ms
|
package/.turbo/turbo-lint.log
CHANGED
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @aiready/cli@0.
|
|
3
|
+
> @aiready/cli@0.12.20 lint /Users/pengcao/projects/aiready/packages/cli
|
|
4
4
|
> eslint src
|
|
5
5
|
|
|
6
6
|
[0m
|
|
7
|
+
[4m/Users/pengcao/projects/aiready/packages/cli/src/__tests__/cli.test.ts[24m
|
|
8
|
+
[2m1:55[22m [33mwarning[39m 'vi' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
9
|
+
|
|
10
|
+
[4m/Users/pengcao/projects/aiready/packages/cli/src/__tests__/config-shape.test.ts[24m
|
|
11
|
+
[2m79:7[22m [31merror[39m Use "@ts-expect-error" instead of "@ts-ignore", as "@ts-ignore" will do nothing if the following line is error-free [2m@typescript-eslint/ban-ts-comment[22m
|
|
12
|
+
|
|
7
13
|
[4m/Users/pengcao/projects/aiready/packages/cli/src/commands/scan.ts[24m
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
[2m12:3[22m [33mwarning[39m 'getElapsedTime' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
15
|
+
[2m15:3[22m [33mwarning[39m 'formatToolScore' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
16
|
+
[2m17:3[22m [33mwarning[39m 'estimateCostFromBudget' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
17
|
+
[2m18:3[22m [33mwarning[39m 'getModelPreset' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
18
|
+
[2m20:3[22m [33mwarning[39m 'getRatingDisplay' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
19
|
+
[2m23:3[22m [33mwarning[39m 'IssueType' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
20
|
+
[2m25:3[22m [33mwarning[39m 'ToolRegistry' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
21
|
+
[2m31:3[22m [33mwarning[39m 'truncateArray' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
22
|
+
[2m135:9[22m [31merror[39m 'finalOptions' is never reassigned. Use 'const' instead [2mprefer-const[22m
|
|
23
|
+
|
|
24
|
+
[4m/Users/pengcao/projects/aiready/packages/cli/src/index.ts[24m
|
|
25
|
+
[2m6:3[22m [33mwarning[39m 'GLOBAL_SCAN_OPTIONS' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
26
|
+
[2m12:3[22m [33mwarning[39m 'AnalysisResult' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
27
|
+
[2m14:3[22m [33mwarning[39m 'SpokeOutput' is defined but never used [2m@typescript-eslint/no-unused-vars[22m
|
|
11
28
|
|
|
12
|
-
[
|
|
29
|
+
[31m[1m✖ 14 problems (2 errors, 12 warnings)[22m[39m
|
|
30
|
+
[31m[1m 1 error and 0 warnings potentially fixable with the `--fix` option.[22m[39m
|
|
13
31
|
[0m
|
|
32
|
+
[41m[30m ELIFECYCLE [39m[49m [31mCommand failed with exit code 1.[39m
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,94 +1,75 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @aiready/cli@0.12.
|
|
3
|
+
> @aiready/cli@0.12.22 test /Users/pengcao/projects/aiready/packages/cli
|
|
4
4
|
> vitest run
|
|
5
5
|
|
|
6
6
|
[?25l
|
|
7
7
|
[1m[46m RUN [49m[22m [36mv4.0.18 [39m[90m/Users/pengcao/projects/aiready/packages/cli[39m
|
|
8
8
|
|
|
9
|
-
[
|
|
10
|
-
[
|
|
11
|
-
|
|
12
|
-
[
|
|
13
|
-
[22m[
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
[
|
|
17
|
-
|
|
18
|
-
[
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
[90mstdout[2m | src/__tests__/
|
|
22
|
-
[22m[
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
[22m[
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
[
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
[22m[
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
[22m[
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
[
|
|
46
|
-
[22m[
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
[
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
[
|
|
61
|
-
[
|
|
62
|
-
|
|
63
|
-
[
|
|
64
|
-
[
|
|
65
|
-
|
|
66
|
-
[
|
|
67
|
-
[
|
|
68
|
-
[
|
|
69
|
-
|
|
70
|
-
[
|
|
71
|
-
[22m[39m[
|
|
72
|
-
[
|
|
73
|
-
|
|
74
|
-
[90mstdout[2m | src/__tests__/cli.test.ts[2m > [22m[2mCLI Unified Analysis[2m > [22m[2mshould run analysis with only context tool
|
|
75
|
-
[22m[39m[ToolRegistry#0.14884621788681363] Registering tool: pattern-detect (patterns)
|
|
76
|
-
[ToolRegistry#0.14884621788681363] Registering tool: context-analyzer (context)
|
|
77
|
-
|
|
78
|
-
[90mstdout[2m | src/__tests__/config-shape.test.ts[2m > [22m[2mCLI Configuration Shape[2m > [22m[2mshould strip internal keys like useSmartDefaults and batchSize
|
|
79
|
-
[22m[39m[ToolRegistry#0.7345431815293358] Registering tool: pattern-detect (patterns)
|
|
80
|
-
|
|
81
|
-
[90mstdout[2m | src/__tests__/config-shape.test.ts[2m > [22m[2mCLI Configuration Shape[2m > [22m[2mshould produce a config that is compatible with tool specific collection
|
|
82
|
-
[22m[39m[ToolRegistry#0.7345431815293358] Registering tool: pattern-detect (patterns)
|
|
83
|
-
|
|
84
|
-
[32m✓[39m src/__tests__/cli.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 3632[2mms[22m[39m
|
|
85
|
-
[33m[2m✓[22m[39m should run unified analysis with both tools [33m 3630[2mms[22m[39m
|
|
86
|
-
[32m✓[39m src/__tests__/config-shape.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 3632[2mms[22m[39m
|
|
87
|
-
[33m[2m✓[22m[39m should generate a strictly portable AIReadyConfig in summary [33m 3630[2mms[22m[39m
|
|
88
|
-
|
|
89
|
-
[2m Test Files [22m [1m[32m2 passed[39m[22m[90m (2)[39m
|
|
90
|
-
[2m Tests [22m [1m[32m6 passed[39m[22m[90m (6)[39m
|
|
91
|
-
[2m Start at [22m 17:27:59
|
|
92
|
-
[2m Duration [22m 4.47s[2m (transform 560ms, setup 0ms, import 1.31s, tests 7.26s, environment 0ms)[22m
|
|
9
|
+
[32m✓[39m src/commands/__tests__/testability.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
10
|
+
[32m✓[39m src/commands/__tests__/ai-signal-clarity.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
11
|
+
[32m✓[39m src/commands/__tests__/deps-health.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
12
|
+
[32m✓[39m src/commands/__tests__/doc-drift.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
13
|
+
[90mstdout[2m | src/commands/__tests__/visualize.test.ts[2m > [22m[2mVisualize CLI Action[2m > [22m[2mshould generate HTML from specified report
|
|
14
|
+
[22m[39mBuilding graph from report...
|
|
15
|
+
|
|
16
|
+
[32m✓[39m src/commands/__tests__/agent-grounding.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
17
|
+
[90mstdout[2m | src/commands/__tests__/visualize.test.ts[2m > [22m[2mVisualize CLI Action[2m > [22m[2mshould generate HTML from specified report
|
|
18
|
+
[22m[39mGenerating HTML...
|
|
19
|
+
✅ Visualization written to: /Users/pengcao/projects/aiready/packages/cli/visualization.html
|
|
20
|
+
|
|
21
|
+
[90mstdout[2m | src/commands/__tests__/visualize.test.ts[2m > [22m[2mVisualize CLI Action[2m > [22m[2mshould find latest report if none specified
|
|
22
|
+
[22m[39mFound latest report: latest.json
|
|
23
|
+
Building graph from report...
|
|
24
|
+
|
|
25
|
+
[90mstdout[2m | src/commands/__tests__/visualize.test.ts[2m > [22m[2mVisualize CLI Action[2m > [22m[2mshould find latest report if none specified
|
|
26
|
+
[22m[39mGenerating HTML...
|
|
27
|
+
✅ Visualization written to: /Users/pengcao/projects/aiready/packages/cli/visualization.html
|
|
28
|
+
|
|
29
|
+
[90mstdout[2m | src/commands/__tests__/visualize.test.ts[2m > [22m[2mVisualize CLI Action[2m > [22m[2mshould handle missing reports
|
|
30
|
+
[22m[39m
|
|
31
|
+
Generate a report with:
|
|
32
|
+
aiready scan --output json
|
|
33
|
+
|
|
34
|
+
Or specify a custom report:
|
|
35
|
+
aiready visualise --report <path-to-report.json>
|
|
36
|
+
|
|
37
|
+
[90mstdout[2m | src/commands/__tests__/visualize.test.ts[2m > [22m[2mVisualize CLI Action[2m > [22m[2mshould attempt to open visualization if requested
|
|
38
|
+
[22m[39mBuilding graph from report...
|
|
39
|
+
|
|
40
|
+
[90mstdout[2m | src/commands/__tests__/visualize.test.ts[2m > [22m[2mVisualize CLI Action[2m > [22m[2mshould attempt to open visualization if requested
|
|
41
|
+
[22m[39mGenerating HTML...
|
|
42
|
+
✅ Visualization written to: /Users/pengcao/projects/aiready/packages/cli/visualization.html
|
|
43
|
+
|
|
44
|
+
[32m✓[39m src/commands/__tests__/visualize.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 27[2mms[22m[39m
|
|
45
|
+
[32m✓[39m src/utils/__tests__/helpers.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
46
|
+
[90mstdout[2m | src/commands/__tests__/upload.test.ts[2m > [22m[2mUpload CLI Action[2m > [22m[2mshould fail if API key is missing
|
|
47
|
+
[22m[39m Set AIREADY_API_KEY environment variable or use --api-key flag.
|
|
48
|
+
Get an API key from https://platform.getaiready.dev/dashboard
|
|
49
|
+
🚀 Uploading report to https://dev.platform.getaiready.dev...
|
|
50
|
+
Reading report from /Users/pengcao/projects/aiready/packages/cli/report.json...
|
|
51
|
+
Successfully parsed report JSON.
|
|
52
|
+
|
|
53
|
+
[90mstdout[2m | src/commands/__tests__/upload.test.ts[2m > [22m[2mUpload CLI Action[2m > [22m[2mshould fail if API key is missing
|
|
54
|
+
[22m[39m
|
|
55
|
+
✅ Upload successful! (0.00s)
|
|
56
|
+
View results: https://dev.platform.getaiready.dev/dashboard
|
|
57
|
+
Analysis ID: 123
|
|
58
|
+
Score: 80/100
|
|
59
|
+
|
|
60
|
+
[32m✓[39m src/commands/__tests__/upload.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
61
|
+
[32m✓[39m src/commands/__tests__/consistency.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
62
|
+
[32m✓[39m src/commands/__tests__/scan.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 74[2mms[22m[39m
|
|
63
|
+
[32m✓[39m src/__tests__/unified.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
64
|
+
[32m✓[39m src/commands/__tests__/extra-commands.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 95[2mms[22m[39m
|
|
65
|
+
[32m✓[39m src/__tests__/cli.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 2501[2mms[22m[39m
|
|
66
|
+
[33m[2m✓[22m[39m should run unified analysis with both tools [33m 2499[2mms[22m[39m
|
|
67
|
+
[32m✓[39m src/__tests__/config-shape.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 2500[2mms[22m[39m
|
|
68
|
+
[33m[2m✓[22m[39m should generate a strictly portable AIReadyConfig in summary [33m 2499[2mms[22m[39m
|
|
69
|
+
|
|
70
|
+
[2m Test Files [22m [1m[32m14 passed[39m[22m[90m (14)[39m
|
|
71
|
+
[2m Tests [22m [1m[32m43 passed[39m[22m[90m (43)[39m
|
|
72
|
+
[2m Start at [22m 15:19:20
|
|
73
|
+
[2m Duration [22m 3.27s[2m (transform 1.67s, setup 0ms, import 3.49s, tests 5.26s, environment 1ms)[22m
|
|
93
74
|
|
|
94
75
|
[?25h
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
body, html {
|
|
2
|
+
margin:0; padding: 0;
|
|
3
|
+
height: 100%;
|
|
4
|
+
}
|
|
5
|
+
body {
|
|
6
|
+
font-family: Helvetica Neue, Helvetica, Arial;
|
|
7
|
+
font-size: 14px;
|
|
8
|
+
color:#333;
|
|
9
|
+
}
|
|
10
|
+
.small { font-size: 12px; }
|
|
11
|
+
*, *:after, *:before {
|
|
12
|
+
-webkit-box-sizing:border-box;
|
|
13
|
+
-moz-box-sizing:border-box;
|
|
14
|
+
box-sizing:border-box;
|
|
15
|
+
}
|
|
16
|
+
h1 { font-size: 20px; margin: 0;}
|
|
17
|
+
h2 { font-size: 14px; }
|
|
18
|
+
pre {
|
|
19
|
+
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: 0;
|
|
22
|
+
-moz-tab-size: 2;
|
|
23
|
+
-o-tab-size: 2;
|
|
24
|
+
tab-size: 2;
|
|
25
|
+
}
|
|
26
|
+
a { color:#0074D9; text-decoration:none; }
|
|
27
|
+
a:hover { text-decoration:underline; }
|
|
28
|
+
.strong { font-weight: bold; }
|
|
29
|
+
.space-top1 { padding: 10px 0 0 0; }
|
|
30
|
+
.pad2y { padding: 20px 0; }
|
|
31
|
+
.pad1y { padding: 10px 0; }
|
|
32
|
+
.pad2x { padding: 0 20px; }
|
|
33
|
+
.pad2 { padding: 20px; }
|
|
34
|
+
.pad1 { padding: 10px; }
|
|
35
|
+
.space-left2 { padding-left:55px; }
|
|
36
|
+
.space-right2 { padding-right:20px; }
|
|
37
|
+
.center { text-align:center; }
|
|
38
|
+
.clearfix { display:block; }
|
|
39
|
+
.clearfix:after {
|
|
40
|
+
content:'';
|
|
41
|
+
display:block;
|
|
42
|
+
height:0;
|
|
43
|
+
clear:both;
|
|
44
|
+
visibility:hidden;
|
|
45
|
+
}
|
|
46
|
+
.fl { float: left; }
|
|
47
|
+
@media only screen and (max-width:640px) {
|
|
48
|
+
.col3 { width:100%; max-width:100%; }
|
|
49
|
+
.hide-mobile { display:none!important; }
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.quiet {
|
|
53
|
+
color: #7f7f7f;
|
|
54
|
+
color: rgba(0,0,0,0.5);
|
|
55
|
+
}
|
|
56
|
+
.quiet a { opacity: 0.7; }
|
|
57
|
+
|
|
58
|
+
.fraction {
|
|
59
|
+
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
|
|
60
|
+
font-size: 10px;
|
|
61
|
+
color: #555;
|
|
62
|
+
background: #E8E8E8;
|
|
63
|
+
padding: 4px 5px;
|
|
64
|
+
border-radius: 3px;
|
|
65
|
+
vertical-align: middle;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
div.path a:link, div.path a:visited { color: #333; }
|
|
69
|
+
table.coverage {
|
|
70
|
+
border-collapse: collapse;
|
|
71
|
+
margin: 10px 0 0 0;
|
|
72
|
+
padding: 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
table.coverage td {
|
|
76
|
+
margin: 0;
|
|
77
|
+
padding: 0;
|
|
78
|
+
vertical-align: top;
|
|
79
|
+
}
|
|
80
|
+
table.coverage td.line-count {
|
|
81
|
+
text-align: right;
|
|
82
|
+
padding: 0 5px 0 20px;
|
|
83
|
+
}
|
|
84
|
+
table.coverage td.line-coverage {
|
|
85
|
+
text-align: right;
|
|
86
|
+
padding-right: 10px;
|
|
87
|
+
min-width:20px;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
table.coverage td span.cline-any {
|
|
91
|
+
display: inline-block;
|
|
92
|
+
padding: 0 5px;
|
|
93
|
+
width: 100%;
|
|
94
|
+
}
|
|
95
|
+
.missing-if-branch {
|
|
96
|
+
display: inline-block;
|
|
97
|
+
margin-right: 5px;
|
|
98
|
+
border-radius: 3px;
|
|
99
|
+
position: relative;
|
|
100
|
+
padding: 0 4px;
|
|
101
|
+
background: #333;
|
|
102
|
+
color: yellow;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.skip-if-branch {
|
|
106
|
+
display: none;
|
|
107
|
+
margin-right: 10px;
|
|
108
|
+
position: relative;
|
|
109
|
+
padding: 0 4px;
|
|
110
|
+
background: #ccc;
|
|
111
|
+
color: white;
|
|
112
|
+
}
|
|
113
|
+
.missing-if-branch .typ, .skip-if-branch .typ {
|
|
114
|
+
color: inherit !important;
|
|
115
|
+
}
|
|
116
|
+
.coverage-summary {
|
|
117
|
+
border-collapse: collapse;
|
|
118
|
+
width: 100%;
|
|
119
|
+
}
|
|
120
|
+
.coverage-summary tr { border-bottom: 1px solid #bbb; }
|
|
121
|
+
.keyline-all { border: 1px solid #ddd; }
|
|
122
|
+
.coverage-summary td, .coverage-summary th { padding: 10px; }
|
|
123
|
+
.coverage-summary tbody { border: 1px solid #bbb; }
|
|
124
|
+
.coverage-summary td { border-right: 1px solid #bbb; }
|
|
125
|
+
.coverage-summary td:last-child { border-right: none; }
|
|
126
|
+
.coverage-summary th {
|
|
127
|
+
text-align: left;
|
|
128
|
+
font-weight: normal;
|
|
129
|
+
white-space: nowrap;
|
|
130
|
+
}
|
|
131
|
+
.coverage-summary th.file { border-right: none !important; }
|
|
132
|
+
.coverage-summary th.pct { }
|
|
133
|
+
.coverage-summary th.pic,
|
|
134
|
+
.coverage-summary th.abs,
|
|
135
|
+
.coverage-summary td.pct,
|
|
136
|
+
.coverage-summary td.abs { text-align: right; }
|
|
137
|
+
.coverage-summary td.file { white-space: nowrap; }
|
|
138
|
+
.coverage-summary td.pic { min-width: 120px !important; }
|
|
139
|
+
.coverage-summary tfoot td { }
|
|
140
|
+
|
|
141
|
+
.coverage-summary .sorter {
|
|
142
|
+
height: 10px;
|
|
143
|
+
width: 7px;
|
|
144
|
+
display: inline-block;
|
|
145
|
+
margin-left: 0.5em;
|
|
146
|
+
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
|
|
147
|
+
}
|
|
148
|
+
.coverage-summary .sorted .sorter {
|
|
149
|
+
background-position: 0 -20px;
|
|
150
|
+
}
|
|
151
|
+
.coverage-summary .sorted-desc .sorter {
|
|
152
|
+
background-position: 0 -10px;
|
|
153
|
+
}
|
|
154
|
+
.status-line { height: 10px; }
|
|
155
|
+
/* yellow */
|
|
156
|
+
.cbranch-no { background: yellow !important; color: #111; }
|
|
157
|
+
/* dark red */
|
|
158
|
+
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
|
|
159
|
+
.low .chart { border:1px solid #C21F39 }
|
|
160
|
+
.highlighted,
|
|
161
|
+
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
|
|
162
|
+
background: #C21F39 !important;
|
|
163
|
+
}
|
|
164
|
+
/* medium red */
|
|
165
|
+
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
|
|
166
|
+
/* light red */
|
|
167
|
+
.low, .cline-no { background:#FCE1E5 }
|
|
168
|
+
/* light green */
|
|
169
|
+
.high, .cline-yes { background:rgb(230,245,208) }
|
|
170
|
+
/* medium green */
|
|
171
|
+
.cstat-yes { background:rgb(161,215,106) }
|
|
172
|
+
/* dark green */
|
|
173
|
+
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
|
|
174
|
+
.high .chart { border:1px solid rgb(77,146,33) }
|
|
175
|
+
/* dark yellow (gold) */
|
|
176
|
+
.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
|
|
177
|
+
.medium .chart { border:1px solid #f9cd0b; }
|
|
178
|
+
/* light yellow */
|
|
179
|
+
.medium { background: #fff4c2; }
|
|
180
|
+
|
|
181
|
+
.cstat-skip { background: #ddd; color: #111; }
|
|
182
|
+
.fstat-skip { background: #ddd; color: #111 !important; }
|
|
183
|
+
.cbranch-skip { background: #ddd !important; color: #111; }
|
|
184
|
+
|
|
185
|
+
span.cline-neutral { background: #eaeaea; }
|
|
186
|
+
|
|
187
|
+
.coverage-summary td.empty {
|
|
188
|
+
opacity: .5;
|
|
189
|
+
padding-top: 4px;
|
|
190
|
+
padding-bottom: 4px;
|
|
191
|
+
line-height: 1;
|
|
192
|
+
color: #888;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.cover-fill, .cover-empty {
|
|
196
|
+
display:inline-block;
|
|
197
|
+
height: 12px;
|
|
198
|
+
}
|
|
199
|
+
.chart {
|
|
200
|
+
line-height: 0;
|
|
201
|
+
}
|
|
202
|
+
.cover-empty {
|
|
203
|
+
background: white;
|
|
204
|
+
}
|
|
205
|
+
.cover-full {
|
|
206
|
+
border-right: none !important;
|
|
207
|
+
}
|
|
208
|
+
pre.prettyprint {
|
|
209
|
+
border: none !important;
|
|
210
|
+
padding: 0 !important;
|
|
211
|
+
margin: 0 !important;
|
|
212
|
+
}
|
|
213
|
+
.com { color: #999 !important; }
|
|
214
|
+
.ignore-none { color: #999; font-weight: normal; }
|
|
215
|
+
|
|
216
|
+
.wrapper {
|
|
217
|
+
min-height: 100%;
|
|
218
|
+
height: auto !important;
|
|
219
|
+
height: 100%;
|
|
220
|
+
margin: 0 auto -48px;
|
|
221
|
+
}
|
|
222
|
+
.footer, .push {
|
|
223
|
+
height: 48px;
|
|
224
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
var jumpToCode = (function init() {
|
|
3
|
+
// Classes of code we would like to highlight in the file view
|
|
4
|
+
var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
|
|
5
|
+
|
|
6
|
+
// Elements to highlight in the file listing view
|
|
7
|
+
var fileListingElements = ['td.pct.low'];
|
|
8
|
+
|
|
9
|
+
// We don't want to select elements that are direct descendants of another match
|
|
10
|
+
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
|
|
11
|
+
|
|
12
|
+
// Selector that finds elements on the page to which we can jump
|
|
13
|
+
var selector =
|
|
14
|
+
fileListingElements.join(', ') +
|
|
15
|
+
', ' +
|
|
16
|
+
notSelector +
|
|
17
|
+
missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
|
|
18
|
+
|
|
19
|
+
// The NodeList of matching elements
|
|
20
|
+
var missingCoverageElements = document.querySelectorAll(selector);
|
|
21
|
+
|
|
22
|
+
var currentIndex;
|
|
23
|
+
|
|
24
|
+
function toggleClass(index) {
|
|
25
|
+
missingCoverageElements
|
|
26
|
+
.item(currentIndex)
|
|
27
|
+
.classList.remove('highlighted');
|
|
28
|
+
missingCoverageElements.item(index).classList.add('highlighted');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function makeCurrent(index) {
|
|
32
|
+
toggleClass(index);
|
|
33
|
+
currentIndex = index;
|
|
34
|
+
missingCoverageElements.item(index).scrollIntoView({
|
|
35
|
+
behavior: 'smooth',
|
|
36
|
+
block: 'center',
|
|
37
|
+
inline: 'center'
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function goToPrevious() {
|
|
42
|
+
var nextIndex = 0;
|
|
43
|
+
if (typeof currentIndex !== 'number' || currentIndex === 0) {
|
|
44
|
+
nextIndex = missingCoverageElements.length - 1;
|
|
45
|
+
} else if (missingCoverageElements.length > 1) {
|
|
46
|
+
nextIndex = currentIndex - 1;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
makeCurrent(nextIndex);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function goToNext() {
|
|
53
|
+
var nextIndex = 0;
|
|
54
|
+
|
|
55
|
+
if (
|
|
56
|
+
typeof currentIndex === 'number' &&
|
|
57
|
+
currentIndex < missingCoverageElements.length - 1
|
|
58
|
+
) {
|
|
59
|
+
nextIndex = currentIndex + 1;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
makeCurrent(nextIndex);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return function jump(event) {
|
|
66
|
+
if (
|
|
67
|
+
document.getElementById('fileSearch') === document.activeElement &&
|
|
68
|
+
document.activeElement != null
|
|
69
|
+
) {
|
|
70
|
+
// if we're currently focused on the search input, we don't want to navigate
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
switch (event.which) {
|
|
75
|
+
case 78: // n
|
|
76
|
+
case 74: // j
|
|
77
|
+
goToNext();
|
|
78
|
+
break;
|
|
79
|
+
case 66: // b
|
|
80
|
+
case 75: // k
|
|
81
|
+
case 80: // p
|
|
82
|
+
goToPrevious();
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
})();
|
|
87
|
+
window.addEventListener('keydown', jumpToCode);
|