@openreplay/tracker 7.0.3 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/cjs/app/index.d.ts +10 -0
- package/cjs/app/index.js +56 -5
- package/cjs/app/messages.gen.d.ts +2 -0
- package/cjs/app/messages.gen.js +15 -1
- package/cjs/app/observer/observer.js +2 -2
- package/cjs/app/sanitizer.d.ts +1 -0
- package/cjs/app/sanitizer.js +6 -4
- package/cjs/app/session.d.ts +4 -0
- package/cjs/app/session.js +18 -0
- package/cjs/common/interaction.d.ts +1 -0
- package/cjs/common/messages.gen.d.ts +12 -2
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +9 -1
- package/cjs/modules/attributeSender.d.ts +14 -0
- package/cjs/modules/attributeSender.js +44 -0
- package/cjs/modules/img.js +4 -4
- package/cjs/modules/tabs.d.ts +2 -0
- package/cjs/modules/tabs.js +13 -0
- package/cjs/utils.d.ts +1 -1
- package/cjs/utils.js +13 -11
- package/coverage/clover.xml +683 -620
- package/coverage/coverage-final.json +13 -12
- package/coverage/lcov-report/index.html +47 -47
- package/coverage/lcov-report/main/app/guards.ts.html +42 -42
- package/coverage/lcov-report/main/app/index.html +34 -34
- package/coverage/lcov-report/main/app/index.ts.html +62 -8
- package/coverage/lcov-report/main/app/logger.ts.html +1 -1
- package/coverage/lcov-report/main/app/messages.gen.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/index.html +1 -1
- package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/sanitizer.ts.html +98 -98
- package/coverage/lcov-report/main/app/session.ts.html +1 -1
- package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
- package/coverage/lcov-report/main/index.html +24 -24
- package/coverage/lcov-report/main/index.ts.html +126 -6
- package/coverage/lcov-report/main/modules/attributeSender.ts.html +217 -0
- package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
- package/coverage/lcov-report/main/modules/console.ts.html +1 -1
- package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +1 -1
- package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
- package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
- package/coverage/lcov-report/main/{app/nodes.ts.html → modules/featureFlags.ts.html} +124 -127
- package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
- package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
- package/coverage/lcov-report/main/modules/img.ts.html +6 -6
- package/coverage/lcov-report/main/modules/index.html +38 -8
- package/coverage/lcov-report/main/modules/input.ts.html +1 -1
- package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
- package/coverage/lcov-report/main/modules/network.ts.html +1 -1
- package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
- package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
- package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
- package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
- package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
- package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
- package/coverage/lcov-report/main/utils.ts.html +112 -112
- package/coverage/lcov-report/webworker/BatchWriter.ts.html +125 -176
- package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +88 -88
- package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +110 -110
- package/coverage/lcov-report/webworker/QueueSender.ts.html +140 -110
- package/coverage/lcov-report/webworker/index.html +56 -71
- package/coverage/lcov-report/webworker/index.ts.html +34 -10
- package/coverage/lcov.info +1232 -1092
- package/lib/app/index.d.ts +10 -0
- package/lib/app/index.js +57 -6
- package/lib/app/messages.gen.d.ts +2 -0
- package/lib/app/messages.gen.js +12 -0
- package/lib/app/observer/observer.js +3 -3
- package/lib/app/sanitizer.d.ts +1 -0
- package/lib/app/sanitizer.js +4 -3
- package/lib/app/session.d.ts +4 -0
- package/lib/app/session.js +18 -0
- package/lib/common/interaction.d.ts +1 -0
- package/lib/common/messages.gen.d.ts +12 -2
- package/lib/common/tsconfig.tsbuildinfo +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +9 -1
- package/lib/modules/attributeSender.d.ts +14 -0
- package/lib/modules/attributeSender.js +39 -0
- package/lib/modules/img.js +5 -5
- package/lib/modules/tabs.d.ts +2 -0
- package/lib/modules/tabs.js +10 -0
- package/lib/utils.d.ts +1 -1
- package/lib/utils.js +11 -9
- package/package.json +5 -2
- package/coverage/lcov-report/main/app/observer/observer.ts.html +0 -1282
- package/coverage/lcov-report/main/vendors/finder/finder.ts.html +0 -1381
- package/coverage/lcov-report/main/vendors/finder/index.html +0 -116
- package/coverage/lcov-report/webworker/StringDictionary.ts.html +0 -124
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for main/
|
|
6
|
+
<title>Code coverage report for main/modules/featureFlags.ts</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
8
|
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
9
|
<link rel="stylesheet" href="../../base.css" />
|
|
@@ -19,34 +19,34 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../index.html">All files</a> / <a href="index.html">main/
|
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">main/modules</a> featureFlags.ts</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">34.37% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>11/32</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/11</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">41.66% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>5/12</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">29.62% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>8/27</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -156,62 +156,41 @@
|
|
|
156
156
|
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
157
|
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
161
160
|
<span class="cline-any cline-neutral"> </span>
|
|
162
161
|
<span class="cline-any cline-neutral"> </span>
|
|
163
|
-
<span class="cline-any cline-no"> </span>
|
|
164
|
-
<span class="cline-any cline-no"> </span>
|
|
165
|
-
<span class="cline-any cline-no"> </span>
|
|
166
|
-
<span class="cline-any cline-no"> </span>
|
|
167
|
-
<span class="cline-any cline-no"> </span>
|
|
168
162
|
<span class="cline-any cline-neutral"> </span>
|
|
169
|
-
<span class="cline-any cline-no"> </span>
|
|
170
163
|
<span class="cline-any cline-neutral"> </span>
|
|
171
164
|
<span class="cline-any cline-neutral"> </span>
|
|
172
165
|
<span class="cline-any cline-neutral"> </span>
|
|
173
|
-
<span class="cline-any cline-no"> </span>
|
|
174
166
|
<span class="cline-any cline-neutral"> </span>
|
|
175
167
|
<span class="cline-any cline-neutral"> </span>
|
|
176
|
-
<span class="cline-any cline-no"> </span>
|
|
177
|
-
<span class="cline-any cline-no"> </span>
|
|
178
|
-
<span class="cline-any cline-no"> </span>
|
|
179
168
|
<span class="cline-any cline-neutral"> </span>
|
|
180
|
-
<span class="cline-any cline-no"> </span>
|
|
181
|
-
<span class="cline-any cline-no"> </span>
|
|
182
|
-
<span class="cline-any cline-no"> </span>
|
|
183
|
-
<span class="cline-any cline-no"> </span>
|
|
184
|
-
<span class="cline-any cline-no"> </span>
|
|
185
169
|
<span class="cline-any cline-neutral"> </span>
|
|
186
|
-
<span class="cline-any cline-no"> </span>
|
|
187
170
|
<span class="cline-any cline-neutral"> </span>
|
|
188
171
|
<span class="cline-any cline-neutral"> </span>
|
|
189
172
|
<span class="cline-any cline-neutral"> </span>
|
|
190
|
-
<span class="cline-any cline-
|
|
191
|
-
<span class="cline-any cline-no"> </span>
|
|
192
|
-
<span class="cline-any cline-no"> </span>
|
|
193
|
-
<span class="cline-any cline-no"> </span>
|
|
194
|
-
<span class="cline-any cline-no"> </span>
|
|
195
|
-
<span class="cline-any cline-no"> </span>
|
|
196
|
-
<span class="cline-any cline-no"> </span>
|
|
173
|
+
<span class="cline-any cline-yes">1x</span>
|
|
197
174
|
<span class="cline-any cline-neutral"> </span>
|
|
198
|
-
<span class="cline-any cline-
|
|
175
|
+
<span class="cline-any cline-yes">1x</span>
|
|
176
|
+
<span class="cline-any cline-neutral"> </span>
|
|
177
|
+
<span class="cline-any cline-neutral"> </span>
|
|
178
|
+
<span class="cline-any cline-yes">1x</span>
|
|
199
179
|
<span class="cline-any cline-neutral"> </span>
|
|
200
180
|
<span class="cline-any cline-neutral"> </span>
|
|
201
181
|
<span class="cline-any cline-no"> </span>
|
|
182
|
+
<span class="cline-any cline-neutral"> </span>
|
|
183
|
+
<span class="cline-any cline-neutral"> </span>
|
|
184
|
+
<span class="cline-any cline-neutral"> </span>
|
|
202
185
|
<span class="cline-any cline-no"> </span>
|
|
203
|
-
<span class="cline-any cline-
|
|
204
|
-
<span class="cline-any cline-
|
|
205
|
-
<span class="cline-any cline-
|
|
206
|
-
<span class="cline-any cline-no"> </span>
|
|
207
|
-
<span class="cline-any cline-no"> </span>
|
|
186
|
+
<span class="cline-any cline-neutral"> </span>
|
|
187
|
+
<span class="cline-any cline-neutral"> </span>
|
|
188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
208
189
|
<span class="cline-any cline-no"> </span>
|
|
209
190
|
<span class="cline-any cline-no"> </span>
|
|
210
191
|
<span class="cline-any cline-neutral"> </span>
|
|
211
192
|
<span class="cline-any cline-neutral"> </span>
|
|
212
|
-
<span class="cline-any cline-no"> </span>
|
|
213
193
|
<span class="cline-any cline-neutral"> </span>
|
|
214
|
-
<span class="cline-any cline-no"> </span>
|
|
215
194
|
<span class="cline-any cline-neutral"> </span>
|
|
216
195
|
<span class="cline-any cline-neutral"> </span>
|
|
217
196
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -219,130 +198,148 @@
|
|
|
219
198
|
<span class="cline-any cline-neutral"> </span>
|
|
220
199
|
<span class="cline-any cline-neutral"> </span>
|
|
221
200
|
<span class="cline-any cline-neutral"> </span>
|
|
222
|
-
<span class="cline-any cline-no"> </span>
|
|
223
|
-
<span class="cline-any cline-no"> </span>
|
|
224
|
-
<span class="cline-any cline-no"> </span>
|
|
225
|
-
<span class="cline-any cline-no"> </span>
|
|
226
201
|
<span class="cline-any cline-neutral"> </span>
|
|
227
202
|
<span class="cline-any cline-neutral"> </span>
|
|
228
203
|
<span class="cline-any cline-neutral"> </span>
|
|
229
204
|
<span class="cline-any cline-neutral"> </span>
|
|
230
|
-
<span class="cline-any cline-no"> </span>
|
|
231
205
|
<span class="cline-any cline-neutral"> </span>
|
|
232
206
|
<span class="cline-any cline-neutral"> </span>
|
|
233
|
-
<span class="cline-any cline-
|
|
207
|
+
<span class="cline-any cline-neutral"> </span>
|
|
234
208
|
<span class="cline-any cline-neutral"> </span>
|
|
235
209
|
<span class="cline-any cline-neutral"> </span>
|
|
236
210
|
<span class="cline-any cline-no"> </span>
|
|
237
211
|
<span class="cline-any cline-neutral"> </span>
|
|
238
212
|
<span class="cline-any cline-neutral"> </span>
|
|
239
213
|
<span class="cline-any cline-neutral"> </span>
|
|
214
|
+
<span class="cline-any cline-neutral"> </span>
|
|
215
|
+
<span class="cline-any cline-neutral"> </span>
|
|
216
|
+
<span class="cline-any cline-neutral"> </span>
|
|
217
|
+
<span class="cline-any cline-neutral"> </span>
|
|
240
218
|
<span class="cline-any cline-no"> </span>
|
|
219
|
+
<span class="cline-any cline-no"> </span>
|
|
220
|
+
<span class="cline-any cline-no"> </span>
|
|
221
|
+
<span class="cline-any cline-neutral"> </span>
|
|
241
222
|
<span class="cline-any cline-neutral"> </span>
|
|
242
223
|
<span class="cline-any cline-neutral"> </span>
|
|
243
224
|
<span class="cline-any cline-neutral"> </span>
|
|
244
225
|
<span class="cline-any cline-no"> </span>
|
|
245
226
|
<span class="cline-any cline-no"> </span>
|
|
246
227
|
<span class="cline-any cline-no"> </span>
|
|
228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
229
|
+
<span class="cline-any cline-no"> </span>
|
|
230
|
+
<span class="cline-any cline-no"> </span>
|
|
231
|
+
<span class="cline-any cline-no"> </span>
|
|
247
232
|
<span class="cline-any cline-no"> </span>
|
|
248
233
|
<span class="cline-any cline-neutral"> </span>
|
|
234
|
+
<span class="cline-any cline-neutral"> </span>
|
|
235
|
+
<span class="cline-any cline-no"> </span>
|
|
236
|
+
<span class="cline-any cline-no"> </span>
|
|
249
237
|
<span class="cline-any cline-no"> </span>
|
|
250
238
|
<span class="cline-any cline-neutral"> </span>
|
|
239
|
+
<span class="cline-any cline-neutral"> </span>
|
|
240
|
+
<span class="cline-any cline-neutral"> </span>
|
|
251
241
|
<span class="cline-any cline-no"> </span>
|
|
252
242
|
<span class="cline-any cline-neutral"> </span>
|
|
253
243
|
<span class="cline-any cline-neutral"> </span>
|
|
254
|
-
<span class="cline-any cline-neutral"> </span
|
|
255
|
-
|
|
244
|
+
<span class="cline-any cline-neutral"> </span>
|
|
245
|
+
<span class="cline-any cline-yes">1x</span>
|
|
246
|
+
<span class="cline-any cline-yes">1x</span>
|
|
247
|
+
<span class="cline-any cline-yes">1x</span>
|
|
248
|
+
<span class="cline-any cline-yes">2x</span>
|
|
249
|
+
<span class="cline-any cline-yes">5x</span>
|
|
250
|
+
<span class="cline-any cline-neutral"> </span>
|
|
251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
252
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import App from '../app/index.js'
|
|
256
253
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
254
|
+
export interface IFeatureFlag {
|
|
255
|
+
key: string
|
|
256
|
+
is_persist: boolean
|
|
257
|
+
value: string | boolean
|
|
258
|
+
payload: string
|
|
259
|
+
}
|
|
262
260
|
|
|
263
|
-
|
|
261
|
+
export interface PersistFlagsData {
|
|
262
|
+
key: string
|
|
263
|
+
value: string | boolean
|
|
264
|
+
}
|
|
264
265
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
<span class="
|
|
273
|
-
|
|
274
|
-
<span class="cstat-no" title="statement not covered" > node.addEventListener(type, listener, useCapture)</span>
|
|
275
|
-
let listeners = <span class="cstat-no" title="statement not covered" >this.elementListeners.get(id)</span>
|
|
276
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (listeners === undefined) {</span>
|
|
277
|
-
<span class="cstat-no" title="statement not covered" > listeners = []</span>
|
|
278
|
-
<span class="cstat-no" title="statement not covered" > this.elementListeners.set(id, listeners)</span>
|
|
279
|
-
}
|
|
280
|
-
<span class="cstat-no" title="statement not covered" > listeners.push([type, listener, useCapture])</span>
|
|
266
|
+
export default class FeatureFlags {
|
|
267
|
+
flags: Record<string, any>
|
|
268
|
+
storageKey = '__openreplay_flags'
|
|
269
|
+
onFlagsCb: (flags: Record<string, any>) => void
|
|
270
|
+
|
|
271
|
+
constructor(private readonly app: App) {}
|
|
272
|
+
|
|
273
|
+
<span class="fstat-no" title="function not covered" > isFlagEnabled(</span>flagName: string): boolean {
|
|
274
|
+
<span class="cstat-no" title="statement not covered" > return this.flags[flagName] && this.flags[flagName].enabled</span>
|
|
281
275
|
}
|
|
282
276
|
|
|
283
|
-
<span class="fstat-no" title="function not covered" >
|
|
284
|
-
|
|
285
|
-
const isNew = <span class="cstat-no" title="statement not covered" >id === undefined</span>
|
|
286
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isNew) {</span>
|
|
287
|
-
<span class="cstat-no" title="statement not covered" > this.totalNodeAmount++</span>
|
|
288
|
-
<span class="cstat-no" title="statement not covered" > id = this.nodes.length</span>
|
|
289
|
-
<span class="cstat-no" title="statement not covered" > this.nodes[id] = node</span>
|
|
290
|
-
;(<span class="cstat-no" title="statement not covered" >node as any)[this.node_id] = id</span>
|
|
291
|
-
}
|
|
292
|
-
<span class="cstat-no" title="statement not covered" > return [id, isNew]</span>
|
|
277
|
+
<span class="fstat-no" title="function not covered" > onFlagsLoad(</span>cb: (flags: IFeatureFlag[]) => void) {
|
|
278
|
+
<span class="cstat-no" title="statement not covered" > return (this.onFlagsCb = cb)</span>
|
|
293
279
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
<span class="cstat-no" title="statement not covered" >
|
|
297
|
-
<span class="cstat-no" title="statement not covered" >
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
280
|
+
|
|
281
|
+
async <span class="fstat-no" title="function not covered" >reloadFlags(</span>) {
|
|
282
|
+
const sessionInfo = <span class="cstat-no" title="statement not covered" >this.app.session.getInfo()</span>
|
|
283
|
+
const requestObject = <span class="cstat-no" title="statement not covered" >{</span>
|
|
284
|
+
projectID: sessionInfo.projectID,
|
|
285
|
+
userID: sessionInfo.userID,
|
|
286
|
+
metadata: sessionInfo.metadata,
|
|
287
|
+
referrer: document.referrer,
|
|
288
|
+
featureFlags: this.flags,
|
|
289
|
+
// todo: get from backend
|
|
290
|
+
os: 'test',
|
|
291
|
+
osVersion: 'test',
|
|
292
|
+
device: 'test',
|
|
293
|
+
country: 'test',
|
|
294
|
+
state: 'test',
|
|
295
|
+
city: 'test',
|
|
296
|
+
ua: 'test',
|
|
297
|
+
browser: 'test',
|
|
298
|
+
browserVersion: 'test',
|
|
299
|
+
deviceType: 'test',
|
|
300
|
+
persistFlags: this.app.localStorage.getItem(this.storageKey) || [],
|
|
307
301
|
}
|
|
308
|
-
<span class="cstat-no" title="statement not covered" > return id</span>
|
|
309
|
-
}
|
|
310
302
|
|
|
311
|
-
<span class="
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
<span class="cstat-no" title="statement not covered" >
|
|
320
|
-
}
|
|
303
|
+
const resp = <span class="cstat-no" title="statement not covered" >await fetch(this.app.options.ingestPoint + '/v1/web/feature-flags', {</span>
|
|
304
|
+
method: 'POST',
|
|
305
|
+
headers: {
|
|
306
|
+
'Content-Type': 'application/json',
|
|
307
|
+
Authorization: `Bearer ${this.app.session.getSessionToken() as string}`,
|
|
308
|
+
},
|
|
309
|
+
body: JSON.stringify(requestObject),
|
|
310
|
+
})
|
|
311
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (resp.status === 200) {</span>
|
|
312
|
+
const data: { flags: IFeatureFlag[] } = <span class="cstat-no" title="statement not covered" >await resp.json()</span>
|
|
313
|
+
<span class="cstat-no" title="statement not covered" > return this.handleFlags(data.flags)</span>
|
|
321
314
|
}
|
|
322
315
|
}
|
|
323
|
-
|
|
324
|
-
<span class="
|
|
325
|
-
|
|
326
|
-
<span class="fstat-no" title="function not covered" >
|
|
327
|
-
<span class="cstat-no" title="statement not covered" >
|
|
328
|
-
|
|
329
|
-
<span class="
|
|
330
|
-
<span class="cstat-no" title="statement not covered" >
|
|
316
|
+
|
|
317
|
+
<span class="fstat-no" title="function not covered" > handleFlags(</span>flags: IFeatureFlag[]) {
|
|
318
|
+
const persistFlags: PersistFlagsData[] = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
319
|
+
<span class="cstat-no" title="statement not covered" > Object.values(flags).forEach(<span class="fstat-no" title="function not covered" >(f</span>lag) => {</span>
|
|
320
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (flag.is_persist) <span class="cstat-no" title="statement not covered" >persistFlags.push({ key: flag.key, value: flag.value })</span></span>
|
|
321
|
+
})
|
|
322
|
+
let str = <span class="cstat-no" title="statement not covered" >''</span>
|
|
323
|
+
const uniqueFlags = <span class="cstat-no" title="statement not covered" >this.diffPersist(persistFlags)</span>
|
|
324
|
+
<span class="cstat-no" title="statement not covered" > uniqueFlags.forEach(<span class="fstat-no" title="function not covered" >(f</span>lag) => {</span>
|
|
325
|
+
<span class="cstat-no" title="statement not covered" > str += `${JSON.stringify(flag)};`</span>
|
|
326
|
+
})
|
|
327
|
+
|
|
328
|
+
<span class="cstat-no" title="statement not covered" > this.app.localStorage.setItem(this.storageKey, str)</span>
|
|
329
|
+
<span class="cstat-no" title="statement not covered" > this.flags = flags</span>
|
|
330
|
+
<span class="cstat-no" title="statement not covered" > return this.onFlagsCb?.(flags)</span>
|
|
331
331
|
}
|
|
332
332
|
|
|
333
|
-
<span class="fstat-no" title="function not covered" >
|
|
334
|
-
<span class="cstat-no" title="statement not covered" >
|
|
333
|
+
<span class="fstat-no" title="function not covered" > clearPersistFlags(</span>) {
|
|
334
|
+
<span class="cstat-no" title="statement not covered" > this.app.localStorage.removeItem(this.storageKey)</span>
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
<span class="cstat-no" title="statement not covered" > this.unregisterNode(node)</span>
|
|
344
|
-
}
|
|
345
|
-
<span class="cstat-no" title="statement not covered" > this.nodes.length = 0</span>
|
|
337
|
+
diffPersist(flags: PersistFlagsData[]) {
|
|
338
|
+
const persistFlags = this.app.localStorage.getItem(this.storageKey)
|
|
339
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!persistFlags) <span class="cstat-no" title="statement not covered" >return flags</span>
|
|
340
|
+
const persistFlagsStrArr = persistFlags.split(';')
|
|
341
|
+
const persistFlagsArr = persistFlagsStrArr.map((flag) => JSON.parse(flag))
|
|
342
|
+
return flags.filter((flag) => persistFlagsArr.findIndex((pf) => pf.key === flag.key) === -1)
|
|
346
343
|
}
|
|
347
344
|
}
|
|
348
345
|
</pre></td></tr></table></pre>
|
|
@@ -352,7 +349,7 @@ type ElementListener = [string, EventListener, boolean]
|
|
|
352
349
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
353
350
|
Code coverage generated by
|
|
354
351
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
355
|
-
at 2023-
|
|
352
|
+
at 2023-06-15T15:49:15.198Z
|
|
356
353
|
</div>
|
|
357
354
|
<script src="../../prettify.js"></script>
|
|
358
355
|
<script>
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
206
206
|
Code coverage generated by
|
|
207
207
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
208
|
-
at 2023-
|
|
208
|
+
at 2023-06-15T15:49:15.198Z
|
|
209
209
|
</div>
|
|
210
210
|
<script src="../../prettify.js"></script>
|
|
211
211
|
<script>
|
|
@@ -274,7 +274,7 @@ type FFData = [string, string, string]
|
|
|
274
274
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
275
275
|
Code coverage generated by
|
|
276
276
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
277
|
-
at 2023-
|
|
277
|
+
at 2023-06-15T15:49:15.198Z
|
|
278
278
|
</div>
|
|
279
279
|
<script src="../../prettify.js"></script>
|
|
280
280
|
<script>
|
|
@@ -297,7 +297,7 @@
|
|
|
297
297
|
<span class="cline-any cline-neutral"> </span>
|
|
298
298
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type App from '../app/index.js'
|
|
299
299
|
<span class="cstat-no" title="statement not covered" >import { isURL, IS_FIREFOX, MAX_STR_LEN } from '../utils.js'</span>
|
|
300
|
-
<span class="cstat-no" title="statement not covered" >import { ResourceTiming, SetNodeAttributeURLBased
|
|
300
|
+
<span class="cstat-no" title="statement not covered" >import { ResourceTiming, SetNodeAttributeURLBased } from '../app/messages.gen.js'</span>
|
|
301
301
|
<span class="cstat-no" title="statement not covered" >import { hasTag } from '../app/guards.js'</span>
|
|
302
302
|
|
|
303
303
|
function <span class="fstat-no" title="function not covered" >resolveURL(</span>url: string, location: Location = <span class="branch-0 cbranch-no" title="branch not covered" >document.location)</span> {
|
|
@@ -325,13 +325,13 @@ const PLACEHOLDER_SRC = <span class="cstat-no" title="statement not covered" >'h
|
|
|
325
325
|
|
|
326
326
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export default function (a</span></span>pp: App): void {
|
|
327
327
|
function <span class="fstat-no" title="function not covered" >sendPlaceholder(</span>id: number, node: HTMLImageElement): void {
|
|
328
|
-
<span class="cstat-no" title="statement not covered" > app.
|
|
328
|
+
<span class="cstat-no" title="statement not covered" > app.attributeSender.sendSetAttribute(id, 'src', PLACEHOLDER_SRC)</span>
|
|
329
329
|
const { width, height } = <span class="cstat-no" title="statement not covered" >node.getBoundingClientRect()</span>
|
|
330
330
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!node.hasAttribute('width')) {</span>
|
|
331
|
-
<span class="cstat-no" title="statement not covered" > app.
|
|
331
|
+
<span class="cstat-no" title="statement not covered" > app.attributeSender.sendSetAttribute(id, 'width', String(width))</span>
|
|
332
332
|
}
|
|
333
333
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!node.hasAttribute('height')) {</span>
|
|
334
|
-
<span class="cstat-no" title="statement not covered" > app.
|
|
334
|
+
<span class="cstat-no" title="statement not covered" > app.attributeSender.sendSetAttribute(id, 'height', String(height))</span>
|
|
335
335
|
}
|
|
336
336
|
}
|
|
337
337
|
|
|
@@ -344,7 +344,7 @@ const PLACEHOLDER_SRC = <span class="cstat-no" title="statement not covered" >'h
|
|
|
344
344
|
.split(',')
|
|
345
345
|
.map(<span class="fstat-no" title="function not covered" >(s</span>tr) => <span class="cstat-no" title="statement not covered" >resolveURL(str))</span>
|
|
346
346
|
.join(',')
|
|
347
|
-
<span class="cstat-no" title="statement not covered" > app.
|
|
347
|
+
<span class="cstat-no" title="statement not covered" > app.attributeSender.sendSetAttribute(id, 'srcset', resolvedSrcset)</span>
|
|
348
348
|
}
|
|
349
349
|
|
|
350
350
|
const sendSrc = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function (i</span>d: number, img: HTMLImageElement): void {</span>
|
|
@@ -418,7 +418,7 @@ const PLACEHOLDER_SRC = <span class="cstat-no" title="statement not covered" >'h
|
|
|
418
418
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
419
419
|
Code coverage generated by
|
|
420
420
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
421
|
-
at 2023-
|
|
421
|
+
at 2023-06-15T15:49:15.198Z
|
|
422
422
|
</div>
|
|
423
423
|
<script src="../../prettify.js"></script>
|
|
424
424
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">0% </span>
|
|
26
|
+
<span class="strong">0.99% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>11/1109</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/568</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">2.4% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>5/208</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">0% </span>
|
|
47
|
+
<span class="strong">0.74% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>8/1072</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -79,6 +79,21 @@
|
|
|
79
79
|
</tr>
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
|
+
<td class="file low" data-value="attributeSender.ts"><a href="attributeSender.ts.html">attributeSender.ts</a></td>
|
|
83
|
+
<td data-value="0" class="pic low">
|
|
84
|
+
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
|
85
|
+
</td>
|
|
86
|
+
<td data-value="0" class="pct low">0%</td>
|
|
87
|
+
<td data-value="18" class="abs low">0/18</td>
|
|
88
|
+
<td data-value="0" class="pct low">0%</td>
|
|
89
|
+
<td data-value="2" class="abs low">0/2</td>
|
|
90
|
+
<td data-value="0" class="pct low">0%</td>
|
|
91
|
+
<td data-value="6" class="abs low">0/6</td>
|
|
92
|
+
<td data-value="0" class="pct low">0%</td>
|
|
93
|
+
<td data-value="18" class="abs low">0/18</td>
|
|
94
|
+
</tr>
|
|
95
|
+
|
|
96
|
+
<tr>
|
|
82
97
|
<td class="file low" data-value="axiosSpy.ts"><a href="axiosSpy.ts.html">axiosSpy.ts</a></td>
|
|
83
98
|
<td data-value="0" class="pic low">
|
|
84
99
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
|
@@ -168,6 +183,21 @@
|
|
|
168
183
|
<td data-value="35" class="abs low">0/35</td>
|
|
169
184
|
</tr>
|
|
170
185
|
|
|
186
|
+
<tr>
|
|
187
|
+
<td class="file low" data-value="featureFlags.ts"><a href="featureFlags.ts.html">featureFlags.ts</a></td>
|
|
188
|
+
<td data-value="34.37" class="pic low">
|
|
189
|
+
<div class="chart"><div class="cover-fill" style="width: 34%"></div><div class="cover-empty" style="width: 66%"></div></div>
|
|
190
|
+
</td>
|
|
191
|
+
<td data-value="34.37" class="pct low">34.37%</td>
|
|
192
|
+
<td data-value="32" class="abs low">11/32</td>
|
|
193
|
+
<td data-value="0" class="pct low">0%</td>
|
|
194
|
+
<td data-value="11" class="abs low">0/11</td>
|
|
195
|
+
<td data-value="41.66" class="pct low">41.66%</td>
|
|
196
|
+
<td data-value="12" class="abs low">5/12</td>
|
|
197
|
+
<td data-value="29.62" class="pct low">29.62%</td>
|
|
198
|
+
<td data-value="27" class="abs low">8/27</td>
|
|
199
|
+
</tr>
|
|
200
|
+
|
|
171
201
|
<tr>
|
|
172
202
|
<td class="file low" data-value="focus.ts"><a href="focus.ts.html">focus.ts</a></td>
|
|
173
203
|
<td data-value="0" class="pic low">
|
|
@@ -356,7 +386,7 @@
|
|
|
356
386
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
357
387
|
Code coverage generated by
|
|
358
388
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
359
|
-
at 2023-
|
|
389
|
+
at 2023-06-15T15:49:15.198Z
|
|
360
390
|
</div>
|
|
361
391
|
<script src="../../prettify.js"></script>
|
|
362
392
|
<script>
|
|
@@ -796,7 +796,7 @@ export interface Options {
|
|
|
796
796
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
797
797
|
Code coverage generated by
|
|
798
798
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
799
|
-
at 2023-
|
|
799
|
+
at 2023-06-15T15:49:15.198Z
|
|
800
800
|
</div>
|
|
801
801
|
<script src="../../prettify.js"></script>
|
|
802
802
|
<script>
|
|
@@ -811,7 +811,7 @@ export interface MouseHandlerOptions {
|
|
|
811
811
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
812
812
|
Code coverage generated by
|
|
813
813
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
814
|
-
at 2023-
|
|
814
|
+
at 2023-06-15T15:49:15.198Z
|
|
815
815
|
</div>
|
|
816
816
|
<script src="../../prettify.js"></script>
|
|
817
817
|
<script>
|
|
@@ -1114,7 +1114,7 @@ export interface Options {
|
|
|
1114
1114
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1115
1115
|
Code coverage generated by
|
|
1116
1116
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1117
|
-
at 2023-
|
|
1117
|
+
at 2023-06-15T15:49:15.198Z
|
|
1118
1118
|
</div>
|
|
1119
1119
|
<script src="../../prettify.js"></script>
|
|
1120
1120
|
<script>
|
|
@@ -352,7 +352,7 @@ export interface Options {
|
|
|
352
352
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
353
353
|
Code coverage generated by
|
|
354
354
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
355
|
-
at 2023-
|
|
355
|
+
at 2023-06-15T15:49:15.198Z
|
|
356
356
|
</div>
|
|
357
357
|
<script src="../../prettify.js"></script>
|
|
358
358
|
<script>
|
|
@@ -349,7 +349,7 @@ function <span class="fstat-no" title="function not covered" >getDocumentScroll(
|
|
|
349
349
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
350
350
|
Code coverage generated by
|
|
351
351
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
352
|
-
at 2023-
|
|
352
|
+
at 2023-06-15T15:49:15.198Z
|
|
353
353
|
</div>
|
|
354
354
|
<script src="../../prettify.js"></script>
|
|
355
355
|
<script>
|
|
@@ -187,7 +187,7 @@ function <span class="fstat-no" title="function not covered" >selection(</span>a
|
|
|
187
187
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
188
188
|
Code coverage generated by
|
|
189
189
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
190
|
-
at 2023-
|
|
190
|
+
at 2023-06-15T15:49:15.198Z
|
|
191
191
|
</div>
|
|
192
192
|
<script src="../../prettify.js"></script>
|
|
193
193
|
<script>
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
110
110
|
Code coverage generated by
|
|
111
111
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
112
|
-
at 2023-
|
|
112
|
+
at 2023-06-15T15:49:15.198Z
|
|
113
113
|
</div>
|
|
114
114
|
<script src="../../prettify.js"></script>
|
|
115
115
|
<script>
|