@budibase/server 1.0.49 → 1.0.50-alpha.3
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__/arangojs.ts +1 -1
- package/__mocks__/aws-sdk.ts +4 -4
- package/__mocks__/mongodb.ts +4 -5
- package/__mocks__/mssql.ts +3 -3
- package/__mocks__/node-fetch.ts +2 -1
- package/__mocks__/pg.ts +3 -5
- package/builder/assets/{index.2c37968e.js → index.9fe798bd.js} +252 -249
- package/builder/assets/index.c0cc369d.css +6 -0
- package/builder/assets/{vendor.f9faf6ab.js → vendor.5ad9695a.js} +202 -106
- package/builder/index.html +3 -3
- package/coverage/clover.xml +3105 -2814
- package/coverage/coverage-final.json +106 -101
- 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 +257 -152
- package/coverage/lcov-report/api/controllers/auth.js.html +22 -13
- package/coverage/lcov-report/api/controllers/automation.js.html +39 -69
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
- package/coverage/lcov-report/api/controllers/component.js.html +13 -16
- package/coverage/lcov-report/api/controllers/datasource.js.html +81 -51
- package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
- package/coverage/lcov-report/api/controllers/index.html +78 -78
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
- package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
- package/coverage/lcov-report/api/controllers/migrations.js.html +119 -0
- package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
- package/coverage/lcov-report/api/controllers/query/index.html +10 -10
- package/coverage/lcov-report/api/controllers/query/index.js.html +38 -35
- package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
- package/coverage/lcov-report/api/controllers/role.js.html +16 -16
- package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
- package/coverage/lcov-report/api/controllers/row/external.js.html +48 -141
- package/coverage/lcov-report/api/controllers/row/index.html +55 -40
- package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
- package/coverage/lcov-report/api/controllers/row/internal.js.html +118 -226
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +52 -34
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +548 -0
- package/coverage/lcov-report/api/controllers/row/utils.js.html +47 -62
- package/coverage/lcov-report/api/controllers/screen.js.html +15 -21
- package/coverage/lcov-report/api/controllers/script.js.html +4 -4
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +599 -0
- package/coverage/lcov-report/api/controllers/table/external.js.html +25 -34
- package/coverage/lcov-report/api/controllers/table/index.html +58 -43
- package/coverage/lcov-report/api/controllers/table/index.js.html +58 -82
- package/coverage/lcov-report/api/controllers/table/internal.js.html +81 -66
- package/coverage/lcov-report/api/controllers/table/utils.js.html +218 -110
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +79 -76
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
- package/coverage/lcov-report/api/controllers/view/index.html +16 -16
- package/coverage/lcov-report/api/controllers/view/index.js.html +27 -33
- package/coverage/lcov-report/api/controllers/view/utils.js.html +35 -20
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
- package/coverage/lcov-report/api/controllers/webhook.js.html +34 -28
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +8 -8
- 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 +18 -18
- package/coverage/lcov-report/api/routes/index.js.html +3 -3
- 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/{hosting.js.html → migrations.js.html} +17 -14
- 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 +17 -2
- 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/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +24 -24
- package/coverage/lcov-report/automations/automationUtils.js.html +7 -10
- package/coverage/lcov-report/automations/bullboard.js.html +16 -16
- package/coverage/lcov-report/automations/index.html +18 -18
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
- package/coverage/lcov-report/automations/steps/createRow.js.html +13 -22
- package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
- package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
- package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
- package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
- package/coverage/lcov-report/automations/steps/index.html +13 -13
- package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
- package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
- package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
- package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
- package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
- package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
- package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
- package/coverage/lcov-report/automations/triggers.js.html +61 -55
- package/coverage/lcov-report/automations/utils.js.html +54 -42
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +53 -26
- package/coverage/lcov-report/constants/layouts.js.html +5 -5
- package/coverage/lcov-report/constants/screens.js.html +4 -4
- package/coverage/lcov-report/db/client.js.html +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
- package/coverage/lcov-report/db/index.html +15 -15
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +25 -37
- package/coverage/lcov-report/db/linkedRows/index.html +27 -27
- package/coverage/lcov-report/db/linkedRows/index.js.html +51 -96
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +87 -87
- 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 +5 -5
- package/coverage/lcov-report/events/utils.js.html +3 -3
- package/coverage/lcov-report/index.html +135 -120
- 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 +173 -65
- package/coverage/lcov-report/middleware/builder.js.html +10 -10
- package/coverage/lcov-report/middleware/currentapp.js.html +95 -83
- package/coverage/lcov-report/middleware/index.html +38 -38
- package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
- 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 +281 -53
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +30 -24
- package/coverage/lcov-report/threads/index.html +26 -26
- package/coverage/lcov-report/threads/index.js.html +10 -10
- package/coverage/lcov-report/threads/query.js.html +39 -24
- package/coverage/lcov-report/threads/utils.js.html +14 -14
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
- package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
- package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
- package/coverage/lcov-report/utilities/global.js.html +58 -49
- package/coverage/lcov-report/utilities/index.html +37 -37
- package/coverage/lcov-report/utilities/index.js.html +43 -73
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
- 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 +7 -7
- package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +97 -103
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +75 -27
- package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
- package/coverage/lcov-report/utilities/security.js.html +8 -8
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +141 -0
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +359 -0
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +305 -0
- package/coverage/lcov-report/{api/controllers/hosting.js.html → utilities/usageQuota/usageQuoteReset.js.html} +36 -48
- package/coverage/lcov-report/utilities/users.js.html +9 -9
- package/coverage/lcov-report/utilities/workerRequests.js.html +43 -112
- package/coverage/lcov.info +5010 -4425
- package/dist/api/controllers/application.js +90 -60
- package/dist/api/controllers/auth.js +8 -5
- package/dist/api/controllers/automation.js +14 -19
- package/dist/api/controllers/cloud.js +2 -3
- package/dist/api/controllers/component.js +3 -4
- package/dist/api/controllers/datasource.js +20 -10
- package/dist/api/controllers/deploy/Deployment.js +3 -6
- package/dist/api/controllers/deploy/index.js +12 -13
- package/dist/api/controllers/dev.js +5 -5
- package/dist/api/controllers/layout.js +3 -3
- package/dist/api/controllers/metadata.js +4 -4
- package/dist/api/controllers/migrations.js +21 -0
- package/dist/api/controllers/permission.js +4 -4
- package/dist/api/controllers/query/import/index.js +4 -6
- package/dist/api/controllers/query/index.js +11 -10
- package/dist/api/controllers/role.js +5 -5
- package/dist/api/controllers/routing.js +5 -6
- package/dist/api/controllers/row/ExternalRequest.js +90 -67
- package/dist/api/controllers/row/external.js +14 -22
- package/dist/api/controllers/row/internal.js +55 -93
- package/dist/api/controllers/row/internalSearch.js +23 -17
- package/dist/api/controllers/row/staticFormula.js +147 -0
- package/dist/api/controllers/row/utils.js +13 -14
- package/dist/api/controllers/screen.js +5 -7
- package/dist/api/controllers/static/index.js +62 -16
- package/dist/api/controllers/table/bulkFormula.js +159 -0
- package/dist/api/controllers/table/external.js +7 -10
- package/dist/api/controllers/table/index.js +16 -13
- package/dist/api/controllers/table/internal.js +22 -16
- package/dist/api/controllers/table/utils.js +62 -35
- package/dist/api/controllers/user.js +43 -43
- package/dist/api/controllers/view/index.js +8 -10
- package/dist/api/controllers/view/utils.js +9 -4
- package/dist/api/controllers/webhook.js +10 -8
- package/dist/api/routes/index.js +2 -2
- package/dist/api/routes/migrations.js +9 -0
- package/dist/api/routes/static.js +2 -1
- package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
- package/dist/app.js +35 -5
- package/dist/automations/automationUtils.js +2 -3
- package/dist/automations/steps/createRow.js +3 -5
- package/dist/automations/steps/deleteRow.js +1 -4
- package/dist/automations/steps/updateRow.js +1 -1
- package/dist/automations/triggers.js +27 -25
- package/dist/automations/utils.js +10 -5
- package/dist/constants/index.js +7 -0
- package/dist/db/linkedRows/LinkController.js +3 -7
- package/dist/db/linkedRows/index.js +16 -27
- package/dist/db/linkedRows/linkUtils.js +6 -6
- package/dist/db/views/staticViews.js +9 -10
- package/dist/definitions/datasource.js +1 -0
- package/dist/environment.js +4 -1
- package/dist/integrations/base/sql.js +62 -21
- package/dist/integrations/googlesheets.js +340 -0
- package/dist/integrations/index.js +3 -0
- package/dist/integrations/utils.js +60 -9
- package/dist/middleware/authorized.js +57 -30
- package/dist/middleware/builder.js +2 -2
- package/dist/middleware/currentapp.js +41 -37
- package/dist/middleware/usageQuota.js +82 -15
- package/dist/migrations/functions/appUrls.js +46 -0
- package/dist/migrations/functions/quotas1.js +50 -0
- package/dist/migrations/functions/usageQuotas/index.js +20 -0
- package/dist/migrations/functions/usageQuotas/syncApps.js +29 -0
- package/dist/migrations/functions/usageQuotas/syncRows.js +33 -0
- package/dist/migrations/functions/userEmailViewCasing.js +24 -0
- package/dist/migrations/index.js +62 -0
- package/dist/package.json +8 -5
- package/dist/tests/utilities/TestConfiguration.js +80 -50
- package/dist/threads/automation.js +13 -11
- package/dist/threads/query.js +15 -11
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +4 -3
- package/dist/utilities/global.js +15 -12
- package/dist/utilities/index.js +7 -17
- package/dist/utilities/routing/index.js +5 -5
- package/dist/utilities/rowProcessor/index.js +23 -17
- package/dist/utilities/rowProcessor/utils.js +14 -4
- package/dist/utilities/{usageQuota.js → usageQuota/index.js} +45 -31
- package/dist/utilities/usageQuota/rows.js +78 -0
- package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
- package/dist/utilities/users.js +3 -3
- package/dist/utilities/workerRequests.js +4 -24
- package/nodemon.json +1 -1
- package/package.json +9 -6
- package/scripts/integrations/mssql/data/Dockerfile +1 -1
- package/scripts/integrations/mssql/data/setup.sql +17 -4
- package/scripts/integrations/postgres/init.sql +11 -6
- package/scripts/likeCypress.ts +1 -1
- package/src/api/controllers/application.js +85 -50
- package/src/api/controllers/auth.js +8 -5
- package/src/api/controllers/automation.js +13 -23
- package/src/api/controllers/cloud.js +2 -3
- package/src/api/controllers/component.js +3 -4
- package/src/api/controllers/datasource.js +21 -11
- package/src/api/controllers/deploy/Deployment.js +3 -7
- package/src/api/controllers/deploy/index.js +20 -13
- package/src/api/controllers/dev.js +5 -5
- package/src/api/controllers/layout.js +3 -3
- package/src/api/controllers/metadata.js +4 -9
- package/src/api/controllers/migrations.js +13 -0
- package/src/api/controllers/permission.js +4 -4
- package/src/api/controllers/query/import/index.ts +4 -6
- package/src/api/controllers/query/import/tests/index.spec.js +2 -1
- package/src/api/controllers/query/index.js +11 -10
- package/src/api/controllers/role.js +5 -5
- package/src/api/controllers/routing.js +5 -6
- package/src/api/controllers/row/ExternalRequest.ts +67 -43
- package/src/api/controllers/row/external.js +27 -58
- package/src/api/controllers/row/internal.js +54 -90
- package/src/api/controllers/row/internalSearch.js +23 -17
- package/src/api/controllers/row/staticFormula.js +156 -0
- package/src/api/controllers/row/utils.js +13 -18
- package/src/api/controllers/screen.js +5 -7
- package/src/api/controllers/static/index.js +66 -15
- package/src/api/controllers/table/bulkFormula.js +173 -0
- package/src/api/controllers/table/external.js +7 -10
- package/src/api/controllers/table/index.js +20 -28
- package/src/api/controllers/table/internal.js +24 -19
- package/src/api/controllers/table/utils.js +78 -42
- package/src/api/controllers/user.js +46 -45
- package/src/api/controllers/view/index.js +8 -10
- package/src/api/controllers/view/utils.js +9 -4
- package/src/api/controllers/webhook.js +10 -8
- package/src/api/routes/index.js +2 -2
- package/src/api/routes/migrations.js +14 -0
- package/src/api/routes/static.js +5 -0
- package/src/api/routes/tests/application.spec.js +2 -2
- package/src/api/routes/tests/auth.spec.js +1 -2
- package/src/api/routes/tests/automation.spec.js +1 -0
- package/src/api/routes/tests/misc.spec.js +0 -1
- package/src/api/routes/tests/routing.spec.js +21 -12
- package/src/api/routes/tests/row.spec.js +7 -4
- package/src/api/routes/tests/static.spec.js +98 -0
- package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
- package/src/app.ts +18 -5
- package/src/automations/automationUtils.js +2 -3
- package/src/automations/steps/createRow.js +2 -5
- package/src/automations/steps/deleteRow.js +1 -4
- package/src/automations/steps/updateRow.js +1 -1
- package/src/automations/triggers.js +33 -31
- package/src/automations/utils.js +9 -5
- package/src/constants/index.js +9 -0
- package/src/db/linkedRows/LinkController.js +3 -7
- package/src/db/linkedRows/index.js +16 -31
- package/src/db/linkedRows/linkUtils.js +6 -6
- package/src/db/tests/linkController.spec.js +0 -1
- package/src/db/tests/linkTests.spec.js +5 -6
- package/src/db/views/staticViews.js +8 -10
- package/src/definitions/common.ts +3 -0
- package/src/definitions/datasource.ts +3 -0
- package/src/environment.js +4 -1
- package/src/integrations/base/sql.ts +75 -29
- package/src/integrations/googlesheets.ts +353 -0
- package/src/integrations/index.ts +3 -0
- package/src/integrations/tests/sql.spec.js +16 -0
- package/src/integrations/utils.ts +75 -12
- package/src/middleware/authorized.js +66 -30
- package/src/middleware/builder.js +2 -2
- package/src/middleware/currentapp.js +50 -46
- package/src/middleware/tests/authorized.spec.js +13 -6
- package/src/middleware/tests/currentapp.spec.js +6 -0
- package/src/middleware/tests/usageQuota.spec.js +18 -24
- package/src/middleware/usageQuota.js +93 -17
- package/src/migrations/functions/appUrls.ts +34 -0
- package/src/migrations/functions/quotas1.ts +20 -0
- package/src/migrations/functions/tests/appUrls.spec.js +29 -0
- package/src/migrations/functions/tests/quotas1.spec.js +27 -0
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
- package/src/migrations/functions/usageQuotas/index.ts +8 -0
- package/src/migrations/functions/usageQuotas/syncApps.ts +18 -0
- package/src/migrations/functions/usageQuotas/syncRows.ts +22 -0
- package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +37 -0
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +43 -0
- package/src/migrations/functions/userEmailViewCasing.ts +13 -0
- package/src/migrations/index.ts +56 -0
- package/src/module.d.ts +3 -0
- package/src/tests/utilities/TestConfiguration.js +82 -55
- package/src/threads/automation.js +17 -15
- package/src/threads/query.js +17 -12
- package/src/utilities/fileSystem/index.js +4 -3
- package/src/utilities/global.js +15 -12
- package/src/utilities/index.js +7 -17
- package/src/utilities/routing/index.js +5 -5
- package/src/utilities/rowProcessor/index.js +25 -27
- package/src/utilities/rowProcessor/utils.js +23 -7
- package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
- package/src/utilities/usageQuota/index.js +93 -0
- package/src/utilities/usageQuota/rows.js +75 -0
- package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
- package/src/utilities/users.js +3 -3
- package/src/utilities/workerRequests.js +4 -27
- package/tsconfig.json +4 -2
- package/builder/assets/index.39e01193.css +0 -1
- package/dist/api/controllers/hosting.js +0 -30
- package/dist/api/routes/hosting.js +0 -11
- package/src/api/controllers/hosting.js +0 -22
- package/src/api/routes/hosting.js +0 -13
- package/src/api/routes/tests/hosting.spec.js +0 -36
- package/src/utilities/usageQuota.js +0 -73
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.50-alpha.3",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -70,9 +70,9 @@
|
|
|
70
70
|
"license": "GPL-3.0",
|
|
71
71
|
"dependencies": {
|
|
72
72
|
"@apidevtools/swagger-parser": "^10.0.3",
|
|
73
|
-
"@budibase/backend-core": "^1.0.
|
|
74
|
-
"@budibase/client": "^1.0.
|
|
75
|
-
"@budibase/string-templates": "^1.0.
|
|
73
|
+
"@budibase/backend-core": "^1.0.50-alpha.3",
|
|
74
|
+
"@budibase/client": "^1.0.50-alpha.3",
|
|
75
|
+
"@budibase/string-templates": "^1.0.50-alpha.3",
|
|
76
76
|
"@bull-board/api": "^3.7.0",
|
|
77
77
|
"@bull-board/koa": "^3.7.0",
|
|
78
78
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -92,6 +92,8 @@
|
|
|
92
92
|
"fix-path": "3.0.0",
|
|
93
93
|
"form-data": "^4.0.0",
|
|
94
94
|
"fs-extra": "8.1.0",
|
|
95
|
+
"google-auth-library": "^7.11.0",
|
|
96
|
+
"google-spreadsheet": "^3.2.0",
|
|
95
97
|
"jimp": "0.16.1",
|
|
96
98
|
"joi": "17.2.1",
|
|
97
99
|
"js-yaml": "^4.1.0",
|
|
@@ -110,7 +112,7 @@
|
|
|
110
112
|
"mongodb": "3.6.3",
|
|
111
113
|
"mssql": "6.2.3",
|
|
112
114
|
"mysql2": "^2.3.1",
|
|
113
|
-
"node-fetch": "2.6.
|
|
115
|
+
"node-fetch": "2.6.7",
|
|
114
116
|
"open": "^8.4.0",
|
|
115
117
|
"pg": "8.5.1",
|
|
116
118
|
"pino-pretty": "4.0.0",
|
|
@@ -139,6 +141,7 @@
|
|
|
139
141
|
"@jest/test-sequencer": "^24.8.0",
|
|
140
142
|
"@types/apidoc": "^0.50.0",
|
|
141
143
|
"@types/bull": "^3.15.1",
|
|
144
|
+
"@types/google-spreadsheet": "^3.1.5",
|
|
142
145
|
"@types/jest": "^26.0.23",
|
|
143
146
|
"@types/koa": "^2.13.3",
|
|
144
147
|
"@types/koa-router": "^7.4.2",
|
|
@@ -165,5 +168,5 @@
|
|
|
165
168
|
"optionalDependencies": {
|
|
166
169
|
"oracledb": "^5.3.0"
|
|
167
170
|
},
|
|
168
|
-
"gitHead": "
|
|
171
|
+
"gitHead": "1d2fc68b20f8f39a44311f23966e412714e79e61"
|
|
169
172
|
}
|
|
@@ -48,7 +48,20 @@ INSERT tasks
|
|
|
48
48
|
VALUES
|
|
49
49
|
('Processing', 1);
|
|
50
50
|
|
|
51
|
-
INSERT people
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
('
|
|
51
|
+
INSERT INTO people (name, age)
|
|
52
|
+
VALUES ('Bob', '30'),
|
|
53
|
+
('Bert', '10'),
|
|
54
|
+
('Jack', '12'),
|
|
55
|
+
('Mike', '31'),
|
|
56
|
+
('Dave', '44'),
|
|
57
|
+
('Jim', '43'),
|
|
58
|
+
('Kerry', '32'),
|
|
59
|
+
('Julie', '12'),
|
|
60
|
+
('Kim', '55'),
|
|
61
|
+
('Andy', '33'),
|
|
62
|
+
('John', '22'),
|
|
63
|
+
('Ruth', '66'),
|
|
64
|
+
('Robert', '88'),
|
|
65
|
+
('Bobert', '99'),
|
|
66
|
+
('Jan', '22'),
|
|
67
|
+
('Megan', '11');
|
|
@@ -9,12 +9,16 @@ CREATE TABLE Persons (
|
|
|
9
9
|
);
|
|
10
10
|
CREATE TABLE Tasks (
|
|
11
11
|
TaskID SERIAL PRIMARY KEY,
|
|
12
|
-
|
|
12
|
+
ExecutorID INT,
|
|
13
|
+
QaID INT,
|
|
13
14
|
Completed BOOLEAN,
|
|
14
15
|
TaskName varchar(255),
|
|
15
|
-
CONSTRAINT
|
|
16
|
-
FOREIGN KEY(
|
|
17
|
-
REFERENCES Persons(PersonID)
|
|
16
|
+
CONSTRAINT fkexecutor
|
|
17
|
+
FOREIGN KEY(ExecutorID)
|
|
18
|
+
REFERENCES Persons(PersonID),
|
|
19
|
+
CONSTRAINT fkqa
|
|
20
|
+
FOREIGN KEY(QaID)
|
|
21
|
+
REFERENCES Persons(PersonID)
|
|
18
22
|
);
|
|
19
23
|
CREATE TABLE Products (
|
|
20
24
|
ProductID SERIAL PRIMARY KEY,
|
|
@@ -32,8 +36,9 @@ CREATE TABLE Products_Tasks (
|
|
|
32
36
|
PRIMARY KEY (ProductID, TaskID)
|
|
33
37
|
);
|
|
34
38
|
INSERT INTO Persons (FirstName, LastName, Address, City) VALUES ('Mike', 'Hughes', '123 Fake Street', 'Belfast');
|
|
35
|
-
INSERT INTO
|
|
36
|
-
INSERT INTO Tasks (
|
|
39
|
+
INSERT INTO Persons (FirstName, LastName, Address, City) Values ('John', 'Smith', '64 Updown Road', 'Dublin');
|
|
40
|
+
INSERT INTO Tasks (ExecutorID, QaID, TaskName, Completed) VALUES (1, 2, 'assembling', TRUE);
|
|
41
|
+
INSERT INTO Tasks (ExecutorID, QaID, TaskName, Completed) VALUES (2, 1, 'processing', FALSE);
|
|
37
42
|
INSERT INTO Products (ProductName) VALUES ('Computers');
|
|
38
43
|
INSERT INTO Products (ProductName) VALUES ('Laptops');
|
|
39
44
|
INSERT INTO Products (ProductName) VALUES ('Chairs');
|
package/scripts/likeCypress.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../db")
|
|
2
1
|
const env = require("../../environment")
|
|
3
2
|
const packageJson = require("../../../package.json")
|
|
4
3
|
const {
|
|
@@ -29,14 +28,11 @@ const { processObject } = require("@budibase/string-templates")
|
|
|
29
28
|
const {
|
|
30
29
|
getAllApps,
|
|
31
30
|
isDevAppID,
|
|
32
|
-
|
|
31
|
+
getProdAppID,
|
|
33
32
|
Replication,
|
|
34
33
|
} = require("@budibase/backend-core/db")
|
|
35
34
|
const { USERS_TABLE_SCHEMA } = require("../../constants")
|
|
36
|
-
const {
|
|
37
|
-
getDeployedApps,
|
|
38
|
-
removeAppFromUserRoles,
|
|
39
|
-
} = require("../../utilities/workerRequests")
|
|
35
|
+
const { removeAppFromUserRoles } = require("../../utilities/workerRequests")
|
|
40
36
|
const { clientLibraryPath, stringToReadStream } = require("../../utilities")
|
|
41
37
|
const { getAllLocks } = require("../../utilities/redis")
|
|
42
38
|
const {
|
|
@@ -48,11 +44,17 @@ const { getTenantId, isMultiTenant } = require("@budibase/backend-core/tenancy")
|
|
|
48
44
|
const { syncGlobalUsers } = require("./user")
|
|
49
45
|
const { app: appCache } = require("@budibase/backend-core/cache")
|
|
50
46
|
const { cleanupAutomations } = require("../../automations/utils")
|
|
47
|
+
const {
|
|
48
|
+
getAppDB,
|
|
49
|
+
getProdAppDB,
|
|
50
|
+
updateAppId,
|
|
51
|
+
} = require("@budibase/backend-core/context")
|
|
51
52
|
|
|
52
53
|
const URL_REGEX_SLASH = /\/|\\/g
|
|
53
54
|
|
|
54
55
|
// utility function, need to do away with this
|
|
55
|
-
async function getLayouts(
|
|
56
|
+
async function getLayouts() {
|
|
57
|
+
const db = getAppDB()
|
|
56
58
|
return (
|
|
57
59
|
await db.allDocs(
|
|
58
60
|
getLayoutParams(null, {
|
|
@@ -62,7 +64,8 @@ async function getLayouts(db) {
|
|
|
62
64
|
).rows.map(row => row.doc)
|
|
63
65
|
}
|
|
64
66
|
|
|
65
|
-
async function getScreens(
|
|
67
|
+
async function getScreens() {
|
|
68
|
+
const db = getAppDB()
|
|
66
69
|
return (
|
|
67
70
|
await db.allDocs(
|
|
68
71
|
getScreenParams(null, {
|
|
@@ -78,37 +81,51 @@ function getUserRoleId(ctx) {
|
|
|
78
81
|
: ctx.user.role._id
|
|
79
82
|
}
|
|
80
83
|
|
|
81
|
-
|
|
84
|
+
exports.getAppUrl = ctx => {
|
|
85
|
+
// construct the url
|
|
82
86
|
let url
|
|
83
87
|
if (ctx.request.body.url) {
|
|
88
|
+
// if the url is provided, use that
|
|
84
89
|
url = encodeURI(ctx.request.body.url)
|
|
85
90
|
} else if (ctx.request.body.name) {
|
|
91
|
+
// otherwise use the name
|
|
86
92
|
url = encodeURI(`${ctx.request.body.name}`)
|
|
87
93
|
}
|
|
88
94
|
if (url) {
|
|
89
95
|
url = `/${url.replace(URL_REGEX_SLASH, "")}`.toLowerCase()
|
|
90
96
|
}
|
|
91
|
-
|
|
92
|
-
|
|
97
|
+
return url
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const checkAppUrl = (ctx, apps, url, currentAppId) => {
|
|
101
|
+
if (currentAppId) {
|
|
102
|
+
apps = apps.filter(app => app.appId !== currentAppId)
|
|
93
103
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
104
|
+
if (apps.some(app => app.url === url)) {
|
|
105
|
+
ctx.throw(400, "App URL is already in use.")
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const checkAppName = (ctx, apps, name, currentAppId) => {
|
|
110
|
+
// TODO: Replace with Joi
|
|
111
|
+
if (!name) {
|
|
112
|
+
ctx.throw(400, "Name is required")
|
|
113
|
+
}
|
|
114
|
+
if (currentAppId) {
|
|
115
|
+
apps = apps.filter(app => app.appId !== currentAppId)
|
|
116
|
+
}
|
|
117
|
+
if (apps.some(app => app.name === name)) {
|
|
118
|
+
ctx.throw(400, "App name is already in use.")
|
|
102
119
|
}
|
|
103
|
-
return url
|
|
104
120
|
}
|
|
105
121
|
|
|
106
122
|
async function createInstance(template) {
|
|
107
123
|
const tenantId = isMultiTenant() ? getTenantId() : null
|
|
108
124
|
const baseAppId = generateAppID(tenantId)
|
|
109
125
|
const appId = generateDevAppID(baseAppId)
|
|
126
|
+
updateAppId(appId)
|
|
110
127
|
|
|
111
|
-
const db =
|
|
128
|
+
const db = getAppDB()
|
|
112
129
|
await db.put({
|
|
113
130
|
_id: "_design/database",
|
|
114
131
|
// view collation information, read before writing any complex views:
|
|
@@ -118,9 +135,9 @@ async function createInstance(template) {
|
|
|
118
135
|
|
|
119
136
|
// NOTE: indexes need to be created before any tables/templates
|
|
120
137
|
// add view for linked rows
|
|
121
|
-
await createLinkView(
|
|
122
|
-
await createRoutingView(
|
|
123
|
-
await createAllSearchIndex(
|
|
138
|
+
await createLinkView()
|
|
139
|
+
await createRoutingView()
|
|
140
|
+
await createAllSearchIndex()
|
|
124
141
|
|
|
125
142
|
// replicate the template data to the instance DB
|
|
126
143
|
// this is currently very hard to test, downloading and importing template files
|
|
@@ -146,7 +163,7 @@ async function createInstance(template) {
|
|
|
146
163
|
exports.fetch = async ctx => {
|
|
147
164
|
const dev = ctx.query && ctx.query.status === AppStatus.DEV
|
|
148
165
|
const all = ctx.query && ctx.query.status === AppStatus.ALL
|
|
149
|
-
const apps = await getAllApps(
|
|
166
|
+
const apps = await getAllApps({ dev, all })
|
|
150
167
|
|
|
151
168
|
// get the locks for all the dev apps
|
|
152
169
|
if (dev || all) {
|
|
@@ -169,12 +186,11 @@ exports.fetch = async ctx => {
|
|
|
169
186
|
}
|
|
170
187
|
|
|
171
188
|
exports.fetchAppDefinition = async ctx => {
|
|
172
|
-
const
|
|
173
|
-
const layouts = await getLayouts(db)
|
|
189
|
+
const layouts = await getLayouts()
|
|
174
190
|
const userRoleId = getUserRoleId(ctx)
|
|
175
|
-
const accessController = new AccessController(
|
|
191
|
+
const accessController = new AccessController()
|
|
176
192
|
const screens = await accessController.checkScreensAccess(
|
|
177
|
-
await getScreens(
|
|
193
|
+
await getScreens(),
|
|
178
194
|
userRoleId
|
|
179
195
|
)
|
|
180
196
|
ctx.body = {
|
|
@@ -185,15 +201,15 @@ exports.fetchAppDefinition = async ctx => {
|
|
|
185
201
|
}
|
|
186
202
|
|
|
187
203
|
exports.fetchAppPackage = async ctx => {
|
|
188
|
-
const db =
|
|
204
|
+
const db = getAppDB()
|
|
189
205
|
const application = await db.get(DocumentTypes.APP_METADATA)
|
|
190
|
-
const layouts = await getLayouts(
|
|
191
|
-
let screens = await getScreens(
|
|
206
|
+
const layouts = await getLayouts()
|
|
207
|
+
let screens = await getScreens()
|
|
192
208
|
|
|
193
209
|
// Only filter screens if the user is not a builder
|
|
194
210
|
if (!(ctx.user.builder && ctx.user.builder.global)) {
|
|
195
211
|
const userRoleId = getUserRoleId(ctx)
|
|
196
|
-
const accessController = new AccessController(
|
|
212
|
+
const accessController = new AccessController()
|
|
197
213
|
screens = await accessController.checkScreensAccess(screens, userRoleId)
|
|
198
214
|
}
|
|
199
215
|
|
|
@@ -206,6 +222,12 @@ exports.fetchAppPackage = async ctx => {
|
|
|
206
222
|
}
|
|
207
223
|
|
|
208
224
|
exports.create = async ctx => {
|
|
225
|
+
const apps = await getAllApps({ dev: true })
|
|
226
|
+
const name = ctx.request.body.name
|
|
227
|
+
checkAppName(ctx, apps, name)
|
|
228
|
+
const url = exports.getAppUrl(ctx)
|
|
229
|
+
checkAppUrl(ctx, apps, url)
|
|
230
|
+
|
|
209
231
|
const { useTemplate, templateKey, templateString } = ctx.request.body
|
|
210
232
|
const instanceConfig = {
|
|
211
233
|
useTemplate,
|
|
@@ -218,8 +240,7 @@ exports.create = async ctx => {
|
|
|
218
240
|
const instance = await createInstance(instanceConfig)
|
|
219
241
|
const appId = instance._id
|
|
220
242
|
|
|
221
|
-
const
|
|
222
|
-
const db = new CouchDB(appId)
|
|
243
|
+
const db = getAppDB()
|
|
223
244
|
let _rev
|
|
224
245
|
try {
|
|
225
246
|
// if template there will be an existing doc
|
|
@@ -235,7 +256,7 @@ exports.create = async ctx => {
|
|
|
235
256
|
type: "app",
|
|
236
257
|
version: packageJson.version,
|
|
237
258
|
componentLibraries: ["@budibase/standard-components"],
|
|
238
|
-
name:
|
|
259
|
+
name: name,
|
|
239
260
|
url: url,
|
|
240
261
|
template: ctx.request.body.template,
|
|
241
262
|
instance: instance,
|
|
@@ -262,15 +283,29 @@ exports.create = async ctx => {
|
|
|
262
283
|
ctx.body = newApplication
|
|
263
284
|
}
|
|
264
285
|
|
|
286
|
+
// This endpoint currently operates as a PATCH rather than a PUT
|
|
287
|
+
// Thus name and url fields are handled only if present
|
|
265
288
|
exports.update = async ctx => {
|
|
266
|
-
const
|
|
289
|
+
const apps = await getAllApps({ dev: true })
|
|
290
|
+
// validation
|
|
291
|
+
const name = ctx.request.body.name
|
|
292
|
+
if (name) {
|
|
293
|
+
checkAppName(ctx, apps, name, ctx.params.appId)
|
|
294
|
+
}
|
|
295
|
+
const url = await exports.getAppUrl(ctx)
|
|
296
|
+
if (url) {
|
|
297
|
+
checkAppUrl(ctx, apps, url, ctx.params.appId)
|
|
298
|
+
ctx.request.body.url = url
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
const data = await updateAppPackage(ctx.request.body, ctx.params.appId)
|
|
267
302
|
ctx.status = 200
|
|
268
303
|
ctx.body = data
|
|
269
304
|
}
|
|
270
305
|
|
|
271
306
|
exports.updateClient = async ctx => {
|
|
272
307
|
// Get current app version
|
|
273
|
-
const db =
|
|
308
|
+
const db = getAppDB()
|
|
274
309
|
const application = await db.get(DocumentTypes.APP_METADATA)
|
|
275
310
|
const currentVersion = application.version
|
|
276
311
|
|
|
@@ -285,14 +320,14 @@ exports.updateClient = async ctx => {
|
|
|
285
320
|
version: packageJson.version,
|
|
286
321
|
revertableVersion: currentVersion,
|
|
287
322
|
}
|
|
288
|
-
const data = await updateAppPackage(
|
|
323
|
+
const data = await updateAppPackage(appPackageUpdates, ctx.params.appId)
|
|
289
324
|
ctx.status = 200
|
|
290
325
|
ctx.body = data
|
|
291
326
|
}
|
|
292
327
|
|
|
293
328
|
exports.revertClient = async ctx => {
|
|
294
329
|
// Check app can be reverted
|
|
295
|
-
const db =
|
|
330
|
+
const db = getAppDB()
|
|
296
331
|
const application = await db.get(DocumentTypes.APP_METADATA)
|
|
297
332
|
if (!application.revertableVersion) {
|
|
298
333
|
ctx.throw(400, "There is no version to revert to")
|
|
@@ -308,13 +343,13 @@ exports.revertClient = async ctx => {
|
|
|
308
343
|
version: application.revertableVersion,
|
|
309
344
|
revertableVersion: null,
|
|
310
345
|
}
|
|
311
|
-
const data = await updateAppPackage(
|
|
346
|
+
const data = await updateAppPackage(appPackageUpdates, ctx.params.appId)
|
|
312
347
|
ctx.status = 200
|
|
313
348
|
ctx.body = data
|
|
314
349
|
}
|
|
315
350
|
|
|
316
351
|
exports.delete = async ctx => {
|
|
317
|
-
const db =
|
|
352
|
+
const db = getAppDB()
|
|
318
353
|
|
|
319
354
|
const result = await db.destroy()
|
|
320
355
|
/* istanbul ignore next */
|
|
@@ -339,10 +374,11 @@ exports.sync = async (ctx, next) => {
|
|
|
339
374
|
}
|
|
340
375
|
|
|
341
376
|
// replicate prod to dev
|
|
342
|
-
const prodAppId =
|
|
377
|
+
const prodAppId = getProdAppID(appId)
|
|
343
378
|
|
|
344
379
|
try {
|
|
345
|
-
|
|
380
|
+
// specific case, want to make sure setup is skipped
|
|
381
|
+
const prodDb = getProdAppDB({ skip_setup: true })
|
|
346
382
|
const info = await prodDb.info()
|
|
347
383
|
if (info.error) throw info.error
|
|
348
384
|
} catch (err) {
|
|
@@ -370,7 +406,7 @@ exports.sync = async (ctx, next) => {
|
|
|
370
406
|
}
|
|
371
407
|
|
|
372
408
|
// sync the users
|
|
373
|
-
await syncGlobalUsers(
|
|
409
|
+
await syncGlobalUsers()
|
|
374
410
|
|
|
375
411
|
if (error) {
|
|
376
412
|
ctx.throw(400, error)
|
|
@@ -381,12 +417,11 @@ exports.sync = async (ctx, next) => {
|
|
|
381
417
|
}
|
|
382
418
|
}
|
|
383
419
|
|
|
384
|
-
const updateAppPackage = async (
|
|
385
|
-
const
|
|
386
|
-
const db = new CouchDB(appId)
|
|
420
|
+
const updateAppPackage = async (appPackage, appId) => {
|
|
421
|
+
const db = getAppDB()
|
|
387
422
|
const application = await db.get(DocumentTypes.APP_METADATA)
|
|
388
423
|
|
|
389
|
-
const newAppPackage = { ...application, ...appPackage
|
|
424
|
+
const newAppPackage = { ...application, ...appPackage }
|
|
390
425
|
if (appPackage._rev !== application._rev) {
|
|
391
426
|
newAppPackage._rev = application._rev
|
|
392
427
|
}
|
|
@@ -402,7 +437,7 @@ const updateAppPackage = async (ctx, appPackage, appId) => {
|
|
|
402
437
|
}
|
|
403
438
|
|
|
404
439
|
const createEmptyAppPackage = async (ctx, app) => {
|
|
405
|
-
const db =
|
|
440
|
+
const db = getAppDB()
|
|
406
441
|
|
|
407
442
|
let screensAndLayouts = []
|
|
408
443
|
for (let layout of BASE_LAYOUTS) {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
const CouchDB = require("../../db")
|
|
2
1
|
const { outputProcessing } = require("../../utilities/rowProcessor")
|
|
3
2
|
const { InternalTables } = require("../../db/utils")
|
|
4
3
|
const { getFullUser } = require("../../utilities/users")
|
|
5
4
|
const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
|
|
5
|
+
const { getAppDB, getAppId } = require("@budibase/backend-core/context")
|
|
6
6
|
|
|
7
7
|
exports.fetchSelf = async ctx => {
|
|
8
|
-
const appId = ctx.appId
|
|
9
8
|
let userId = ctx.user.userId || ctx.user._id
|
|
10
9
|
/* istanbul ignore next */
|
|
11
10
|
if (!userId) {
|
|
@@ -16,16 +15,20 @@ exports.fetchSelf = async ctx => {
|
|
|
16
15
|
const user = await getFullUser(ctx, userId)
|
|
17
16
|
// this shouldn't be returned by the app self
|
|
18
17
|
delete user.roles
|
|
18
|
+
// forward the csrf token from the session
|
|
19
|
+
user.csrfToken = ctx.user.csrfToken
|
|
19
20
|
|
|
20
|
-
if (
|
|
21
|
-
const db =
|
|
21
|
+
if (getAppId()) {
|
|
22
|
+
const db = getAppDB()
|
|
22
23
|
// remove the full roles structure
|
|
23
24
|
delete user.roles
|
|
24
25
|
try {
|
|
25
26
|
const userTable = await db.get(InternalTables.USER_METADATA)
|
|
26
27
|
const metadata = await db.get(userId)
|
|
28
|
+
// make sure there is never a stale csrf token
|
|
29
|
+
delete metadata.csrfToken
|
|
27
30
|
// specifically needs to make sure is enriched
|
|
28
|
-
ctx.body = await outputProcessing(
|
|
31
|
+
ctx.body = await outputProcessing(userTable, {
|
|
29
32
|
...user,
|
|
30
33
|
...metadata,
|
|
31
34
|
})
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const CouchDB = require("../../db")
|
|
2
1
|
const actions = require("../../automations/actions")
|
|
3
2
|
const triggers = require("../../automations/triggers")
|
|
4
3
|
const { getAutomationParams, generateAutomationID } = require("../../db/utils")
|
|
@@ -10,6 +9,7 @@ const {
|
|
|
10
9
|
const { deleteEntityMetadata } = require("../../utilities")
|
|
11
10
|
const { MetadataTypes } = require("../../constants")
|
|
12
11
|
const { setTestFlag, clearTestFlag } = require("../../utilities/redis")
|
|
12
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
13
13
|
|
|
14
14
|
const ACTION_DEFS = removeDeprecated(actions.ACTION_DEFINITIONS)
|
|
15
15
|
const TRIGGER_DEFS = removeDeprecated(triggers.TRIGGER_DEFINITIONS)
|
|
@@ -20,14 +20,9 @@ const TRIGGER_DEFS = removeDeprecated(triggers.TRIGGER_DEFINITIONS)
|
|
|
20
20
|
* *
|
|
21
21
|
*************************/
|
|
22
22
|
|
|
23
|
-
async function cleanupAutomationMetadata(
|
|
23
|
+
async function cleanupAutomationMetadata(automationId) {
|
|
24
|
+
await deleteEntityMetadata(MetadataTypes.AUTOMATION_TEST_INPUT, automationId)
|
|
24
25
|
await deleteEntityMetadata(
|
|
25
|
-
appId,
|
|
26
|
-
MetadataTypes.AUTOMATION_TEST_INPUT,
|
|
27
|
-
automationId
|
|
28
|
-
)
|
|
29
|
-
await deleteEntityMetadata(
|
|
30
|
-
appId,
|
|
31
26
|
MetadataTypes.AUTOMATION_TEST_HISTORY,
|
|
32
27
|
automationId
|
|
33
28
|
)
|
|
@@ -58,7 +53,7 @@ function cleanAutomationInputs(automation) {
|
|
|
58
53
|
}
|
|
59
54
|
|
|
60
55
|
exports.create = async function (ctx) {
|
|
61
|
-
const db =
|
|
56
|
+
const db = getAppDB()
|
|
62
57
|
let automation = ctx.request.body
|
|
63
58
|
automation.appId = ctx.appId
|
|
64
59
|
|
|
@@ -72,7 +67,6 @@ exports.create = async function (ctx) {
|
|
|
72
67
|
automation.type = "automation"
|
|
73
68
|
automation = cleanAutomationInputs(automation)
|
|
74
69
|
automation = await checkForWebhooks({
|
|
75
|
-
appId: ctx.appId,
|
|
76
70
|
newAuto: automation,
|
|
77
71
|
})
|
|
78
72
|
const response = await db.put(automation)
|
|
@@ -89,13 +83,12 @@ exports.create = async function (ctx) {
|
|
|
89
83
|
}
|
|
90
84
|
|
|
91
85
|
exports.update = async function (ctx) {
|
|
92
|
-
const db =
|
|
86
|
+
const db = getAppDB()
|
|
93
87
|
let automation = ctx.request.body
|
|
94
88
|
automation.appId = ctx.appId
|
|
95
89
|
const oldAutomation = await db.get(automation._id)
|
|
96
90
|
automation = cleanAutomationInputs(automation)
|
|
97
91
|
automation = await checkForWebhooks({
|
|
98
|
-
appId: ctx.appId,
|
|
99
92
|
oldAuto: oldAutomation,
|
|
100
93
|
newAuto: automation,
|
|
101
94
|
})
|
|
@@ -131,7 +124,7 @@ exports.update = async function (ctx) {
|
|
|
131
124
|
}
|
|
132
125
|
|
|
133
126
|
exports.fetch = async function (ctx) {
|
|
134
|
-
const db =
|
|
127
|
+
const db = getAppDB()
|
|
135
128
|
const response = await db.allDocs(
|
|
136
129
|
getAutomationParams(null, {
|
|
137
130
|
include_docs: true,
|
|
@@ -141,20 +134,19 @@ exports.fetch = async function (ctx) {
|
|
|
141
134
|
}
|
|
142
135
|
|
|
143
136
|
exports.find = async function (ctx) {
|
|
144
|
-
const db =
|
|
137
|
+
const db = getAppDB()
|
|
145
138
|
ctx.body = await db.get(ctx.params.id)
|
|
146
139
|
}
|
|
147
140
|
|
|
148
141
|
exports.destroy = async function (ctx) {
|
|
149
|
-
const db =
|
|
142
|
+
const db = getAppDB()
|
|
150
143
|
const automationId = ctx.params.id
|
|
151
144
|
const oldAutomation = await db.get(automationId)
|
|
152
145
|
await checkForWebhooks({
|
|
153
|
-
appId: ctx.appId,
|
|
154
146
|
oldAuto: oldAutomation,
|
|
155
147
|
})
|
|
156
148
|
// delete metadata first
|
|
157
|
-
await cleanupAutomationMetadata(
|
|
149
|
+
await cleanupAutomationMetadata(automationId)
|
|
158
150
|
ctx.body = await db.remove(automationId, ctx.params.rev)
|
|
159
151
|
}
|
|
160
152
|
|
|
@@ -180,12 +172,11 @@ module.exports.getDefinitionList = async function (ctx) {
|
|
|
180
172
|
*********************/
|
|
181
173
|
|
|
182
174
|
exports.trigger = async function (ctx) {
|
|
183
|
-
const
|
|
184
|
-
const db = new CouchDB(appId)
|
|
175
|
+
const db = getAppDB()
|
|
185
176
|
let automation = await db.get(ctx.params.id)
|
|
186
177
|
await triggers.externalTrigger(automation, {
|
|
187
178
|
...ctx.request.body,
|
|
188
|
-
appId,
|
|
179
|
+
appId: ctx.appId,
|
|
189
180
|
})
|
|
190
181
|
ctx.body = {
|
|
191
182
|
message: `Automation ${automation._id} has been triggered.`,
|
|
@@ -205,8 +196,7 @@ function prepareTestInput(input) {
|
|
|
205
196
|
}
|
|
206
197
|
|
|
207
198
|
exports.test = async function (ctx) {
|
|
208
|
-
const
|
|
209
|
-
const db = new CouchDB(appId)
|
|
199
|
+
const db = getAppDB()
|
|
210
200
|
let automation = await db.get(ctx.params.id)
|
|
211
201
|
await setTestFlag(automation._id)
|
|
212
202
|
const testInput = prepareTestInput(ctx.request.body)
|
|
@@ -214,7 +204,7 @@ exports.test = async function (ctx) {
|
|
|
214
204
|
automation,
|
|
215
205
|
{
|
|
216
206
|
...testInput,
|
|
217
|
-
appId,
|
|
207
|
+
appId: ctx.appId,
|
|
218
208
|
},
|
|
219
209
|
{ getResponses: true }
|
|
220
210
|
)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
const env = require("../../environment")
|
|
2
2
|
const { getAllApps } = require("@budibase/backend-core/db")
|
|
3
|
-
const CouchDB = require("../../db")
|
|
4
3
|
const {
|
|
5
4
|
exportDB,
|
|
6
5
|
sendTempFile,
|
|
@@ -30,7 +29,7 @@ exports.exportApps = async ctx => {
|
|
|
30
29
|
if (env.SELF_HOSTED || !env.MULTI_TENANCY) {
|
|
31
30
|
ctx.throw(400, "Exporting only allowed in multi-tenant cloud environments.")
|
|
32
31
|
}
|
|
33
|
-
const apps = await getAllApps(
|
|
32
|
+
const apps = await getAllApps({ all: true })
|
|
34
33
|
const globalDBString = await exportDB(getGlobalDBName(), {
|
|
35
34
|
filter: doc => !doc._id.startsWith(DocumentTypes.USER),
|
|
36
35
|
})
|
|
@@ -63,7 +62,7 @@ async function hasBeenImported() {
|
|
|
63
62
|
if (!env.SELF_HOSTED || env.MULTI_TENANCY) {
|
|
64
63
|
return true
|
|
65
64
|
}
|
|
66
|
-
const apps = await getAllApps(
|
|
65
|
+
const apps = await getAllApps({ all: true })
|
|
67
66
|
return apps.length !== 0
|
|
68
67
|
}
|
|
69
68
|
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
const CouchDB = require("../../db")
|
|
2
1
|
const { DocumentTypes } = require("../../db/utils")
|
|
3
2
|
const { getComponentLibraryManifest } = require("../../utilities/fileSystem")
|
|
3
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
4
4
|
|
|
5
5
|
exports.fetchAppComponentDefinitions = async function (ctx) {
|
|
6
|
-
const
|
|
7
|
-
const db = new CouchDB(appId)
|
|
6
|
+
const db = getAppDB()
|
|
8
7
|
const app = await db.get(DocumentTypes.APP_METADATA)
|
|
9
8
|
|
|
10
9
|
let componentManifests = await Promise.all(
|
|
11
10
|
app.componentLibraries.map(async library => {
|
|
12
|
-
let manifest = await getComponentLibraryManifest(
|
|
11
|
+
let manifest = await getComponentLibraryManifest(library)
|
|
13
12
|
|
|
14
13
|
return {
|
|
15
14
|
manifest,
|