@saasquatch/squatch-js 2.6.0-3 → 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/.github/workflows/static.yml +89 -0
- package/coverage/clover.xml +843 -3
- package/coverage/coverage-final.json +20 -1
- package/coverage/lcov-report/DeclarativeWidget.ts.html +790 -0
- package/coverage/lcov-report/Widgets.ts.html +1105 -0
- package/coverage/lcov-report/api/AnalyticsApi.ts.html +22 -22
- package/coverage/lcov-report/api/EventsApi.ts.html +352 -0
- package/coverage/lcov-report/api/WidgetApi.ts.html +84 -57
- 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 +110 -68
- 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 +1561 -0
- package/dist/api/WidgetApi.d.ts +2 -2
- package/dist/squatch.d.ts +28 -1
- package/dist/squatch.esm.js +205 -47
- package/dist/squatch.esm.js.map +1 -1
- package/dist/squatch.js +205 -47
- package/dist/squatch.js.map +1 -1
- package/dist/squatch.min.js +1 -1
- package/dist/widgets/EmbedWidget.d.ts +8 -0
- package/dist/widgets/PopupWidget.d.ts +6 -1
- package/dist/widgets/Widgets.d.ts +15 -2
- package/dist/widgets/declarative/DeclarativeWidget.d.ts +66 -2
- package/dist/widgets/declarative/DeclarativeWidgets.d.ts +22 -0
- package/package.json +2 -2
|
@@ -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">46% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>23/50</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">24.13% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>7/29</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">42.85% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>3/7</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">47.91% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>23/48</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -245,7 +245,16 @@
|
|
|
245
245
|
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
246
|
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
247
|
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
249
258
|
<span class="cline-any cline-neutral"> </span>
|
|
250
259
|
<span class="cline-any cline-neutral"> </span>
|
|
251
260
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -290,12 +299,12 @@
|
|
|
290
299
|
<span class="cline-any cline-neutral"> </span>
|
|
291
300
|
<span class="cline-any cline-neutral"> </span>
|
|
292
301
|
<span class="cline-any cline-neutral"> </span>
|
|
293
|
-
<span class="cline-any cline-yes">
|
|
294
|
-
<span class="cline-any cline-yes">
|
|
302
|
+
<span class="cline-any cline-yes">1x</span>
|
|
303
|
+
<span class="cline-any cline-yes">1x</span>
|
|
295
304
|
<span class="cline-any cline-neutral"> </span>
|
|
296
|
-
<span class="cline-any cline-yes">
|
|
297
|
-
<span class="cline-any cline-yes">
|
|
298
|
-
<span class="cline-any cline-yes">
|
|
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>
|
|
299
308
|
<span class="cline-any cline-neutral"> </span>
|
|
300
309
|
<span class="cline-any cline-neutral"> </span>
|
|
301
310
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -320,6 +329,7 @@
|
|
|
320
329
|
<span class="cline-any cline-neutral"> </span>
|
|
321
330
|
<span class="cline-any cline-neutral"> </span>
|
|
322
331
|
<span class="cline-any cline-neutral"> </span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
333
|
<span class="cline-any cline-no"> </span>
|
|
324
334
|
<span class="cline-any cline-neutral"> </span>
|
|
325
335
|
<span class="cline-any cline-no"> </span>
|
|
@@ -330,6 +340,10 @@
|
|
|
330
340
|
<span class="cline-any cline-neutral"> </span>
|
|
331
341
|
<span class="cline-any cline-no"> </span>
|
|
332
342
|
<span class="cline-any cline-neutral"> </span>
|
|
343
|
+
<span class="cline-any cline-neutral"> </span>
|
|
344
|
+
<span class="cline-any cline-neutral"> </span>
|
|
345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
347
|
<span class="cline-any cline-no"> </span>
|
|
334
348
|
<span class="cline-any cline-no"> </span>
|
|
335
349
|
<span class="cline-any cline-no"> </span>
|
|
@@ -351,24 +365,24 @@
|
|
|
351
365
|
<span class="cline-any cline-neutral"> </span>
|
|
352
366
|
<span class="cline-any cline-neutral"> </span>
|
|
353
367
|
<span class="cline-any cline-neutral"> </span>
|
|
354
|
-
<span class="cline-any cline-
|
|
355
|
-
<span class="cline-any cline-
|
|
356
|
-
<span class="cline-any cline-
|
|
368
|
+
<span class="cline-any cline-yes">1x</span>
|
|
369
|
+
<span class="cline-any cline-yes">1x</span>
|
|
370
|
+
<span class="cline-any cline-yes">1x</span>
|
|
357
371
|
<span class="cline-any cline-neutral"> </span>
|
|
358
|
-
<span class="cline-any cline-
|
|
359
|
-
<span class="cline-any cline-
|
|
372
|
+
<span class="cline-any cline-yes">1x</span>
|
|
373
|
+
<span class="cline-any cline-yes">1x</span>
|
|
360
374
|
<span class="cline-any cline-neutral"> </span>
|
|
361
375
|
<span class="cline-any cline-neutral"> </span>
|
|
362
|
-
<span class="cline-any cline-
|
|
376
|
+
<span class="cline-any cline-yes">1x</span>
|
|
363
377
|
<span class="cline-any cline-neutral"> </span>
|
|
364
378
|
<span class="cline-any cline-neutral"> </span>
|
|
365
|
-
<span class="cline-any cline-
|
|
379
|
+
<span class="cline-any cline-yes">1x</span>
|
|
366
380
|
<span class="cline-any cline-neutral"> </span>
|
|
367
|
-
<span class="cline-any cline-
|
|
368
|
-
<span class="cline-any cline-
|
|
369
|
-
<span class="cline-any cline-
|
|
370
|
-
<span class="cline-any cline-
|
|
371
|
-
<span class="cline-any cline-
|
|
381
|
+
<span class="cline-any cline-yes">1x</span>
|
|
382
|
+
<span class="cline-any cline-yes">1x</span>
|
|
383
|
+
<span class="cline-any cline-yes">1x</span>
|
|
384
|
+
<span class="cline-any cline-yes">1x</span>
|
|
385
|
+
<span class="cline-any cline-yes">1x</span>
|
|
372
386
|
<span class="cline-any cline-neutral"> </span>
|
|
373
387
|
<span class="cline-any cline-neutral"> </span>
|
|
374
388
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -381,7 +395,7 @@
|
|
|
381
395
|
<span class="cline-any cline-neutral"> </span>
|
|
382
396
|
<span class="cline-any cline-no"> </span>
|
|
383
397
|
<span class="cline-any cline-neutral"> </span>
|
|
384
|
-
<span class="cline-any cline-
|
|
398
|
+
<span class="cline-any cline-yes">1x</span>
|
|
385
399
|
<span class="cline-any cline-neutral"> </span>
|
|
386
400
|
<span class="cline-any cline-neutral"> </span>
|
|
387
401
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -418,12 +432,16 @@
|
|
|
418
432
|
<span class="cline-any cline-neutral"> </span>
|
|
419
433
|
<span class="cline-any cline-neutral"> </span>
|
|
420
434
|
<span class="cline-any cline-neutral"> </span>
|
|
421
|
-
<span class="cline-any cline-no"> </span>
|
|
422
435
|
<span class="cline-any cline-neutral"> </span>
|
|
423
436
|
<span class="cline-any cline-neutral"> </span>
|
|
424
437
|
<span class="cline-any cline-no"> </span>
|
|
425
438
|
<span class="cline-any cline-neutral"> </span>
|
|
426
439
|
<span class="cline-any cline-neutral"> </span>
|
|
440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
441
|
+
<span class="cline-any cline-no"> </span>
|
|
442
|
+
<span class="cline-any cline-no"> </span>
|
|
443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-no"> </span>
|
|
427
445
|
<span class="cline-any cline-no"> </span>
|
|
428
446
|
<span class="cline-any cline-no"> </span>
|
|
429
447
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -481,7 +499,7 @@ export default class WidgetApi {
|
|
|
481
499
|
}
|
|
482
500
|
|
|
483
501
|
/**
|
|
484
|
-
* Creates/upserts user.
|
|
502
|
+
* Creates/upserts user, requests widget template.
|
|
485
503
|
*
|
|
486
504
|
* @param {Object} params Parameters for request
|
|
487
505
|
* @param {Object?} params.user The user details
|
|
@@ -501,6 +519,7 @@ export default class WidgetApi {
|
|
|
501
519
|
widgetType,
|
|
502
520
|
engagementMedium = <span class="branch-0 cbranch-no" title="branch not covered" >"POPUP",</span>
|
|
503
521
|
jwt,
|
|
522
|
+
locale,
|
|
504
523
|
user,
|
|
505
524
|
} = <span class="cstat-no" title="statement not covered" >clean as WithRequired<WidgetConfig, "user">;</span>
|
|
506
525
|
|
|
@@ -510,7 +529,11 @@ export default class WidgetApi {
|
|
|
510
529
|
: null;
|
|
511
530
|
const userId = <span class="cstat-no" title="statement not covered" >user.id ? encodeURIComponent(user.id) : null;</span>
|
|
512
531
|
|
|
513
|
-
const optionalParams = <span class="cstat-no" title="statement not covered" >_buildParams({
|
|
532
|
+
const optionalParams = <span class="cstat-no" title="statement not covered" >_buildParams({</span>
|
|
533
|
+
widgetType,
|
|
534
|
+
engagementMedium,
|
|
535
|
+
locale,
|
|
536
|
+
});
|
|
514
537
|
|
|
515
538
|
const path = <span class="cstat-no" title="statement not covered" >`/api/v1/${tenantAlias}/widget/account/${accountId}/user/${userId}/upsert${optionalParams}`;</span>
|
|
516
539
|
const url = <span class="cstat-no" title="statement not covered" >this.domain + path;</span>
|
|
@@ -520,7 +543,7 @@ export default class WidgetApi {
|
|
|
520
543
|
}
|
|
521
544
|
|
|
522
545
|
/**
|
|
523
|
-
*
|
|
546
|
+
* Requests widget template
|
|
524
547
|
*
|
|
525
548
|
* @param {Object} params Parameters for request
|
|
526
549
|
* @param {Object} params.user The user details
|
|
@@ -532,29 +555,29 @@ export default class WidgetApi {
|
|
|
532
555
|
* to validate the data (can be disabled)
|
|
533
556
|
* @return {Promise} template html if true.
|
|
534
557
|
*/
|
|
535
|
-
|
|
536
|
-
const raw =
|
|
537
|
-
const clean =
|
|
538
|
-
const { widgetType, engagementMedium =
|
|
558
|
+
render(params: WidgetConfig): Promise<any> {
|
|
559
|
+
const raw = params as unknown;
|
|
560
|
+
const clean = validatePasswordlessConfig(raw);
|
|
561
|
+
const { widgetType, engagementMedium = "POPUP", jwt, user } = clean;
|
|
539
562
|
|
|
540
|
-
const tenantAlias =
|
|
541
|
-
const accountId =
|
|
542
|
-
? encodeURIComponent(user.accountId)
|
|
563
|
+
const tenantAlias = encodeURIComponent(this.tenantAlias);
|
|
564
|
+
const accountId = user?.accountId
|
|
565
|
+
? <span class="branch-0 cbranch-no" title="branch not covered" >encodeURIComponent(user.accountId)</span>
|
|
543
566
|
: null;
|
|
544
|
-
const userId = <span class="
|
|
567
|
+
const userId = user?.id ? <span class="branch-0 cbranch-no" title="branch not covered" >encodeURIComponent(user.id) </span>: null;
|
|
545
568
|
|
|
546
569
|
const locale =
|
|
547
|
-
|
|
570
|
+
clean.locale ?? validateLocale(navigator.language.replace(/\-/g, "_"));
|
|
548
571
|
|
|
549
|
-
const path =
|
|
550
|
-
const url =
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
const res =
|
|
572
|
+
const path = `/api/v1/${tenantAlias}/graphql`;
|
|
573
|
+
const url = this.domain + path;
|
|
574
|
+
return new Promise(async (resolve, reject) => {
|
|
575
|
+
try {
|
|
576
|
+
const res = await doQuery(
|
|
554
577
|
url,
|
|
555
578
|
RENDER_WIDGET_QUERY,
|
|
556
579
|
{
|
|
557
|
-
user: userId && accountId
|
|
580
|
+
user: userId && <span class="branch-1 cbranch-no" title="branch not covered" >accountId </span>? <span class="branch-0 cbranch-no" title="branch not covered" >{ id: userId, accountId } </span>: null,
|
|
558
581
|
engagementMedium,
|
|
559
582
|
widgetType,
|
|
560
583
|
locale,
|
|
@@ -563,7 +586,7 @@ export default class WidgetApi {
|
|
|
563
586
|
);
|
|
564
587
|
<span class="cstat-no" title="statement not covered" > resolve(res?.data?.renderWidget);</span>
|
|
565
588
|
} catch (e) {
|
|
566
|
-
|
|
589
|
+
reject(e);
|
|
567
590
|
}
|
|
568
591
|
});
|
|
569
592
|
}
|
|
@@ -596,18 +619,22 @@ export default class WidgetApi {
|
|
|
596
619
|
function <span class="fstat-no" title="function not covered" >_buildParams(</span>{
|
|
597
620
|
widgetType,
|
|
598
621
|
engagementMedium,
|
|
622
|
+
locale,
|
|
599
623
|
}: {
|
|
600
|
-
widgetType?: WidgetType;
|
|
601
624
|
engagementMedium: EngagementMedium;
|
|
625
|
+
widgetType?: WidgetType;
|
|
626
|
+
locale?: string;
|
|
602
627
|
}) {
|
|
603
|
-
const
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
const
|
|
607
|
-
widgetType
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
<span class="cstat-no" title="statement not covered" >
|
|
628
|
+
const engagementMediumP = <span class="cstat-no" title="statement not covered" >`engagementMedium=${encodeURIComponent(</span>
|
|
629
|
+
engagementMedium
|
|
630
|
+
)}`;
|
|
631
|
+
const widgetTypeP =
|
|
632
|
+
<span class="cstat-no" title="statement not covered" > widgetType && `widgetType=${encodeURIComponent(widgetType)}`;</span>
|
|
633
|
+
const localeP = <span class="cstat-no" title="statement not covered" >locale && `locale=${encodeURIComponent(locale)}`;</span>
|
|
634
|
+
|
|
635
|
+
const params = <span class="cstat-no" title="statement not covered" >[engagementMediumP, widgetTypeP, localeP].filter(<span class="fstat-no" title="function not covered" >(x</span>) => <span class="cstat-no" title="statement not covered" >!!x)</span>;</span>
|
|
636
|
+
const queryString = <span class="cstat-no" title="statement not covered" >`?${params.join("&")}`;</span>
|
|
637
|
+
<span class="cstat-no" title="statement not covered" > return queryString;</span>
|
|
611
638
|
}
|
|
612
639
|
</pre></td></tr></table></pre>
|
|
613
640
|
|
|
@@ -616,7 +643,7 @@ function <span class="fstat-no" title="function not covered" >_buildParams(</spa
|
|
|
616
643
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
617
644
|
Code coverage generated by
|
|
618
645
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
619
|
-
at 2023-07-
|
|
646
|
+
at 2023-07-21T18:05:37.786Z
|
|
620
647
|
</div>
|
|
621
648
|
<script src="../prettify.js"></script>
|
|
622
649
|
<script>
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
116
116
|
Code coverage generated by
|
|
117
117
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
118
|
-
at 2023-07-
|
|
118
|
+
at 2023-07-21T18:05:37.786Z
|
|
119
119
|
</div>
|
|
120
120
|
<script src="../prettify.js"></script>
|
|
121
121
|
<script>
|