@saasquatch/squatch-js 2.6.0-4 → 2.6.0-5
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/clover.xml +843 -64
- package/coverage/coverage-final.json +19 -1
- package/coverage/lcov-report/DeclarativeWidget.ts.html +298 -118
- package/coverage/lcov-report/Widgets.ts.html +70 -22
- package/coverage/lcov-report/api/AnalyticsApi.ts.html +38 -38
- package/coverage/lcov-report/api/EventsApi.ts.html +352 -0
- package/coverage/lcov-report/api/WidgetApi.ts.html +88 -61
- package/coverage/lcov-report/api/graphql.ts.html +1 -1
- package/coverage/lcov-report/squatch.ts.html +721 -0
- package/coverage/lcov-report/utils/cookieUtils.ts.html +1 -1
- package/coverage/lcov-report/utils/decodeUserJwt.ts.html +1 -1
- package/coverage/lcov-report/utils/domready.ts.html +1 -1
- package/coverage/lcov-report/utils/io.ts.html +7 -7
- package/coverage/lcov-report/utils/utmUtils.ts.html +22 -22
- package/coverage/lcov-report/utils/validate.ts.html +41 -41
- package/coverage/lcov-report/validate.ts.html +1 -1
- package/coverage/lcov-report/widgets/EmbedWidget.ts.html +24 -3
- package/coverage/lcov-report/widgets/PopupWidget.ts.html +17 -2
- package/coverage/lcov-report/widgets/Widget.ts.html +1 -1
- package/coverage/lcov-report/widgets/Widgets.ts.html +61 -16
- package/coverage/lcov-report/widgets/declarative/DeclarativeWidget.ts.html +368 -74
- package/coverage/lcov-report/widgets/declarative/DeclarativeWidgets.ts.html +388 -0
- package/coverage/lcov.info +1553 -125
- package/dist/api/WidgetApi.d.ts +2 -2
- package/dist/squatch.d.ts +28 -1
- package/dist/squatch.esm.js +176 -29
- package/dist/squatch.esm.js.map +1 -1
- package/dist/squatch.js +176 -29
- package/dist/squatch.js.map +1 -1
- package/dist/squatch.min.js +1 -1
- package/dist/widgets/EmbedWidget.d.ts +5 -0
- package/dist/widgets/PopupWidget.d.ts +6 -1
- package/dist/widgets/Widgets.d.ts +15 -2
- package/dist/widgets/declarative/DeclarativeWidget.d.ts +57 -1
- package/dist/widgets/declarative/DeclarativeWidgets.d.ts +22 -0
- package/package.json +1 -1
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">38.09% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>24/63</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">7.14% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>3/42</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">16.66% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>2/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">42.1% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>24/57</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line low'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -238,26 +238,93 @@
|
|
|
238
238
|
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
239
|
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
240
|
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a
|
|
242
|
-
<
|
|
243
|
-
<
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
302
|
+
<span class="cline-any cline-yes">1x</span>
|
|
303
|
+
<span class="cline-any cline-yes">1x</span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-yes">1x</span>
|
|
306
|
+
<span class="cline-any cline-yes">1x</span>
|
|
307
|
+
<span class="cline-any cline-yes">1x</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-yes">1x</span>
|
|
313
|
+
<span class="cline-any cline-yes">1x</span>
|
|
314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
315
|
+
<span class="cline-any cline-yes">1x</span>
|
|
316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
244
317
|
<span class="cline-any cline-neutral"> </span>
|
|
245
|
-
<span class="cline-any cline-yes">3x</span>
|
|
246
|
-
<span class="cline-any cline-yes">3x</span>
|
|
247
|
-
<span class="cline-any cline-yes">3x</span>
|
|
248
318
|
<span class="cline-any cline-neutral"> </span>
|
|
249
319
|
<span class="cline-any cline-neutral"> </span>
|
|
250
320
|
<span class="cline-any cline-neutral"> </span>
|
|
251
321
|
<span class="cline-any cline-neutral"> </span>
|
|
252
|
-
<span class="cline-any cline-yes">3x</span>
|
|
253
|
-
<span class="cline-any cline-yes">3x</span>
|
|
254
322
|
<span class="cline-any cline-neutral"> </span>
|
|
255
|
-
<span class="cline-any cline-yes">3x</span>
|
|
256
323
|
<span class="cline-any cline-neutral"> </span>
|
|
257
|
-
<span class="cline-any cline-yes">3x</span>
|
|
258
324
|
<span class="cline-any cline-neutral"> </span>
|
|
259
325
|
<span class="cline-any cline-neutral"> </span>
|
|
260
326
|
<span class="cline-any cline-neutral"> </span>
|
|
327
|
+
<span class="cline-any cline-yes">1x</span>
|
|
261
328
|
<span class="cline-any cline-neutral"> </span>
|
|
262
329
|
<span class="cline-any cline-neutral"> </span>
|
|
263
330
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -271,52 +338,34 @@
|
|
|
271
338
|
<span class="cline-any cline-neutral"> </span>
|
|
272
339
|
<span class="cline-any cline-neutral"> </span>
|
|
273
340
|
<span class="cline-any cline-neutral"> </span>
|
|
274
|
-
<span class="cline-any cline-yes">56x</span>
|
|
275
|
-
<span class="cline-any cline-yes">56x</span>
|
|
276
341
|
<span class="cline-any cline-neutral"> </span>
|
|
277
342
|
<span class="cline-any cline-neutral"> </span>
|
|
278
343
|
<span class="cline-any cline-neutral"> </span>
|
|
279
|
-
<span class="cline-any cline-yes">56x</span>
|
|
280
|
-
<span class="cline-any cline-yes">56x</span>
|
|
281
|
-
<span class="cline-any cline-yes">56x</span>
|
|
282
|
-
<span class="cline-any cline-yes">56x</span>
|
|
283
344
|
<span class="cline-any cline-neutral"> </span>
|
|
284
|
-
<span class="cline-any cline-yes">56x</span>
|
|
285
345
|
<span class="cline-any cline-neutral"> </span>
|
|
286
346
|
<span class="cline-any cline-neutral"> </span>
|
|
287
347
|
<span class="cline-any cline-neutral"> </span>
|
|
288
|
-
<span class="cline-any cline-yes">60x</span>
|
|
289
348
|
<span class="cline-any cline-neutral"> </span>
|
|
290
|
-
<span class="cline-any cline-yes">57x</span>
|
|
291
349
|
<span class="cline-any cline-neutral"> </span>
|
|
292
350
|
<span class="cline-any cline-neutral"> </span>
|
|
293
351
|
<span class="cline-any cline-neutral"> </span>
|
|
294
|
-
<span class="cline-any cline-yes">57x</span>
|
|
295
352
|
<span class="cline-any cline-neutral"> </span>
|
|
296
353
|
<span class="cline-any cline-neutral"> </span>
|
|
297
354
|
<span class="cline-any cline-neutral"> </span>
|
|
298
355
|
<span class="cline-any cline-neutral"> </span>
|
|
299
356
|
<span class="cline-any cline-neutral"> </span>
|
|
300
|
-
<span class="cline-any cline-yes">44x</span>
|
|
301
|
-
<span class="cline-any cline-yes">44x</span>
|
|
302
357
|
<span class="cline-any cline-neutral"> </span>
|
|
303
|
-
<span class="cline-any cline-yes">41x</span>
|
|
304
358
|
<span class="cline-any cline-neutral"> </span>
|
|
305
359
|
<span class="cline-any cline-neutral"> </span>
|
|
306
360
|
<span class="cline-any cline-neutral"> </span>
|
|
307
361
|
<span class="cline-any cline-neutral"> </span>
|
|
308
362
|
<span class="cline-any cline-neutral"> </span>
|
|
309
|
-
<span class="cline-any cline-yes">41x</span>
|
|
310
363
|
<span class="cline-any cline-neutral"> </span>
|
|
311
364
|
<span class="cline-any cline-neutral"> </span>
|
|
312
365
|
<span class="cline-any cline-neutral"> </span>
|
|
313
366
|
<span class="cline-any cline-neutral"> </span>
|
|
314
|
-
<span class="cline-any cline-yes">16x</span>
|
|
315
367
|
<span class="cline-any cline-neutral"> </span>
|
|
316
|
-
<span class="cline-any cline-yes">16x</span>
|
|
317
|
-
<span class="cline-any cline-yes">16x</span>
|
|
318
368
|
<span class="cline-any cline-neutral"> </span>
|
|
319
|
-
<span class="cline-any cline-yes">16x</span>
|
|
320
369
|
<span class="cline-any cline-neutral"> </span>
|
|
321
370
|
<span class="cline-any cline-neutral"> </span>
|
|
322
371
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -324,94 +373,165 @@
|
|
|
324
373
|
<span class="cline-any cline-neutral"> </span>
|
|
325
374
|
<span class="cline-any cline-neutral"> </span>
|
|
326
375
|
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-yes">12x</span>
|
|
328
376
|
<span class="cline-any cline-neutral"> </span>
|
|
329
377
|
<span class="cline-any cline-neutral"> </span>
|
|
330
|
-
<span class="cline-any cline-yes">16x</span>
|
|
331
378
|
<span class="cline-any cline-neutral"> </span>
|
|
332
379
|
<span class="cline-any cline-neutral"> </span>
|
|
333
|
-
<span class="cline-any cline-yes">56x</span>
|
|
334
380
|
<span class="cline-any cline-neutral"> </span>
|
|
335
381
|
<span class="cline-any cline-neutral"> </span>
|
|
336
382
|
<span class="cline-any cline-neutral"> </span>
|
|
337
|
-
<span class="cline-any cline-yes">53x</span>
|
|
338
383
|
<span class="cline-any cline-neutral"> </span>
|
|
384
|
+
<span class="cline-any cline-yes">4x</span>
|
|
385
|
+
<span class="cline-any cline-yes">4x</span>
|
|
339
386
|
<span class="cline-any cline-neutral"> </span>
|
|
340
387
|
<span class="cline-any cline-neutral"> </span>
|
|
341
388
|
<span class="cline-any cline-neutral"> </span>
|
|
389
|
+
<span class="cline-any cline-yes">4x</span>
|
|
390
|
+
<span class="cline-any cline-yes">4x</span>
|
|
391
|
+
<span class="cline-any cline-yes">4x</span>
|
|
392
|
+
<span class="cline-any cline-yes">4x</span>
|
|
342
393
|
<span class="cline-any cline-neutral"> </span>
|
|
343
394
|
<span class="cline-any cline-neutral"> </span>
|
|
344
395
|
<span class="cline-any cline-neutral"> </span>
|
|
396
|
+
<span class="cline-any cline-yes">2x</span>
|
|
345
397
|
<span class="cline-any cline-neutral"> </span>
|
|
346
|
-
<span class="cline-any cline-yes">
|
|
347
|
-
<span class="cline-any cline-yes">28x</span>
|
|
398
|
+
<span class="cline-any cline-yes">2x</span>
|
|
348
399
|
<span class="cline-any cline-neutral"> </span>
|
|
349
|
-
<span class="cline-any cline-yes">25x</span>
|
|
350
400
|
<span class="cline-any cline-neutral"> </span>
|
|
351
401
|
<span class="cline-any cline-neutral"> </span>
|
|
402
|
+
<span class="cline-any cline-yes">2x</span>
|
|
352
403
|
<span class="cline-any cline-neutral"> </span>
|
|
353
404
|
<span class="cline-any cline-neutral"> </span>
|
|
354
405
|
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-yes">64x</span>
|
|
356
|
-
<span class="cline-any cline-yes">64x</span>
|
|
357
406
|
<span class="cline-any cline-neutral"> </span>
|
|
358
|
-
<span class="cline-any cline-yes">64x</span>
|
|
359
407
|
<span class="cline-any cline-neutral"> </span>
|
|
360
|
-
<span class="cline-any cline-
|
|
361
|
-
<span class="cline-any cline-
|
|
408
|
+
<span class="cline-any cline-no"> </span>
|
|
409
|
+
<span class="cline-any cline-no"> </span>
|
|
362
410
|
<span class="cline-any cline-neutral"> </span>
|
|
363
|
-
<span class="cline-any cline-
|
|
411
|
+
<span class="cline-any cline-no"> </span>
|
|
364
412
|
<span class="cline-any cline-neutral"> </span>
|
|
365
413
|
<span class="cline-any cline-neutral"> </span>
|
|
366
|
-
<span class="cline-any cline-yes">57x</span>
|
|
367
414
|
<span class="cline-any cline-neutral"> </span>
|
|
368
|
-
<span class="cline-any cline-yes">57x</span>
|
|
369
|
-
<span class="cline-any cline-yes">57x</span>
|
|
370
415
|
<span class="cline-any cline-neutral"> </span>
|
|
371
416
|
<span class="cline-any cline-neutral"> </span>
|
|
417
|
+
<span class="cline-any cline-no"> </span>
|
|
372
418
|
<span class="cline-any cline-neutral"> </span>
|
|
373
|
-
<span class="cline-any cline-yes">64x</span>
|
|
374
|
-
<span class="cline-any cline-yes">57x</span>
|
|
375
419
|
<span class="cline-any cline-neutral"> </span>
|
|
376
420
|
<span class="cline-any cline-neutral"> </span>
|
|
377
|
-
<span class="cline-any cline-yes">56x</span>
|
|
378
|
-
<span class="cline-any cline-yes">4x</span>
|
|
379
421
|
<span class="cline-any cline-neutral"> </span>
|
|
422
|
+
<span class="cline-any cline-no"> </span>
|
|
380
423
|
<span class="cline-any cline-neutral"> </span>
|
|
424
|
+
<span class="cline-any cline-no"> </span>
|
|
425
|
+
<span class="cline-any cline-no"> </span>
|
|
381
426
|
<span class="cline-any cline-neutral"> </span>
|
|
427
|
+
<span class="cline-any cline-no"> </span>
|
|
382
428
|
<span class="cline-any cline-neutral"> </span>
|
|
383
429
|
<span class="cline-any cline-neutral"> </span>
|
|
384
430
|
<span class="cline-any cline-neutral"> </span>
|
|
385
431
|
<span class="cline-any cline-neutral"> </span>
|
|
386
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-no"> </span>
|
|
436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
438
|
+
<span class="cline-any cline-no"> </span>
|
|
439
|
+
<span class="cline-any cline-neutral"> </span>
|
|
440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
387
441
|
<span class="cline-any cline-yes">4x</span>
|
|
388
|
-
<span class="cline-any cline-yes">3x</span>
|
|
389
442
|
<span class="cline-any cline-neutral"> </span>
|
|
390
|
-
<span class="cline-any cline-yes">1x</span>
|
|
391
443
|
<span class="cline-any cline-neutral"> </span>
|
|
392
444
|
<span class="cline-any cline-neutral"> </span>
|
|
445
|
+
<span class="cline-any cline-no"> </span>
|
|
393
446
|
<span class="cline-any cline-neutral"> </span>
|
|
394
447
|
<span class="cline-any cline-neutral"> </span>
|
|
395
448
|
<span class="cline-any cline-neutral"> </span>
|
|
396
449
|
<span class="cline-any cline-neutral"> </span>
|
|
397
450
|
<span class="cline-any cline-neutral"> </span>
|
|
398
451
|
<span class="cline-any cline-neutral"> </span>
|
|
399
|
-
<span class="cline-any cline-yes">8x</span>
|
|
400
|
-
<span class="cline-any cline-yes">8x</span>
|
|
401
452
|
<span class="cline-any cline-neutral"> </span>
|
|
402
453
|
<span class="cline-any cline-neutral"> </span>
|
|
454
|
+
<span class="cline-any cline-no"> </span>
|
|
455
|
+
<span class="cline-any cline-no"> </span>
|
|
456
|
+
<span class="cline-any cline-neutral"> </span>
|
|
457
|
+
<span class="cline-any cline-no"> </span>
|
|
458
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </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-no"> </span>
|
|
469
|
+
<span class="cline-any cline-no"> </span>
|
|
470
|
+
<span class="cline-any cline-neutral"> </span>
|
|
471
|
+
<span class="cline-any cline-no"> </span>
|
|
472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
473
|
+
<span class="cline-any cline-no"> </span>
|
|
474
|
+
<span class="cline-any cline-no"> </span>
|
|
475
|
+
<span class="cline-any cline-neutral"> </span>
|
|
476
|
+
<span class="cline-any cline-no"> </span>
|
|
477
|
+
<span class="cline-any cline-neutral"> </span>
|
|
478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
479
|
+
<span class="cline-any cline-no"> </span>
|
|
480
|
+
<span class="cline-any cline-neutral"> </span>
|
|
481
|
+
<span class="cline-any cline-no"> </span>
|
|
482
|
+
<span class="cline-any cline-no"> </span>
|
|
483
|
+
<span class="cline-any cline-neutral"> </span>
|
|
484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
485
|
+
<span class="cline-any cline-neutral"> </span>
|
|
486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
487
|
+
<span class="cline-any cline-neutral"> </span>
|
|
488
|
+
<span class="cline-any cline-neutral"> </span>
|
|
489
|
+
<span class="cline-any cline-no"> </span>
|
|
490
|
+
<span class="cline-any cline-no"> </span>
|
|
491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
403
492
|
<span class="cline-any cline-neutral"> </span>
|
|
404
493
|
<span class="cline-any cline-neutral"> </span>
|
|
405
494
|
<span class="cline-any cline-neutral"> </span>
|
|
406
495
|
<span class="cline-any cline-neutral"> </span>
|
|
407
496
|
<span class="cline-any cline-neutral"> </span>
|
|
408
497
|
<span class="cline-any cline-yes">4x</span>
|
|
409
|
-
<span class="cline-any cline-
|
|
498
|
+
<span class="cline-any cline-no"> </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>
|
|
410
503
|
<span class="cline-any cline-neutral"> </span>
|
|
411
504
|
<span class="cline-any cline-neutral"> </span>
|
|
412
|
-
<span class="cline-any cline-
|
|
413
|
-
<span class="cline-any cline-
|
|
414
|
-
<span class="cline-any cline-
|
|
505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
506
|
+
<span class="cline-any cline-neutral"> </span>
|
|
507
|
+
<span class="cline-any cline-no"> </span>
|
|
508
|
+
<span class="cline-any cline-no"> </span>
|
|
509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
510
|
+
<span class="cline-any cline-no"> </span>
|
|
511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
514
|
+
<span class="cline-any cline-neutral"> </span>
|
|
515
|
+
<span class="cline-any cline-neutral"> </span>
|
|
516
|
+
<span class="cline-any cline-neutral"> </span>
|
|
517
|
+
<span class="cline-any cline-neutral"> </span>
|
|
518
|
+
<span class="cline-any cline-neutral"> </span>
|
|
519
|
+
<span class="cline-any cline-no"> </span>
|
|
520
|
+
<span class="cline-any cline-no"> </span>
|
|
521
|
+
<span class="cline-any cline-neutral"> </span>
|
|
522
|
+
<span class="cline-any cline-neutral"> </span>
|
|
523
|
+
<span class="cline-any cline-neutral"> </span>
|
|
524
|
+
<span class="cline-any cline-neutral"> </span>
|
|
525
|
+
<span class="cline-any cline-neutral"> </span>
|
|
526
|
+
<span class="cline-any cline-neutral"> </span>
|
|
527
|
+
<span class="cline-any cline-neutral"> </span>
|
|
528
|
+
<span class="cline-any cline-no"> </span>
|
|
529
|
+
<span class="cline-any cline-no"> </span>
|
|
530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
531
|
+
<span class="cline-any cline-neutral"> </span>
|
|
532
|
+
<span class="cline-any cline-yes">4x</span>
|
|
533
|
+
<span class="cline-any cline-yes">4x</span>
|
|
534
|
+
<span class="cline-any cline-yes">4x</span>
|
|
415
535
|
<span class="cline-any cline-neutral"> </span>
|
|
416
536
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import debug from "debug";
|
|
417
537
|
import AnalyticsApi from "../../api/AnalyticsApi";
|
|
@@ -429,19 +549,69 @@ import PopupWidget from "../PopupWidget";
|
|
|
429
549
|
|
|
430
550
|
const _log = debug("sqh:DeclarativeWidget");
|
|
431
551
|
|
|
552
|
+
/**
|
|
553
|
+
* Abstract class for building web-components that render SaaSquatch widgets to the DOM.
|
|
554
|
+
* @abstract
|
|
555
|
+
* @example
|
|
556
|
+
* class TestWidgetElement extends DeclarativeWidget {}
|
|
557
|
+
* const testWidget = new TestWidgetElement()
|
|
558
|
+
* testWidget.widgetType = 'w/widget-type'
|
|
559
|
+
* testWidget.type = 'EMBED'
|
|
560
|
+
* testWidget.renderWidget()
|
|
561
|
+
*/
|
|
432
562
|
export default abstract class DeclarativeWidget extends HTMLElement {
|
|
563
|
+
/**
|
|
564
|
+
* Configuration overrides
|
|
565
|
+
* @default window.squatchConfig
|
|
566
|
+
*/
|
|
433
567
|
config: DeclarativeConfigOptions | undefined;
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Signed JWT containing user information
|
|
571
|
+
* @default window.squatchToken
|
|
572
|
+
*/
|
|
434
573
|
token: string | undefined;
|
|
574
|
+
|
|
575
|
+
/**
|
|
576
|
+
* Tenant alias of SaaSquatch tenant
|
|
577
|
+
* @default window.squatchTenant
|
|
578
|
+
*/
|
|
435
579
|
tenant: string | undefined;
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* widgetType of widget to load
|
|
583
|
+
*/
|
|
436
584
|
widgetType: string | undefined;
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* Locale to render the widget in
|
|
588
|
+
*/
|
|
437
589
|
locale: string | undefined;
|
|
438
590
|
|
|
591
|
+
/**
|
|
592
|
+
* Instance of {@link WidgetApi}
|
|
593
|
+
*/
|
|
439
594
|
widgetApi: WidgetApi;
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Instance of {@link AnalyticsApi}
|
|
598
|
+
*/
|
|
440
599
|
analyticsApi: AnalyticsApi;
|
|
441
600
|
|
|
442
|
-
|
|
601
|
+
/**
|
|
602
|
+
* Instance of {@link EmbedWidget} or {@link PopupWidget}
|
|
603
|
+
*/
|
|
443
604
|
widgetInstance: EmbedWidget | PopupWidget;
|
|
444
605
|
|
|
606
|
+
/**
|
|
607
|
+
* Determines whether to render the widget as an embedding widget or popup widget.
|
|
608
|
+
*/
|
|
609
|
+
type: "EMBED" | "POPUP";
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* Container element to contain the widget iframe
|
|
613
|
+
* @default this
|
|
614
|
+
*/
|
|
445
615
|
container: string | HTMLElement | undefined | null;
|
|
446
616
|
element: HTMLElement | undefined;
|
|
447
617
|
|
|
@@ -455,43 +625,41 @@ export default abstract class DeclarativeWidget extends HTMLElement {
|
|
|
455
625
|
this.token = window.squatchToken;
|
|
456
626
|
this.tenant = window.squatchTenant;
|
|
457
627
|
this.container = this;
|
|
458
|
-
|
|
459
|
-
this.locale = validateLocale(navigator.language.replace(/\-/g, "_"));
|
|
460
628
|
}
|
|
461
629
|
|
|
462
630
|
private _setupApis(config?: ConfigOptions) {
|
|
463
|
-
if (!this.tenant) throw new Error("Requires tenantAlias")
|
|
631
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.tenant) <span class="cstat-no" title="statement not covered" >throw new Error("Requires tenantAlias");</span>
|
|
464
632
|
|
|
465
633
|
this.widgetApi = new WidgetApi({
|
|
466
|
-
tenantAlias: config?.tenantAlias || this.tenant
|
|
467
|
-
domain: config?.domain || this.config?.domain
|
|
634
|
+
tenantAlias: config?.tenantAlias || <span class="branch-1 cbranch-no" title="branch not covered" >this.tenant,</span>
|
|
635
|
+
domain: config?.domain || <span class="branch-1 cbranch-no" title="branch not covered" >this.config?.domain </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >DEFAULT_DOMAIN,</span>
|
|
468
636
|
});
|
|
469
637
|
this.analyticsApi = new AnalyticsApi({
|
|
470
|
-
domain: config?.domain || this.config?.domain
|
|
638
|
+
domain: config?.domain || <span class="branch-1 cbranch-no" title="branch not covered" >this.config?.domain </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >DEFAULT_DOMAIN,</span>
|
|
471
639
|
});
|
|
472
640
|
}
|
|
473
641
|
|
|
474
|
-
private async renderPasswordlessVariant() {
|
|
475
|
-
const configs = _getAutoConfig()
|
|
476
|
-
this._setupApis(configs?.squatchConfig)
|
|
642
|
+
private <span class="fstat-no" title="function not covered" >async </span>renderPasswordlessVariant() {
|
|
643
|
+
const configs = <span class="cstat-no" title="statement not covered" >_getAutoConfig();</span>
|
|
644
|
+
<span class="cstat-no" title="statement not covered" > this._setupApis(configs?.squatchConfig);</span>
|
|
477
645
|
|
|
478
|
-
return await this.widgetApi
|
|
646
|
+
<span class="cstat-no" title="statement not covered" > return await this.widgetApi</span>
|
|
479
647
|
.render({
|
|
480
648
|
engagementMedium: configs?.widgetConfig?.engagementMedium || this.type,
|
|
481
649
|
widgetType: configs?.widgetConfig?.widgetType || this.widgetType,
|
|
482
650
|
locale: configs?.widgetConfig?.locale || this.locale,
|
|
483
651
|
})
|
|
484
|
-
.then((
|
|
652
|
+
.then(<span class="fstat-no" title="function not covered" >(r</span>es) => <span class="cstat-no" title="statement not covered" >this._setWidget(res.template, { type: "passwordless" }))</span>
|
|
485
653
|
.catch(this.setErrorWidget);
|
|
486
654
|
}
|
|
487
655
|
|
|
488
|
-
private async renderUserUpsertVariant() {
|
|
489
|
-
this._setupApis()
|
|
656
|
+
private <span class="fstat-no" title="function not covered" >async </span>renderUserUpsertVariant() {
|
|
657
|
+
<span class="cstat-no" title="statement not covered" > this._setupApis();</span>
|
|
490
658
|
|
|
491
|
-
const userObj = decodeUserJwt(this.token!)
|
|
492
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!userObj) <span class="cstat-no" title="statement not covered" >throw new Error("Could not load user information from jwt");</span>
|
|
659
|
+
const userObj = <span class="cstat-no" title="statement not covered" >decodeUserJwt(this.token!);</span>
|
|
660
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!userObj) <span class="cstat-no" title="statement not covered" >throw new Error("Could not load user information from jwt");</span></span>
|
|
493
661
|
|
|
494
|
-
const widgetInstance = await this.widgetApi
|
|
662
|
+
const widgetInstance = <span class="cstat-no" title="statement not covered" >await this.widgetApi</span>
|
|
495
663
|
.upsertUser({
|
|
496
664
|
user: userObj,
|
|
497
665
|
locale: this.locale,
|
|
@@ -499,70 +667,82 @@ export default abstract class DeclarativeWidget extends HTMLElement {
|
|
|
499
667
|
widgetType: this.widgetType,
|
|
500
668
|
jwt: this.token,
|
|
501
669
|
})
|
|
502
|
-
.then((
|
|
670
|
+
.then(<span class="fstat-no" title="function not covered" >(r</span>es) => <span class="cstat-no" title="statement not covered" >this._setWidget(res.template, { type: "upsert" }))</span>
|
|
503
671
|
.catch(this.setErrorWidget);
|
|
504
672
|
|
|
505
|
-
return widgetInstance
|
|
673
|
+
<span class="cstat-no" title="statement not covered" > return widgetInstance;</span>
|
|
506
674
|
}
|
|
507
675
|
|
|
508
|
-
private _setWidget = (
|
|
676
|
+
private _setWidget = <span class="fstat-no" title="function not covered" >(</span>
|
|
509
677
|
template: any,
|
|
510
678
|
config: { type: "upsert" | "passwordless" }
|
|
511
679
|
) => {
|
|
512
|
-
const params = {
|
|
680
|
+
const params = <span class="cstat-no" title="statement not covered" >{</span>
|
|
513
681
|
api: this.widgetApi,
|
|
514
682
|
content: template,
|
|
515
683
|
context: { type: config.type, engagementMedium: this.type },
|
|
516
684
|
type: this.widgetType!,
|
|
517
|
-
domain: this.config?.domain ||
|
|
685
|
+
domain: this.config?.domain || DEFAULT_DOMAIN,
|
|
518
686
|
npmCdn: DEFAULT_NPM_CDN,
|
|
519
|
-
container: this.container ||
|
|
687
|
+
container: this.container || this,
|
|
520
688
|
};
|
|
521
|
-
if (this.type === "EMBED") {
|
|
522
|
-
return new EmbedWidget(params)
|
|
689
|
+
<span class="cstat-no" title="statement not covered" > if (this.type === "EMBED") {</span>
|
|
690
|
+
<span class="cstat-no" title="statement not covered" > return new EmbedWidget(params);</span>
|
|
523
691
|
} else {
|
|
524
|
-
return new PopupWidget(params, this.firstChild ? null : undefined)
|
|
692
|
+
<span class="cstat-no" title="statement not covered" > return new PopupWidget(params, this.firstChild ? null : undefined);</span>
|
|
525
693
|
}
|
|
526
694
|
};
|
|
527
695
|
|
|
528
|
-
|
|
696
|
+
/**
|
|
697
|
+
* Fetches widget content from SaaSquatch and builds a Widget instance to support rendering the widget in the DOM.
|
|
698
|
+
* @returns Instance of either {@link EmbedWidget} or {@link PopupWidget} depending on `this.type`
|
|
699
|
+
* @throws Throws an Error if `widgetType` is undefined
|
|
700
|
+
*/
|
|
701
|
+
<span class="fstat-no" title="function not covered" > async </span>getWidgetInstance() {
|
|
529
702
|
let widgetInstance: EmbedWidget | PopupWidget;
|
|
530
|
-
this.widgetType = this.getAttribute("widget") || undefined
|
|
531
|
-
this.locale = this.getAttribute("locale") || this.locale
|
|
703
|
+
<span class="cstat-no" title="statement not covered" > this.widgetType = this.getAttribute("widget") || undefined;</span>
|
|
704
|
+
<span class="cstat-no" title="statement not covered" > this.locale = this.getAttribute("locale") || this.locale;</span>
|
|
532
705
|
|
|
533
|
-
if (!this.widgetType) throw new Error("No widget has been specified")
|
|
706
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.widgetType) <span class="cstat-no" title="statement not covered" >throw new Error("No widget has been specified");</span></span>
|
|
534
707
|
|
|
535
|
-
if (!this.token) {
|
|
536
|
-
widgetInstance = await this.renderPasswordlessVariant()
|
|
708
|
+
<span class="cstat-no" title="statement not covered" > if (!this.token) {</span>
|
|
709
|
+
<span class="cstat-no" title="statement not covered" > widgetInstance = await this.renderPasswordlessVariant();</span>
|
|
537
710
|
} else {
|
|
538
|
-
widgetInstance = await this.renderUserUpsertVariant()
|
|
711
|
+
<span class="cstat-no" title="statement not covered" > widgetInstance = await this.renderUserUpsertVariant();</span>
|
|
539
712
|
}
|
|
540
713
|
|
|
541
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!widgetInstance) <span class="cstat-no" title="statement not covered" >throw new Error("Could not create widget.");</span>
|
|
714
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!widgetInstance) <span class="cstat-no" title="statement not covered" >throw new Error("Could not create widget.");</span></span>
|
|
542
715
|
|
|
543
|
-
this.widgetInstance = widgetInstance
|
|
544
|
-
return widgetInstance
|
|
716
|
+
<span class="cstat-no" title="statement not covered" > this.widgetInstance = widgetInstance;</span>
|
|
717
|
+
<span class="cstat-no" title="statement not covered" > return widgetInstance;</span>
|
|
545
718
|
}
|
|
546
719
|
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
720
|
+
/**
|
|
721
|
+
* Calls {@link getWidgetInstance} to build the Widget instance and loads the widget iframe into the DOM.
|
|
722
|
+
*/
|
|
723
|
+
<span class="fstat-no" title="function not covered" > async </span>renderWidget() {
|
|
724
|
+
<span class="cstat-no" title="statement not covered" > await this.getWidgetInstance();</span>
|
|
725
|
+
<span class="cstat-no" title="statement not covered" > await this.widgetInstance.load();</span>
|
|
550
726
|
}
|
|
551
727
|
|
|
552
|
-
|
|
553
|
-
|
|
728
|
+
/**
|
|
729
|
+
* Builds a Widget instance for the default error widget.
|
|
730
|
+
* @returns Instance of either {@link EmbedWidget} or {@link PopupWidget} depending on `this.type`
|
|
731
|
+
*/
|
|
732
|
+
setErrorWidget = <span class="fstat-no" title="function not covered" >(e</span>: Error) => {
|
|
733
|
+
const params = <span class="cstat-no" title="statement not covered" >{</span>
|
|
554
734
|
api: this.widgetApi,
|
|
555
735
|
content: "error",
|
|
556
736
|
context: { type: "error" as const },
|
|
557
737
|
type: "ERROR_WIDGET",
|
|
558
|
-
domain: this.config?.domain ||
|
|
738
|
+
domain: this.config?.domain || DEFAULT_DOMAIN,
|
|
559
739
|
npmCdn: DEFAULT_NPM_CDN,
|
|
560
|
-
container: this.container ||
|
|
740
|
+
container: this.container || this,
|
|
561
741
|
};
|
|
562
|
-
if (this.type === "EMBED") {
|
|
563
|
-
return new EmbedWidget(params)
|
|
742
|
+
<span class="cstat-no" title="statement not covered" > if (this.type === "EMBED") {</span>
|
|
743
|
+
<span class="cstat-no" title="statement not covered" > return new EmbedWidget(params);</span>
|
|
564
744
|
} else {
|
|
565
|
-
|
|
745
|
+
<span class="cstat-no" title="statement not covered" > return new PopupWidget(params, this.firstChild ? null : undefined);</span>
|
|
566
746
|
}
|
|
567
747
|
};
|
|
568
748
|
|
|
@@ -570,18 +750,18 @@ export default abstract class DeclarativeWidget extends HTMLElement {
|
|
|
570
750
|
* Calls `open` method of `widgetInstance`
|
|
571
751
|
* @throws Throws an Error if called before the widget has loaded
|
|
572
752
|
*/
|
|
573
|
-
open() {
|
|
574
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.widgetInstance) <span class="cstat-no" title="statement not covered" >throw new Error("Widget has not loaded yet");</span>
|
|
575
|
-
this.widgetInstance.open()
|
|
753
|
+
<span class="fstat-no" title="function not covered" > open(</span>) {
|
|
754
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.widgetInstance) <span class="cstat-no" title="statement not covered" >throw new Error("Widget has not loaded yet");</span></span>
|
|
755
|
+
<span class="cstat-no" title="statement not covered" > this.widgetInstance.open();</span>
|
|
576
756
|
}
|
|
577
757
|
|
|
578
758
|
/**
|
|
579
759
|
* Calls `close` method of `widgetInstance`
|
|
580
760
|
* @throws Throws an Error if called before the widget has loaded
|
|
581
761
|
*/
|
|
582
|
-
close() {
|
|
583
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.widgetInstance) <span class="cstat-no" title="statement not covered" >throw new Error("Widget has not loaded yet");</span>
|
|
584
|
-
this.widgetInstance.close()
|
|
762
|
+
<span class="fstat-no" title="function not covered" > close(</span>) {
|
|
763
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.widgetInstance) <span class="cstat-no" title="statement not covered" >throw new Error("Widget has not loaded yet");</span></span>
|
|
764
|
+
<span class="cstat-no" title="statement not covered" > this.widgetInstance.close();</span>
|
|
585
765
|
}
|
|
586
766
|
|
|
587
767
|
reload = this.renderWidget;
|
|
@@ -595,7 +775,7 @@ export default abstract class DeclarativeWidget extends HTMLElement {
|
|
|
595
775
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
596
776
|
Code coverage generated by
|
|
597
777
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
598
|
-
at 2023-07-
|
|
778
|
+
at 2023-07-21T16:52:22.022Z
|
|
599
779
|
</div>
|
|
600
780
|
<script src="prettify.js"></script>
|
|
601
781
|
<script>
|