@firebase/installations 0.4.7-canary.daf63c2c → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/common.ts.html +402 -0
  2. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/create-installation-request.ts.html +270 -0
  3. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/delete-installation-request.ts.html +219 -0
  4. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/generate-auth-token-request.ts.html +306 -0
  5. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/index.html +136 -0
  6. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/base.css +224 -0
  7. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/block-navigation.js +79 -0
  8. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/delete-installation.ts.html +219 -0
  9. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/get-id.ts.html +183 -0
  10. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/get-token.ts.html +201 -0
  11. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/index.html +136 -0
  12. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/on-id-change.ts.html +180 -0
  13. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/buffer-to-base64-url-safe.ts.html +132 -0
  14. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/extract-app-config.ts.html +240 -0
  15. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/fid-changed.ts.html +399 -0
  16. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/generate-fid.ts.html +234 -0
  17. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/get-installation-entry.ts.html +750 -0
  18. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/idb-manager.ts.html +438 -0
  19. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/index.html +175 -0
  20. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/refresh-auth-token.ts.html +696 -0
  21. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/index.html +136 -0
  22. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/lcov.info +825 -0
  23. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/prettify.css +1 -0
  24. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/prettify.js +2 -0
  25. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/sort-arrow-sprite.png +0 -0
  26. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/sorter.js +170 -0
  27. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/constants.ts.html +162 -0
  28. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/errors.ts.html +285 -0
  29. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/get-key.ts.html +138 -0
  30. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/index.html +136 -0
  31. package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/sleep.ts.html +138 -0
  32. package/dist/index.cjs.js +1 -1
  33. package/dist/index.esm.js +1 -1
  34. package/dist/index.esm2017.js +1 -1
  35. package/karma.conf.js +2 -1
  36. package/package.json +8 -8
@@ -0,0 +1,750 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>Code coverage report for helpers/get-installation-entry.ts</title>
5
+ <meta charset="utf-8" />
6
+ <link rel="stylesheet" href="../prettify.css" />
7
+ <link rel="stylesheet" href="../base.css" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1">
9
+ <style type='text/css'>
10
+ .coverage-summary .sorter {
11
+ background-image: url(../sort-arrow-sprite.png);
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <div class='wrapper'>
17
+ <div class='pad1'>
18
+ <h1>
19
+ <a href="../index.html">All files</a> / <a href="index.html">helpers</a> get-installation-entry.ts
20
+ </h1>
21
+ <div class='clearfix'>
22
+ <div class='fl pad1y space-right2'>
23
+ <span class="strong">96.55% </span>
24
+ <span class="quiet">Statements</span>
25
+ <span class='fraction'>56/58</span>
26
+ </div>
27
+ <div class='fl pad1y space-right2'>
28
+ <span class="strong">93.55% </span>
29
+ <span class="quiet">Branches</span>
30
+ <span class='fraction'>29/31</span>
31
+ </div>
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Functions</span>
35
+ <span class='fraction'>10/10</span>
36
+ </div>
37
+ <div class='fl pad1y space-right2'>
38
+ <span class="strong">96.15% </span>
39
+ <span class="quiet">Lines</span>
40
+ <span class='fraction'>50/52</span>
41
+ </div>
42
+ </div>
43
+ <p class="quiet">
44
+ 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.
45
+ </p>
46
+ </div>
47
+ <div class='status-line high'></div>
48
+ <pre><table class="coverage">
49
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
50
+ <a name='L2'></a><a href='#L2'>2</a>
51
+ <a name='L3'></a><a href='#L3'>3</a>
52
+ <a name='L4'></a><a href='#L4'>4</a>
53
+ <a name='L5'></a><a href='#L5'>5</a>
54
+ <a name='L6'></a><a href='#L6'>6</a>
55
+ <a name='L7'></a><a href='#L7'>7</a>
56
+ <a name='L8'></a><a href='#L8'>8</a>
57
+ <a name='L9'></a><a href='#L9'>9</a>
58
+ <a name='L10'></a><a href='#L10'>10</a>
59
+ <a name='L11'></a><a href='#L11'>11</a>
60
+ <a name='L12'></a><a href='#L12'>12</a>
61
+ <a name='L13'></a><a href='#L13'>13</a>
62
+ <a name='L14'></a><a href='#L14'>14</a>
63
+ <a name='L15'></a><a href='#L15'>15</a>
64
+ <a name='L16'></a><a href='#L16'>16</a>
65
+ <a name='L17'></a><a href='#L17'>17</a>
66
+ <a name='L18'></a><a href='#L18'>18</a>
67
+ <a name='L19'></a><a href='#L19'>19</a>
68
+ <a name='L20'></a><a href='#L20'>20</a>
69
+ <a name='L21'></a><a href='#L21'>21</a>
70
+ <a name='L22'></a><a href='#L22'>22</a>
71
+ <a name='L23'></a><a href='#L23'>23</a>
72
+ <a name='L24'></a><a href='#L24'>24</a>
73
+ <a name='L25'></a><a href='#L25'>25</a>
74
+ <a name='L26'></a><a href='#L26'>26</a>
75
+ <a name='L27'></a><a href='#L27'>27</a>
76
+ <a name='L28'></a><a href='#L28'>28</a>
77
+ <a name='L29'></a><a href='#L29'>29</a>
78
+ <a name='L30'></a><a href='#L30'>30</a>
79
+ <a name='L31'></a><a href='#L31'>31</a>
80
+ <a name='L32'></a><a href='#L32'>32</a>
81
+ <a name='L33'></a><a href='#L33'>33</a>
82
+ <a name='L34'></a><a href='#L34'>34</a>
83
+ <a name='L35'></a><a href='#L35'>35</a>
84
+ <a name='L36'></a><a href='#L36'>36</a>
85
+ <a name='L37'></a><a href='#L37'>37</a>
86
+ <a name='L38'></a><a href='#L38'>38</a>
87
+ <a name='L39'></a><a href='#L39'>39</a>
88
+ <a name='L40'></a><a href='#L40'>40</a>
89
+ <a name='L41'></a><a href='#L41'>41</a>
90
+ <a name='L42'></a><a href='#L42'>42</a>
91
+ <a name='L43'></a><a href='#L43'>43</a>
92
+ <a name='L44'></a><a href='#L44'>44</a>
93
+ <a name='L45'></a><a href='#L45'>45</a>
94
+ <a name='L46'></a><a href='#L46'>46</a>
95
+ <a name='L47'></a><a href='#L47'>47</a>
96
+ <a name='L48'></a><a href='#L48'>48</a>
97
+ <a name='L49'></a><a href='#L49'>49</a>
98
+ <a name='L50'></a><a href='#L50'>50</a>
99
+ <a name='L51'></a><a href='#L51'>51</a>
100
+ <a name='L52'></a><a href='#L52'>52</a>
101
+ <a name='L53'></a><a href='#L53'>53</a>
102
+ <a name='L54'></a><a href='#L54'>54</a>
103
+ <a name='L55'></a><a href='#L55'>55</a>
104
+ <a name='L56'></a><a href='#L56'>56</a>
105
+ <a name='L57'></a><a href='#L57'>57</a>
106
+ <a name='L58'></a><a href='#L58'>58</a>
107
+ <a name='L59'></a><a href='#L59'>59</a>
108
+ <a name='L60'></a><a href='#L60'>60</a>
109
+ <a name='L61'></a><a href='#L61'>61</a>
110
+ <a name='L62'></a><a href='#L62'>62</a>
111
+ <a name='L63'></a><a href='#L63'>63</a>
112
+ <a name='L64'></a><a href='#L64'>64</a>
113
+ <a name='L65'></a><a href='#L65'>65</a>
114
+ <a name='L66'></a><a href='#L66'>66</a>
115
+ <a name='L67'></a><a href='#L67'>67</a>
116
+ <a name='L68'></a><a href='#L68'>68</a>
117
+ <a name='L69'></a><a href='#L69'>69</a>
118
+ <a name='L70'></a><a href='#L70'>70</a>
119
+ <a name='L71'></a><a href='#L71'>71</a>
120
+ <a name='L72'></a><a href='#L72'>72</a>
121
+ <a name='L73'></a><a href='#L73'>73</a>
122
+ <a name='L74'></a><a href='#L74'>74</a>
123
+ <a name='L75'></a><a href='#L75'>75</a>
124
+ <a name='L76'></a><a href='#L76'>76</a>
125
+ <a name='L77'></a><a href='#L77'>77</a>
126
+ <a name='L78'></a><a href='#L78'>78</a>
127
+ <a name='L79'></a><a href='#L79'>79</a>
128
+ <a name='L80'></a><a href='#L80'>80</a>
129
+ <a name='L81'></a><a href='#L81'>81</a>
130
+ <a name='L82'></a><a href='#L82'>82</a>
131
+ <a name='L83'></a><a href='#L83'>83</a>
132
+ <a name='L84'></a><a href='#L84'>84</a>
133
+ <a name='L85'></a><a href='#L85'>85</a>
134
+ <a name='L86'></a><a href='#L86'>86</a>
135
+ <a name='L87'></a><a href='#L87'>87</a>
136
+ <a name='L88'></a><a href='#L88'>88</a>
137
+ <a name='L89'></a><a href='#L89'>89</a>
138
+ <a name='L90'></a><a href='#L90'>90</a>
139
+ <a name='L91'></a><a href='#L91'>91</a>
140
+ <a name='L92'></a><a href='#L92'>92</a>
141
+ <a name='L93'></a><a href='#L93'>93</a>
142
+ <a name='L94'></a><a href='#L94'>94</a>
143
+ <a name='L95'></a><a href='#L95'>95</a>
144
+ <a name='L96'></a><a href='#L96'>96</a>
145
+ <a name='L97'></a><a href='#L97'>97</a>
146
+ <a name='L98'></a><a href='#L98'>98</a>
147
+ <a name='L99'></a><a href='#L99'>99</a>
148
+ <a name='L100'></a><a href='#L100'>100</a>
149
+ <a name='L101'></a><a href='#L101'>101</a>
150
+ <a name='L102'></a><a href='#L102'>102</a>
151
+ <a name='L103'></a><a href='#L103'>103</a>
152
+ <a name='L104'></a><a href='#L104'>104</a>
153
+ <a name='L105'></a><a href='#L105'>105</a>
154
+ <a name='L106'></a><a href='#L106'>106</a>
155
+ <a name='L107'></a><a href='#L107'>107</a>
156
+ <a name='L108'></a><a href='#L108'>108</a>
157
+ <a name='L109'></a><a href='#L109'>109</a>
158
+ <a name='L110'></a><a href='#L110'>110</a>
159
+ <a name='L111'></a><a href='#L111'>111</a>
160
+ <a name='L112'></a><a href='#L112'>112</a>
161
+ <a name='L113'></a><a href='#L113'>113</a>
162
+ <a name='L114'></a><a href='#L114'>114</a>
163
+ <a name='L115'></a><a href='#L115'>115</a>
164
+ <a name='L116'></a><a href='#L116'>116</a>
165
+ <a name='L117'></a><a href='#L117'>117</a>
166
+ <a name='L118'></a><a href='#L118'>118</a>
167
+ <a name='L119'></a><a href='#L119'>119</a>
168
+ <a name='L120'></a><a href='#L120'>120</a>
169
+ <a name='L121'></a><a href='#L121'>121</a>
170
+ <a name='L122'></a><a href='#L122'>122</a>
171
+ <a name='L123'></a><a href='#L123'>123</a>
172
+ <a name='L124'></a><a href='#L124'>124</a>
173
+ <a name='L125'></a><a href='#L125'>125</a>
174
+ <a name='L126'></a><a href='#L126'>126</a>
175
+ <a name='L127'></a><a href='#L127'>127</a>
176
+ <a name='L128'></a><a href='#L128'>128</a>
177
+ <a name='L129'></a><a href='#L129'>129</a>
178
+ <a name='L130'></a><a href='#L130'>130</a>
179
+ <a name='L131'></a><a href='#L131'>131</a>
180
+ <a name='L132'></a><a href='#L132'>132</a>
181
+ <a name='L133'></a><a href='#L133'>133</a>
182
+ <a name='L134'></a><a href='#L134'>134</a>
183
+ <a name='L135'></a><a href='#L135'>135</a>
184
+ <a name='L136'></a><a href='#L136'>136</a>
185
+ <a name='L137'></a><a href='#L137'>137</a>
186
+ <a name='L138'></a><a href='#L138'>138</a>
187
+ <a name='L139'></a><a href='#L139'>139</a>
188
+ <a name='L140'></a><a href='#L140'>140</a>
189
+ <a name='L141'></a><a href='#L141'>141</a>
190
+ <a name='L142'></a><a href='#L142'>142</a>
191
+ <a name='L143'></a><a href='#L143'>143</a>
192
+ <a name='L144'></a><a href='#L144'>144</a>
193
+ <a name='L145'></a><a href='#L145'>145</a>
194
+ <a name='L146'></a><a href='#L146'>146</a>
195
+ <a name='L147'></a><a href='#L147'>147</a>
196
+ <a name='L148'></a><a href='#L148'>148</a>
197
+ <a name='L149'></a><a href='#L149'>149</a>
198
+ <a name='L150'></a><a href='#L150'>150</a>
199
+ <a name='L151'></a><a href='#L151'>151</a>
200
+ <a name='L152'></a><a href='#L152'>152</a>
201
+ <a name='L153'></a><a href='#L153'>153</a>
202
+ <a name='L154'></a><a href='#L154'>154</a>
203
+ <a name='L155'></a><a href='#L155'>155</a>
204
+ <a name='L156'></a><a href='#L156'>156</a>
205
+ <a name='L157'></a><a href='#L157'>157</a>
206
+ <a name='L158'></a><a href='#L158'>158</a>
207
+ <a name='L159'></a><a href='#L159'>159</a>
208
+ <a name='L160'></a><a href='#L160'>160</a>
209
+ <a name='L161'></a><a href='#L161'>161</a>
210
+ <a name='L162'></a><a href='#L162'>162</a>
211
+ <a name='L163'></a><a href='#L163'>163</a>
212
+ <a name='L164'></a><a href='#L164'>164</a>
213
+ <a name='L165'></a><a href='#L165'>165</a>
214
+ <a name='L166'></a><a href='#L166'>166</a>
215
+ <a name='L167'></a><a href='#L167'>167</a>
216
+ <a name='L168'></a><a href='#L168'>168</a>
217
+ <a name='L169'></a><a href='#L169'>169</a>
218
+ <a name='L170'></a><a href='#L170'>170</a>
219
+ <a name='L171'></a><a href='#L171'>171</a>
220
+ <a name='L172'></a><a href='#L172'>172</a>
221
+ <a name='L173'></a><a href='#L173'>173</a>
222
+ <a name='L174'></a><a href='#L174'>174</a>
223
+ <a name='L175'></a><a href='#L175'>175</a>
224
+ <a name='L176'></a><a href='#L176'>176</a>
225
+ <a name='L177'></a><a href='#L177'>177</a>
226
+ <a name='L178'></a><a href='#L178'>178</a>
227
+ <a name='L179'></a><a href='#L179'>179</a>
228
+ <a name='L180'></a><a href='#L180'>180</a>
229
+ <a name='L181'></a><a href='#L181'>181</a>
230
+ <a name='L182'></a><a href='#L182'>182</a>
231
+ <a name='L183'></a><a href='#L183'>183</a>
232
+ <a name='L184'></a><a href='#L184'>184</a>
233
+ <a name='L185'></a><a href='#L185'>185</a>
234
+ <a name='L186'></a><a href='#L186'>186</a>
235
+ <a name='L187'></a><a href='#L187'>187</a>
236
+ <a name='L188'></a><a href='#L188'>188</a>
237
+ <a name='L189'></a><a href='#L189'>189</a>
238
+ <a name='L190'></a><a href='#L190'>190</a>
239
+ <a name='L191'></a><a href='#L191'>191</a>
240
+ <a name='L192'></a><a href='#L192'>192</a>
241
+ <a name='L193'></a><a href='#L193'>193</a>
242
+ <a name='L194'></a><a href='#L194'>194</a>
243
+ <a name='L195'></a><a href='#L195'>195</a>
244
+ <a name='L196'></a><a href='#L196'>196</a>
245
+ <a name='L197'></a><a href='#L197'>197</a>
246
+ <a name='L198'></a><a href='#L198'>198</a>
247
+ <a name='L199'></a><a href='#L199'>199</a>
248
+ <a name='L200'></a><a href='#L200'>200</a>
249
+ <a name='L201'></a><a href='#L201'>201</a>
250
+ <a name='L202'></a><a href='#L202'>202</a>
251
+ <a name='L203'></a><a href='#L203'>203</a>
252
+ <a name='L204'></a><a href='#L204'>204</a>
253
+ <a name='L205'></a><a href='#L205'>205</a>
254
+ <a name='L206'></a><a href='#L206'>206</a>
255
+ <a name='L207'></a><a href='#L207'>207</a>
256
+ <a name='L208'></a><a href='#L208'>208</a>
257
+ <a name='L209'></a><a href='#L209'>209</a>
258
+ <a name='L210'></a><a href='#L210'>210</a>
259
+ <a name='L211'></a><a href='#L211'>211</a>
260
+ <a name='L212'></a><a href='#L212'>212</a>
261
+ <a name='L213'></a><a href='#L213'>213</a>
262
+ <a name='L214'></a><a href='#L214'>214</a>
263
+ <a name='L215'></a><a href='#L215'>215</a>
264
+ <a name='L216'></a><a href='#L216'>216</a>
265
+ <a name='L217'></a><a href='#L217'>217</a>
266
+ <a name='L218'></a><a href='#L218'>218</a>
267
+ <a name='L219'></a><a href='#L219'>219</a>
268
+ <a name='L220'></a><a href='#L220'>220</a>
269
+ <a name='L221'></a><a href='#L221'>221</a>
270
+ <a name='L222'></a><a href='#L222'>222</a>
271
+ <a name='L223'></a><a href='#L223'>223</a>
272
+ <a name='L224'></a><a href='#L224'>224</a>
273
+ <a name='L225'></a><a href='#L225'>225</a>
274
+ <a name='L226'></a><a href='#L226'>226</a>
275
+ <a name='L227'></a><a href='#L227'>227</a>
276
+ <a name='L228'></a><a href='#L228'>228</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-yes">3x</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-neutral">&nbsp;</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <span class="cline-any cline-yes">3x</span>
302
+ <span class="cline-any cline-yes">3x</span>
303
+ <span class="cline-any cline-yes">3x</span>
304
+ <span class="cline-any cline-yes">3x</span>
305
+ <span class="cline-any cline-yes">3x</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-neutral">&nbsp;</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-yes">3x</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-yes">71x</span>
323
+ <span class="cline-any cline-yes">71x</span>
324
+ <span class="cline-any cline-yes">71x</span>
325
+ <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-yes">71x</span>
329
+ <span class="cline-any cline-yes">71x</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-yes">141x</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-yes">1x</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-yes">70x</span>
338
+ <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-yes">71x</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-yes">71x</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-yes">71x</span>
370
+ <span class="cline-any cline-yes">24x</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-yes">6x</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-yes">6x</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-yes">18x</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-yes">18x</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-yes">18x</span>
392
+ <span class="cline-any cline-yes">47x</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-yes">9x</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
+ <span class="cline-any cline-yes">38x</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-yes">18x</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-yes">16x</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-yes">3x</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-yes">2x</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-yes">2x</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-yes">2x</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-yes">9x</span>
440
+ <span class="cline-any cline-yes">24x</span>
441
+ <span class="cline-any cline-neutral">&nbsp;</span>
442
+ <span class="cline-any cline-yes">34x</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-yes">15x</span>
445
+ <span class="cline-any cline-neutral">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-yes">8x</span>
448
+ <span class="cline-any cline-neutral">&nbsp;</span>
449
+ <span class="cline-any cline-yes">2x</span>
450
+ <span class="cline-any cline-neutral">&nbsp;</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-yes">2x</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-yes">2x</span>
455
+ <span class="cline-any cline-yes">2x</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-no">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
+ <span class="cline-any cline-yes">3x</span>
463
+ <span class="cline-any cline-neutral">&nbsp;</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span>
473
+ <span class="cline-any cline-neutral">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-yes">24x</span>
477
+ <span class="cline-any cline-yes">24x</span>
478
+ <span class="cline-any cline-no">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-yes">24x</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-yes">95x</span>
486
+ <span class="cline-any cline-yes">2x</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-yes">93x</span>
493
+ <span class="cline-any cline-neutral">&nbsp;</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-yes">95x</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
504
+ * @license
505
+ * Copyright 2019 Google Inc.
506
+ *
507
+ * Licensed under the Apache License, Version 2.0 (the "License");
508
+ * you may not use this file except in compliance with the License.
509
+ * You may obtain a copy of the License at
510
+ *
511
+ * http://www.apache.org/licenses/LICENSE-2.0
512
+ *
513
+ * Unless required by applicable law or agreed to in writing, software
514
+ * distributed under the License is distributed on an "AS IS" BASIS,
515
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
516
+ * See the License for the specific language governing permissions and
517
+ * limitations under the License.
518
+ */
519
+ &nbsp;
520
+ import { createInstallationRequest } from '../api/create-installation-request';
521
+ import { AppConfig } from '../interfaces/app-config';
522
+ import {
523
+ InProgressInstallationEntry,
524
+ InstallationEntry,
525
+ RegisteredInstallationEntry,
526
+ RequestStatus
527
+ } from '../interfaces/installation-entry';
528
+ import { PENDING_TIMEOUT_MS } from '../util/constants';
529
+ import { ERROR_FACTORY, ErrorCode, isServerError } from '../util/errors';
530
+ import { sleep } from '../util/sleep';
531
+ import { generateFid, INVALID_FID } from './generate-fid';
532
+ import { remove, set, update } from './idb-manager';
533
+ &nbsp;
534
+ export interface InstallationEntryWithRegistrationPromise {
535
+ installationEntry: InstallationEntry;
536
+ /** Exist iff the installationEntry is not registered. */
537
+ registrationPromise?: Promise&lt;RegisteredInstallationEntry&gt;;
538
+ }
539
+ &nbsp;
540
+ /**
541
+ * Updates and returns the InstallationEntry from the database.
542
+ * Also triggers a registration request if it is necessary and possible.
543
+ */
544
+ export async function getInstallationEntry(
545
+ appConfig: AppConfig
546
+ ): Promise&lt;InstallationEntryWithRegistrationPromise&gt; {
547
+ let registrationPromise: Promise&lt;RegisteredInstallationEntry&gt; | undefined;
548
+ &nbsp;
549
+ const installationEntry = await update(appConfig, oldEntry =&gt; {
550
+ const installationEntry = updateOrCreateInstallationEntry(oldEntry);
551
+ const entryWithPromise = triggerRegistrationIfNecessary(
552
+ appConfig,
553
+ installationEntry
554
+ );
555
+ registrationPromise = entryWithPromise.registrationPromise;
556
+ return entryWithPromise.installationEntry;
557
+ });
558
+ &nbsp;
559
+ if (installationEntry.fid === INVALID_FID) {
560
+ // FID generation failed. Waiting for the FID from the server.
561
+ return { installationEntry: await registrationPromise! };
562
+ }
563
+ &nbsp;
564
+ return {
565
+ installationEntry,
566
+ registrationPromise
567
+ };
568
+ }
569
+ &nbsp;
570
+ /**
571
+ * Creates a new Installation Entry if one does not exist.
572
+ * Also clears timed out pending requests.
573
+ */
574
+ function updateOrCreateInstallationEntry(
575
+ oldEntry: InstallationEntry | undefined
576
+ ): InstallationEntry {
577
+ const entry: InstallationEntry = oldEntry || {
578
+ fid: generateFid(),
579
+ registrationStatus: RequestStatus.NOT_STARTED
580
+ };
581
+ &nbsp;
582
+ return clearTimedOutRequest(entry);
583
+ }
584
+ &nbsp;
585
+ /**
586
+ * If the Firebase Installation is not registered yet, this will trigger the
587
+ * registration and return an InProgressInstallationEntry.
588
+ *
589
+ * If registrationPromise does not exist, the installationEntry is guaranteed
590
+ * to be registered.
591
+ */
592
+ function triggerRegistrationIfNecessary(
593
+ appConfig: AppConfig,
594
+ installationEntry: InstallationEntry
595
+ ): InstallationEntryWithRegistrationPromise {
596
+ if (installationEntry.registrationStatus === RequestStatus.NOT_STARTED) {
597
+ if (!navigator.onLine) {
598
+ // Registration required but app is offline.
599
+ const registrationPromiseWithError = Promise.reject(
600
+ ERROR_FACTORY.create(ErrorCode.APP_OFFLINE)
601
+ );
602
+ return {
603
+ installationEntry,
604
+ registrationPromise: registrationPromiseWithError
605
+ };
606
+ }
607
+ &nbsp;
608
+ // Try registering. Change status to IN_PROGRESS.
609
+ const inProgressEntry: InProgressInstallationEntry = {
610
+ fid: installationEntry.fid,
611
+ registrationStatus: RequestStatus.IN_PROGRESS,
612
+ registrationTime: Date.now()
613
+ };
614
+ const registrationPromise = registerInstallation(
615
+ appConfig,
616
+ inProgressEntry
617
+ );
618
+ return { installationEntry: inProgressEntry, registrationPromise };
619
+ } else if (
620
+ installationEntry.registrationStatus === RequestStatus.IN_PROGRESS
621
+ ) {
622
+ return {
623
+ installationEntry,
624
+ registrationPromise: waitUntilFidRegistration(appConfig)
625
+ };
626
+ } else {
627
+ return { installationEntry };
628
+ }
629
+ }
630
+ &nbsp;
631
+ /** This will be executed only once for each new Firebase Installation. */
632
+ async function registerInstallation(
633
+ appConfig: AppConfig,
634
+ installationEntry: InProgressInstallationEntry
635
+ ): Promise&lt;RegisteredInstallationEntry&gt; {
636
+ try {
637
+ const registeredInstallationEntry = await createInstallationRequest(
638
+ appConfig,
639
+ installationEntry
640
+ );
641
+ return set(appConfig, registeredInstallationEntry);
642
+ } catch (e) {
643
+ if (isServerError(e) &amp;&amp; e.serverCode === 409) {
644
+ // Server returned a "FID can not be used" error.
645
+ // Generate a new ID next time.
646
+ await remove(appConfig);
647
+ } else {
648
+ // Registration failed. Set FID as not registered.
649
+ await set(appConfig, {
650
+ fid: installationEntry.fid,
651
+ registrationStatus: RequestStatus.NOT_STARTED
652
+ });
653
+ }
654
+ throw e;
655
+ }
656
+ }
657
+ &nbsp;
658
+ /** Call if FID registration is pending in another request. */
659
+ async function waitUntilFidRegistration(
660
+ appConfig: AppConfig
661
+ ): Promise&lt;RegisteredInstallationEntry&gt; {
662
+ // Unfortunately, there is no way of reliably observing when a value in
663
+ // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),
664
+ // so we need to poll.
665
+ &nbsp;
666
+ let entry: InstallationEntry = await updateInstallationRequest(appConfig);
667
+ while (entry.registrationStatus === RequestStatus.IN_PROGRESS) {
668
+ // createInstallation request still in progress.
669
+ await sleep(100);
670
+ &nbsp;
671
+ entry = await updateInstallationRequest(appConfig);
672
+ }
673
+ &nbsp;
674
+ if (entry.registrationStatus === RequestStatus.NOT_STARTED) {
675
+ // The request timed out or failed in a different call. Try again.
676
+ const {
677
+ installationEntry,
678
+ registrationPromise
679
+ } = await getInstallationEntry(appConfig);
680
+ &nbsp;
681
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (registrationPromise) {
682
+ return registrationPromise;
683
+ } else {
684
+ // if there is no registrationPromise, entry is registered.
685
+ <span class="cstat-no" title="statement not covered" > return installationEntry as RegisteredInstallationEntry;</span>
686
+ }
687
+ }
688
+ &nbsp;
689
+ return entry;
690
+ }
691
+ &nbsp;
692
+ /**
693
+ * Called only if there is a CreateInstallation request in progress.
694
+ *
695
+ * Updates the InstallationEntry in the DB based on the status of the
696
+ * CreateInstallation request.
697
+ *
698
+ * Returns the updated InstallationEntry.
699
+ */
700
+ function updateInstallationRequest(
701
+ appConfig: AppConfig
702
+ ): Promise&lt;InstallationEntry&gt; {
703
+ return update(appConfig, oldEntry =&gt; {
704
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!oldEntry) {
705
+ <span class="cstat-no" title="statement not covered" > throw ERROR_FACTORY.create(ErrorCode.INSTALLATION_NOT_FOUND);</span>
706
+ }
707
+ return clearTimedOutRequest(oldEntry);
708
+ });
709
+ }
710
+ &nbsp;
711
+ function clearTimedOutRequest(entry: InstallationEntry): InstallationEntry {
712
+ if (hasInstallationRequestTimedOut(entry)) {
713
+ return {
714
+ fid: entry.fid,
715
+ registrationStatus: RequestStatus.NOT_STARTED
716
+ };
717
+ }
718
+ &nbsp;
719
+ return entry;
720
+ }
721
+ &nbsp;
722
+ function hasInstallationRequestTimedOut(
723
+ installationEntry: InstallationEntry
724
+ ): boolean {
725
+ return (
726
+ installationEntry.registrationStatus === RequestStatus.IN_PROGRESS &amp;&amp;
727
+ installationEntry.registrationTime + PENDING_TIMEOUT_MS &lt; Date.now()
728
+ );
729
+ }
730
+ &nbsp;</pre></td></tr>
731
+ </table></pre>
732
+ <div class='push'></div><!-- for sticky footer -->
733
+ </div><!-- /wrapper -->
734
+ <div class='footer quiet pad2 space-top1 center small'>
735
+ Code coverage
736
+ generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Thu Apr 02 2020 14:32:08 GMT-0700 (Pacific Daylight Time)
737
+ </div>
738
+ </div>
739
+ <script src="../prettify.js"></script>
740
+ <script>
741
+ window.onload = function () {
742
+ if (typeof prettyPrint === 'function') {
743
+ prettyPrint();
744
+ }
745
+ };
746
+ </script>
747
+ <script src="../sorter.js"></script>
748
+ <script src="../block-navigation.js"></script>
749
+ </body>
750
+ </html>