@budibase/server 1.0.79-alpha.8 → 1.0.80-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/mysql2/promise.ts +17 -0
- package/builder/assets/{index.d0476387.js → index.b37e0ebb.js} +84 -84
- package/builder/assets/{vendor.6b00a24f.js → vendor.a7c6ad0a.js} +1 -1
- package/builder/index.html +2 -2
- package/coverage/clover.xml +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 +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 +1 -1
- 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/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/dist/api/routes/public/index.js +33 -0
- package/dist/environment.js +1 -0
- package/dist/integrations/mysql.js +71 -56
- package/dist/integrations/utils.js +1 -1
- package/dist/package.json +7 -7
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/api/controllers/row/ExternalRequest.ts +1 -1
- package/src/api/routes/public/index.ts +36 -0
- package/src/environment.js +1 -0
- package/src/integrations/mysql.ts +79 -70
- package/src/integrations/tests/mysql.spec.js +4 -4
- package/src/integrations/utils.ts +1 -1
- package/scripts/proxy/generateProxyConfig.js +0 -70
|
@@ -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 Fri Mar 04 2022 11:33:15 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
|
|
112
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
97
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
133
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
499
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
388
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
248
|
+
at Fri Mar 04 2022 11:33:15 GMT+0000 (Coordinated Universal Time)
|
|
249
249
|
</div>
|
|
250
250
|
</div>
|
|
251
251
|
<script src="../prettify.js"></script>
|
|
@@ -523,7 +523,7 @@ exports.formatBytes = bytes => {
|
|
|
523
523
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
524
524
|
Code coverage generated by
|
|
525
525
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
526
|
-
at
|
|
526
|
+
at Fri Mar 04 2022 11:33:15 GMT+0000 (Coordinated Universal Time)
|
|
527
527
|
</div>
|
|
528
528
|
</div>
|
|
529
529
|
<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
|
|
370
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
98
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
98
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
142
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
113
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
1084
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
184
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
139
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
277
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
88
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
128
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
346
|
+
at Fri Mar 04 2022 11:33:15 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
|
|
292
|
+
at Fri Mar 04 2022 11:33:15 GMT+0000 (Coordinated Universal Time)
|
|
293
293
|
</div>
|
|
294
294
|
</div>
|
|
295
295
|
<script src="../../prettify.js"></script>
|
|
@@ -118,7 +118,7 @@ function <span class="fstat-no" title="function not covered" >resetQuotasIfRequi
|
|
|
118
118
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
119
119
|
Code coverage generated by
|
|
120
120
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
121
|
-
at
|
|
121
|
+
at Fri Mar 04 2022 11:33:15 GMT+0000 (Coordinated Universal Time)
|
|
122
122
|
</div>
|
|
123
123
|
</div>
|
|
124
124
|
<script src="../../prettify.js"></script>
|
|
@@ -136,7 +136,7 @@ exports.getFullUser = async (ctx, userId) => {
|
|
|
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
|
|
139
|
+
at Fri Mar 04 2022 11:33:15 GMT+0000 (Coordinated Universal Time)
|
|
140
140
|
</div>
|
|
141
141
|
</div>
|
|
142
142
|
<script src="../prettify.js"></script>
|
|
@@ -481,7 +481,7 @@ exports.readGlobalUser = <span class="fstat-no" title="function not covered" >as
|
|
|
481
481
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
482
482
|
Code coverage generated by
|
|
483
483
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
484
|
-
at
|
|
484
|
+
at Fri Mar 04 2022 11:33:15 GMT+0000 (Coordinated Universal Time)
|
|
485
485
|
</div>
|
|
486
486
|
</div>
|
|
487
487
|
<script src="../prettify.js"></script>
|
|
@@ -12,12 +12,45 @@ const usageQuota_1 = __importDefault(require("../../../middleware/usageQuota"));
|
|
|
12
12
|
const authorized_1 = __importDefault(require("../../../middleware/authorized"));
|
|
13
13
|
const resourceId_1 = require("../../../middleware/resourceId");
|
|
14
14
|
const mapper_1 = __importDefault(require("./middleware/mapper"));
|
|
15
|
+
const environment_1 = __importDefault(require("../../../environment"));
|
|
16
|
+
// below imports don't have declaration files
|
|
15
17
|
const Router = require("@koa/router");
|
|
18
|
+
const { RateLimit, Stores } = require("koa2-ratelimit");
|
|
16
19
|
const { PermissionLevels, PermissionTypes, } = require("@budibase/backend-core/permissions");
|
|
20
|
+
const { getRedisOptions } = require("@budibase/backend-core/redis").utils;
|
|
17
21
|
const PREFIX = "/api/public/v1";
|
|
22
|
+
// allow a lot more requests when in test
|
|
23
|
+
const DEFAULT_API_REQ_LIMIT_PER_SEC = environment_1.default.isTest() ? 100 : 10;
|
|
24
|
+
function getApiLimitPerSecond() {
|
|
25
|
+
if (!environment_1.default.API_REQ_LIMIT_PER_SEC) {
|
|
26
|
+
return DEFAULT_API_REQ_LIMIT_PER_SEC;
|
|
27
|
+
}
|
|
28
|
+
return parseInt(environment_1.default.API_REQ_LIMIT_PER_SEC);
|
|
29
|
+
}
|
|
30
|
+
if (!environment_1.default.isTest()) {
|
|
31
|
+
const REDIS_OPTS = getRedisOptions();
|
|
32
|
+
RateLimit.defaultOptions({
|
|
33
|
+
store: new Stores.Redis({
|
|
34
|
+
// @ts-ignore
|
|
35
|
+
socket: {
|
|
36
|
+
host: REDIS_OPTS.host,
|
|
37
|
+
port: REDIS_OPTS.port,
|
|
38
|
+
},
|
|
39
|
+
password: REDIS_OPTS.opts.password,
|
|
40
|
+
database: 1,
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
// rate limiting, allows for 2 requests per second
|
|
45
|
+
const limiter = RateLimit.middleware({
|
|
46
|
+
interval: { sec: 1 },
|
|
47
|
+
// per ip, per interval
|
|
48
|
+
max: getApiLimitPerSecond(),
|
|
49
|
+
});
|
|
18
50
|
const publicRouter = new Router({
|
|
19
51
|
prefix: PREFIX,
|
|
20
52
|
});
|
|
53
|
+
publicRouter.use(limiter);
|
|
21
54
|
function addMiddleware(endpoints, middleware, opts = { output: false }) {
|
|
22
55
|
if (!endpoints) {
|
|
23
56
|
return;
|
package/dist/environment.js
CHANGED
|
@@ -37,6 +37,7 @@ module.exports = {
|
|
|
37
37
|
INTERNAL_API_KEY: process.env.INTERNAL_API_KEY,
|
|
38
38
|
MULTI_TENANCY: process.env.MULTI_TENANCY,
|
|
39
39
|
HTTP_MIGRATIONS: process.env.HTTP_MIGRATIONS,
|
|
40
|
+
API_REQ_LIMIT_PER_SEC: process.env.API_REQ_LIMIT_PER_SEC,
|
|
40
41
|
// environment
|
|
41
42
|
NODE_ENV: process.env.NODE_ENV,
|
|
42
43
|
JEST_WORKER_ID: process.env.JEST_WORKER_ID,
|
|
@@ -13,10 +13,10 @@ const datasource_1 = require("../definitions/datasource");
|
|
|
13
13
|
const utils_1 = require("./utils");
|
|
14
14
|
var MySQLModule;
|
|
15
15
|
(function (MySQLModule) {
|
|
16
|
-
const mysql = require("mysql2");
|
|
16
|
+
const mysql = require("mysql2/promise");
|
|
17
17
|
const Sql = require("./base/sql");
|
|
18
18
|
const SCHEMA = {
|
|
19
|
-
docs: "https://github.com/
|
|
19
|
+
docs: "https://github.com/sidorares/node-mysql2",
|
|
20
20
|
plus: true,
|
|
21
21
|
friendlyName: "MySQL",
|
|
22
22
|
description: "MySQL Database Service is a fully managed database service to deploy cloud-native applications. ",
|
|
@@ -74,72 +74,84 @@ var MySQLModule;
|
|
|
74
74
|
if (config.ssl && Object.keys(config.ssl).length === 0) {
|
|
75
75
|
delete config.ssl;
|
|
76
76
|
}
|
|
77
|
-
this.
|
|
77
|
+
this.config = config;
|
|
78
78
|
}
|
|
79
79
|
getBindingIdentifier() {
|
|
80
80
|
return "?";
|
|
81
81
|
}
|
|
82
|
+
connect() {
|
|
83
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
this.client = yield mysql.createConnection(this.config);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
disconnect() {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
yield this.client.end();
|
|
90
|
+
});
|
|
91
|
+
}
|
|
82
92
|
internalQuery(query, connect = true) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
client.connect();
|
|
88
|
-
}
|
|
89
|
-
return client.query(query.sql, query.bindings || {}, (error, results) => {
|
|
90
|
-
if (error) {
|
|
91
|
-
reject(error);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
resolve(results);
|
|
93
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
try {
|
|
95
|
+
if (connect) {
|
|
96
|
+
yield this.connect();
|
|
95
97
|
}
|
|
98
|
+
// Node MySQL is callback based, so we must wrap our call in a promise
|
|
99
|
+
const response = yield this.client.query(query.sql, query.bindings || []);
|
|
100
|
+
return response[0];
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
96
103
|
if (connect) {
|
|
97
|
-
|
|
104
|
+
yield this.disconnect();
|
|
98
105
|
}
|
|
99
|
-
}
|
|
106
|
+
}
|
|
100
107
|
});
|
|
101
108
|
}
|
|
102
109
|
buildSchema(datasourceId, entities) {
|
|
103
110
|
return __awaiter(this, void 0, void 0, function* () {
|
|
104
111
|
const tables = {};
|
|
105
112
|
const database = this.config.database;
|
|
106
|
-
this.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
obj[`Tables_in_${database
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
113
|
+
yield this.connect();
|
|
114
|
+
try {
|
|
115
|
+
// get the tables first
|
|
116
|
+
const tablesResp = yield this.internalQuery({ sql: "SHOW TABLES;" }, false);
|
|
117
|
+
const tableNames = tablesResp.map((obj) => obj[`Tables_in_${database}`] ||
|
|
118
|
+
obj[`Tables_in_${database.toLowerCase()}`]);
|
|
119
|
+
for (let tableName of tableNames) {
|
|
120
|
+
const primaryKeys = [];
|
|
121
|
+
const schema = {};
|
|
122
|
+
const descResp = yield this.internalQuery({ sql: `DESCRIBE \`${tableName}\`;` }, false);
|
|
123
|
+
for (let column of descResp) {
|
|
124
|
+
const columnName = column.Field;
|
|
125
|
+
if (column.Key === "PRI" &&
|
|
126
|
+
primaryKeys.indexOf(column.Key) === -1) {
|
|
127
|
+
primaryKeys.push(columnName);
|
|
128
|
+
}
|
|
129
|
+
const constraints = {
|
|
130
|
+
presence: column.Null !== "YES",
|
|
131
|
+
};
|
|
132
|
+
const isAuto = typeof column.Extra === "string" &&
|
|
133
|
+
(column.Extra === "auto_increment" ||
|
|
134
|
+
column.Extra.toLowerCase().includes("generated"));
|
|
135
|
+
schema[columnName] = {
|
|
136
|
+
name: columnName,
|
|
137
|
+
autocolumn: isAuto,
|
|
138
|
+
type: utils_1.convertSqlType(column.Type),
|
|
139
|
+
constraints,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (!tables[tableName]) {
|
|
143
|
+
tables[tableName] = {
|
|
144
|
+
_id: utils_1.buildExternalTableId(datasourceId, tableName),
|
|
145
|
+
primary: primaryKeys,
|
|
146
|
+
name: tableName,
|
|
147
|
+
schema,
|
|
148
|
+
};
|
|
119
149
|
}
|
|
120
|
-
const constraints = {
|
|
121
|
-
presence: column.Null !== "YES",
|
|
122
|
-
};
|
|
123
|
-
const isAuto = typeof column.Extra === "string" &&
|
|
124
|
-
(column.Extra === "auto_increment" ||
|
|
125
|
-
column.Extra.toLowerCase().includes("generated"));
|
|
126
|
-
schema[columnName] = {
|
|
127
|
-
name: columnName,
|
|
128
|
-
autocolumn: isAuto,
|
|
129
|
-
type: utils_1.convertSqlType(column.Type),
|
|
130
|
-
constraints,
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
if (!tables[tableName]) {
|
|
134
|
-
tables[tableName] = {
|
|
135
|
-
_id: utils_1.buildExternalTableId(datasourceId, tableName),
|
|
136
|
-
primary: primaryKeys,
|
|
137
|
-
name: tableName,
|
|
138
|
-
schema,
|
|
139
|
-
};
|
|
140
150
|
}
|
|
141
151
|
}
|
|
142
|
-
|
|
152
|
+
finally {
|
|
153
|
+
yield this.disconnect();
|
|
154
|
+
}
|
|
143
155
|
const final = utils_1.finaliseExternalTables(tables, entities);
|
|
144
156
|
this.tables = final.tables;
|
|
145
157
|
this.schemaErrors = final.errors;
|
|
@@ -170,11 +182,14 @@ var MySQLModule;
|
|
|
170
182
|
}
|
|
171
183
|
query(json) {
|
|
172
184
|
return __awaiter(this, void 0, void 0, function* () {
|
|
173
|
-
this.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
185
|
+
yield this.connect();
|
|
186
|
+
try {
|
|
187
|
+
const queryFn = (query) => this.internalQuery(query, false);
|
|
188
|
+
return yield this.queryWithReturning(json, queryFn);
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
yield this.disconnect();
|
|
192
|
+
}
|
|
178
193
|
});
|
|
179
194
|
}
|
|
180
195
|
}
|
|
@@ -40,7 +40,7 @@ var SqlClients;
|
|
|
40
40
|
(function (SqlClients) {
|
|
41
41
|
SqlClients["MS_SQL"] = "mssql";
|
|
42
42
|
SqlClients["POSTGRES"] = "pg";
|
|
43
|
-
SqlClients["MY_SQL"] = "
|
|
43
|
+
SqlClients["MY_SQL"] = "mysql2";
|
|
44
44
|
SqlClients["ORACLE"] = "oracledb";
|
|
45
45
|
})(SqlClients = exports.SqlClients || (exports.SqlClients = {}));
|
|
46
46
|
function isExternalTable(tableId) {
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "1.0.79
|
|
4
|
+
"version": "1.0.79",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -21,9 +21,6 @@
|
|
|
21
21
|
"dev:stack:down": "node scripts/dev/manage.js down",
|
|
22
22
|
"dev:stack:nuke": "node scripts/dev/manage.js nuke",
|
|
23
23
|
"dev:builder": "yarn run dev:stack:up && nodemon",
|
|
24
|
-
"generate:proxy:compose": "node scripts/proxy/generateProxyConfig compose",
|
|
25
|
-
"generate:proxy:preprod": "node scripts/proxy/generateProxyConfig preprod",
|
|
26
|
-
"generate:proxy:prod": "node scripts/proxy/generateProxyConfig prod",
|
|
27
24
|
"format": "prettier --config ../../.prettierrc.json 'src/**/*.ts' --write",
|
|
28
25
|
"specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts",
|
|
29
26
|
"lint": "eslint --fix src/",
|
|
@@ -74,9 +71,9 @@
|
|
|
74
71
|
"license": "GPL-3.0",
|
|
75
72
|
"dependencies": {
|
|
76
73
|
"@apidevtools/swagger-parser": "^10.0.3",
|
|
77
|
-
"@budibase/backend-core": "^1.0.79
|
|
78
|
-
"@budibase/client": "^1.0.79
|
|
79
|
-
"@budibase/string-templates": "^1.0.79
|
|
74
|
+
"@budibase/backend-core": "^1.0.79",
|
|
75
|
+
"@budibase/client": "^1.0.79",
|
|
76
|
+
"@budibase/string-templates": "^1.0.79",
|
|
80
77
|
"@bull-board/api": "^3.7.0",
|
|
81
78
|
"@bull-board/koa": "^3.7.0",
|
|
82
79
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -111,6 +108,7 @@
|
|
|
111
108
|
"koa-send": "5.0.0",
|
|
112
109
|
"koa-session": "5.12.0",
|
|
113
110
|
"koa-static": "5.0.0",
|
|
111
|
+
"koa2-ratelimit": "^1.1.0",
|
|
114
112
|
"lodash": "4.17.21",
|
|
115
113
|
"memorystream": "^0.3.1",
|
|
116
114
|
"mongodb": "3.6.3",
|
|
@@ -126,6 +124,7 @@
|
|
|
126
124
|
"pouchdb-all-dbs": "1.0.2",
|
|
127
125
|
"pouchdb-find": "^7.2.2",
|
|
128
126
|
"pouchdb-replication-stream": "1.2.9",
|
|
127
|
+
"redis": "4",
|
|
129
128
|
"server-destroy": "1.0.1",
|
|
130
129
|
"svelte": "^3.38.2",
|
|
131
130
|
"swagger-parser": "^10.0.3",
|
|
@@ -151,6 +150,7 @@
|
|
|
151
150
|
"@types/koa-router": "^7.4.2",
|
|
152
151
|
"@types/node": "^15.12.4",
|
|
153
152
|
"@types/oracledb": "^5.2.1",
|
|
153
|
+
"@types/redis": "^4.0.11",
|
|
154
154
|
"@typescript-eslint/parser": "4.28.0",
|
|
155
155
|
"apidoc": "^0.50.2",
|
|
156
156
|
"babel-jest": "^27.0.2",
|