@budibase/server 1.0.207-alpha.9 → 1.0.209
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.24307ca0.css +6 -0
- package/builder/assets/index.d3ea58e7.js +1315 -0
- package/builder/index.html +2 -2
- package/coverage/clover.xml +122 -132
- package/coverage/coverage-final.json +5 -5
- package/coverage/lcov-report/api/controllers/apikeys.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 +6 -9
- 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 +7 -7
- 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/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 +17 -47
- package/coverage/lcov-report/api/controllers/row/index.html +22 -22
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +2 -2
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +8 -17
- 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/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/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/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/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.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 +5 -5
- 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/delay.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/loop.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 +4 -4
- 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/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +10 -10
- 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 +6 -9
- 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 +27 -27
- 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/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/utils.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +1 -1
- package/coverage/lcov-report/threads/utils.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/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 +220 -238
- package/dist/api/controllers/backup.js +2 -3
- package/dist/api/controllers/row/external.js +7 -19
- package/dist/api/controllers/row/internalSearch.js +1 -1
- package/dist/api/controllers/row/utils.js +0 -3
- package/dist/automations/triggers.js +1 -1
- package/dist/db/utils.js +0 -1
- package/dist/definitions/datasource.js +0 -1
- package/dist/integrations/base/sql.js +3 -20
- package/dist/integrations/index.js +0 -4
- package/dist/integrations/microsoftSqlServer.js +1 -1
- package/dist/integrations/mongodb.js +6 -0
- package/dist/integrations/mysql.js +1 -1
- package/dist/integrations/postgres.js +1 -1
- package/dist/package.json +6 -8
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +6 -16
- package/package.json +7 -9
- package/src/api/controllers/backup.js +2 -3
- package/src/api/controllers/row/external.js +9 -19
- package/src/api/controllers/row/internalSearch.js +1 -1
- package/src/api/controllers/row/utils.js +0 -3
- package/src/automations/triggers.js +1 -1
- package/src/db/utils.js +0 -1
- package/src/definitions/common.ts +0 -1
- package/src/definitions/datasource.ts +0 -1
- package/src/integrations/base/sql.ts +11 -25
- package/src/integrations/index.ts +0 -4
- package/src/integrations/microsoftSqlServer.ts +0 -1
- package/src/integrations/mongodb.ts +6 -0
- package/src/integrations/mysql.ts +0 -1
- package/src/integrations/postgres.ts +0 -1
- package/src/utilities/fileSystem/index.js +8 -22
- package/builder/assets/index.650b000d.js +0 -1312
- package/builder/assets/index.937e02c1.css +0 -6
- package/dist/integrations/snowflake.js +0 -101
- package/scripts/integrations/oracle/instantclient/linux/arm64/basiclite-19.10.zip +0 -0
- package/scripts/integrations/oracle/instantclient/linux/arm64/install.sh +0 -23
- package/scripts/integrations/oracle/instantclient/linux/install.sh +0 -10
- package/src/integrations/snowflake.ts +0 -98
|
@@ -232,7 +232,7 @@ exports.update = async function (ctx) {
|
|
|
232
232
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
233
233
|
Code coverage generated by
|
|
234
234
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
235
|
-
at Thu Jun 23 2022 14:
|
|
235
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
236
236
|
</div>
|
|
237
237
|
<script src="../../prettify.js"></script>
|
|
238
238
|
<script>
|
|
@@ -244,7 +244,7 @@ exports.fetchSelf = async ctx => {
|
|
|
244
244
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
245
245
|
Code coverage generated by
|
|
246
246
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
247
|
-
at Thu Jun 23 2022 14:
|
|
247
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
248
248
|
</div>
|
|
249
249
|
<script src="../../prettify.js"></script>
|
|
250
250
|
<script>
|
|
@@ -826,7 +826,7 @@ exports.test = async function (ctx) {
|
|
|
826
826
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
827
827
|
Code coverage generated by
|
|
828
828
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
829
|
-
at Thu Jun 23 2022 14:
|
|
829
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
830
830
|
</div>
|
|
831
831
|
<script src="../../prettify.js"></script>
|
|
832
832
|
<script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>13/13</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>13/13</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,8 +80,7 @@
|
|
|
80
80
|
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
81
|
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">27x</span>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">27x</span>
|
|
85
84
|
<span class="cline-any cline-yes">27x</span>
|
|
86
85
|
<span class="cline-any cline-yes">27x</span>
|
|
87
86
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -91,7 +90,6 @@
|
|
|
91
90
|
<span class="cline-any cline-yes">1x</span>
|
|
92
91
|
<span class="cline-any cline-yes">1x</span>
|
|
93
92
|
<span class="cline-any cline-yes">1x</span>
|
|
94
|
-
<span class="cline-any cline-yes">1x</span>
|
|
95
93
|
<span class="cline-any cline-neutral"> </span>
|
|
96
94
|
<span class="cline-any cline-yes">1x</span>
|
|
97
95
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -104,12 +102,11 @@ const { events, context } = require("@budibase/backend-core")
|
|
|
104
102
|
const { DocumentTypes } = require("../../db/utils")
|
|
105
103
|
|
|
106
104
|
exports.exportAppDump = async function (ctx) {
|
|
107
|
-
|
|
105
|
+
const { appId } = ctx.query
|
|
108
106
|
const appName = decodeURI(ctx.query.appname)
|
|
109
|
-
excludeRows = excludeRows === "true"
|
|
110
107
|
const backupIdentifier = `${appName}-export-${new Date().getTime()}.txt`
|
|
111
108
|
ctx.attachment(backupIdentifier)
|
|
112
|
-
ctx.body = await streamBackup(appId
|
|
109
|
+
ctx.body = await streamBackup(appId)
|
|
113
110
|
|
|
114
111
|
await context.doInAppContext(appId, async () => {
|
|
115
112
|
const appDb = context.getAppDB()
|
|
@@ -124,7 +121,7 @@ exports.exportAppDump = async function (ctx) {
|
|
|
124
121
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
125
122
|
Code coverage generated by
|
|
126
123
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
127
|
-
at Thu Jun 23 2022 14:
|
|
124
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
128
125
|
</div>
|
|
129
126
|
<script src="../../prettify.js"></script>
|
|
130
127
|
<script>
|
|
@@ -409,7 +409,7 @@ exports.importApps = <span class="fstat-no" title="function not covered" >as</sp
|
|
|
409
409
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
410
410
|
Code coverage generated by
|
|
411
411
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
412
|
-
at Thu Jun 23 2022 14:
|
|
412
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
413
413
|
</div>
|
|
414
414
|
<script src="../../prettify.js"></script>
|
|
415
415
|
<script>
|
|
@@ -172,7 +172,7 @@ exports.fetchAppComponentDefinitions = async function (ctx) {
|
|
|
172
172
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
173
173
|
Code coverage generated by
|
|
174
174
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
175
|
-
at Thu Jun 23 2022 14:
|
|
175
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
176
176
|
</div>
|
|
177
177
|
<script src="../../prettify.js"></script>
|
|
178
178
|
<script>
|
|
@@ -859,7 +859,7 @@ const buildSchemaHelper = <span class="fstat-no" title="function not covered" >a
|
|
|
859
859
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
860
860
|
Code coverage generated by
|
|
861
861
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
862
|
-
at Thu Jun 23 2022 14:
|
|
862
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
863
863
|
</div>
|
|
864
864
|
<script src="../../prettify.js"></script>
|
|
865
865
|
<script>
|
|
@@ -475,7 +475,7 @@ exports.getBudibaseVersion = async ctx => {
|
|
|
475
475
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
476
476
|
Code coverage generated by
|
|
477
477
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
478
|
-
at Thu Jun 23 2022 14:
|
|
478
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
479
479
|
</div>
|
|
480
480
|
<script src="../../prettify.js"></script>
|
|
481
481
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">73.
|
|
26
|
+
<span class="strong">73.1% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>704/963</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">73.
|
|
47
|
+
<span class="strong">73.02% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>693/949</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -129,13 +129,13 @@
|
|
|
129
129
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
130
130
|
</td>
|
|
131
131
|
<td data-value="100" class="pct high">100%</td>
|
|
132
|
-
<td data-value="
|
|
132
|
+
<td data-value="13" class="abs high">13/13</td>
|
|
133
133
|
<td data-value="100" class="pct high">100%</td>
|
|
134
134
|
<td data-value="0" class="abs high">0/0</td>
|
|
135
135
|
<td data-value="100" class="pct high">100%</td>
|
|
136
136
|
<td data-value="2" class="abs high">2/2</td>
|
|
137
137
|
<td data-value="100" class="pct high">100%</td>
|
|
138
|
-
<td data-value="
|
|
138
|
+
<td data-value="13" class="abs high">13/13</td>
|
|
139
139
|
</tr>
|
|
140
140
|
|
|
141
141
|
<tr>
|
|
@@ -386,7 +386,7 @@
|
|
|
386
386
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
387
387
|
Code coverage generated by
|
|
388
388
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
389
|
-
at Thu Jun 23 2022 14:
|
|
389
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
390
390
|
</div>
|
|
391
391
|
<script src="../../prettify.js"></script>
|
|
392
392
|
<script>
|
|
@@ -136,7 +136,7 @@ exports.find = async function (ctx) {
|
|
|
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" rel="noopener noreferrer">istanbul</a>
|
|
139
|
-
at Thu Jun 23 2022 14:
|
|
139
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
140
140
|
</div>
|
|
141
141
|
<script src="../../prettify.js"></script>
|
|
142
142
|
<script>
|
|
@@ -232,7 +232,7 @@ exports.destroy = async function (ctx) {
|
|
|
232
232
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
233
233
|
Code coverage generated by
|
|
234
234
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
235
|
-
at Thu Jun 23 2022 14:
|
|
235
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
236
236
|
</div>
|
|
237
237
|
<script src="../../prettify.js"></script>
|
|
238
238
|
<script>
|
|
@@ -193,7 +193,7 @@ exports.getMetadata = async ctx => {
|
|
|
193
193
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
194
194
|
Code coverage generated by
|
|
195
195
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
196
|
-
at Thu Jun 23 2022 14:
|
|
196
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
197
197
|
</div>
|
|
198
198
|
<script src="../../prettify.js"></script>
|
|
199
199
|
<script>
|
|
@@ -109,7 +109,7 @@ exports.fetchDefinitions = <span class="fstat-no" title="function not covered" >
|
|
|
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" rel="noopener noreferrer">istanbul</a>
|
|
112
|
-
at Thu Jun 23 2022 14:
|
|
112
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
113
113
|
</div>
|
|
114
114
|
<script src="../../prettify.js"></script>
|
|
115
115
|
<script>
|
|
@@ -595,7 +595,7 @@ exports.removePermission = async function (ctx) {
|
|
|
595
595
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
596
596
|
Code coverage generated by
|
|
597
597
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
598
|
-
at Thu Jun 23 2022 14:
|
|
598
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
599
599
|
</div>
|
|
600
600
|
<script src="../../prettify.js"></script>
|
|
601
601
|
<script>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at Thu Jun 23 2022 14:
|
|
104
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../../../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -220,7 +220,7 @@ exports.generateQueryPreviewValidation = () => {
|
|
|
220
220
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
221
221
|
Code coverage generated by
|
|
222
222
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
223
|
-
at Thu Jun 23 2022 14:
|
|
223
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
224
224
|
</div>
|
|
225
225
|
<script src="../../../prettify.js"></script>
|
|
226
226
|
<script>
|
|
@@ -394,7 +394,7 @@ exports.destroy = async function (ctx) {
|
|
|
394
394
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
395
395
|
Code coverage generated by
|
|
396
396
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
397
|
-
at Thu Jun 23 2022 14:
|
|
397
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
398
398
|
</div>
|
|
399
399
|
<script src="../../prettify.js"></script>
|
|
400
400
|
<script>
|
|
@@ -346,7 +346,7 @@ exports.clientFetch = async ctx => {
|
|
|
346
346
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
347
347
|
Code coverage generated by
|
|
348
348
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
349
|
-
at Thu Jun 23 2022 14:
|
|
349
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
350
350
|
</div>
|
|
351
351
|
<script src="../../prettify.js"></script>
|
|
352
352
|
<script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">16.07% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>18/
|
|
28
|
+
<span class='fraction'>18/112</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/46</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">16.36% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>18/
|
|
49
|
+
<span class='fraction'>18/110</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -296,17 +296,7 @@
|
|
|
296
296
|
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
297
|
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
298
|
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
310
300
|
<span class="cline-any cline-neutral"> </span>
|
|
311
301
|
<span class="cline-any cline-neutral"> </span>
|
|
312
302
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -469,31 +459,21 @@
|
|
|
469
459
|
<span class="cline-any cline-no"> </span>
|
|
470
460
|
<span class="cline-any cline-no"> </span>
|
|
471
461
|
<span class="cline-any cline-no"> </span>
|
|
472
|
-
<span class="cline-any cline-no"> </span>
|
|
473
462
|
<span class="cline-any cline-neutral"> </span>
|
|
474
463
|
<span class="cline-any cline-no"> </span>
|
|
475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
477
464
|
<span class="cline-any cline-no"> </span>
|
|
478
|
-
<span class="cline-any cline-
|
|
465
|
+
<span class="cline-any cline-no"> </span>
|
|
479
466
|
<span class="cline-any cline-neutral"> </span>
|
|
480
467
|
<span class="cline-any cline-neutral"> </span>
|
|
481
468
|
<span class="cline-any cline-neutral"> </span>
|
|
482
469
|
<span class="cline-any cline-no"> </span>
|
|
483
|
-
<span class="cline-any cline-no"> </span>
|
|
484
470
|
<span class="cline-any cline-neutral"> </span>
|
|
485
471
|
<span class="cline-any cline-neutral"> </span>
|
|
486
|
-
<span class="cline-any cline-no"> </span>
|
|
487
|
-
<span class="cline-any cline-no"> </span>
|
|
488
|
-
<span class="cline-any cline-no"> </span>
|
|
489
|
-
<span class="cline-any cline-no"> </span>
|
|
490
|
-
<span class="cline-any cline-no"> </span>
|
|
491
472
|
<span class="cline-any cline-neutral"> </span>
|
|
492
473
|
<span class="cline-any cline-neutral"> </span>
|
|
493
474
|
<span class="cline-any cline-neutral"> </span>
|
|
494
475
|
<span class="cline-any cline-no"> </span>
|
|
495
476
|
<span class="cline-any cline-neutral"> </span>
|
|
496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
497
477
|
<span class="cline-any cline-no"> </span>
|
|
498
478
|
<span class="cline-any cline-no"> </span>
|
|
499
479
|
<span class="cline-any cline-no"> </span>
|
|
@@ -706,44 +686,34 @@ exports.validate = <span class="fstat-no" title="function not covered" >as</span
|
|
|
706
686
|
}
|
|
707
687
|
|
|
708
688
|
exports.exportRows = <span class="fstat-no" title="function not covered" >as</span>ync ctx => {
|
|
709
|
-
const { datasourceId } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(ctx.params.tableId)</span>
|
|
689
|
+
const { datasourceId, tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(ctx.params.tableId)</span>
|
|
710
690
|
const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
|
|
711
|
-
|
|
712
|
-
const { columns } = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
|
|
691
|
+
let format = <span class="cstat-no" title="statement not covered" >ctx.query.format</span>
|
|
713
692
|
const datasource = <span class="cstat-no" title="statement not covered" >await db.get(datasourceId)</span>
|
|
714
693
|
<span class="cstat-no" title="statement not covered" > if (!datasource || !datasource.entities) {</span>
|
|
715
694
|
<span class="cstat-no" title="statement not covered" > ctx.throw(400, "Datasource has not been configured for plus API.")</span>
|
|
716
695
|
}
|
|
696
|
+
const tables = <span class="cstat-no" title="statement not covered" >datasource.entities</span>
|
|
697
|
+
const table = <span class="cstat-no" title="statement not covered" >tables[tableName]</span>
|
|
717
698
|
<span class="cstat-no" title="statement not covered" > ctx.request.body = {</span>
|
|
718
699
|
query: {
|
|
719
700
|
oneOf: {
|
|
720
|
-
|
|
701
|
+
[table.primaryDisplay]: ctx.request.body.rows.map(
|
|
702
|
+
<span class="fstat-no" title="function not covered" > id</span> => <span class="cstat-no" title="statement not covered" >breakRowIdField(id)[0]</span>
|
|
703
|
+
),
|
|
721
704
|
},
|
|
722
705
|
},
|
|
723
706
|
}
|
|
724
707
|
|
|
725
708
|
let result = <span class="cstat-no" title="statement not covered" >await exports.search(ctx)</span>
|
|
726
|
-
let rows = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
727
|
-
|
|
728
|
-
// Filter data to only specified columns if required
|
|
729
|
-
<span class="cstat-no" title="statement not covered" > if (columns && columns.length) {</span>
|
|
730
|
-
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < result.rows.length; i++) {</span>
|
|
731
|
-
<span class="cstat-no" title="statement not covered" > rows[i] = {}</span>
|
|
732
|
-
<span class="cstat-no" title="statement not covered" > for (let column of columns) {</span>
|
|
733
|
-
<span class="cstat-no" title="statement not covered" > rows[i][column] = result.rows[i][column]</span>
|
|
734
|
-
}
|
|
735
|
-
}
|
|
736
|
-
} else {
|
|
737
|
-
<span class="cstat-no" title="statement not covered" > rows = result.rows</span>
|
|
738
|
-
}
|
|
739
709
|
|
|
740
|
-
let headers = <span class="cstat-no" title="statement not covered" >Object.keys(rows[0])</span>
|
|
710
|
+
let headers = <span class="cstat-no" title="statement not covered" >Object.keys(result.rows[0])</span>
|
|
741
711
|
const exporter = <span class="cstat-no" title="statement not covered" >exporters[format]</span>
|
|
742
712
|
const filename = <span class="cstat-no" title="statement not covered" >`export.${format}`</span>
|
|
743
713
|
|
|
744
714
|
// send down the file
|
|
745
715
|
<span class="cstat-no" title="statement not covered" > ctx.attachment(filename)</span>
|
|
746
|
-
<span class="cstat-no" title="statement not covered" > return apiFileReturn(exporter(headers, rows))</span>
|
|
716
|
+
<span class="cstat-no" title="statement not covered" > return apiFileReturn(exporter(headers, result.rows))</span>
|
|
747
717
|
}
|
|
748
718
|
|
|
749
719
|
exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >as</span>ync ctx => {
|
|
@@ -799,7 +769,7 @@ exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >
|
|
|
799
769
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
800
770
|
Code coverage generated by
|
|
801
771
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
802
|
-
at Thu Jun 23 2022 14:
|
|
772
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
803
773
|
</div>
|
|
804
774
|
<script src="../../../prettify.js"></script>
|
|
805
775
|
<script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">57.
|
|
26
|
+
<span class="strong">57.87% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>349/
|
|
28
|
+
<span class='fraction'>349/603</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">35.
|
|
33
|
+
<span class="strong">35.82% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>96/
|
|
35
|
+
<span class='fraction'>96/268</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">57.
|
|
47
|
+
<span class="strong">57.96% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>342/
|
|
49
|
+
<span class='fraction'>342/590</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file low" data-value="external.js"><a href="external.js.html">external.js</a></td>
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
83
|
+
<td data-value="16.07" class="pic low">
|
|
84
|
+
<div class="chart"><div class="cover-fill" style="width: 16%"></div><div class="cover-empty" style="width: 84%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="
|
|
86
|
+
<td data-value="16.07" class="pct low">16.07%</td>
|
|
87
|
+
<td data-value="112" class="abs low">18/112</td>
|
|
88
88
|
<td data-value="0" class="pct low">0%</td>
|
|
89
|
-
<td data-value="
|
|
89
|
+
<td data-value="46" class="abs low">0/46</td>
|
|
90
90
|
<td data-value="0" class="pct low">0%</td>
|
|
91
91
|
<td data-value="15" class="abs low">0/15</td>
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="
|
|
92
|
+
<td data-value="16.36" class="pct low">16.36%</td>
|
|
93
|
+
<td data-value="110" class="abs low">18/110</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
@@ -140,17 +140,17 @@
|
|
|
140
140
|
|
|
141
141
|
<tr>
|
|
142
142
|
<td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
|
|
143
|
-
<td data-value="
|
|
144
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
143
|
+
<td data-value="69.23" class="pic medium">
|
|
144
|
+
<div class="chart"><div class="cover-fill" style="width: 69%"></div><div class="cover-empty" style="width: 31%"></div></div>
|
|
145
145
|
</td>
|
|
146
|
-
<td data-value="
|
|
147
|
-
<td data-value="
|
|
148
|
-
<td data-value="
|
|
149
|
-
<td data-value="
|
|
146
|
+
<td data-value="69.23" class="pct medium">69.23%</td>
|
|
147
|
+
<td data-value="52" class="abs medium">36/52</td>
|
|
148
|
+
<td data-value="40.62" class="pct low">40.62%</td>
|
|
149
|
+
<td data-value="32" class="abs low">13/32</td>
|
|
150
150
|
<td data-value="66.66" class="pct medium">66.66%</td>
|
|
151
151
|
<td data-value="6" class="abs medium">4/6</td>
|
|
152
|
-
<td data-value="
|
|
153
|
-
<td data-value="
|
|
152
|
+
<td data-value="68.62" class="pct medium">68.62%</td>
|
|
153
|
+
<td data-value="51" class="abs medium">35/51</td>
|
|
154
154
|
</tr>
|
|
155
155
|
|
|
156
156
|
</tbody>
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
162
162
|
Code coverage generated by
|
|
163
163
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
164
|
-
at Thu Jun 23 2022 14:
|
|
164
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
165
165
|
</div>
|
|
166
166
|
<script src="../../../prettify.js"></script>
|
|
167
167
|
<script>
|
|
@@ -1435,7 +1435,7 @@ exports.fetchEnrichedRow = async ctx => {
|
|
|
1435
1435
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1436
1436
|
Code coverage generated by
|
|
1437
1437
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1438
|
-
at Thu Jun 23 2022 14:
|
|
1438
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
1439
1439
|
</div>
|
|
1440
1440
|
<script src="../../../prettify.js"></script>
|
|
1441
1441
|
<script>
|
|
@@ -1006,7 +1006,7 @@ class QueryBuilder {
|
|
|
1006
1006
|
|
|
1007
1007
|
function build(structure, queryFn) {
|
|
1008
1008
|
for (let [key, value] of Object.entries(structure)) {
|
|
1009
|
-
key = builder.preprocess(key.replace(/
|
|
1009
|
+
key = builder.preprocess(key.replace(/ /g, "_"), {
|
|
1010
1010
|
escape: true,
|
|
1011
1011
|
})
|
|
1012
1012
|
const expression = queryFn(key, value)
|
|
@@ -1264,7 +1264,7 @@ exports.fullSearch = async (query, params) => {
|
|
|
1264
1264
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1265
1265
|
Code coverage generated by
|
|
1266
1266
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1267
|
-
at Thu Jun 23 2022 14:
|
|
1267
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
1268
1268
|
</div>
|
|
1269
1269
|
<script src="../../../prettify.js"></script>
|
|
1270
1270
|
<script>
|
|
@@ -538,7 +538,7 @@ exports.finaliseRow = async (
|
|
|
538
538
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
539
539
|
Code coverage generated by
|
|
540
540
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
541
|
-
at Thu Jun 23 2022 14:
|
|
541
|
+
at Thu Jun 23 2022 14:08:41 GMT+0000 (Coordinated Universal Time)
|
|
542
542
|
</div>
|
|
543
543
|
<script src="../../../prettify.js"></script>
|
|
544
544
|
<script>
|