@saasquatch/squatch-js 2.6.0-0 → 2.6.0-2
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/README.md +87 -68
- package/coverage/clover.xml +3 -885
- package/coverage/coverage-final.json +1 -23
- package/coverage/lcov-report/WidgetApi.ts.html +631 -0
- package/coverage/lcov-report/api/AnalyticsApi.ts.html +4 -4
- package/coverage/lcov-report/api/WidgetApi.ts.html +36 -33
- package/coverage/lcov-report/api/graphql.ts.html +1 -1
- package/coverage/lcov-report/utils/domready.ts.html +2 -2
- package/coverage/lcov-report/utils/io.ts.html +31 -16
- package/coverage/lcov-report/utils/validate.ts.html +48 -48
- package/coverage/lcov-report/validate.ts.html +1 -1
- package/coverage/lcov-report/widgets/EmbedWidget.ts.html +21 -24
- package/coverage/lcov-report/widgets/PopupWidget.ts.html +72 -27
- package/coverage/lcov-report/widgets/Widget.ts.html +78 -21
- package/coverage/lcov-report/widgets/Widgets.ts.html +1060 -0
- package/coverage/lcov.info +0 -1628
- package/cucumber.js +3 -3
- package/dist/squatch.d.ts +0 -15
- package/dist/squatch.esm.js +145 -153
- package/dist/squatch.esm.js.map +1 -1
- package/dist/squatch.js +144 -153
- package/dist/squatch.js.map +1 -1
- package/dist/squatch.min.js +1 -1
- package/dist/utils/io.d.ts +1 -1
- package/dist/widgets/EmbedWidget.d.ts +5 -5
- package/dist/widgets/PopupWidget.d.ts +5 -5
- package/dist/widgets/Widget.d.ts +3 -2
- package/dist/widgets/Widgets.d.ts +1 -10
- package/dist/widgets/declarative/DeclarativeWidget.d.ts +4 -6
- package/jest.config.ts +3 -5
- package/package.json +5 -5
- package/tsconfig.json +1 -0
|
@@ -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"> </span>
|
|
140
|
-
<span class="cline-any cline-yes">
|
|
140
|
+
<span class="cline-any cline-yes">2x</span>
|
|
141
141
|
<span class="cline-any cline-neutral"> </span>
|
|
142
|
-
<span class="cline-any cline-yes">
|
|
142
|
+
<span class="cline-any cline-yes">2x</span>
|
|
143
143
|
<span class="cline-any cline-neutral"> </span>
|
|
144
144
|
<span class="cline-any cline-neutral"> </span>
|
|
145
145
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
<span class="cline-any cline-neutral"> </span>
|
|
149
149
|
<span class="cline-any cline-neutral"> </span>
|
|
150
150
|
<span class="cline-any cline-neutral"> </span>
|
|
151
|
-
<span class="cline-any cline-yes">
|
|
151
|
+
<span class="cline-any cline-yes">2x</span>
|
|
152
152
|
<span class="cline-any cline-neutral"> </span>
|
|
153
153
|
<span class="cline-any cline-neutral"> </span>
|
|
154
154
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -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-
|
|
292
|
+
at 2023-07-18T18:59:28.021Z
|
|
293
293
|
</div>
|
|
294
294
|
<script src="../prettify.js"></script>
|
|
295
295
|
<script>
|
|
@@ -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">21.27% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>10/47</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/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">16.66% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>1/6</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">21.73% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>10/46</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -244,7 +244,8 @@
|
|
|
244
244
|
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
245
|
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
246
|
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
248
249
|
<span class="cline-any cline-neutral"> </span>
|
|
249
250
|
<span class="cline-any cline-neutral"> </span>
|
|
250
251
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -267,8 +268,6 @@
|
|
|
267
268
|
<span class="cline-any cline-neutral"> </span>
|
|
268
269
|
<span class="cline-any cline-neutral"> </span>
|
|
269
270
|
<span class="cline-any cline-neutral"> </span>
|
|
270
|
-
<span class="cline-any cline-neutral"> </span>
|
|
271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
272
271
|
<span class="cline-any cline-yes">1x</span>
|
|
273
272
|
<span class="cline-any cline-neutral"> </span>
|
|
274
273
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -291,13 +290,12 @@
|
|
|
291
290
|
<span class="cline-any cline-neutral"> </span>
|
|
292
291
|
<span class="cline-any cline-neutral"> </span>
|
|
293
292
|
<span class="cline-any cline-neutral"> </span>
|
|
293
|
+
<span class="cline-any cline-yes">29x</span>
|
|
294
|
+
<span class="cline-any cline-yes">29x</span>
|
|
294
295
|
<span class="cline-any cline-neutral"> </span>
|
|
295
|
-
<span class="cline-any cline-
|
|
296
|
-
<span class="cline-any cline-
|
|
297
|
-
<span class="cline-any cline-
|
|
298
|
-
<span class="cline-any cline-no"> </span>
|
|
299
|
-
<span class="cline-any cline-no"> </span>
|
|
300
|
-
<span class="cline-any cline-no"> </span>
|
|
296
|
+
<span class="cline-any cline-yes">29x</span>
|
|
297
|
+
<span class="cline-any cline-yes">29x</span>
|
|
298
|
+
<span class="cline-any cline-yes">29x</span>
|
|
301
299
|
<span class="cline-any cline-neutral"> </span>
|
|
302
300
|
<span class="cline-any cline-neutral"> </span>
|
|
303
301
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -326,6 +324,8 @@
|
|
|
326
324
|
<span class="cline-any cline-neutral"> </span>
|
|
327
325
|
<span class="cline-any cline-no"> </span>
|
|
328
326
|
<span class="cline-any cline-no"> </span>
|
|
327
|
+
<span class="cline-any cline-neutral"> </span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
329
329
|
<span class="cline-any cline-no"> </span>
|
|
330
330
|
<span class="cline-any cline-neutral"> </span>
|
|
331
331
|
<span class="cline-any cline-no"> </span>
|
|
@@ -357,6 +357,8 @@
|
|
|
357
357
|
<span class="cline-any cline-neutral"> </span>
|
|
358
358
|
<span class="cline-any cline-no"> </span>
|
|
359
359
|
<span class="cline-any cline-no"> </span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
360
362
|
<span class="cline-any cline-no"> </span>
|
|
361
363
|
<span class="cline-any cline-neutral"> </span>
|
|
362
364
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -434,7 +436,7 @@ import {
|
|
|
434
436
|
WidgetType,
|
|
435
437
|
WithRequired,
|
|
436
438
|
} from "../types";
|
|
437
|
-
import { doGet,
|
|
439
|
+
import { doGet, doPut, doQuery } from "../utils/io";
|
|
438
440
|
import {
|
|
439
441
|
validateConfig,
|
|
440
442
|
validateLocale,
|
|
@@ -442,8 +444,6 @@ import {
|
|
|
442
444
|
validateWidgetConfig,
|
|
443
445
|
} from "../utils/validate";
|
|
444
446
|
import { RENDER_WIDGET_QUERY } from "./graphql";
|
|
445
|
-
import { DEFAULT_DOMAIN } from "../utils/validate";
|
|
446
|
-
import { DEFAULT_NPM_CDN } from "../utils/validate";
|
|
447
447
|
|
|
448
448
|
/**
|
|
449
449
|
*
|
|
@@ -455,7 +455,6 @@ export default class WidgetApi {
|
|
|
455
455
|
domain: string;
|
|
456
456
|
npmCdn: string;
|
|
457
457
|
|
|
458
|
-
// TODO: Support using new window variables for initialisation
|
|
459
458
|
/**
|
|
460
459
|
* Initialize a new {@link WidgetApi} instance.
|
|
461
460
|
*
|
|
@@ -472,13 +471,13 @@ export default class WidgetApi {
|
|
|
472
471
|
* import {WidgetApi} from '@saasquatch/squatch-js';
|
|
473
472
|
* let squatchApi = new WidgetApi({tenantAlias:'test_12b5bo1b25125'});
|
|
474
473
|
*/
|
|
475
|
-
|
|
476
|
-
const raw =
|
|
477
|
-
const clean =
|
|
474
|
+
constructor(config?: ConfigOptions) {
|
|
475
|
+
const raw = config as unknown;
|
|
476
|
+
const clean = validateConfig(raw);
|
|
478
477
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
478
|
+
this.tenantAlias = clean.tenantAlias;
|
|
479
|
+
this.domain = clean.domain;
|
|
480
|
+
this.npmCdn = clean.npmCdn;
|
|
482
481
|
}
|
|
483
482
|
|
|
484
483
|
/**
|
|
@@ -506,14 +505,16 @@ export default class WidgetApi {
|
|
|
506
505
|
} = <span class="cstat-no" title="statement not covered" >clean as WithRequired<WidgetConfig, "user">;</span>
|
|
507
506
|
|
|
508
507
|
const tenantAlias = <span class="cstat-no" title="statement not covered" >encodeURIComponent(this.tenantAlias);</span>
|
|
509
|
-
const accountId = <span class="cstat-no" title="statement not covered" >
|
|
510
|
-
|
|
508
|
+
const accountId = <span class="cstat-no" title="statement not covered" >user.accountId</span>
|
|
509
|
+
? encodeURIComponent(user.accountId)
|
|
510
|
+
: null;
|
|
511
|
+
const userId = <span class="cstat-no" title="statement not covered" >user.id ? encodeURIComponent(user.id) : null;</span>
|
|
511
512
|
|
|
512
513
|
const optionalParams = <span class="cstat-no" title="statement not covered" >_buildParams({ widgetType, engagementMedium });</span>
|
|
513
514
|
|
|
514
515
|
const path = <span class="cstat-no" title="statement not covered" >`/api/v1/${tenantAlias}/widget/account/${accountId}/user/${userId}/upsert${optionalParams}`;</span>
|
|
515
516
|
const url = <span class="cstat-no" title="statement not covered" >this.domain + path;</span>
|
|
516
|
-
const cookies = <span class="cstat-no" title="statement not covered" >Cookies.get("_saasquatch");</span>
|
|
517
|
+
const cookies = <span class="cstat-no" title="statement not covered" >(Cookies || window.Cookies).get("_saasquatch");</span>
|
|
517
518
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies) <span class="cstat-no" title="statement not covered" >user["cookies"] = cookies;</span></span>
|
|
518
519
|
<span class="cstat-no" title="statement not covered" > return doPut(url, JSON.stringify(user), jwt);</span>
|
|
519
520
|
}
|
|
@@ -537,8 +538,10 @@ export default class WidgetApi {
|
|
|
537
538
|
const { widgetType, engagementMedium = <span class="branch-0 cbranch-no" title="branch not covered" >"POPUP",</span> jwt, user } = <span class="cstat-no" title="statement not covered" >clean;</span>
|
|
538
539
|
|
|
539
540
|
const tenantAlias = <span class="cstat-no" title="statement not covered" >encodeURIComponent(this.tenantAlias);</span>
|
|
540
|
-
const accountId = <span class="cstat-no" title="statement not covered" >user
|
|
541
|
-
|
|
541
|
+
const accountId = <span class="cstat-no" title="statement not covered" >user?.accountId</span>
|
|
542
|
+
? encodeURIComponent(user.accountId)
|
|
543
|
+
: null;
|
|
544
|
+
const userId = <span class="cstat-no" title="statement not covered" >user?.id ? encodeURIComponent(user.id) : null;</span>
|
|
542
545
|
|
|
543
546
|
const locale =
|
|
544
547
|
<span class="cstat-no" title="statement not covered" > clean.locale ?? validateLocale(navigator.language.replace(/\-/g, "_"));</span>
|
|
@@ -572,7 +575,7 @@ export default class WidgetApi {
|
|
|
572
575
|
*/
|
|
573
576
|
<span class="fstat-no" title="function not covered" > async </span>squatchReferralCookie(): Promise<ReferralCookie> {
|
|
574
577
|
const tenantAlias = <span class="cstat-no" title="statement not covered" >encodeURIComponent(this.tenantAlias);</span>
|
|
575
|
-
const _saasquatch = <span class="cstat-no" title="statement not covered" >Cookies.get("_saasquatch") || "";</span>
|
|
578
|
+
const _saasquatch = <span class="cstat-no" title="statement not covered" >(Cookies || window.Cookies).get("_saasquatch") || "";</span>
|
|
576
579
|
|
|
577
580
|
const cookie = <span class="cstat-no" title="statement not covered" >_saasquatch</span>
|
|
578
581
|
? `?cookies=${encodeURIComponent(_saasquatch)}`
|
|
@@ -613,7 +616,7 @@ function <span class="fstat-no" title="function not covered" >_buildParams(</spa
|
|
|
613
616
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
614
617
|
Code coverage generated by
|
|
615
618
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
616
|
-
at 2023-07-
|
|
619
|
+
at 2023-07-18T18:59:28.021Z
|
|
617
620
|
</div>
|
|
618
621
|
<script src="../prettify.js"></script>
|
|
619
622
|
<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-18T18:59:28.021Z
|
|
119
119
|
</div>
|
|
120
120
|
<script src="../prettify.js"></script>
|
|
121
121
|
<script>
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
<span class="cline-any cline-neutral"> </span>
|
|
93
93
|
<span class="cline-any cline-neutral"> </span>
|
|
94
94
|
<span class="cline-any cline-neutral"> </span>
|
|
95
|
-
<span class="cline-any cline-yes">
|
|
95
|
+
<span class="cline-any cline-yes">2x</span>
|
|
96
96
|
<span class="cline-any cline-no"> </span>
|
|
97
97
|
<span class="cline-any cline-neutral"> </span>
|
|
98
98
|
<span class="cline-any cline-no"> </span>
|
|
@@ -145,7 +145,7 @@ export function <span class="fstat-no" title="function not covered" >domready(</
|
|
|
145
145
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
146
146
|
Code coverage generated by
|
|
147
147
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
148
|
-
at 2023-07-
|
|
148
|
+
at 2023-07-18T18:59:28.021Z
|
|
149
149
|
</div>
|
|
150
150
|
<script src="../prettify.js"></script>
|
|
151
151
|
<script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">12.76% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>6/
|
|
28
|
+
<span class='fraction'>6/47</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/28</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">15% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>6/
|
|
49
|
+
<span class='fraction'>6/40</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -163,18 +163,24 @@
|
|
|
163
163
|
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
164
|
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
165
|
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
|
|
167
172
|
<span class="cline-any cline-neutral"> </span>
|
|
168
173
|
<span class="cline-any cline-neutral"> </span>
|
|
169
|
-
<span class="cline-any cline-yes">
|
|
174
|
+
<span class="cline-any cline-yes">3x</span>
|
|
170
175
|
<span class="cline-any cline-neutral"> </span>
|
|
171
|
-
<span class="cline-any cline-yes">
|
|
176
|
+
<span class="cline-any cline-yes">3x</span>
|
|
172
177
|
<span class="cline-any cline-neutral"> </span>
|
|
173
178
|
<span class="cline-any cline-neutral"> </span>
|
|
174
179
|
<span class="cline-any cline-neutral"> </span>
|
|
175
180
|
<span class="cline-any cline-neutral"> </span>
|
|
176
181
|
<span class="cline-any cline-neutral"> </span>
|
|
177
182
|
<span class="cline-any cline-no"> </span>
|
|
183
|
+
<span class="cline-any cline-no"> </span>
|
|
178
184
|
<span class="cline-any cline-neutral"> </span>
|
|
179
185
|
<span class="cline-any cline-neutral"> </span>
|
|
180
186
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -194,13 +200,14 @@
|
|
|
194
200
|
<span class="cline-any cline-neutral"> </span>
|
|
195
201
|
<span class="cline-any cline-neutral"> </span>
|
|
196
202
|
<span class="cline-any cline-neutral"> </span>
|
|
197
|
-
<span class="cline-any cline-yes">
|
|
203
|
+
<span class="cline-any cline-yes">3x</span>
|
|
198
204
|
<span class="cline-any cline-no"> </span>
|
|
199
205
|
<span class="cline-any cline-neutral"> </span>
|
|
200
206
|
<span class="cline-any cline-neutral"> </span>
|
|
201
207
|
<span class="cline-any cline-neutral"> </span>
|
|
202
208
|
<span class="cline-any cline-neutral"> </span>
|
|
203
209
|
<span class="cline-any cline-no"> </span>
|
|
210
|
+
<span class="cline-any cline-no"> </span>
|
|
204
211
|
<span class="cline-any cline-neutral"> </span>
|
|
205
212
|
<span class="cline-any cline-no"> </span>
|
|
206
213
|
<span class="cline-any cline-no"> </span>
|
|
@@ -216,11 +223,13 @@
|
|
|
216
223
|
<span class="cline-any cline-no"> </span>
|
|
217
224
|
<span class="cline-any cline-neutral"> </span>
|
|
218
225
|
<span class="cline-any cline-neutral"> </span>
|
|
219
|
-
<span class="cline-any cline-yes">
|
|
226
|
+
<span class="cline-any cline-yes">3x</span>
|
|
220
227
|
<span class="cline-any cline-no"> </span>
|
|
221
228
|
<span class="cline-any cline-neutral"> </span>
|
|
222
229
|
<span class="cline-any cline-neutral"> </span>
|
|
223
230
|
<span class="cline-any cline-neutral"> </span>
|
|
231
|
+
<span class="cline-any cline-neutral"> </span>
|
|
232
|
+
<span class="cline-any cline-no"> </span>
|
|
224
233
|
<span class="cline-any cline-no"> </span>
|
|
225
234
|
<span class="cline-any cline-neutral"> </span>
|
|
226
235
|
<span class="cline-any cline-no"> </span>
|
|
@@ -239,7 +248,7 @@
|
|
|
239
248
|
<span class="cline-any cline-neutral"> </span>
|
|
240
249
|
<span class="cline-any cline-neutral"> </span>
|
|
241
250
|
<span class="cline-any cline-neutral"> </span>
|
|
242
|
-
<span class="cline-any cline-yes">
|
|
251
|
+
<span class="cline-any cline-yes">3x</span>
|
|
243
252
|
<span class="cline-any cline-no"> </span>
|
|
244
253
|
<span class="cline-any cline-neutral"> </span>
|
|
245
254
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -247,6 +256,7 @@
|
|
|
247
256
|
<span class="cline-any cline-neutral"> </span>
|
|
248
257
|
<span class="cline-any cline-neutral"> </span>
|
|
249
258
|
<span class="cline-any cline-no"> </span>
|
|
259
|
+
<span class="cline-any cline-no"> </span>
|
|
250
260
|
<span class="cline-any cline-neutral"> </span>
|
|
251
261
|
<span class="cline-any cline-no"> </span>
|
|
252
262
|
<span class="cline-any cline-no"> </span>
|
|
@@ -272,8 +282,9 @@ export async function <span class="fstat-no" title="function not covered" >doQue
|
|
|
272
282
|
url: string,
|
|
273
283
|
query: string,
|
|
274
284
|
variables: Record<string, unknown>,
|
|
275
|
-
|
|
285
|
+
jwt: string | undefined
|
|
276
286
|
) {
|
|
287
|
+
const token = <span class="cstat-no" title="statement not covered" >jwt || window.squatchToken;</span>
|
|
277
288
|
const headers = <span class="cstat-no" title="statement not covered" >{</span>
|
|
278
289
|
Accept: "application/json",
|
|
279
290
|
"Content-Type": "application/json",
|
|
@@ -300,7 +311,8 @@ export async function <span class="fstat-no" title="function not covered" >doGet
|
|
|
300
311
|
"Content-Type": "application/json",
|
|
301
312
|
};
|
|
302
313
|
|
|
303
|
-
|
|
314
|
+
const token = <span class="cstat-no" title="statement not covered" >jwt || window.squatchToken;</span>
|
|
315
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (token) <span class="cstat-no" title="statement not covered" >headers["X-SaaSquatch-User-Token"] = token;</span></span>
|
|
304
316
|
|
|
305
317
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
306
318
|
const res = <span class="cstat-no" title="statement not covered" >await fetch(url, {</span>
|
|
@@ -321,7 +333,9 @@ export async function <span class="fstat-no" title="function not covered" >doPos
|
|
|
321
333
|
Accept: "application/json",
|
|
322
334
|
"Content-Type": "application/json",
|
|
323
335
|
};
|
|
324
|
-
|
|
336
|
+
|
|
337
|
+
const token = <span class="cstat-no" title="statement not covered" >jwt || window.squatchToken;</span>
|
|
338
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (token) <span class="cstat-no" title="statement not covered" >headers["X-SaaSquatch-User-Token"] = token;</span></span>
|
|
325
339
|
|
|
326
340
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
327
341
|
const res = <span class="cstat-no" title="statement not covered" >await fetch(url, {</span>
|
|
@@ -346,7 +360,8 @@ export async function <span class="fstat-no" title="function not covered" >doPut
|
|
|
346
360
|
"X-SaaSquatch-Referrer": window ? window.location.href : "",
|
|
347
361
|
};
|
|
348
362
|
|
|
349
|
-
|
|
363
|
+
const token = <span class="cstat-no" title="statement not covered" >jwt || window.squatchToken;</span>
|
|
364
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (token) <span class="cstat-no" title="statement not covered" >headers["X-SaaSquatch-User-Token"] = token;</span></span>
|
|
350
365
|
|
|
351
366
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
352
367
|
const res = <span class="cstat-no" title="statement not covered" >await fetch(url, {</span>
|
|
@@ -370,7 +385,7 @@ export async function <span class="fstat-no" title="function not covered" >doPut
|
|
|
370
385
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
371
386
|
Code coverage generated by
|
|
372
387
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
373
|
-
at 2023-07-
|
|
388
|
+
at 2023-07-18T18:59:28.021Z
|
|
374
389
|
</div>
|
|
375
390
|
<script src="../prettify.js"></script>
|
|
376
391
|
<script>
|
|
@@ -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">75% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>21/28</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">50% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>14/28</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">80% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>4/5</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">87.5% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>21/24</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 medium'></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>
|
|
@@ -126,34 +126,34 @@
|
|
|
126
126
|
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
127
|
<a name='L62'></a><a href='#L62'>62</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
128
128
|
<span class="cline-any cline-neutral"> </span>
|
|
129
|
-
<span class="cline-any cline-yes">
|
|
130
|
-
<span class="cline-any cline-yes">
|
|
129
|
+
<span class="cline-any cline-yes">3x</span>
|
|
130
|
+
<span class="cline-any cline-yes">3x</span>
|
|
131
131
|
<span class="cline-any cline-neutral"> </span>
|
|
132
132
|
<span class="cline-any cline-neutral"> </span>
|
|
133
133
|
<span class="cline-any cline-neutral"> </span>
|
|
134
134
|
<span class="cline-any cline-neutral"> </span>
|
|
135
135
|
<span class="cline-any cline-neutral"> </span>
|
|
136
|
-
<span class="cline-any cline-yes">
|
|
136
|
+
<span class="cline-any cline-yes">3x</span>
|
|
137
137
|
<span class="cline-any cline-neutral"> </span>
|
|
138
138
|
<span class="cline-any cline-neutral"> </span>
|
|
139
|
-
<span class="cline-any cline-yes">
|
|
139
|
+
<span class="cline-any cline-yes">58x</span>
|
|
140
140
|
<span class="cline-any cline-neutral"> </span>
|
|
141
|
-
<span class="cline-any cline-yes">
|
|
141
|
+
<span class="cline-any cline-yes">58x</span>
|
|
142
142
|
<span class="cline-any cline-neutral"> </span>
|
|
143
143
|
<span class="cline-any cline-neutral"> </span>
|
|
144
144
|
<span class="cline-any cline-neutral"> </span>
|
|
145
145
|
<span class="cline-any cline-neutral"> </span>
|
|
146
146
|
<span class="cline-any cline-neutral"> </span>
|
|
147
147
|
<span class="cline-any cline-neutral"> </span>
|
|
148
|
-
<span class="cline-any cline-yes">
|
|
149
|
-
<span class="cline-any cline-
|
|
150
|
-
<span class="cline-any cline-yes">
|
|
148
|
+
<span class="cline-any cline-yes">58x</span>
|
|
149
|
+
<span class="cline-any cline-no"> </span>
|
|
150
|
+
<span class="cline-any cline-yes">58x</span>
|
|
151
151
|
<span class="cline-any cline-neutral"> </span>
|
|
152
|
-
<span class="cline-any cline-yes">
|
|
153
|
-
<span class="cline-any cline-yes">
|
|
152
|
+
<span class="cline-any cline-yes">58x</span>
|
|
153
|
+
<span class="cline-any cline-yes">58x</span>
|
|
154
154
|
<span class="cline-any cline-neutral"> </span>
|
|
155
|
-
<span class="cline-any cline-yes">
|
|
156
|
-
<span class="cline-any cline-yes">
|
|
155
|
+
<span class="cline-any cline-yes">58x</span>
|
|
156
|
+
<span class="cline-any cline-yes">58x</span>
|
|
157
157
|
<span class="cline-any cline-neutral"> </span>
|
|
158
158
|
<span class="cline-any cline-neutral"> </span>
|
|
159
159
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -161,29 +161,29 @@
|
|
|
161
161
|
<span class="cline-any cline-neutral"> </span>
|
|
162
162
|
<span class="cline-any cline-neutral"> </span>
|
|
163
163
|
<span class="cline-any cline-neutral"> </span>
|
|
164
|
-
<span class="cline-any cline-yes">
|
|
165
|
-
<span class="cline-any cline-yes">
|
|
164
|
+
<span class="cline-any cline-yes">3x</span>
|
|
165
|
+
<span class="cline-any cline-yes">5x</span>
|
|
166
166
|
<span class="cline-any cline-neutral"> </span>
|
|
167
167
|
<span class="cline-any cline-neutral"> </span>
|
|
168
|
-
<span class="cline-any cline-yes">
|
|
169
|
-
<span class="cline-any cline-
|
|
170
|
-
<span class="cline-any cline-
|
|
168
|
+
<span class="cline-any cline-yes">3x</span>
|
|
169
|
+
<span class="cline-any cline-no"> </span>
|
|
170
|
+
<span class="cline-any cline-no"> </span>
|
|
171
171
|
<span class="cline-any cline-neutral"> </span>
|
|
172
172
|
<span class="cline-any cline-neutral"> </span>
|
|
173
173
|
<span class="cline-any cline-neutral"> </span>
|
|
174
|
-
<span class="cline-any cline-yes">2x</span>
|
|
175
|
-
<span class="cline-any cline-yes">4x</span>
|
|
176
174
|
<span class="cline-any cline-yes">3x</span>
|
|
175
|
+
<span class="cline-any cline-yes">2x</span>
|
|
176
|
+
<span class="cline-any cline-yes">2x</span>
|
|
177
177
|
<span class="cline-any cline-neutral"> </span>
|
|
178
|
-
<span class="cline-any cline-yes">
|
|
178
|
+
<span class="cline-any cline-yes">2x</span>
|
|
179
179
|
<span class="cline-any cline-neutral"> </span>
|
|
180
180
|
<span class="cline-any cline-neutral"> </span>
|
|
181
|
-
<span class="cline-any cline-yes">
|
|
181
|
+
<span class="cline-any cline-yes">3x</span>
|
|
182
182
|
<span class="cline-any cline-neutral"> </span>
|
|
183
183
|
<span class="cline-any cline-neutral"> </span>
|
|
184
|
-
<span class="cline-any cline-yes">
|
|
184
|
+
<span class="cline-any cline-yes">3x</span>
|
|
185
185
|
<span class="cline-any cline-neutral"> </span>
|
|
186
|
-
<span class="cline-any cline-yes">
|
|
186
|
+
<span class="cline-any cline-yes">3x</span>
|
|
187
187
|
<span class="cline-any cline-neutral"> </span>
|
|
188
188
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { ConfigOptions, WidgetConfig } from "../types";
|
|
189
189
|
|
|
@@ -197,23 +197,23 @@ type Required<T> = T extends object
|
|
|
197
197
|
export function validateConfig(
|
|
198
198
|
_raw?: unknown | undefined
|
|
199
199
|
): Required<ConfigOptions> {
|
|
200
|
-
if (typeof _raw !== "object") throw new Error("config must be an object")
|
|
200
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (typeof _raw !== "object") <span class="cstat-no" title="statement not covered" >throw new Error("config must be an object");</span>
|
|
201
201
|
|
|
202
202
|
const raw = {
|
|
203
|
-
tenantAlias: _raw?.["tenantAlias"] || window.squatchTenant
|
|
204
|
-
domain: _raw?.["domain"] || window.squatchConfig?.domain
|
|
205
|
-
npmCdn: _raw?.["npmCdn"] || window.squatchConfig?.npmCdn
|
|
203
|
+
tenantAlias: _raw?.["tenantAlias"] || <span class="branch-1 cbranch-no" title="branch not covered" >window.squatchTenant,</span>
|
|
204
|
+
domain: _raw?.["domain"] || <span class="branch-1 cbranch-no" title="branch not covered" >window.squatchConfig?.domain,</span>
|
|
205
|
+
npmCdn: _raw?.["npmCdn"] || <span class="branch-1 cbranch-no" title="branch not covered" >window.squatchConfig?.npmCdn,</span>
|
|
206
206
|
debug: _raw?.["debug"] || window.squatchConfig?.debug,
|
|
207
207
|
};
|
|
208
208
|
|
|
209
|
-
if (typeof raw.tenantAlias !== "string")
|
|
210
|
-
throw new Error("tenantAlias not provided")
|
|
209
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (typeof raw.tenantAlias !== "string")
|
|
210
|
+
<span class="cstat-no" title="statement not covered" > throw new Error("tenantAlias not provided");</span>
|
|
211
211
|
const tenantAlias = raw.tenantAlias;
|
|
212
212
|
const domain =
|
|
213
|
-
(typeof raw.domain === "string" && raw.domain) || DEFAULT_DOMAIN
|
|
214
|
-
const debug = (typeof raw.debug === "boolean" && raw.debug) || false;
|
|
213
|
+
(typeof raw.domain === "string" && raw.domain) || <span class="branch-2 cbranch-no" title="branch not covered" >DEFAULT_DOMAIN;</span>
|
|
214
|
+
const debug = (typeof raw.debug === "boolean" && <span class="branch-1 cbranch-no" title="branch not covered" >raw.debug)</span> || false;
|
|
215
215
|
const npmCdn =
|
|
216
|
-
(typeof raw.npmCdn === "string" && raw.npmCdn) || DEFAULT_NPM_CDN
|
|
216
|
+
(typeof raw.npmCdn === "string" && raw.npmCdn) || <span class="branch-2 cbranch-no" title="branch not covered" >DEFAULT_NPM_CDN;</span>
|
|
217
217
|
return {
|
|
218
218
|
tenantAlias,
|
|
219
219
|
domain,
|
|
@@ -226,15 +226,15 @@ export function isObject(obj: unknown): obj is object {
|
|
|
226
226
|
return typeof obj === "object" && !Array.isArray(obj) && obj !== null;
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
export function validateLocale(locale?: string) {
|
|
230
|
-
if (locale && /^[a-z]{2}_(?:[A-Z]{2}|[0-9]{3})$/.test(locale)) {
|
|
231
|
-
return locale
|
|
229
|
+
export function <span class="fstat-no" title="function not covered" >validateLocale(</span>locale?: string) {
|
|
230
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (locale && /^[a-z]{2}_(?:[A-Z]{2}|[0-9]{3})$/.test(locale)) {</span>
|
|
231
|
+
<span class="cstat-no" title="statement not covered" > return locale;</span>
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
export function validateWidgetConfig(raw: unknown | undefined): WidgetConfig {
|
|
236
|
-
if (!isObject(raw)) throw new Error("Widget properties must be an object")
|
|
237
|
-
if (!raw?.["user"]) throw new Error("Required properties missing.")
|
|
236
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!isObject(raw)) <span class="cstat-no" title="statement not covered" >throw new Error("Widget properties must be an object");</span>
|
|
237
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!raw?.["user"]) <span class="cstat-no" title="statement not covered" >throw new Error("Required properties missing.");</span>
|
|
238
238
|
|
|
239
239
|
return raw as WidgetConfig;
|
|
240
240
|
}
|
|
@@ -242,7 +242,7 @@ export function validateWidgetConfig(raw: unknown | undefined): WidgetConfig {
|
|
|
242
242
|
export function validatePasswordlessConfig(
|
|
243
243
|
raw: unknown | undefined
|
|
244
244
|
): WidgetConfig {
|
|
245
|
-
if (!isObject(raw)) throw new Error("Widget properties must be an object")
|
|
245
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!isObject(raw)) <span class="cstat-no" title="statement not covered" >throw new Error("Widget properties must be an object");</span>
|
|
246
246
|
|
|
247
247
|
return raw as WidgetConfig;
|
|
248
248
|
}
|
|
@@ -253,7 +253,7 @@ export function validatePasswordlessConfig(
|
|
|
253
253
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
254
254
|
Code coverage generated by
|
|
255
255
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
256
|
-
at 2023-07-
|
|
256
|
+
at 2023-07-18T18:59:28.021Z
|
|
257
257
|
</div>
|
|
258
258
|
<script src="../prettify.js"></script>
|
|
259
259
|
<script>
|
|
@@ -253,7 +253,7 @@ export function validatePasswordlessConfig(
|
|
|
253
253
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
254
254
|
Code coverage generated by
|
|
255
255
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
256
|
-
at 2023-07-
|
|
256
|
+
at 2023-07-13T17:12:47.320Z
|
|
257
257
|
</div>
|
|
258
258
|
<script src="prettify.js"></script>
|
|
259
259
|
<script>
|