@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.
Files changed (36) hide show
  1. package/coverage/clover.xml +843 -64
  2. package/coverage/coverage-final.json +19 -1
  3. package/coverage/lcov-report/DeclarativeWidget.ts.html +298 -118
  4. package/coverage/lcov-report/Widgets.ts.html +70 -22
  5. package/coverage/lcov-report/api/AnalyticsApi.ts.html +38 -38
  6. package/coverage/lcov-report/api/EventsApi.ts.html +352 -0
  7. package/coverage/lcov-report/api/WidgetApi.ts.html +88 -61
  8. package/coverage/lcov-report/api/graphql.ts.html +1 -1
  9. package/coverage/lcov-report/squatch.ts.html +721 -0
  10. package/coverage/lcov-report/utils/cookieUtils.ts.html +1 -1
  11. package/coverage/lcov-report/utils/decodeUserJwt.ts.html +1 -1
  12. package/coverage/lcov-report/utils/domready.ts.html +1 -1
  13. package/coverage/lcov-report/utils/io.ts.html +7 -7
  14. package/coverage/lcov-report/utils/utmUtils.ts.html +22 -22
  15. package/coverage/lcov-report/utils/validate.ts.html +41 -41
  16. package/coverage/lcov-report/validate.ts.html +1 -1
  17. package/coverage/lcov-report/widgets/EmbedWidget.ts.html +24 -3
  18. package/coverage/lcov-report/widgets/PopupWidget.ts.html +17 -2
  19. package/coverage/lcov-report/widgets/Widget.ts.html +1 -1
  20. package/coverage/lcov-report/widgets/Widgets.ts.html +61 -16
  21. package/coverage/lcov-report/widgets/declarative/DeclarativeWidget.ts.html +368 -74
  22. package/coverage/lcov-report/widgets/declarative/DeclarativeWidgets.ts.html +388 -0
  23. package/coverage/lcov.info +1553 -125
  24. package/dist/api/WidgetApi.d.ts +2 -2
  25. package/dist/squatch.d.ts +28 -1
  26. package/dist/squatch.esm.js +176 -29
  27. package/dist/squatch.esm.js.map +1 -1
  28. package/dist/squatch.js +176 -29
  29. package/dist/squatch.js.map +1 -1
  30. package/dist/squatch.min.js +1 -1
  31. package/dist/widgets/EmbedWidget.d.ts +5 -0
  32. package/dist/widgets/PopupWidget.d.ts +6 -1
  33. package/dist/widgets/Widgets.d.ts +15 -2
  34. package/dist/widgets/declarative/DeclarativeWidget.d.ts +57 -1
  35. package/dist/widgets/declarative/DeclarativeWidgets.d.ts +22 -0
  36. 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">93.75% </span>
26
+ <span class="strong">38.09% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>60/64</span>
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">73.8% </span>
33
+ <span class="strong">7.14% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>31/42</span>
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">100% </span>
40
+ <span class="strong">16.66% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>12/12</span>
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">100% </span>
47
+ <span class="strong">42.1% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>58/58</span>
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 high'></div>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
242
- <span class="cline-any cline-yes">3x</span>
243
- <span class="cline-any cline-yes">3x</span>
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">&nbsp;</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">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-neutral">&nbsp;</span>
312
+ <span class="cline-any cline-yes">1x</span>
313
+ <span class="cline-any cline-yes">1x</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-yes">1x</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
244
317
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
249
319
  <span class="cline-any cline-neutral">&nbsp;</span>
250
320
  <span class="cline-any cline-neutral">&nbsp;</span>
251
321
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
255
- <span class="cline-any cline-yes">3x</span>
256
323
  <span class="cline-any cline-neutral">&nbsp;</span>
257
- <span class="cline-any cline-yes">3x</span>
258
324
  <span class="cline-any cline-neutral">&nbsp;</span>
259
325
  <span class="cline-any cline-neutral">&nbsp;</span>
260
326
  <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-yes">1x</span>
261
328
  <span class="cline-any cline-neutral">&nbsp;</span>
262
329
  <span class="cline-any cline-neutral">&nbsp;</span>
263
330
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -271,52 +338,34 @@
271
338
  <span class="cline-any cline-neutral">&nbsp;</span>
272
339
  <span class="cline-any cline-neutral">&nbsp;</span>
273
340
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
277
342
  <span class="cline-any cline-neutral">&nbsp;</span>
278
343
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
284
- <span class="cline-any cline-yes">56x</span>
285
345
  <span class="cline-any cline-neutral">&nbsp;</span>
286
346
  <span class="cline-any cline-neutral">&nbsp;</span>
287
347
  <span class="cline-any cline-neutral">&nbsp;</span>
288
- <span class="cline-any cline-yes">60x</span>
289
348
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">57x</span>
291
349
  <span class="cline-any cline-neutral">&nbsp;</span>
292
350
  <span class="cline-any cline-neutral">&nbsp;</span>
293
351
  <span class="cline-any cline-neutral">&nbsp;</span>
294
- <span class="cline-any cline-yes">57x</span>
295
352
  <span class="cline-any cline-neutral">&nbsp;</span>
296
353
  <span class="cline-any cline-neutral">&nbsp;</span>
297
354
  <span class="cline-any cline-neutral">&nbsp;</span>
298
355
  <span class="cline-any cline-neutral">&nbsp;</span>
299
356
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
303
- <span class="cline-any cline-yes">41x</span>
304
358
  <span class="cline-any cline-neutral">&nbsp;</span>
305
359
  <span class="cline-any cline-neutral">&nbsp;</span>
306
360
  <span class="cline-any cline-neutral">&nbsp;</span>
307
361
  <span class="cline-any cline-neutral">&nbsp;</span>
308
362
  <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-yes">41x</span>
310
363
  <span class="cline-any cline-neutral">&nbsp;</span>
311
364
  <span class="cline-any cline-neutral">&nbsp;</span>
312
365
  <span class="cline-any cline-neutral">&nbsp;</span>
313
366
  <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">16x</span>
315
367
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
319
- <span class="cline-any cline-yes">16x</span>
320
369
  <span class="cline-any cline-neutral">&nbsp;</span>
321
370
  <span class="cline-any cline-neutral">&nbsp;</span>
322
371
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -324,94 +373,165 @@
324
373
  <span class="cline-any cline-neutral">&nbsp;</span>
325
374
  <span class="cline-any cline-neutral">&nbsp;</span>
326
375
  <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-yes">12x</span>
328
376
  <span class="cline-any cline-neutral">&nbsp;</span>
329
377
  <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-yes">16x</span>
331
378
  <span class="cline-any cline-neutral">&nbsp;</span>
332
379
  <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-yes">56x</span>
334
380
  <span class="cline-any cline-neutral">&nbsp;</span>
335
381
  <span class="cline-any cline-neutral">&nbsp;</span>
336
382
  <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-yes">53x</span>
338
383
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
340
387
  <span class="cline-any cline-neutral">&nbsp;</span>
341
388
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
343
394
  <span class="cline-any cline-neutral">&nbsp;</span>
344
395
  <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-yes">2x</span>
345
397
  <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-yes">53x</span>
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">&nbsp;</span>
349
- <span class="cline-any cline-yes">25x</span>
350
400
  <span class="cline-any cline-neutral">&nbsp;</span>
351
401
  <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-yes">2x</span>
352
403
  <span class="cline-any cline-neutral">&nbsp;</span>
353
404
  <span class="cline-any cline-neutral">&nbsp;</span>
354
405
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
358
- <span class="cline-any cline-yes">64x</span>
359
407
  <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-yes">60x</span>
361
- <span class="cline-any cline-yes">44x</span>
408
+ <span class="cline-any cline-no">&nbsp;</span>
409
+ <span class="cline-any cline-no">&nbsp;</span>
362
410
  <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-yes">16x</span>
411
+ <span class="cline-any cline-no">&nbsp;</span>
364
412
  <span class="cline-any cline-neutral">&nbsp;</span>
365
413
  <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-yes">57x</span>
367
414
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
371
416
  <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
372
418
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
376
420
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
422
+ <span class="cline-any cline-no">&nbsp;</span>
380
423
  <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-no">&nbsp;</span>
425
+ <span class="cline-any cline-no">&nbsp;</span>
381
426
  <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-no">&nbsp;</span>
382
428
  <span class="cline-any cline-neutral">&nbsp;</span>
383
429
  <span class="cline-any cline-neutral">&nbsp;</span>
384
430
  <span class="cline-any cline-neutral">&nbsp;</span>
385
431
  <span class="cline-any cline-neutral">&nbsp;</span>
386
432
  <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-no">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-no">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
390
- <span class="cline-any cline-yes">1x</span>
391
443
  <span class="cline-any cline-neutral">&nbsp;</span>
392
444
  <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-no">&nbsp;</span>
393
446
  <span class="cline-any cline-neutral">&nbsp;</span>
394
447
  <span class="cline-any cline-neutral">&nbsp;</span>
395
448
  <span class="cline-any cline-neutral">&nbsp;</span>
396
449
  <span class="cline-any cline-neutral">&nbsp;</span>
397
450
  <span class="cline-any cline-neutral">&nbsp;</span>
398
451
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
402
453
  <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-no">&nbsp;</span>
455
+ <span class="cline-any cline-no">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-no">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
+ <span class="cline-any cline-neutral">&nbsp;</span>
463
+ <span class="cline-any cline-neutral">&nbsp;</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-no">&nbsp;</span>
469
+ <span class="cline-any cline-no">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-no">&nbsp;</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span>
473
+ <span class="cline-any cline-no">&nbsp;</span>
474
+ <span class="cline-any cline-no">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-no">&nbsp;</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-no">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-no">&nbsp;</span>
482
+ <span class="cline-any cline-no">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-no">&nbsp;</span>
490
+ <span class="cline-any cline-no">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
492
  <span class="cline-any cline-neutral">&nbsp;</span>
404
493
  <span class="cline-any cline-neutral">&nbsp;</span>
405
494
  <span class="cline-any cline-neutral">&nbsp;</span>
406
495
  <span class="cline-any cline-neutral">&nbsp;</span>
407
496
  <span class="cline-any cline-neutral">&nbsp;</span>
408
497
  <span class="cline-any cline-yes">4x</span>
409
- <span class="cline-any cline-yes">4x</span>
498
+ <span class="cline-any cline-no">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
503
  <span class="cline-any cline-neutral">&nbsp;</span>
411
504
  <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-yes">56x</span>
413
- <span class="cline-any cline-yes">56x</span>
414
- <span class="cline-any cline-yes">56x</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-no">&nbsp;</span>
508
+ <span class="cline-any cline-no">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-no">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-no">&nbsp;</span>
520
+ <span class="cline-any cline-no">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-neutral">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-no">&nbsp;</span>
529
+ <span class="cline-any cline-no">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
416
536
  <span class="cline-any cline-neutral">&nbsp;</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
  &nbsp;
430
550
  const _log = debug("sqh:DeclarativeWidget");
431
551
  &nbsp;
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
+ &nbsp;
569
+ /**
570
+ * Signed JWT containing user information
571
+ * @default window.squatchToken
572
+ */
434
573
  token: string | undefined;
574
+ &nbsp;
575
+ /**
576
+ * Tenant alias of SaaSquatch tenant
577
+ * @default window.squatchTenant
578
+ */
435
579
  tenant: string | undefined;
580
+ &nbsp;
581
+ /**
582
+ * widgetType of widget to load
583
+ */
436
584
  widgetType: string | undefined;
585
+ &nbsp;
586
+ /**
587
+ * Locale to render the widget in
588
+ */
437
589
  locale: string | undefined;
438
590
  &nbsp;
591
+ /**
592
+ * Instance of {@link WidgetApi}
593
+ */
439
594
  widgetApi: WidgetApi;
595
+ &nbsp;
596
+ /**
597
+ * Instance of {@link AnalyticsApi}
598
+ */
440
599
  analyticsApi: AnalyticsApi;
441
600
  &nbsp;
442
- type: "EMBED" | "POPUP";
601
+ /**
602
+ * Instance of {@link EmbedWidget} or {@link PopupWidget}
603
+ */
443
604
  widgetInstance: EmbedWidget | PopupWidget;
444
605
  &nbsp;
606
+ /**
607
+ * Determines whether to render the widget as an embedding widget or popup widget.
608
+ */
609
+ type: "EMBED" | "POPUP";
610
+ &nbsp;
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
  &nbsp;
@@ -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
- &nbsp;
459
- this.locale = validateLocale(navigator.language.replace(/\-/g, "_"));
460
628
  }
461
629
  &nbsp;
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
  &nbsp;
465
633
  this.widgetApi = new WidgetApi({
466
- tenantAlias: config?.tenantAlias || this.tenant,
467
- domain: config?.domain || this.config?.domain || <span class="branch-2 cbranch-no" title="branch not covered" >DEFAULT_DOMAIN,</span>
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 || <span class="branch-2 cbranch-no" title="branch not covered" >DEFAULT_DOMAIN,</span>
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
  &nbsp;
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
  &nbsp;
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((res) =&gt; this._setWidget(res.template, { type: "passwordless" }))
652
+ .then(<span class="fstat-no" title="function not covered" >(r</span>es) =&gt; <span class="cstat-no" title="statement not covered" >this._setWidget(res.template, { type: "passwordless" }))</span>
485
653
  .catch(this.setErrorWidget);
486
654
  }
487
655
  &nbsp;
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
  &nbsp;
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
  &nbsp;
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((res) =&gt; this._setWidget(res.template, { type: "upsert" }))
670
+ .then(<span class="fstat-no" title="function not covered" >(r</span>es) =&gt; <span class="cstat-no" title="statement not covered" >this._setWidget(res.template, { type: "upsert" }))</span>
503
671
  .catch(this.setErrorWidget);
504
672
  &nbsp;
505
- return widgetInstance;
673
+ <span class="cstat-no" title="statement not covered" > return widgetInstance;</span>
506
674
  }
507
675
  &nbsp;
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
  ) =&gt; {
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 || <span class="branch-1 cbranch-no" title="branch not covered" >DEFAULT_DOMAIN,</span>
685
+ domain: this.config?.domain || DEFAULT_DOMAIN,
518
686
  npmCdn: DEFAULT_NPM_CDN,
519
- container: this.container || <span class="branch-1 cbranch-no" title="branch not covered" >this,</span>
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
  &nbsp;
528
- async getWidgetInstance() {
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
  &nbsp;
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
  &nbsp;
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
  &nbsp;
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
  &nbsp;
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
  &nbsp;
547
- async renderWidget() {
548
- await this.getWidgetInstance();
549
- await this.widgetInstance.load();
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
  &nbsp;
552
- setErrorWidget = (e: Error) =&gt; {
553
- const params = {
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) =&gt; {
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 || <span class="branch-1 cbranch-no" title="branch not covered" >DEFAULT_DOMAIN,</span>
738
+ domain: this.config?.domain || DEFAULT_DOMAIN,
559
739
  npmCdn: DEFAULT_NPM_CDN,
560
- container: this.container || <span class="branch-1 cbranch-no" title="branch not covered" >this,</span>
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
- return new PopupWidget(params, this.firstChild ? <span class="branch-0 cbranch-no" title="branch not covered" >null </span>: undefined);
745
+ <span class="cstat-no" title="statement not covered" > return new PopupWidget(params, this.firstChild ? null : undefined);</span>
566
746
  }
567
747
  };
568
748
  &nbsp;
@@ -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
  &nbsp;
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
  &nbsp;
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-20T20:10:31.684Z
778
+ at 2023-07-21T16:52:22.022Z
599
779
  </div>
600
780
  <script src="prettify.js"></script>
601
781
  <script>