Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit dc2e236

Browse files
committedOct 1, 2024·
Update artifacts
1 parent c38d371 commit dc2e236

File tree

10 files changed

+859
-0
lines changed

10 files changed

+859
-0
lines changed
 
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
// 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);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[49,49,100,1,1,100,0,0,100,49,49,100,"d0ebce3a1ed53532f2bee61096fa08400f534437","2024-09-30 22:06:29 -0700"]
Loading
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
2+
<!doctype html>
3+
<html lang="en">
4+
5+
<head>
6+
<title>Code coverage report for All files</title>
7+
<meta charset="utf-8" />
8+
<link rel="stylesheet" href="prettify.css" />
9+
<link rel="stylesheet" href="base.css" />
10+
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
11+
<meta name="viewport" content="width=device-width, initial-scale=1" />
12+
<style type='text/css'>
13+
.coverage-summary .sorter {
14+
background-image: url(sort-arrow-sprite.png);
15+
}
16+
</style>
17+
</head>
18+
19+
<body>
20+
<div class='wrapper'>
21+
<div class='pad1'>
22+
<h1>All files</h1>
23+
<div class='clearfix'>
24+
25+
<div class='fl pad1y space-right2'>
26+
<span class="strong">100% </span>
27+
<span class="quiet">Statements</span>
28+
<span class='fraction'>49/49</span>
29+
</div>
30+
31+
32+
<div class='fl pad1y space-right2'>
33+
<span class="strong">100% </span>
34+
<span class="quiet">Branches</span>
35+
<span class='fraction'>1/1</span>
36+
</div>
37+
38+
39+
<div class='fl pad1y space-right2'>
40+
<span class="strong">100% </span>
41+
<span class="quiet">Functions</span>
42+
<span class='fraction'>0/0</span>
43+
</div>
44+
45+
46+
<div class='fl pad1y space-right2'>
47+
<span class="strong">100% </span>
48+
<span class="quiet">Lines</span>
49+
<span class='fraction'>49/49</span>
50+
</div>
51+
52+
53+
</div>
54+
<p class="quiet">
55+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56+
</p>
57+
<template id="filterTemplate">
58+
<div class="quiet">
59+
Filter:
60+
<input type="search" id="fileSearch">
61+
</div>
62+
</template>
63+
</div>
64+
<div class='status-line high'></div>
65+
<div class="pad1">
66+
<table class="coverage-summary">
67+
<thead>
68+
<tr>
69+
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
70+
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
71+
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
72+
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
73+
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
74+
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
75+
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
76+
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
77+
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
78+
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
79+
</tr>
80+
</thead>
81+
<tbody><tr>
82+
<td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
83+
<td data-value="100" class="pic high">
84+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85+
</td>
86+
<td data-value="100" class="pct high">100%</td>
87+
<td data-value="49" class="abs high">49/49</td>
88+
<td data-value="100" class="pct high">100%</td>
89+
<td data-value="1" class="abs high">1/1</td>
90+
<td data-value="100" class="pct high">100%</td>
91+
<td data-value="0" class="abs high">0/0</td>
92+
<td data-value="100" class="pct high">100%</td>
93+
<td data-value="49" class="abs high">49/49</td>
94+
</tr>
95+
96+
</tbody>
97+
</table>
98+
</div>
99+
<div class='push'></div><!-- for sticky footer -->
100+
</div><!-- /wrapper -->
101+
<div class='footer quiet pad2 space-top1 center small'>
102+
Code coverage generated by
103+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104+
at 2024-10-01T06:55:32.828Z
105+
</div>
106+
<script src="prettify.js"></script>
107+
<script>
108+
window.onload = function () {
109+
prettyPrint();
110+
};
111+
</script>
112+
<script src="sorter.js"></script>
113+
<script src="block-navigation.js"></script>
114+
</body>
115+
</html>
116+
Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
2+
<!doctype html>
3+
<html lang="en">
4+
5+
<head>
6+
<title>Code coverage report for index.js</title>
7+
<meta charset="utf-8" />
8+
<link rel="stylesheet" href="prettify.css" />
9+
<link rel="stylesheet" href="base.css" />
10+
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
11+
<meta name="viewport" content="width=device-width, initial-scale=1" />
12+
<style type='text/css'>
13+
.coverage-summary .sorter {
14+
background-image: url(sort-arrow-sprite.png);
15+
}
16+
</style>
17+
</head>
18+
19+
<body>
20+
<div class='wrapper'>
21+
<div class='pad1'>
22+
<h1><a href="index.html">All files</a> index.js</h1>
23+
<div class='clearfix'>
24+
25+
<div class='fl pad1y space-right2'>
26+
<span class="strong">100% </span>
27+
<span class="quiet">Statements</span>
28+
<span class='fraction'>49/49</span>
29+
</div>
30+
31+
32+
<div class='fl pad1y space-right2'>
33+
<span class="strong">100% </span>
34+
<span class="quiet">Branches</span>
35+
<span class='fraction'>1/1</span>
36+
</div>
37+
38+
39+
<div class='fl pad1y space-right2'>
40+
<span class="strong">100% </span>
41+
<span class="quiet">Functions</span>
42+
<span class='fraction'>0/0</span>
43+
</div>
44+
45+
46+
<div class='fl pad1y space-right2'>
47+
<span class="strong">100% </span>
48+
<span class="quiet">Lines</span>
49+
<span class='fraction'>49/49</span>
50+
</div>
51+
52+
53+
</div>
54+
<p class="quiet">
55+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56+
</p>
57+
<template id="filterTemplate">
58+
<div class="quiet">
59+
Filter:
60+
<input type="search" id="fileSearch">
61+
</div>
62+
</template>
63+
</div>
64+
<div class='status-line high'></div>
65+
<pre><table class="coverage">
66+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67+
<a name='L2'></a><a href='#L2'>2</a>
68+
<a name='L3'></a><a href='#L3'>3</a>
69+
<a name='L4'></a><a href='#L4'>4</a>
70+
<a name='L5'></a><a href='#L5'>5</a>
71+
<a name='L6'></a><a href='#L6'>6</a>
72+
<a name='L7'></a><a href='#L7'>7</a>
73+
<a name='L8'></a><a href='#L8'>8</a>
74+
<a name='L9'></a><a href='#L9'>9</a>
75+
<a name='L10'></a><a href='#L10'>10</a>
76+
<a name='L11'></a><a href='#L11'>11</a>
77+
<a name='L12'></a><a href='#L12'>12</a>
78+
<a name='L13'></a><a href='#L13'>13</a>
79+
<a name='L14'></a><a href='#L14'>14</a>
80+
<a name='L15'></a><a href='#L15'>15</a>
81+
<a name='L16'></a><a href='#L16'>16</a>
82+
<a name='L17'></a><a href='#L17'>17</a>
83+
<a name='L18'></a><a href='#L18'>18</a>
84+
<a name='L19'></a><a href='#L19'>19</a>
85+
<a name='L20'></a><a href='#L20'>20</a>
86+
<a name='L21'></a><a href='#L21'>21</a>
87+
<a name='L22'></a><a href='#L22'>22</a>
88+
<a name='L23'></a><a href='#L23'>23</a>
89+
<a name='L24'></a><a href='#L24'>24</a>
90+
<a name='L25'></a><a href='#L25'>25</a>
91+
<a name='L26'></a><a href='#L26'>26</a>
92+
<a name='L27'></a><a href='#L27'>27</a>
93+
<a name='L28'></a><a href='#L28'>28</a>
94+
<a name='L29'></a><a href='#L29'>29</a>
95+
<a name='L30'></a><a href='#L30'>30</a>
96+
<a name='L31'></a><a href='#L31'>31</a>
97+
<a name='L32'></a><a href='#L32'>32</a>
98+
<a name='L33'></a><a href='#L33'>33</a>
99+
<a name='L34'></a><a href='#L34'>34</a>
100+
<a name='L35'></a><a href='#L35'>35</a>
101+
<a name='L36'></a><a href='#L36'>36</a>
102+
<a name='L37'></a><a href='#L37'>37</a>
103+
<a name='L38'></a><a href='#L38'>38</a>
104+
<a name='L39'></a><a href='#L39'>39</a>
105+
<a name='L40'></a><a href='#L40'>40</a>
106+
<a name='L41'></a><a href='#L41'>41</a>
107+
<a name='L42'></a><a href='#L42'>42</a>
108+
<a name='L43'></a><a href='#L43'>43</a>
109+
<a name='L44'></a><a href='#L44'>44</a>
110+
<a name='L45'></a><a href='#L45'>45</a>
111+
<a name='L46'></a><a href='#L46'>46</a>
112+
<a name='L47'></a><a href='#L47'>47</a>
113+
<a name='L48'></a><a href='#L48'>48</a>
114+
<a name='L49'></a><a href='#L49'>49</a>
115+
<a name='L50'></a><a href='#L50'>50</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
116+
<span class="cline-any cline-yes">1x</span>
117+
<span class="cline-any cline-yes">1x</span>
118+
<span class="cline-any cline-yes">1x</span>
119+
<span class="cline-any cline-yes">1x</span>
120+
<span class="cline-any cline-yes">1x</span>
121+
<span class="cline-any cline-yes">1x</span>
122+
<span class="cline-any cline-yes">1x</span>
123+
<span class="cline-any cline-yes">1x</span>
124+
<span class="cline-any cline-yes">1x</span>
125+
<span class="cline-any cline-yes">1x</span>
126+
<span class="cline-any cline-yes">1x</span>
127+
<span class="cline-any cline-yes">1x</span>
128+
<span class="cline-any cline-yes">1x</span>
129+
<span class="cline-any cline-yes">1x</span>
130+
<span class="cline-any cline-yes">1x</span>
131+
<span class="cline-any cline-yes">1x</span>
132+
<span class="cline-any cline-yes">1x</span>
133+
<span class="cline-any cline-yes">1x</span>
134+
<span class="cline-any cline-yes">1x</span>
135+
<span class="cline-any cline-yes">1x</span>
136+
<span class="cline-any cline-yes">1x</span>
137+
<span class="cline-any cline-yes">1x</span>
138+
<span class="cline-any cline-yes">1x</span>
139+
<span class="cline-any cline-yes">1x</span>
140+
<span class="cline-any cline-yes">1x</span>
141+
<span class="cline-any cline-yes">1x</span>
142+
<span class="cline-any cline-yes">1x</span>
143+
<span class="cline-any cline-yes">1x</span>
144+
<span class="cline-any cline-yes">1x</span>
145+
<span class="cline-any cline-yes">1x</span>
146+
<span class="cline-any cline-yes">1x</span>
147+
<span class="cline-any cline-yes">1x</span>
148+
<span class="cline-any cline-yes">1x</span>
149+
<span class="cline-any cline-yes">1x</span>
150+
<span class="cline-any cline-yes">1x</span>
151+
<span class="cline-any cline-yes">1x</span>
152+
<span class="cline-any cline-yes">1x</span>
153+
<span class="cline-any cline-yes">1x</span>
154+
<span class="cline-any cline-yes">1x</span>
155+
<span class="cline-any cline-yes">1x</span>
156+
<span class="cline-any cline-yes">1x</span>
157+
<span class="cline-any cline-yes">1x</span>
158+
<span class="cline-any cline-yes">1x</span>
159+
<span class="cline-any cline-yes">1x</span>
160+
<span class="cline-any cline-yes">1x</span>
161+
<span class="cline-any cline-yes">1x</span>
162+
<span class="cline-any cline-yes">1x</span>
163+
<span class="cline-any cline-yes">1x</span>
164+
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
165+
* @license Apache-2.0
166+
*
167+
* Copyright (c) 2024 The Stdlib Authors.
168+
*
169+
* Licensed under the Apache License, Version 2.0 (the "License");
170+
* you may not use this file except in compliance with the License.
171+
* You may obtain a copy of the License at
172+
*
173+
* http://www.apache.org/licenses/LICENSE-2.0
174+
*
175+
* Unless required by applicable law or agreed to in writing, software
176+
* distributed under the License is distributed on an "AS IS" BASIS,
177+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
178+
* See the License for the specific language governing permissions and
179+
* limitations under the License.
180+
*/
181+
&nbsp;
182+
'use strict';
183+
&nbsp;
184+
/**
185+
* Maximum safe nth double factorial when stored in double-precision floating-point format.
186+
*
187+
* @module @stdlib/constants/float64/max-safe-nth-double-factorial
188+
* @type {integer}
189+
*
190+
* @example
191+
* var FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL = require( '@stdlib/constants/float64/max-safe-nth-double-factorial' );
192+
* // returns 301
193+
*/
194+
&nbsp;
195+
&nbsp;
196+
// MAIN //
197+
&nbsp;
198+
/**
199+
* The maximum safe nth double factorial when stored in double-precision floating-point format.
200+
*
201+
* @constant
202+
* @type {integer}
203+
* @default 301
204+
* @see [double factorial]{@link https://en.wikipedia.org/wiki/Double_factorial}
205+
* @see [IEEE 754]{@link https://en.wikipedia.org/wiki/IEEE_754-1985}
206+
*/
207+
var FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL = 301|0; // eslint-disable-line id-length
208+
&nbsp;
209+
&nbsp;
210+
// EXPORTS //
211+
&nbsp;
212+
module.exports = FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL;
213+
&nbsp;</pre></td></tr></table></pre>
214+
215+
<div class='push'></div><!-- for sticky footer -->
216+
</div><!-- /wrapper -->
217+
<div class='footer quiet pad2 space-top1 center small'>
218+
Code coverage generated by
219+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
220+
at 2024-10-01T06:55:32.828Z
221+
</div>
222+
<script src="prettify.js"></script>
223+
<script>
224+
window.onload = function () {
225+
prettyPrint();
226+
};
227+
</script>
228+
<script src="sorter.js"></script>
229+
<script src="block-navigation.js"></script>
230+
</body>
231+
</html>
232+

‎constants/float64/max-safe-nth-double-factorial/prettify.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎constants/float64/max-safe-nth-double-factorial/prettify.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Loading
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
/* eslint-disable */
2+
var addSorting = (function() {
3+
'use strict';
4+
var cols,
5+
currentSort = {
6+
index: 0,
7+
desc: false
8+
};
9+
10+
// returns the summary table element
11+
function getTable() {
12+
return document.querySelector('.coverage-summary');
13+
}
14+
// returns the thead element of the summary table
15+
function getTableHeader() {
16+
return getTable().querySelector('thead tr');
17+
}
18+
// returns the tbody element of the summary table
19+
function getTableBody() {
20+
return getTable().querySelector('tbody');
21+
}
22+
// returns the th element for nth column
23+
function getNthColumn(n) {
24+
return getTableHeader().querySelectorAll('th')[n];
25+
}
26+
27+
function onFilterInput() {
28+
const searchValue = document.getElementById('fileSearch').value;
29+
const rows = document.getElementsByTagName('tbody')[0].children;
30+
for (let i = 0; i < rows.length; i++) {
31+
const row = rows[i];
32+
if (
33+
row.textContent
34+
.toLowerCase()
35+
.includes(searchValue.toLowerCase())
36+
) {
37+
row.style.display = '';
38+
} else {
39+
row.style.display = 'none';
40+
}
41+
}
42+
}
43+
44+
// loads the search box
45+
function addSearchBox() {
46+
var template = document.getElementById('filterTemplate');
47+
var templateClone = template.content.cloneNode(true);
48+
templateClone.getElementById('fileSearch').oninput = onFilterInput;
49+
template.parentElement.appendChild(templateClone);
50+
}
51+
52+
// loads all columns
53+
function loadColumns() {
54+
var colNodes = getTableHeader().querySelectorAll('th'),
55+
colNode,
56+
cols = [],
57+
col,
58+
i;
59+
60+
for (i = 0; i < colNodes.length; i += 1) {
61+
colNode = colNodes[i];
62+
col = {
63+
key: colNode.getAttribute('data-col'),
64+
sortable: !colNode.getAttribute('data-nosort'),
65+
type: colNode.getAttribute('data-type') || 'string'
66+
};
67+
cols.push(col);
68+
if (col.sortable) {
69+
col.defaultDescSort = col.type === 'number';
70+
colNode.innerHTML =
71+
colNode.innerHTML + '<span class="sorter"></span>';
72+
}
73+
}
74+
return cols;
75+
}
76+
// attaches a data attribute to every tr element with an object
77+
// of data values keyed by column name
78+
function loadRowData(tableRow) {
79+
var tableCols = tableRow.querySelectorAll('td'),
80+
colNode,
81+
col,
82+
data = {},
83+
i,
84+
val;
85+
for (i = 0; i < tableCols.length; i += 1) {
86+
colNode = tableCols[i];
87+
col = cols[i];
88+
val = colNode.getAttribute('data-value');
89+
if (col.type === 'number') {
90+
val = Number(val);
91+
}
92+
data[col.key] = val;
93+
}
94+
return data;
95+
}
96+
// loads all row data
97+
function loadData() {
98+
var rows = getTableBody().querySelectorAll('tr'),
99+
i;
100+
101+
for (i = 0; i < rows.length; i += 1) {
102+
rows[i].data = loadRowData(rows[i]);
103+
}
104+
}
105+
// sorts the table using the data for the ith column
106+
function sortByIndex(index, desc) {
107+
var key = cols[index].key,
108+
sorter = function(a, b) {
109+
a = a.data[key];
110+
b = b.data[key];
111+
return a < b ? -1 : a > b ? 1 : 0;
112+
},
113+
finalSorter = sorter,
114+
tableBody = document.querySelector('.coverage-summary tbody'),
115+
rowNodes = tableBody.querySelectorAll('tr'),
116+
rows = [],
117+
i;
118+
119+
if (desc) {
120+
finalSorter = function(a, b) {
121+
return -1 * sorter(a, b);
122+
};
123+
}
124+
125+
for (i = 0; i < rowNodes.length; i += 1) {
126+
rows.push(rowNodes[i]);
127+
tableBody.removeChild(rowNodes[i]);
128+
}
129+
130+
rows.sort(finalSorter);
131+
132+
for (i = 0; i < rows.length; i += 1) {
133+
tableBody.appendChild(rows[i]);
134+
}
135+
}
136+
// removes sort indicators for current column being sorted
137+
function removeSortIndicators() {
138+
var col = getNthColumn(currentSort.index),
139+
cls = col.className;
140+
141+
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
142+
col.className = cls;
143+
}
144+
// adds sort indicators for current column being sorted
145+
function addSortIndicators() {
146+
getNthColumn(currentSort.index).className += currentSort.desc
147+
? ' sorted-desc'
148+
: ' sorted';
149+
}
150+
// adds event listeners for all sorter widgets
151+
function enableUI() {
152+
var i,
153+
el,
154+
ithSorter = function ithSorter(i) {
155+
var col = cols[i];
156+
157+
return function() {
158+
var desc = col.defaultDescSort;
159+
160+
if (currentSort.index === i) {
161+
desc = !currentSort.desc;
162+
}
163+
sortByIndex(i, desc);
164+
removeSortIndicators();
165+
currentSort.index = i;
166+
currentSort.desc = desc;
167+
addSortIndicators();
168+
};
169+
};
170+
for (i = 0; i < cols.length; i += 1) {
171+
if (cols[i].sortable) {
172+
// add the click event handler on the th so users
173+
// dont have to click on those tiny arrows
174+
el = getNthColumn(i).querySelector('.sorter').parentElement;
175+
if (el.addEventListener) {
176+
el.addEventListener('click', ithSorter(i));
177+
} else {
178+
el.attachEvent('onclick', ithSorter(i));
179+
}
180+
}
181+
}
182+
}
183+
// adds sorting functionality to the UI
184+
return function() {
185+
if (!getTable()) {
186+
return;
187+
}
188+
cols = loadColumns();
189+
loadData();
190+
addSearchBox();
191+
addSortIndicators();
192+
enableUI();
193+
};
194+
})();
195+
196+
window.addEventListener('load', addSorting);

0 commit comments

Comments
 (0)
Please sign in to comment.