@budibase/server 2.1.32-alpha.8 → 2.1.32
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__/aws-sdk.ts +0 -14
- package/__mocks__/node-fetch.ts +1 -5
- package/builder/assets/{index.7176fd99.css → index.534f6c29.css} +1 -1
- package/builder/assets/{index.3efa93e2.js → index.968304ca.js} +316 -316
- package/builder/index.html +2 -2
- package/coverage/clover.xml +3681 -10588
- package/coverage/coverage-final.json +77 -225
- package/coverage/lcov-report/{src/api/controllers/apikeys.ts.html → api/controllers/apikeys.js.html} +26 -26
- package/coverage/lcov-report/{src/api/controllers/automation.ts.html → api/controllers/automation.js.html} +75 -75
- package/coverage/lcov-report/{src/api/controllers/cloud.ts.html → api/controllers/cloud.js.html} +47 -47
- package/coverage/lcov-report/{src/api/controllers/datasource.ts.html → api/controllers/datasource.js.html} +87 -246
- package/coverage/lcov-report/{src/api/controllers/dev.ts.html → api/controllers/dev.js.html} +71 -53
- package/coverage/lcov-report/api/controllers/index.html +326 -0
- package/coverage/lcov-report/{src/api → api}/controllers/integration.js.html +10 -10
- package/coverage/lcov-report/{src/api/controllers/layout.ts.html → api/controllers/layout.js.html} +26 -26
- package/coverage/lcov-report/{src/api/controllers/metadata.ts.html → api/controllers/metadata.js.html} +23 -26
- package/coverage/lcov-report/{src/api → api}/controllers/migrations.js.html +10 -10
- package/coverage/lcov-report/{src/api/controllers/permission.ts.html → api/controllers/permission.js.html} +71 -80
- package/coverage/lcov-report/{src/utilities/routing → api/controllers/query}/index.html +8 -8
- package/coverage/lcov-report/{src/api/controllers/query/validation.ts.html → api/controllers/query/validation.js.html} +17 -17
- package/coverage/lcov-report/{src/api/controllers/role.ts.html → api/controllers/role.js.html} +56 -44
- package/coverage/lcov-report/{src/api/controllers/routing.ts.html → api/controllers/routing.js.html} +56 -65
- package/coverage/lcov-report/{src/api → api}/controllers/row/external.js.html +13 -13
- package/coverage/lcov-report/{src/api → api}/controllers/row/index.html +46 -76
- package/coverage/lcov-report/{src/api → api}/controllers/row/internal.js.html +29 -26
- package/coverage/lcov-report/{src/api/controllers/row/internalSearch.ts.html → api/controllers/row/internalSearch.js.html} +110 -182
- package/coverage/lcov-report/{src/api/controllers/row/staticFormula.ts.html → api/controllers/row/staticFormula.js.html} +54 -69
- package/coverage/lcov-report/{src/api/controllers/row/utils.ts.html → api/controllers/row/utils.js.html} +43 -64
- package/coverage/lcov-report/{src/api/controllers/script.ts.html → api/controllers/script.js.html} +14 -17
- package/coverage/lcov-report/{src/api/controllers/table/bulkFormula.ts.html → api/controllers/table/bulkFormula.js.html} +54 -96
- package/coverage/lcov-report/{src/api/controllers/table/external.ts.html → api/controllers/table/external.js.html} +100 -196
- package/coverage/lcov-report/{src/utilities/fileSystem → api/controllers/table}/index.html +44 -44
- package/coverage/lcov-report/{src/api/controllers/table/index.ts.html → api/controllers/table/index.js.html} +35 -35
- package/coverage/lcov-report/{src/api/controllers/templates.ts.html → api/controllers/templates.js.html} +25 -34
- package/coverage/lcov-report/{src/api/controllers/user.ts.html → api/controllers/user.js.html} +85 -79
- package/coverage/lcov-report/{src/api/controllers/view/exporters.ts.html → api/controllers/view/exporters.js.html} +14 -20
- package/coverage/lcov-report/{src/api → api}/controllers/view/index.html +30 -30
- package/coverage/lcov-report/{src/api/controllers/view/index.ts.html → api/controllers/view/index.js.html} +48 -75
- package/coverage/lcov-report/{src/api/controllers/view/utils.ts.html → api/controllers/view/utils.js.html} +43 -61
- package/coverage/lcov-report/{src/api → api}/controllers/view/viewBuilder.js.html +10 -10
- package/coverage/lcov-report/{src/api → api}/index.html +23 -23
- package/coverage/lcov-report/{src/api/index.ts.html → api/index.js.html} +56 -35
- package/coverage/lcov-report/{src/api/routes/analytics.ts.html → api/routes/analytics.js.html} +14 -14
- package/coverage/lcov-report/{src/middleware/selfhost.ts.html → api/routes/apikeys.js.html} +27 -27
- package/coverage/lcov-report/{src/api/routes/automation.ts.html → api/routes/automation.js.html} +42 -48
- package/coverage/lcov-report/{src/api/routes/backup.ts.html → api/routes/cloud.js.html} +21 -21
- package/coverage/lcov-report/{src/api/routes/component.ts.html → api/routes/component.js.html} +17 -17
- package/coverage/lcov-report/{src/api/routes/datasource.ts.html → api/routes/datasource.js.html} +33 -60
- package/coverage/lcov-report/{src/api/routes/cloud.ts.html → api/routes/deploy.js.html} +22 -25
- package/coverage/lcov-report/{src/api/routes/webhook.ts.html → api/routes/dev.js.html} +43 -46
- package/coverage/lcov-report/{src/api → api}/routes/index.html +47 -167
- package/coverage/lcov-report/{src/api/routes/apikeys.ts.html → api/routes/integration.js.html} +18 -18
- package/coverage/lcov-report/{src/api/routes/layout.ts.html → api/routes/layout.js.html} +18 -18
- package/coverage/lcov-report/{src/api/routes/metadata.ts.html → api/routes/metadata.js.html} +24 -24
- package/coverage/lcov-report/{src/sdk/index.ts.html → api/routes/migrations.js.html} +21 -24
- package/coverage/lcov-report/{src/api/routes/view.ts.html → api/routes/permission.js.html} +37 -40
- package/coverage/lcov-report/{src/api/routes/query.ts.html → api/routes/query.js.html} +42 -33
- package/coverage/lcov-report/api/routes/role.js.html +130 -0
- package/coverage/lcov-report/{src/api/routes/routing.ts.html → api/routes/routing.js.html} +17 -17
- package/coverage/lcov-report/api/routes/screen.js.html +139 -0
- package/coverage/lcov-report/{src/api/routes/script.ts.html → api/routes/script.js.html} +17 -17
- package/coverage/lcov-report/{src/api/routes/table.ts.html → api/routes/table.js.html} +33 -24
- package/coverage/lcov-report/{src/api/routes/templates.ts.html → api/routes/templates.js.html} +18 -18
- package/coverage/lcov-report/{src/api/routes/user.ts.html → api/routes/user.js.html} +35 -29
- package/coverage/lcov-report/{src/api → api}/routes/utils/index.html +15 -15
- package/coverage/lcov-report/{src/api/routes/utils/validators.ts.html → api/routes/utils/validators.js.html} +58 -46
- package/coverage/lcov-report/{src/definitions/automations.ts.html → api/routes/view.js.html} +41 -44
- package/coverage/lcov-report/{src/automations → automations}/actions.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/automationUtils.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/bullboard.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/index.html +24 -39
- package/coverage/lcov-report/{src/automations → automations}/index.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/bash.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/delay.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/discord.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/executeQuery.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/executeScript.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/filter.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/index.html +26 -56
- package/coverage/lcov-report/{src/automations → automations}/steps/integromat.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/loop.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/outgoingWebhook.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/queryRows.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/sendSmtpEmail.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/serverLog.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/slack.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/updateRow.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/steps/utils.js.html +19 -19
- package/coverage/lcov-report/{src/automations → automations}/steps/zapier.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/app.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/cron.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/index.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/index.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/rowDeleted.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/rowSaved.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/rowUpdated.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/webhook.js.html +10 -10
- package/coverage/lcov-report/{src/automations → automations}/triggers.js.html +23 -20
- package/coverage/lcov-report/{src/constants → constants}/index.html +14 -14
- package/coverage/lcov-report/{src/constants → constants}/index.js.html +22 -16
- package/coverage/lcov-report/{src/constants → constants}/layouts.js.html +10 -10
- package/coverage/lcov-report/{src/constants → constants}/screens.js.html +12 -12
- package/coverage/lcov-report/{src/db → db}/inMemoryView.js.html +13 -13
- package/coverage/lcov-report/{src/db → db}/index.html +27 -42
- package/coverage/lcov-report/{src/db → db}/index.js.html +18 -18
- package/coverage/lcov-report/{src/db → db}/linkedRows/LinkController.js.html +160 -22
- package/coverage/lcov-report/{src/db → db}/linkedRows/index.html +22 -37
- package/coverage/lcov-report/{src/db → db}/linkedRows/index.js.html +12 -12
- package/coverage/lcov-report/{src/db → db}/linkedRows/linkUtils.js.html +13 -13
- package/coverage/lcov-report/{src/db → db}/newid.js.html +10 -10
- package/coverage/lcov-report/{src/db/utils.ts.html → db/utils.js.html} +153 -105
- package/coverage/lcov-report/{src/events → events}/AutomationEmitter.js.html +10 -10
- package/coverage/lcov-report/{src/events → events}/index.html +10 -10
- package/coverage/lcov-report/{src/events → events}/index.js.html +10 -10
- package/coverage/lcov-report/{src/events → events}/utils.js.html +10 -10
- package/coverage/lcov-report/index.html +161 -671
- package/coverage/lcov-report/{src/integrations → integrations}/tests/TestConfiguration.js.html +10 -10
- package/coverage/lcov-report/{src/integrations → integrations}/tests/index.html +10 -10
- package/coverage/lcov-report/{src/middleware/appInfo.ts.html → middleware/appInfo.js.html} +28 -31
- package/coverage/lcov-report/{src/middleware/builder.ts.html → middleware/builder.js.html} +37 -43
- package/coverage/lcov-report/{src/middleware/currentapp.ts.html → middleware/currentapp.js.html} +68 -77
- package/coverage/lcov-report/{src/middleware → middleware}/index.html +63 -78
- package/coverage/lcov-report/{src/middleware/joi-validator.ts.html → middleware/joi-validator.js.html} +22 -25
- package/coverage/lcov-report/{src/middleware/publicApi.ts.html → middleware/publicApi.js.html} +24 -24
- package/coverage/lcov-report/{src/middleware/resourceId.ts.html → middleware/resourceId.js.html} +25 -40
- package/coverage/lcov-report/{src/tests/utilities/index.js.html → middleware/selfhost.js.html} +30 -33
- package/coverage/lcov-report/{src/middleware/utils.ts.html → middleware/utils.js.html} +13 -19
- package/coverage/lcov-report/{src/utilities/budibaseDir.ts.html → utilities/budibaseDir.js.html} +12 -12
- package/coverage/lcov-report/{src/utilities → utilities}/centralPath.js.html +10 -10
- package/coverage/lcov-report/{src/utilities → utilities}/csvParser.js.html +10 -10
- package/coverage/lcov-report/{src/utilities/global.ts.html → utilities/global.js.html} +74 -107
- package/coverage/lcov-report/{src/utilities → utilities}/index.html +61 -76
- package/coverage/lcov-report/{src/utilities/index.ts.html → utilities/index.js.html} +53 -77
- package/coverage/lcov-report/{src/utilities → utilities}/plugins.js.html +10 -10
- package/coverage/lcov-report/{src/utilities → utilities}/queue/inMemoryQueue.js.html +10 -10
- package/coverage/lcov-report/{src/utilities → utilities}/queue/index.html +10 -10
- package/coverage/lcov-report/{src/sdk → utilities/routing}/index.html +10 -10
- package/coverage/lcov-report/{src/api/routes/role.ts.html → utilities/routing/index.js.html} +42 -39
- package/coverage/lcov-report/{src/migrations → utilities/rowProcessor}/index.html +37 -22
- package/coverage/lcov-report/{src/utilities/rowProcessor/index.ts.html → utilities/rowProcessor/index.js.html} +344 -113
- package/coverage/lcov-report/{src/utilities/rowProcessor/utils.ts.html → utilities/rowProcessor/utils.js.html} +38 -50
- package/coverage/lcov-report/{src/utilities → utilities}/scriptRunner.js.html +10 -10
- package/coverage/lcov-report/{src/utilities/security.ts.html → utilities/security.js.html} +74 -56
- package/coverage/lcov-report/{src/utilities → utilities}/statusCodes.js.html +10 -10
- package/coverage/lcov-report/{src/utilities → utilities}/usageQuota/index.html +27 -27
- package/coverage/lcov-report/{src/utilities/usageQuota/rows.ts.html → utilities/usageQuota/rows.js.html} +46 -34
- package/coverage/lcov-report/{src/utilities → utilities}/usageQuota/usageQuoteReset.js.html +10 -10
- package/coverage/lcov-report/{src/utilities/users.ts.html → utilities/users.js.html} +35 -29
- package/coverage/lcov-report/{src/utilities/workerRequests.ts.html → utilities/workerRequests.js.html} +61 -76
- package/coverage/lcov.info +6772 -19273
- package/dist/api/controllers/apikeys.js +9 -12
- package/dist/api/controllers/application.js +45 -48
- package/dist/api/controllers/automation.js +84 -104
- package/dist/api/controllers/cloud.js +71 -84
- package/dist/api/controllers/component.js +2 -4
- package/dist/api/controllers/datasource.js +92 -144
- package/dist/api/controllers/deploy/Deployment.js +6 -10
- package/dist/api/controllers/deploy/index.js +16 -13
- package/dist/api/controllers/dev.js +81 -96
- package/dist/api/controllers/layout.js +15 -18
- package/dist/api/controllers/metadata.js +37 -51
- package/dist/api/controllers/permission.js +43 -52
- package/dist/api/controllers/plugin/index.js +7 -6
- package/dist/api/controllers/public/applications.js +9 -17
- package/dist/api/controllers/public/tables.js +9 -29
- package/dist/api/controllers/query/import/index.js +2 -1
- package/dist/api/controllers/query/index.js +13 -10
- package/dist/api/controllers/query/validation.js +33 -41
- package/dist/api/controllers/role.js +27 -29
- package/dist/api/controllers/routing.js +58 -71
- package/dist/api/controllers/row/ExternalRequest.js +8 -12
- package/dist/api/controllers/row/external.js +3 -3
- package/dist/api/controllers/row/index.js +7 -16
- package/dist/api/controllers/row/internal.js +12 -11
- package/dist/api/controllers/row/internalSearch.js +80 -95
- package/dist/api/controllers/row/staticFormula.js +75 -85
- package/dist/api/controllers/row/utils.js +84 -118
- package/dist/api/controllers/screen.js +66 -81
- package/dist/api/controllers/script.js +6 -13
- package/dist/api/controllers/static/index.js +11 -9
- package/dist/api/controllers/table/bulkFormula.js +35 -47
- package/dist/api/controllers/table/external.js +57 -67
- package/dist/api/controllers/table/index.js +33 -66
- package/dist/api/controllers/table/internal.js +6 -5
- package/dist/api/controllers/table/utils.js +35 -39
- package/dist/api/controllers/templates.js +10 -17
- package/dist/api/controllers/user.js +70 -82
- package/dist/api/controllers/view/exporters.js +4 -8
- package/dist/api/controllers/view/index.js +153 -201
- package/dist/api/controllers/view/utils.js +121 -151
- package/dist/api/index.js +34 -38
- package/dist/api/routes/analytics.js +3 -29
- package/dist/api/routes/apikeys.js +7 -33
- package/dist/api/routes/application.js +9 -8
- package/dist/api/routes/auth.js +2 -1
- package/dist/api/routes/automation.js +20 -46
- package/dist/api/routes/backup.js +4 -3
- package/dist/api/routes/cloud.js +6 -32
- package/dist/api/routes/component.js +6 -32
- package/dist/api/routes/datasource.js +13 -39
- package/dist/api/routes/deploy.js +8 -34
- package/dist/api/routes/dev.js +10 -36
- package/dist/api/routes/integration.js +7 -10
- package/dist/api/routes/layout.js +7 -33
- package/dist/api/routes/metadata.js +10 -36
- package/dist/api/routes/migrations.js +6 -32
- package/dist/api/routes/permission.js +12 -38
- package/dist/api/routes/plugin.js +5 -5
- package/dist/api/routes/public/index.js +9 -9
- package/dist/api/routes/query.js +15 -42
- package/dist/api/routes/role.js +10 -36
- package/dist/api/routes/routing.js +6 -32
- package/dist/api/routes/row.js +11 -12
- package/dist/api/routes/screen.js +9 -35
- package/dist/api/routes/script.js +6 -32
- package/dist/api/routes/static.js +9 -9
- package/dist/api/routes/table.js +13 -40
- package/dist/api/routes/templates.js +7 -33
- package/dist/api/routes/tests/utilities/TestFunctions.js +8 -6
- package/dist/api/routes/user.js +13 -40
- package/dist/api/routes/utils/validators.js +126 -142
- package/dist/api/routes/view.js +12 -38
- package/dist/api/routes/webhook.js +2 -1
- package/dist/app.js +4 -3
- package/dist/automations/tests/utilities/index.js +12 -21
- package/dist/automations/triggers.js +6 -5
- package/dist/automations/utils.js +8 -9
- package/dist/constants/index.js +5 -3
- package/dist/constants/screens.js +2 -2
- package/dist/db/inMemoryView.js +3 -3
- package/dist/db/linkedRows/LinkController.js +31 -4
- package/dist/db/linkedRows/index.js +2 -2
- package/dist/db/linkedRows/linkUtils.js +3 -3
- package/dist/db/utils.js +119 -146
- package/dist/db/views/staticViews.js +4 -4
- package/dist/integrations/elasticsearch.js +2 -26
- package/dist/integrations/googlesheets.js +6 -4
- package/dist/integrations/index.js +6 -15
- package/dist/integrations/s3.js +1 -157
- package/dist/middleware/appInfo.js +9 -14
- package/dist/middleware/authorized.js +21 -22
- package/dist/middleware/builder.js +40 -41
- package/dist/middleware/currentapp.js +37 -39
- package/dist/middleware/joi-validator.js +10 -17
- package/dist/middleware/publicApi.js +6 -5
- package/dist/middleware/resourceId.js +9 -16
- package/dist/middleware/selfhost.js +4 -5
- package/dist/middleware/utils.js +2 -5
- package/dist/migrations/functions/appUrls.js +2 -2
- package/dist/migrations/functions/backfill/global.js +1 -1
- package/dist/migrations/functions/usageQuotas/syncApps.js +4 -3
- package/dist/migrations/functions/usageQuotas/syncRows.js +4 -3
- package/dist/migrations/functions/userEmailViewCasing.js +3 -3
- package/dist/package.json +44 -10
- package/dist/sdk/app/backups/exports.js +2 -1
- package/dist/sdk/app/backups/imports.js +3 -2
- package/dist/sdk/app/tables/index.js +5 -5
- package/dist/startup.js +4 -4
- package/dist/tests/utilities/TestConfiguration.js +36 -30
- package/dist/tests/utilities/structures.js +4 -3
- package/dist/threads/automation.js +16 -15
- package/dist/threads/query.js +19 -17
- package/dist/threads/utils.js +9 -11
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/budibaseDir.js +2 -4
- package/dist/utilities/fileSystem/clientLibrary.js +12 -12
- package/dist/utilities/fileSystem/index.js +3 -3
- package/dist/utilities/fileSystem/utilities.js +22 -0
- package/dist/utilities/global.js +66 -87
- package/dist/utilities/index.js +75 -102
- package/dist/utilities/redis.js +65 -100
- package/dist/utilities/routing/index.js +23 -27
- package/dist/utilities/rowProcessor/index.js +191 -124
- package/dist/utilities/rowProcessor/utils.js +26 -35
- package/dist/utilities/security.js +35 -39
- package/dist/utilities/usageQuota/rows.js +49 -56
- package/dist/utilities/users.js +28 -31
- package/dist/utilities/workerRequests.js +82 -115
- package/dist/watch.js +2 -1
- package/package.json +45 -11
- package/scripts/exportAppTemplate.js +2 -2
- package/{src/tests/jestSetup.ts → scripts/jestSetup.js} +2 -11
- package/scripts/localdomain.js +6 -34
- package/src/api/controllers/{apikeys.ts → apikeys.js} +10 -10
- package/src/api/controllers/application.ts +42 -56
- package/src/api/controllers/auth.ts +3 -4
- package/src/api/controllers/{automation.ts → automation.js} +48 -48
- package/src/api/controllers/{cloud.ts → cloud.js} +24 -24
- package/src/api/controllers/component.ts +1 -2
- package/src/api/controllers/{datasource.ts → datasource.js} +47 -100
- package/src/api/controllers/deploy/{Deployment.ts → Deployment.js} +10 -13
- package/src/api/controllers/deploy/index.ts +25 -13
- package/src/api/controllers/{dev.ts → dev.js} +37 -31
- package/src/api/controllers/{layout.ts → layout.js} +8 -8
- package/src/api/controllers/{metadata.ts → metadata.js} +10 -11
- package/src/api/controllers/{permission.ts → permission.js} +46 -49
- package/src/api/controllers/plugin/index.ts +5 -4
- package/src/api/controllers/public/applications.ts +9 -15
- package/src/api/controllers/public/tables.ts +2 -2
- package/src/api/controllers/query/import/index.ts +3 -2
- package/src/api/controllers/query/index.ts +14 -11
- package/src/api/controllers/query/{validation.ts → validation.js} +7 -7
- package/src/api/controllers/{role.ts → role.js} +25 -21
- package/src/api/controllers/{routing.ts → routing.js} +34 -37
- package/src/api/controllers/row/ExternalRequest.ts +11 -9
- package/src/api/controllers/row/external.js +3 -3
- package/src/api/controllers/row/index.ts +9 -17
- package/src/api/controllers/row/internal.js +12 -11
- package/src/api/controllers/row/{internalSearch.ts → internalSearch.js} +68 -92
- package/src/api/controllers/row/{staticFormula.ts → staticFormula.js} +23 -28
- package/src/api/controllers/row/{utils.ts → utils.js} +18 -25
- package/src/api/controllers/screen.ts +6 -10
- package/src/api/controllers/script.js +11 -0
- package/src/api/controllers/static/index.ts +13 -9
- package/src/api/controllers/table/{bulkFormula.ts → bulkFormula.js} +25 -39
- package/src/api/controllers/table/{external.ts → external.js} +54 -86
- package/src/api/controllers/table/{index.ts → index.js} +17 -17
- package/src/api/controllers/table/internal.ts +6 -5
- package/src/api/controllers/table/utils.ts +21 -26
- package/src/api/controllers/{templates.ts → templates.js} +7 -10
- package/src/api/controllers/{user.ts → user.js} +49 -47
- package/src/api/controllers/view/{exporters.ts → exporters.js} +3 -5
- package/src/api/controllers/view/{index.ts → index.js} +27 -36
- package/src/api/controllers/view/{utils.ts → utils.js} +20 -26
- package/src/api/{index.ts → index.js} +22 -15
- package/src/api/routes/analytics.js +9 -0
- package/src/api/routes/apikeys.js +12 -0
- package/src/api/routes/application.ts +9 -17
- package/src/api/routes/auth.ts +2 -2
- package/src/api/routes/automation.js +85 -0
- package/src/api/routes/backup.ts +4 -8
- package/src/api/routes/cloud.js +14 -0
- package/src/api/routes/component.js +14 -0
- package/src/api/routes/datasource.js +51 -0
- package/src/api/routes/deploy.js +17 -0
- package/src/api/routes/dev.js +26 -0
- package/src/api/routes/integration.js +12 -0
- package/src/api/routes/layout.js +16 -0
- package/src/api/routes/{metadata.ts → metadata.js} +13 -13
- package/src/api/routes/migrations.js +14 -0
- package/src/api/routes/permission.js +33 -0
- package/src/api/routes/plugin.ts +6 -14
- package/src/api/routes/public/index.ts +10 -10
- package/src/api/routes/public/tests/compare.spec.js +1 -1
- package/src/api/routes/{query.ts → query.js} +22 -19
- package/src/api/routes/role.js +15 -0
- package/src/api/routes/routing.js +14 -0
- package/src/api/routes/row.ts +15 -13
- package/src/api/routes/screen.js +18 -0
- package/src/api/routes/script.js +10 -0
- package/src/api/routes/static.ts +10 -7
- package/src/api/routes/{table.ts → table.js} +13 -10
- package/src/api/routes/templates.js +16 -0
- package/src/api/routes/tests/analytics.spec.js +1 -1
- package/src/api/routes/tests/backup.spec.js +1 -9
- package/src/api/routes/tests/permissions.spec.js +1 -2
- package/src/api/routes/tests/query.spec.js +10 -15
- package/src/api/routes/tests/role.spec.js +9 -7
- package/src/api/routes/tests/routing.spec.js +1 -2
- package/src/api/routes/tests/row.spec.js +4 -3
- package/src/api/routes/tests/static.spec.js +2 -2
- package/src/api/routes/tests/table.spec.js +35 -38
- package/src/api/routes/tests/user.spec.js +1 -2
- package/src/api/routes/tests/utilities/TestFunctions.ts +8 -6
- package/src/api/routes/user.js +53 -0
- package/src/api/routes/utils/{validators.ts → validators.js} +37 -33
- package/src/api/routes/view.js +31 -0
- package/src/api/routes/webhook.ts +2 -2
- package/src/app.ts +4 -3
- package/src/automations/tests/updateRow.spec.js +1 -0
- package/src/automations/tests/utilities/index.js +4 -10
- package/src/automations/triggers.js +6 -5
- package/src/automations/utils.ts +12 -9
- package/src/constants/index.js +5 -3
- package/src/constants/screens.js +2 -2
- package/src/db/inMemoryView.js +3 -3
- package/src/db/linkedRows/LinkController.js +50 -4
- package/src/db/linkedRows/index.js +2 -2
- package/src/db/linkedRows/linkUtils.js +3 -3
- package/src/db/tests/linkController.spec.js +57 -73
- package/src/db/tests/linkTests.spec.js +14 -17
- package/src/db/{utils.ts → utils.js} +93 -77
- package/src/db/views/staticViews.js +4 -4
- package/src/integrations/base/sql.ts +1 -1
- package/src/integrations/base/sqlTable.ts +1 -1
- package/src/integrations/elasticsearch.ts +2 -32
- package/src/integrations/googlesheets.ts +7 -4
- package/src/integrations/index.ts +41 -45
- package/src/integrations/s3.ts +3 -179
- package/src/integrations/tests/s3.spec.ts +1 -85
- package/src/middleware/appInfo.js +19 -0
- package/src/middleware/authorized.ts +28 -21
- package/src/middleware/{builder.ts → builder.js} +15 -17
- package/src/middleware/{currentapp.ts → currentapp.js} +39 -42
- package/src/middleware/{joi-validator.ts → joi-validator.js} +8 -9
- package/src/middleware/publicApi.js +21 -0
- package/src/middleware/{resourceId.ts → resourceId.js} +11 -16
- package/src/middleware/{selfhost.ts → selfhost.js} +2 -4
- package/src/middleware/tests/authorized.spec.js +6 -5
- package/src/middleware/tests/currentapp.spec.js +63 -118
- package/src/middleware/{utils.ts → utils.js} +1 -3
- package/src/migrations/functions/appUrls.ts +2 -2
- package/src/migrations/functions/backfill/app/tables.ts +5 -2
- package/src/migrations/functions/backfill/global.ts +1 -1
- package/src/migrations/functions/tests/appUrls.spec.js +4 -4
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +9 -14
- package/src/migrations/functions/usageQuotas/syncApps.ts +4 -3
- package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +7 -7
- package/src/migrations/functions/userEmailViewCasing.ts +3 -3
- package/src/module.d.ts +14 -0
- package/src/sdk/app/backups/exports.ts +3 -5
- package/src/sdk/app/backups/imports.ts +14 -7
- package/src/sdk/app/backups/statistics.ts +18 -9
- package/src/sdk/app/tables/index.ts +8 -7
- package/src/startup.ts +2 -2
- package/src/tests/utilities/TestConfiguration.js +36 -42
- package/src/tests/utilities/structures.js +4 -3
- package/src/threads/automation.ts +16 -15
- package/src/threads/query.ts +16 -11
- package/src/threads/utils.ts +5 -4
- package/src/utilities/budibaseDir.js +3 -0
- package/src/utilities/fileSystem/clientLibrary.js +12 -12
- package/src/utilities/fileSystem/index.js +8 -8
- package/src/utilities/fileSystem/utilities.js +36 -0
- package/src/utilities/global.js +127 -0
- package/src/utilities/{index.ts → index.js} +32 -40
- package/src/utilities/{redis.ts → redis.js} +20 -21
- package/src/utilities/routing/index.js +25 -0
- package/src/utilities/rowProcessor/{index.ts → index.js} +142 -65
- package/src/utilities/rowProcessor/{utils.ts → utils.js} +15 -19
- package/src/utilities/security.js +71 -0
- package/src/utilities/usageQuota/{rows.ts → rows.js} +18 -14
- package/src/utilities/{users.ts → users.js} +13 -11
- package/src/utilities/{workerRequests.ts → workerRequests.js} +38 -43
- package/src/watch.ts +3 -2
- package/tsconfig.json +1 -3
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
- package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -2038
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
- package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -259
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -730
- package/coverage/lcov-report/src/api/controllers/index.html +0 -431
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -484
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -142
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -334
- package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +0 -163
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -268
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
- package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -976
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2320
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
- package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -688
- package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -661
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1255
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -379
- package/coverage/lcov-report/src/api/routes/application.ts.html +0 -223
- package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -148
- package/coverage/lcov-report/src/api/routes/dev.ts.html +0 -199
- package/coverage/lcov-report/src/api/routes/index.ts.html +0 -289
- package/coverage/lcov-report/src/api/routes/integration.ts.html +0 -133
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
- package/coverage/lcov-report/src/api/routes/permission.ts.html +0 -208
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -541
- package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -502
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -328
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
- package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
- package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.js.html +0 -367
- package/coverage/lcov-report/src/app.ts.html +0 -400
- package/coverage/lcov-report/src/automations/logging/index.html +0 -116
- package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -367
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -334
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
- package/coverage/lcov-report/src/automations/tests/utilities/index.js.html +0 -256
- package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.js.html +0 -2023
- package/coverage/lcov-report/src/db/defaultData/employeeImport.js.html +0 -541
- package/coverage/lcov-report/src/db/defaultData/expensesImport.js.html +0 -427
- package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.js.html +0 -403
- package/coverage/lcov-report/src/db/defaultData/jobsImport.js.html +0 -559
- package/coverage/lcov-report/src/db/dynamoClient.js.html +0 -466
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.js.html +0 -226
- package/coverage/lcov-report/src/definitions/datasource.ts.html +0 -235
- package/coverage/lcov-report/src/definitions/index.html +0 -131
- package/coverage/lcov-report/src/environment.js.html +0 -445
- package/coverage/lcov-report/src/index.html +0 -191
- package/coverage/lcov-report/src/index.ts.html +0 -133
- package/coverage/lcov-report/src/integrations/airtable.ts.html +0 -529
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
- package/coverage/lcov-report/src/integrations/base/index.html +0 -161
- package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -133
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -1951
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -406
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +0 -745
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -634
- package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1312
- package/coverage/lcov-report/src/integrations/index.html +0 -371
- package/coverage/lcov-report/src/integrations/index.ts.html +0 -445
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1006
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1867
- package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -952
- package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1474
- package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1069
- package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -463
- package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
- package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1381
- package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
- package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1006
- package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -460
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -187
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -283
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
- package/coverage/lcov-report/src/migrations/functions/index.html +0 -146
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
- package/coverage/lcov-report/src/migrations/index.ts.html +0 -403
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
- package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
- package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -682
- package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
- package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -265
- package/coverage/lcov-report/src/startup.ts.html +0 -499
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.js.html +0 -1885
- package/coverage/lcov-report/src/tests/utilities/controllers.js.html +0 -133
- package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
- package/coverage/lcov-report/src/tests/utilities/structures.js.html +0 -649
- package/coverage/lcov-report/src/threads/automation.ts.html +0 -1594
- package/coverage/lcov-report/src/threads/index.html +0 -161
- package/coverage/lcov-report/src/threads/index.ts.html +0 -418
- package/coverage/lcov-report/src/threads/query.ts.html +0 -961
- package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.js.html +0 -547
- package/coverage/lcov-report/src/utilities/fileSystem/index.js.html +0 -1141
- package/coverage/lcov-report/src/utilities/fileSystem/processor.js.html +0 -148
- package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
- package/coverage/lcov-report/src/utilities/rowProcessor/map.js.html +0 -370
- package/coverage/lcov-report/src/watch.ts.html +0 -196
- package/coverage/lcov-report/src/websocket.ts.html +0 -163
- package/dist/db/defaultData/datasource_bb_default.js +0 -565
- package/dist/db/defaultData/employeeImport.js +0 -153
- package/dist/db/defaultData/expensesImport.js +0 -115
- package/dist/db/defaultData/inventoryImport.js +0 -107
- package/dist/db/defaultData/jobsImport.js +0 -150
- package/dist/db/linkedRows/LinkDocument.js +0 -32
- package/dist/utilities/rowProcessor/map.js +0 -96
- package/jest.config.ts +0 -33
- package/src/api/controllers/script.ts +0 -12
- package/src/api/routes/analytics.ts +0 -9
- package/src/api/routes/apikeys.ts +0 -12
- package/src/api/routes/automation.ts +0 -87
- package/src/api/routes/cloud.ts +0 -18
- package/src/api/routes/component.ts +0 -14
- package/src/api/routes/datasource.ts +0 -60
- package/src/api/routes/deploy.ts +0 -21
- package/src/api/routes/dev.ts +0 -38
- package/src/api/routes/integration.ts +0 -16
- package/src/api/routes/layout.ts +0 -16
- package/src/api/routes/migrations.ts +0 -14
- package/src/api/routes/permission.ts +0 -41
- package/src/api/routes/role.ts +0 -24
- package/src/api/routes/routing.ts +0 -14
- package/src/api/routes/screen.ts +0 -23
- package/src/api/routes/script.ts +0 -10
- package/src/api/routes/templates.ts +0 -16
- package/src/api/routes/user.ts +0 -51
- package/src/api/routes/view.ts +0 -34
- package/src/db/defaultData/datasource_bb_default.js +0 -646
- package/src/db/defaultData/employeeImport.js +0 -152
- package/src/db/defaultData/expensesImport.js +0 -114
- package/src/db/defaultData/inventoryImport.js +0 -106
- package/src/db/defaultData/jobsImport.js +0 -158
- package/src/db/linkedRows/LinkDocument.js +0 -47
- package/src/middleware/appInfo.ts +0 -20
- package/src/middleware/publicApi.ts +0 -21
- package/src/utilities/budibaseDir.ts +0 -3
- package/src/utilities/global.ts +0 -138
- package/src/utilities/routing/index.ts +0 -32
- package/src/utilities/rowProcessor/map.js +0 -95
- package/src/utilities/security.ts +0 -65
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
const internal = require("./internal")
|
|
2
|
+
const external = require("./external")
|
|
3
|
+
const csvParser = require("../../../utilities/csvParser")
|
|
4
|
+
const { isExternalTable, isSQL } = require("../../../integrations/utils")
|
|
5
|
+
const { getDatasourceParams } = require("../../../db/utils")
|
|
6
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
7
|
+
const { events } = require("@budibase/backend-core")
|
|
8
|
+
const sdk = require("../../../sdk")
|
|
9
9
|
|
|
10
|
-
function pickApi({ tableId, table }
|
|
10
|
+
function pickApi({ tableId, table }) {
|
|
11
11
|
if (table && !tableId) {
|
|
12
12
|
tableId = table._id
|
|
13
13
|
}
|
|
@@ -20,8 +20,8 @@ function pickApi({ tableId, table }: { tableId?: string; table?: Table }) {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
// covers both internal and external
|
|
23
|
-
|
|
24
|
-
const db =
|
|
23
|
+
exports.fetch = async function (ctx) {
|
|
24
|
+
const db = getAppDB()
|
|
25
25
|
|
|
26
26
|
const internal = await sdk.tables.getAllInternalTables()
|
|
27
27
|
|
|
@@ -34,7 +34,7 @@ export async function fetch(ctx: BBContext) {
|
|
|
34
34
|
const external = externalTables.rows.flatMap(tableDoc => {
|
|
35
35
|
let entities = tableDoc.doc.entities
|
|
36
36
|
if (entities) {
|
|
37
|
-
return Object.values(entities).map(
|
|
37
|
+
return Object.values(entities).map(entity => ({
|
|
38
38
|
...entity,
|
|
39
39
|
type: "external",
|
|
40
40
|
sourceId: tableDoc.doc._id,
|
|
@@ -48,12 +48,12 @@ export async function fetch(ctx: BBContext) {
|
|
|
48
48
|
ctx.body = [...internal, ...external]
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
exports.find = async function (ctx) {
|
|
52
52
|
const tableId = ctx.params.tableId
|
|
53
53
|
ctx.body = await sdk.tables.getTable(tableId)
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
exports.save = async function (ctx) {
|
|
57
57
|
const appId = ctx.appId
|
|
58
58
|
const table = ctx.request.body
|
|
59
59
|
const importFormat =
|
|
@@ -74,7 +74,7 @@ export async function save(ctx: BBContext) {
|
|
|
74
74
|
ctx.body = savedTable
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
exports.destroy = async function (ctx) {
|
|
78
78
|
const appId = ctx.appId
|
|
79
79
|
const tableId = ctx.params.tableId
|
|
80
80
|
const deletedTable = await pickApi({ tableId }).destroy(ctx)
|
|
@@ -86,7 +86,7 @@ export async function destroy(ctx: BBContext) {
|
|
|
86
86
|
ctx.body = { message: `Table ${tableId} deleted.` }
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
exports.bulkImport = async function (ctx) {
|
|
90
90
|
const tableId = ctx.params.tableId
|
|
91
91
|
await pickApi({ tableId }).bulkImport(ctx)
|
|
92
92
|
// right now we don't trigger anything for bulk import because it
|
|
@@ -96,7 +96,7 @@ export async function bulkImport(ctx: BBContext) {
|
|
|
96
96
|
ctx.body = { message: `Bulk rows created.` }
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
exports.validateCSVSchema = async function (ctx) {
|
|
100
100
|
// tableId being specified means its an import to an existing table
|
|
101
101
|
const { csvString, schema = {}, tableId } = ctx.request.body
|
|
102
102
|
let existingTable
|
|
@@ -2,7 +2,7 @@ import { updateLinks, EventType } from "../../../db/linkedRows"
|
|
|
2
2
|
import { getRowParams, generateTableID } from "../../../db/utils"
|
|
3
3
|
import { FieldTypes } from "../../../constants"
|
|
4
4
|
import { TableSaveFunctions, hasTypeChanged, handleDataImport } from "./utils"
|
|
5
|
-
|
|
5
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
6
6
|
import { isTest } from "../../../environment"
|
|
7
7
|
import {
|
|
8
8
|
cleanupAttachments,
|
|
@@ -35,7 +35,7 @@ function checkAutoColumns(table: Table, oldTable: Table) {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export async function save(ctx: any) {
|
|
38
|
-
const db =
|
|
38
|
+
const db = getAppDB()
|
|
39
39
|
const { dataImport, ...rest } = ctx.request.body
|
|
40
40
|
let tableToSave = {
|
|
41
41
|
type: "table",
|
|
@@ -133,12 +133,12 @@ export async function save(ctx: any) {
|
|
|
133
133
|
tableToSave._rev = result.rev
|
|
134
134
|
}
|
|
135
135
|
// has to run after, make sure it has _id
|
|
136
|
-
await runStaticFormulaChecks(tableToSave, { oldTable, deletion:
|
|
136
|
+
await runStaticFormulaChecks(tableToSave, { oldTable, deletion: null })
|
|
137
137
|
return tableToSave
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
export async function destroy(ctx: any) {
|
|
141
|
-
const db =
|
|
141
|
+
const db = getAppDB()
|
|
142
142
|
const tableToDelete = await db.get(ctx.params.tableId)
|
|
143
143
|
|
|
144
144
|
// Delete all rows for that table
|
|
@@ -161,7 +161,7 @@ export async function destroy(ctx: any) {
|
|
|
161
161
|
})
|
|
162
162
|
|
|
163
163
|
// don't remove the table itself until very end
|
|
164
|
-
await db.remove(tableToDelete
|
|
164
|
+
await db.remove(tableToDelete)
|
|
165
165
|
|
|
166
166
|
// remove table search index
|
|
167
167
|
if (!isTest() || env.COUCH_DB_URL) {
|
|
@@ -176,6 +176,7 @@ export async function destroy(ctx: any) {
|
|
|
176
176
|
|
|
177
177
|
// has to run after, make sure it has _id
|
|
178
178
|
await runStaticFormulaChecks(tableToDelete, {
|
|
179
|
+
oldTable: null,
|
|
179
180
|
deletion: true,
|
|
180
181
|
})
|
|
181
182
|
await cleanupAttachments(tableToDelete, {
|
|
@@ -13,28 +13,28 @@ import {
|
|
|
13
13
|
} from "../../../constants"
|
|
14
14
|
import { getViews, saveView } from "../view/utils"
|
|
15
15
|
import viewTemplate from "../view/viewBuilder"
|
|
16
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
16
17
|
import { cloneDeep } from "lodash/fp"
|
|
17
18
|
import { quotas } from "@budibase/pro"
|
|
18
|
-
import { events
|
|
19
|
-
import { Database } from "@budibase/types"
|
|
19
|
+
import { events } from "@budibase/backend-core"
|
|
20
20
|
|
|
21
21
|
export async function clearColumns(table: any, columnNames: any) {
|
|
22
|
-
const db
|
|
22
|
+
const db = getAppDB()
|
|
23
23
|
const rows = await db.allDocs(
|
|
24
24
|
getRowParams(table._id, null, {
|
|
25
25
|
include_docs: true,
|
|
26
26
|
})
|
|
27
27
|
)
|
|
28
|
-
return
|
|
28
|
+
return db.bulkDocs(
|
|
29
29
|
rows.rows.map(({ doc }: any) => {
|
|
30
30
|
columnNames.forEach((colName: any) => delete doc[colName])
|
|
31
31
|
return doc
|
|
32
32
|
})
|
|
33
|
-
)
|
|
33
|
+
)
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
export async function checkForColumnUpdates(oldTable: any, updatedTable: any) {
|
|
37
|
-
const db =
|
|
37
|
+
const db = getAppDB()
|
|
38
38
|
let updatedRows = []
|
|
39
39
|
const rename = updatedTable._rename
|
|
40
40
|
let deletedColumns: any = []
|
|
@@ -95,7 +95,18 @@ export function makeSureTableUpToDate(table: any, tableToSave: any) {
|
|
|
95
95
|
return tableToSave
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
export function
|
|
98
|
+
export async function handleDataImport(user: any, table: any, dataImport: any) {
|
|
99
|
+
if (!dataImport || !dataImport.csvString) {
|
|
100
|
+
return table
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const db = getAppDB()
|
|
104
|
+
// Populate the table with rows imported from CSV in a bulk update
|
|
105
|
+
const data = await transform({
|
|
106
|
+
...dataImport,
|
|
107
|
+
existingTable: table,
|
|
108
|
+
})
|
|
109
|
+
|
|
99
110
|
let finalData: any = []
|
|
100
111
|
for (let i = 0; i < data.length; i++) {
|
|
101
112
|
let row = data[i]
|
|
@@ -125,22 +136,6 @@ export function importToRows(data: any, table: any, user: any = {}) {
|
|
|
125
136
|
|
|
126
137
|
finalData.push(row)
|
|
127
138
|
}
|
|
128
|
-
return finalData
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
export async function handleDataImport(user: any, table: any, dataImport: any) {
|
|
132
|
-
if (!dataImport || !dataImport.csvString) {
|
|
133
|
-
return table
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
const db = context.getAppDB()
|
|
137
|
-
// Populate the table with rows imported from CSV in a bulk update
|
|
138
|
-
const data = await transform({
|
|
139
|
-
...dataImport,
|
|
140
|
-
existingTable: table,
|
|
141
|
-
})
|
|
142
|
-
|
|
143
|
-
let finalData: any = importToRows(data, table, user)
|
|
144
139
|
|
|
145
140
|
await quotas.addRows(finalData.length, () => db.bulkDocs(finalData), {
|
|
146
141
|
tableId: table._id,
|
|
@@ -150,7 +145,7 @@ export async function handleDataImport(user: any, table: any, dataImport: any) {
|
|
|
150
145
|
}
|
|
151
146
|
|
|
152
147
|
export async function handleSearchIndexes(table: any) {
|
|
153
|
-
const db =
|
|
148
|
+
const db = getAppDB()
|
|
154
149
|
// create relevant search indexes
|
|
155
150
|
if (table.indexes && table.indexes.length > 0) {
|
|
156
151
|
const currentIndexes = await db.getIndexes()
|
|
@@ -214,7 +209,7 @@ class TableSaveFunctions {
|
|
|
214
209
|
rows: any
|
|
215
210
|
|
|
216
211
|
constructor({ user, oldTable, dataImport }: any) {
|
|
217
|
-
this.db =
|
|
212
|
+
this.db = getAppDB()
|
|
218
213
|
this.user = user
|
|
219
214
|
this.oldTable = oldTable
|
|
220
215
|
this.dataImport = dataImport
|
|
@@ -338,7 +333,7 @@ export function generateJunctionTableName(
|
|
|
338
333
|
return `jt_${table.name}_${relatedTable.name}_${column.name}_${column.fieldName}`
|
|
339
334
|
}
|
|
340
335
|
|
|
341
|
-
export function foreignKeyStructure(keyName: any, meta
|
|
336
|
+
export function foreignKeyStructure(keyName: any, meta = null) {
|
|
342
337
|
const structure: any = {
|
|
343
338
|
type: FieldTypes.NUMBER,
|
|
344
339
|
constraints: {},
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { BBContext } from "@budibase/types"
|
|
1
|
+
const fetch = require("node-fetch")
|
|
2
|
+
const { downloadTemplate } = require("../../utilities/fileSystem")
|
|
3
|
+
const env = require("../../environment")
|
|
5
4
|
|
|
6
5
|
// development flag, can be used to test against templates exported locally
|
|
7
6
|
const DEFAULT_TEMPLATES_BUCKET =
|
|
8
7
|
"prod-budi-templates.s3-eu-west-1.amazonaws.com"
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
exports.fetch = async function (ctx) {
|
|
11
10
|
let type = env.TEMPLATE_REPOSITORY
|
|
12
11
|
let response,
|
|
13
12
|
error = false
|
|
14
13
|
try {
|
|
15
|
-
response = await
|
|
16
|
-
`https://${DEFAULT_TEMPLATES_BUCKET}/manifest.json`
|
|
17
|
-
)
|
|
14
|
+
response = await fetch(`https://${DEFAULT_TEMPLATES_BUCKET}/manifest.json`)
|
|
18
15
|
if (response.status !== 200) {
|
|
19
16
|
error = true
|
|
20
17
|
}
|
|
@@ -32,10 +29,10 @@ export async function fetch(ctx: BBContext) {
|
|
|
32
29
|
|
|
33
30
|
// can't currently test this, have to ignore from coverage
|
|
34
31
|
/* istanbul ignore next */
|
|
35
|
-
|
|
32
|
+
exports.downloadTemplate = async function (ctx) {
|
|
36
33
|
const { type, name } = ctx.params
|
|
37
34
|
|
|
38
|
-
await
|
|
35
|
+
await downloadTemplate(type, name)
|
|
39
36
|
|
|
40
37
|
ctx.body = {
|
|
41
38
|
message: `template ${type}:${name} downloaded successfully.`,
|
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
const {
|
|
2
2
|
generateUserMetadataID,
|
|
3
3
|
getUserMetadataParams,
|
|
4
4
|
generateUserFlagID,
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
5
|
+
} = require("../../db/utils")
|
|
6
|
+
const { InternalTables } = require("../../db/utils")
|
|
7
|
+
const { getGlobalUsers, getRawGlobalUser } = require("../../utilities/global")
|
|
8
|
+
const { getFullUser } = require("../../utilities/users")
|
|
9
|
+
const { isEqual } = require("lodash")
|
|
10
|
+
const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
|
|
11
|
+
const {
|
|
12
|
+
getDevelopmentAppID,
|
|
13
|
+
getProdAppIDs,
|
|
14
|
+
dbExists,
|
|
15
|
+
} = require("@budibase/backend-core/db")
|
|
16
|
+
const { UserStatus } = require("@budibase/backend-core/constants")
|
|
17
|
+
const { getAppDB, doInAppContext } = require("@budibase/backend-core/context")
|
|
17
18
|
|
|
18
19
|
async function rawMetadata() {
|
|
19
|
-
const db =
|
|
20
|
+
const db = getAppDB()
|
|
20
21
|
return (
|
|
21
22
|
await db.allDocs(
|
|
22
23
|
getUserMetadataParams(null, {
|
|
@@ -26,9 +27,9 @@ async function rawMetadata() {
|
|
|
26
27
|
).rows.map(row => row.doc)
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
function combineMetadataAndUser(user
|
|
30
|
+
function combineMetadataAndUser(user, metadata) {
|
|
30
31
|
// skip users with no access
|
|
31
|
-
if (user.roleId ===
|
|
32
|
+
if (user.roleId === BUILTIN_ROLE_IDS.PUBLIC) {
|
|
32
33
|
return null
|
|
33
34
|
}
|
|
34
35
|
delete user._rev
|
|
@@ -54,9 +55,9 @@ function combineMetadataAndUser(user: any, metadata: any) {
|
|
|
54
55
|
return null
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
exports.syncGlobalUsers = async () => {
|
|
58
59
|
// sync user metadata
|
|
59
|
-
const db =
|
|
60
|
+
const db = getAppDB()
|
|
60
61
|
const [users, metadata] = await Promise.all([getGlobalUsers(), rawMetadata()])
|
|
61
62
|
const toWrite = []
|
|
62
63
|
for (let user of users) {
|
|
@@ -68,13 +69,13 @@ export async function syncGlobalUsers() {
|
|
|
68
69
|
await db.bulkDocs(toWrite)
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
|
|
72
|
+
exports.syncUser = async function (ctx) {
|
|
72
73
|
let deleting = false,
|
|
73
|
-
user
|
|
74
|
+
user
|
|
74
75
|
const userId = ctx.params.id
|
|
75
76
|
try {
|
|
76
77
|
user = await getRawGlobalUser(userId)
|
|
77
|
-
} catch (err
|
|
78
|
+
} catch (err) {
|
|
78
79
|
if (err && err.status === 404) {
|
|
79
80
|
user = {}
|
|
80
81
|
deleting = true
|
|
@@ -91,21 +92,21 @@ export async function syncUser(ctx: BBContext) {
|
|
|
91
92
|
let prodAppIds
|
|
92
93
|
// if they are a builder then get all production app IDs
|
|
93
94
|
if ((user.builder && user.builder.global) || deleting) {
|
|
94
|
-
prodAppIds = await
|
|
95
|
+
prodAppIds = await getProdAppIDs()
|
|
95
96
|
} else {
|
|
96
97
|
prodAppIds = Object.entries(roles)
|
|
97
|
-
.filter(entry => entry[1] !==
|
|
98
|
+
.filter(entry => entry[1] !== BUILTIN_ROLE_IDS.PUBLIC)
|
|
98
99
|
.map(([appId]) => appId)
|
|
99
100
|
}
|
|
100
101
|
for (let prodAppId of prodAppIds) {
|
|
101
102
|
const roleId = roles[prodAppId]
|
|
102
|
-
const devAppId =
|
|
103
|
+
const devAppId = getDevelopmentAppID(prodAppId)
|
|
103
104
|
for (let appId of [prodAppId, devAppId]) {
|
|
104
|
-
if (!(await
|
|
105
|
+
if (!(await dbExists(appId))) {
|
|
105
106
|
continue
|
|
106
107
|
}
|
|
107
|
-
await
|
|
108
|
-
const db =
|
|
108
|
+
await doInAppContext(appId, async () => {
|
|
109
|
+
const db = getAppDB()
|
|
109
110
|
const metadataId = generateUserMetadataID(userId)
|
|
110
111
|
let metadata
|
|
111
112
|
try {
|
|
@@ -126,8 +127,8 @@ export async function syncUser(ctx: BBContext) {
|
|
|
126
127
|
? combineMetadataAndUser(user, metadata)
|
|
127
128
|
: {
|
|
128
129
|
...metadata,
|
|
129
|
-
status:
|
|
130
|
-
metadata:
|
|
130
|
+
status: UserStatus.INACTIVE,
|
|
131
|
+
metadata: BUILTIN_ROLE_IDS.PUBLIC,
|
|
131
132
|
}
|
|
132
133
|
// if its null then there was no updates required
|
|
133
134
|
if (combined) {
|
|
@@ -141,9 +142,10 @@ export async function syncUser(ctx: BBContext) {
|
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
|
|
144
|
-
|
|
145
|
+
exports.fetchMetadata = async function (ctx) {
|
|
146
|
+
const database = getAppDB()
|
|
145
147
|
const global = await getGlobalUsers()
|
|
146
|
-
const metadata = await rawMetadata()
|
|
148
|
+
const metadata = await rawMetadata(database)
|
|
147
149
|
const users = []
|
|
148
150
|
for (let user of global) {
|
|
149
151
|
// find the metadata that matches up to the global ID
|
|
@@ -160,18 +162,18 @@ export async function fetchMetadata(ctx: BBContext) {
|
|
|
160
162
|
ctx.body = users
|
|
161
163
|
}
|
|
162
164
|
|
|
163
|
-
|
|
165
|
+
exports.updateSelfMetadata = async function (ctx) {
|
|
164
166
|
// overwrite the ID with current users
|
|
165
|
-
ctx.request.body._id = ctx.user
|
|
167
|
+
ctx.request.body._id = ctx.user._id
|
|
166
168
|
// make sure no stale rev
|
|
167
169
|
delete ctx.request.body._rev
|
|
168
170
|
// make sure no csrf token
|
|
169
171
|
delete ctx.request.body.csrfToken
|
|
170
|
-
await updateMetadata(ctx)
|
|
172
|
+
await exports.updateMetadata(ctx)
|
|
171
173
|
}
|
|
172
174
|
|
|
173
|
-
|
|
174
|
-
const db =
|
|
175
|
+
exports.updateMetadata = async function (ctx) {
|
|
176
|
+
const db = getAppDB()
|
|
175
177
|
const user = ctx.request.body
|
|
176
178
|
// this isn't applicable to the user
|
|
177
179
|
delete user.roles
|
|
@@ -182,8 +184,8 @@ export async function updateMetadata(ctx: BBContext) {
|
|
|
182
184
|
ctx.body = await db.put(metadata)
|
|
183
185
|
}
|
|
184
186
|
|
|
185
|
-
|
|
186
|
-
const db =
|
|
187
|
+
exports.destroyMetadata = async function (ctx) {
|
|
188
|
+
const db = getAppDB()
|
|
187
189
|
try {
|
|
188
190
|
const dbUser = await db.get(ctx.params.id)
|
|
189
191
|
await db.remove(dbUser._id, dbUser._rev)
|
|
@@ -195,18 +197,18 @@ export async function destroyMetadata(ctx: BBContext) {
|
|
|
195
197
|
}
|
|
196
198
|
}
|
|
197
199
|
|
|
198
|
-
|
|
200
|
+
exports.findMetadata = async function (ctx) {
|
|
199
201
|
ctx.body = await getFullUser(ctx, ctx.params.id)
|
|
200
202
|
}
|
|
201
203
|
|
|
202
|
-
|
|
203
|
-
const userId = ctx.user
|
|
204
|
+
exports.setFlag = async function (ctx) {
|
|
205
|
+
const userId = ctx.user._id
|
|
204
206
|
const { flag, value } = ctx.request.body
|
|
205
207
|
if (!flag) {
|
|
206
208
|
ctx.throw(400, "Must supply a 'flag' field in request body.")
|
|
207
209
|
}
|
|
208
|
-
const flagDocId = generateUserFlagID(userId
|
|
209
|
-
const db =
|
|
210
|
+
const flagDocId = generateUserFlagID(userId)
|
|
211
|
+
const db = getAppDB()
|
|
210
212
|
let doc
|
|
211
213
|
try {
|
|
212
214
|
doc = await db.get(flagDocId)
|
|
@@ -218,10 +220,10 @@ export async function setFlag(ctx: BBContext) {
|
|
|
218
220
|
ctx.body = { message: "Flag set successfully" }
|
|
219
221
|
}
|
|
220
222
|
|
|
221
|
-
|
|
222
|
-
const userId = ctx.user
|
|
223
|
-
const docId = generateUserFlagID(userId
|
|
224
|
-
const db =
|
|
223
|
+
exports.getFlags = async function (ctx) {
|
|
224
|
+
const userId = ctx.user._id
|
|
225
|
+
const docId = generateUserFlagID(userId)
|
|
226
|
+
const db = getAppDB()
|
|
225
227
|
let doc
|
|
226
228
|
try {
|
|
227
229
|
doc = await db.get(docId)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export function csv(headers: string[], rows: Row[]) {
|
|
1
|
+
exports.csv = function (headers, rows) {
|
|
4
2
|
let csv = headers.map(key => `"${key}"`).join(",")
|
|
5
3
|
|
|
6
4
|
for (let row of rows) {
|
|
@@ -18,11 +16,11 @@ export function csv(headers: string[], rows: Row[]) {
|
|
|
18
16
|
return csv
|
|
19
17
|
}
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
exports.json = function (headers, rows) {
|
|
22
20
|
return JSON.stringify(rows, undefined, 2)
|
|
23
21
|
}
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
exports.ExportFormats = {
|
|
26
24
|
CSV: "csv",
|
|
27
25
|
JSON: "json",
|
|
28
26
|
}
|
|
@@ -1,29 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
BBContext,
|
|
12
|
-
Row,
|
|
13
|
-
Table,
|
|
14
|
-
TableExportFormat,
|
|
15
|
-
TableSchema,
|
|
16
|
-
View,
|
|
17
|
-
} from "@budibase/types"
|
|
18
|
-
|
|
1
|
+
const viewTemplate = require("./viewBuilder")
|
|
2
|
+
const { apiFileReturn } = require("../../../utilities/fileSystem")
|
|
3
|
+
const exporters = require("./exporters")
|
|
4
|
+
const { saveView, getView, getViews, deleteView } = require("./utils")
|
|
5
|
+
const { fetchView } = require("../row")
|
|
6
|
+
const { FieldTypes } = require("../../../constants")
|
|
7
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
8
|
+
const { events } = require("@budibase/backend-core")
|
|
9
|
+
const { DocumentType } = require("../../../db/utils")
|
|
19
10
|
const { cloneDeep, isEqual } = require("lodash")
|
|
11
|
+
const sdk = require("../../../sdk")
|
|
20
12
|
|
|
21
|
-
|
|
13
|
+
exports.fetch = async ctx => {
|
|
22
14
|
ctx.body = await getViews()
|
|
23
15
|
}
|
|
24
16
|
|
|
25
|
-
|
|
26
|
-
const db =
|
|
17
|
+
exports.save = async ctx => {
|
|
18
|
+
const db = getAppDB()
|
|
27
19
|
const { originalName, ...viewToSave } = ctx.request.body
|
|
28
20
|
const view = viewTemplate(viewToSave)
|
|
29
21
|
const viewName = viewToSave.name
|
|
@@ -55,7 +47,7 @@ export async function save(ctx: BBContext) {
|
|
|
55
47
|
}
|
|
56
48
|
}
|
|
57
49
|
|
|
58
|
-
|
|
50
|
+
const calculationEvents = async (existingView, newView) => {
|
|
59
51
|
const existingCalculation = existingView && existingView.calculation
|
|
60
52
|
const newCalculation = newView && newView.calculation
|
|
61
53
|
|
|
@@ -76,7 +68,7 @@ export async function calculationEvents(existingView: View, newView: View) {
|
|
|
76
68
|
}
|
|
77
69
|
}
|
|
78
70
|
|
|
79
|
-
|
|
71
|
+
const filterEvents = async (existingView, newView) => {
|
|
80
72
|
const hasExistingFilters = !!(
|
|
81
73
|
existingView &&
|
|
82
74
|
existingView.filters &&
|
|
@@ -101,7 +93,7 @@ export async function filterEvents(existingView: View, newView: View) {
|
|
|
101
93
|
}
|
|
102
94
|
}
|
|
103
95
|
|
|
104
|
-
async
|
|
96
|
+
const handleViewEvents = async (existingView, newView) => {
|
|
105
97
|
if (!existingView) {
|
|
106
98
|
await events.view.created(newView)
|
|
107
99
|
} else {
|
|
@@ -111,8 +103,8 @@ async function handleViewEvents(existingView: View, newView: View) {
|
|
|
111
103
|
await filterEvents(existingView, newView)
|
|
112
104
|
}
|
|
113
105
|
|
|
114
|
-
|
|
115
|
-
const db =
|
|
106
|
+
exports.destroy = async ctx => {
|
|
107
|
+
const db = getAppDB()
|
|
116
108
|
const viewName = decodeURI(ctx.params.viewName)
|
|
117
109
|
const view = await deleteView(viewName)
|
|
118
110
|
const table = await db.get(view.meta.tableId)
|
|
@@ -123,11 +115,11 @@ export async function destroy(ctx: BBContext) {
|
|
|
123
115
|
ctx.body = view
|
|
124
116
|
}
|
|
125
117
|
|
|
126
|
-
|
|
127
|
-
const viewName = decodeURI(ctx.query.view
|
|
118
|
+
exports.exportView = async ctx => {
|
|
119
|
+
const viewName = decodeURI(ctx.query.view)
|
|
128
120
|
const view = await getView(viewName)
|
|
129
121
|
|
|
130
|
-
const format = ctx.query.format
|
|
122
|
+
const format = ctx.query.format
|
|
131
123
|
if (!format || !Object.values(exporters.ExportFormats).includes(format)) {
|
|
132
124
|
ctx.throw(400, "Format must be specified, either csv or json")
|
|
133
125
|
}
|
|
@@ -138,7 +130,6 @@ export async function exportView(ctx: BBContext) {
|
|
|
138
130
|
ctx.query = {
|
|
139
131
|
group: view.meta.groupBy,
|
|
140
132
|
calculation: view.meta.calculation,
|
|
141
|
-
// @ts-ignore
|
|
142
133
|
stats: !!view.meta.field,
|
|
143
134
|
field: view.meta.field,
|
|
144
135
|
}
|
|
@@ -149,11 +140,11 @@ export async function exportView(ctx: BBContext) {
|
|
|
149
140
|
}
|
|
150
141
|
|
|
151
142
|
await fetchView(ctx)
|
|
152
|
-
let rows = ctx.body
|
|
143
|
+
let rows = ctx.body
|
|
153
144
|
|
|
154
|
-
let schema
|
|
145
|
+
let schema = view && view.meta && view.meta.schema
|
|
155
146
|
const tableId = ctx.params.tableId || view.meta.tableId
|
|
156
|
-
const table
|
|
147
|
+
const table = await sdk.tables.getTable(tableId)
|
|
157
148
|
if (!schema) {
|
|
158
149
|
schema = table.schema
|
|
159
150
|
}
|
|
@@ -184,15 +175,15 @@ export async function exportView(ctx: BBContext) {
|
|
|
184
175
|
|
|
185
176
|
// Export part
|
|
186
177
|
let headers = Object.keys(schema)
|
|
187
|
-
const exporter = format
|
|
178
|
+
const exporter = exporters[format]
|
|
188
179
|
const filename = `${viewName}.${format}`
|
|
189
180
|
// send down the file
|
|
190
181
|
ctx.attachment(filename)
|
|
191
182
|
ctx.body = apiFileReturn(exporter(headers, rows))
|
|
192
183
|
|
|
193
184
|
if (viewName.startsWith(DocumentType.TABLE)) {
|
|
194
|
-
await events.table.exported(table, format
|
|
185
|
+
await events.table.exported(table, format)
|
|
195
186
|
} else {
|
|
196
|
-
await events.view.exported(table, format
|
|
187
|
+
await events.view.exported(table, format)
|
|
197
188
|
}
|
|
198
189
|
}
|