@budibase/server 2.2.26 → 2.2.27-alpha.1
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/Dockerfile +1 -1
- package/__mocks__/aws-sdk.ts +20 -1
- package/__mocks__/node-fetch.ts +80 -0
- package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
- package/builder/assets/bg.29e85dd5.png +0 -0
- package/builder/assets/bulgaria.bd68393d.png +0 -0
- package/builder/assets/covanta.72c46c1e.png +0 -0
- package/builder/assets/index.3dd03883.css +6 -0
- package/builder/assets/index.77ae0e4d.js +1802 -0
- package/builder/assets/schnellecke.cf1837a8.png +0 -0
- package/builder/index.html +3 -3
- package/coverage/clover.xml +12565 -8055
- package/coverage/coverage-final.json +365 -276
- package/coverage/lcov-report/index.html +721 -466
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/application.ts.html +364 -268
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +12 -12
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +61 -61
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +89 -77
- package/coverage/lcov-report/src/api/controllers/component.ts.html +12 -12
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +122 -98
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +21 -18
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +21 -21
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +142 -196
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +33 -33
- package/coverage/lcov-report/src/api/controllers/index.html +125 -125
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/layout.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/metadata.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/migrations.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/permission.ts.html +35 -35
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +20 -20
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +62 -62
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +150 -135
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +56 -56
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +75 -24
- package/coverage/lcov-report/src/api/controllers/public/index.html +58 -58
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +25 -25
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +15 -15
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +21 -21
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +21 -21
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +27 -27
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +8 -8
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +14 -14
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +12 -12
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +23 -23
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +16 -16
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +20 -20
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/curl.spec.js.html +391 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js.html +796 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js.html +805 -0
- package/coverage/lcov-report/src/api/controllers/query/import/tests/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/query/import/tests/index.spec.js.html +568 -0
- package/coverage/lcov-report/src/api/controllers/query/index.html +20 -20
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +131 -107
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/role.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/routing.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +56 -41
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +87 -57
- package/coverage/lcov-report/src/api/controllers/row/index.html +66 -66
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +26 -26
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +171 -96
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +146 -146
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +30 -21
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +143 -26
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +31 -31
- package/coverage/lcov-report/src/api/controllers/script.ts.html +19 -19
- package/coverage/lcov-report/src/api/controllers/static/index.html +18 -18
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +56 -71
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +61 -61
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +56 -50
- package/coverage/lcov-report/src/api/controllers/table/index.html +51 -51
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +157 -70
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +68 -71
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +109 -112
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +21 -21
- package/coverage/lcov-report/src/api/controllers/user.ts.html +161 -137
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +64 -19
- package/coverage/lcov-report/src/api/controllers/view/index.html +38 -38
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +97 -133
- package/coverage/lcov-report/src/api/controllers/view/tests/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/view/tests/viewBuilder.spec.js.html +277 -0
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +31 -31
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +37 -37
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +78 -72
- package/coverage/lcov-report/src/api/index.html +15 -15
- package/coverage/lcov-report/src/api/index.ts.html +40 -40
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/application.ts.html +46 -13
- package/coverage/lcov-report/src/api/routes/auth.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/automation.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/backup.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/cloud.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/component.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -14
- package/coverage/lcov-report/src/api/routes/dev.ts.html +17 -17
- package/coverage/lcov-report/src/api/routes/index.html +68 -68
- package/coverage/lcov-report/src/api/routes/index.ts.html +49 -40
- package/coverage/lcov-report/src/api/routes/integration.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/layout.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/metadata.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/permission.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +147 -15
- package/coverage/lcov-report/src/api/routes/public/index.html +27 -27
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +60 -60
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +28 -16
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/public/tests/compare.spec.js.html +583 -0
- package/coverage/lcov-report/src/api/routes/public/tests/index.html +41 -11
- package/coverage/lcov-report/src/api/routes/public/tests/users.spec.js.html +199 -0
- package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +5 -5
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +21 -21
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +5 -5
- package/coverage/lcov-report/src/api/routes/query.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/role.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/routing.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/row.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/screen.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/script.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/static.ts.html +18 -18
- package/coverage/lcov-report/src/api/routes/table.ts.html +29 -98
- package/coverage/lcov-report/src/api/routes/templates.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/tests/analytics.spec.js.html +271 -0
- package/coverage/lcov-report/src/api/routes/tests/apikeys.spec.js.html +259 -0
- package/coverage/lcov-report/src/api/routes/tests/application.spec.ts.html +1066 -0
- package/coverage/lcov-report/src/api/routes/tests/auth.spec.js.html +154 -0
- package/coverage/lcov-report/src/api/routes/tests/automation.spec.js.html +1123 -0
- package/coverage/lcov-report/src/api/routes/tests/backup.spec.ts.html +223 -0
- package/coverage/lcov-report/src/api/routes/tests/cloud.seq.spec.ts.html +262 -0
- package/coverage/lcov-report/src/api/routes/tests/component.spec.js.html +178 -0
- package/coverage/lcov-report/src/api/routes/tests/datasource.spec.ts.html +799 -0
- package/coverage/lcov-report/src/api/routes/tests/dev.spec.js.html +202 -0
- package/coverage/lcov-report/src/api/routes/tests/index.html +521 -0
- package/coverage/lcov-report/src/api/routes/tests/integration.spec.js.html +238 -0
- package/coverage/lcov-report/src/api/routes/tests/internalSearch.spec.js.html +670 -0
- package/coverage/lcov-report/src/api/routes/tests/layout.spec.js.html +259 -0
- package/coverage/lcov-report/src/api/routes/tests/metadata.spec.js.html +280 -0
- package/coverage/lcov-report/src/api/routes/tests/misc.spec.js.html +358 -0
- package/coverage/lcov-report/src/api/routes/tests/permissions.spec.js.html +484 -0
- package/coverage/lcov-report/src/api/routes/tests/plugin.spec.ts.html +622 -0
- package/coverage/lcov-report/src/api/routes/tests/query.seq.spec.js.html +1696 -0
- package/coverage/lcov-report/src/api/routes/tests/role.spec.js.html +478 -0
- package/coverage/lcov-report/src/api/routes/tests/routing.spec.js.html +430 -0
- package/coverage/lcov-report/src/api/routes/tests/row.spec.js.html +1804 -0
- package/coverage/lcov-report/src/api/routes/tests/screen.spec.js.html +391 -0
- package/coverage/lcov-report/src/api/routes/tests/static.spec.js.html +541 -0
- package/coverage/lcov-report/src/api/routes/tests/table.spec.js.html +991 -0
- package/coverage/lcov-report/src/api/routes/tests/templates.spec.js.html +154 -0
- package/coverage/lcov-report/src/api/routes/tests/user.spec.js.html +688 -0
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +116 -47
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +27 -27
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +42 -36
- package/coverage/lcov-report/src/api/routes/tests/view.spec.js.html +1342 -0
- package/coverage/lcov-report/src/api/routes/tests/webhook.spec.js.html +484 -0
- package/coverage/lcov-report/src/api/routes/user.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/utils/index.html +3 -3
- package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +44 -44
- package/coverage/lcov-report/src/api/routes/view.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +13 -13
- package/coverage/lcov-report/src/app.ts.html +57 -48
- package/coverage/lcov-report/src/automations/actions.ts.html +31 -31
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +127 -55
- package/coverage/lcov-report/src/automations/bullboard.ts.html +19 -19
- package/coverage/lcov-report/src/automations/index.html +58 -58
- package/coverage/lcov-report/src/automations/index.ts.html +23 -23
- package/coverage/lcov-report/src/automations/logging/index.html +3 -3
- package/coverage/lcov-report/src/automations/logging/index.ts.html +15 -15
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/delay.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +12 -12
- package/coverage/lcov-report/src/automations/steps/index.html +129 -129
- package/coverage/lcov-report/src/automations/steps/integromat.ts.html +10 -10
- package/coverage/lcov-report/src/automations/steps/loop.ts.html +5 -5
- package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +19 -19
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +43 -43
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +19 -19
- package/coverage/lcov-report/src/automations/steps/slack.ts.html +10 -10
- package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +12 -12
- package/coverage/lcov-report/src/automations/steps/utils.ts.html +18 -18
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
- package/coverage/lcov-report/src/automations/tests/automation.spec.js.html +337 -0
- package/coverage/lcov-report/src/automations/tests/bash.spec.js.html +187 -0
- package/coverage/lcov-report/src/automations/tests/createRow.spec.ts.html +223 -0
- package/coverage/lcov-report/src/automations/tests/delay.spec.js.html +133 -0
- package/coverage/lcov-report/src/automations/tests/deleteRow.spec.ts.html +250 -0
- package/coverage/lcov-report/src/automations/tests/discord.spec.js.html +166 -0
- package/coverage/lcov-report/src/automations/tests/executeQuery.spec.js.html +229 -0
- package/coverage/lcov-report/src/automations/tests/executeScript.spec.js.html +229 -0
- package/coverage/lcov-report/src/automations/tests/filter.spec.js.html +232 -0
- package/coverage/lcov-report/src/automations/tests/index.html +341 -0
- package/coverage/lcov-report/src/automations/tests/loop.spec.ts.html +220 -0
- package/coverage/lcov-report/src/automations/tests/outgoingWebhook.spec.js.html +202 -0
- package/coverage/lcov-report/src/automations/tests/queryRows.spec.js.html +436 -0
- package/coverage/lcov-report/src/automations/tests/sendSmtpEmail.spec.js.html +298 -0
- package/coverage/lcov-report/src/automations/tests/serverLog.spec.js.html +151 -0
- package/coverage/lcov-report/src/automations/tests/updateRow.spec.js.html +217 -0
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +15 -15
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +32 -32
- package/coverage/lcov-report/src/automations/tests/zapier.spec.js.html +166 -0
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/index.html +17 -17
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +10 -10
- package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggers.ts.html +61 -46
- package/coverage/lcov-report/src/automations/unitTests/automationUtils.spec.ts.html +280 -0
- package/coverage/lcov-report/src/automations/unitTests/index.html +116 -0
- package/coverage/lcov-report/src/automations/utils.ts.html +84 -84
- package/coverage/lcov-report/src/constants/index.html +19 -19
- package/coverage/lcov-report/src/constants/index.ts.html +103 -103
- package/coverage/lcov-report/src/constants/layouts.ts.html +9 -9
- package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -45
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +8 -8
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +8 -8
- package/coverage/lcov-report/src/db/defaultData/index.html +43 -43
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +8 -8
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +8 -8
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +26 -26
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +13 -13
- package/coverage/lcov-report/src/db/index.html +43 -43
- package/coverage/lcov-report/src/db/index.ts.html +20 -20
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +38 -38
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +7 -7
- package/coverage/lcov-report/src/db/linkedRows/index.html +37 -37
- package/coverage/lcov-report/src/db/linkedRows/index.ts.html +40 -40
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +27 -27
- package/coverage/lcov-report/src/db/newid.ts.html +5 -5
- package/coverage/lcov-report/src/db/tests/index.html +131 -0
- package/coverage/lcov-report/src/db/tests/linkController.spec.js.html +793 -0
- package/coverage/lcov-report/src/db/tests/linkTests.spec.js.html +277 -0
- package/coverage/lcov-report/src/db/utils.ts.html +92 -92
- package/coverage/lcov-report/src/definitions/automations.ts.html +9 -6
- package/coverage/lcov-report/src/definitions/index.html +5 -20
- package/coverage/lcov-report/src/environment.ts.html +49 -37
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +14 -14
- package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +8 -8
- package/coverage/lcov-report/src/events/index.html +20 -20
- package/coverage/lcov-report/src/events/index.ts.html +7 -7
- package/coverage/lcov-report/src/events/utils.ts.html +11 -11
- package/coverage/lcov-report/src/index.html +48 -48
- package/coverage/lcov-report/src/index.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/airtable.ts.html +10 -10
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +9 -9
- package/coverage/lcov-report/src/integrations/base/index.html +29 -29
- package/coverage/lcov-report/src/integrations/base/query.ts.html +15 -9
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +38 -38
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +23 -23
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +109 -31
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +17 -17
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +27 -15
- package/coverage/lcov-report/src/integrations/firebase.ts.html +12 -12
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +42 -42
- package/coverage/lcov-report/src/integrations/index.html +130 -130
- package/coverage/lcov-report/src/integrations/index.ts.html +50 -62
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +31 -31
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +421 -289
- package/coverage/lcov-report/src/integrations/mysql.ts.html +28 -28
- package/coverage/lcov-report/src/integrations/oracle.ts.html +31 -31
- package/coverage/lcov-report/src/integrations/postgres.ts.html +54 -54
- package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +24 -159
- package/coverage/lcov-report/src/integrations/redis.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/rest.ts.html +43 -52
- package/coverage/lcov-report/src/integrations/s3.ts.html +17 -17
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +15 -15
- package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/src/integrations/tests/airtable.spec.ts.html +310 -0
- package/coverage/lcov-report/src/integrations/tests/arangodb.spec.ts.html +199 -0
- package/coverage/lcov-report/src/integrations/tests/couchdb.spec.ts.html +349 -0
- package/coverage/lcov-report/src/integrations/tests/dynamodb.spec.ts.html +550 -0
- package/coverage/lcov-report/src/integrations/tests/elasticsearch.spec.ts.html +331 -0
- package/coverage/lcov-report/src/integrations/tests/firebase.spec.ts.html +376 -0
- package/coverage/lcov-report/src/integrations/tests/index.html +230 -5
- package/coverage/lcov-report/src/integrations/tests/microsoftSqlServer.spec.ts.html +253 -0
- package/coverage/lcov-report/src/integrations/tests/mongo.spec.ts.html +1087 -0
- package/coverage/lcov-report/src/integrations/tests/mysql.spec.ts.html +484 -0
- package/coverage/lcov-report/src/integrations/tests/oracle.spec.ts.html +373 -0
- package/coverage/lcov-report/src/integrations/tests/postgres.spec.ts.html +328 -0
- package/coverage/lcov-report/src/integrations/tests/redis.spec.ts.html +337 -0
- package/coverage/lcov-report/src/integrations/tests/rest.spec.ts.html +1870 -0
- package/coverage/lcov-report/src/integrations/tests/s3.spec.ts.html +421 -0
- package/coverage/lcov-report/src/integrations/tests/sql.spec.ts.html +1753 -0
- package/coverage/lcov-report/src/integrations/utils.ts.html +54 -54
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +11 -11
- package/coverage/lcov-report/src/middleware/authorized.ts.html +49 -37
- package/coverage/lcov-report/src/middleware/builder.ts.html +26 -26
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +60 -57
- package/coverage/lcov-report/src/middleware/index.html +44 -44
- package/coverage/lcov-report/src/middleware/joi-validator.ts.html +10 -10
- package/coverage/lcov-report/src/middleware/publicApi.ts.html +9 -9
- package/coverage/lcov-report/src/middleware/resourceId.ts.html +23 -23
- package/coverage/lcov-report/src/middleware/selfhost.ts.html +2 -2
- package/coverage/lcov-report/src/middleware/tests/authorized.spec.js.html +574 -0
- package/coverage/lcov-report/src/middleware/tests/currentapp.spec.js.html +814 -0
- package/coverage/lcov-report/src/middleware/tests/index.html +161 -0
- package/coverage/lcov-report/src/middleware/tests/resourceId.spec.js.html +397 -0
- package/coverage/lcov-report/src/middleware/tests/selfhost.spec.js.html +214 -0
- package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +31 -31
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +13 -13
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +21 -21
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +17 -14
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +19 -19
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +9 -9
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +13 -13
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +23 -23
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +26 -26
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +14 -14
- package/coverage/lcov-report/src/migrations/functions/index.html +18 -18
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +11 -11
- package/coverage/lcov-report/src/migrations/functions/tests/appUrls.spec.js.html +163 -0
- package/coverage/lcov-report/src/migrations/functions/tests/index.html +161 -0
- package/coverage/lcov-report/src/migrations/functions/tests/syncQuotas.spec.js.html +163 -0
- package/coverage/lcov-report/src/migrations/functions/tests/tableSettings.spec.ts.html +517 -0
- package/coverage/lcov-report/src/migrations/functions/tests/userEmailViewCasing.spec.js.html +190 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +11 -11
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +3 -3
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/index.html +131 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts.html +190 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts.html +244 -0
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/index.html +15 -15
- package/coverage/lcov-report/src/migrations/index.ts.html +43 -43
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/tests/index.html +26 -11
- package/coverage/lcov-report/src/migrations/tests/index.spec.ts.html +535 -0
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/applications/index.html +20 -20
- package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +6 -6
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +15 -15
- package/coverage/lcov-report/src/sdk/app/automations/index.html +7 -7
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +14 -14
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +30 -30
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +45 -57
- package/coverage/lcov-report/src/sdk/app/backups/index.html +42 -42
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +7 -7
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
- package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
- package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
- package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
- package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
- package/coverage/lcov-report/src/{utilities/statusCodes.ts.html → sdk/app/queries/index.ts.html} +22 -28
- package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
- package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +8 -8
- package/coverage/lcov-report/src/sdk/app/rows/index.html +8 -8
- package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +6 -6
- package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/tables/index.html +15 -15
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +30 -21
- package/coverage/lcov-report/src/sdk/index.html +7 -7
- package/coverage/lcov-report/src/sdk/index.ts.html +24 -12
- package/coverage/lcov-report/src/sdk/tests/attachments.spec.ts.html +313 -0
- package/coverage/lcov-report/src/sdk/tests/index.html +116 -0
- package/coverage/lcov-report/src/sdk/users/index.html +10 -10
- package/coverage/lcov-report/src/sdk/users/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +35 -35
- package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
- package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
- package/coverage/lcov-report/src/startup.ts.html +48 -63
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +421 -187
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +20 -20
- package/coverage/lcov-report/src/tests/utilities/index.html +35 -35
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +2 -2
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +236 -47
- package/coverage/lcov-report/src/threads/automation.ts.html +212 -251
- package/coverage/lcov-report/src/threads/index.html +46 -46
- package/coverage/lcov-report/src/threads/index.ts.html +39 -39
- package/coverage/lcov-report/src/threads/query.ts.html +140 -101
- package/coverage/lcov-report/src/threads/utils.ts.html +29 -29
- package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +5 -5
- package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
- package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +20 -20
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +601 -0
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +88 -28
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +20 -1049
- package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +277 -0
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +9 -9
- package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
- package/coverage/lcov-report/src/utilities/global.ts.html +60 -60
- package/coverage/lcov-report/src/utilities/index.html +102 -117
- package/coverage/lcov-report/src/utilities/index.ts.html +47 -179
- package/coverage/lcov-report/src/utilities/redis.ts.html +38 -38
- package/coverage/lcov-report/src/utilities/{plugins.ts.html → retry.ts.html} +31 -43
- package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +34 -34
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +72 -45
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +9 -9
- package/coverage/lcov-report/src/utilities/rowProcessor/tests/index.html +116 -0
- package/coverage/lcov-report/src/utilities/rowProcessor/tests/utils.spec.ts.html +256 -0
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +52 -52
- package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +174 -234
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +33 -33
- package/coverage/lcov-report/src/utilities/security.ts.html +30 -30
- package/coverage/lcov-report/src/utilities/usageQuota/index.html +9 -9
- package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +37 -37
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +92 -65
- package/coverage/lcov-report/src/watch.ts.html +20 -20
- package/coverage/lcov-report/src/websocket.ts.html +15 -15
- package/coverage/lcov.info +24966 -17056
- package/dist/api/controllers/application.js +120 -109
- package/dist/api/controllers/cloud.js +6 -2
- package/dist/api/controllers/datasource.js +24 -15
- package/dist/api/controllers/deploy/index.js +43 -60
- package/dist/api/controllers/plugin/index.js +6 -6
- package/dist/api/controllers/public/applications.js +22 -1
- package/dist/api/controllers/query/index.js +23 -13
- package/dist/api/controllers/row/ExternalRequest.js +12 -4
- package/dist/api/controllers/row/external.js +20 -13
- package/dist/api/controllers/row/internal.js +52 -27
- package/dist/api/controllers/row/staticFormula.js +1 -1
- package/dist/api/controllers/row/utils.js +35 -3
- package/dist/api/controllers/static/index.js +47 -47
- package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
- package/dist/api/controllers/table/external.js +16 -35
- package/dist/api/controllers/table/index.js +44 -15
- package/dist/api/controllers/table/internal.js +6 -7
- package/dist/api/controllers/table/utils.js +9 -9
- package/dist/api/controllers/user.js +14 -6
- package/dist/api/controllers/view/exporters.js +22 -6
- package/dist/api/controllers/view/index.js +23 -58
- package/dist/api/controllers/view/viewBuilder.js +15 -2
- package/dist/api/controllers/webhook.js +45 -43
- package/dist/api/routes/analytics.js +2 -1
- package/dist/api/routes/apikeys.js +2 -1
- package/dist/api/routes/application.js +5 -1
- package/dist/api/routes/auth.js +2 -1
- package/dist/api/routes/automation.js +2 -1
- package/dist/api/routes/backup.js +2 -1
- package/dist/api/routes/cloud.js +2 -1
- package/dist/api/routes/component.js +2 -1
- package/dist/api/routes/datasource.js +2 -1
- package/dist/api/routes/deploy.js +3 -3
- package/dist/api/routes/dev.js +2 -1
- package/dist/api/routes/index.js +2 -0
- package/dist/api/routes/integration.js +2 -1
- package/dist/api/routes/layout.js +2 -1
- package/dist/api/routes/metadata.js +2 -1
- package/dist/api/routes/migrations.js +2 -1
- package/dist/api/routes/permission.js +2 -1
- package/dist/api/routes/public/applications.js +37 -0
- package/dist/api/routes/public/middleware/mapper.js +3 -0
- package/dist/api/routes/query.js +2 -1
- package/dist/api/routes/role.js +2 -1
- package/dist/api/routes/routing.js +2 -1
- package/dist/api/routes/row.js +2 -2
- package/dist/api/routes/screen.js +2 -1
- package/dist/api/routes/script.js +2 -1
- package/dist/api/routes/static.js +6 -5
- package/dist/api/routes/table.js +8 -38
- package/dist/api/routes/templates.js +2 -1
- package/dist/api/routes/user.js +2 -1
- package/dist/api/routes/utils/validators.js +1 -1
- package/dist/api/routes/view.js +2 -1
- package/dist/api/routes/webhook.js +2 -1
- package/dist/app.js +10 -8
- package/dist/automations/automationUtils.js +26 -1
- package/dist/automations/logging/index.js +5 -25
- package/dist/automations/triggers.js +1 -0
- package/dist/db/index.js +5 -2
- package/dist/db/linkedRows/LinkController.js +2 -1
- package/dist/db/linkedRows/LinkDocument.js +2 -1
- package/dist/db/newid.js +4 -2
- package/dist/definitions/datasource.js +0 -6
- package/dist/environment.js +7 -2
- package/dist/events/AutomationEmitter.js +2 -1
- package/dist/events/BudibaseEmitter.js +2 -1
- package/dist/events/index.js +2 -1
- package/dist/index.js +2 -2
- package/dist/integrations/base/query.js +7 -2
- package/dist/integrations/base/sqlTable.js +14 -14
- package/dist/integrations/couchdb.js +34 -8
- package/dist/integrations/dynamodb.js +8 -5
- package/dist/integrations/elasticsearch.js +7 -3
- package/dist/integrations/googlesheets.js +1 -1
- package/dist/integrations/index.js +6 -7
- package/dist/integrations/mongodb.js +311 -271
- package/dist/integrations/mysql.js +2 -2
- package/dist/integrations/queries/sql.js +73 -100
- package/dist/integrations/rest.js +16 -18
- package/dist/middleware/authorized.js +2 -1
- package/dist/middleware/builder.js +4 -2
- package/dist/middleware/currentapp.js +6 -3
- package/dist/middleware/publicApi.js +4 -2
- package/dist/middleware/selfhost.js +4 -1
- package/dist/migrations/functions/backfill/global/configs.js +4 -4
- package/dist/package.json +14 -8
- package/dist/sdk/app/backups/imports.js +2 -6
- package/dist/sdk/app/datasources/datasources.js +147 -0
- package/dist/sdk/app/datasources/index.js +27 -0
- package/dist/sdk/app/queries/index.js +27 -0
- package/dist/sdk/app/queries/queries.js +60 -0
- package/dist/sdk/app/tables/index.js +6 -2
- package/dist/sdk/index.js +4 -0
- package/dist/sdk/utils/index.js +29 -0
- package/dist/startup.js +17 -17
- package/dist/threads/automation.js +22 -35
- package/dist/threads/index.js +4 -4
- package/dist/threads/query.js +27 -13
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/app.js +97 -0
- package/dist/utilities/fileSystem/clientLibrary.js +3 -3
- package/dist/utilities/fileSystem/filesystem.js +184 -0
- package/dist/utilities/fileSystem/index.js +18 -342
- package/dist/utilities/fileSystem/plugin.js +66 -0
- package/dist/utilities/fileSystem/template.js +47 -0
- package/dist/utilities/index.js +1 -44
- package/dist/utilities/retry.js +30 -0
- package/dist/utilities/rowProcessor/index.js +12 -4
- package/dist/utilities/schema.js +108 -0
- package/dist/utilities/scriptRunner.js +2 -1
- package/dist/utilities/statusCodes.js +2 -1
- package/dist/utilities/workerRequests.js +2 -0
- package/dist/watch.js +2 -25
- package/jest-testcontainers-config.js +8 -0
- package/jest.config.ts +33 -13
- package/package.json +15 -9
- package/scripts/dev/manage.js +3 -2
- package/specs/openapi.json +84 -0
- package/specs/openapi.yaml +53 -0
- package/specs/resources/application.js +19 -0
- package/src/api/controllers/application.ts +142 -110
- package/src/api/controllers/auth.ts +2 -2
- package/src/api/controllers/cloud.ts +10 -6
- package/src/api/controllers/datasource.ts +33 -25
- package/src/api/controllers/deploy/Deployment.ts +1 -0
- package/src/api/controllers/deploy/index.ts +40 -58
- package/src/api/controllers/plugin/index.ts +14 -9
- package/src/api/controllers/public/applications.ts +17 -0
- package/src/api/controllers/query/import/tests/index.spec.js +1 -1
- package/src/api/controllers/query/index.ts +49 -41
- package/src/api/controllers/row/ExternalRequest.ts +8 -3
- package/src/api/controllers/row/external.ts +24 -14
- package/src/api/controllers/row/internal.ts +66 -41
- package/src/api/controllers/row/staticFormula.ts +5 -2
- package/src/api/controllers/row/utils.ts +42 -3
- package/src/api/controllers/static/index.ts +22 -27
- package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
- package/src/api/controllers/table/external.ts +18 -16
- package/src/api/controllers/table/index.ts +46 -17
- package/src/api/controllers/table/internal.ts +6 -7
- package/src/api/controllers/table/utils.ts +12 -13
- package/src/api/controllers/user.ts +21 -13
- package/src/api/controllers/view/exporters.ts +20 -5
- package/src/api/controllers/view/index.ts +30 -42
- package/src/api/controllers/view/tests/viewBuilder.spec.js +1 -1
- package/src/api/controllers/view/viewBuilder.ts +1 -1
- package/src/api/controllers/webhook.ts +48 -46
- package/src/api/routes/analytics.ts +1 -1
- package/src/api/routes/apikeys.ts +1 -1
- package/src/api/routes/application.ts +12 -1
- package/src/api/routes/auth.ts +1 -1
- package/src/api/routes/automation.ts +1 -1
- package/src/api/routes/backup.ts +1 -1
- package/src/api/routes/cloud.ts +1 -1
- package/src/api/routes/component.ts +1 -1
- package/src/api/routes/datasource.ts +1 -1
- package/src/api/routes/deploy.ts +1 -2
- package/src/api/routes/dev.ts +1 -1
- package/src/api/routes/index.ts +6 -3
- package/src/api/routes/integration.ts +1 -1
- package/src/api/routes/layout.ts +1 -1
- package/src/api/routes/metadata.ts +1 -1
- package/src/api/routes/migrations.ts +1 -1
- package/src/api/routes/permission.ts +1 -1
- package/src/api/routes/public/applications.ts +44 -0
- package/src/api/routes/public/middleware/mapper.ts +4 -0
- package/src/api/routes/query.ts +1 -1
- package/src/api/routes/role.ts +1 -1
- package/src/api/routes/routing.ts +1 -1
- package/src/api/routes/row.ts +1 -1
- package/src/api/routes/screen.ts +1 -1
- package/src/api/routes/script.ts +1 -1
- package/src/api/routes/static.ts +2 -2
- package/src/api/routes/table.ts +16 -39
- package/src/api/routes/templates.ts +1 -1
- package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap} +1 -1
- package/src/api/routes/tests/analytics.spec.js +4 -1
- package/src/api/routes/tests/apikeys.spec.js +1 -1
- package/src/api/routes/tests/{application.spec.js → application.spec.ts} +112 -22
- package/src/api/routes/tests/auth.spec.js +2 -2
- package/src/api/routes/tests/automation.spec.js +5 -1
- package/src/api/routes/tests/{backup.spec.js → backup.spec.ts} +17 -15
- package/src/api/routes/tests/cloud.seq.spec.ts +59 -0
- package/src/api/routes/tests/component.spec.js +1 -1
- package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
- package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
- package/src/api/routes/tests/data/export-test.tar.gz +0 -0
- package/src/api/routes/tests/{datasource.spec.js → datasource.spec.ts} +76 -17
- package/src/api/routes/tests/dev.spec.js +1 -1
- package/src/api/routes/tests/integration.spec.js +1 -1
- package/src/api/routes/tests/layout.spec.js +1 -1
- package/src/api/routes/tests/metadata.spec.js +1 -1
- package/src/api/routes/tests/misc.spec.js +5 -11
- package/src/api/routes/tests/permissions.spec.js +5 -2
- package/src/api/routes/tests/plugin.spec.ts +179 -0
- package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +21 -1
- package/src/api/routes/tests/role.spec.js +6 -1
- package/src/api/routes/tests/routing.spec.js +2 -3
- package/src/api/routes/tests/row.spec.js +15 -5
- package/src/api/routes/tests/screen.spec.js +1 -1
- package/src/api/routes/tests/static.spec.js +4 -18
- package/src/api/routes/tests/table.spec.js +17 -33
- package/src/api/routes/tests/templates.spec.js +1 -1
- package/src/api/routes/tests/user.spec.js +108 -0
- package/src/api/routes/tests/utilities/TestFunctions.ts +26 -3
- package/src/api/routes/tests/utilities/index.ts +7 -5
- package/src/api/routes/tests/view.spec.js +4 -1
- package/src/api/routes/tests/webhook.spec.js +12 -3
- package/src/api/routes/user.ts +1 -1
- package/src/api/routes/utils/validators.ts +1 -1
- package/src/api/routes/view.ts +1 -1
- package/src/api/routes/webhook.ts +1 -1
- package/src/app.ts +7 -4
- package/src/automations/automationUtils.ts +24 -0
- package/src/automations/logging/index.ts +1 -1
- package/src/automations/tests/automation.spec.js +4 -4
- package/src/automations/tests/bash.spec.js +34 -0
- package/src/automations/tests/discord.spec.js +27 -0
- package/src/automations/tests/executeQuery.spec.js +48 -0
- package/src/automations/tests/executeScript.spec.js +48 -0
- package/src/automations/tests/loop.spec.ts +45 -0
- package/src/automations/tests/outgoingWebhook.spec.js +1 -1
- package/src/automations/tests/sendSmtpEmail.spec.js +71 -0
- package/src/automations/tests/serverLog.spec.js +22 -0
- package/src/automations/tests/updateRow.spec.js +1 -1
- package/src/automations/tests/utilities/index.ts +2 -2
- package/src/automations/tests/zapier.spec.js +27 -0
- package/src/automations/triggers.ts +6 -1
- package/src/automations/unitTests/automationUtils.spec.ts +65 -0
- package/src/db/index.ts +1 -1
- package/src/db/linkedRows/LinkController.ts +1 -1
- package/src/db/linkedRows/LinkDocument.ts +1 -1
- package/src/db/newid.ts +1 -1
- package/src/db/tests/linkController.spec.js +5 -2
- package/src/db/tests/linkTests.spec.js +1 -1
- package/src/definitions/automations.ts +1 -0
- package/src/definitions/datasource.ts +0 -41
- package/src/definitions/openapi.ts +10 -0
- package/src/environment.ts +6 -2
- package/src/events/AutomationEmitter.ts +1 -1
- package/src/events/BudibaseEmitter.ts +1 -1
- package/src/events/index.ts +1 -1
- package/src/index.ts +1 -1
- package/src/integrations/base/query.ts +3 -1
- package/src/integrations/base/sqlTable.ts +1 -1
- package/src/integrations/couchdb.ts +40 -14
- package/src/integrations/dynamodb.ts +3 -3
- package/src/integrations/elasticsearch.ts +8 -4
- package/src/integrations/googlesheets.ts +1 -1
- package/src/integrations/index.ts +5 -9
- package/src/integrations/mongodb.ts +315 -271
- package/src/integrations/mysql.ts +1 -1
- package/src/integrations/queries/sql.ts +5 -50
- package/src/integrations/rest.ts +16 -19
- package/src/integrations/tests/couchdb.spec.ts +33 -21
- package/src/integrations/tests/rest.spec.ts +19 -15
- package/src/middleware/authorized.ts +5 -1
- package/src/middleware/builder.ts +1 -1
- package/src/middleware/currentapp.ts +4 -3
- package/src/middleware/publicApi.ts +1 -1
- package/src/middleware/selfhost.ts +1 -1
- package/src/middleware/tests/authorized.spec.js +1 -1
- package/src/middleware/tests/currentapp.spec.js +1 -1
- package/src/middleware/tests/selfhost.spec.js +1 -1
- package/src/migrations/functions/backfill/global/configs.ts +5 -4
- package/src/migrations/functions/tests/appUrls.spec.js +1 -1
- package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
- package/src/migrations/tests/index.spec.ts +3 -2
- package/src/sdk/app/backups/imports.ts +2 -6
- package/src/sdk/app/datasources/datasources.ts +136 -0
- package/src/sdk/app/datasources/index.ts +5 -0
- package/src/sdk/app/queries/index.ts +5 -0
- package/src/sdk/app/queries/queries.ts +50 -0
- package/src/sdk/app/tables/index.ts +6 -3
- package/src/sdk/index.ts +4 -0
- package/src/sdk/tests/attachments.spec.ts +1 -4
- package/src/sdk/utils/index.ts +16 -0
- package/src/startup.ts +3 -8
- package/src/tests/jestEnv.ts +9 -0
- package/src/tests/jestSetup.ts +8 -20
- package/src/tests/utilities/TestConfiguration.ts +127 -49
- package/src/tests/utilities/structures.ts +65 -2
- package/src/threads/automation.ts +22 -35
- package/src/threads/definitions.ts +3 -0
- package/src/threads/index.ts +1 -1
- package/src/threads/query.ts +28 -15
- package/src/utilities/fileSystem/app.ts +86 -0
- package/src/utilities/fileSystem/clientLibrary.ts +1 -1
- package/src/utilities/fileSystem/filesystem.ts +172 -0
- package/src/utilities/fileSystem/index.ts +5 -348
- package/src/utilities/fileSystem/plugin.ts +64 -0
- package/src/utilities/fileSystem/template.ts +36 -0
- package/src/utilities/index.ts +1 -45
- package/src/utilities/retry.ts +18 -0
- package/src/utilities/rowProcessor/index.ts +17 -8
- package/src/utilities/rowProcessor/tests/utils.spec.ts +57 -0
- package/src/utilities/schema.ts +141 -0
- package/src/utilities/scriptRunner.ts +1 -1
- package/src/utilities/statusCodes.ts +1 -1
- package/src/utilities/workerRequests.ts +10 -1
- package/src/watch.ts +1 -1
- package/tsconfig.build.json +2 -0
- package/tsconfig.json +2 -1
- package/builder/assets/index.96b9ffed.css +0 -6
- package/builder/assets/index.fae8f9eb.js +0 -1024
- package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
- package/dist/api/routes/tests/utilities/index.js +0 -131
- package/dist/automations/tests/utilities/index.js +0 -81
- package/dist/tests/utilities/TestConfiguration.js +0 -562
- package/dist/tests/utilities/controllers.js +0 -40
- package/dist/tests/utilities/structures.js +0 -168
- package/dist/utilities/csvParser.js +0 -152
- package/dist/utilities/plugins.js +0 -26
- package/src/api/routes/tests/deployment.spec.ts +0 -25
- package/src/automations/unitTests/automationUtils.spec.js +0 -17
- package/src/utilities/csvParser.ts +0 -161
- package/src/utilities/plugins.ts +0 -22
- package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
- package/src/utilities/tests/csvParser.spec.js +0 -112
|
@@ -12,9 +12,11 @@ import { getIntegration } from "../../integrations"
|
|
|
12
12
|
import { getDatasourceAndQuery } from "./row/utils"
|
|
13
13
|
import { invalidateDynamicVariables } from "../../threads/utils"
|
|
14
14
|
import { db as dbCore, context, events } from "@budibase/backend-core"
|
|
15
|
-
import {
|
|
15
|
+
import { UserCtx, Datasource, Row } from "@budibase/types"
|
|
16
|
+
import sdk from "../../sdk"
|
|
17
|
+
import { mergeConfigs } from "../../sdk/app/datasources/datasources"
|
|
16
18
|
|
|
17
|
-
export async function fetch(ctx:
|
|
19
|
+
export async function fetch(ctx: UserCtx) {
|
|
18
20
|
// Get internal tables
|
|
19
21
|
const db = context.getAppDB()
|
|
20
22
|
const internalTables = await db.allDocs(
|
|
@@ -43,25 +45,23 @@ export async function fetch(ctx: BBContext) {
|
|
|
43
45
|
)
|
|
44
46
|
).rows.map(row => row.doc)
|
|
45
47
|
|
|
46
|
-
const allDatasources =
|
|
48
|
+
const allDatasources: Datasource[] = await sdk.datasources.removeSecrets([
|
|
49
|
+
bbInternalDb,
|
|
50
|
+
...datasources,
|
|
51
|
+
])
|
|
47
52
|
|
|
48
53
|
for (let datasource of allDatasources) {
|
|
49
|
-
if (datasource.config && datasource.config.auth) {
|
|
50
|
-
// strip secrets from response so they don't show in the network request
|
|
51
|
-
delete datasource.config.auth
|
|
52
|
-
}
|
|
53
|
-
|
|
54
54
|
if (datasource.type === dbCore.BUDIBASE_DATASOURCE_TYPE) {
|
|
55
|
-
datasource.entities = internal[datasource._id]
|
|
55
|
+
datasource.entities = internal[datasource._id!]
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
ctx.body = [bbInternalDb, ...datasources]
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
export async function buildSchemaFromDb(ctx:
|
|
62
|
+
export async function buildSchemaFromDb(ctx: UserCtx) {
|
|
63
63
|
const db = context.getAppDB()
|
|
64
|
-
const datasource = await
|
|
64
|
+
const datasource = await sdk.datasources.get(ctx.params.datasourceId)
|
|
65
65
|
const tablesFilter = ctx.request.body.tablesFilter
|
|
66
66
|
|
|
67
67
|
let { tables, error } = await buildSchemaHelper(datasource)
|
|
@@ -146,11 +146,11 @@ async function invalidateVariables(
|
|
|
146
146
|
await invalidateDynamicVariables(toInvalidate)
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
export async function update(ctx:
|
|
149
|
+
export async function update(ctx: UserCtx) {
|
|
150
150
|
const db = context.getAppDB()
|
|
151
151
|
const datasourceId = ctx.params.datasourceId
|
|
152
|
-
let datasource = await
|
|
153
|
-
const auth = datasource.config
|
|
152
|
+
let datasource = await sdk.datasources.get(datasourceId)
|
|
153
|
+
const auth = datasource.config?.auth
|
|
154
154
|
await invalidateVariables(datasource, ctx.request.body)
|
|
155
155
|
|
|
156
156
|
const isBudibaseSource = datasource.type === dbCore.BUDIBASE_DATASOURCE_TYPE
|
|
@@ -159,10 +159,13 @@ export async function update(ctx: BBContext) {
|
|
|
159
159
|
? { name: ctx.request.body?.name }
|
|
160
160
|
: ctx.request.body
|
|
161
161
|
|
|
162
|
-
datasource = {
|
|
162
|
+
datasource = {
|
|
163
|
+
...datasource,
|
|
164
|
+
...sdk.datasources.mergeConfigs(dataSourceBody, datasource),
|
|
165
|
+
}
|
|
163
166
|
if (auth && !ctx.request.body.auth) {
|
|
164
167
|
// don't strip auth config from DB
|
|
165
|
-
datasource.config
|
|
168
|
+
datasource.config!.auth = auth
|
|
166
169
|
}
|
|
167
170
|
|
|
168
171
|
const response = await db.put(datasource)
|
|
@@ -179,10 +182,12 @@ export async function update(ctx: BBContext) {
|
|
|
179
182
|
|
|
180
183
|
ctx.status = 200
|
|
181
184
|
ctx.message = "Datasource saved successfully."
|
|
182
|
-
ctx.body = {
|
|
185
|
+
ctx.body = {
|
|
186
|
+
datasource: await sdk.datasources.removeSecretSingle(datasource),
|
|
187
|
+
}
|
|
183
188
|
}
|
|
184
189
|
|
|
185
|
-
export async function save(ctx:
|
|
190
|
+
export async function save(ctx: UserCtx) {
|
|
186
191
|
const db = context.getAppDB()
|
|
187
192
|
const plus = ctx.request.body.datasource.plus
|
|
188
193
|
const fetchSchema = ctx.request.body.fetchSchema
|
|
@@ -213,7 +218,9 @@ export async function save(ctx: BBContext) {
|
|
|
213
218
|
}
|
|
214
219
|
}
|
|
215
220
|
|
|
216
|
-
const response: any = {
|
|
221
|
+
const response: any = {
|
|
222
|
+
datasource: await sdk.datasources.removeSecretSingle(datasource),
|
|
223
|
+
}
|
|
217
224
|
if (schemaError) {
|
|
218
225
|
response.error = schemaError
|
|
219
226
|
}
|
|
@@ -251,11 +258,11 @@ async function destroyInternalTablesBySourceId(datasourceId: string) {
|
|
|
251
258
|
}
|
|
252
259
|
}
|
|
253
260
|
|
|
254
|
-
export async function destroy(ctx:
|
|
261
|
+
export async function destroy(ctx: UserCtx) {
|
|
255
262
|
const db = context.getAppDB()
|
|
256
263
|
const datasourceId = ctx.params.datasourceId
|
|
257
264
|
|
|
258
|
-
const datasource = await
|
|
265
|
+
const datasource = await sdk.datasources.get(datasourceId)
|
|
259
266
|
// Delete all queries for the datasource
|
|
260
267
|
|
|
261
268
|
if (datasource.type === dbCore.BUDIBASE_DATASOURCE_TYPE) {
|
|
@@ -279,13 +286,14 @@ export async function destroy(ctx: BBContext) {
|
|
|
279
286
|
ctx.status = 200
|
|
280
287
|
}
|
|
281
288
|
|
|
282
|
-
export async function find(ctx:
|
|
289
|
+
export async function find(ctx: UserCtx) {
|
|
283
290
|
const database = context.getAppDB()
|
|
284
|
-
|
|
291
|
+
const datasource = await database.get(ctx.params.datasourceId)
|
|
292
|
+
ctx.body = await sdk.datasources.removeSecretSingle(datasource)
|
|
285
293
|
}
|
|
286
294
|
|
|
287
295
|
// dynamic query functionality
|
|
288
|
-
export async function query(ctx:
|
|
296
|
+
export async function query(ctx: UserCtx) {
|
|
289
297
|
const queryJson = ctx.request.body
|
|
290
298
|
try {
|
|
291
299
|
ctx.body = await getDatasourceAndQuery(queryJson)
|
|
@@ -313,7 +321,7 @@ function updateError(error: any, newError: any, tables: string[]) {
|
|
|
313
321
|
|
|
314
322
|
async function buildSchemaHelper(datasource: Datasource) {
|
|
315
323
|
const Connector = await getIntegration(datasource.source)
|
|
316
|
-
|
|
324
|
+
datasource = await sdk.datasources.enrich(datasource)
|
|
317
325
|
// Connect to the DB and build the schema
|
|
318
326
|
const connector = new Connector(datasource.config)
|
|
319
327
|
await connector.buildSchema(datasource._id, datasource.entities)
|
|
@@ -94,7 +94,44 @@ async function initDeployedApp(prodAppId: any) {
|
|
|
94
94
|
})
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
async function
|
|
97
|
+
export async function fetchDeployments(ctx: any) {
|
|
98
|
+
try {
|
|
99
|
+
const db = context.getAppDB()
|
|
100
|
+
const deploymentDoc = await db.get(DocumentType.DEPLOYMENTS)
|
|
101
|
+
const { updated, deployments } = await checkAllDeployments(deploymentDoc)
|
|
102
|
+
if (updated) {
|
|
103
|
+
await db.put(deployments)
|
|
104
|
+
}
|
|
105
|
+
ctx.body = Object.values(deployments.history).reverse()
|
|
106
|
+
} catch (err) {
|
|
107
|
+
ctx.body = []
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export async function deploymentProgress(ctx: any) {
|
|
112
|
+
try {
|
|
113
|
+
const db = context.getAppDB()
|
|
114
|
+
const deploymentDoc = await db.get(DocumentType.DEPLOYMENTS)
|
|
115
|
+
ctx.body = deploymentDoc[ctx.params.deploymentId]
|
|
116
|
+
} catch (err) {
|
|
117
|
+
ctx.throw(
|
|
118
|
+
500,
|
|
119
|
+
`Error fetching data for deployment ${ctx.params.deploymentId}`
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export const publishApp = async function (ctx: any) {
|
|
125
|
+
let deployment = new Deployment()
|
|
126
|
+
console.log("Deployment object created")
|
|
127
|
+
deployment.setStatus(DeploymentStatus.PENDING)
|
|
128
|
+
console.log("Deployment object set to pending")
|
|
129
|
+
deployment = await storeDeploymentHistory(deployment)
|
|
130
|
+
console.log("Stored deployment history")
|
|
131
|
+
|
|
132
|
+
console.log("Deploying app...")
|
|
133
|
+
|
|
134
|
+
let app
|
|
98
135
|
let replication
|
|
99
136
|
try {
|
|
100
137
|
const appId = context.getAppId()!
|
|
@@ -108,7 +145,7 @@ async function deployApp(deployment: any, userId: string) {
|
|
|
108
145
|
productionAppId,
|
|
109
146
|
AppBackupTrigger.PUBLISH,
|
|
110
147
|
{
|
|
111
|
-
createdBy:
|
|
148
|
+
createdBy: ctx.user._id,
|
|
112
149
|
}
|
|
113
150
|
)
|
|
114
151
|
}
|
|
@@ -147,7 +184,7 @@ async function deployApp(deployment: any, userId: string) {
|
|
|
147
184
|
console.log("Deployed app initialised, setting deployment to successful")
|
|
148
185
|
deployment.setStatus(DeploymentStatus.SUCCESS)
|
|
149
186
|
await storeDeploymentHistory(deployment)
|
|
150
|
-
|
|
187
|
+
app = appDoc
|
|
151
188
|
} catch (err: any) {
|
|
152
189
|
deployment.setStatus(DeploymentStatus.FAILURE, err.message)
|
|
153
190
|
await storeDeploymentHistory(deployment)
|
|
@@ -160,62 +197,7 @@ async function deployApp(deployment: any, userId: string) {
|
|
|
160
197
|
await replication.close()
|
|
161
198
|
}
|
|
162
199
|
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
export async function fetchDeployments(ctx: any) {
|
|
166
|
-
try {
|
|
167
|
-
const db = context.getAppDB()
|
|
168
|
-
const deploymentDoc = await db.get(DocumentType.DEPLOYMENTS)
|
|
169
|
-
const { updated, deployments } = await checkAllDeployments(deploymentDoc)
|
|
170
|
-
if (updated) {
|
|
171
|
-
await db.put(deployments)
|
|
172
|
-
}
|
|
173
|
-
ctx.body = Object.values(deployments.history).reverse()
|
|
174
|
-
} catch (err) {
|
|
175
|
-
ctx.body = []
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
export async function deploymentProgress(ctx: any) {
|
|
180
|
-
try {
|
|
181
|
-
const db = context.getAppDB()
|
|
182
|
-
const deploymentDoc = await db.get(DocumentType.DEPLOYMENTS)
|
|
183
|
-
ctx.body = deploymentDoc[ctx.params.deploymentId]
|
|
184
|
-
} catch (err) {
|
|
185
|
-
ctx.throw(
|
|
186
|
-
500,
|
|
187
|
-
`Error fetching data for deployment ${ctx.params.deploymentId}`
|
|
188
|
-
)
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
const isFirstDeploy = async () => {
|
|
193
|
-
try {
|
|
194
|
-
const db = context.getProdAppDB()
|
|
195
|
-
await db.get(DocumentType.APP_METADATA)
|
|
196
|
-
} catch (e: any) {
|
|
197
|
-
if (e.status === 404) {
|
|
198
|
-
return true
|
|
199
|
-
}
|
|
200
|
-
throw e
|
|
201
|
-
}
|
|
202
|
-
return false
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
const _deployApp = async function (ctx: any) {
|
|
206
|
-
let deployment = new Deployment()
|
|
207
|
-
console.log("Deployment object created")
|
|
208
|
-
deployment.setStatus(DeploymentStatus.PENDING)
|
|
209
|
-
console.log("Deployment object set to pending")
|
|
210
|
-
deployment = await storeDeploymentHistory(deployment)
|
|
211
|
-
console.log("Stored deployment history")
|
|
212
|
-
|
|
213
|
-
console.log("Deploying app...")
|
|
214
|
-
|
|
215
|
-
let app = await deployApp(deployment, ctx.user._id)
|
|
216
200
|
|
|
217
201
|
await events.app.published(app)
|
|
218
202
|
ctx.body = deployment
|
|
219
203
|
}
|
|
220
|
-
|
|
221
|
-
export { _deployApp as deployApp }
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { npmUpload, urlUpload, githubUpload, fileUpload } from "./uploaders"
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
plugins as pluginCore,
|
|
4
|
+
db as dbCore,
|
|
5
|
+
tenancy,
|
|
6
|
+
objectStore,
|
|
7
|
+
} from "@budibase/backend-core"
|
|
8
|
+
import { PluginType, FileType, PluginSource, Plugin } from "@budibase/types"
|
|
4
9
|
import env from "../../../environment"
|
|
5
10
|
import { ClientAppSocket } from "../../../websocket"
|
|
6
|
-
import {
|
|
7
|
-
import { plugins } from "@budibase/pro"
|
|
11
|
+
import { sdk as pro } from "@budibase/pro"
|
|
8
12
|
|
|
9
13
|
export async function getPlugins(type?: PluginType) {
|
|
10
14
|
const db = tenancy.getGlobalDB()
|
|
@@ -13,9 +17,10 @@ export async function getPlugins(type?: PluginType) {
|
|
|
13
17
|
include_docs: true,
|
|
14
18
|
})
|
|
15
19
|
)
|
|
16
|
-
|
|
20
|
+
let plugins = response.rows.map((row: any) => row.doc) as Plugin[]
|
|
21
|
+
plugins = objectStore.enrichPluginURLs(plugins)
|
|
17
22
|
if (type) {
|
|
18
|
-
return plugins.filter((plugin:
|
|
23
|
+
return plugins.filter((plugin: Plugin) => plugin.schema?.type === type)
|
|
19
24
|
} else {
|
|
20
25
|
return plugins
|
|
21
26
|
}
|
|
@@ -84,7 +89,7 @@ export async function create(ctx: any) {
|
|
|
84
89
|
)
|
|
85
90
|
}
|
|
86
91
|
|
|
87
|
-
const doc = await plugins.storePlugin(metadata, directory, source)
|
|
92
|
+
const doc = await pro.plugins.storePlugin(metadata, directory, source)
|
|
88
93
|
|
|
89
94
|
ClientAppSocket.emit("plugins-update", { name, hash: doc.hash })
|
|
90
95
|
ctx.body = {
|
|
@@ -107,7 +112,7 @@ export async function destroy(ctx: any) {
|
|
|
107
112
|
const { pluginId } = ctx.params
|
|
108
113
|
|
|
109
114
|
try {
|
|
110
|
-
await plugins.deletePlugin(pluginId)
|
|
115
|
+
await pro.plugins.deletePlugin(pluginId)
|
|
111
116
|
|
|
112
117
|
ctx.body = { message: `Plugin ${ctx.params.pluginId} deleted.` }
|
|
113
118
|
} catch (err: any) {
|
|
@@ -127,7 +132,7 @@ export async function processUploadedPlugin(
|
|
|
127
132
|
throw new Error("Only component plugins are supported outside of self-host")
|
|
128
133
|
}
|
|
129
134
|
|
|
130
|
-
const doc = await plugins.storePlugin(metadata, directory, source)
|
|
135
|
+
const doc = await pro.plugins.storePlugin(metadata, directory, source)
|
|
131
136
|
ClientAppSocket.emit("plugin-update", { name: doc.name, hash: doc.hash })
|
|
132
137
|
return doc
|
|
133
138
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { db as dbCore, context } from "@budibase/backend-core"
|
|
2
2
|
import { search as stringSearch, addRev } from "./utils"
|
|
3
3
|
import * as controller from "../application"
|
|
4
|
+
import * as deployController from "../deploy"
|
|
4
5
|
import { Application } from "../../../definitions/common"
|
|
5
6
|
|
|
6
7
|
function fixAppID(app: Application, params: any) {
|
|
@@ -74,10 +75,26 @@ export async function destroy(ctx: any, next: any) {
|
|
|
74
75
|
})
|
|
75
76
|
}
|
|
76
77
|
|
|
78
|
+
export async function unpublish(ctx: any, next: any) {
|
|
79
|
+
await context.doInAppContext(ctx.params.appId, async () => {
|
|
80
|
+
await controller.unpublish(ctx)
|
|
81
|
+
await next()
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export async function publish(ctx: any, next: any) {
|
|
86
|
+
await context.doInAppContext(ctx.params.appId, async () => {
|
|
87
|
+
await deployController.publishApp(ctx)
|
|
88
|
+
await next()
|
|
89
|
+
})
|
|
90
|
+
}
|
|
91
|
+
|
|
77
92
|
export default {
|
|
78
93
|
create,
|
|
79
94
|
update,
|
|
80
95
|
read,
|
|
81
96
|
destroy,
|
|
82
97
|
search,
|
|
98
|
+
publish,
|
|
99
|
+
unpublish,
|
|
83
100
|
}
|
|
@@ -4,12 +4,14 @@ import { Thread, ThreadType } from "../../../threads"
|
|
|
4
4
|
import { save as saveDatasource } from "../datasource"
|
|
5
5
|
import { RestImporter } from "./import"
|
|
6
6
|
import { invalidateDynamicVariables } from "../../../threads/utils"
|
|
7
|
-
import
|
|
7
|
+
import env from "../../../environment"
|
|
8
8
|
import { quotas } from "@budibase/pro"
|
|
9
9
|
import { events, context, utils, constants } from "@budibase/backend-core"
|
|
10
|
+
import sdk from "../../../sdk"
|
|
11
|
+
import { QueryEvent } from "../../../threads/definitions"
|
|
10
12
|
|
|
11
13
|
const Runner = new Thread(ThreadType.QUERY, {
|
|
12
|
-
timeoutMs: QUERY_THREAD_TIMEOUT || 10000,
|
|
14
|
+
timeoutMs: env.QUERY_THREAD_TIMEOUT || 10000,
|
|
13
15
|
})
|
|
14
16
|
|
|
15
17
|
// simple function to append "readable" to all read queries
|
|
@@ -81,7 +83,7 @@ export async function save(ctx: any) {
|
|
|
81
83
|
const db = context.getAppDB()
|
|
82
84
|
const query = ctx.request.body
|
|
83
85
|
|
|
84
|
-
const datasource = await
|
|
86
|
+
const datasource = await sdk.datasources.get(query.datasourceId)
|
|
85
87
|
|
|
86
88
|
let eventFn
|
|
87
89
|
if (!query._id) {
|
|
@@ -126,9 +128,9 @@ function getAuthConfig(ctx: any) {
|
|
|
126
128
|
}
|
|
127
129
|
|
|
128
130
|
export async function preview(ctx: any) {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
const { datasource, envVars } = await sdk.datasources.getWithEnvVars(
|
|
132
|
+
ctx.request.body.datasourceId
|
|
133
|
+
)
|
|
132
134
|
const query = ctx.request.body
|
|
133
135
|
// preview may not have a queryId as it hasn't been saved, but if it does
|
|
134
136
|
// this stops dynamic variables from calling the same query
|
|
@@ -137,20 +139,22 @@ export async function preview(ctx: any) {
|
|
|
137
139
|
const authConfigCtx: any = getAuthConfig(ctx)
|
|
138
140
|
|
|
139
141
|
try {
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
},
|
|
153
|
-
}
|
|
142
|
+
const inputs: QueryEvent = {
|
|
143
|
+
appId: ctx.appId,
|
|
144
|
+
datasource,
|
|
145
|
+
queryVerb,
|
|
146
|
+
fields,
|
|
147
|
+
parameters,
|
|
148
|
+
transformer,
|
|
149
|
+
queryId,
|
|
150
|
+
// have to pass down to the thread runner - can't put into context now
|
|
151
|
+
environmentVariables: envVars,
|
|
152
|
+
ctx: {
|
|
153
|
+
user: ctx.user,
|
|
154
|
+
auth: { ...authConfigCtx },
|
|
155
|
+
},
|
|
156
|
+
}
|
|
157
|
+
const runFn = () => Runner.run(inputs)
|
|
154
158
|
|
|
155
159
|
const { rows, keys, info, extra } = await quotas.addQuery(runFn, {
|
|
156
160
|
datasourceId: datasource._id,
|
|
@@ -201,7 +205,9 @@ async function execute(
|
|
|
201
205
|
const db = context.getAppDB()
|
|
202
206
|
|
|
203
207
|
const query = await db.get(ctx.params.queryId)
|
|
204
|
-
const datasource = await
|
|
208
|
+
const { datasource, envVars } = await sdk.datasources.getWithEnvVars(
|
|
209
|
+
query.datasourceId
|
|
210
|
+
)
|
|
205
211
|
|
|
206
212
|
let authConfigCtx: any = {}
|
|
207
213
|
if (!opts.isAutomation) {
|
|
@@ -219,21 +225,23 @@ async function execute(
|
|
|
219
225
|
|
|
220
226
|
// call the relevant CRUD method on the integration class
|
|
221
227
|
try {
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
},
|
|
236
|
-
}
|
|
228
|
+
const inputs: QueryEvent = {
|
|
229
|
+
appId: ctx.appId,
|
|
230
|
+
datasource,
|
|
231
|
+
queryVerb: query.queryVerb,
|
|
232
|
+
fields: query.fields,
|
|
233
|
+
pagination: ctx.request.body.pagination,
|
|
234
|
+
parameters: enrichedParameters,
|
|
235
|
+
transformer: query.transformer,
|
|
236
|
+
queryId: ctx.params.queryId,
|
|
237
|
+
// have to pass down to the thread runner - can't put into context now
|
|
238
|
+
environmentVariables: envVars,
|
|
239
|
+
ctx: {
|
|
240
|
+
user: ctx.user,
|
|
241
|
+
auth: { ...authConfigCtx },
|
|
242
|
+
},
|
|
243
|
+
}
|
|
244
|
+
const runFn = () => Runner.run(inputs)
|
|
237
245
|
|
|
238
246
|
const { rows, pagination, extra } = await quotas.addQuery(runFn, {
|
|
239
247
|
datasourceId: datasource._id,
|
|
@@ -266,18 +274,18 @@ export async function executeV2(
|
|
|
266
274
|
const removeDynamicVariables = async (queryId: any) => {
|
|
267
275
|
const db = context.getAppDB()
|
|
268
276
|
const query = await db.get(queryId)
|
|
269
|
-
const datasource = await
|
|
270
|
-
const dynamicVariables = datasource.config
|
|
277
|
+
const datasource = await sdk.datasources.get(query.datasourceId)
|
|
278
|
+
const dynamicVariables = datasource.config?.dynamicVariables as any[]
|
|
271
279
|
|
|
272
280
|
if (dynamicVariables) {
|
|
273
281
|
// delete dynamic variables from the datasource
|
|
274
|
-
datasource.config
|
|
282
|
+
datasource.config!.dynamicVariables = dynamicVariables!.filter(
|
|
275
283
|
(dv: any) => dv.queryId !== queryId
|
|
276
284
|
)
|
|
277
285
|
await db.put(datasource)
|
|
278
286
|
|
|
279
287
|
// invalidate the deleted variables
|
|
280
|
-
const variablesToDelete = dynamicVariables
|
|
288
|
+
const variablesToDelete = dynamicVariables!.filter(
|
|
281
289
|
(dv: any) => dv.queryId === queryId
|
|
282
290
|
)
|
|
283
291
|
await invalidateDynamicVariables(variablesToDelete)
|
|
@@ -289,7 +297,7 @@ export async function destroy(ctx: any) {
|
|
|
289
297
|
const queryId = ctx.params.queryId
|
|
290
298
|
await removeDynamicVariables(queryId)
|
|
291
299
|
const query = await db.get(queryId)
|
|
292
|
-
const datasource = await
|
|
300
|
+
const datasource = await sdk.datasources.get(query.datasourceId)
|
|
293
301
|
await db.remove(ctx.params.queryId, ctx.params.revId)
|
|
294
302
|
ctx.message = `Query deleted.`
|
|
295
303
|
ctx.status = 200
|
|
@@ -21,11 +21,11 @@ import { getDatasourceAndQuery } from "./utils"
|
|
|
21
21
|
import { FieldTypes, RelationshipTypes } from "../../../constants"
|
|
22
22
|
import { breakExternalTableId, isSQL } from "../../../integrations/utils"
|
|
23
23
|
import { processObjectSync } from "@budibase/string-templates"
|
|
24
|
-
// @ts-ignore
|
|
25
24
|
import { cloneDeep } from "lodash/fp"
|
|
26
25
|
import { processFormulas, processDates } from "../../../utilities/rowProcessor"
|
|
27
26
|
import { context } from "@budibase/backend-core"
|
|
28
27
|
import { removeKeyNumbering } from "./utils"
|
|
28
|
+
import sdk from "../../../sdk"
|
|
29
29
|
|
|
30
30
|
export interface ManyRelationship {
|
|
31
31
|
tableId?: string
|
|
@@ -665,8 +665,7 @@ export class ExternalRequest {
|
|
|
665
665
|
throw "Unable to run without a table name"
|
|
666
666
|
}
|
|
667
667
|
if (!this.datasource) {
|
|
668
|
-
|
|
669
|
-
this.datasource = await db.get(datasourceId)
|
|
668
|
+
this.datasource = await sdk.datasources.get(datasourceId!)
|
|
670
669
|
if (!this.datasource || !this.datasource.entities) {
|
|
671
670
|
throw "No tables found, fetch tables before query."
|
|
672
671
|
}
|
|
@@ -682,6 +681,12 @@ export class ExternalRequest {
|
|
|
682
681
|
config,
|
|
683
682
|
table
|
|
684
683
|
)
|
|
684
|
+
//if the sort column is a formula, remove it
|
|
685
|
+
for (let sortColumn of Object.keys(sort || {})) {
|
|
686
|
+
if (table.schema[sortColumn]?.type === "formula") {
|
|
687
|
+
delete sort?.[sortColumn]
|
|
688
|
+
}
|
|
689
|
+
}
|
|
685
690
|
filters = buildFilters(id, filters || {}, table)
|
|
686
691
|
const relationships = this.buildRelationships(table)
|
|
687
692
|
// clean up row on ingress using schema
|
|
@@ -19,6 +19,9 @@ import {
|
|
|
19
19
|
Table,
|
|
20
20
|
Datasource,
|
|
21
21
|
} from "@budibase/types"
|
|
22
|
+
import sdk from "../../../sdk"
|
|
23
|
+
|
|
24
|
+
const { cleanExportRows } = require("./utils")
|
|
22
25
|
|
|
23
26
|
export async function handleRequest(
|
|
24
27
|
operation: Operation,
|
|
@@ -99,7 +102,7 @@ export async function destroy(ctx: BBContext) {
|
|
|
99
102
|
export async function bulkDestroy(ctx: BBContext) {
|
|
100
103
|
const { rows } = ctx.request.body
|
|
101
104
|
const tableId = ctx.params.tableId
|
|
102
|
-
let promises = []
|
|
105
|
+
let promises: Promise<Row[] | { row: Row; table: Table }>[] = []
|
|
103
106
|
for (let row of rows) {
|
|
104
107
|
promises.push(
|
|
105
108
|
handleRequest(Operation.DELETE, tableId, {
|
|
@@ -179,27 +182,30 @@ export async function validate(ctx: BBContext) {
|
|
|
179
182
|
|
|
180
183
|
export async function exportRows(ctx: BBContext) {
|
|
181
184
|
const { datasourceId } = breakExternalTableId(ctx.params.tableId)
|
|
182
|
-
const db = context.getAppDB()
|
|
183
185
|
const format = ctx.query.format
|
|
184
186
|
const { columns } = ctx.request.body
|
|
185
|
-
const datasource = await
|
|
187
|
+
const datasource = await sdk.datasources.get(datasourceId!)
|
|
186
188
|
if (!datasource || !datasource.entities) {
|
|
187
189
|
ctx.throw(400, "Datasource has not been configured for plus API.")
|
|
188
190
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
191
|
+
|
|
192
|
+
if (ctx.request.body.rows) {
|
|
193
|
+
ctx.request.body = {
|
|
194
|
+
query: {
|
|
195
|
+
oneOf: {
|
|
196
|
+
_id: ctx.request.body.rows.map(
|
|
197
|
+
(row: string) => JSON.parse(decodeURI(row))[0]
|
|
198
|
+
),
|
|
199
|
+
},
|
|
195
200
|
},
|
|
196
|
-
}
|
|
201
|
+
}
|
|
197
202
|
}
|
|
198
203
|
|
|
199
204
|
let result = await search(ctx)
|
|
200
205
|
let rows: Row[] = []
|
|
201
206
|
|
|
202
207
|
// Filter data to only specified columns if required
|
|
208
|
+
|
|
203
209
|
if (columns && columns.length) {
|
|
204
210
|
for (let i = 0; i < result.rows.length; i++) {
|
|
205
211
|
rows[i] = {}
|
|
@@ -211,22 +217,26 @@ export async function exportRows(ctx: BBContext) {
|
|
|
211
217
|
rows = result.rows
|
|
212
218
|
}
|
|
213
219
|
|
|
214
|
-
|
|
220
|
+
// @ts-ignore
|
|
221
|
+
let schema = datasource.entities[tableName].schema
|
|
222
|
+
let exportRows = cleanExportRows(rows, schema, format, columns)
|
|
223
|
+
|
|
224
|
+
let headers = Object.keys(schema)
|
|
225
|
+
|
|
215
226
|
// @ts-ignore
|
|
216
227
|
const exporter = exporters[format]
|
|
217
228
|
const filename = `export.${format}`
|
|
218
229
|
|
|
219
230
|
// send down the file
|
|
220
231
|
ctx.attachment(filename)
|
|
221
|
-
return apiFileReturn(exporter(headers,
|
|
232
|
+
return apiFileReturn(exporter(headers, exportRows))
|
|
222
233
|
}
|
|
223
234
|
|
|
224
235
|
export async function fetchEnrichedRow(ctx: BBContext) {
|
|
225
236
|
const id = ctx.params.rowId
|
|
226
237
|
const tableId = ctx.params.tableId
|
|
227
238
|
const { datasourceId, tableName } = breakExternalTableId(tableId)
|
|
228
|
-
const
|
|
229
|
-
const datasource: Datasource = await db.get(datasourceId)
|
|
239
|
+
const datasource: Datasource = await sdk.datasources.get(datasourceId!)
|
|
230
240
|
if (!tableName) {
|
|
231
241
|
ctx.throw(400, "Unable to find table.")
|
|
232
242
|
}
|