@fireproof/core 0.0.8 → 0.0.9

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.
@@ -1,931 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for prolly.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> prolly.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">94.32% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>266/282</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">88.23% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>30/34</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">92.85% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>13/14</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">94.32% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>266/282</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 oninput="onInput()" 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>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
349
- <span class="cline-any cline-yes">1x</span>
350
- <span class="cline-any cline-yes">1x</span>
351
- <span class="cline-any cline-yes">1x</span>
352
- <span class="cline-any cline-yes">1x</span>
353
- <span class="cline-any cline-yes">1x</span>
354
- <span class="cline-any cline-yes">1x</span>
355
- <span class="cline-any cline-yes">1x</span>
356
- <span class="cline-any cline-yes">1x</span>
357
- <span class="cline-any cline-yes">1x</span>
358
- <span class="cline-any cline-yes">1x</span>
359
- <span class="cline-any cline-yes">1x</span>
360
- <span class="cline-any cline-yes">1x</span>
361
- <span class="cline-any cline-yes">1x</span>
362
- <span class="cline-any cline-yes">1x</span>
363
- <span class="cline-any cline-yes">1x</span>
364
- <span class="cline-any cline-yes">1x</span>
365
- <span class="cline-any cline-yes">1x</span>
366
- <span class="cline-any cline-yes">889x</span>
367
- <span class="cline-any cline-yes">889x</span>
368
- <span class="cline-any cline-yes">889x</span>
369
- <span class="cline-any cline-yes">889x</span>
370
- <span class="cline-any cline-yes">1x</span>
371
- <span class="cline-any cline-yes">1x</span>
372
- <span class="cline-any cline-yes">1x</span>
373
- <span class="cline-any cline-yes">450x</span>
374
- <span class="cline-any cline-yes">450x</span>
375
- <span class="cline-any cline-yes">889x</span>
376
- <span class="cline-any cline-yes">889x</span>
377
- <span class="cline-any cline-yes">889x</span>
378
- <span class="cline-any cline-yes">889x</span>
379
- <span class="cline-any cline-yes">450x</span>
380
- <span class="cline-any cline-yes">450x</span>
381
- <span class="cline-any cline-yes">450x</span>
382
- <span class="cline-any cline-yes">450x</span>
383
- <span class="cline-any cline-yes">450x</span>
384
- <span class="cline-any cline-yes">1x</span>
385
- <span class="cline-any cline-yes">1x</span>
386
- <span class="cline-any cline-yes">1x</span>
387
- <span class="cline-any cline-yes">1x</span>
388
- <span class="cline-any cline-yes">1x</span>
389
- <span class="cline-any cline-yes">1x</span>
390
- <span class="cline-any cline-yes">1x</span>
391
- <span class="cline-any cline-yes">1x</span>
392
- <span class="cline-any cline-yes">1x</span>
393
- <span class="cline-any cline-yes">1x</span>
394
- <span class="cline-any cline-yes">1x</span>
395
- <span class="cline-any cline-yes">1x</span>
396
- <span class="cline-any cline-yes">1x</span>
397
- <span class="cline-any cline-yes">1x</span>
398
- <span class="cline-any cline-yes">1x</span>
399
- <span class="cline-any cline-yes">1x</span>
400
- <span class="cline-any cline-yes">1x</span>
401
- <span class="cline-any cline-yes">1x</span>
402
- <span class="cline-any cline-yes">1x</span>
403
- <span class="cline-any cline-yes">1x</span>
404
- <span class="cline-any cline-yes">174x</span>
405
- <span class="cline-any cline-yes">174x</span>
406
- <span class="cline-any cline-yes">174x</span>
407
- <span class="cline-any cline-yes">174x</span>
408
- <span class="cline-any cline-yes">174x</span>
409
- <span class="cline-any cline-yes">174x</span>
410
- <span class="cline-any cline-yes">174x</span>
411
- <span class="cline-any cline-yes">174x</span>
412
- <span class="cline-any cline-yes">174x</span>
413
- <span class="cline-any cline-yes">174x</span>
414
- <span class="cline-any cline-yes">174x</span>
415
- <span class="cline-any cline-yes">174x</span>
416
- <span class="cline-any cline-yes">174x</span>
417
- <span class="cline-any cline-yes">174x</span>
418
- <span class="cline-any cline-yes">174x</span>
419
- <span class="cline-any cline-yes">174x</span>
420
- <span class="cline-any cline-yes">174x</span>
421
- <span class="cline-any cline-yes">174x</span>
422
- <span class="cline-any cline-yes">174x</span>
423
- <span class="cline-any cline-yes">174x</span>
424
- <span class="cline-any cline-yes">174x</span>
425
- <span class="cline-any cline-yes">174x</span>
426
- <span class="cline-any cline-no">&nbsp;</span>
427
- <span class="cline-any cline-no">&nbsp;</span>
428
- <span class="cline-any cline-yes">174x</span>
429
- <span class="cline-any cline-yes">174x</span>
430
- <span class="cline-any cline-yes">174x</span>
431
- <span class="cline-any cline-yes">174x</span>
432
- <span class="cline-any cline-yes">174x</span>
433
- <span class="cline-any cline-yes">174x</span>
434
- <span class="cline-any cline-yes">174x</span>
435
- <span class="cline-any cline-yes">174x</span>
436
- <span class="cline-any cline-yes">174x</span>
437
- <span class="cline-any cline-yes">174x</span>
438
- <span class="cline-any cline-yes">174x</span>
439
- <span class="cline-any cline-yes">174x</span>
440
- <span class="cline-any cline-yes">174x</span>
441
- <span class="cline-any cline-yes">174x</span>
442
- <span class="cline-any cline-yes">174x</span>
443
- <span class="cline-any cline-yes">174x</span>
444
- <span class="cline-any cline-yes">174x</span>
445
- <span class="cline-any cline-yes">174x</span>
446
- <span class="cline-any cline-yes">1x</span>
447
- <span class="cline-any cline-yes">1x</span>
448
- <span class="cline-any cline-yes">410x</span>
449
- <span class="cline-any cline-yes">410x</span>
450
- <span class="cline-any cline-yes">410x</span>
451
- <span class="cline-any cline-yes">410x</span>
452
- <span class="cline-any cline-yes">410x</span>
453
- <span class="cline-any cline-yes">889x</span>
454
- <span class="cline-any cline-yes">889x</span>
455
- <span class="cline-any cline-yes">889x</span>
456
- <span class="cline-any cline-yes">889x</span>
457
- <span class="cline-any cline-yes">889x</span>
458
- <span class="cline-any cline-yes">489x</span>
459
- <span class="cline-any cline-yes">489x</span>
460
- <span class="cline-any cline-yes">889x</span>
461
- <span class="cline-any cline-yes">410x</span>
462
- <span class="cline-any cline-yes">410x</span>
463
- <span class="cline-any cline-yes">1x</span>
464
- <span class="cline-any cline-yes">1x</span>
465
- <span class="cline-any cline-yes">248x</span>
466
- <span class="cline-any cline-yes">784x</span>
467
- <span class="cline-any cline-yes">784x</span>
468
- <span class="cline-any cline-yes">784x</span>
469
- <span class="cline-any cline-yes">784x</span>
470
- <span class="cline-any cline-yes">248x</span>
471
- <span class="cline-any cline-yes">1x</span>
472
- <span class="cline-any cline-yes">1x</span>
473
- <span class="cline-any cline-yes">1x</span>
474
- <span class="cline-any cline-yes">1x</span>
475
- <span class="cline-any cline-yes">1x</span>
476
- <span class="cline-any cline-yes">1x</span>
477
- <span class="cline-any cline-yes">1x</span>
478
- <span class="cline-any cline-yes">1x</span>
479
- <span class="cline-any cline-yes">1x</span>
480
- <span class="cline-any cline-yes">1x</span>
481
- <span class="cline-any cline-yes">248x</span>
482
- <span class="cline-any cline-yes">248x</span>
483
- <span class="cline-any cline-yes">248x</span>
484
- <span class="cline-any cline-yes">248x</span>
485
- <span class="cline-any cline-yes">248x</span>
486
- <span class="cline-any cline-yes">248x</span>
487
- <span class="cline-any cline-yes">1x</span>
488
- <span class="cline-any cline-yes">1x</span>
489
- <span class="cline-any cline-yes">1x</span>
490
- <span class="cline-any cline-yes">1x</span>
491
- <span class="cline-any cline-yes">1x</span>
492
- <span class="cline-any cline-yes">1x</span>
493
- <span class="cline-any cline-yes">1x</span>
494
- <span class="cline-any cline-yes">1x</span>
495
- <span class="cline-any cline-yes">1x</span>
496
- <span class="cline-any cline-yes">1x</span>
497
- <span class="cline-any cline-yes">1x</span>
498
- <span class="cline-any cline-yes">1x</span>
499
- <span class="cline-any cline-yes">174x</span>
500
- <span class="cline-any cline-yes">174x</span>
501
- <span class="cline-any cline-yes">174x</span>
502
- <span class="cline-any cline-yes">174x</span>
503
- <span class="cline-any cline-yes">44x</span>
504
- <span class="cline-any cline-yes">44x</span>
505
- <span class="cline-any cline-yes">44x</span>
506
- <span class="cline-any cline-yes">44x</span>
507
- <span class="cline-any cline-yes">44x</span>
508
- <span class="cline-any cline-yes">44x</span>
509
- <span class="cline-any cline-yes">44x</span>
510
- <span class="cline-any cline-yes">44x</span>
511
- <span class="cline-any cline-yes">130x</span>
512
- <span class="cline-any cline-yes">130x</span>
513
- <span class="cline-any cline-yes">130x</span>
514
- <span class="cline-any cline-yes">130x</span>
515
- <span class="cline-any cline-yes">130x</span>
516
- <span class="cline-any cline-yes">130x</span>
517
- <span class="cline-any cline-yes">130x</span>
518
- <span class="cline-any cline-yes">130x</span>
519
- <span class="cline-any cline-yes">130x</span>
520
- <span class="cline-any cline-yes">130x</span>
521
- <span class="cline-any cline-yes">130x</span>
522
- <span class="cline-any cline-yes">130x</span>
523
- <span class="cline-any cline-yes">130x</span>
524
- <span class="cline-any cline-yes">174x</span>
525
- <span class="cline-any cline-yes">315x</span>
526
- <span class="cline-any cline-yes">315x</span>
527
- <span class="cline-any cline-yes">130x</span>
528
- <span class="cline-any cline-yes">130x</span>
529
- <span class="cline-any cline-yes">130x</span>
530
- <span class="cline-any cline-yes">130x</span>
531
- <span class="cline-any cline-yes">130x</span>
532
- <span class="cline-any cline-yes">130x</span>
533
- <span class="cline-any cline-yes">130x</span>
534
- <span class="cline-any cline-yes">130x</span>
535
- <span class="cline-any cline-yes">130x</span>
536
- <span class="cline-any cline-yes">174x</span>
537
- <span class="cline-any cline-yes">1x</span>
538
- <span class="cline-any cline-yes">1x</span>
539
- <span class="cline-any cline-yes">1x</span>
540
- <span class="cline-any cline-yes">1x</span>
541
- <span class="cline-any cline-yes">1x</span>
542
- <span class="cline-any cline-yes">1x</span>
543
- <span class="cline-any cline-yes">1x</span>
544
- <span class="cline-any cline-yes">1x</span>
545
- <span class="cline-any cline-yes">118x</span>
546
- <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-no">&nbsp;</span>
548
- <span class="cline-any cline-yes">118x</span>
549
- <span class="cline-any cline-yes">118x</span>
550
- <span class="cline-any cline-yes">118x</span>
551
- <span class="cline-any cline-yes">118x</span>
552
- <span class="cline-any cline-yes">118x</span>
553
- <span class="cline-any cline-yes">118x</span>
554
- <span class="cline-any cline-yes">118x</span>
555
- <span class="cline-any cline-yes">118x</span>
556
- <span class="cline-any cline-yes">118x</span>
557
- <span class="cline-any cline-yes">118x</span>
558
- <span class="cline-any cline-yes">118x</span>
559
- <span class="cline-any cline-yes">118x</span>
560
- <span class="cline-any cline-yes">118x</span>
561
- <span class="cline-any cline-yes">118x</span>
562
- <span class="cline-any cline-yes">226x</span>
563
- <span class="cline-any cline-yes">226x</span>
564
- <span class="cline-any cline-yes">118x</span>
565
- <span class="cline-any cline-yes">118x</span>
566
- <span class="cline-any cline-yes">118x</span>
567
- <span class="cline-any cline-yes">118x</span>
568
- <span class="cline-any cline-yes">1x</span>
569
- <span class="cline-any cline-yes">1x</span>
570
- <span class="cline-any cline-yes">1x</span>
571
- <span class="cline-any cline-yes">1x</span>
572
- <span class="cline-any cline-yes">1x</span>
573
- <span class="cline-any cline-yes">1x</span>
574
- <span class="cline-any cline-yes">1x</span>
575
- <span class="cline-any cline-yes">1x</span>
576
- <span class="cline-any cline-yes">1x</span>
577
- <span class="cline-any cline-yes">15x</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-yes">15x</span>
581
- <span class="cline-any cline-yes">15x</span>
582
- <span class="cline-any cline-yes">15x</span>
583
- <span class="cline-any cline-yes">15x</span>
584
- <span class="cline-any cline-yes">1x</span>
585
- <span class="cline-any cline-yes">1x</span>
586
- <span class="cline-any cline-yes">1x</span>
587
- <span class="cline-any cline-yes">1x</span>
588
- <span class="cline-any cline-yes">1x</span>
589
- <span class="cline-any cline-yes">1x</span>
590
- <span class="cline-any cline-yes">1x</span>
591
- <span class="cline-any cline-yes">1x</span>
592
- <span class="cline-any cline-yes">1x</span>
593
- <span class="cline-any cline-yes">1x</span>
594
- <span class="cline-any cline-yes">52x</span>
595
- <span class="cline-any cline-yes">52x</span>
596
- <span class="cline-any cline-yes">52x</span>
597
- <span class="cline-any cline-yes">1x</span>
598
- <span class="cline-any cline-yes">1x</span>
599
- <span class="cline-any cline-yes">51x</span>
600
- <span class="cline-any cline-yes">51x</span>
601
- <span class="cline-any cline-yes">51x</span>
602
- <span class="cline-any cline-yes">52x</span>
603
- <span class="cline-any cline-yes">1x</span>
604
- <span class="cline-any cline-yes">1x</span>
605
- <span class="cline-any cline-yes">1x</span>
606
- <span class="cline-any cline-yes">1x</span>
607
- <span class="cline-any cline-yes">1x</span>
608
- <span class="cline-any cline-yes">1x</span>
609
- <span class="cline-any cline-yes">1x</span>
610
- <span class="cline-any cline-yes">66x</span>
611
- <span class="cline-any cline-yes">66x</span>
612
- <span class="cline-any cline-yes">3x</span>
613
- <span class="cline-any cline-yes">3x</span>
614
- <span class="cline-any cline-yes">63x</span>
615
- <span class="cline-any cline-yes">63x</span>
616
- <span class="cline-any cline-yes">57x</span>
617
- <span class="cline-any cline-yes">66x</span>
618
- <span class="cline-any cline-yes">1x</span>
619
- <span class="cline-any cline-yes">1x</span>
620
- <span class="cline-any cline-no">&nbsp;</span>
621
- <span class="cline-any cline-no">&nbsp;</span>
622
- <span class="cline-any cline-no">&nbsp;</span>
623
- <span class="cline-any cline-no">&nbsp;</span>
624
- <span class="cline-any cline-no">&nbsp;</span>
625
- <span class="cline-any cline-no">&nbsp;</span>
626
- <span class="cline-any cline-no">&nbsp;</span>
627
- <span class="cline-any cline-no">&nbsp;</span>
628
- <span class="cline-any cline-no">&nbsp;</span>
629
- <span class="cline-any cline-no">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
631
- advance,
632
- EventFetcher,
633
- EventBlock,
634
- findCommonAncestorWithSortedEvents,
635
- findEventsToSync
636
- } from './clock.js'
637
- import { create, load } from 'prolly-trees/map'
638
- // import { create, load } from '../../../../prolly-trees/src/map.js'
639
- import { nocache as cache } from 'prolly-trees/cache'
640
- import { CIDCounter, bf, simpleCompare as compare } from 'prolly-trees/utils'
641
- import * as codec from '@ipld/dag-cbor'
642
- import { sha256 as hasher } from 'multiformats/hashes/sha2'
643
- import { doTransaction } from './blockstore.js'
644
- import { create as createBlock } from 'multiformats/block'
645
- const opts = { cache, chunker: bf(3), codec, hasher, compare }
646
- &nbsp;
647
- const withLog = async (label, fn) =&gt; {
648
- const resp = await fn()
649
- // console.log('withLog', label, !!resp)
650
- return resp
651
- }
652
- &nbsp;
653
- // should also return a CIDCounter
654
- export const makeGetBlock = (blocks) =&gt; {
655
- // const cids = new CIDCounter() // this could be used for proofs of mutations
656
- const getBlockFn = async (address) =&gt; {
657
- const { cid, bytes } = await withLog(address, () =&gt; blocks.get(address))
658
- // cids.add({ address: cid })
659
- return createBlock({ cid, bytes, hasher, codec })
660
- }
661
- return {
662
- // cids,
663
- getBlock: getBlockFn
664
- }
665
- }
666
- &nbsp;
667
- /**
668
- * Creates and saves a new event.
669
- * @param {import('./blockstore.js').Blockstore} inBlocks - A persistent blockstore.
670
- * @param {MemoryBlockstore} mblocks - A temporary blockstore.
671
- * @param {Function} getBlock - A function that gets a block.
672
- * @param {Function} bigPut - A function that puts a block.
673
- * @param {import('prolly-trees/map').Root} root - The root node.
674
- * @param {Object&lt;{ key: string, value: any, del: boolean }&gt;} event - The update event.
675
- * @param {CID[]} head - The head of the event chain.
676
- * @param {Array&lt;import('multiformats/block').Block&gt;} additions - A array of additions.
677
- * @param {Array&lt;mport('multiformats/block').Block&gt;&gt;} removals - An array of removals.
678
- * @returns {Promise&lt;{
679
- * root: import('prolly-trees/map').Root,
680
- * additions: Map&lt;string, import('multiformats/block').Block&gt;,
681
- * removals: Array&lt;string&gt;,
682
- * head: CID[],
683
- * event: CID[]
684
- * }&gt;}
685
- */
686
- async function createAndSaveNewEvent ({
687
- inBlocks,
688
- bigPut,
689
- root,
690
- event: inEvent,
691
- head,
692
- additions,
693
- removals = []
694
- }) {
695
- let cids
696
- const { key, value, del } = inEvent
697
- const data = {
698
- type: 'put',
699
- root: {
700
- cid: root.cid,
701
- bytes: root.bytes,
702
- value: root.value
703
- },
704
- key
705
- }
706
- &nbsp;
707
- if (del) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
708
- <span class="cstat-no" title="statement not covered" > data.value = null</span>
709
- <span class="cstat-no" title="statement not covered" > data.type = 'del'</span>
710
- } else {
711
- data.value = value
712
- }
713
- /** @type {EventData} */
714
- &nbsp;
715
- const event = await EventBlock.create(data, head)
716
- bigPut(event)
717
- ;({ head, cids } = await advance(inBlocks, head, event.cid))
718
- &nbsp;
719
- return {
720
- root,
721
- additions,
722
- removals,
723
- head,
724
- clockCIDs: cids,
725
- event
726
- }
727
- }
728
- &nbsp;
729
- const makeGetAndPutBlock = (inBlocks) =&gt; {
730
- // const mblocks = new MemoryBlockstore()
731
- // const blocks = new MultiBlockFetcher(mblocks, inBlocks)
732
- const { getBlock, cids } = makeGetBlock(inBlocks)
733
- const put = inBlocks.put.bind(inBlocks)
734
- const bigPut = async (block, additions) =&gt; {
735
- // console.log('bigPut', block.cid.toString())
736
- const { cid, bytes } = block
737
- put(cid, bytes)
738
- // mblocks.putSync(cid, bytes)
739
- if (additions) {
740
- additions.set(cid.toString(), block)
741
- }
742
- }
743
- return { getBlock, bigPut, blocks: inBlocks, cids }
744
- }
745
- &nbsp;
746
- const bulkFromEvents = (sorted) =&gt;
747
- sorted.map(({ value: event }) =&gt; {
748
- const {
749
- data: { type, value, key }
750
- } = event
751
- return type === 'put' ? { key, value } <span class="branch-0 cbranch-no" title="branch not covered" >: { key, del: true }</span>
752
- })
753
- &nbsp;
754
- // Get the value of the root from the ancestor event
755
- /**
756
- *
757
- * @param {EventFetcher} events
758
- * @param {Link} ancestor
759
- * @param {*} getBlock
760
- * @returns
761
- */
762
- const prollyRootFromAncestor = async (events, ancestor, getBlock) =&gt; {
763
- // console.log('prollyRootFromAncestor', ancestor)
764
- const event = await events.get(ancestor)
765
- const { root } = event.value.data
766
- // console.log('prollyRootFromAncestor', root.cid, JSON.stringify(root.value))
767
- return load({ cid: root.cid, get: getBlock, ...opts })
768
- }
769
- &nbsp;
770
- /**
771
- * Put a value (a CID) for the given key. If the key exists it's value is overwritten.
772
- *
773
- * @param {import('../test/block.js').BlockFetcher} blocks Bucket block storage.
774
- * @param {import('./clock').EventLink&lt;EventData&gt;[]} head Merkle clock head.
775
- * @param {string} key The key of the value to put.
776
- * @param {CID} value The value to put.
777
- * @param {object} [options]
778
- * @returns {Promise&lt;Result&gt;}
779
- */
780
- export async function put (inBlocks, head, event, options) {
781
- const { getBlock, bigPut, blocks } = makeGetAndPutBlock(inBlocks)
782
- &nbsp;
783
- // If the head is empty, we create a new event and return the root and addition blocks
784
- if (!head.length) {
785
- const additions = new Map()
786
- let root
787
- for await (const node of create({ get: getBlock, list: [event], ...opts })) {
788
- root = await node.block
789
- bigPut(root, additions)
790
- }
791
- return createAndSaveNewEvent({ inBlocks, bigPut, root, event, head, additions: Array.from(additions.values()) })
792
- }
793
- &nbsp;
794
- // Otherwise, we find the common ancestor and update the root and other blocks
795
- const events = new EventFetcher(blocks)
796
- // this is returning more events than necessary
797
- const { ancestor, sorted } = await findCommonAncestorWithSortedEvents(events, head)
798
- // console.log('sorted', JSON.stringify(sorted.map(({ value: { data: { key, value } } }) =&gt; ({ key, value }))))
799
- const prollyRootNode = await prollyRootFromAncestor(events, ancestor, getBlock)
800
- &nbsp;
801
- const bulkOperations = bulkFromEvents(sorted)
802
- const { root: newProllyRootNode, blocks: newBlocks } = await prollyRootNode.bulk([...bulkOperations, event]) // ading delete support here
803
- const prollyRootBlock = await newProllyRootNode.block
804
- const additions = new Map() // ; const removals = new Map()
805
- bigPut(prollyRootBlock, additions)
806
- for (const nb of newBlocks) {
807
- bigPut(nb, additions)
808
- }
809
- // additions are new blocks
810
- return createAndSaveNewEvent({
811
- inBlocks,
812
- bigPut,
813
- root: prollyRootBlock,
814
- event,
815
- head,
816
- additions: Array.from(additions.values()) /*, todo? Array.from(removals.values()) */
817
- })
818
- }
819
- &nbsp;
820
- /**
821
- * Determine the effective prolly root given the current merkle clock head.
822
- *
823
- * @param {import('../test/block.js').BlockFetcher} blocks Bucket block storage.
824
- * @param {import('./clock').EventLink&lt;EventData&gt;[]} head Merkle clock head.
825
- */
826
- export async function root (inBlocks, head) {
827
- if (!head.length) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
828
- <span class="cstat-no" title="statement not covered" > throw new Error('no head')</span>
829
- <span class="cstat-no" title="statement not covered" > }</span>
830
- const { getBlock, blocks } = makeGetAndPutBlock(inBlocks)
831
- const events = new EventFetcher(blocks)
832
- const { ancestor, sorted } = await findCommonAncestorWithSortedEvents(events, head)
833
- const prollyRootNode = await prollyRootFromAncestor(events, ancestor, getBlock)
834
- &nbsp;
835
- // Perform bulk operations (put or delete) for each event in the sorted array
836
- const bulkOperations = bulkFromEvents(sorted)
837
- const { root: newProllyRootNode, blocks: newBlocks } = await prollyRootNode.bulk(bulkOperations)
838
- // const prollyRootBlock = await newProllyRootNode.block
839
- // console.log('newBlocks', newBlocks.map((nb) =&gt; nb.cid.toString()))
840
- // todo maybe these should go to a temp blockstore?
841
- await doTransaction('root', inBlocks, async (transactionBlockstore) =&gt; {
842
- const { bigPut } = makeGetAndPutBlock(transactionBlockstore)
843
- for (const nb of newBlocks) {
844
- bigPut(nb)
845
- }
846
- // bigPut(prollyRootBlock)
847
- })
848
- return { cids: events.cids, node: newProllyRootNode }
849
- }
850
- &nbsp;
851
- /**
852
- * Get the list of events not known by the `since` event
853
- * @param {import('../test/block.js').BlockFetcher} blocks Bucket block storage.
854
- * @param {import('./clock').EventLink&lt;EventData&gt;[]} head Merkle clock head.
855
- * @param {import('./clock').EventLink&lt;EventData&gt;} since Event to compare against.
856
- * @returns {Promise&lt;import('./clock').EventLink&lt;EventData&gt;[]&gt;}
857
- */
858
- export async function eventsSince (blocks, head, since) {
859
- if (!head.length) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
860
- <span class="cstat-no" title="statement not covered" > throw new Error('no head')</span>
861
- <span class="cstat-no" title="statement not covered" > }</span>
862
- const sinceHead = [...since, ...head]
863
- const { cids, events: unknownSorted3 } = await findEventsToSync(blocks, sinceHead)
864
- return { clockCIDs: cids, result: unknownSorted3.map(({ value: { data } }) =&gt; data) }
865
- }
866
- &nbsp;
867
- /**
868
- *
869
- * @param {import('../test/block.js').BlockFetcher} blocks Bucket block storage.
870
- * @param {import('./clock').EventLink&lt;EventData&gt;[]} head Merkle clock head.
871
- *
872
- * @returns {Promise&lt;import('./prolly').Entry[]&gt;}
873
- *
874
- */
875
- export async function getAll (blocks, head) {
876
- // todo use the root node left around from put, etc
877
- // move load to a central place
878
- if (!head.length) {
879
- return { clockCIDs: new CIDCounter(), cids: new CIDCounter(), result: [] }
880
- }
881
- const { node: prollyRootNode, cids: clockCIDs } = await root(blocks, head)
882
- const { result, cids } = await prollyRootNode.getAllEntries() // todo params
883
- return { clockCIDs, cids, result: result.map(({ key, value }) =&gt; ({ key, value })) }
884
- }
885
- &nbsp;
886
- /**
887
- * @param {import('../test/block.js').BlockFetcher} blocks Bucket block storage.
888
- * @param {import('./clock').EventLink&lt;EventData&gt;[]} head Merkle clock head.
889
- * @param {string} key The key of the value to retrieve.
890
- */
891
- export async function get (blocks, head, key) {
892
- // instead pass root from db? and always update on change
893
- if (!head.length) {
894
- return { cids: new CIDCounter(), result: null }
895
- }
896
- const { node: prollyRootNode, cids: clockCIDs } = await root(blocks, head)
897
- const { result, cids } = await prollyRootNode.get(key)
898
- return { result, cids, clockCIDs }
899
- }
900
- &nbsp;
901
- export <span class="fstat-no" title="function not covered" >async function * vis (blocks, head) {</span>
902
- <span class="cstat-no" title="statement not covered" > if (!head.length) {</span>
903
- <span class="cstat-no" title="statement not covered" > return { cids: new CIDCounter(), result: null }</span>
904
- <span class="cstat-no" title="statement not covered" > }</span>
905
- <span class="cstat-no" title="statement not covered" > const { node: prollyRootNode, cids } = await root(blocks, head)</span>
906
- <span class="cstat-no" title="statement not covered" > const lines = []</span>
907
- <span class="cstat-no" title="statement not covered" > for await (const line of prollyRootNode.vis()) {</span>
908
- <span class="cstat-no" title="statement not covered" > yield line</span>
909
- <span class="cstat-no" title="statement not covered" > }</span>
910
- <span class="cstat-no" title="statement not covered" > return { vis: lines.join('\n'), cids }</span>
911
- <span class="cstat-no" title="statement not covered" >}</span>
912
- &nbsp;</pre></td></tr></table></pre>
913
-
914
- <div class='push'></div><!-- for sticky footer -->
915
- </div><!-- /wrapper -->
916
- <div class='footer quiet pad2 space-top1 center small'>
917
- Code coverage generated by
918
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
919
- at 2023-04-01T18:16:45.716Z
920
- </div>
921
- <script src="prettify.js"></script>
922
- <script>
923
- window.onload = function () {
924
- prettyPrint();
925
- };
926
- </script>
927
- <script src="sorter.js"></script>
928
- <script src="block-navigation.js"></script>
929
- </body>
930
- </html>
931
-