@kavach/cookie 1.0.0-next.9 → 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 +1 -1
- package/package.json +14 -25
- package/src/index.js +45 -51
- package/.turbo/turbo-coverage.log +0 -23
- package/.turbo/turbo-format.log +0 -0
- package/.turbo/turbo-lint.log +0 -0
- package/.turbo/turbo-prepublishOnly.log +0 -4
- package/.turbo/turbo-test:ci.log +0 -15
- package/.turbo/turbo-upgrade.log +0 -23
- package/CHANGELOG.md +0 -16
- package/LICENSE +0 -21
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -116
- package/coverage/index.js.html +0 -697
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -116
- package/coverage/lcov-report/index.js.html +0 -697
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov.info +0 -270
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/dist/index.d.ts +0 -34
- package/dist/index.d.ts.map +0 -1
- package/spec/parse.spec.js +0 -91
- package/spec/serialize.spec.js +0 -169
- package/tsconfig.json +0 -8
- package/vitest.config.js +0 -6
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kavach/cookie",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Cookie serialize/deserialize forked from jshttp/cookie",
|
|
5
5
|
"author": "Jerry Thomas <me@jerrythomas.name>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
"cookie",
|
|
9
9
|
"cookies"
|
|
10
10
|
],
|
|
11
|
-
"main": "index.js",
|
|
12
11
|
"module": "src/index.js",
|
|
13
12
|
"types": "dist/index.d.ts",
|
|
14
13
|
"type": "module",
|
|
@@ -21,33 +20,23 @@
|
|
|
21
20
|
"publishConfig": {
|
|
22
21
|
"access": "public"
|
|
23
22
|
},
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"@vitest/coverage-v8": "^0.34.5",
|
|
29
|
-
"@vitest/ui": "~0.34.5",
|
|
30
|
-
"c8": "^8.0.1",
|
|
31
|
-
"typescript": "^5.2.2",
|
|
32
|
-
"vite": "^4.4.9",
|
|
33
|
-
"vitest": "0.34.5",
|
|
34
|
-
"shared-config": "1.0.0-next.9",
|
|
35
|
-
"eslint-config-library": "1.0.0-next.9"
|
|
23
|
+
"scripts": {
|
|
24
|
+
"prepublishOnly": "bun clean && bun tsc --project tsconfig.build.json",
|
|
25
|
+
"clean": "rm -rf dist",
|
|
26
|
+
"build": "bun prepublishOnly"
|
|
36
27
|
},
|
|
28
|
+
"files": [
|
|
29
|
+
"src/**/*.js",
|
|
30
|
+
"dist/**/*.d.ts",
|
|
31
|
+
"README.md",
|
|
32
|
+
"package.json"
|
|
33
|
+
],
|
|
37
34
|
"exports": {
|
|
38
35
|
"./package.json": "./package.json",
|
|
39
36
|
".": {
|
|
40
37
|
"types": "./dist/index.d.ts",
|
|
41
|
-
"import": "./src/index.js"
|
|
38
|
+
"import": "./src/index.js",
|
|
39
|
+
"svelte": "./src/index.js"
|
|
42
40
|
}
|
|
43
|
-
},
|
|
44
|
-
"scripts": {
|
|
45
|
-
"lint": "prettier --check --plugin-search-dir=. . && eslint .",
|
|
46
|
-
"format": "prettier --write --plugin-search-dir=. .",
|
|
47
|
-
"test:ci": "vitest run",
|
|
48
|
-
"test:ui": "vitest --ui",
|
|
49
|
-
"test": "vitest",
|
|
50
|
-
"coverage": "vitest run --coverage",
|
|
51
|
-
"upgrade": "pnpm upgrade --latest && pnpm test:ci"
|
|
52
41
|
}
|
|
53
|
-
}
|
|
42
|
+
}
|
package/src/index.js
CHANGED
|
@@ -14,9 +14,25 @@
|
|
|
14
14
|
* @private
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
const decode = decodeURIComponent
|
|
18
|
+
const encode = encodeURIComponent
|
|
19
|
+
const pairSplitRegExp = /; */
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Try decoding a string using a decoding function.
|
|
23
|
+
*
|
|
24
|
+
* @param {string} str
|
|
25
|
+
* @param {function} decodeFn
|
|
26
|
+
* @returns {string}
|
|
27
|
+
*/
|
|
28
|
+
function tryDecode(str, decodeFn) {
|
|
29
|
+
try {
|
|
30
|
+
return decodeFn(str)
|
|
31
|
+
// eslint-disable-next-line no-unused-vars
|
|
32
|
+
} catch (e) {
|
|
33
|
+
return str
|
|
34
|
+
}
|
|
35
|
+
}
|
|
20
36
|
|
|
21
37
|
/**
|
|
22
38
|
* RegExp to match field-content in RFC 7230 sec 3.2
|
|
@@ -26,8 +42,7 @@ var pairSplitRegExp = /; */
|
|
|
26
42
|
* obs-text = %x80-FF
|
|
27
43
|
*/
|
|
28
44
|
|
|
29
|
-
|
|
30
|
-
var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/
|
|
45
|
+
const fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/u
|
|
31
46
|
|
|
32
47
|
/**
|
|
33
48
|
* Parse a cookie header.
|
|
@@ -40,36 +55,36 @@ var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/
|
|
|
40
55
|
* @return {object}
|
|
41
56
|
* @public
|
|
42
57
|
*/
|
|
43
|
-
|
|
58
|
+
// eslint-disable-next-line
|
|
44
59
|
export function parse(str, options) {
|
|
45
60
|
if (typeof str !== 'string') {
|
|
46
61
|
throw new TypeError('argument str must be a string')
|
|
47
62
|
}
|
|
48
63
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
const obj = {}
|
|
65
|
+
const opt = options || {}
|
|
66
|
+
const pairs = str.split(pairSplitRegExp)
|
|
67
|
+
const dec = opt.decode || decode
|
|
53
68
|
|
|
54
|
-
for (
|
|
55
|
-
|
|
56
|
-
|
|
69
|
+
for (let i = 0; i < pairs.length; i++) {
|
|
70
|
+
const pair = pairs[i]
|
|
71
|
+
let eq_idx = pair.indexOf('=')
|
|
57
72
|
|
|
58
73
|
// skip things that don't look like key=value
|
|
59
74
|
if (eq_idx < 0) {
|
|
60
75
|
continue
|
|
61
76
|
}
|
|
62
77
|
|
|
63
|
-
|
|
64
|
-
|
|
78
|
+
const key = pair.slice(0, eq_idx).trim()
|
|
79
|
+
let val = pair.slice(++eq_idx, pair.length).trim()
|
|
65
80
|
|
|
66
81
|
// quoted values
|
|
67
|
-
if (
|
|
82
|
+
if (val[0] === '"') {
|
|
68
83
|
val = val.slice(1, -1)
|
|
69
84
|
}
|
|
70
85
|
|
|
71
86
|
// only assign once
|
|
72
|
-
if (
|
|
87
|
+
if (obj[key] === undefined) {
|
|
73
88
|
obj[key] = tryDecode(val, dec)
|
|
74
89
|
}
|
|
75
90
|
}
|
|
@@ -92,10 +107,10 @@ export function parse(str, options) {
|
|
|
92
107
|
* @return {string}
|
|
93
108
|
* @public
|
|
94
109
|
*/
|
|
95
|
-
|
|
110
|
+
// eslint-disable-next-line
|
|
96
111
|
export function serialize(name, val, options) {
|
|
97
|
-
|
|
98
|
-
|
|
112
|
+
const opt = { maxAge: null, ...(options || {}) }
|
|
113
|
+
const enc = opt.encode || encode
|
|
99
114
|
|
|
100
115
|
if (typeof enc !== 'function') {
|
|
101
116
|
throw new TypeError('option encode is invalid')
|
|
@@ -105,22 +120,22 @@ export function serialize(name, val, options) {
|
|
|
105
120
|
throw new TypeError('argument name is invalid')
|
|
106
121
|
}
|
|
107
122
|
|
|
108
|
-
|
|
123
|
+
const value = enc(val)
|
|
109
124
|
|
|
110
125
|
if (value && !fieldContentRegExp.test(value)) {
|
|
111
126
|
throw new TypeError('argument val is invalid')
|
|
112
127
|
}
|
|
113
128
|
|
|
114
|
-
|
|
129
|
+
let str = `${name}=${value}`
|
|
115
130
|
|
|
116
|
-
if (
|
|
117
|
-
|
|
131
|
+
if (opt.maxAge !== null) {
|
|
132
|
+
// const maxAge = Number(opt.maxAge) - 0
|
|
118
133
|
|
|
119
|
-
if (isNaN(maxAge) || !isFinite(maxAge)) {
|
|
134
|
+
if (isNaN(opt.maxAge) || !isFinite(opt.maxAge)) {
|
|
120
135
|
throw new TypeError('option maxAge is invalid')
|
|
121
136
|
}
|
|
122
137
|
|
|
123
|
-
str +=
|
|
138
|
+
str += `; Max-Age=${Math.floor(Number(opt.maxAge))}`
|
|
124
139
|
}
|
|
125
140
|
|
|
126
141
|
if (opt.domain) {
|
|
@@ -128,7 +143,7 @@ export function serialize(name, val, options) {
|
|
|
128
143
|
throw new TypeError('option domain is invalid')
|
|
129
144
|
}
|
|
130
145
|
|
|
131
|
-
str +=
|
|
146
|
+
str += `; Domain=${opt.domain}`
|
|
132
147
|
}
|
|
133
148
|
|
|
134
149
|
if (opt.path) {
|
|
@@ -136,7 +151,7 @@ export function serialize(name, val, options) {
|
|
|
136
151
|
throw new TypeError('option path is invalid')
|
|
137
152
|
}
|
|
138
153
|
|
|
139
|
-
str +=
|
|
154
|
+
str += `; Path=${opt.path}`
|
|
140
155
|
}
|
|
141
156
|
|
|
142
157
|
if (opt.expires) {
|
|
@@ -144,7 +159,7 @@ export function serialize(name, val, options) {
|
|
|
144
159
|
throw new TypeError('option expires is invalid')
|
|
145
160
|
}
|
|
146
161
|
|
|
147
|
-
str +=
|
|
162
|
+
str += `; Expires=${opt.expires.toUTCString()}`
|
|
148
163
|
}
|
|
149
164
|
|
|
150
165
|
if (opt.httpOnly) {
|
|
@@ -156,7 +171,7 @@ export function serialize(name, val, options) {
|
|
|
156
171
|
}
|
|
157
172
|
|
|
158
173
|
if (opt.sameSite) {
|
|
159
|
-
|
|
174
|
+
const sameSite =
|
|
160
175
|
typeof opt.sameSite === 'string'
|
|
161
176
|
? opt.sameSite.toLowerCase()
|
|
162
177
|
: opt.sameSite
|
|
@@ -181,24 +196,3 @@ export function serialize(name, val, options) {
|
|
|
181
196
|
|
|
182
197
|
return str
|
|
183
198
|
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Try decoding a string using a decoding function.
|
|
187
|
-
*
|
|
188
|
-
* @param {string} str
|
|
189
|
-
* @param {function} decode
|
|
190
|
-
* @private
|
|
191
|
-
*/
|
|
192
|
-
|
|
193
|
-
function tryDecode(str, decode) {
|
|
194
|
-
try {
|
|
195
|
-
return decode(str)
|
|
196
|
-
} catch (e) {
|
|
197
|
-
return str
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
export default {
|
|
202
|
-
parse,
|
|
203
|
-
serialize
|
|
204
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
> @kavach/cookie@1.0.0-next.6 coverage /Users/Jerry/Code/Vikalp/kavach/packages/cookie
|
|
3
|
-
> vitest run --coverage
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
RUN v0.34.5 /Users/Jerry/Code/Vikalp/kavach/packages/cookie
|
|
7
|
-
Coverage enabled with v8
|
|
8
|
-
|
|
9
|
-
✓ spec/parse.spec.js (10 tests) 11ms
|
|
10
|
-
✓ spec/serialize.spec.js (11 tests) 16ms
|
|
11
|
-
|
|
12
|
-
Test Files 2 passed (2)
|
|
13
|
-
Tests 21 passed (21)
|
|
14
|
-
Start at 15:57:54
|
|
15
|
-
Duration 3.29s (transform 56ms, setup 0ms, collect 135ms, tests 27ms, environment 2.49s, prepare 941ms)
|
|
16
|
-
|
|
17
|
-
% Coverage report from v8
|
|
18
|
-
----------|---------|----------|---------|---------|-------------------
|
|
19
|
-
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
|
|
20
|
-
----------|---------|----------|---------|---------|-------------------
|
|
21
|
-
All files | 100 | 100 | 100 | 100 |
|
|
22
|
-
index.js | 100 | 100 | 100 | 100 |
|
|
23
|
-
----------|---------|----------|---------|---------|-------------------
|
package/.turbo/turbo-format.log
DELETED
|
File without changes
|
package/.turbo/turbo-lint.log
DELETED
|
File without changes
|
package/.turbo/turbo-test:ci.log
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
> @kavach/cookie@1.0.0-next.6 test:ci /Users/Jerry/Code/Vikalp/kavach/packages/cookie
|
|
3
|
-
> vitest run
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
RUN v0.34.5 /Users/Jerry/Code/Vikalp/kavach/packages/cookie
|
|
7
|
-
|
|
8
|
-
✓ spec/parse.spec.js (10 tests) 15ms
|
|
9
|
-
✓ spec/serialize.spec.js (11 tests) 17ms
|
|
10
|
-
|
|
11
|
-
Test Files 2 passed (2)
|
|
12
|
-
Tests 21 passed (21)
|
|
13
|
-
Start at 15:55:45
|
|
14
|
-
Duration 2.81s (transform 183ms, setup 9ms, collect 135ms, tests 32ms, environment 2.24s, prepare 1.37s)
|
|
15
|
-
|
package/.turbo/turbo-upgrade.log
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
> @kavach/cookie@1.0.0-next.3 upgrade /Users/Jerry/Code/Vikalp/kavach/packages/cookie
|
|
3
|
-
> pnpm upgrade
|
|
4
|
-
|
|
5
|
-
../.. | Progress: resolved 1, reused 0, downloaded 0, added 0
|
|
6
|
-
../.. | Progress: resolved 5, reused 5, downloaded 0, added 0
|
|
7
|
-
../.. | Progress: resolved 6, reused 6, downloaded 0, added 0
|
|
8
|
-
../.. | Progress: resolved 10, reused 10, downloaded 0, added 0
|
|
9
|
-
../.. | Progress: resolved 11, reused 10, downloaded 0, added 0
|
|
10
|
-
../.. | Progress: resolved 12, reused 12, downloaded 0, added 0
|
|
11
|
-
../.. | Progress: resolved 13, reused 12, downloaded 0, added 0
|
|
12
|
-
../.. | Progress: resolved 63, reused 63, downloaded 0, added 0
|
|
13
|
-
../.. | Progress: resolved 212, reused 170, downloaded 0, added 0
|
|
14
|
-
../.. | +5 +
|
|
15
|
-
../.. | Progress: resolved 213, reused 171, downloaded 0, added 0, done
|
|
16
|
-
|
|
17
|
-
devDependencies:
|
|
18
|
-
- @types/node
|
|
19
|
-
+ @types/node 18.11.18
|
|
20
|
-
- vite
|
|
21
|
-
+ vite 4.0.3
|
|
22
|
-
|
|
23
|
-
Done in 15.7s
|
package/CHANGELOG.md
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# @kavach/cookie
|
|
2
|
-
|
|
3
|
-
## 1.0.0-next.6
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Added store for auth status and used alerts to display status on demo page.
|
|
8
|
-
|
|
9
|
-
## 1.0.0-next.5
|
|
10
|
-
|
|
11
|
-
### Patch Changes
|
|
12
|
-
|
|
13
|
-
- chore: release 1.0.0-next.4
|
|
14
|
-
- Split core package into logger and deflector
|
|
15
|
-
- 1a35ad0: Resolved linter errors.
|
|
16
|
-
- Releasing the next version.
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2022 Jerry Thomas
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
package/coverage/base.css
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
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
|
-
// Selecter 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);
|
package/coverage/favicon.png
DELETED
|
Binary file
|