@contractkit/prettier-plugin 0.8.1

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.
Files changed (62) hide show
  1. package/.turbo/turbo-build$colon$ci.log +35 -0
  2. package/.turbo/turbo-build.log +15 -0
  3. package/.turbo/turbo-format.log +29 -0
  4. package/.turbo/turbo-test$colon$ci.log +105 -0
  5. package/.turbo/turbo-test.log +14 -0
  6. package/CHANGELOG.md +111 -0
  7. package/coverage/base.css +224 -0
  8. package/coverage/block-navigation.js +87 -0
  9. package/coverage/clover.xml +305 -0
  10. package/coverage/coverage-final.json +6 -0
  11. package/coverage/favicon.png +0 -0
  12. package/coverage/indent.ts.html +88 -0
  13. package/coverage/index.html +176 -0
  14. package/coverage/prettify.css +1 -0
  15. package/coverage/prettify.js +2 -0
  16. package/coverage/print-ck.ts.html +370 -0
  17. package/coverage/print-contract.ts.html +292 -0
  18. package/coverage/print-operation.ts.html +811 -0
  19. package/coverage/print-type.ts.html +511 -0
  20. package/coverage/sort-arrow-sprite.png +0 -0
  21. package/coverage/sorter.js +210 -0
  22. package/dist/__tests__/print-ck.test.d.ts +2 -0
  23. package/dist/__tests__/print-ck.test.d.ts.map +1 -0
  24. package/dist/__tests__/print-op.test.d.ts +2 -0
  25. package/dist/__tests__/print-op.test.d.ts.map +1 -0
  26. package/dist/__tests__/print-op.test.js +359 -0
  27. package/dist/__tests__/print-op.test.js.map +1 -0
  28. package/dist/indent.d.ts +2 -0
  29. package/dist/indent.d.ts.map +1 -0
  30. package/dist/index.d.ts +5 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +520 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/print-ck.d.ts +4 -0
  35. package/dist/print-ck.d.ts.map +1 -0
  36. package/dist/print-contract.d.ts +3 -0
  37. package/dist/print-contract.d.ts.map +1 -0
  38. package/dist/print-dto.d.ts +3 -0
  39. package/dist/print-dto.d.ts.map +1 -0
  40. package/dist/print-dto.js +100 -0
  41. package/dist/print-dto.js.map +1 -0
  42. package/dist/print-op.d.ts +24 -0
  43. package/dist/print-op.d.ts.map +1 -0
  44. package/dist/print-op.js +224 -0
  45. package/dist/print-op.js.map +1 -0
  46. package/dist/print-operation.d.ts +24 -0
  47. package/dist/print-operation.d.ts.map +1 -0
  48. package/dist/print-type.d.ts +21 -0
  49. package/dist/print-type.d.ts.map +1 -0
  50. package/dist/print-type.js +110 -0
  51. package/dist/print-type.js.map +1 -0
  52. package/eslint.config.js +6 -0
  53. package/package.json +47 -0
  54. package/src/indent.ts +1 -0
  55. package/src/index.ts +46 -0
  56. package/src/print-ck.ts +95 -0
  57. package/src/print-contract.ts +69 -0
  58. package/src/print-operation.ts +242 -0
  59. package/src/print-type.ts +142 -0
  60. package/tests/print-ck.test.ts +606 -0
  61. package/tsconfig.json +9 -0
  62. package/vitest.config.ts +11 -0
@@ -0,0 +1,35 @@
1
+
2
+ 
3
+ > @contractkit/prettier-plugin@0.8.0 build:ci /Users/robert/projects/contractkit/apps/prettier-plugin
4
+ > eslint --max-warnings=0 && pnpm run build
5
+
6
+ =============
7
+
8
+
9
+ WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.
10
+
11
+
12
+ * @typescript-eslint/typescript-estree version: 8.57.2
13
+ * Supported TypeScript versions: >=4.8.4 <6.0.0
14
+ * Your TypeScript version: 6.0.2
15
+
16
+
17
+ Please only submit bug reports when using the officially supported version.
18
+
19
+
20
+ =============
21
+
22
+ > @contractkit/prettier-plugin@0.8.0 build /Users/robert/projects/contractkit/apps/prettier-plugin
23
+ > tsup src/index.ts --format esm --sourcemap --dts && tsc --emitDeclarationOnly --declaration
24
+
25
+ CLI Building entry: src/index.ts
26
+ CLI Using tsconfig: tsconfig.json
27
+ CLI tsup v8.5.1
28
+ CLI Target: esnext
29
+ ESM Build start
30
+ ESM dist/index.js 17.83 KB
31
+ ESM dist/index.js.map 42.37 KB
32
+ ESM ⚡️ Build success in 43ms
33
+ DTS Build start
34
+ DTS ⚡️ Build success in 612ms
35
+ DTS dist/index.d.ts 157.00 B
@@ -0,0 +1,15 @@
1
+
2
+ > @contractkit/prettier-plugin@0.8.0 build /Users/robert/projects/contractkit/apps/prettier-plugin
3
+ > tsup src/index.ts --format esm --sourcemap --dts && tsc --emitDeclarationOnly --declaration
4
+
5
+ CLI Building entry: src/index.ts
6
+ CLI Using tsconfig: tsconfig.json
7
+ CLI tsup v8.5.1
8
+ CLI Target: esnext
9
+ ESM Build start
10
+ ESM dist/index.js 17.83 KB
11
+ ESM dist/index.js.map 42.37 KB
12
+ ESM ⚡️ Build success in 107ms
13
+ DTS Build start
14
+ DTS ⚡️ Build success in 582ms
15
+ DTS dist/index.d.ts 157.00 B
@@ -0,0 +1,29 @@
1
+
2
+ 
3
+ > prettier-plugin-contractkit@0.1.0 format /Users/robert/projects/contractkit/apps/prettier-plugin
4
+ > prettier --write .
5
+
6
+ .turbo/turbo-build.log.turbo/turbo-format.log.turbo/turbo-test.logdist/__tests__/print-ck.test.d.tsdist/__tests__/print-ck.test.d.ts 36ms
7
+ dist/__tests__/print-ck.test.d.ts.mapdist/__tests__/print-op.test.d.tsdist/__tests__/print-op.test.d.ts 1ms
8
+ dist/__tests__/print-op.test.d.ts.mapdist/__tests__/print-op.test.jsdist/__tests__/print-op.test.js 48ms
9
+ dist/__tests__/print-op.test.js.mapdist/indent.d.tsdist/indent.d.ts 4ms
10
+ dist/indent.d.ts.mapdist/index.d.tsdist/index.d.ts 2ms
11
+ dist/index.d.ts.mapdist/index.jsdist/index.js 22ms
12
+ dist/index.js.mapdist/print-ck.d.tsdist/print-ck.d.ts 5ms
13
+ dist/print-ck.d.ts.mapdist/print-dto.d.tsdist/print-dto.d.ts 1ms
14
+ dist/print-dto.d.ts.mapdist/print-dto.jsdist/print-dto.js 4ms
15
+ dist/print-dto.js.mapdist/print-op.d.tsdist/print-op.d.ts 4ms
16
+ dist/print-op.d.ts.mapdist/print-op.jsdist/print-op.js 8ms
17
+ dist/print-op.js.mapdist/print-type.d.tsdist/print-type.d.ts 2ms
18
+ dist/print-type.d.ts.mapdist/print-type.jsdist/print-type.js 5ms
19
+ dist/print-type.js.mapeslint.config.jseslint.config.js 1ms (unchanged)
20
+ package.jsonpackage.json 1ms
21
+ src/indent.tssrc/indent.ts 1ms (unchanged)
22
+ src/index.tssrc/index.ts 5ms
23
+ src/print-ck.tssrc/print-ck.ts 5ms
24
+ src/print-dto.tssrc/print-dto.ts 5ms
25
+ src/print-op.tssrc/print-op.ts 9ms
26
+ src/print-type.tssrc/print-type.ts 6ms
27
+ tests/print-ck.test.tstests/print-ck.test.ts 14ms
28
+ tsconfig.jsontsconfig.json 1ms
29
+ vitest.config.tsvitest.config.ts 1ms
@@ -0,0 +1,105 @@
1
+
2
+ 
3
+ > @contractkit/prettier-plugin@0.8.0 test:ci /Users/robert/projects/contractkit/apps/prettier-plugin
4
+ > vitest run --coverage
5
+
6
+ [?25l
7
+  RUN  v4.1.5 /Users/robert/projects/contractkit/apps/prettier-plugin
8
+ Coverage enabled with v8
9
+
10
+ [?2026h
11
+  ❯ tests/print-ck.test.ts [queued]
12
+
13
+  Test Files 0 passed (1)
14
+  Tests 0 passed (0)
15
+  Start at 08:51:09
16
+  Duration 304ms
17
+ [?2026l[?2026h
18
+  ❯ tests/print-ck.test.ts [queued]
19
+
20
+  Test Files 0 passed (1)
21
+  Tests 0 passed (0)
22
+  Start at 08:51:09
23
+  Duration 916ms
24
+ [?2026l[?2026h
25
+  ❯ tests/print-ck.test.ts 1/45
26
+
27
+  Test Files 0 passed (1)
28
+  Tests 1 passed (45)
29
+  Start at 08:51:09
30
+  Duration 1.12s
31
+ [?2026l ✓ tests/print-ck.test.ts (45 tests) 99ms
32
+ ✓ printCk — route modifiers (5)
33
+ ✓ prints route with no modifiers 12ms
34
+ ✓ prints route with internal modifier 0ms
35
+ ✓ prints route with deprecated modifier 0ms
36
+ ✓ treats empty modifiers array same as no modifier 0ms
37
+ ✓ preserves description alongside modifier 0ms
38
+ ✓ printCk — operation modifiers (6)
39
+ ✓ prints operation with no modifiers 0ms
40
+ ✓ prints operation with internal modifier 0ms
41
+ ✓ prints operation with deprecated modifier 0ms
42
+ ✓ treats empty operation modifiers array as no modifiers 0ms
43
+ ✓ prints multiple operations with mixed modifiers 0ms
44
+ ✓ preserves description alongside modifier on operation 0ms
45
+ ✓ printCk — route and operation modifiers combined (2)
46
+ ✓ prints both route and operation modifiers independently 0ms
47
+ ✓ modifier placement: operation(modifier) before path, verb(modifier) before colon 0ms
48
+ ✓ printCk — security (8)
49
+ ✓ prints operation-level security: none 0ms
50
+ ✓ prints security block with roles only 0ms
51
+ ✓ prints security block with multiple roles space-separated 0ms
52
+ ✓ prints operation-level signature as its own keyword 0ms
53
+ ✓ prints unquoted identifier signature without quotes 0ms
54
+ ✓ prints route-level security with shallower indentation 0ms
55
+ ✓ prints route-level security: none 0ms
56
+ ✓ emits no security line when security is undefined 0ms
57
+ ✓ printCk — query and headers descriptions (2)
58
+ ✓ emits inline comment on query params that have descriptions 0ms
59
+ ✓ emits inline comment on headers params that have descriptions 0ms
60
+ ✓ printCk — query and headers optional, nullable, default (7)
61
+ ✓ emits ? for optional query params 0ms
62
+ ✓ emits | null for nullable query params 0ms
63
+ ✓ emits = value for numeric defaults 0ms
64
+ ✓ emits = value for boolean defaults 0ms
65
+ ✓ emits = "value" for string defaults that need quoting 0ms
66
+ ✓ combines optional, default, and description on the same param 0ms
67
+ ✓ applies the same rules to headers params 0ms
68
+ ✓ printCk — request blocks (3)
69
+ ✓ prints a single content-type request 0ms
70
+ ✓ round-trips vendor JSON mime types like application/vnd.api+json 0ms
71
+ ✓ prints multiple content-types preserving source order 0ms
72
+ ✓ printCk — response headers (2)
73
+ ✓ prints response headers alongside body 0ms
74
+ ✓ prints response headers without a body 0ms
75
+ ✓ printCk — options-level header globals (round-trip) (4)
76
+ ✓ round-trips options.request.headers 40ms
77
+ ✓ round-trips options.response.headers 23ms
78
+ ✓ round-trips operation-level headers: none 9ms
79
+ ✓ round-trips per-status headers: none 1ms
80
+ ✓ printCk — multi-base inheritance and override (round-trip) (3)
81
+ ✓ round-trips multi-base inheritance 1ms
82
+ ✓ round-trips override modifier on a field 1ms
83
+ ✓ emits canonical modifier order: override → deprecated → readonly 0ms
84
+ ✓ printCk — typed path params (round-trip) (3)
85
+ ✓ round-trips path params with constraint arguments 4ms
86
+ ✓ round-trips path params with enum types 1ms
87
+ ✓ round-trips path params with regex constraints and a comment 1ms
88
+
89
+  Test Files  1 passed (1)
90
+  Tests  45 passed (45)
91
+  Start at  08:51:09
92
+  Duration  1.20s (transform 258ms, setup 0ms, import 648ms, tests 99ms, environment 0ms)
93
+
94
+  % Coverage report from v8
95
+ --------------------|---------|----------|---------|---------|-----------------------------------------------------------
96
+ File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
97
+ --------------------|---------|----------|---------|---------|-----------------------------------------------------------
98
+ All files  |  61.01 |  53.55 |  68 |  67.95 |  
99
+  indent.ts  |  100 |  100 |  100 |  100 |  
100
+  print-ck.ts  |  67.14 |  64.19 |  100 |  78.84 | 23-28,32-37,49 
101
+  print-contract.ts  |  41.93 |  28.57 |  50 |  42.85 | 10,37-68 
102
+  print-operation.ts |  69.64 |  63.19 |  90 |  79.69 | 27-38,47-48,85,102,168,185,193-204,236 
103
+  print-type.ts  |  45.23 |  42.55 |  40 |  47.14 | 12-13,22-30,34-40,44-66,88-93,101-102,108-109,132,135-138
104
+ --------------------|---------|----------|---------|---------|-----------------------------------------------------------
105
+ [?25h
@@ -0,0 +1,14 @@
1
+
2
+ > @contractkit/prettier-plugin@0.8.0 test /Users/robert/projects/contractkit/apps/prettier-plugin
3
+ > vitest run
4
+
5
+
6
+  RUN  v4.1.5 /Users/robert/projects/contractkit/apps/prettier-plugin
7
+
8
+ ✓ tests/print-ck.test.ts (45 tests) 24ms
9
+
10
+  Test Files  1 passed (1)
11
+  Tests  45 passed (45)
12
+  Start at  08:51:33
13
+  Duration  437ms (transform 138ms, setup 0ms, import 266ms, tests 24ms, environment 0ms)
14
+
package/CHANGELOG.md ADDED
@@ -0,0 +1,111 @@
1
+ # @contractkit/prettier-plugin-contractkit
2
+
3
+ ## 0.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 9269093: chore: update dependencies across multiple projects
8
+
9
+ This commit updates various dependencies in the package.json files for several projects, including:
10
+ - Upgraded `@changesets/cli`, `@types/node`, `@vitest/coverage-v8`, `eslint`, `prettier`, `turbo`, and `typescript` to their latest versions.
11
+ - Updated `@types/vscode`, `@vscode/vsce`, and `esbuild` in the vscode extension.
12
+ - Adjusted `@scalar/openapi-parser` and `yaml` in the openapi-to-ck package.
13
+ - Enhanced ESLint and TypeScript configurations in the config-eslint package.
14
+
15
+ These updates improve compatibility and maintainability across the codebase.
16
+
17
+ - Updated dependencies [c9f2166]
18
+ - @contractkit/core@0.11.0
19
+
20
+ ## 0.8.0
21
+
22
+ ### Minor Changes
23
+
24
+ - bbee232: prep for public release
25
+
26
+ ### Patch Changes
27
+
28
+ - Updated dependencies [bbee232]
29
+ - @contractkit/core@0.10.0
30
+
31
+ ## 0.7.0
32
+
33
+ ### Minor Changes
34
+
35
+ - d13614c: Enhance content type handling in contract DSL. This update introduces support for vendor JSON MIME types and improves the classification of content types, allowing for better handling of text and binary responses. The grammar has been updated to accept a wider range of MIME types, and tests have been added to ensure correct parsing and serialization behavior. Additionally, the code has been refactored to normalize content types for stable comparisons and to support multi-MIME request bodies.
36
+
37
+ ### Patch Changes
38
+
39
+ - Updated dependencies [d13614c]
40
+ - @maroonedsoftware/contractkit@0.9.0
41
+
42
+ ## 0.6.0
43
+
44
+ ### Minor Changes
45
+
46
+ - 353aa10: Implement options-level header globals for request and response in the contract DSL. This update allows headers to be declared at the file level, merging them into every operation's request and response. Added normalization logic to handle header collisions and opt-out scenarios. Updated documentation and tests to reflect these changes, ensuring proper round-trip formatting and validation of headers.
47
+ - 888ded5: Enhance contract DSL with multi-base inheritance support and override modifier. This update introduces the ability to declare multiple base contracts, along with validation rules for field conflicts across bases. The `override` modifier is now required for redeclaring conflicting fields, and the documentation has been updated to reflect these changes. Tests have been added to ensure correct behavior for inheritance and modifier usage.
48
+
49
+ ### Patch Changes
50
+
51
+ - Updated dependencies [353aa10]
52
+ - Updated dependencies [888ded5]
53
+ - @maroonedsoftware/contractkit@0.8.0
54
+
55
+ ## 0.5.0
56
+
57
+ ### Minor Changes
58
+
59
+ - 16ac3a7: Implement support for typed response headers in API operations. Added functionality to declare headers alongside response bodies, affecting OpenAPI, TypeScript SDK, and Markdown documentation generation. Updated related tests to ensure correct parsing and rendering of response headers, including handling optional headers and duplicate declarations.
60
+
61
+ ### Patch Changes
62
+
63
+ - Updated dependencies [16ac3a7]
64
+ - @maroonedsoftware/contractkit@0.7.0
65
+
66
+ ## 0.4.1
67
+
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [d3ea773]
71
+ - @maroonedsoftware/contractkit@0.6.0
72
+
73
+ ## 0.4.0
74
+
75
+ ### Minor Changes
76
+
77
+ - 181dadb: Refactor request handling to support multiple content types in operations. Updated OpRequestNode to accept an array of bodies, modified related functions and tests to accommodate multi-MIME requests, and enhanced validation for nested structures in URL-encoded bodies. Improved code generation across various plugins to handle new request structure.
78
+
79
+ ### Patch Changes
80
+
81
+ - Updated dependencies [181dadb]
82
+ - @maroonedsoftware/contractkit@0.5.0
83
+
84
+ ## 0.3.0
85
+
86
+ ### Minor Changes
87
+
88
+ - ada5f84: Implement discriminated unions in ContractKit with validation and code generation support. Update README and tests to reflect new functionality, including parsing, rendering, and OpenAPI generation for discriminated unions.
89
+
90
+ ### Patch Changes
91
+
92
+ - Updated dependencies [ada5f84]
93
+ - @maroonedsoftware/contractkit@0.4.0
94
+
95
+ ## 0.2.1
96
+
97
+ ### Patch Changes
98
+
99
+ - Updated dependencies [f396a68]
100
+ - @maroonedsoftware/contractkit@0.3.0
101
+
102
+ ## 0.2.0
103
+
104
+ ### Minor Changes
105
+
106
+ - db7345b: updating to contractkit as the org
107
+
108
+ ### Patch Changes
109
+
110
+ - Updated dependencies [db7345b]
111
+ - @contractkit/core@0.2.0
@@ -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);