@budibase/server 2.2.12-alpha.43 → 2.2.12-alpha.45
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__/node-fetch.ts +2 -0
- package/builder/assets/{index.68e5f22f.js → index.353f1284.js} +392 -386
- package/builder/assets/{index.80229ab4.css → index.f9c1cb26.css} +2 -2
- package/builder/index.html +2 -2
- package/coverage/clover.xml +1872 -1762
- package/coverage/coverage-final.json +83 -78
- package/coverage/lcov-report/index.html +141 -96
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/application.ts.html +158 -137
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/component.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +99 -75
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +12 -12
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +69 -69
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/index.html +24 -24
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/layout.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/metadata.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/migrations.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/permission.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/index.html +7 -7
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +70 -46
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/role.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/routing.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +11 -14
- package/coverage/lcov-report/src/api/controllers/row/index.html +15 -15
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/script.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +21 -24
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +21 -15
- package/coverage/lcov-report/src/api/controllers/table/index.html +13 -13
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/user.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +57 -51
- package/coverage/lcov-report/src/api/index.html +1 -1
- package/coverage/lcov-report/src/api/index.ts.html +7 -7
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/application.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/auth.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/automation.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/backup.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/cloud.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/component.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/dev.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/index.html +5 -5
- package/coverage/lcov-report/src/api/routes/index.ts.html +10 -4
- package/coverage/lcov-report/src/api/routes/integration.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/layout.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/metadata.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/permission.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/query.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/role.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/routing.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/row.ts.html +2 -2
- package/coverage/lcov-report/src/api/routes/screen.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/static.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/table.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/templates.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/user.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/view.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +1 -1
- package/coverage/lcov-report/src/app.ts.html +1 -1
- package/coverage/lcov-report/src/automations/actions.ts.html +1 -1
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +1 -1
- package/coverage/lcov-report/src/automations/bullboard.ts.html +2 -2
- package/coverage/lcov-report/src/automations/index.html +15 -15
- package/coverage/lcov-report/src/automations/index.ts.html +1 -1
- package/coverage/lcov-report/src/automations/logging/index.html +1 -1
- package/coverage/lcov-report/src/automations/logging/index.ts.html +4 -4
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/delay.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/discord.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/index.html +1 -1
- package/coverage/lcov-report/src/automations/steps/integromat.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/loop.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/slack.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +1 -1
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +2 -2
- package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggers.ts.html +1 -1
- package/coverage/lcov-report/src/automations/utils.ts.html +21 -21
- package/coverage/lcov-report/src/constants/index.html +1 -1
- package/coverage/lcov-report/src/constants/index.ts.html +2 -2
- package/coverage/lcov-report/src/constants/layouts.ts.html +1 -1
- package/coverage/lcov-report/src/constants/screens.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +1 -1
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +1 -1
- package/coverage/lcov-report/src/db/index.html +1 -1
- package/coverage/lcov-report/src/db/index.ts.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/index.ts.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +1 -1
- package/coverage/lcov-report/src/db/newid.ts.html +3 -3
- package/coverage/lcov-report/src/db/utils.ts.html +17 -17
- package/coverage/lcov-report/src/definitions/automations.ts.html +5 -2
- package/coverage/lcov-report/src/definitions/datasource.ts.html +2 -2
- package/coverage/lcov-report/src/definitions/index.html +1 -1
- package/coverage/lcov-report/src/environment.ts.html +9 -9
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +1 -1
- package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +1 -1
- package/coverage/lcov-report/src/events/index.html +1 -1
- package/coverage/lcov-report/src/events/index.ts.html +1 -1
- package/coverage/lcov-report/src/events/utils.ts.html +1 -1
- package/coverage/lcov-report/src/index.html +7 -7
- package/coverage/lcov-report/src/index.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/base/index.html +11 -11
- package/coverage/lcov-report/src/integrations/base/query.ts.html +13 -7
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +12 -12
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +2 -2
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +9 -9
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
- package/coverage/lcov-report/src/integrations/index.html +1 -1
- package/coverage/lcov-report/src/integrations/index.ts.html +37 -37
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +11 -11
- package/coverage/lcov-report/src/integrations/mysql.ts.html +11 -11
- package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
- package/coverage/lcov-report/src/integrations/postgres.ts.html +10 -10
- package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +15 -150
- package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/rest.ts.html +24 -24
- package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/src/integrations/utils.ts.html +2 -2
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/authorized.ts.html +19 -19
- package/coverage/lcov-report/src/middleware/builder.ts.html +13 -13
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +33 -33
- package/coverage/lcov-report/src/middleware/index.html +1 -1
- package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/publicApi.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/utils.ts.html +3 -3
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/index.html +1 -1
- package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +18 -18
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +7 -7
- package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +379 -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/sdk/app/queries/index.ts.html +100 -0
- package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +235 -0
- package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/tables/index.html +11 -11
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +18 -9
- package/coverage/lcov-report/src/sdk/index.html +5 -5
- package/coverage/lcov-report/src/sdk/index.ts.html +17 -5
- package/coverage/lcov-report/src/sdk/users/index.html +1 -1
- package/coverage/lcov-report/src/sdk/users/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +20 -20
- 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 +1 -1
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +89 -80
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +4 -4
- package/coverage/lcov-report/src/tests/utilities/index.html +5 -5
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +4 -4
- package/coverage/lcov-report/src/threads/automation.ts.html +42 -24
- package/coverage/lcov-report/src/threads/index.html +28 -28
- package/coverage/lcov-report/src/threads/index.ts.html +1 -1
- package/coverage/lcov-report/src/threads/query.ts.html +68 -29
- package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +2 -2
- package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
- package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +8 -8
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +18 -12
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +17 -17
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +5 -8
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/global.ts.html +33 -33
- package/coverage/lcov-report/src/utilities/index.html +16 -16
- package/coverage/lcov-report/src/utilities/index.ts.html +12 -12
- package/coverage/lcov-report/src/utilities/redis.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/schema.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/security.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/users.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +1 -1
- package/coverage/lcov-report/src/watch.ts.html +1 -1
- package/coverage/lcov-report/src/websocket.ts.html +3 -3
- package/coverage/lcov.info +2986 -2796
- package/dist/api/controllers/application.js +73 -74
- package/dist/api/controllers/datasource.js +24 -15
- package/dist/api/controllers/query/index.js +18 -11
- package/dist/api/controllers/row/ExternalRequest.js +5 -3
- package/dist/api/controllers/row/external.js +6 -5
- package/dist/api/controllers/row/utils.js +5 -2
- package/dist/api/controllers/static/index.js +38 -38
- package/dist/api/controllers/table/external.js +8 -5
- package/dist/api/controllers/webhook.js +45 -43
- package/dist/api/routes/index.js +2 -0
- package/dist/api/routes/row.js +2 -2
- 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/dynamodb.js +8 -5
- package/dist/integrations/mysql.js +2 -2
- package/dist/integrations/queries/sql.js +73 -100
- package/dist/integrations/rest.js +14 -14
- package/dist/package.json +6 -6
- package/dist/sdk/app/datasources/datasources.js +113 -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/threads/automation.js +9 -2
- package/dist/threads/query.js +27 -13
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/filesystem.js +36 -34
- package/dist/utilities/fileSystem/plugin.js +17 -14
- package/dist/utilities/fileSystem/template.js +7 -4
- package/package.json +7 -7
- package/scripts/dev/manage.js +1 -0
- package/src/api/controllers/application.ts +81 -74
- package/src/api/controllers/datasource.ts +33 -25
- package/src/api/controllers/query/index.ts +47 -39
- package/src/api/controllers/row/ExternalRequest.ts +2 -2
- package/src/api/controllers/row/external.ts +3 -4
- package/src/api/controllers/row/utils.ts +2 -2
- package/src/api/controllers/static/index.ts +17 -18
- package/src/api/controllers/table/external.ts +8 -6
- package/src/api/controllers/webhook.ts +48 -46
- package/src/api/routes/index.ts +2 -0
- package/src/api/routes/row.ts +1 -1
- package/src/api/routes/tests/datasource.spec.ts +35 -1
- package/src/definitions/automations.ts +1 -0
- 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/dynamodb.ts +3 -3
- package/src/integrations/mysql.ts +1 -1
- package/src/integrations/queries/sql.ts +5 -50
- package/src/integrations/rest.ts +8 -8
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
- package/src/sdk/app/datasources/datasources.ts +98 -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/utils/index.ts +16 -0
- package/src/tests/utilities/TestConfiguration.ts +15 -12
- package/src/threads/automation.ts +9 -3
- package/src/threads/definitions.ts +3 -0
- package/src/threads/query.ts +28 -15
- package/src/utilities/fileSystem/filesystem.ts +6 -4
- package/src/utilities/fileSystem/plugin.ts +3 -4
- package/src/utilities/fileSystem/template.ts +2 -2
|
@@ -7,6 +7,8 @@ import { invalidateDynamicVariables } from "../../../threads/utils"
|
|
|
7
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
14
|
timeoutMs: env.QUERY_THREAD_TIMEOUT || 10000,
|
|
@@ -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
|
|
@@ -25,6 +25,7 @@ import { cloneDeep } from "lodash/fp"
|
|
|
25
25
|
import { processFormulas, processDates } from "../../../utilities/rowProcessor"
|
|
26
26
|
import { context } from "@budibase/backend-core"
|
|
27
27
|
import { removeKeyNumbering } from "./utils"
|
|
28
|
+
import sdk from "../../../sdk"
|
|
28
29
|
|
|
29
30
|
export interface ManyRelationship {
|
|
30
31
|
tableId?: string
|
|
@@ -664,8 +665,7 @@ export class ExternalRequest {
|
|
|
664
665
|
throw "Unable to run without a table name"
|
|
665
666
|
}
|
|
666
667
|
if (!this.datasource) {
|
|
667
|
-
|
|
668
|
-
this.datasource = await db.get(datasourceId)
|
|
668
|
+
this.datasource = await sdk.datasources.get(datasourceId!)
|
|
669
669
|
if (!this.datasource || !this.datasource.entities) {
|
|
670
670
|
throw "No tables found, fetch tables before query."
|
|
671
671
|
}
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
Table,
|
|
20
20
|
Datasource,
|
|
21
21
|
} from "@budibase/types"
|
|
22
|
+
import sdk from "../../../sdk"
|
|
22
23
|
|
|
23
24
|
export async function handleRequest(
|
|
24
25
|
operation: Operation,
|
|
@@ -179,10 +180,9 @@ export async function validate(ctx: BBContext) {
|
|
|
179
180
|
|
|
180
181
|
export async function exportRows(ctx: BBContext) {
|
|
181
182
|
const { datasourceId } = breakExternalTableId(ctx.params.tableId)
|
|
182
|
-
const db = context.getAppDB()
|
|
183
183
|
const format = ctx.query.format
|
|
184
184
|
const { columns } = ctx.request.body
|
|
185
|
-
const datasource = await
|
|
185
|
+
const datasource = await sdk.datasources.get(datasourceId!)
|
|
186
186
|
if (!datasource || !datasource.entities) {
|
|
187
187
|
ctx.throw(400, "Datasource has not been configured for plus API.")
|
|
188
188
|
}
|
|
@@ -225,8 +225,7 @@ export async function fetchEnrichedRow(ctx: BBContext) {
|
|
|
225
225
|
const id = ctx.params.rowId
|
|
226
226
|
const tableId = ctx.params.tableId
|
|
227
227
|
const { datasourceId, tableName } = breakExternalTableId(tableId)
|
|
228
|
-
const
|
|
229
|
-
const datasource: Datasource = await db.get(datasourceId)
|
|
228
|
+
const datasource: Datasource = await sdk.datasources.get(datasourceId!)
|
|
230
229
|
if (!tableName) {
|
|
231
230
|
ctx.throw(400, "Unable to find table.")
|
|
232
231
|
}
|
|
@@ -8,6 +8,7 @@ export { removeKeyNumbering } from "../../../integrations/base/utils"
|
|
|
8
8
|
const validateJs = require("validate.js")
|
|
9
9
|
const { cloneDeep } = require("lodash/fp")
|
|
10
10
|
import { Ctx } from "@budibase/types"
|
|
11
|
+
import sdk from "../../../sdk"
|
|
11
12
|
|
|
12
13
|
validateJs.extend(validateJs.validators.datetime, {
|
|
13
14
|
parse: function (value: string) {
|
|
@@ -21,8 +22,7 @@ validateJs.extend(validateJs.validators.datetime, {
|
|
|
21
22
|
|
|
22
23
|
export async function getDatasourceAndQuery(json: any) {
|
|
23
24
|
const datasourceId = json.endpoint.datasourceId
|
|
24
|
-
const
|
|
25
|
-
const datasource = await db.get(datasourceId)
|
|
25
|
+
const datasource = await sdk.datasources.get(datasourceId)
|
|
26
26
|
return makeExternalQuery(datasource, json)
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
require("svelte/register")
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
const { resolve, join } = require("../../../utilities/centralPath")
|
|
3
|
+
import { resolve, join } from "../../../utilities/centralPath"
|
|
5
4
|
const uuid = require("uuid")
|
|
6
5
|
import { ObjectStoreBuckets } from "../../../constants"
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import { processString } from "@budibase/string-templates"
|
|
7
|
+
import {
|
|
9
8
|
loadHandlebarsFile,
|
|
10
9
|
NODE_MODULES_PATH,
|
|
11
10
|
TOP_LEVEL_PATH,
|
|
12
|
-
}
|
|
11
|
+
} from "../../../utilities/fileSystem"
|
|
13
12
|
import env from "../../../environment"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
import { DocumentType } from "../../../db/utils"
|
|
14
|
+
import { context, objectStore, utils } from "@budibase/backend-core"
|
|
15
|
+
import AWS from "aws-sdk"
|
|
16
|
+
import fs from "fs"
|
|
17
|
+
import sdk from "../../../sdk"
|
|
18
|
+
const send = require("koa-send")
|
|
18
19
|
|
|
19
20
|
async function prepareUpload({ s3Key, bucket, metadata, file }: any) {
|
|
20
21
|
const response = await objectStore.upload({
|
|
@@ -110,7 +111,7 @@ export const serveApp = async function (ctx: any) {
|
|
|
110
111
|
title: appInfo.name,
|
|
111
112
|
production: env.isProd(),
|
|
112
113
|
appId,
|
|
113
|
-
clientLibPath: objectStore.clientLibraryUrl(appId
|
|
114
|
+
clientLibPath: objectStore.clientLibraryUrl(appId!, appInfo.version),
|
|
114
115
|
usedPlugins: plugins,
|
|
115
116
|
})
|
|
116
117
|
|
|
@@ -135,7 +136,7 @@ export const serveBuilderPreview = async function (ctx: any) {
|
|
|
135
136
|
let appId = context.getAppId()
|
|
136
137
|
const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`)
|
|
137
138
|
ctx.body = await processString(previewHbs, {
|
|
138
|
-
clientLibPath: objectStore.clientLibraryUrl(appId
|
|
139
|
+
clientLibPath: objectStore.clientLibraryUrl(appId!, appInfo.version),
|
|
139
140
|
})
|
|
140
141
|
} else {
|
|
141
142
|
// just return the app info for jest to assert on
|
|
@@ -150,13 +151,11 @@ export const serveClientLibrary = async function (ctx: any) {
|
|
|
150
151
|
}
|
|
151
152
|
|
|
152
153
|
export const getSignedUploadURL = async function (ctx: any) {
|
|
153
|
-
const database = context.getAppDB()
|
|
154
|
-
|
|
155
154
|
// Ensure datasource is valid
|
|
156
155
|
let datasource
|
|
157
156
|
try {
|
|
158
157
|
const { datasourceId } = ctx.params
|
|
159
|
-
datasource = await
|
|
158
|
+
datasource = await sdk.datasources.get(datasourceId, { enriched: true })
|
|
160
159
|
if (!datasource) {
|
|
161
160
|
ctx.throw(400, "The specified datasource could not be found")
|
|
162
161
|
}
|
|
@@ -172,8 +171,8 @@ export const getSignedUploadURL = async function (ctx: any) {
|
|
|
172
171
|
// Determine type of datasource and generate signed URL
|
|
173
172
|
let signedUrl
|
|
174
173
|
let publicUrl
|
|
175
|
-
const awsRegion = datasource?.config?.region || "eu-west-1"
|
|
176
|
-
if (datasource
|
|
174
|
+
const awsRegion = (datasource?.config?.region || "eu-west-1") as string
|
|
175
|
+
if (datasource?.source === "S3") {
|
|
177
176
|
const { bucket, key } = ctx.request.body || {}
|
|
178
177
|
if (!bucket || !key) {
|
|
179
178
|
ctx.throw(400, "bucket and key values are required")
|
|
@@ -182,8 +181,8 @@ export const getSignedUploadURL = async function (ctx: any) {
|
|
|
182
181
|
try {
|
|
183
182
|
const s3 = new AWS.S3({
|
|
184
183
|
region: awsRegion,
|
|
185
|
-
accessKeyId: datasource?.config?.accessKeyId,
|
|
186
|
-
secretAccessKey: datasource?.config?.secretAccessKey,
|
|
184
|
+
accessKeyId: datasource?.config?.accessKeyId as string,
|
|
185
|
+
secretAccessKey: datasource?.config?.secretAccessKey as string,
|
|
187
186
|
apiVersion: "2006-03-01",
|
|
188
187
|
signatureVersion: "v4",
|
|
189
188
|
})
|
|
@@ -219,7 +219,7 @@ export async function save(ctx: BBContext) {
|
|
|
219
219
|
}
|
|
220
220
|
|
|
221
221
|
const db = context.getAppDB()
|
|
222
|
-
const datasource = await
|
|
222
|
+
const datasource = await sdk.datasources.get(datasourceId)
|
|
223
223
|
if (!datasource.entities) {
|
|
224
224
|
datasource.entities = {}
|
|
225
225
|
}
|
|
@@ -322,15 +322,17 @@ export async function destroy(ctx: BBContext) {
|
|
|
322
322
|
const datasourceId = getDatasourceId(tableToDelete)
|
|
323
323
|
|
|
324
324
|
const db = context.getAppDB()
|
|
325
|
-
const datasource = await
|
|
325
|
+
const datasource = await sdk.datasources.get(datasourceId!)
|
|
326
326
|
const tables = datasource.entities
|
|
327
327
|
|
|
328
328
|
const operation = Operation.DELETE_TABLE
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
329
|
+
if (tables) {
|
|
330
|
+
await makeTableRequest(datasource, operation, tableToDelete, tables)
|
|
331
|
+
cleanupRelationships(tableToDelete, tables)
|
|
332
|
+
delete tables[tableToDelete.name]
|
|
333
|
+
datasource.entities = tables
|
|
334
|
+
}
|
|
332
335
|
|
|
333
|
-
delete datasource.entities[tableToDelete.name]
|
|
334
336
|
await db.put(datasource)
|
|
335
337
|
|
|
336
338
|
return tableToDelete
|
|
@@ -39,60 +39,62 @@ export async function destroy(ctx: BBContext) {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export async function buildSchema(ctx: BBContext) {
|
|
42
|
-
await context.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
for (let prop of Object.keys(properties)) {
|
|
56
|
-
autoOutputs.properties[prop] = {
|
|
57
|
-
type: properties[prop].type,
|
|
58
|
-
description: AUTOMATION_DESCRIPTION,
|
|
42
|
+
await context.doInAppContext(ctx.params.instance, async () => {
|
|
43
|
+
const db = context.getAppDB()
|
|
44
|
+
const webhook = (await db.get(ctx.params.id)) as Webhook
|
|
45
|
+
webhook.bodySchema = toJsonSchema(ctx.request.body)
|
|
46
|
+
// update the automation outputs
|
|
47
|
+
if (webhook.action.type === WebhookActionType.AUTOMATION) {
|
|
48
|
+
let automation = (await db.get(webhook.action.target)) as Automation
|
|
49
|
+
const autoOutputs = automation.definition.trigger.schema.outputs
|
|
50
|
+
let properties = webhook.bodySchema.properties
|
|
51
|
+
// reset webhook outputs
|
|
52
|
+
autoOutputs.properties = {
|
|
53
|
+
body: autoOutputs.properties.body,
|
|
59
54
|
}
|
|
55
|
+
for (let prop of Object.keys(properties)) {
|
|
56
|
+
autoOutputs.properties[prop] = {
|
|
57
|
+
type: properties[prop].type,
|
|
58
|
+
description: AUTOMATION_DESCRIPTION,
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
await db.put(automation)
|
|
60
62
|
}
|
|
61
|
-
await db.put(
|
|
62
|
-
}
|
|
63
|
-
ctx.body = await db.put(webhook)
|
|
63
|
+
ctx.body = await db.put(webhook)
|
|
64
|
+
})
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
export async function trigger(ctx: BBContext) {
|
|
67
68
|
const prodAppId = dbCore.getProdAppID(ctx.params.instance)
|
|
68
|
-
await context.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
ctx.status = 200
|
|
87
|
-
ctx.body = {
|
|
88
|
-
message: "Webhook trigger fired successfully",
|
|
89
|
-
}
|
|
90
|
-
} catch (err: any) {
|
|
91
|
-
if (err.status === 404) {
|
|
69
|
+
await context.doInAppContext(prodAppId, async () => {
|
|
70
|
+
try {
|
|
71
|
+
const db = context.getAppDB()
|
|
72
|
+
const webhook = (await db.get(ctx.params.id)) as Webhook
|
|
73
|
+
// validate against the schema
|
|
74
|
+
if (webhook.bodySchema) {
|
|
75
|
+
validate(ctx.request.body, webhook.bodySchema)
|
|
76
|
+
}
|
|
77
|
+
const target = await db.get(webhook.action.target)
|
|
78
|
+
if (webhook.action.type === WebhookActionType.AUTOMATION) {
|
|
79
|
+
// trigger with both the pure request and then expand it
|
|
80
|
+
// incase the user has produced a schema to bind to
|
|
81
|
+
await triggers.externalTrigger(target, {
|
|
82
|
+
body: ctx.request.body,
|
|
83
|
+
...ctx.request.body,
|
|
84
|
+
appId: prodAppId,
|
|
85
|
+
})
|
|
86
|
+
}
|
|
92
87
|
ctx.status = 200
|
|
93
88
|
ctx.body = {
|
|
94
|
-
message: "
|
|
89
|
+
message: "Webhook trigger fired successfully",
|
|
90
|
+
}
|
|
91
|
+
} catch (err: any) {
|
|
92
|
+
if (err.status === 404) {
|
|
93
|
+
ctx.status = 200
|
|
94
|
+
ctx.body = {
|
|
95
|
+
message: "Application not deployed yet.",
|
|
96
|
+
}
|
|
95
97
|
}
|
|
96
98
|
}
|
|
97
|
-
}
|
|
99
|
+
})
|
|
98
100
|
}
|
package/src/api/routes/index.ts
CHANGED
|
@@ -33,6 +33,7 @@ export { default as publicRoutes } from "./public"
|
|
|
33
33
|
|
|
34
34
|
const appBackupRoutes = pro.appBackups
|
|
35
35
|
const scheduleRoutes = pro.schedules
|
|
36
|
+
const environmentVariableRoutes = pro.environmentVariables
|
|
36
37
|
|
|
37
38
|
export const mainRoutes: Router[] = [
|
|
38
39
|
appBackupRoutes,
|
|
@@ -63,6 +64,7 @@ export const mainRoutes: Router[] = [
|
|
|
63
64
|
migrationRoutes,
|
|
64
65
|
pluginRoutes,
|
|
65
66
|
scheduleRoutes,
|
|
67
|
+
environmentVariableRoutes,
|
|
66
68
|
// these need to be handled last as they still use /api/:tableId
|
|
67
69
|
// this could be breaking as koa may recognise other routes as this
|
|
68
70
|
tableRoutes,
|
package/src/api/routes/row.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as rowController from "../controllers/row"
|
|
|
3
3
|
import authorized from "../../middleware/authorized"
|
|
4
4
|
import { paramResource, paramSubResource } from "../../middleware/resourceId"
|
|
5
5
|
import { permissions } from "@budibase/backend-core"
|
|
6
|
-
|
|
6
|
+
import { internalSearchValidator } from "./utils/validators"
|
|
7
7
|
const { PermissionType, PermissionLevel } = permissions
|
|
8
8
|
|
|
9
9
|
const router: Router = new Router()
|
|
@@ -2,7 +2,8 @@ jest.mock("pg")
|
|
|
2
2
|
import * as setup from "./utilities"
|
|
3
3
|
import { checkBuilderEndpoint } from "./utilities/TestFunctions"
|
|
4
4
|
import { checkCacheForDynamicVariable } from "../../../threads/utils"
|
|
5
|
-
import { events } from "@budibase/backend-core"
|
|
5
|
+
import { context, events } from "@budibase/backend-core"
|
|
6
|
+
import sdk from "../../../sdk"
|
|
6
7
|
|
|
7
8
|
let { basicDatasource } = setup.structures
|
|
8
9
|
const pg = require("pg")
|
|
@@ -184,4 +185,37 @@ describe("/datasources", () => {
|
|
|
184
185
|
})
|
|
185
186
|
})
|
|
186
187
|
})
|
|
188
|
+
|
|
189
|
+
describe("check secret replacement", () => {
|
|
190
|
+
async function makeDatasource() {
|
|
191
|
+
datasource = basicDatasource()
|
|
192
|
+
datasource.datasource.config.password = "testing"
|
|
193
|
+
const res = await request
|
|
194
|
+
.post(`/api/datasources`)
|
|
195
|
+
.send(datasource)
|
|
196
|
+
.set(config.defaultHeaders())
|
|
197
|
+
.expect("Content-Type", /json/)
|
|
198
|
+
.expect(200)
|
|
199
|
+
return res.body.datasource
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
it("should save a datasource with password", async () => {
|
|
203
|
+
const datasource = await makeDatasource()
|
|
204
|
+
expect(datasource.config.password).toBe("--secret-value--")
|
|
205
|
+
})
|
|
206
|
+
|
|
207
|
+
it("should not the password on update with the --secret-value--", async () => {
|
|
208
|
+
const datasource = await makeDatasource()
|
|
209
|
+
await request
|
|
210
|
+
.put(`/api/datasources/${datasource._id}`)
|
|
211
|
+
.send(datasource)
|
|
212
|
+
.set(config.defaultHeaders())
|
|
213
|
+
.expect("Content-Type", /json/)
|
|
214
|
+
.expect(200)
|
|
215
|
+
await context.doInAppContext(config.getAppId(), async () => {
|
|
216
|
+
const dbDatasource: any = await sdk.datasources.get(datasource._id)
|
|
217
|
+
expect(dbDatasource.config.password).toBe("testing")
|
|
218
|
+
})
|
|
219
|
+
})
|
|
220
|
+
})
|
|
187
221
|
})
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { bootstrap } from "global-agent"
|
|
2
2
|
const fixPath = require("fix-path")
|
|
3
|
-
|
|
3
|
+
import { checkDevelopmentEnvironment } from "./utilities/fileSystem"
|
|
4
4
|
|
|
5
5
|
function runServer() {
|
|
6
6
|
// this will shutdown the system if development environment not ready
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { QueryJson, Datasource } from "@budibase/types"
|
|
2
|
-
|
|
2
|
+
import { getIntegration } from "../index"
|
|
3
|
+
import sdk from "../../sdk"
|
|
3
4
|
|
|
4
5
|
export async function makeExternalQuery(
|
|
5
6
|
datasource: Datasource,
|
|
6
7
|
json: QueryJson
|
|
7
8
|
) {
|
|
9
|
+
datasource = await sdk.datasources.enrich(datasource)
|
|
8
10
|
const Integration = await getIntegration(datasource.source)
|
|
9
11
|
// query is the opinionated function
|
|
10
12
|
if (Integration.prototype.query) {
|
|
@@ -3,7 +3,7 @@ import { Operation, QueryJson, RenameColumn, Table } from "@budibase/types"
|
|
|
3
3
|
import { breakExternalTableId } from "../utils"
|
|
4
4
|
import SchemaBuilder = Knex.SchemaBuilder
|
|
5
5
|
import CreateTableBuilder = Knex.CreateTableBuilder
|
|
6
|
-
|
|
6
|
+
import { FieldTypes, RelationshipTypes } from "../../constants"
|
|
7
7
|
|
|
8
8
|
function generateSchema(
|
|
9
9
|
schema: CreateTableBuilder,
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
IntegrationBase,
|
|
6
6
|
} from "@budibase/types"
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
import AWS from "aws-sdk"
|
|
9
|
+
import { AWS_REGION } from "../db/dynamoClient"
|
|
10
10
|
|
|
11
11
|
interface DynamoDBConfig {
|
|
12
12
|
region: string
|
|
@@ -182,7 +182,7 @@ class DynamoDBIntegration implements IntegrationBase {
|
|
|
182
182
|
return response
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
async describe(query: { table: string }) {
|
|
185
|
+
async describe(query: { table: string }): Promise<any> {
|
|
186
186
|
const params = {
|
|
187
187
|
TableName: query.table,
|
|
188
188
|
}
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
finaliseExternalTables,
|
|
17
17
|
} from "./utils"
|
|
18
18
|
import dayjs from "dayjs"
|
|
19
|
-
|
|
19
|
+
import { NUMBER_REGEX } from "../utilities"
|
|
20
20
|
import Sql from "./base/sql"
|
|
21
21
|
import { MySQLColumn } from "./base/types"
|
|
22
22
|
|