@budibase/server 1.0.105 → 1.0.106
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/builder/assets/{index.8e773e27.js → index.b45716fc.js} +1 -1
- package/builder/index.html +1 -1
- package/coverage/clover.xml +123 -119
- package/coverage/coverage-final.json +1 -1
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +1 -1
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +1 -1
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +1 -1
- package/coverage/lcov-report/automations/utils.js.html +1 -1
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +1 -1
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +19 -19
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +19 -19
- package/coverage/lcov-report/threads/index.js.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +51 -24
- package/coverage/lcov-report/threads/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +1 -1
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +217 -207
- package/dist/package.json +4 -4
- package/dist/threads/query.js +16 -9
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/threads/query.js +22 -13
|
@@ -121,7 +121,7 @@ exports.middleware =
|
|
|
121
121
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
122
122
|
Code coverage generated by
|
|
123
123
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
124
|
-
at Tue Apr 05 2022
|
|
124
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
125
125
|
</div>
|
|
126
126
|
</div>
|
|
127
127
|
<script src="../prettify.js"></script>
|
|
@@ -442,7 +442,7 @@ module.exports =
|
|
|
442
442
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
443
443
|
Code coverage generated by
|
|
444
444
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
445
|
-
at Tue Apr 05 2022
|
|
445
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
446
446
|
</div>
|
|
447
447
|
</div>
|
|
448
448
|
<script src="../prettify.js"></script>
|
|
@@ -298,7 +298,7 @@ module.exports = async (ctx, permType) => {
|
|
|
298
298
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
299
299
|
Code coverage generated by
|
|
300
300
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
301
|
-
at Tue Apr 05 2022
|
|
301
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
302
302
|
</div>
|
|
303
303
|
</div>
|
|
304
304
|
<script src="../prettify.js"></script>
|
|
@@ -412,7 +412,7 @@ module.exports = async (ctx, next) => {
|
|
|
412
412
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
413
413
|
Code coverage generated by
|
|
414
414
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
415
|
-
at Tue Apr 05 2022
|
|
415
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
416
416
|
</div>
|
|
417
417
|
</div>
|
|
418
418
|
<script src="../prettify.js"></script>
|
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
231
231
|
Code coverage generated by
|
|
232
232
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
233
|
-
at Tue Apr 05 2022
|
|
233
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
234
234
|
</div>
|
|
235
235
|
</div>
|
|
236
236
|
<script src="../prettify.js"></script>
|
|
@@ -148,7 +148,7 @@ module.exports.params = schema => {
|
|
|
148
148
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
149
149
|
Code coverage generated by
|
|
150
150
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
151
|
-
at Tue Apr 05 2022
|
|
151
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
152
152
|
</div>
|
|
153
153
|
</div>
|
|
154
154
|
<script src="../prettify.js"></script>
|
|
@@ -127,7 +127,7 @@ module.exports = function ({ requiresAppId } = <span class="branch-0 cbranch-no"
|
|
|
127
127
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
128
128
|
Code coverage generated by
|
|
129
129
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
130
|
-
at Tue Apr 05 2022
|
|
130
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
131
131
|
</div>
|
|
132
132
|
</div>
|
|
133
133
|
<script src="../prettify.js"></script>
|
|
@@ -247,7 +247,7 @@ module.exports.bodySubResource = (main, sub) => {
|
|
|
247
247
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
248
248
|
Code coverage generated by
|
|
249
249
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
250
|
-
at Tue Apr 05 2022
|
|
250
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
251
251
|
</div>
|
|
252
252
|
</div>
|
|
253
253
|
<script src="../prettify.js"></script>
|
|
@@ -94,7 +94,7 @@ module.exports = async (ctx, next) => {
|
|
|
94
94
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
95
95
|
Code coverage generated by
|
|
96
96
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
97
|
-
at Tue Apr 05 2022
|
|
97
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
98
98
|
</div>
|
|
99
99
|
</div>
|
|
100
100
|
<script src="../prettify.js"></script>
|
|
@@ -556,7 +556,7 @@ const POST_CREATE = {
|
|
|
556
556
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
557
557
|
Code coverage generated by
|
|
558
558
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
559
|
-
at Tue Apr 05 2022
|
|
559
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
560
560
|
</div>
|
|
561
561
|
</div>
|
|
562
562
|
<script src="../prettify.js"></script>
|
|
@@ -85,7 +85,7 @@ exports.isWebhookEndpoint = ctx => {
|
|
|
85
85
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
86
86
|
Code coverage generated by
|
|
87
87
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
88
|
-
at Tue Apr 05 2022
|
|
88
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
89
89
|
</div>
|
|
90
90
|
</div>
|
|
91
91
|
<script src="../prettify.js"></script>
|
|
@@ -487,7 +487,7 @@ module.exports = (input, callback) => {
|
|
|
487
487
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
488
488
|
Code coverage generated by
|
|
489
489
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
490
|
-
at Tue Apr 05 2022
|
|
490
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
491
491
|
</div>
|
|
492
492
|
</div>
|
|
493
493
|
<script src="../prettify.js"></script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">75.42% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>221/293</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">59.34% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>73/
|
|
35
|
+
<span class='fraction'>73/123</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">88.09% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>37/
|
|
42
|
+
<span class='fraction'>37/42</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">75.95% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>218/287</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -104,17 +104,17 @@
|
|
|
104
104
|
|
|
105
105
|
<tr>
|
|
106
106
|
<td class="file medium" data-value="query.js"><a href="query.js.html">query.js</a></td>
|
|
107
|
-
<td data-value="
|
|
108
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
107
|
+
<td data-value="68.62" class="pic medium">
|
|
108
|
+
<div class="chart"><div class="cover-fill" style="width: 68%"></div><div class="cover-empty" style="width: 32%"></div></div>
|
|
109
109
|
</td>
|
|
110
|
-
<td data-value="
|
|
111
|
-
<td data-value="
|
|
112
|
-
<td data-value="
|
|
113
|
-
<td data-value="
|
|
114
|
-
<td data-value="
|
|
115
|
-
<td data-value="
|
|
116
|
-
<td data-value="
|
|
117
|
-
<td data-value="
|
|
110
|
+
<td data-value="68.62" class="pct medium">68.62%</td>
|
|
111
|
+
<td data-value="153" class="abs medium">105/153</td>
|
|
112
|
+
<td data-value="59.72" class="pct medium">59.72%</td>
|
|
113
|
+
<td data-value="72" class="abs medium">43/72</td>
|
|
114
|
+
<td data-value="82.35" class="pct high">82.35%</td>
|
|
115
|
+
<td data-value="17" class="abs high">14/17</td>
|
|
116
|
+
<td data-value="68.91" class="pct medium">68.91%</td>
|
|
117
|
+
<td data-value="148" class="abs medium">102/148</td>
|
|
118
118
|
</tr>
|
|
119
119
|
|
|
120
120
|
<tr>
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
141
141
|
Code coverage generated by
|
|
142
142
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
143
|
-
at Tue Apr 05 2022
|
|
143
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
144
144
|
</div>
|
|
145
145
|
</div>
|
|
146
146
|
<script src="../prettify.js"></script>
|
|
@@ -262,7 +262,7 @@ module.exports.ThreadType = ThreadType
|
|
|
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">istanbul</a>
|
|
265
|
-
at Tue Apr 05 2022
|
|
265
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
266
266
|
</div>
|
|
267
267
|
</div>
|
|
268
268
|
<script src="../prettify.js"></script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">68.62% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>105/153</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">59.72% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>43/
|
|
35
|
+
<span class='fraction'>43/72</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">82.35% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>14/
|
|
42
|
+
<span class='fraction'>14/17</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">68.91% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>102/148</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -364,7 +364,16 @@
|
|
|
364
364
|
<a name='L305'></a><a href='#L305'>305</a>
|
|
365
365
|
<a name='L306'></a><a href='#L306'>306</a>
|
|
366
366
|
<a name='L307'></a><a href='#L307'>307</a>
|
|
367
|
-
<a name='L308'></a><a href='#L308'>308</a
|
|
367
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
368
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
369
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
370
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
371
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
372
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
373
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
374
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
375
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
376
|
+
<a name='L317'></a><a href='#L317'>317</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
368
377
|
<span class="cline-any cline-yes">2x</span>
|
|
369
378
|
<span class="cline-any cline-yes">2x</span>
|
|
370
379
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -375,6 +384,8 @@
|
|
|
375
384
|
<span class="cline-any cline-yes">2x</span>
|
|
376
385
|
<span class="cline-any cline-yes">2x</span>
|
|
377
386
|
<span class="cline-any cline-neutral"> </span>
|
|
387
|
+
<span class="cline-any cline-yes">2x</span>
|
|
388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
378
389
|
<span class="cline-any cline-neutral"> </span>
|
|
379
390
|
<span class="cline-any cline-neutral"> </span>
|
|
380
391
|
<span class="cline-any cline-yes">15x</span>
|
|
@@ -404,10 +415,15 @@
|
|
|
404
415
|
<span class="cline-any cline-no"> </span>
|
|
405
416
|
<span class="cline-any cline-neutral"> </span>
|
|
406
417
|
<span class="cline-any cline-no"> </span>
|
|
418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
421
|
+
<span class="cline-any cline-neutral"> </span>
|
|
407
422
|
<span class="cline-any cline-no"> </span>
|
|
408
423
|
<span class="cline-any cline-neutral"> </span>
|
|
409
424
|
<span class="cline-any cline-no"> </span>
|
|
410
425
|
<span class="cline-any cline-no"> </span>
|
|
426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
411
427
|
<span class="cline-any cline-no"> </span>
|
|
412
428
|
<span class="cline-any cline-no"> </span>
|
|
413
429
|
<span class="cline-any cline-no"> </span>
|
|
@@ -430,11 +446,13 @@
|
|
|
430
446
|
<span class="cline-any cline-neutral"> </span>
|
|
431
447
|
<span class="cline-any cline-neutral"> </span>
|
|
432
448
|
<span class="cline-any cline-no"> </span>
|
|
449
|
+
<span class="cline-any cline-no"> </span>
|
|
433
450
|
<span class="cline-any cline-neutral"> </span>
|
|
434
451
|
<span class="cline-any cline-neutral"> </span>
|
|
435
452
|
<span class="cline-any cline-no"> </span>
|
|
453
|
+
<span class="cline-any cline-no"> </span>
|
|
436
454
|
<span class="cline-any cline-neutral"> </span>
|
|
437
|
-
<span class="cline-any cline-
|
|
455
|
+
<span class="cline-any cline-no"> </span>
|
|
438
456
|
<span class="cline-any cline-neutral"> </span>
|
|
439
457
|
<span class="cline-any cline-no"> </span>
|
|
440
458
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -682,6 +700,8 @@ const {
|
|
|
682
700
|
const { doInAppContext, getAppDB } = require("@budibase/backend-core/context")
|
|
683
701
|
const { isSQL } = require("../integrations/utils")
|
|
684
702
|
|
|
703
|
+
const CONST_CHAR_REGEX = new RegExp("'[^']*'", "g")
|
|
704
|
+
|
|
685
705
|
class QueryRunner {
|
|
686
706
|
constructor(input, flags = { noRecursiveQuery: false }) {
|
|
687
707
|
this.datasource = input.datasource
|
|
@@ -710,17 +730,22 @@ class QueryRunner {
|
|
|
710
730
|
arrays = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
711
731
|
<span class="cstat-no" title="statement not covered" > for (let binding of bindings) {</span>
|
|
712
732
|
// look for array/list operations in the SQL statement, which will need handled later
|
|
713
|
-
const
|
|
714
|
-
|
|
733
|
+
const listRegexMatch = <span class="cstat-no" title="statement not covered" >sql.match(</span>
|
|
734
|
+
new RegExp(`(in|IN|In|iN)( )+[(]?${binding}[)]?`)
|
|
735
|
+
)
|
|
715
736
|
// check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
|
|
716
|
-
|
|
717
|
-
const charConstMatch = <span class="cstat-no" title="statement not covered" >sql.match(
|
|
718
|
-
|
|
719
|
-
|
|
737
|
+
// start by finding all the instances of const character strings
|
|
738
|
+
const charConstMatch = <span class="cstat-no" title="statement not covered" >sql.match(CONST_CHAR_REGEX) || []</span>
|
|
739
|
+
// now look within them to see if a binding is used
|
|
740
|
+
const charConstBindingMatch = <span class="cstat-no" title="statement not covered" >charConstMatch.find(<span class="fstat-no" title="function not covered" >st</span>ring =></span>
|
|
741
|
+
<span class="cstat-no" title="statement not covered" > string.match(new RegExp(`'[^']*${binding}[^']*'`))</span>
|
|
742
|
+
)
|
|
743
|
+
<span class="cstat-no" title="statement not covered" > if (charConstBindingMatch) {</span>
|
|
744
|
+
let [part1, part2] = <span class="cstat-no" title="statement not covered" >charConstBindingMatch.split(binding)</span>
|
|
720
745
|
<span class="cstat-no" title="statement not covered" > part1 = `'${part1.substring(1)}'`</span>
|
|
721
746
|
<span class="cstat-no" title="statement not covered" > part2 = `'${part2.substring(0, part2.length - 1)}'`</span>
|
|
722
747
|
<span class="cstat-no" title="statement not covered" > sql = sql.replace(</span>
|
|
723
|
-
|
|
748
|
+
charConstBindingMatch,
|
|
724
749
|
integration.getStringConcat([
|
|
725
750
|
part1,
|
|
726
751
|
integration.getBindingIdentifier(),
|
|
@@ -736,12 +761,14 @@ class QueryRunner {
|
|
|
736
761
|
","
|
|
737
762
|
)
|
|
738
763
|
// build a string like ($1, $2, $3)
|
|
739
|
-
<span class="cstat-no" title="statement not covered"
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
764
|
+
let replacement = <span class="cstat-no" title="statement not covered" >`${Array.apply(null, Array(value.length))</span>
|
|
765
|
+
.map(<span class="fstat-no" title="function not covered" >()</span> => <span class="cstat-no" title="statement not covered" >integration.getBindingIdentifier())</span>
|
|
766
|
+
.join(",")}`
|
|
767
|
+
// check if parentheses are needed
|
|
768
|
+
<span class="cstat-no" title="statement not covered" > if (!listRegexMatch[0].includes(`(${binding})`)) {</span>
|
|
769
|
+
<span class="cstat-no" title="statement not covered" > replacement = `(${replacement})`</span>
|
|
770
|
+
}
|
|
771
|
+
<span class="cstat-no" title="statement not covered" > sql = sql.replace(binding, replacement)</span>
|
|
745
772
|
} else {
|
|
746
773
|
<span class="cstat-no" title="statement not covered" > sql = sql.replace(binding, integration.getBindingIdentifier())</span>
|
|
747
774
|
}
|
|
@@ -985,7 +1012,7 @@ module.exports = (input, callback) => {
|
|
|
985
1012
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
986
1013
|
Code coverage generated by
|
|
987
1014
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
988
|
-
at Tue Apr 05 2022
|
|
1015
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
989
1016
|
</div>
|
|
990
1017
|
</div>
|
|
991
1018
|
<script src="../prettify.js"></script>
|
|
@@ -298,7 +298,7 @@ exports.hasExtraData = response => {
|
|
|
298
298
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
299
299
|
Code coverage generated by
|
|
300
300
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
301
|
-
at Tue Apr 05 2022
|
|
301
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
302
302
|
</div>
|
|
303
303
|
</div>
|
|
304
304
|
<script src="../prettify.js"></script>
|
|
@@ -109,7 +109,7 @@ const SALT_ROUNDS = <span class="cstat-no" title="statement not covered" >env.SA
|
|
|
109
109
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
110
110
|
Code coverage generated by
|
|
111
111
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
112
|
-
at Tue Apr 05 2022
|
|
112
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
113
113
|
</div>
|
|
114
114
|
</div>
|
|
115
115
|
<script src="../prettify.js"></script>
|
|
@@ -94,7 +94,7 @@ module.exports.budibaseTempDir = budibaseTempDir
|
|
|
94
94
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
95
95
|
Code coverage generated by
|
|
96
96
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
97
|
-
at Tue Apr 05 2022
|
|
97
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
98
98
|
</div>
|
|
99
99
|
</div>
|
|
100
100
|
<script src="../prettify.js"></script>
|
|
@@ -130,7 +130,7 @@ exports.resolve = <span class="fstat-no" title="function not covered" >fu</span>
|
|
|
130
130
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
131
131
|
Code coverage generated by
|
|
132
132
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
133
|
-
at Tue Apr 05 2022
|
|
133
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
134
134
|
</div>
|
|
135
135
|
</div>
|
|
136
136
|
<script src="../prettify.js"></script>
|
|
@@ -496,7 +496,7 @@ module.exports = {
|
|
|
496
496
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
497
497
|
Code coverage generated by
|
|
498
498
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
499
|
-
at Tue Apr 05 2022
|
|
499
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
500
500
|
</div>
|
|
501
501
|
</div>
|
|
502
502
|
<script src="../prettify.js"></script>
|
|
@@ -385,7 +385,7 @@ exports.getGlobalUsersFromMetadata = async users => {
|
|
|
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">istanbul</a>
|
|
388
|
-
at Tue Apr 05 2022
|
|
388
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
389
389
|
</div>
|
|
390
390
|
</div>
|
|
391
391
|
<script src="../prettify.js"></script>
|
|
@@ -245,7 +245,7 @@
|
|
|
245
245
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
246
246
|
Code coverage generated by
|
|
247
247
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
248
|
-
at Tue Apr 05 2022
|
|
248
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
249
249
|
</div>
|
|
250
250
|
</div>
|
|
251
251
|
<script src="../prettify.js"></script>
|
|
@@ -547,7 +547,7 @@ exports.convertBookmark = bookmark => {
|
|
|
547
547
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
548
548
|
Code coverage generated by
|
|
549
549
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
550
|
-
at Tue Apr 05 2022
|
|
550
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
551
551
|
</div>
|
|
552
552
|
</div>
|
|
553
553
|
<script src="../prettify.js"></script>
|
|
@@ -367,7 +367,7 @@ module.exports = InMemoryQueue
|
|
|
367
367
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
368
368
|
Code coverage generated by
|
|
369
369
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
370
|
-
at Tue Apr 05 2022
|
|
370
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
371
371
|
</div>
|
|
372
372
|
</div>
|
|
373
373
|
<script src="../../prettify.js"></script>
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
96
96
|
Code coverage generated by
|
|
97
97
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
98
|
-
at Tue Apr 05 2022
|
|
98
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
99
99
|
</div>
|
|
100
100
|
</div>
|
|
101
101
|
<script src="../../prettify.js"></script>
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
96
96
|
Code coverage generated by
|
|
97
97
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
98
|
-
at Tue Apr 05 2022
|
|
98
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
99
99
|
</div>
|
|
100
100
|
</div>
|
|
101
101
|
<script src="../../prettify.js"></script>
|
|
@@ -139,7 +139,7 @@ exports.createRoutingView = createRoutingView
|
|
|
139
139
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
140
140
|
Code coverage generated by
|
|
141
141
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
142
|
-
at Tue Apr 05 2022
|
|
142
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
143
143
|
</div>
|
|
144
144
|
</div>
|
|
145
145
|
<script src="../../prettify.js"></script>
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
111
111
|
Code coverage generated by
|
|
112
112
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
113
|
-
at Tue Apr 05 2022
|
|
113
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
114
114
|
</div>
|
|
115
115
|
</div>
|
|
116
116
|
<script src="../../prettify.js"></script>
|
|
@@ -1081,7 +1081,7 @@ exports.cleanupAttachments = async (table, { row, rows, oldRow, oldTable }) =>
|
|
|
1081
1081
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1082
1082
|
Code coverage generated by
|
|
1083
1083
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
1084
|
-
at Tue Apr 05 2022
|
|
1084
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
1085
1085
|
</div>
|
|
1086
1086
|
</div>
|
|
1087
1087
|
<script src="../../prettify.js"></script>
|
|
@@ -181,7 +181,7 @@ exports.processFormulas = (
|
|
|
181
181
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
182
182
|
Code coverage generated by
|
|
183
183
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
184
|
-
at Tue Apr 05 2022
|
|
184
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
185
185
|
</div>
|
|
186
186
|
</div>
|
|
187
187
|
<script src="../../prettify.js"></script>
|
|
@@ -136,7 +136,7 @@ module.exports = ScriptRunner
|
|
|
136
136
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
137
137
|
Code coverage generated by
|
|
138
138
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
139
|
-
at Tue Apr 05 2022
|
|
139
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
140
140
|
</div>
|
|
141
141
|
</div>
|
|
142
142
|
<script src="../prettify.js"></script>
|
|
@@ -274,7 +274,7 @@ exports.CURRENTLY_SUPPORTED_LEVELS = CURRENTLY_SUPPORTED_LEVELS
|
|
|
274
274
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
275
275
|
Code coverage generated by
|
|
276
276
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
277
|
-
at Tue Apr 05 2022
|
|
277
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
278
278
|
</div>
|
|
279
279
|
</div>
|
|
280
280
|
<script src="../prettify.js"></script>
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
86
86
|
Code coverage generated by
|
|
87
87
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
88
|
-
at Tue Apr 05 2022
|
|
88
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
89
89
|
</div>
|
|
90
90
|
</div>
|
|
91
91
|
<script src="../prettify.js"></script>
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
126
126
|
Code coverage generated by
|
|
127
127
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
128
|
-
at Tue Apr 05 2022
|
|
128
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
<script src="../../prettify.js"></script>
|
|
@@ -343,7 +343,7 @@ exports.update = async (property, usage, opts = { dryRun: false }) => {
|
|
|
343
343
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
344
344
|
Code coverage generated by
|
|
345
345
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
346
|
-
at Tue Apr 05 2022
|
|
346
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
347
347
|
</div>
|
|
348
348
|
</div>
|
|
349
349
|
<script src="../../prettify.js"></script>
|
|
@@ -289,7 +289,7 @@ exports.getUniqueRows = async appIds => {
|
|
|
289
289
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
290
290
|
Code coverage generated by
|
|
291
291
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
292
|
-
at Tue Apr 05 2022
|
|
292
|
+
at Tue Apr 05 2022 13:38:33 GMT+0000 (Coordinated Universal Time)
|
|
293
293
|
</div>
|
|
294
294
|
</div>
|
|
295
295
|
<script src="../../prettify.js"></script>
|