@budibase/server 1.0.98 → 1.0.99
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.2dcb5072.js → index.44b5c19a.js} +1 -1
- package/builder/index.html +1 -1
- package/coverage/clover.xml +91 -85
- package/coverage/coverage-final.json +2 -2
- 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 +5 -5
- 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 +7 -7
- 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 +2 -2
- 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 +16 -16
- 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 +75 -15
- 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 +15 -15
- 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 +1 -1
- package/coverage/lcov-report/threads/index.js.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/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 +175 -155
- package/dist/api/controllers/permission.js +3 -4
- package/dist/api/routes/table.js +1 -1
- package/dist/middleware/authorized.js +24 -7
- package/dist/package.json +4 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/specs/openapi.json +23 -3
- package/specs/openapi.yaml +20 -4
- package/specs/resources/query.js +27 -5
- package/src/api/controllers/permission.js +3 -3
- package/src/api/routes/table.js +1 -1
- package/src/definitions/openapi.ts +12 -2
- package/src/middleware/authorized.js +26 -6
|
@@ -73,7 +73,7 @@ module.exports = client
|
|
|
73
73
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
74
74
|
Code coverage generated by
|
|
75
75
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
76
|
-
at
|
|
76
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
77
77
|
</div>
|
|
78
78
|
</div>
|
|
79
79
|
<script src="../prettify.js"></script>
|
|
@@ -1456,7 +1456,7 @@ module.exports = LinkController
|
|
|
1456
1456
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1457
1457
|
Code coverage generated by
|
|
1458
1458
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
1459
|
-
at
|
|
1459
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
1460
1460
|
</div>
|
|
1461
1461
|
</div>
|
|
1462
1462
|
<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
|
|
128
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
<script src="../../prettify.js"></script>
|
|
@@ -697,7 +697,7 @@ exports.squashLinksToPrimaryDisplay = async (table, enriched) => {
|
|
|
697
697
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
698
698
|
Code coverage generated by
|
|
699
699
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
700
|
-
at
|
|
700
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
701
701
|
</div>
|
|
702
702
|
</div>
|
|
703
703
|
<script src="../../prettify.js"></script>
|
|
@@ -412,7 +412,7 @@ exports.getRelatedTableForField = (table, fieldName) => {
|
|
|
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
|
|
415
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
416
416
|
</div>
|
|
417
417
|
</div>
|
|
418
418
|
<script src="../../prettify.js"></script>
|
|
@@ -79,7 +79,7 @@ module.exports = function () {
|
|
|
79
79
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
80
80
|
Code coverage generated by
|
|
81
81
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
82
|
-
at
|
|
82
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
83
83
|
</div>
|
|
84
84
|
</div>
|
|
85
85
|
<script src="../prettify.js"></script>
|
|
@@ -1237,7 +1237,7 @@ exports.getMultiIDParams = ids => {
|
|
|
1237
1237
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1238
1238
|
Code coverage generated by
|
|
1239
1239
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
1240
|
-
at
|
|
1240
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
1241
1241
|
</div>
|
|
1242
1242
|
</div>
|
|
1243
1243
|
<script src="../prettify.js"></script>
|
|
@@ -217,7 +217,7 @@ module.exports = AutomationEmitter
|
|
|
217
217
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
218
218
|
Code coverage generated by
|
|
219
219
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
220
|
-
at
|
|
220
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
221
221
|
</div>
|
|
222
222
|
</div>
|
|
223
223
|
<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
|
|
128
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
<script src="../prettify.js"></script>
|
|
@@ -154,7 +154,7 @@ module.exports = emitter
|
|
|
154
154
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
155
155
|
Code coverage generated by
|
|
156
156
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
157
|
-
at
|
|
157
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
158
158
|
</div>
|
|
159
159
|
</div>
|
|
160
160
|
<script src="../prettify.js"></script>
|
|
@@ -178,7 +178,7 @@ exports.tableEmission = ({ emitter, eventName, appId, table, metadata }) => {
|
|
|
178
178
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
179
179
|
Code coverage generated by
|
|
180
180
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
181
|
-
at
|
|
181
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
182
182
|
</div>
|
|
183
183
|
</div>
|
|
184
184
|
<script src="../prettify.js"></script>
|
|
@@ -23,16 +23,16 @@
|
|
|
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.53% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>3785/5147</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">54.
|
|
33
|
+
<span class="strong">54.36% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>1134/2086</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">73.
|
|
47
|
+
<span class="strong">73.83% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>3736/5060</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -94,8 +94,8 @@
|
|
|
94
94
|
</td>
|
|
95
95
|
<td data-value="70.91" class="pct medium">70.91%</td>
|
|
96
96
|
<td data-value="1114" class="abs medium">790/1114</td>
|
|
97
|
-
<td data-value="
|
|
98
|
-
<td data-value="
|
|
97
|
+
<td data-value="46.97" class="pct low">46.97%</td>
|
|
98
|
+
<td data-value="364" class="abs low">171/364</td>
|
|
99
99
|
<td data-value="69.23" class="pct medium">69.23%</td>
|
|
100
100
|
<td data-value="156" class="abs medium">108/156</td>
|
|
101
101
|
<td data-value="71.01" class="pct medium">71.01%</td>
|
|
@@ -314,17 +314,17 @@
|
|
|
314
314
|
|
|
315
315
|
<tr>
|
|
316
316
|
<td class="file high" data-value="middleware"><a href="middleware/index.html">middleware</a></td>
|
|
317
|
-
<td data-value="81.
|
|
317
|
+
<td data-value="81.25" class="pic high">
|
|
318
318
|
<div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
|
|
319
319
|
</td>
|
|
320
|
-
<td data-value="81.
|
|
321
|
-
<td data-value="
|
|
322
|
-
<td data-value="70.
|
|
323
|
-
<td data-value="
|
|
320
|
+
<td data-value="81.25" class="pct high">81.25%</td>
|
|
321
|
+
<td data-value="288" class="abs high">234/288</td>
|
|
322
|
+
<td data-value="70.44" class="pct medium">70.44%</td>
|
|
323
|
+
<td data-value="203" class="abs medium">143/203</td>
|
|
324
324
|
<td data-value="86.84" class="pct high">86.84%</td>
|
|
325
325
|
<td data-value="38" class="abs high">33/38</td>
|
|
326
|
-
<td data-value="82.
|
|
327
|
-
<td data-value="
|
|
326
|
+
<td data-value="82.1" class="pct high">82.1%</td>
|
|
327
|
+
<td data-value="285" class="abs high">234/285</td>
|
|
328
328
|
</tr>
|
|
329
329
|
|
|
330
330
|
<tr>
|
|
@@ -425,7 +425,7 @@
|
|
|
425
425
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
426
426
|
Code coverage generated by
|
|
427
427
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
428
|
-
at
|
|
428
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
429
429
|
</div>
|
|
430
430
|
</div>
|
|
431
431
|
<script src="prettify.js"></script>
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
65
65
|
Code coverage generated by
|
|
66
66
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
67
|
-
at
|
|
67
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
68
68
|
</div>
|
|
69
69
|
</div>
|
|
70
70
|
<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
|
|
98
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
99
99
|
</div>
|
|
100
100
|
</div>
|
|
101
101
|
<script src="../../prettify.js"></script>
|
|
@@ -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
|
|
124
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
125
125
|
</div>
|
|
126
126
|
</div>
|
|
127
127
|
<script src="../prettify.js"></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">88% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>44/50</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">82.97% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>39/47</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">89.79% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>44/49</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -163,7 +163,27 @@
|
|
|
163
163
|
<a name='L104'></a><a href='#L104'>104</a>
|
|
164
164
|
<a name='L105'></a><a href='#L105'>105</a>
|
|
165
165
|
<a name='L106'></a><a href='#L106'>106</a>
|
|
166
|
-
<a name='L107'></a><a href='#L107'>107</a
|
|
166
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
167
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
168
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
169
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
170
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
171
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
172
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
173
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
174
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
175
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
176
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
177
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
178
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
179
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
180
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
181
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
182
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
183
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
184
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
185
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
186
|
+
<a name='L127'></a><a href='#L127'>127</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
167
187
|
<span class="cline-any cline-neutral"> </span>
|
|
168
188
|
<span class="cline-any cline-neutral"> </span>
|
|
169
189
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -171,6 +191,7 @@
|
|
|
171
191
|
<span class="cline-any cline-neutral"> </span>
|
|
172
192
|
<span class="cline-any cline-neutral"> </span>
|
|
173
193
|
<span class="cline-any cline-neutral"> </span>
|
|
194
|
+
<span class="cline-any cline-neutral"> </span>
|
|
174
195
|
<span class="cline-any cline-yes">25x</span>
|
|
175
196
|
<span class="cline-any cline-yes">25x</span>
|
|
176
197
|
<span class="cline-any cline-yes">25x</span>
|
|
@@ -247,14 +268,24 @@
|
|
|
247
268
|
<span class="cline-any cline-neutral"> </span>
|
|
248
269
|
<span class="cline-any cline-neutral"> </span>
|
|
249
270
|
<span class="cline-any cline-yes">181x</span>
|
|
271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
273
|
+
<span class="cline-any cline-yes">181x</span>
|
|
274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
250
276
|
<span class="cline-any cline-yes">181x</span>
|
|
251
277
|
<span class="cline-any cline-yes">181x</span>
|
|
252
278
|
<span class="cline-any cline-yes">69x</span>
|
|
279
|
+
<span class="cline-any cline-yes">69x</span>
|
|
280
|
+
<span class="cline-any cline-no"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
253
282
|
<span class="cline-any cline-neutral"> </span>
|
|
254
283
|
<span class="cline-any cline-neutral"> </span>
|
|
255
284
|
<span class="cline-any cline-neutral"> </span>
|
|
256
285
|
<span class="cline-any cline-yes">181x</span>
|
|
257
|
-
<span class="cline-any cline-
|
|
286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
258
289
|
<span class="cline-any cline-yes">1x</span>
|
|
259
290
|
<span class="cline-any cline-neutral"> </span>
|
|
260
291
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -263,10 +294,19 @@
|
|
|
263
294
|
<span class="cline-any cline-yes">3x</span>
|
|
264
295
|
<span class="cline-any cline-neutral"> </span>
|
|
265
296
|
<span class="cline-any cline-neutral"> </span>
|
|
297
|
+
<span class="cline-any cline-yes">177x</span>
|
|
266
298
|
<span class="cline-any cline-neutral"> </span>
|
|
267
299
|
<span class="cline-any cline-yes">177x</span>
|
|
268
300
|
<span class="cline-any cline-neutral"> </span>
|
|
269
301
|
<span class="cline-any cline-neutral"> </span>
|
|
302
|
+
<span class="cline-any cline-yes">27x</span>
|
|
303
|
+
<span class="cline-any cline-no"> </span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-yes">27x</span>
|
|
306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
270
310
|
<span class="cline-any cline-yes">150x</span>
|
|
271
311
|
<span class="cline-any cline-neutral"> </span>
|
|
272
312
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const {
|
|
@@ -276,6 +316,7 @@
|
|
|
276
316
|
} = require("@budibase/backend-core/roles")
|
|
277
317
|
const {
|
|
278
318
|
PermissionTypes,
|
|
319
|
+
PermissionLevels,
|
|
279
320
|
doesHaveBasePermission,
|
|
280
321
|
} = require("@budibase/backend-core/permissions")
|
|
281
322
|
const builderMiddleware = require("./builder")
|
|
@@ -335,7 +376,7 @@ const checkAuthorizedResource = async (
|
|
|
335
376
|
}
|
|
336
377
|
|
|
337
378
|
module.exports =
|
|
338
|
-
(permType, permLevel = null) =>
|
|
379
|
+
(permType, permLevel = null, opts = { schema: false }) =>
|
|
339
380
|
async (ctx, next) => {
|
|
340
381
|
// webhooks don't need authentication, each webhook unique
|
|
341
382
|
// also internal requests (between services) don't need authorized
|
|
@@ -352,15 +393,25 @@ module.exports =
|
|
|
352
393
|
await builderMiddleware(ctx, permType)
|
|
353
394
|
|
|
354
395
|
// get the resource roles
|
|
355
|
-
let resourceRoles = []
|
|
396
|
+
let resourceRoles = [],
|
|
397
|
+
otherLevelRoles
|
|
398
|
+
const otherLevel =
|
|
399
|
+
permLevel === PermissionLevels.READ
|
|
400
|
+
? PermissionLevels.WRITE
|
|
401
|
+
: PermissionLevels.READ
|
|
356
402
|
const appId = getAppId()
|
|
357
403
|
if (appId && hasResource(ctx)) {
|
|
358
404
|
resourceRoles = await getRequiredResourceRole(permLevel, ctx)
|
|
405
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (opts && opts.schema) {
|
|
406
|
+
<span class="cstat-no" title="statement not covered" > otherLevelRoles = await getRequiredResourceRole(otherLevel, ctx)</span>
|
|
407
|
+
}
|
|
359
408
|
}
|
|
360
409
|
|
|
361
410
|
// if the resource is public, proceed
|
|
362
|
-
|
|
363
|
-
|
|
411
|
+
if (
|
|
412
|
+
resourceRoles.includes(BUILTIN_ROLE_IDS.PUBLIC) ||
|
|
413
|
+
(otherLevelRoles && <span class="branch-2 cbranch-no" title="branch not covered" >otherLevelRoles.includes(BUILTIN_ROLE_IDS.PUBLIC))</span>
|
|
414
|
+
) {
|
|
364
415
|
return next()
|
|
365
416
|
}
|
|
366
417
|
|
|
@@ -369,8 +420,17 @@ module.exports =
|
|
|
369
420
|
return ctx.throw(403, "Session not authenticated")
|
|
370
421
|
}
|
|
371
422
|
|
|
372
|
-
|
|
373
|
-
|
|
423
|
+
try {
|
|
424
|
+
// check authorized
|
|
425
|
+
await checkAuthorized(ctx, resourceRoles, permType, permLevel)
|
|
426
|
+
} catch (err) {
|
|
427
|
+
// this is a schema, check if
|
|
428
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (opts && opts.schema && <span class="branch-2 cbranch-no" title="branch not covered" >permLevel)</span> {
|
|
429
|
+
<span class="cstat-no" title="statement not covered" > await checkAuthorized(ctx, otherLevelRoles, permType, otherLevel)</span>
|
|
430
|
+
} else {
|
|
431
|
+
throw err
|
|
432
|
+
}
|
|
433
|
+
}
|
|
374
434
|
|
|
375
435
|
// csrf protection
|
|
376
436
|
return csrf(ctx, next)
|
|
@@ -382,7 +442,7 @@ module.exports =
|
|
|
382
442
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
383
443
|
Code coverage generated by
|
|
384
444
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
385
|
-
at
|
|
445
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
386
446
|
</div>
|
|
387
447
|
</div>
|
|
388
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
|
|
301
|
+
at Tue Mar 29 2022 09:23:07 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
|
|
415
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
416
416
|
</div>
|
|
417
417
|
</div>
|
|
418
418
|
<script src="../prettify.js"></script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">81.
|
|
26
|
+
<span class="strong">81.25% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>234/288</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">70.
|
|
33
|
+
<span class="strong">70.44% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>143/203</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">82.
|
|
47
|
+
<span class="strong">82.1% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>234/285</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -89,17 +89,17 @@
|
|
|
89
89
|
|
|
90
90
|
<tr>
|
|
91
91
|
<td class="file high" data-value="authorized.js"><a href="authorized.js.html">authorized.js</a></td>
|
|
92
|
-
<td data-value="
|
|
93
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
92
|
+
<td data-value="88" class="pic high">
|
|
93
|
+
<div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
|
|
94
94
|
</td>
|
|
95
|
-
<td data-value="
|
|
96
|
-
<td data-value="
|
|
97
|
-
<td data-value="
|
|
98
|
-
<td data-value="
|
|
95
|
+
<td data-value="88" class="pct high">88%</td>
|
|
96
|
+
<td data-value="50" class="abs high">44/50</td>
|
|
97
|
+
<td data-value="82.97" class="pct high">82.97%</td>
|
|
98
|
+
<td data-value="47" class="abs high">39/47</td>
|
|
99
99
|
<td data-value="83.33" class="pct high">83.33%</td>
|
|
100
100
|
<td data-value="6" class="abs high">5/6</td>
|
|
101
|
-
<td data-value="
|
|
102
|
-
<td data-value="
|
|
101
|
+
<td data-value="89.79" class="pct high">89.79%</td>
|
|
102
|
+
<td data-value="49" class="abs high">44/49</td>
|
|
103
103
|
</tr>
|
|
104
104
|
|
|
105
105
|
<tr>
|
|
@@ -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
|
|
233
|
+
at Tue Mar 29 2022 09:23:07 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
|
|
151
|
+
at Tue Mar 29 2022 09:23:07 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
|
|
130
|
+
at Tue Mar 29 2022 09:23:07 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
|
|
250
|
+
at Tue Mar 29 2022 09:23:07 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
|
|
97
|
+
at Tue Mar 29 2022 09:23:07 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
|
|
559
|
+
at Tue Mar 29 2022 09:23:07 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
|
|
88
|
+
at Tue Mar 29 2022 09:23:07 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
|
|
490
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
491
491
|
</div>
|
|
492
492
|
</div>
|
|
493
493
|
<script src="../prettify.js"></script>
|
|
@@ -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
|
|
143
|
+
at Tue Mar 29 2022 09:23:07 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
|
|
265
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
266
266
|
</div>
|
|
267
267
|
</div>
|
|
268
268
|
<script src="../prettify.js"></script>
|
|
@@ -985,7 +985,7 @@ module.exports = (input, callback) => {
|
|
|
985
985
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
986
986
|
Code coverage generated by
|
|
987
987
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
988
|
-
at
|
|
988
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
989
989
|
</div>
|
|
990
990
|
</div>
|
|
991
991
|
<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
|
|
301
|
+
at Tue Mar 29 2022 09:23:07 GMT+0000 (Coordinated Universal Time)
|
|
302
302
|
</div>
|
|
303
303
|
</div>
|
|
304
304
|
<script src="../prettify.js"></script>
|