@budibase/worker 2.1.22-alpha.5 → 2.1.22-alpha.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/__mocks__/oauth.ts +57 -0
- package/coverage/clover.xml +1093 -1033
- package/coverage/coverage-final.json +77 -72
- package/coverage/lcov-report/index.html +83 -83
- package/coverage/lcov-report/src/api/controllers/global/auth.ts.html +70 -70
- package/coverage/lcov-report/src/api/controllers/global/configs.js.html +35 -35
- package/coverage/lcov-report/src/api/controllers/global/email.js.html +4 -4
- package/coverage/lcov-report/src/api/controllers/global/index.html +38 -38
- package/coverage/lcov-report/src/api/controllers/global/license.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/global/roles.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/global/self.ts.html +58 -58
- package/coverage/lcov-report/src/api/controllers/global/templates.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/global/users.ts.html +75 -69
- package/coverage/lcov-report/src/api/controllers/global/workspaces.js.html +7 -7
- package/coverage/lcov-report/src/api/controllers/system/accounts.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/system/{environment.js.html → environment.ts.html} +21 -18
- package/coverage/lcov-report/src/api/controllers/system/index.html +63 -63
- package/coverage/lcov-report/src/api/controllers/system/migrations.ts.html +23 -23
- package/coverage/lcov-report/src/api/controllers/system/restore.ts.html +22 -22
- package/coverage/lcov-report/src/api/controllers/system/{status.js.html → status.ts.html} +29 -26
- package/coverage/lcov-report/src/api/controllers/system/tenants.ts.html +34 -163
- package/coverage/lcov-report/src/api/index.html +11 -11
- package/coverage/lcov-report/src/api/index.ts.html +113 -44
- package/coverage/lcov-report/src/api/routes/global/auth.js.html +38 -89
- package/coverage/lcov-report/src/api/routes/global/configs.js.html +17 -17
- package/coverage/lcov-report/src/api/routes/global/email.js.html +11 -11
- package/coverage/lcov-report/src/api/routes/global/index.html +11 -11
- package/coverage/lcov-report/src/api/routes/global/license.ts.html +6 -6
- package/coverage/lcov-report/src/api/routes/global/roles.js.html +7 -7
- package/coverage/lcov-report/src/api/routes/global/self.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/global/templates.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/global/users.js.html +17 -17
- package/coverage/lcov-report/src/api/routes/global/workspaces.js.html +10 -10
- package/coverage/lcov-report/src/api/routes/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/index.ts.html +19 -19
- package/coverage/lcov-report/src/api/routes/system/accounts.ts.html +7 -7
- package/coverage/lcov-report/src/api/routes/system/{environment.js.html → environment.ts.html} +11 -11
- package/coverage/lcov-report/src/api/routes/system/index.html +4 -4
- package/coverage/lcov-report/src/api/routes/system/migrations.ts.html +7 -7
- package/coverage/lcov-report/src/api/routes/system/restore.ts.html +6 -6
- package/coverage/lcov-report/src/api/routes/system/{status.js.html → status.ts.html} +11 -11
- package/coverage/lcov-report/src/api/routes/system/{tenants.js.html → tenants.ts.html} +20 -17
- package/coverage/lcov-report/src/api/routes/validation/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/validation/index.ts.html +2 -2
- package/coverage/lcov-report/src/api/routes/validation/users.ts.html +13 -13
- package/coverage/lcov-report/src/constants/index.html +1 -1
- package/coverage/lcov-report/src/constants/index.js.html +18 -18
- package/coverage/lcov-report/src/constants/templates/index.html +1 -1
- package/coverage/lcov-report/src/constants/templates/index.js.html +10 -10
- package/coverage/lcov-report/src/db/index.html +1 -1
- package/coverage/lcov-report/src/db/index.ts.html +8 -8
- package/coverage/lcov-report/src/environment.ts.html +15 -15
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.ts.html +40 -40
- package/coverage/lcov-report/src/middleware/cloudRestricted.js.html +22 -22
- package/coverage/lcov-report/src/middleware/index.html +21 -21
- package/coverage/lcov-report/src/migrations/functions/globalInfoSyncUsers.ts.html +3 -3
- package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
- package/coverage/lcov-report/src/migrations/index.html +1 -1
- package/coverage/lcov-report/src/migrations/index.ts.html +17 -17
- package/coverage/lcov-report/src/sdk/accounts/accounts.ts.html +6 -6
- package/coverage/lcov-report/src/sdk/accounts/index.html +1 -1
- package/coverage/lcov-report/src/sdk/accounts/index.ts.html +2 -2
- package/coverage/lcov-report/src/sdk/index.html +1 -1
- package/coverage/lcov-report/src/sdk/index.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/users/events.ts.html +43 -43
- package/coverage/lcov-report/src/sdk/users/index.html +19 -19
- package/coverage/lcov-report/src/sdk/users/index.ts.html +2 -2
- package/coverage/lcov-report/src/sdk/users/users.ts.html +99 -99
- package/coverage/lcov-report/src/tests/TestConfiguration.ts.html +261 -123
- package/coverage/lcov-report/src/tests/api/accounts.ts.html +12 -21
- package/coverage/lcov-report/src/tests/api/auth.ts.html +11 -20
- package/coverage/lcov-report/src/tests/api/base.ts.html +133 -0
- package/coverage/lcov-report/src/tests/api/configs.ts.html +44 -23
- package/coverage/lcov-report/src/tests/api/email.ts.html +9 -18
- package/coverage/lcov-report/src/tests/api/environment.ts.html +130 -0
- package/coverage/lcov-report/src/tests/api/index.html +106 -16
- package/coverage/lcov-report/src/tests/api/index.ts.html +62 -17
- package/coverage/lcov-report/src/tests/{structures/accounts.ts.html → api/migrations.ts.html} +31 -37
- package/coverage/lcov-report/src/tests/api/restore.ts.html +127 -0
- package/coverage/lcov-report/src/tests/api/self.ts.html +31 -16
- package/coverage/lcov-report/src/tests/api/status.ts.html +121 -0
- package/coverage/lcov-report/src/tests/api/tenants.ts.html +130 -0
- package/coverage/lcov-report/src/tests/api/users.ts.html +121 -25
- package/coverage/lcov-report/src/tests/controllers.js.html +2 -2
- package/coverage/lcov-report/src/tests/index.html +20 -20
- package/coverage/lcov-report/src/tests/index.ts.html +21 -9
- package/coverage/lcov-report/src/tests/mocks/email.js.html +2 -2
- package/coverage/lcov-report/src/tests/mocks/index.html +1 -1
- package/coverage/lcov-report/src/tests/mocks/index.ts.html +4 -4
- package/coverage/lcov-report/src/tests/structures/configs.js.html +8 -8
- package/coverage/lcov-report/src/tests/structures/groups.ts.html +2 -2
- package/coverage/lcov-report/src/tests/structures/index.html +9 -24
- package/coverage/lcov-report/src/tests/structures/index.ts.html +21 -15
- package/coverage/lcov-report/src/tests/structures/users.ts.html +13 -10
- package/coverage/lcov-report/src/utilities/appService.js.html +11 -11
- package/coverage/lcov-report/src/utilities/email.js.html +16 -16
- package/coverage/lcov-report/src/utilities/fileSystem.js.html +4 -4
- package/coverage/lcov-report/src/utilities/index.html +1 -1
- package/coverage/lcov-report/src/utilities/index.js.html +2 -2
- package/coverage/lcov-report/src/utilities/redis.js.html +13 -13
- package/coverage/lcov-report/src/utilities/templates.js.html +7 -7
- package/coverage/lcov-report/src/utilities/users.js.html +8 -8
- package/coverage/lcov.info +1685 -1511
- package/package.json +8 -6
- package/scripts/localdomain.js +33 -7
- package/src/api/controllers/global/auth.ts +1 -1
- package/src/api/controllers/global/users.ts +3 -1
- package/src/api/controllers/system/{environment.js → environment.ts} +3 -2
- package/src/api/controllers/system/{status.js → status.ts} +4 -3
- package/src/api/controllers/system/tenants.ts +8 -51
- package/src/api/index.ts +29 -6
- package/src/api/routes/global/auth.js +22 -39
- package/src/api/routes/global/tests/auth.spec.ts +134 -64
- package/src/api/routes/global/tests/configs.spec.ts +5 -6
- package/src/api/routes/global/tests/email.spec.ts +4 -3
- package/src/api/routes/global/tests/license.spec.ts +31 -0
- package/src/api/routes/global/tests/realEmail.spec.ts +2 -3
- package/src/api/routes/global/tests/roles.spec.ts +27 -0
- package/src/api/routes/global/tests/self.spec.ts +3 -4
- package/src/api/routes/global/tests/templates.spec.ts +35 -0
- package/src/api/routes/global/tests/users.spec.ts +51 -43
- package/src/api/routes/global/tests/workspaces.spec.ts +29 -0
- package/src/api/routes/system/environment.ts +8 -0
- package/src/api/routes/system/status.ts +8 -0
- package/src/api/routes/system/tenants.ts +13 -0
- package/src/api/routes/system/tests/accounts.spec.ts +5 -6
- package/src/api/routes/system/tests/environment.spec.ts +29 -0
- package/src/api/routes/system/tests/migrations.spec.ts +63 -0
- package/src/api/routes/system/tests/restore.spec.ts +36 -0
- package/src/api/routes/system/tests/status.spec.ts +48 -0
- package/src/api/routes/system/tests/tenants.spec.ts +61 -0
- package/src/middleware/tests/tenancy.spec.ts +73 -0
- package/src/tests/TestConfiguration.ts +88 -42
- package/src/tests/api/accounts.ts +5 -8
- package/src/tests/api/auth.ts +3 -6
- package/src/tests/api/base.ts +16 -0
- package/src/tests/api/configs.ts +15 -8
- package/src/tests/api/email.ts +3 -6
- package/src/tests/api/environment.ts +15 -0
- package/src/tests/api/index.ts +15 -0
- package/src/tests/api/migrations.ts +22 -0
- package/src/tests/api/restore.ts +14 -0
- package/src/tests/api/self.ts +11 -6
- package/src/tests/api/status.ts +12 -0
- package/src/tests/api/tenants.ts +15 -0
- package/src/tests/api/users.ts +38 -6
- package/src/tests/index.ts +4 -0
- package/src/tests/jestSetup.ts +7 -1
- package/src/tests/structures/index.ts +4 -2
- package/src/tests/structures/users.ts +1 -0
- package/__mocks__/node-fetch.ts +0 -1
- package/src/api/routes/system/environment.js +0 -8
- package/src/api/routes/system/status.js +0 -8
- package/src/api/routes/system/tenants.js +0 -12
- package/src/tests/structures/accounts.ts +0 -24
|
@@ -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">79.84% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>1608/2014</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">67.44% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>377/559</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">75.05% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>313/417</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">79.73% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>1464/1836</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -95,47 +95,47 @@
|
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
97
97
|
<td class="file high" data-value="src/api"><a href="src/api/index.html">src/api</a></td>
|
|
98
|
-
<td data-value="
|
|
99
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
98
|
+
<td data-value="93.75" class="pic high">
|
|
99
|
+
<div class="chart"><div class="cover-fill" style="width: 93%"></div><div class="cover-empty" style="width: 7%"></div></div>
|
|
100
100
|
</td>
|
|
101
|
-
<td data-value="
|
|
102
|
-
<td data-value="32" class="abs high">
|
|
101
|
+
<td data-value="93.75" class="pct high">93.75%</td>
|
|
102
|
+
<td data-value="32" class="abs high">30/32</td>
|
|
103
103
|
<td data-value="77.77" class="pct medium">77.77%</td>
|
|
104
104
|
<td data-value="9" class="abs medium">7/9</td>
|
|
105
105
|
<td data-value="60" class="pct medium">60%</td>
|
|
106
106
|
<td data-value="5" class="abs medium">3/5</td>
|
|
107
|
-
<td data-value="
|
|
108
|
-
<td data-value="30" class="abs high">
|
|
107
|
+
<td data-value="96.66" class="pct high">96.66%</td>
|
|
108
|
+
<td data-value="30" class="abs high">29/30</td>
|
|
109
109
|
</tr>
|
|
110
110
|
|
|
111
111
|
<tr>
|
|
112
112
|
<td class="file medium" data-value="src/api/controllers/global"><a href="src/api/controllers/global/index.html">src/api/controllers/global</a></td>
|
|
113
|
-
<td data-value="
|
|
114
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
113
|
+
<td data-value="61.32" class="pic medium">
|
|
114
|
+
<div class="chart"><div class="cover-fill" style="width: 61%"></div><div class="cover-empty" style="width: 39%"></div></div>
|
|
115
115
|
</td>
|
|
116
|
-
<td data-value="
|
|
117
|
-
<td data-value="693" class="abs medium">
|
|
118
|
-
<td data-value="
|
|
119
|
-
<td data-value="186" class="abs medium">
|
|
120
|
-
<td data-value="
|
|
121
|
-
<td data-value="136" class="abs
|
|
122
|
-
<td data-value="
|
|
123
|
-
<td data-value="609" class="abs medium">
|
|
116
|
+
<td data-value="61.32" class="pct medium">61.32%</td>
|
|
117
|
+
<td data-value="693" class="abs medium">425/693</td>
|
|
118
|
+
<td data-value="54.3" class="pct medium">54.3%</td>
|
|
119
|
+
<td data-value="186" class="abs medium">101/186</td>
|
|
120
|
+
<td data-value="50" class="pct medium">50%</td>
|
|
121
|
+
<td data-value="136" class="abs medium">68/136</td>
|
|
122
|
+
<td data-value="59.27" class="pct medium">59.27%</td>
|
|
123
|
+
<td data-value="609" class="abs medium">361/609</td>
|
|
124
124
|
</tr>
|
|
125
125
|
|
|
126
126
|
<tr>
|
|
127
|
-
<td class="file
|
|
128
|
-
<td data-value="
|
|
129
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
127
|
+
<td class="file high" data-value="src/api/controllers/system"><a href="src/api/controllers/system/index.html">src/api/controllers/system</a></td>
|
|
128
|
+
<td data-value="96.82" class="pic high">
|
|
129
|
+
<div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
|
|
130
130
|
</td>
|
|
131
|
-
<td data-value="
|
|
132
|
-
<td data-value="
|
|
133
|
-
<td data-value="
|
|
134
|
-
<td data-value="
|
|
135
|
-
<td data-value="
|
|
136
|
-
<td data-value="
|
|
137
|
-
<td data-value="
|
|
138
|
-
<td data-value="
|
|
131
|
+
<td data-value="96.82" class="pct high">96.82%</td>
|
|
132
|
+
<td data-value="63" class="abs high">61/63</td>
|
|
133
|
+
<td data-value="100" class="pct high">100%</td>
|
|
134
|
+
<td data-value="8" class="abs high">8/8</td>
|
|
135
|
+
<td data-value="100" class="pct high">100%</td>
|
|
136
|
+
<td data-value="15" class="abs high">15/15</td>
|
|
137
|
+
<td data-value="96" class="pct high">96%</td>
|
|
138
|
+
<td data-value="50" class="abs high">48/50</td>
|
|
139
139
|
</tr>
|
|
140
140
|
|
|
141
141
|
<tr>
|
|
@@ -159,13 +159,13 @@
|
|
|
159
159
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
160
160
|
</td>
|
|
161
161
|
<td data-value="100" class="pct high">100%</td>
|
|
162
|
-
<td data-value="
|
|
163
|
-
<td data-value="50" class="pct medium">50%</td>
|
|
164
|
-
<td data-value="2" class="abs medium">1/2</td>
|
|
162
|
+
<td data-value="89" class="abs high">89/89</td>
|
|
165
163
|
<td data-value="100" class="pct high">100%</td>
|
|
166
|
-
<td data-value="
|
|
164
|
+
<td data-value="0" class="abs high">0/0</td>
|
|
167
165
|
<td data-value="100" class="pct high">100%</td>
|
|
168
|
-
<td data-value="
|
|
166
|
+
<td data-value="17" class="abs high">17/17</td>
|
|
167
|
+
<td data-value="100" class="pct high">100%</td>
|
|
168
|
+
<td data-value="89" class="abs high">89/89</td>
|
|
169
169
|
</tr>
|
|
170
170
|
|
|
171
171
|
<tr>
|
|
@@ -244,18 +244,18 @@
|
|
|
244
244
|
</tr>
|
|
245
245
|
|
|
246
246
|
<tr>
|
|
247
|
-
<td class="file
|
|
248
|
-
<td data-value="
|
|
249
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
247
|
+
<td class="file high" data-value="src/middleware"><a href="src/middleware/index.html">src/middleware</a></td>
|
|
248
|
+
<td data-value="87.5" class="pic high">
|
|
249
|
+
<div class="chart"><div class="cover-fill" style="width: 87%"></div><div class="cover-empty" style="width: 13%"></div></div>
|
|
250
250
|
</td>
|
|
251
|
-
<td data-value="
|
|
252
|
-
<td data-value="8" class="abs
|
|
253
|
-
<td data-value="
|
|
254
|
-
<td data-value="6" class="abs
|
|
255
|
-
<td data-value="
|
|
256
|
-
<td data-value="1" class="abs
|
|
257
|
-
<td data-value="
|
|
258
|
-
<td data-value="8" class="abs
|
|
251
|
+
<td data-value="87.5" class="pct high">87.5%</td>
|
|
252
|
+
<td data-value="8" class="abs high">7/8</td>
|
|
253
|
+
<td data-value="66.66" class="pct medium">66.66%</td>
|
|
254
|
+
<td data-value="6" class="abs medium">4/6</td>
|
|
255
|
+
<td data-value="100" class="pct high">100%</td>
|
|
256
|
+
<td data-value="1" class="abs high">1/1</td>
|
|
257
|
+
<td data-value="87.5" class="pct high">87.5%</td>
|
|
258
|
+
<td data-value="8" class="abs high">7/8</td>
|
|
259
259
|
</tr>
|
|
260
260
|
|
|
261
261
|
<tr>
|
|
@@ -320,32 +320,32 @@
|
|
|
320
320
|
|
|
321
321
|
<tr>
|
|
322
322
|
<td class="file high" data-value="src/sdk/users"><a href="src/sdk/users/index.html">src/sdk/users</a></td>
|
|
323
|
-
<td data-value="
|
|
324
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
323
|
+
<td data-value="88.61" class="pic high">
|
|
324
|
+
<div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
|
|
325
325
|
</td>
|
|
326
|
-
<td data-value="
|
|
327
|
-
<td data-value="360" class="abs high">
|
|
328
|
-
<td data-value="
|
|
329
|
-
<td data-value="112" class="abs
|
|
330
|
-
<td data-value="
|
|
331
|
-
<td data-value="76" class="abs high">
|
|
332
|
-
<td data-value="
|
|
333
|
-
<td data-value="319" class="abs high">
|
|
326
|
+
<td data-value="88.61" class="pct high">88.61%</td>
|
|
327
|
+
<td data-value="360" class="abs high">319/360</td>
|
|
328
|
+
<td data-value="82.14" class="pct high">82.14%</td>
|
|
329
|
+
<td data-value="112" class="abs high">92/112</td>
|
|
330
|
+
<td data-value="88.15" class="pct high">88.15%</td>
|
|
331
|
+
<td data-value="76" class="abs high">67/76</td>
|
|
332
|
+
<td data-value="88.71" class="pct high">88.71%</td>
|
|
333
|
+
<td data-value="319" class="abs high">283/319</td>
|
|
334
334
|
</tr>
|
|
335
335
|
|
|
336
336
|
<tr>
|
|
337
337
|
<td class="file high" data-value="src/tests"><a href="src/tests/index.html">src/tests</a></td>
|
|
338
|
-
<td data-value="94.
|
|
338
|
+
<td data-value="94.16" class="pic high">
|
|
339
339
|
<div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
|
|
340
340
|
</td>
|
|
341
|
-
<td data-value="94.
|
|
342
|
-
<td data-value="
|
|
343
|
-
<td data-value="
|
|
344
|
-
<td data-value="
|
|
345
|
-
<td data-value="
|
|
346
|
-
<td data-value="
|
|
347
|
-
<td data-value="94.
|
|
348
|
-
<td data-value="
|
|
341
|
+
<td data-value="94.16" class="pct high">94.16%</td>
|
|
342
|
+
<td data-value="120" class="abs high">113/120</td>
|
|
343
|
+
<td data-value="75" class="pct medium">75%</td>
|
|
344
|
+
<td data-value="16" class="abs medium">12/16</td>
|
|
345
|
+
<td data-value="89.18" class="pct high">89.18%</td>
|
|
346
|
+
<td data-value="37" class="abs high">33/37</td>
|
|
347
|
+
<td data-value="94.06" class="pct high">94.06%</td>
|
|
348
|
+
<td data-value="118" class="abs high">111/118</td>
|
|
349
349
|
</tr>
|
|
350
350
|
|
|
351
351
|
<tr>
|
|
@@ -354,13 +354,13 @@
|
|
|
354
354
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
355
355
|
</td>
|
|
356
356
|
<td data-value="100" class="pct high">100%</td>
|
|
357
|
-
<td data-value="
|
|
357
|
+
<td data-value="153" class="abs high">153/153</td>
|
|
358
|
+
<td data-value="88.4" class="pct high">88.4%</td>
|
|
359
|
+
<td data-value="69" class="abs high">61/69</td>
|
|
358
360
|
<td data-value="100" class="pct high">100%</td>
|
|
359
|
-
<td data-value="
|
|
361
|
+
<td data-value="48" class="abs high">48/48</td>
|
|
360
362
|
<td data-value="100" class="pct high">100%</td>
|
|
361
|
-
<td data-value="
|
|
362
|
-
<td data-value="100" class="pct high">100%</td>
|
|
363
|
-
<td data-value="89" class="abs high">89/89</td>
|
|
363
|
+
<td data-value="147" class="abs high">147/147</td>
|
|
364
364
|
</tr>
|
|
365
365
|
|
|
366
366
|
<tr>
|
|
@@ -380,17 +380,17 @@
|
|
|
380
380
|
|
|
381
381
|
<tr>
|
|
382
382
|
<td class="file high" data-value="src/tests/structures"><a href="src/tests/structures/index.html">src/tests/structures</a></td>
|
|
383
|
-
<td data-value="95
|
|
383
|
+
<td data-value="95" class="pic high">
|
|
384
384
|
<div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
|
|
385
385
|
</td>
|
|
386
|
-
<td data-value="95
|
|
387
|
-
<td data-value="
|
|
386
|
+
<td data-value="95" class="pct high">95%</td>
|
|
387
|
+
<td data-value="40" class="abs high">38/40</td>
|
|
388
388
|
<td data-value="100" class="pct high">100%</td>
|
|
389
389
|
<td data-value="0" class="abs high">0/0</td>
|
|
390
|
-
<td data-value="
|
|
391
|
-
<td data-value="
|
|
392
|
-
<td data-value="
|
|
393
|
-
<td data-value="
|
|
390
|
+
<td data-value="90" class="pct high">90%</td>
|
|
391
|
+
<td data-value="10" class="abs high">9/10</td>
|
|
392
|
+
<td data-value="94.28" class="pct high">94.28%</td>
|
|
393
|
+
<td data-value="35" class="abs high">33/35</td>
|
|
394
394
|
</tr>
|
|
395
395
|
|
|
396
396
|
<tr>
|
|
@@ -416,7 +416,7 @@
|
|
|
416
416
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
417
417
|
Code coverage generated by
|
|
418
418
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
419
|
-
at Wed Nov 16 2022
|
|
419
|
+
at Wed Nov 16 2022 13:31:07 GMT+0000 (Coordinated Universal Time)
|
|
420
420
|
</div>
|
|
421
421
|
<script src="prettify.js"></script>
|
|
422
422
|
<script>
|
|
@@ -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">64.74% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>101/156</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">48.83% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>21/43</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">61.78% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>76/123</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -335,49 +335,49 @@
|
|
|
335
335
|
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
336
|
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
337
|
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">
|
|
339
|
-
<span class="cline-any cline-yes">
|
|
340
|
-
<span class="cline-any cline-yes">
|
|
341
|
-
<span class="cline-any cline-yes">
|
|
342
|
-
<span class="cline-any cline-yes">
|
|
343
|
-
<span class="cline-any cline-yes">
|
|
344
|
-
<span class="cline-any cline-yes">
|
|
345
|
-
<span class="cline-any cline-yes">
|
|
346
|
-
<span class="cline-any cline-yes">
|
|
347
|
-
<span class="cline-any cline-yes">
|
|
348
|
-
<span class="cline-any cline-yes">
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">17x</span>
|
|
339
|
+
<span class="cline-any cline-yes">17x</span>
|
|
340
|
+
<span class="cline-any cline-yes">17x</span>
|
|
341
|
+
<span class="cline-any cline-yes">17x</span>
|
|
342
|
+
<span class="cline-any cline-yes">17x</span>
|
|
343
|
+
<span class="cline-any cline-yes">17x</span>
|
|
344
|
+
<span class="cline-any cline-yes">17x</span>
|
|
345
|
+
<span class="cline-any cline-yes">17x</span>
|
|
346
|
+
<span class="cline-any cline-yes">17x</span>
|
|
347
|
+
<span class="cline-any cline-yes">17x</span>
|
|
348
|
+
<span class="cline-any cline-yes">17x</span>
|
|
349
349
|
<span class="cline-any cline-neutral"> </span>
|
|
350
350
|
<span class="cline-any cline-neutral"> </span>
|
|
351
|
-
<span class="cline-any cline-yes">
|
|
351
|
+
<span class="cline-any cline-yes">17x</span>
|
|
352
352
|
<span class="cline-any cline-no"> </span>
|
|
353
353
|
<span class="cline-any cline-neutral"> </span>
|
|
354
354
|
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-yes">
|
|
356
|
-
<span class="cline-any cline-yes">
|
|
355
|
+
<span class="cline-any cline-yes">17x</span>
|
|
356
|
+
<span class="cline-any cline-yes">3x</span>
|
|
357
357
|
<span class="cline-any cline-neutral"> </span>
|
|
358
358
|
<span class="cline-any cline-neutral"> </span>
|
|
359
359
|
<span class="cline-any cline-neutral"> </span>
|
|
360
|
-
<span class="cline-any cline-
|
|
360
|
+
<span class="cline-any cline-yes">1x</span>
|
|
361
361
|
<span class="cline-any cline-no"> </span>
|
|
362
362
|
<span class="cline-any cline-no"> </span>
|
|
363
363
|
<span class="cline-any cline-neutral"> </span>
|
|
364
364
|
<span class="cline-any cline-neutral"> </span>
|
|
365
|
-
<span class="cline-any cline-
|
|
365
|
+
<span class="cline-any cline-yes">1x</span>
|
|
366
366
|
<span class="cline-any cline-no"> </span>
|
|
367
367
|
<span class="cline-any cline-neutral"> </span>
|
|
368
368
|
<span class="cline-any cline-neutral"> </span>
|
|
369
369
|
<span class="cline-any cline-neutral"> </span>
|
|
370
|
-
<span class="cline-any cline-
|
|
370
|
+
<span class="cline-any cline-yes">1x</span>
|
|
371
371
|
<span class="cline-any cline-neutral"> </span>
|
|
372
|
-
<span class="cline-any cline-
|
|
372
|
+
<span class="cline-any cline-yes">1x</span>
|
|
373
373
|
<span class="cline-any cline-neutral"> </span>
|
|
374
374
|
<span class="cline-any cline-neutral"> </span>
|
|
375
|
-
<span class="cline-any cline-
|
|
375
|
+
<span class="cline-any cline-yes">1x</span>
|
|
376
376
|
<span class="cline-any cline-no"> </span>
|
|
377
377
|
<span class="cline-any cline-neutral"> </span>
|
|
378
378
|
<span class="cline-any cline-neutral"> </span>
|
|
379
379
|
<span class="cline-any cline-neutral"> </span>
|
|
380
|
-
<span class="cline-any cline-yes">
|
|
380
|
+
<span class="cline-any cline-yes">17x</span>
|
|
381
381
|
<span class="cline-any cline-no"> </span>
|
|
382
382
|
<span class="cline-any cline-neutral"> </span>
|
|
383
383
|
<span class="cline-any cline-no"> </span>
|
|
@@ -390,13 +390,13 @@
|
|
|
390
390
|
<span class="cline-any cline-neutral"> </span>
|
|
391
391
|
<span class="cline-any cline-neutral"> </span>
|
|
392
392
|
<span class="cline-any cline-neutral"> </span>
|
|
393
|
-
<span class="cline-any cline-yes">
|
|
393
|
+
<span class="cline-any cline-yes">17x</span>
|
|
394
394
|
<span class="cline-any cline-no"> </span>
|
|
395
395
|
<span class="cline-any cline-no"> </span>
|
|
396
396
|
<span class="cline-any cline-no"> </span>
|
|
397
397
|
<span class="cline-any cline-neutral"> </span>
|
|
398
398
|
<span class="cline-any cline-neutral"> </span>
|
|
399
|
-
<span class="cline-any cline-yes">
|
|
399
|
+
<span class="cline-any cline-yes">17x</span>
|
|
400
400
|
<span class="cline-any cline-no"> </span>
|
|
401
401
|
<span class="cline-any cline-no"> </span>
|
|
402
402
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -408,7 +408,7 @@
|
|
|
408
408
|
<span class="cline-any cline-neutral"> </span>
|
|
409
409
|
<span class="cline-any cline-neutral"> </span>
|
|
410
410
|
<span class="cline-any cline-neutral"> </span>
|
|
411
|
-
<span class="cline-any cline-yes">
|
|
411
|
+
<span class="cline-any cline-yes">17x</span>
|
|
412
412
|
<span class="cline-any cline-yes">2x</span>
|
|
413
413
|
<span class="cline-any cline-yes">2x</span>
|
|
414
414
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -439,7 +439,7 @@
|
|
|
439
439
|
<span class="cline-any cline-neutral"> </span>
|
|
440
440
|
<span class="cline-any cline-neutral"> </span>
|
|
441
441
|
<span class="cline-any cline-neutral"> </span>
|
|
442
|
-
<span class="cline-any cline-yes">
|
|
442
|
+
<span class="cline-any cline-yes">17x</span>
|
|
443
443
|
<span class="cline-any cline-yes">1x</span>
|
|
444
444
|
<span class="cline-any cline-yes">1x</span>
|
|
445
445
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -459,14 +459,14 @@
|
|
|
459
459
|
<span class="cline-any cline-neutral"> </span>
|
|
460
460
|
<span class="cline-any cline-neutral"> </span>
|
|
461
461
|
<span class="cline-any cline-neutral"> </span>
|
|
462
|
-
<span class="cline-any cline-yes">
|
|
462
|
+
<span class="cline-any cline-yes">17x</span>
|
|
463
463
|
<span class="cline-any cline-yes">1x</span>
|
|
464
464
|
<span class="cline-any cline-yes">1x</span>
|
|
465
465
|
<span class="cline-any cline-neutral"> </span>
|
|
466
466
|
<span class="cline-any cline-yes">1x</span>
|
|
467
467
|
<span class="cline-any cline-neutral"> </span>
|
|
468
468
|
<span class="cline-any cline-neutral"> </span>
|
|
469
|
-
<span class="cline-any cline-yes">
|
|
469
|
+
<span class="cline-any cline-yes">17x</span>
|
|
470
470
|
<span class="cline-any cline-no"> </span>
|
|
471
471
|
<span class="cline-any cline-no"> </span>
|
|
472
472
|
<span class="cline-any cline-no"> </span>
|
|
@@ -484,7 +484,7 @@
|
|
|
484
484
|
<span class="cline-any cline-no"> </span>
|
|
485
485
|
<span class="cline-any cline-neutral"> </span>
|
|
486
486
|
<span class="cline-any cline-neutral"> </span>
|
|
487
|
-
<span class="cline-any cline-yes">
|
|
487
|
+
<span class="cline-any cline-yes">17x</span>
|
|
488
488
|
<span class="cline-any cline-no"> </span>
|
|
489
489
|
<span class="cline-any cline-no"> </span>
|
|
490
490
|
<span class="cline-any cline-no"> </span>
|
|
@@ -496,7 +496,7 @@
|
|
|
496
496
|
<span class="cline-any cline-neutral"> </span>
|
|
497
497
|
<span class="cline-any cline-neutral"> </span>
|
|
498
498
|
<span class="cline-any cline-neutral"> </span>
|
|
499
|
-
<span class="cline-any cline-yes">
|
|
499
|
+
<span class="cline-any cline-yes">17x</span>
|
|
500
500
|
<span class="cline-any cline-no"> </span>
|
|
501
501
|
<span class="cline-any cline-neutral"> </span>
|
|
502
502
|
<span class="cline-any cline-no"> </span>
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
<span class="cline-any cline-neutral"> </span>
|
|
518
518
|
<span class="cline-any cline-neutral"> </span>
|
|
519
519
|
<span class="cline-any cline-neutral"> </span>
|
|
520
|
-
<span class="cline-any cline-yes">
|
|
520
|
+
<span class="cline-any cline-yes">17x</span>
|
|
521
521
|
<span class="cline-any cline-no"> </span>
|
|
522
522
|
<span class="cline-any cline-neutral"> </span>
|
|
523
523
|
<span class="cline-any cline-no"> </span>
|
|
@@ -544,70 +544,70 @@
|
|
|
544
544
|
<span class="cline-any cline-neutral"> </span>
|
|
545
545
|
<span class="cline-any cline-neutral"> </span>
|
|
546
546
|
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-yes">
|
|
548
|
-
<span class="cline-any cline-yes">
|
|
549
|
-
<span class="cline-any cline-yes">
|
|
547
|
+
<span class="cline-any cline-yes">17x</span>
|
|
548
|
+
<span class="cline-any cline-yes">3x</span>
|
|
549
|
+
<span class="cline-any cline-yes">3x</span>
|
|
550
550
|
<span class="cline-any cline-neutral"> </span>
|
|
551
551
|
<span class="cline-any cline-neutral"> </span>
|
|
552
552
|
<span class="cline-any cline-neutral"> </span>
|
|
553
553
|
<span class="cline-any cline-neutral"> </span>
|
|
554
|
-
<span class="cline-any cline-yes">
|
|
555
|
-
<span class="cline-any cline-yes">
|
|
554
|
+
<span class="cline-any cline-yes">3x</span>
|
|
555
|
+
<span class="cline-any cline-yes">3x</span>
|
|
556
556
|
<span class="cline-any cline-neutral"> </span>
|
|
557
557
|
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-yes">
|
|
558
|
+
<span class="cline-any cline-yes">3x</span>
|
|
559
559
|
<span class="cline-any cline-neutral"> </span>
|
|
560
560
|
<span class="cline-any cline-neutral"> </span>
|
|
561
561
|
<span class="cline-any cline-neutral"> </span>
|
|
562
|
-
<span class="cline-any cline-yes">
|
|
562
|
+
<span class="cline-any cline-yes">3x</span>
|
|
563
563
|
<span class="cline-any cline-neutral"> </span>
|
|
564
564
|
<span class="cline-any cline-neutral"> </span>
|
|
565
565
|
<span class="cline-any cline-neutral"> </span>
|
|
566
566
|
<span class="cline-any cline-neutral"> </span>
|
|
567
567
|
<span class="cline-any cline-neutral"> </span>
|
|
568
568
|
<span class="cline-any cline-neutral"> </span>
|
|
569
|
-
<span class="cline-any cline-yes">
|
|
570
|
-
<span class="cline-any cline-yes">
|
|
571
|
-
<span class="cline-any cline-yes">
|
|
569
|
+
<span class="cline-any cline-yes">17x</span>
|
|
570
|
+
<span class="cline-any cline-yes">2x</span>
|
|
571
|
+
<span class="cline-any cline-yes">2x</span>
|
|
572
572
|
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-yes">
|
|
573
|
+
<span class="cline-any cline-yes">2x</span>
|
|
574
574
|
<span class="cline-any cline-neutral"> </span>
|
|
575
|
-
<span class="cline-any cline-yes">
|
|
576
|
-
<span class="cline-any cline-yes">
|
|
575
|
+
<span class="cline-any cline-yes">2x</span>
|
|
576
|
+
<span class="cline-any cline-yes">2x</span>
|
|
577
577
|
<span class="cline-any cline-neutral"> </span>
|
|
578
578
|
<span class="cline-any cline-neutral"> </span>
|
|
579
579
|
<span class="cline-any cline-neutral"> </span>
|
|
580
580
|
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-yes">
|
|
581
|
+
<span class="cline-any cline-yes">2x</span>
|
|
582
582
|
<span class="cline-any cline-neutral"> </span>
|
|
583
583
|
<span class="cline-any cline-neutral"> </span>
|
|
584
|
-
<span class="cline-any cline-yes">
|
|
584
|
+
<span class="cline-any cline-yes">2x</span>
|
|
585
585
|
<span class="cline-any cline-neutral"> </span>
|
|
586
586
|
<span class="cline-any cline-neutral"> </span>
|
|
587
587
|
<span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-yes">
|
|
588
|
+
<span class="cline-any cline-yes">2x</span>
|
|
589
589
|
<span class="cline-any cline-neutral"> </span>
|
|
590
590
|
<span class="cline-any cline-neutral"> </span>
|
|
591
591
|
<span class="cline-any cline-neutral"> </span>
|
|
592
592
|
<span class="cline-any cline-neutral"> </span>
|
|
593
593
|
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-yes">
|
|
594
|
+
<span class="cline-any cline-yes">17x</span>
|
|
595
595
|
<span class="cline-any cline-yes">1x</span>
|
|
596
596
|
<span class="cline-any cline-yes">1x</span>
|
|
597
597
|
<span class="cline-any cline-neutral"> </span>
|
|
598
598
|
<span class="cline-any cline-yes">1x</span>
|
|
599
599
|
<span class="cline-any cline-neutral"> </span>
|
|
600
600
|
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-
|
|
602
|
-
<span class="cline-any cline-
|
|
603
|
-
<span class="cline-any cline-
|
|
604
|
-
<span class="cline-any cline-
|
|
601
|
+
<span class="cline-any cline-yes">1x</span>
|
|
602
|
+
<span class="cline-any cline-yes">1x</span>
|
|
603
|
+
<span class="cline-any cline-yes">1x</span>
|
|
604
|
+
<span class="cline-any cline-yes">1x</span>
|
|
605
605
|
<span class="cline-any cline-neutral"> </span>
|
|
606
|
-
<span class="cline-any cline-
|
|
606
|
+
<span class="cline-any cline-yes">1x</span>
|
|
607
607
|
<span class="cline-any cline-neutral"> </span>
|
|
608
608
|
<span class="cline-any cline-neutral"> </span>
|
|
609
609
|
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">
|
|
610
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import core from "@budibase/backend-core"
|
|
611
611
|
const { Configs, EmailTemplatePurpose } = require("../../../constants")
|
|
612
612
|
const { sendEmail, isEmailConfigured } = require("../../../utilities/email")
|
|
613
613
|
const { setCookie, getCookie, clearCookie, hash, platformLogout } = core.utils
|
|
@@ -628,23 +628,23 @@ export const oidcCallbackUrl = async (config: any) => {
|
|
|
628
628
|
return ssoCallbackUrl(getGlobalDB(), config, "oidc")
|
|
629
629
|
}
|
|
630
630
|
|
|
631
|
-
async function
|
|
632
|
-
|
|
631
|
+
async function authInternal(ctx: any, user: any, err = <span class="branch-0 cbranch-no" title="branch not covered" >null,</span> info = <span class="branch-0 cbranch-no" title="branch not covered" >null)</span> {
|
|
632
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
|
|
633
633
|
<span class="cstat-no" title="statement not covered" > console.error("Authentication error", err)</span>
|
|
634
634
|
<span class="cstat-no" title="statement not covered" > return ctx.throw(403, info ? info : "Unauthorized")</span>
|
|
635
635
|
}
|
|
636
636
|
|
|
637
|
-
|
|
637
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!user) {
|
|
638
638
|
<span class="cstat-no" title="statement not covered" > return ctx.throw(403, info ? info : "Unauthorized")</span>
|
|
639
639
|
}
|
|
640
640
|
|
|
641
641
|
// set a cookie for browser access
|
|
642
|
-
|
|
642
|
+
setCookie(ctx, user.token, Cookies.Auth, { sign: false })
|
|
643
643
|
// set the token in a header as well for APIs
|
|
644
|
-
|
|
644
|
+
ctx.set(Headers.TOKEN, user.token)
|
|
645
645
|
// get rid of any app cookies on login
|
|
646
646
|
// have to check test because this breaks cypress
|
|
647
|
-
|
|
647
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!env.isTest()) {
|
|
648
648
|
<span class="cstat-no" title="statement not covered" > clearCookie(ctx, Cookies.CurrentApp)</span>
|
|
649
649
|
}
|
|
650
650
|
}
|
|
@@ -870,12 +870,12 @@ export const oidcAuth = async (ctx: any, next: any) => {
|
|
|
870
870
|
return passport.authenticate(
|
|
871
871
|
strategy,
|
|
872
872
|
{ successRedirect: "/", failureRedirect: "/error" },
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
873
|
+
async (err: any, user: any, info: any) => {
|
|
874
|
+
await authInternal(ctx, user, err, info)
|
|
875
|
+
await context.identity.doInUserContext(user, async () => {
|
|
876
|
+
await events.auth.login("oidc")
|
|
877
877
|
})
|
|
878
|
-
|
|
878
|
+
ctx.redirect("/")
|
|
879
879
|
}
|
|
880
880
|
)(ctx, next)
|
|
881
881
|
}
|
|
@@ -886,7 +886,7 @@ export const oidcAuth = async (ctx: any, next: any) => {
|
|
|
886
886
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
887
887
|
Code coverage generated by
|
|
888
888
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
889
|
-
at Wed Nov 16 2022
|
|
889
|
+
at Wed Nov 16 2022 13:31:07 GMT+0000 (Coordinated Universal Time)
|
|
890
890
|
</div>
|
|
891
891
|
<script src="../../../../prettify.js"></script>
|
|
892
892
|
<script>
|