@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">99% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>99/100</span>
28
+ <span class='fraction'>100/100</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">94.44% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>34/36</span>
35
+ <span class='fraction'>36/36</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">90.9% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/11</span>
42
+ <span class='fraction'>11/11</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">98.96% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>96/97</span>
49
+ <span class='fraction'>97/97</span>
50
50
  </div>
51
51
 
52
52
 
@@ -387,7 +387,23 @@
387
387
  <a name='L322'></a><a href='#L322'>322</a>
388
388
  <a name='L323'></a><a href='#L323'>323</a>
389
389
  <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
391
407
  <span class="cline-any cline-yes">4x</span>
392
408
  <span class="cline-any cline-neutral">&nbsp;</span>
393
409
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -413,7 +429,6 @@
413
429
  <span class="cline-any cline-neutral">&nbsp;</span>
414
430
  <span class="cline-any cline-neutral">&nbsp;</span>
415
431
  <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
432
  <span class="cline-any cline-yes">4x</span>
418
433
  <span class="cline-any cline-neutral">&nbsp;</span>
419
434
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -437,11 +452,28 @@
437
452
  <span class="cline-any cline-neutral">&nbsp;</span>
438
453
  <span class="cline-any cline-neutral">&nbsp;</span>
439
454
  <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-yes">69x</span>
441
- <span class="cline-any cline-yes">68x</span>
442
- <span class="cline-any cline-yes">68x</span>
443
- <span class="cline-any cline-yes">68x</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
472
  <span class="cline-any cline-yes">68x</span>
473
+ <span class="cline-any cline-yes">67x</span>
474
+ <span class="cline-any cline-yes">67x</span>
475
+ <span class="cline-any cline-yes">67x</span>
476
+ <span class="cline-any cline-yes">67x</span>
445
477
  <span class="cline-any cline-neutral">&nbsp;</span>
446
478
  <span class="cline-any cline-neutral">&nbsp;</span>
447
479
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -599,7 +631,6 @@
599
631
  <span class="cline-any cline-yes">4x</span>
600
632
  <span class="cline-any cline-yes">4x</span>
601
633
  <span class="cline-any cline-yes">3x</span>
602
- <span class="cline-any cline-yes">3x</span>
603
634
  <span class="cline-any cline-neutral">&nbsp;</span>
604
635
  <span class="cline-any cline-neutral">&nbsp;</span>
605
636
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -708,7 +739,8 @@
708
739
  <span class="cline-any cline-neutral">&nbsp;</span>
709
740
  <span class="cline-any cline-neutral">&nbsp;</span>
710
741
  <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-no">&nbsp;</span>
742
+ <span class="cline-any cline-yes">3x</span>
743
+ <span class="cline-any cline-yes">3x</span>
712
744
  <span class="cline-any cline-neutral">&nbsp;</span>
713
745
  <span class="cline-any cline-neutral">&nbsp;</span>
714
746
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { debug } from "debug";
@@ -733,15 +765,31 @@ import Widget, { Params } from "./Widget";
733
765
  const _log = debug("squatch-js:widgets");
734
766
  &nbsp;
735
767
  /**
736
- *
737
768
  * `Widgets` is a factory for creating widgets. It's possible to build your own widgets using the
738
769
  * {@link WidgetApi} but most people will prefer to use these easy methods.
739
- *
770
+ * @class
740
771
  */
741
772
  export default class Widgets {
773
+ /**
774
+ * Instance of {@link WidgetApi}
775
+ */
742
776
  api: WidgetApi;
777
+ &nbsp;
778
+ /**
779
+ * Tenant alias of SaaSquatch tenant.
780
+ */
743
781
  tenantAlias: string;
782
+ &nbsp;
783
+ /**
784
+ * SaaSquatch domain for API requests.
785
+ * @default "https://app.referralsaasquatch.com"
786
+ */
744
787
  domain: string;
788
+ &nbsp;
789
+ /**
790
+ * Hosted CDN for npm packages
791
+ * @default "https://fast.ssqt.io/npm"
792
+ */
745
793
  npmCdn: string;
746
794
  &nbsp;
747
795
  /**
@@ -922,7 +970,6 @@ export default class Widgets {
922
970
  if (opts.widgetUrlMappings) {
923
971
  opts.widgetUrlMappings.forEach((rule) =&gt; {
924
972
  if (Widgets._matchesUrl(rule.url)) {
925
- console.log({ response, rule });
926
973
  if (
927
974
  rule.widgetType !== "CONVERSION_WIDGET" ||
928
975
  response.user?.referredBy?.code
@@ -1030,9 +1077,10 @@ export default class Widgets {
1030
1077
  * @param {string} rule A regular expression
1031
1078
  * @returns {boolean} true if rule matches Url, false otherwise
1032
1079
  */
1033
- private <span class="fstat-no" title="function not covered" >static </span>_matchesUrl(rule) {
1080
+ private static _matchesUrl(rule) {
1034
1081
  // If there were no matches, null is returned.
1035
- <span class="cstat-no" title="statement not covered" > return window.location.href.match(new RegExp(rule)) ? true : false;</span>
1082
+ console.log({ href: window.location.href });
1083
+ return window.location.href.match(new RegExp(rule)) ? true : false;
1036
1084
  }
1037
1085
  }
1038
1086
  &nbsp;</pre></td></tr></table></pre>
@@ -1042,7 +1090,7 @@ export default class Widgets {
1042
1090
  <div class='footer quiet pad2 space-top1 center small'>
1043
1091
  Code coverage generated by
1044
1092
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1045
- at 2023-07-19T18:26:05.229Z
1093
+ at 2023-07-21T16:36:23.429Z
1046
1094
  </div>
1047
1095
  <script src="prettify.js"></script>
1048
1096
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">62.96% </span>
26
+ <span class="strong">29.62% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>17/27</span>
28
+ <span class='fraction'>8/27</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">44.44% </span>
33
+ <span class="strong">11.11% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>4/9</span>
35
+ <span class='fraction'>1/9</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">75% </span>
40
+ <span class="strong">50% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/4</span>
42
+ <span class='fraction'>2/4</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">68% </span>
47
+ <span class="strong">32% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>17/25</span>
49
+ <span class='fraction'>8/25</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 medium'></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>
@@ -137,9 +137,9 @@
137
137
  <a name='L72'></a><a href='#L72'>72</a>
138
138
  <a name='L73'></a><a href='#L73'>73</a>
139
139
  <a name='L74'></a><a href='#L74'>74</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-yes">3x</span>
140
+ <span class="cline-any cline-yes">2x</span>
141
141
  <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-yes">3x</span>
142
+ <span class="cline-any cline-yes">2x</span>
143
143
  <span class="cline-any cline-neutral">&nbsp;</span>
144
144
  <span class="cline-any cline-neutral">&nbsp;</span>
145
145
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -148,7 +148,7 @@
148
148
  <span class="cline-any cline-neutral">&nbsp;</span>
149
149
  <span class="cline-any cline-neutral">&nbsp;</span>
150
150
  <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-yes">3x</span>
151
+ <span class="cline-any cline-yes">2x</span>
152
152
  <span class="cline-any cline-neutral">&nbsp;</span>
153
153
  <span class="cline-any cline-neutral">&nbsp;</span>
154
154
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -158,27 +158,27 @@
158
158
  <span class="cline-any cline-neutral">&nbsp;</span>
159
159
  <span class="cline-any cline-neutral">&nbsp;</span>
160
160
  <span class="cline-any cline-neutral">&nbsp;</span>
161
- <span class="cline-any cline-yes">35x</span>
162
- <span class="cline-any cline-yes">35x</span>
163
- <span class="cline-any cline-yes">35x</span>
161
+ <span class="cline-any cline-yes">1x</span>
162
+ <span class="cline-any cline-yes">1x</span>
163
+ <span class="cline-any cline-yes">1x</span>
164
164
  <span class="cline-any cline-neutral">&nbsp;</span>
165
165
  <span class="cline-any cline-neutral">&nbsp;</span>
166
166
  <span class="cline-any cline-neutral">&nbsp;</span>
167
167
  <span class="cline-any cline-neutral">&nbsp;</span>
168
- <span class="cline-any cline-yes">1x</span>
168
+ <span class="cline-any cline-no">&nbsp;</span>
169
169
  <span class="cline-any cline-neutral">&nbsp;</span>
170
- <span class="cline-any cline-yes">1x</span>
171
- <span class="cline-any cline-yes">1x</span>
172
- <span class="cline-any cline-yes">1x</span>
173
- <span class="cline-any cline-yes">1x</span>
174
- <span class="cline-any cline-yes">1x</span>
170
+ <span class="cline-any cline-no">&nbsp;</span>
171
+ <span class="cline-any cline-no">&nbsp;</span>
172
+ <span class="cline-any cline-no">&nbsp;</span>
173
+ <span class="cline-any cline-no">&nbsp;</span>
174
+ <span class="cline-any cline-no">&nbsp;</span>
175
175
  <span class="cline-any cline-neutral">&nbsp;</span>
176
176
  <span class="cline-any cline-neutral">&nbsp;</span>
177
177
  <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">1x</span>
179
- <span class="cline-any cline-yes">1x</span>
178
+ <span class="cline-any cline-no">&nbsp;</span>
179
+ <span class="cline-any cline-no">&nbsp;</span>
180
180
  <span class="cline-any cline-neutral">&nbsp;</span>
181
- <span class="cline-any cline-yes">1x</span>
181
+ <span class="cline-any cline-no">&nbsp;</span>
182
182
  <span class="cline-any cline-neutral">&nbsp;</span>
183
183
  <span class="cline-any cline-neutral">&nbsp;</span>
184
184
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -198,8 +198,8 @@
198
198
  <span class="cline-any cline-neutral">&nbsp;</span>
199
199
  <span class="cline-any cline-neutral">&nbsp;</span>
200
200
  <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-yes">35x</span>
202
- <span class="cline-any cline-yes">35x</span>
201
+ <span class="cline-any cline-yes">1x</span>
202
+ <span class="cline-any cline-yes">1x</span>
203
203
  <span class="cline-any cline-neutral">&nbsp;</span>
204
204
  <span class="cline-any cline-neutral">&nbsp;</span>
205
205
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -237,21 +237,21 @@ export default class AnalyticsApi {
237
237
  clean?.["domain"] || <span class="branch-1 cbranch-no" title="branch not covered" >window.squatchConfig?.domain </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >DEFAULT_DOMAIN;</span>
238
238
  }
239
239
  &nbsp;
240
- pushAnalyticsLoadEvent(params: SQHDetails) {
241
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!params.externalUserId || !params.externalAccountId) <span class="cstat-no" title="statement not covered" >return;</span>
240
+ <span class="fstat-no" title="function not covered" > pushAnalyticsLoadEvent(</span>params: SQHDetails) {
241
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!params.externalUserId || !params.externalAccountId) <span class="cstat-no" title="statement not covered" >return;</span></span>
242
242
  &nbsp;
243
- const tenantAlias = encodeURIComponent(params.tenantAlias);
244
- const accountId = encodeURIComponent(params.externalAccountId);
245
- const userId = encodeURIComponent(params.externalUserId);
246
- const engagementMedium = encodeURIComponent(params.engagementMedium);
247
- const programId = params.programId
243
+ const tenantAlias = <span class="cstat-no" title="statement not covered" >encodeURIComponent(params.tenantAlias);</span>
244
+ const accountId = <span class="cstat-no" title="statement not covered" >encodeURIComponent(params.externalAccountId);</span>
245
+ const userId = <span class="cstat-no" title="statement not covered" >encodeURIComponent(params.externalUserId);</span>
246
+ const engagementMedium = <span class="cstat-no" title="statement not covered" >encodeURIComponent(params.engagementMedium);</span>
247
+ const programId = <span class="cstat-no" title="statement not covered" >params.programId</span>
248
248
  ? `&amp;programId=${encodeURIComponent(params.programId)}`
249
- : <span class="branch-1 cbranch-no" title="branch not covered" >``;</span>
249
+ : ``;
250
250
  &nbsp;
251
- const path = `/a/${tenantAlias}/widgets/analytics/loaded?externalAccountId=${accountId}&amp;externalUserId=${userId}&amp;engagementMedium=${engagementMedium}${programId}`;
252
- const url = this.domain + path;
251
+ const path = <span class="cstat-no" title="statement not covered" >`/a/${tenantAlias}/widgets/analytics/loaded?externalAccountId=${accountId}&amp;externalUserId=${userId}&amp;engagementMedium=${engagementMedium}${programId}`;</span>
252
+ const url = <span class="cstat-no" title="statement not covered" >this.domain + path;</span>
253
253
  &nbsp;
254
- return doPost(url, JSON.stringify({}));
254
+ <span class="cstat-no" title="statement not covered" > return doPost(url, JSON.stringify({}));</span>
255
255
  }
256
256
  &nbsp;
257
257
  <span class="fstat-no" title="function not covered" > pushAnalyticsShareClickedEvent(</span>params: SQHDetails &amp; { shareMedium: string }) {
@@ -289,7 +289,7 @@ export type SQHDetails = {
289
289
  <div class='footer quiet pad2 space-top1 center small'>
290
290
  Code coverage generated by
291
291
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
292
- at 2023-07-19T23:25:49.700Z
292
+ at 2023-07-21T18:05:37.786Z
293
293
  </div>
294
294
  <script src="../prettify.js"></script>
295
295
  <script>