@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.
- package/coverage/clover.xml +849 -64
- package/coverage/coverage-final.json +19 -1
- package/coverage/lcov-report/DeclarativeWidget.ts.html +298 -118
- package/coverage/lcov-report/Widgets.ts.html +70 -22
- package/coverage/lcov-report/api/AnalyticsApi.ts.html +38 -38
- package/coverage/lcov-report/api/EventsApi.ts.html +352 -0
- package/coverage/lcov-report/api/WidgetApi.ts.html +57 -30
- 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 +10 -10
- package/coverage/lcov-report/utils/decodeUserJwt.ts.html +19 -19
- 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 +1 -1
- package/coverage/lcov-report/utils/validate.ts.html +37 -37
- package/coverage/lcov-report/validate.ts.html +1 -1
- package/coverage/lcov-report/widgets/EmbedWidget.ts.html +67 -19
- package/coverage/lcov-report/widgets/PopupWidget.ts.html +23 -8
- package/coverage/lcov-report/widgets/Widget.ts.html +7 -16
- package/coverage/lcov-report/widgets/Widgets.ts.html +61 -16
- package/coverage/lcov-report/widgets/declarative/DeclarativeWidget.ts.html +373 -82
- package/coverage/lcov-report/widgets/declarative/DeclarativeWidgets.ts.html +388 -0
- package/coverage/lcov.info +1559 -125
- package/dist/api/WidgetApi.d.ts +2 -2
- package/dist/squatch.d.ts +28 -1
- package/dist/squatch.esm.js +274 -121
- package/dist/squatch.esm.js.map +1 -1
- package/dist/squatch.js +274 -121
- package/dist/squatch.js.map +1 -1
- package/dist/squatch.min.js +1 -1
- package/dist/types.d.ts +8 -6
- package/dist/widgets/EmbedWidget.d.ts +6 -0
- package/dist/widgets/PopupWidget.d.ts +6 -1
- package/dist/widgets/Widgets.d.ts +15 -2
- package/dist/widgets/declarative/DeclarativeWidget.d.ts +57 -1
- package/dist/widgets/declarative/DeclarativeWidgets.d.ts +22 -0
- package/package.json +1 -1
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for api/EventsApi.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../index.html">All files</a> / <a href="index.html">api</a> EventsApi.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>32/32</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>6/6</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>4/4</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>27/27</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
156
|
+
<span class="cline-any cline-neutral"> </span>
|
|
157
|
+
<span class="cline-any cline-yes">1x</span>
|
|
158
|
+
<span class="cline-any cline-neutral"> </span>
|
|
159
|
+
<span class="cline-any cline-neutral"> </span>
|
|
160
|
+
<span class="cline-any cline-neutral"> </span>
|
|
161
|
+
<span class="cline-any cline-neutral"> </span>
|
|
162
|
+
<span class="cline-any cline-neutral"> </span>
|
|
163
|
+
<span class="cline-any cline-neutral"> </span>
|
|
164
|
+
<span class="cline-any cline-neutral"> </span>
|
|
165
|
+
<span class="cline-any cline-neutral"> </span>
|
|
166
|
+
<span class="cline-any cline-neutral"> </span>
|
|
167
|
+
<span class="cline-any cline-neutral"> </span>
|
|
168
|
+
<span class="cline-any cline-neutral"> </span>
|
|
169
|
+
<span class="cline-any cline-neutral"> </span>
|
|
170
|
+
<span class="cline-any cline-neutral"> </span>
|
|
171
|
+
<span class="cline-any cline-neutral"> </span>
|
|
172
|
+
<span class="cline-any cline-neutral"> </span>
|
|
173
|
+
<span class="cline-any cline-neutral"> </span>
|
|
174
|
+
<span class="cline-any cline-neutral"> </span>
|
|
175
|
+
<span class="cline-any cline-neutral"> </span>
|
|
176
|
+
<span class="cline-any cline-neutral"> </span>
|
|
177
|
+
<span class="cline-any cline-neutral"> </span>
|
|
178
|
+
<span class="cline-any cline-neutral"> </span>
|
|
179
|
+
<span class="cline-any cline-neutral"> </span>
|
|
180
|
+
<span class="cline-any cline-yes">1x</span>
|
|
181
|
+
<span class="cline-any cline-neutral"> </span>
|
|
182
|
+
<span class="cline-any cline-neutral"> </span>
|
|
183
|
+
<span class="cline-any cline-neutral"> </span>
|
|
184
|
+
<span class="cline-any cline-neutral"> </span>
|
|
185
|
+
<span class="cline-any cline-neutral"> </span>
|
|
186
|
+
<span class="cline-any cline-neutral"> </span>
|
|
187
|
+
<span class="cline-any cline-neutral"> </span>
|
|
188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
189
|
+
<span class="cline-any cline-neutral"> </span>
|
|
190
|
+
<span class="cline-any cline-neutral"> </span>
|
|
191
|
+
<span class="cline-any cline-neutral"> </span>
|
|
192
|
+
<span class="cline-any cline-neutral"> </span>
|
|
193
|
+
<span class="cline-any cline-neutral"> </span>
|
|
194
|
+
<span class="cline-any cline-neutral"> </span>
|
|
195
|
+
<span class="cline-any cline-neutral"> </span>
|
|
196
|
+
<span class="cline-any cline-neutral"> </span>
|
|
197
|
+
<span class="cline-any cline-neutral"> </span>
|
|
198
|
+
<span class="cline-any cline-neutral"> </span>
|
|
199
|
+
<span class="cline-any cline-neutral"> </span>
|
|
200
|
+
<span class="cline-any cline-yes">10x</span>
|
|
201
|
+
<span class="cline-any cline-yes">10x</span>
|
|
202
|
+
<span class="cline-any cline-yes">10x</span>
|
|
203
|
+
<span class="cline-any cline-yes">10x</span>
|
|
204
|
+
<span class="cline-any cline-neutral"> </span>
|
|
205
|
+
<span class="cline-any cline-neutral"> </span>
|
|
206
|
+
<span class="cline-any cline-neutral"> </span>
|
|
207
|
+
<span class="cline-any cline-neutral"> </span>
|
|
208
|
+
<span class="cline-any cline-neutral"> </span>
|
|
209
|
+
<span class="cline-any cline-neutral"> </span>
|
|
210
|
+
<span class="cline-any cline-neutral"> </span>
|
|
211
|
+
<span class="cline-any cline-neutral"> </span>
|
|
212
|
+
<span class="cline-any cline-neutral"> </span>
|
|
213
|
+
<span class="cline-any cline-neutral"> </span>
|
|
214
|
+
<span class="cline-any cline-neutral"> </span>
|
|
215
|
+
<span class="cline-any cline-yes">10x</span>
|
|
216
|
+
<span class="cline-any cline-yes">10x</span>
|
|
217
|
+
<span class="cline-any cline-yes">10x</span>
|
|
218
|
+
<span class="cline-any cline-yes">5x</span>
|
|
219
|
+
<span class="cline-any cline-yes">4x</span>
|
|
220
|
+
<span class="cline-any cline-yes">4x</span>
|
|
221
|
+
<span class="cline-any cline-yes">4x</span>
|
|
222
|
+
<span class="cline-any cline-yes">4x</span>
|
|
223
|
+
<span class="cline-any cline-yes">4x</span>
|
|
224
|
+
<span class="cline-any cline-yes">4x</span>
|
|
225
|
+
<span class="cline-any cline-neutral"> </span>
|
|
226
|
+
<span class="cline-any cline-neutral"> </span>
|
|
227
|
+
<span class="cline-any cline-neutral"> </span>
|
|
228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
229
|
+
<span class="cline-any cline-yes">10x</span>
|
|
230
|
+
<span class="cline-any cline-yes">9x</span>
|
|
231
|
+
<span class="cline-any cline-yes">8x</span>
|
|
232
|
+
<span class="cline-any cline-yes">7x</span>
|
|
233
|
+
<span class="cline-any cline-neutral"> </span>
|
|
234
|
+
<span class="cline-any cline-yes">6x</span>
|
|
235
|
+
<span class="cline-any cline-yes">6x</span>
|
|
236
|
+
<span class="cline-any cline-yes">1x</span>
|
|
237
|
+
<span class="cline-any cline-yes">5x</span>
|
|
238
|
+
<span class="cline-any cline-neutral"> </span>
|
|
239
|
+
<span class="cline-any cline-neutral"> </span>
|
|
240
|
+
<span class="cline-any cline-neutral"> </span>
|
|
241
|
+
<span class="cline-any cline-yes">5x</span>
|
|
242
|
+
<span class="cline-any cline-yes">4x</span>
|
|
243
|
+
<span class="cline-any cline-neutral"> </span>
|
|
244
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { doPost } from "../utils/io";
|
|
245
|
+
import { ConfigOptions, JWT } from "../types";
|
|
246
|
+
import { isObject, validateConfig } from "../utils/validate";
|
|
247
|
+
|
|
248
|
+
type TrackOptions = { jwt?: JWT };
|
|
249
|
+
|
|
250
|
+
interface UserEventInput {
|
|
251
|
+
userId: string;
|
|
252
|
+
accountId: string;
|
|
253
|
+
idempotencyKey?: string;
|
|
254
|
+
events: UserEventDataInput[];
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
interface UserEventDataInput {
|
|
258
|
+
key: string; // Require -- the name of the event
|
|
259
|
+
id?: string; // Optional -- a globally unique ID for the event
|
|
260
|
+
fields?: object; // Arbitrary JSON data
|
|
261
|
+
dateTriggered?: number; // The date triggered
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
*
|
|
266
|
+
* The EventsApi class is a wrapper around the open endpoints of the SaaSquatch REST API.
|
|
267
|
+
*
|
|
268
|
+
*/
|
|
269
|
+
export default class EventsApi {
|
|
270
|
+
tenantAlias: string;
|
|
271
|
+
domain: string;
|
|
272
|
+
/**
|
|
273
|
+
* Initialize a new {@link EventsApi} instance.
|
|
274
|
+
*
|
|
275
|
+
* @param {ConfigOptions} config Config details
|
|
276
|
+
*
|
|
277
|
+
* @example <caption>Browser example</caption>
|
|
278
|
+
* var squatchApi = new squatch.EventsApi({tenantAlias:'test_12b5bo1b25125'});
|
|
279
|
+
*
|
|
280
|
+
* @example <caption>Browserify/Webpack example</caption>
|
|
281
|
+
* var EventsApi = require('@saasquatch/squatch-js').EventsApi;
|
|
282
|
+
* var squatchApi = new EventsApi({tenantAlias:'test_12b5bo1b25125'});
|
|
283
|
+
*
|
|
284
|
+
* @example <caption>Babel+Browserify/Webpack example</caption>
|
|
285
|
+
* import {EventsApi} from '@saasquatch/squatch-js';
|
|
286
|
+
* let squatchApi = new EventsApi({tenantAlias:'test_12b5bo1b25125'});
|
|
287
|
+
*/
|
|
288
|
+
constructor(config: ConfigOptions) {
|
|
289
|
+
const raw = config as unknown | undefined; // Flags that we need to validate anything we use from this type
|
|
290
|
+
const clean = validateConfig(raw);
|
|
291
|
+
this.tenantAlias = clean.tenantAlias;
|
|
292
|
+
this.domain = clean.domain;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Track an event for a user
|
|
297
|
+
*
|
|
298
|
+
* @param params Parameters for request
|
|
299
|
+
* @param options.jwt the JSON Web Token (JWT) that is used to authenticate the user
|
|
300
|
+
*
|
|
301
|
+
* @return An ID to confirm the event has been accepted for asynchronous processing
|
|
302
|
+
*/
|
|
303
|
+
track(params: UserEventInput, options?: TrackOptions): Promise<any> {
|
|
304
|
+
const raw = params as unknown;
|
|
305
|
+
const rawOpts = options as unknown;
|
|
306
|
+
const body = _validateEvent(raw);
|
|
307
|
+
const { jwt } = _validateTrackOptions(rawOpts);
|
|
308
|
+
const ta = encodeURIComponent(this.tenantAlias);
|
|
309
|
+
const userId = encodeURIComponent(body.userId);
|
|
310
|
+
const accountId = encodeURIComponent(body.accountId);
|
|
311
|
+
const path = `/api/v1/${ta}/open/account/${accountId}/user/${userId}/events`;
|
|
312
|
+
const url = this.domain + path;
|
|
313
|
+
return doPost(url, JSON.stringify(body), jwt);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
function _validateEvent(raw: unknown | undefined): UserEventInput {
|
|
318
|
+
if (!isObject(raw)) throw new Error("tracking parameter must be an object");
|
|
319
|
+
if (!raw?.["accountId"]) throw new Error("accountId field is required");
|
|
320
|
+
if (!raw?.["events"]) throw new Error("events field is required");
|
|
321
|
+
if (!raw?.["userId"]) throw new Error("userId field is required");
|
|
322
|
+
|
|
323
|
+
const clean = raw as UserEventInput;
|
|
324
|
+
if (!Array.isArray(clean.events))
|
|
325
|
+
throw new Error("'events' should be an array");
|
|
326
|
+
return clean;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
function _validateTrackOptions(raw: unknown): TrackOptions {
|
|
330
|
+
if (!isObject(raw)) throw new Error("'options' should be an object");
|
|
331
|
+
return raw as TrackOptions;
|
|
332
|
+
}
|
|
333
|
+
</pre></td></tr></table></pre>
|
|
334
|
+
|
|
335
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
336
|
+
</div><!-- /wrapper -->
|
|
337
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
338
|
+
Code coverage generated by
|
|
339
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
340
|
+
at 2023-07-21T21:34:58.776Z
|
|
341
|
+
</div>
|
|
342
|
+
<script src="../prettify.js"></script>
|
|
343
|
+
<script>
|
|
344
|
+
window.onload = function () {
|
|
345
|
+
prettyPrint();
|
|
346
|
+
};
|
|
347
|
+
</script>
|
|
348
|
+
<script src="../sorter.js"></script>
|
|
349
|
+
<script src="../block-navigation.js"></script>
|
|
350
|
+
</body>
|
|
351
|
+
</html>
|
|
352
|
+
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">20% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>10/
|
|
28
|
+
<span class='fraction'>10/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">
|
|
40
|
+
<span class="strong">14.28% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>1/
|
|
42
|
+
<span class='fraction'>1/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">20.83% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>10/
|
|
49
|
+
<span class='fraction'>10/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>
|
|
@@ -254,21 +263,21 @@
|
|
|
254
263
|
<span class="cline-any cline-neutral"> </span>
|
|
255
264
|
<span class="cline-any cline-neutral"> </span>
|
|
256
265
|
<span class="cline-any cline-neutral"> </span>
|
|
257
|
-
<span class="cline-any cline-yes">
|
|
258
|
-
<span class="cline-any cline-yes">
|
|
266
|
+
<span class="cline-any cline-yes">1x</span>
|
|
267
|
+
<span class="cline-any cline-yes">1x</span>
|
|
259
268
|
<span class="cline-any cline-neutral"> </span>
|
|
260
269
|
<span class="cline-any cline-neutral"> </span>
|
|
261
270
|
<span class="cline-any cline-neutral"> </span>
|
|
262
271
|
<span class="cline-any cline-neutral"> </span>
|
|
263
272
|
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-yes">
|
|
273
|
+
<span class="cline-any cline-yes">1x</span>
|
|
265
274
|
<span class="cline-any cline-neutral"> </span>
|
|
266
275
|
<span class="cline-any cline-neutral"> </span>
|
|
267
276
|
<span class="cline-any cline-neutral"> </span>
|
|
268
277
|
<span class="cline-any cline-neutral"> </span>
|
|
269
278
|
<span class="cline-any cline-neutral"> </span>
|
|
270
279
|
<span class="cline-any cline-neutral"> </span>
|
|
271
|
-
<span class="cline-any cline-yes">
|
|
280
|
+
<span class="cline-any cline-yes">1x</span>
|
|
272
281
|
<span class="cline-any cline-neutral"> </span>
|
|
273
282
|
<span class="cline-any cline-neutral"> </span>
|
|
274
283
|
<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">5x</span>
|
|
303
|
+
<span class="cline-any cline-yes">5x</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">5x</span>
|
|
306
|
+
<span class="cline-any cline-yes">5x</span>
|
|
307
|
+
<span class="cline-any cline-yes">5x</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>
|
|
@@ -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
|
|
@@ -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-24T22:01:41.987Z
|
|
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-24T22:01:41.987Z
|
|
119
119
|
</div>
|
|
120
120
|
<script src="../prettify.js"></script>
|
|
121
121
|
<script>
|