@firebase/installations 0.4.7-canary.fc3d5396 → 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.
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/common.ts.html +402 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/create-installation-request.ts.html +270 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/delete-installation-request.ts.html +219 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/generate-auth-token-request.ts.html +306 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/api/index.html +136 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/base.css +224 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/block-navigation.js +79 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/delete-installation.ts.html +219 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/get-id.ts.html +183 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/get-token.ts.html +201 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/index.html +136 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/functions/on-id-change.ts.html +180 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/buffer-to-base64-url-safe.ts.html +132 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/extract-app-config.ts.html +240 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/fid-changed.ts.html +399 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/generate-fid.ts.html +234 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/get-installation-entry.ts.html +750 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/idb-manager.ts.html +438 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/index.html +175 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/helpers/refresh-auth-token.ts.html +696 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/index.html +136 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/lcov.info +825 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/prettify.css +1 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/prettify.js +2 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/sort-arrow-sprite.png +0 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/sorter.js +170 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/constants.ts.html +162 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/errors.ts.html +285 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/get-key.ts.html +138 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/index.html +136 -0
- package/coverage/browser/HeadlessChrome 80.0.3987 (Linux 0.0.0)/util/sleep.ts.html +138 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm2017.js +1 -1
- package/karma.conf.js +2 -1
- 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"> </span>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
285
|
+
<span class="cline-any cline-neutral"> </span>
|
|
286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
293
|
+
<span class="cline-any cline-yes">3x</span>
|
|
294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
296
|
+
<span class="cline-any cline-neutral"> </span>
|
|
297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
298
|
+
<span class="cline-any cline-neutral"> </span>
|
|
299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
300
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
317
|
+
<span class="cline-any cline-yes">3x</span>
|
|
318
|
+
<span class="cline-any cline-neutral"> </span>
|
|
319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
321
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
327
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
332
|
+
<span class="cline-any cline-yes">141x</span>
|
|
333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
334
|
+
<span class="cline-any cline-yes">1x</span>
|
|
335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
337
|
+
<span class="cline-any cline-yes">70x</span>
|
|
338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
340
|
+
<span class="cline-any cline-neutral"> </span>
|
|
341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
342
|
+
<span class="cline-any cline-neutral"> </span>
|
|
343
|
+
<span class="cline-any cline-neutral"> </span>
|
|
344
|
+
<span class="cline-any cline-neutral"> </span>
|
|
345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
350
|
+
<span class="cline-any cline-yes">71x</span>
|
|
351
|
+
<span class="cline-any cline-neutral"> </span>
|
|
352
|
+
<span class="cline-any cline-neutral"> </span>
|
|
353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
355
|
+
<span class="cline-any cline-yes">71x</span>
|
|
356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
365
|
+
<span class="cline-any cline-neutral"> </span>
|
|
366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
368
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
372
|
+
<span class="cline-any cline-yes">6x</span>
|
|
373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
375
|
+
<span class="cline-any cline-yes">6x</span>
|
|
376
|
+
<span class="cline-any cline-neutral"> </span>
|
|
377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
382
|
+
<span class="cline-any cline-yes">18x</span>
|
|
383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
386
|
+
<span class="cline-any cline-neutral"> </span>
|
|
387
|
+
<span class="cline-any cline-yes">18x</span>
|
|
388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
390
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
395
|
+
<span class="cline-any cline-yes">9x</span>
|
|
396
|
+
<span class="cline-any cline-neutral"> </span>
|
|
397
|
+
<span class="cline-any cline-neutral"> </span>
|
|
398
|
+
<span class="cline-any cline-neutral"> </span>
|
|
399
|
+
<span class="cline-any cline-neutral"> </span>
|
|
400
|
+
<span class="cline-any cline-yes">38x</span>
|
|
401
|
+
<span class="cline-any cline-neutral"> </span>
|
|
402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
403
|
+
<span class="cline-any cline-neutral"> </span>
|
|
404
|
+
<span class="cline-any cline-neutral"> </span>
|
|
405
|
+
<span class="cline-any cline-neutral"> </span>
|
|
406
|
+
<span class="cline-any cline-neutral"> </span>
|
|
407
|
+
<span class="cline-any cline-neutral"> </span>
|
|
408
|
+
<span class="cline-any cline-neutral"> </span>
|
|
409
|
+
<span class="cline-any cline-neutral"> </span>
|
|
410
|
+
<span class="cline-any cline-yes">18x</span>
|
|
411
|
+
<span class="cline-any cline-neutral"> </span>
|
|
412
|
+
<span class="cline-any cline-neutral"> </span>
|
|
413
|
+
<span class="cline-any cline-neutral"> </span>
|
|
414
|
+
<span class="cline-any cline-yes">16x</span>
|
|
415
|
+
<span class="cline-any cline-neutral"> </span>
|
|
416
|
+
<span class="cline-any cline-yes">3x</span>
|
|
417
|
+
<span class="cline-any cline-neutral"> </span>
|
|
418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-yes">2x</span>
|
|
420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
421
|
+
<span class="cline-any cline-neutral"> </span>
|
|
422
|
+
<span class="cline-any cline-yes">2x</span>
|
|
423
|
+
<span class="cline-any cline-neutral"> </span>
|
|
424
|
+
<span class="cline-any cline-neutral"> </span>
|
|
425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
427
|
+
<span class="cline-any cline-yes">2x</span>
|
|
428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
429
|
+
<span class="cline-any cline-neutral"> </span>
|
|
430
|
+
<span class="cline-any cline-neutral"> </span>
|
|
431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
432
|
+
<span class="cline-any cline-neutral"> </span>
|
|
433
|
+
<span class="cline-any cline-neutral"> </span>
|
|
434
|
+
<span class="cline-any cline-neutral"> </span>
|
|
435
|
+
<span class="cline-any cline-neutral"> </span>
|
|
436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
438
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
442
|
+
<span class="cline-any cline-yes">34x</span>
|
|
443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-yes">15x</span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
447
|
+
<span class="cline-any cline-yes">8x</span>
|
|
448
|
+
<span class="cline-any cline-neutral"> </span>
|
|
449
|
+
<span class="cline-any cline-yes">2x</span>
|
|
450
|
+
<span class="cline-any cline-neutral"> </span>
|
|
451
|
+
<span class="cline-any cline-neutral"> </span>
|
|
452
|
+
<span class="cline-any cline-yes">2x</span>
|
|
453
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
457
|
+
<span class="cline-any cline-neutral"> </span>
|
|
458
|
+
<span class="cline-any cline-no"> </span>
|
|
459
|
+
<span class="cline-any cline-neutral"> </span>
|
|
460
|
+
<span class="cline-any cline-neutral"> </span>
|
|
461
|
+
<span class="cline-any cline-neutral"> </span>
|
|
462
|
+
<span class="cline-any cline-yes">3x</span>
|
|
463
|
+
<span class="cline-any cline-neutral"> </span>
|
|
464
|
+
<span class="cline-any cline-neutral"> </span>
|
|
465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
467
|
+
<span class="cline-any cline-neutral"> </span>
|
|
468
|
+
<span class="cline-any cline-neutral"> </span>
|
|
469
|
+
<span class="cline-any cline-neutral"> </span>
|
|
470
|
+
<span class="cline-any cline-neutral"> </span>
|
|
471
|
+
<span class="cline-any cline-neutral"> </span>
|
|
472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
473
|
+
<span class="cline-any cline-neutral"> </span>
|
|
474
|
+
<span class="cline-any cline-neutral"> </span>
|
|
475
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
479
|
+
<span class="cline-any cline-neutral"> </span>
|
|
480
|
+
<span class="cline-any cline-yes">24x</span>
|
|
481
|
+
<span class="cline-any cline-neutral"> </span>
|
|
482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
483
|
+
<span class="cline-any cline-neutral"> </span>
|
|
484
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
488
|
+
<span class="cline-any cline-neutral"> </span>
|
|
489
|
+
<span class="cline-any cline-neutral"> </span>
|
|
490
|
+
<span class="cline-any cline-neutral"> </span>
|
|
491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
492
|
+
<span class="cline-any cline-yes">93x</span>
|
|
493
|
+
<span class="cline-any cline-neutral"> </span>
|
|
494
|
+
<span class="cline-any cline-neutral"> </span>
|
|
495
|
+
<span class="cline-any cline-neutral"> </span>
|
|
496
|
+
<span class="cline-any cline-neutral"> </span>
|
|
497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
498
|
+
<span class="cline-any cline-yes">95x</span>
|
|
499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
503
|
+
<span class="cline-any cline-neutral"> </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
|
+
|
|
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
|
+
|
|
534
|
+
export interface InstallationEntryWithRegistrationPromise {
|
|
535
|
+
installationEntry: InstallationEntry;
|
|
536
|
+
/** Exist iff the installationEntry is not registered. */
|
|
537
|
+
registrationPromise?: Promise<RegisteredInstallationEntry>;
|
|
538
|
+
}
|
|
539
|
+
|
|
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<InstallationEntryWithRegistrationPromise> {
|
|
547
|
+
let registrationPromise: Promise<RegisteredInstallationEntry> | undefined;
|
|
548
|
+
|
|
549
|
+
const installationEntry = await update(appConfig, oldEntry => {
|
|
550
|
+
const installationEntry = updateOrCreateInstallationEntry(oldEntry);
|
|
551
|
+
const entryWithPromise = triggerRegistrationIfNecessary(
|
|
552
|
+
appConfig,
|
|
553
|
+
installationEntry
|
|
554
|
+
);
|
|
555
|
+
registrationPromise = entryWithPromise.registrationPromise;
|
|
556
|
+
return entryWithPromise.installationEntry;
|
|
557
|
+
});
|
|
558
|
+
|
|
559
|
+
if (installationEntry.fid === INVALID_FID) {
|
|
560
|
+
// FID generation failed. Waiting for the FID from the server.
|
|
561
|
+
return { installationEntry: await registrationPromise! };
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
return {
|
|
565
|
+
installationEntry,
|
|
566
|
+
registrationPromise
|
|
567
|
+
};
|
|
568
|
+
}
|
|
569
|
+
|
|
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
|
+
|
|
582
|
+
return clearTimedOutRequest(entry);
|
|
583
|
+
}
|
|
584
|
+
|
|
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
|
+
|
|
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
|
+
|
|
631
|
+
/** This will be executed only once for each new Firebase Installation. */
|
|
632
|
+
async function registerInstallation(
|
|
633
|
+
appConfig: AppConfig,
|
|
634
|
+
installationEntry: InProgressInstallationEntry
|
|
635
|
+
): Promise<RegisteredInstallationEntry> {
|
|
636
|
+
try {
|
|
637
|
+
const registeredInstallationEntry = await createInstallationRequest(
|
|
638
|
+
appConfig,
|
|
639
|
+
installationEntry
|
|
640
|
+
);
|
|
641
|
+
return set(appConfig, registeredInstallationEntry);
|
|
642
|
+
} catch (e) {
|
|
643
|
+
if (isServerError(e) && 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
|
+
|
|
658
|
+
/** Call if FID registration is pending in another request. */
|
|
659
|
+
async function waitUntilFidRegistration(
|
|
660
|
+
appConfig: AppConfig
|
|
661
|
+
): Promise<RegisteredInstallationEntry> {
|
|
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
|
+
|
|
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
|
+
|
|
671
|
+
entry = await updateInstallationRequest(appConfig);
|
|
672
|
+
}
|
|
673
|
+
|
|
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
|
+
|
|
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
|
+
|
|
689
|
+
return entry;
|
|
690
|
+
}
|
|
691
|
+
|
|
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<InstallationEntry> {
|
|
703
|
+
return update(appConfig, oldEntry => {
|
|
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
|
+
|
|
711
|
+
function clearTimedOutRequest(entry: InstallationEntry): InstallationEntry {
|
|
712
|
+
if (hasInstallationRequestTimedOut(entry)) {
|
|
713
|
+
return {
|
|
714
|
+
fid: entry.fid,
|
|
715
|
+
registrationStatus: RequestStatus.NOT_STARTED
|
|
716
|
+
};
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
return entry;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
function hasInstallationRequestTimedOut(
|
|
723
|
+
installationEntry: InstallationEntry
|
|
724
|
+
): boolean {
|
|
725
|
+
return (
|
|
726
|
+
installationEntry.registrationStatus === RequestStatus.IN_PROGRESS &&
|
|
727
|
+
installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now()
|
|
728
|
+
);
|
|
729
|
+
}
|
|
730
|
+
</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>
|