@saasquatch/squatch-js 2.6.0-4 → 2.6.0-6

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 (37) hide show
  1. package/coverage/clover.xml +849 -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 +57 -30
  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 +10 -10
  11. package/coverage/lcov-report/utils/decodeUserJwt.ts.html +19 -19
  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 +1 -1
  15. package/coverage/lcov-report/utils/validate.ts.html +37 -37
  16. package/coverage/lcov-report/validate.ts.html +1 -1
  17. package/coverage/lcov-report/widgets/EmbedWidget.ts.html +67 -19
  18. package/coverage/lcov-report/widgets/PopupWidget.ts.html +23 -8
  19. package/coverage/lcov-report/widgets/Widget.ts.html +7 -16
  20. package/coverage/lcov-report/widgets/Widgets.ts.html +61 -16
  21. package/coverage/lcov-report/widgets/declarative/DeclarativeWidget.ts.html +373 -82
  22. package/coverage/lcov-report/widgets/declarative/DeclarativeWidgets.ts.html +388 -0
  23. package/coverage/lcov.info +1559 -125
  24. package/dist/api/WidgetApi.d.ts +2 -2
  25. package/dist/squatch.d.ts +28 -1
  26. package/dist/squatch.esm.js +274 -121
  27. package/dist/squatch.esm.js.map +1 -1
  28. package/dist/squatch.js +274 -121
  29. package/dist/squatch.js.map +1 -1
  30. package/dist/squatch.min.js +1 -1
  31. package/dist/types.d.ts +8 -6
  32. package/dist/widgets/EmbedWidget.d.ts +6 -0
  33. package/dist/widgets/PopupWidget.d.ts +6 -1
  34. package/dist/widgets/Widgets.d.ts +15 -2
  35. package/dist/widgets/declarative/DeclarativeWidget.d.ts +57 -1
  36. package/dist/widgets/declarative/DeclarativeWidgets.d.ts +22 -0
  37. package/package.json +1 -1
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">14% </span>
26
+ <span class="strong">16% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>7/50</span>
28
+ <span class='fraction'>8/50</span>
29
29
  </div>
30
30
 
31
31
 
@@ -37,16 +37,16 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">11.11% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/9</span>
42
+ <span class='fraction'>1/9</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">14% </span>
47
+ <span class="strong">16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>7/50</span>
49
+ <span class='fraction'>8/50</span>
50
50
  </div>
51
51
 
52
52
 
@@ -205,7 +205,7 @@
205
205
  <span class="cline-any cline-neutral">&nbsp;</span>
206
206
  <span class="cline-any cline-neutral">&nbsp;</span>
207
207
  <span class="cline-any cline-yes">1x</span>
208
- <span class="cline-any cline-no">&nbsp;</span>
208
+ <span class="cline-any cline-yes">1x</span>
209
209
  <span class="cline-any cline-neutral">&nbsp;</span>
210
210
  <span class="cline-any cline-neutral">&nbsp;</span>
211
211
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -314,8 +314,8 @@ const deepMerge = <span class="fstat-no" title="function not covered" >&lt;A = O
314
314
  } as A &amp; B;
315
315
  };
316
316
  &nbsp;
317
- export function <span class="fstat-no" title="function not covered" >b64decode(</span>input) {
318
- <span class="cstat-no" title="statement not covered" > return atob(input.replace(/_/g, "/").replace(/-/g, "+"));</span>
317
+ export function b64decode(input) {
318
+ return atob(input.replace(/_/g, "/").replace(/-/g, "+"));
319
319
  }
320
320
  &nbsp;
321
321
  function <span class="fstat-no" title="function not covered" >b64encode(</span>input) {
@@ -400,7 +400,7 @@ export function <span class="fstat-no" title="function not covered" >_pushCookie
400
400
  <div class='footer quiet pad2 space-top1 center small'>
401
401
  Code coverage generated by
402
402
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
403
- at 2023-07-03T20:35:44.061Z
403
+ at 2023-07-24T22:01:41.987Z
404
404
  </div>
405
405
  <script src="../prettify.js"></script>
406
406
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">33.33% </span>
26
+ <span class="strong">75% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>4/12</span>
28
+ <span class='fraction'>9/12</span>
29
29
  </div>
30
30
 
31
31
 
@@ -37,16 +37,16 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>1/1</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">36.36% </span>
47
+ <span class="strong">81.81% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>4/11</span>
49
+ <span class='fraction'>9/11</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 low'></div>
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>
@@ -85,11 +85,11 @@
85
85
  <span class="cline-any cline-yes">1x</span>
86
86
  <span class="cline-any cline-neutral">&nbsp;</span>
87
87
  <span class="cline-any cline-yes">1x</span>
88
- <span class="cline-any cline-no">&nbsp;</span>
89
- <span class="cline-any cline-no">&nbsp;</span>
90
- <span class="cline-any cline-no">&nbsp;</span>
91
- <span class="cline-any cline-no">&nbsp;</span>
92
- <span class="cline-any cline-no">&nbsp;</span>
88
+ <span class="cline-any cline-yes">1x</span>
89
+ <span class="cline-any cline-yes">1x</span>
90
+ <span class="cline-any cline-yes">1x</span>
91
+ <span class="cline-any cline-yes">1x</span>
92
+ <span class="cline-any cline-yes">1x</span>
93
93
  <span class="cline-any cline-neutral">&nbsp;</span>
94
94
  <span class="cline-any cline-no">&nbsp;</span>
95
95
  <span class="cline-any cline-no">&nbsp;</span>
@@ -100,12 +100,12 @@ import { User } from "../types";
100
100
  import { b64decode } from "./cookieUtils";
101
101
  const _log = debug("squatch-js:decodeJwt");
102
102
  &nbsp;
103
- export function <span class="fstat-no" title="function not covered" >decodeUserJwt(</span>tokenStr: string): User | null {
104
- <span class="cstat-no" title="statement not covered" > try {</span>
105
- const base64Url = <span class="cstat-no" title="statement not covered" >tokenStr.split(".")[1];</span>
106
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (base64Url === undefined) <span class="cstat-no" title="statement not covered" >return null;</span></span>
107
- const jsonStr = <span class="cstat-no" title="statement not covered" >b64decode(base64Url);</span>
108
- <span class="cstat-no" title="statement not covered" > return JSON.parse(jsonStr)?.user;</span>
103
+ export function decodeUserJwt(tokenStr: string): User | null {
104
+ try {
105
+ const base64Url = tokenStr.split(".")[1];
106
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (base64Url === undefined) <span class="cstat-no" title="statement not covered" >return null;</span>
107
+ const jsonStr = b64decode(base64Url);
108
+ return JSON.parse(jsonStr)?.user;
109
109
  } catch (e) {
110
110
  <span class="cstat-no" title="statement not covered" > _log(e);</span>
111
111
  <span class="cstat-no" title="statement not covered" > return null;</span>
@@ -118,7 +118,7 @@ export function <span class="fstat-no" title="function not covered" >decodeUserJ
118
118
  <div class='footer quiet pad2 space-top1 center small'>
119
119
  Code coverage generated by
120
120
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
121
- at 2023-07-03T20:35:44.061Z
121
+ at 2023-07-24T22:01:41.987Z
122
122
  </div>
123
123
  <script src="../prettify.js"></script>
124
124
  <script>
@@ -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-19T21:42:01.083Z
148
+ at 2023-07-24T22:01:41.987Z
149
149
  </div>
150
150
  <script src="../prettify.js"></script>
151
151
  <script>
@@ -168,12 +168,12 @@
168
168
  <a name='L103'></a><a href='#L103'>103</a>
169
169
  <a name='L104'></a><a href='#L104'>104</a>
170
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>
171
+ <a name='L106'></a><a href='#L106'>106</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
172
172
  <span class="cline-any cline-neutral">&nbsp;</span>
173
173
  <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-yes">3x</span>
174
+ <span class="cline-any cline-yes">2x</span>
175
175
  <span class="cline-any cline-neutral">&nbsp;</span>
176
- <span class="cline-any cline-yes">3x</span>
176
+ <span class="cline-any cline-yes">2x</span>
177
177
  <span class="cline-any cline-neutral">&nbsp;</span>
178
178
  <span class="cline-any cline-neutral">&nbsp;</span>
179
179
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -200,7 +200,7 @@
200
200
  <span class="cline-any cline-neutral">&nbsp;</span>
201
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
202
  <span class="cline-any cline-neutral">&nbsp;</span>
203
- <span class="cline-any cline-yes">3x</span>
203
+ <span class="cline-any cline-yes">2x</span>
204
204
  <span class="cline-any cline-no">&nbsp;</span>
205
205
  <span class="cline-any cline-neutral">&nbsp;</span>
206
206
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -223,7 +223,7 @@
223
223
  <span class="cline-any cline-no">&nbsp;</span>
224
224
  <span class="cline-any cline-neutral">&nbsp;</span>
225
225
  <span class="cline-any cline-neutral">&nbsp;</span>
226
- <span class="cline-any cline-yes">3x</span>
226
+ <span class="cline-any cline-yes">2x</span>
227
227
  <span class="cline-any cline-no">&nbsp;</span>
228
228
  <span class="cline-any cline-neutral">&nbsp;</span>
229
229
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -248,7 +248,7 @@
248
248
  <span class="cline-any cline-neutral">&nbsp;</span>
249
249
  <span class="cline-any cline-neutral">&nbsp;</span>
250
250
  <span class="cline-any cline-neutral">&nbsp;</span>
251
- <span class="cline-any cline-yes">3x</span>
251
+ <span class="cline-any cline-yes">2x</span>
252
252
  <span class="cline-any cline-no">&nbsp;</span>
253
253
  <span class="cline-any cline-neutral">&nbsp;</span>
254
254
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -385,7 +385,7 @@ export async function <span class="fstat-no" title="function not covered" >doPut
385
385
  <div class='footer quiet pad2 space-top1 center small'>
386
386
  Code coverage generated by
387
387
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
388
- at 2023-07-19T21:42:01.083Z
388
+ at 2023-07-24T22:01:41.987Z
389
389
  </div>
390
390
  <script src="../prettify.js"></script>
391
391
  <script>
@@ -262,7 +262,7 @@ export function <span class="fstat-no" title="function not covered" >convertExtr
262
262
  <div class='footer quiet pad2 space-top1 center small'>
263
263
  Code coverage generated by
264
264
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
265
- at 2023-07-03T20:35:44.061Z
265
+ at 2023-07-24T22:01:41.987Z
266
266
  </div>
267
267
  <script src="../prettify.js"></script>
268
268
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">75% </span>
26
+ <span class="strong">57.14% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>21/28</span>
28
+ <span class='fraction'>16/28</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">50% </span>
33
+ <span class="strong">53.57% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>14/28</span>
35
+ <span class='fraction'>15/28</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">80% </span>
40
+ <span class="strong">40% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>4/5</span>
42
+ <span class='fraction'>2/5</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">87.5% </span>
47
+ <span class="strong">66.66% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>21/24</span>
49
+ <span class='fraction'>16/24</span>
50
50
  </div>
51
51
 
52
52
 
@@ -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">&nbsp;</span>
128
128
  <span class="cline-any cline-neutral">&nbsp;</span>
129
- <span class="cline-any cline-yes">3x</span>
130
- <span class="cline-any cline-yes">3x</span>
129
+ <span class="cline-any cline-yes">2x</span>
130
+ <span class="cline-any cline-yes">2x</span>
131
131
  <span class="cline-any cline-neutral">&nbsp;</span>
132
132
  <span class="cline-any cline-neutral">&nbsp;</span>
133
133
  <span class="cline-any cline-neutral">&nbsp;</span>
134
134
  <span class="cline-any cline-neutral">&nbsp;</span>
135
135
  <span class="cline-any cline-neutral">&nbsp;</span>
136
- <span class="cline-any cline-yes">3x</span>
136
+ <span class="cline-any cline-yes">2x</span>
137
137
  <span class="cline-any cline-neutral">&nbsp;</span>
138
138
  <span class="cline-any cline-neutral">&nbsp;</span>
139
- <span class="cline-any cline-yes">72x</span>
139
+ <span class="cline-any cline-yes">5x</span>
140
140
  <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-yes">72x</span>
141
+ <span class="cline-any cline-yes">5x</span>
142
142
  <span class="cline-any cline-neutral">&nbsp;</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>
146
146
  <span class="cline-any cline-neutral">&nbsp;</span>
147
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-yes">72x</span>
148
+ <span class="cline-any cline-yes">5x</span>
149
149
  <span class="cline-any cline-no">&nbsp;</span>
150
- <span class="cline-any cline-yes">72x</span>
150
+ <span class="cline-any cline-yes">5x</span>
151
151
  <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-yes">72x</span>
153
- <span class="cline-any cline-yes">72x</span>
152
+ <span class="cline-any cline-yes">5x</span>
153
+ <span class="cline-any cline-yes">5x</span>
154
154
  <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-yes">72x</span>
156
- <span class="cline-any cline-yes">72x</span>
155
+ <span class="cline-any cline-yes">5x</span>
156
+ <span class="cline-any cline-yes">5x</span>
157
157
  <span class="cline-any cline-neutral">&nbsp;</span>
158
158
  <span class="cline-any cline-neutral">&nbsp;</span>
159
159
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -161,29 +161,29 @@
161
161
  <span class="cline-any cline-neutral">&nbsp;</span>
162
162
  <span class="cline-any cline-neutral">&nbsp;</span>
163
163
  <span class="cline-any cline-neutral">&nbsp;</span>
164
- <span class="cline-any cline-yes">3x</span>
164
+ <span class="cline-any cline-yes">2x</span>
165
165
  <span class="cline-any cline-yes">5x</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">3x</span>
168
+ <span class="cline-any cline-yes">2x</span>
169
169
  <span class="cline-any cline-no">&nbsp;</span>
170
170
  <span class="cline-any cline-no">&nbsp;</span>
171
171
  <span class="cline-any cline-neutral">&nbsp;</span>
172
172
  <span class="cline-any cline-neutral">&nbsp;</span>
173
173
  <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-yes">3x</span>
175
- <span class="cline-any cline-yes">2x</span>
176
174
  <span class="cline-any cline-yes">2x</span>
175
+ <span class="cline-any cline-no">&nbsp;</span>
176
+ <span class="cline-any cline-no">&nbsp;</span>
177
177
  <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">2x</span>
178
+ <span class="cline-any cline-no">&nbsp;</span>
179
179
  <span class="cline-any cline-neutral">&nbsp;</span>
180
180
  <span class="cline-any cline-neutral">&nbsp;</span>
181
- <span class="cline-any cline-yes">3x</span>
181
+ <span class="cline-any cline-yes">2x</span>
182
182
  <span class="cline-any cline-neutral">&nbsp;</span>
183
183
  <span class="cline-any cline-neutral">&nbsp;</span>
184
- <span class="cline-any cline-yes">3x</span>
184
+ <span class="cline-any cline-no">&nbsp;</span>
185
185
  <span class="cline-any cline-neutral">&nbsp;</span>
186
- <span class="cline-any cline-yes">3x</span>
186
+ <span class="cline-any cline-no">&nbsp;</span>
187
187
  <span class="cline-any cline-neutral">&nbsp;</span>
188
188
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { ConfigOptions, WidgetConfig } from "../types";
189
189
  &nbsp;
@@ -202,7 +202,7 @@ export function validateConfig(
202
202
  const raw = {
203
203
  tenantAlias: _raw?.["tenantAlias"] || <span class="branch-1 cbranch-no" title="branch not covered" >window.squatchTenant,</span>
204
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>
205
+ npmCdn: _raw?.["npmCdn"] || window.squatchConfig?.npmCdn,
206
206
  debug: _raw?.["debug"] || window.squatchConfig?.debug,
207
207
  };
208
208
  &nbsp;
@@ -213,7 +213,7 @@ export function validateConfig(
213
213
  (typeof raw.domain === "string" &amp;&amp; raw.domain) || <span class="branch-2 cbranch-no" title="branch not covered" >DEFAULT_DOMAIN;</span>
214
214
  const debug = (typeof raw.debug === "boolean" &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >raw.debug)</span> || false;
215
215
  const npmCdn =
216
- (typeof raw.npmCdn === "string" &amp;&amp; raw.npmCdn) || <span class="branch-2 cbranch-no" title="branch not covered" >DEFAULT_NPM_CDN;</span>
216
+ (typeof raw.npmCdn === "string" &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >raw.npmCdn)</span> || DEFAULT_NPM_CDN;
217
217
  return {
218
218
  tenantAlias,
219
219
  domain,
@@ -232,19 +232,19 @@ export function <span class="fstat-no" title="function not covered" >validateLoc
232
232
  }
233
233
  }
234
234
  &nbsp;
235
- export function validateWidgetConfig(raw: unknown | undefined): WidgetConfig {
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>
235
+ export function <span class="fstat-no" title="function not covered" >validateWidgetConfig(</span>raw: unknown | undefined): WidgetConfig {
236
+ <span class="cstat-no" title="statement not covered" > <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></span>
237
+ <span class="cstat-no" title="statement not covered" > <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></span>
238
238
  &nbsp;
239
- return raw as WidgetConfig;
239
+ <span class="cstat-no" title="statement not covered" > return raw as WidgetConfig;</span>
240
240
  }
241
241
  &nbsp;
242
- export function validatePasswordlessConfig(
242
+ export function <span class="fstat-no" title="function not covered" >validatePasswordlessConfig(</span>
243
243
  raw: unknown | undefined
244
244
  ): WidgetConfig {
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>
245
+ <span class="cstat-no" title="statement not covered" > <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></span>
246
246
  &nbsp;
247
- return raw as WidgetConfig;
247
+ <span class="cstat-no" title="statement not covered" > return raw as WidgetConfig;</span>
248
248
  }
249
249
  &nbsp;</pre></td></tr></table></pre>
250
250
 
@@ -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-19T21:42:01.083Z
256
+ at 2023-07-24T22:01:41.987Z
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-13T17:12:47.320Z
256
+ at 2023-07-21T18:46:53.502Z
257
257
  </div>
258
258
  <script src="prettify.js"></script>
259
259
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">8.47% </span>
26
+ <span class="strong">8.62% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>5/59</span>
28
+ <span class='fraction'>5/58</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/21</span>
35
+ <span class='fraction'>0/25</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/7</span>
42
+ <span class='fraction'>0/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">8.77% </span>
47
+ <span class="strong">9.09% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>5/57</span>
49
+ <span class='fraction'>5/55</span>
50
50
  </div>
51
51
 
52
52
 
@@ -179,7 +179,23 @@
179
179
  <a name='L114'></a><a href='#L114'>114</a>
180
180
  <a name='L115'></a><a href='#L115'>115</a>
181
181
  <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
183
199
  <span class="cline-any cline-neutral">&nbsp;</span>
184
200
  <span class="cline-any cline-yes">1x</span>
185
201
  <span class="cline-any cline-yes">1x</span>
@@ -193,11 +209,19 @@
193
209
  <span class="cline-any cline-neutral">&nbsp;</span>
194
210
  <span class="cline-any cline-neutral">&nbsp;</span>
195
211
  <span class="cline-any cline-neutral">&nbsp;</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
213
+ <span class="cline-any cline-neutral">&nbsp;</span>
214
+ <span class="cline-any cline-neutral">&nbsp;</span>
215
+ <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
217
  <span class="cline-any cline-yes">1x</span>
197
218
  <span class="cline-any cline-neutral">&nbsp;</span>
198
219
  <span class="cline-any cline-no">&nbsp;</span>
199
220
  <span class="cline-any cline-neutral">&nbsp;</span>
200
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-no">&nbsp;</span>
223
+ <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
201
225
  <span class="cline-any cline-neutral">&nbsp;</span>
202
226
  <span class="cline-any cline-no">&nbsp;</span>
203
227
  <span class="cline-any cline-no">&nbsp;</span>
@@ -240,18 +264,24 @@
240
264
  <span class="cline-any cline-no">&nbsp;</span>
241
265
  <span class="cline-any cline-neutral">&nbsp;</span>
242
266
  <span class="cline-any cline-neutral">&nbsp;</span>
243
- <span class="cline-any cline-no">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
245
- <span class="cline-any cline-no">&nbsp;</span>
246
267
  <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-no">&nbsp;</span>
248
268
  <span class="cline-any cline-neutral">&nbsp;</span>
249
269
  <span class="cline-any cline-neutral">&nbsp;</span>
250
270
  <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-no">&nbsp;</span>
251
277
  <span class="cline-any cline-no">&nbsp;</span>
252
278
  <span class="cline-any cline-neutral">&nbsp;</span>
253
279
  <span class="cline-any cline-neutral">&nbsp;</span>
254
280
  <span class="cline-any cline-no">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
255
285
  <span class="cline-any cline-no">&nbsp;</span>
256
286
  <span class="cline-any cline-no">&nbsp;</span>
257
287
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -260,6 +290,8 @@
260
290
  <span class="cline-any cline-neutral">&nbsp;</span>
261
291
  <span class="cline-any cline-neutral">&nbsp;</span>
262
292
  <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
263
295
  <span class="cline-any cline-no">&nbsp;</span>
264
296
  <span class="cline-any cline-no">&nbsp;</span>
265
297
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -308,10 +340,18 @@ const _log = debug("squatch-js:EMBEDwidget");
308
340
  *
309
341
  * To create an EmbedWidget use {@link Widgets}
310
342
  *
343
+ * @example
344
+ * const widget = new EmbedWidget({ ... })
345
+ * widget.load() // Loads widget into the DOM
346
+ * widget.open() // Makes the iframe container visible
347
+ * widget.close() // Hides the iframe container
311
348
  */
312
349
  export default class EmbedWidget extends Widget {
313
350
  <span class="fstat-no" title="function not covered" > constructor(p</span>arams: Params, container?: HTMLElement | string) {
314
351
  <span class="cstat-no" title="statement not covered" > super(params);</span>
352
+ &nbsp;
353
+ // If container was passed in, override container in context
354
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (container) <span class="cstat-no" title="statement not covered" >this.container = container;</span></span>
315
355
  }
316
356
  &nbsp;
317
357
  <span class="fstat-no" title="function not covered" > async </span>load() {
@@ -356,25 +396,33 @@ export default class EmbedWidget extends Widget {
356
396
  <span class="cstat-no" title="statement not covered" > frame.height = frameDoc.body.scrollHeight;</span>
357
397
  &nbsp;
358
398
  // Adjust frame height when size of body changes
359
- const ro = <span class="cstat-no" title="statement not covered" >new contentWindow["ResizeObserver"](<span class="fstat-no" title="function not covered" >(e</span>ntries) =&gt; {</span>
360
- <span class="cstat-no" title="statement not covered" > for (const entry of entries) {</span>
361
- const { height } = <span class="cstat-no" title="statement not covered" >entry.contentRect;</span>
399
+ /* istanbul ignore next: hard to test */
400
+ const ro = new contentWindow["ResizeObserver"]((entries) =&gt; {
401
+ for (const entry of entries) {
402
+ const { height } = entry.contentRect;
362
403
  // @ts-ignore -- number will be cast to string by browsers
363
- <span class="cstat-no" title="statement not covered" > frame.height = height;</span>
404
+ frame.height = height;
364
405
  }
365
406
  });
366
407
  &nbsp;
367
- <span class="cstat-no" title="statement not covered" > ro.observe(await this._findInnerContainer(frame));</span>
408
+ const container = <span class="cstat-no" title="statement not covered" >await this._findInnerContainer(frame);</span>
409
+ <span class="cstat-no" title="statement not covered" > ro.observe(container);</span>
368
410
  &nbsp;
369
411
  // Regular load - trigger event
370
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.container) {</span>
412
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
413
+ !this.container ||
414
+ (this.container instanceof HTMLElement &amp;&amp;
415
+ this.container.tagName.startsWith("SQUATCH-"))
416
+ ) {
371
417
  <span class="cstat-no" title="statement not covered" > this._loadEvent(_sqh);</span>
372
418
  <span class="cstat-no" title="statement not covered" > _log("loaded");</span>
373
419
  }
374
420
  });
375
421
  }
376
422
  &nbsp;
377
- // Un-hide if element is available and refresh data
423
+ /**
424
+ * Un-hide if element is available and refresh data
425
+ */
378
426
  <span class="fstat-no" title="function not covered" > open(</span>) {
379
427
  const frame = <span class="cstat-no" title="statement not covered" >this._findFrame();</span>
380
428
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!frame) <span class="cstat-no" title="statement not covered" >return _log("no target element to open");</span></span>
@@ -418,7 +466,7 @@ export default class EmbedWidget extends Widget {
418
466
  <div class='footer quiet pad2 space-top1 center small'>
419
467
  Code coverage generated by
420
468
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
421
- at 2023-07-19T23:25:49.700Z
469
+ at 2023-07-24T22:01:41.987Z
422
470
  </div>
423
471
  <script src="../prettify.js"></script>
424
472
  <script>