@budibase/server 2.2.12-alpha.6 → 2.2.12-alpha.60
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/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
- package/builder/assets/bg.c1563288.png +0 -0
- package/builder/assets/bulgaria.bd68393d.png +0 -0
- package/builder/assets/covanta.72c46c1e.png +0 -0
- package/builder/assets/index.426b225d.js +1798 -0
- package/builder/assets/index.f87b8d33.css +6 -0
- package/builder/assets/schnellecke.cf1837a8.png +0 -0
- package/builder/index.html +3 -3
- package/coverage/clover.xml +5112 -4923
- package/coverage/coverage-final.json +268 -264
- package/coverage/lcov-report/index.html +202 -157
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/application.ts.html +185 -164
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +24 -24
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +15 -15
- package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +112 -88
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +80 -80
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +17 -17
- package/coverage/lcov-report/src/api/controllers/index.html +36 -36
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
- 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 +19 -19
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +29 -29
- 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 +6 -6
- package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
- 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 +7 -7
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +4 -4
- 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 +7 -7
- 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 +3 -3
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +7 -7
- 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 +9 -9
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +13 -13
- package/coverage/lcov-report/src/api/controllers/query/index.html +7 -7
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +89 -65
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +36 -18
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +60 -30
- package/coverage/lcov-report/src/api/controllers/row/index.html +40 -40
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +34 -34
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +142 -70
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +120 -120
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +22 -22
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +152 -38
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/script.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +39 -42
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +52 -52
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +43 -37
- package/coverage/lcov-report/src/api/controllers/table/index.html +34 -34
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +155 -68
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +47 -47
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +66 -69
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/user.ts.html +99 -75
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +62 -17
- package/coverage/lcov-report/src/api/controllers/view/index.html +29 -29
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +53 -92
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +69 -63
- package/coverage/lcov-report/src/api/index.html +1 -1
- package/coverage/lcov-report/src/api/index.ts.html +27 -27
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/application.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
- package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/index.html +5 -5
- package/coverage/lcov-report/src/api/routes/index.ts.html +42 -36
- package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
- package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
- 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 +4 -4
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
- 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 +12 -12
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/row.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/table.ts.html +26 -95
- package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
- 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 +9 -9
- package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +43 -43
- package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
- package/coverage/lcov-report/src/app.ts.html +13 -7
- package/coverage/lcov-report/src/automations/actions.ts.html +27 -27
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +59 -59
- package/coverage/lcov-report/src/automations/bullboard.ts.html +9 -9
- package/coverage/lcov-report/src/automations/index.html +30 -30
- package/coverage/lcov-report/src/automations/index.ts.html +10 -10
- package/coverage/lcov-report/src/automations/logging/index.html +1 -1
- package/coverage/lcov-report/src/automations/logging/index.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/index.html +15 -15
- package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
- package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +38 -38
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/utils.ts.html +10 -10
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +13 -13
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
- package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggers.ts.html +52 -37
- package/coverage/lcov-report/src/automations/utils.ts.html +52 -52
- 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 +4 -4
- package/coverage/lcov-report/src/constants/screens.ts.html +3 -3
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +22 -22
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +4 -4
- package/coverage/lcov-report/src/db/index.html +1 -1
- package/coverage/lcov-report/src/db/index.ts.html +9 -9
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +18 -18
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
- package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/index.ts.html +27 -27
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +13 -13
- package/coverage/lcov-report/src/db/newid.ts.html +4 -4
- package/coverage/lcov-report/src/db/utils.ts.html +40 -40
- package/coverage/lcov-report/src/definitions/automations.ts.html +6 -3
- package/coverage/lcov-report/src/definitions/index.html +5 -20
- package/coverage/lcov-report/src/environment.ts.html +10 -10
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +8 -8
- package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
- package/coverage/lcov-report/src/events/index.html +1 -1
- package/coverage/lcov-report/src/events/index.ts.html +4 -4
- package/coverage/lcov-report/src/events/utils.ts.html +1 -1
- package/coverage/lcov-report/src/index.html +13 -13
- 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 +14 -8
- 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 +5 -5
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +113 -32
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +9 -9
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +26 -14
- 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 +47 -47
- package/coverage/lcov-report/src/integrations/index.ts.html +49 -49
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +417 -285
- 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 +36 -45
- 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 +18 -18
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +5 -5
- package/coverage/lcov-report/src/middleware/authorized.ts.html +27 -27
- package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +45 -42
- 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 +4 -4
- package/coverage/lcov-report/src/middleware/resourceId.ts.html +21 -21
- package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
- 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 +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
- 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 +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
- package/coverage/lcov-report/src/migrations/index.html +1 -1
- package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
- 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 +4 -4
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +22 -22
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
- package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +18 -18
- package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
- 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/sdk/app/queries/index.ts.html +100 -0
- 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 +6 -6
- package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/tables/index.html +11 -11
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +27 -18
- package/coverage/lcov-report/src/sdk/index.html +5 -5
- package/coverage/lcov-report/src/sdk/index.ts.html +23 -11
- package/coverage/lcov-report/src/sdk/users/index.html +1 -1
- package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +28 -28
- 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 +34 -34
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +134 -125
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
- package/coverage/lcov-report/src/tests/utilities/index.html +21 -21
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +213 -24
- package/coverage/lcov-report/src/threads/automation.ts.html +216 -186
- package/coverage/lcov-report/src/threads/index.html +30 -30
- package/coverage/lcov-report/src/threads/index.ts.html +24 -24
- package/coverage/lcov-report/src/threads/query.ts.html +68 -29
- package/coverage/lcov-report/src/threads/utils.ts.html +9 -9
- 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 +9 -9
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +27 -21
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +21 -21
- 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 +40 -40
- package/coverage/lcov-report/src/utilities/index.html +39 -39
- package/coverage/lcov-report/src/utilities/index.ts.html +12 -12
- package/coverage/lcov-report/src/utilities/redis.ts.html +12 -12
- package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +50 -50
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +14 -14
- package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +173 -233
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
- package/coverage/lcov-report/src/utilities/security.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/users.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +38 -11
- package/coverage/lcov-report/src/watch.ts.html +7 -7
- package/coverage/lcov-report/src/websocket.ts.html +3 -3
- package/coverage/lcov.info +7897 -7537
- package/dist/api/controllers/application.js +73 -74
- package/dist/api/controllers/cloud.js +1 -1
- package/dist/api/controllers/datasource.js +24 -15
- package/dist/api/controllers/query/index.js +18 -11
- package/dist/api/controllers/row/ExternalRequest.js +12 -3
- package/dist/api/controllers/row/external.js +20 -13
- package/dist/api/controllers/row/internal.js +40 -15
- package/dist/api/controllers/row/utils.js +35 -3
- package/dist/api/controllers/static/index.js +38 -38
- 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 +4 -4
- 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 +20 -56
- 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/api/routes/table.js +6 -37
- package/dist/api/routes/utils/validators.js +1 -1
- package/dist/app.js +1 -0
- package/dist/automations/triggers.js +1 -0
- package/dist/definitions/datasource.js +0 -6
- 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/index.js +5 -5
- 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/currentapp.js +4 -2
- package/dist/package.json +7 -7
- 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/threads/automation.js +18 -7
- 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/dist/utilities/schema.js +108 -0
- package/dist/utilities/workerRequests.js +2 -0
- package/package.json +8 -8
- package/scripts/dev/manage.js +1 -0
- package/src/api/controllers/application.ts +81 -74
- package/src/api/controllers/cloud.ts +1 -1
- package/src/api/controllers/datasource.ts +33 -25
- package/src/api/controllers/query/index.ts +47 -39
- package/src/api/controllers/row/ExternalRequest.ts +8 -2
- package/src/api/controllers/row/external.ts +24 -14
- package/src/api/controllers/row/internal.ts +42 -18
- package/src/api/controllers/row/utils.ts +40 -2
- package/src/api/controllers/static/index.ts +17 -18
- 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 +4 -4
- 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 +22 -35
- 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/table.ts +15 -38
- package/src/api/routes/tests/datasource.spec.ts +35 -1
- package/src/api/routes/tests/misc.spec.js +4 -10
- package/src/api/routes/tests/table.spec.js +8 -30
- package/src/api/routes/tests/user.spec.js +20 -1
- package/src/api/routes/utils/validators.ts +1 -1
- package/src/app.ts +3 -1
- package/src/automations/tests/loop.spec.ts +45 -0
- package/src/automations/triggers.ts +6 -1
- package/src/definitions/automations.ts +1 -0
- package/src/definitions/datasource.ts +0 -41
- 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 +41 -14
- package/src/integrations/dynamodb.ts +3 -3
- package/src/integrations/elasticsearch.ts +8 -4
- package/src/integrations/index.ts +4 -4
- 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 +4 -2
- package/src/middleware/currentapp.ts +3 -2
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -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/utils/index.ts +16 -0
- package/src/tests/utilities/TestConfiguration.ts +15 -12
- package/src/tests/utilities/structures.ts +65 -2
- package/src/threads/automation.ts +18 -8
- 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
- package/src/utilities/schema.ts +141 -0
- package/src/utilities/workerRequests.ts +10 -1
- package/tsconfig.json +2 -1
- package/builder/assets/index.0b010a07.js +0 -1023
- package/builder/assets/index.fa480d5b.css +0 -6
- package/dist/utilities/csvParser.js +0 -152
- package/src/utilities/csvParser.ts +0 -161
- package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
- package/src/utilities/tests/csvParser.spec.js +0 -112
|
@@ -75,12 +75,8 @@ function checkAppName(ctx, apps, name, currentAppId) {
|
|
|
75
75
|
ctx.throw(400, "App name is already in use.");
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
function createInstance(template, includeSampleData) {
|
|
78
|
+
function createInstance(appId, template, includeSampleData) {
|
|
79
79
|
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
-
const tenantId = backend_core_1.tenancy.isMultiTenant() ? backend_core_1.tenancy.getTenantId() : null;
|
|
81
|
-
const baseAppId = (0, utils_1.generateAppID)(tenantId);
|
|
82
|
-
const appId = (0, utils_1.generateDevAppID)(baseAppId);
|
|
83
|
-
yield backend_core_1.context.updateAppId(appId);
|
|
84
80
|
const db = backend_core_1.context.getAppDB();
|
|
85
81
|
yield db.put({
|
|
86
82
|
_id: "_design/database",
|
|
@@ -203,77 +199,80 @@ function performAppCreate(ctx) {
|
|
|
203
199
|
instanceConfig.file = ctx.request.files.templateFile;
|
|
204
200
|
}
|
|
205
201
|
const includeSampleData = (0, utilities_1.isQsTrue)(ctx.request.body.sampleData);
|
|
206
|
-
const
|
|
207
|
-
const appId =
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
if (
|
|
262
|
-
|
|
202
|
+
const tenantId = backend_core_1.tenancy.isMultiTenant() ? backend_core_1.tenancy.getTenantId() : null;
|
|
203
|
+
const appId = (0, utils_1.generateDevAppID)((0, utils_1.generateAppID)(tenantId));
|
|
204
|
+
return yield backend_core_1.context.doInAppContext(appId, () => __awaiter(this, void 0, void 0, function* () {
|
|
205
|
+
const instance = yield createInstance(appId, instanceConfig, includeSampleData);
|
|
206
|
+
const db = backend_core_1.context.getAppDB();
|
|
207
|
+
let newApplication = {
|
|
208
|
+
_id: utils_1.DocumentType.APP_METADATA,
|
|
209
|
+
_rev: undefined,
|
|
210
|
+
appId,
|
|
211
|
+
type: "app",
|
|
212
|
+
version: package_json_1.default.version,
|
|
213
|
+
componentLibraries: ["@budibase/standard-components"],
|
|
214
|
+
name: name,
|
|
215
|
+
url: url,
|
|
216
|
+
template: templateKey,
|
|
217
|
+
instance,
|
|
218
|
+
tenantId: backend_core_1.tenancy.getTenantId(),
|
|
219
|
+
updatedAt: new Date().toISOString(),
|
|
220
|
+
createdAt: new Date().toISOString(),
|
|
221
|
+
status: utils_1.AppStatus.DEV,
|
|
222
|
+
navigation: {
|
|
223
|
+
navigation: "Top",
|
|
224
|
+
title: name,
|
|
225
|
+
navWidth: "Large",
|
|
226
|
+
navBackground: "var(--spectrum-global-color-gray-100)",
|
|
227
|
+
links: [
|
|
228
|
+
{
|
|
229
|
+
url: "/home",
|
|
230
|
+
text: "Home",
|
|
231
|
+
},
|
|
232
|
+
],
|
|
233
|
+
},
|
|
234
|
+
theme: "spectrum--light",
|
|
235
|
+
customTheme: {
|
|
236
|
+
buttonBorderRadius: "16px",
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
// If we used a template or imported an app there will be an existing doc.
|
|
240
|
+
// Fetch and migrate some metadata from the existing app.
|
|
241
|
+
try {
|
|
242
|
+
const existing = yield db.get(utils_1.DocumentType.APP_METADATA);
|
|
243
|
+
const keys = [
|
|
244
|
+
"_rev",
|
|
245
|
+
"navigation",
|
|
246
|
+
"theme",
|
|
247
|
+
"customTheme",
|
|
248
|
+
"icon",
|
|
249
|
+
];
|
|
250
|
+
keys.forEach(key => {
|
|
251
|
+
if (existing[key]) {
|
|
252
|
+
// @ts-ignore
|
|
253
|
+
newApplication[key] = existing[key];
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
// Migrate navigation settings and screens if required
|
|
257
|
+
if (existing) {
|
|
258
|
+
const navigation = yield migrateAppNavigation();
|
|
259
|
+
if (navigation) {
|
|
260
|
+
newApplication.navigation = navigation;
|
|
261
|
+
}
|
|
263
262
|
}
|
|
264
263
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
264
|
+
catch (err) {
|
|
265
|
+
// Nothing to do
|
|
266
|
+
}
|
|
267
|
+
const response = yield db.put(newApplication, { force: true });
|
|
268
|
+
newApplication._rev = response.rev;
|
|
269
|
+
/* istanbul ignore next */
|
|
270
|
+
if (!environment_1.default.isTest()) {
|
|
271
|
+
yield (0, fileSystem_1.createApp)(appId);
|
|
272
|
+
}
|
|
273
|
+
yield backend_core_1.cache.app.invalidateAppMetadata(appId, newApplication);
|
|
274
|
+
return newApplication;
|
|
275
|
+
}));
|
|
277
276
|
});
|
|
278
277
|
}
|
|
279
278
|
function creationEvents(request, app) {
|
|
@@ -99,7 +99,7 @@ function importApps(ctx) {
|
|
|
99
99
|
if (Array.isArray(file)) {
|
|
100
100
|
ctx.throw(400, "Single file is required");
|
|
101
101
|
}
|
|
102
|
-
if (file.type !== "application/gzip") {
|
|
102
|
+
if (file.type !== "application/gzip" && file.type !== "application/x-gzip") {
|
|
103
103
|
ctx.throw(400, "Import file must be a gzipped tarball.");
|
|
104
104
|
}
|
|
105
105
|
// initially get all the app databases out of the tarball
|
|
@@ -8,6 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.query = exports.find = exports.destroy = exports.save = exports.update = exports.buildSchemaFromDb = exports.fetch = void 0;
|
|
13
16
|
const utils_1 = require("../../db/utils");
|
|
@@ -17,6 +20,7 @@ const integrations_1 = require("../../integrations");
|
|
|
17
20
|
const utils_2 = require("./row/utils");
|
|
18
21
|
const utils_3 = require("../../threads/utils");
|
|
19
22
|
const backend_core_1 = require("@budibase/backend-core");
|
|
23
|
+
const sdk_1 = __importDefault(require("../../sdk"));
|
|
20
24
|
function fetch(ctx) {
|
|
21
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
26
|
// Get internal tables
|
|
@@ -35,12 +39,11 @@ function fetch(ctx) {
|
|
|
35
39
|
const datasources = (yield db.allDocs((0, utils_1.getDatasourceParams)(null, {
|
|
36
40
|
include_docs: true,
|
|
37
41
|
}))).rows.map(row => row.doc);
|
|
38
|
-
const allDatasources =
|
|
42
|
+
const allDatasources = yield sdk_1.default.datasources.removeSecrets([
|
|
43
|
+
bbInternalDb,
|
|
44
|
+
...datasources,
|
|
45
|
+
]);
|
|
39
46
|
for (let datasource of allDatasources) {
|
|
40
|
-
if (datasource.config && datasource.config.auth) {
|
|
41
|
-
// strip secrets from response so they don't show in the network request
|
|
42
|
-
delete datasource.config.auth;
|
|
43
|
-
}
|
|
44
47
|
if (datasource.type === backend_core_1.db.BUDIBASE_DATASOURCE_TYPE) {
|
|
45
48
|
datasource.entities = internal[datasource._id];
|
|
46
49
|
}
|
|
@@ -52,7 +55,7 @@ exports.fetch = fetch;
|
|
|
52
55
|
function buildSchemaFromDb(ctx) {
|
|
53
56
|
return __awaiter(this, void 0, void 0, function* () {
|
|
54
57
|
const db = backend_core_1.context.getAppDB();
|
|
55
|
-
const datasource = yield
|
|
58
|
+
const datasource = yield sdk_1.default.datasources.get(ctx.params.datasourceId);
|
|
56
59
|
const tablesFilter = ctx.request.body.tablesFilter;
|
|
57
60
|
let { tables, error } = yield buildSchemaHelper(datasource);
|
|
58
61
|
if (tablesFilter) {
|
|
@@ -125,18 +128,18 @@ function invalidateVariables(existingDatasource, updatedDatasource) {
|
|
|
125
128
|
});
|
|
126
129
|
}
|
|
127
130
|
function update(ctx) {
|
|
128
|
-
var _a;
|
|
131
|
+
var _a, _b;
|
|
129
132
|
return __awaiter(this, void 0, void 0, function* () {
|
|
130
133
|
const db = backend_core_1.context.getAppDB();
|
|
131
134
|
const datasourceId = ctx.params.datasourceId;
|
|
132
|
-
let datasource = yield
|
|
133
|
-
const auth = datasource.config.auth;
|
|
135
|
+
let datasource = yield sdk_1.default.datasources.get(datasourceId);
|
|
136
|
+
const auth = (_a = datasource.config) === null || _a === void 0 ? void 0 : _a.auth;
|
|
134
137
|
yield invalidateVariables(datasource, ctx.request.body);
|
|
135
138
|
const isBudibaseSource = datasource.type === backend_core_1.db.BUDIBASE_DATASOURCE_TYPE;
|
|
136
139
|
const dataSourceBody = isBudibaseSource
|
|
137
|
-
? { name: (
|
|
140
|
+
? { name: (_b = ctx.request.body) === null || _b === void 0 ? void 0 : _b.name }
|
|
138
141
|
: ctx.request.body;
|
|
139
|
-
datasource = Object.assign(Object.assign({}, datasource), dataSourceBody);
|
|
142
|
+
datasource = Object.assign(Object.assign({}, datasource), sdk_1.default.datasources.mergeConfigs(dataSourceBody, datasource));
|
|
140
143
|
if (auth && !ctx.request.body.auth) {
|
|
141
144
|
// don't strip auth config from DB
|
|
142
145
|
datasource.config.auth = auth;
|
|
@@ -153,7 +156,9 @@ function update(ctx) {
|
|
|
153
156
|
}
|
|
154
157
|
ctx.status = 200;
|
|
155
158
|
ctx.message = "Datasource saved successfully.";
|
|
156
|
-
ctx.body = {
|
|
159
|
+
ctx.body = {
|
|
160
|
+
datasource: yield sdk_1.default.datasources.removeSecretSingle(datasource),
|
|
161
|
+
};
|
|
157
162
|
});
|
|
158
163
|
}
|
|
159
164
|
exports.update = update;
|
|
@@ -180,7 +185,9 @@ function save(ctx) {
|
|
|
180
185
|
yield source.pool.end();
|
|
181
186
|
}
|
|
182
187
|
}
|
|
183
|
-
const response = {
|
|
188
|
+
const response = {
|
|
189
|
+
datasource: yield sdk_1.default.datasources.removeSecretSingle(datasource),
|
|
190
|
+
};
|
|
184
191
|
if (schemaError) {
|
|
185
192
|
response.error = schemaError;
|
|
186
193
|
}
|
|
@@ -216,7 +223,7 @@ function destroy(ctx) {
|
|
|
216
223
|
return __awaiter(this, void 0, void 0, function* () {
|
|
217
224
|
const db = backend_core_1.context.getAppDB();
|
|
218
225
|
const datasourceId = ctx.params.datasourceId;
|
|
219
|
-
const datasource = yield
|
|
226
|
+
const datasource = yield sdk_1.default.datasources.get(datasourceId);
|
|
220
227
|
// Delete all queries for the datasource
|
|
221
228
|
if (datasource.type === backend_core_1.db.BUDIBASE_DATASOURCE_TYPE) {
|
|
222
229
|
yield destroyInternalTablesBySourceId(datasourceId);
|
|
@@ -240,7 +247,8 @@ exports.destroy = destroy;
|
|
|
240
247
|
function find(ctx) {
|
|
241
248
|
return __awaiter(this, void 0, void 0, function* () {
|
|
242
249
|
const database = backend_core_1.context.getAppDB();
|
|
243
|
-
|
|
250
|
+
const datasource = yield database.get(ctx.params.datasourceId);
|
|
251
|
+
ctx.body = yield sdk_1.default.datasources.removeSecretSingle(datasource);
|
|
244
252
|
});
|
|
245
253
|
}
|
|
246
254
|
exports.find = find;
|
|
@@ -275,6 +283,7 @@ function updateError(error, newError, tables) {
|
|
|
275
283
|
function buildSchemaHelper(datasource) {
|
|
276
284
|
return __awaiter(this, void 0, void 0, function* () {
|
|
277
285
|
const Connector = yield (0, integrations_1.getIntegration)(datasource.source);
|
|
286
|
+
datasource = yield sdk_1.default.datasources.enrich(datasource);
|
|
278
287
|
// Connect to the DB and build the schema
|
|
279
288
|
const connector = new Connector(datasource.config);
|
|
280
289
|
yield connector.buildSchema(datasource._id, datasource.entities);
|
|
@@ -22,6 +22,7 @@ const utils_2 = require("../../../threads/utils");
|
|
|
22
22
|
const environment_1 = __importDefault(require("../../../environment"));
|
|
23
23
|
const pro_1 = require("@budibase/pro");
|
|
24
24
|
const backend_core_1 = require("@budibase/backend-core");
|
|
25
|
+
const sdk_1 = __importDefault(require("../../../sdk"));
|
|
25
26
|
const Runner = new threads_1.Thread(threads_1.ThreadType.QUERY, {
|
|
26
27
|
timeoutMs: environment_1.default.QUERY_THREAD_TIMEOUT || 10000,
|
|
27
28
|
});
|
|
@@ -84,7 +85,7 @@ function save(ctx) {
|
|
|
84
85
|
return __awaiter(this, void 0, void 0, function* () {
|
|
85
86
|
const db = backend_core_1.context.getAppDB();
|
|
86
87
|
const query = ctx.request.body;
|
|
87
|
-
const datasource = yield
|
|
88
|
+
const datasource = yield sdk_1.default.datasources.get(query.datasourceId);
|
|
88
89
|
let eventFn;
|
|
89
90
|
if (!query._id) {
|
|
90
91
|
query._id = (0, utils_1.generateQueryID)(query.datasourceId);
|
|
@@ -129,15 +130,14 @@ function getAuthConfig(ctx) {
|
|
|
129
130
|
}
|
|
130
131
|
function preview(ctx) {
|
|
131
132
|
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
-
const
|
|
133
|
-
const datasource = yield db.get(ctx.request.body.datasourceId);
|
|
133
|
+
const { datasource, envVars } = yield sdk_1.default.datasources.getWithEnvVars(ctx.request.body.datasourceId);
|
|
134
134
|
const query = ctx.request.body;
|
|
135
135
|
// preview may not have a queryId as it hasn't been saved, but if it does
|
|
136
136
|
// this stops dynamic variables from calling the same query
|
|
137
137
|
const { fields, parameters, queryVerb, transformer, queryId } = query;
|
|
138
138
|
const authConfigCtx = getAuthConfig(ctx);
|
|
139
139
|
try {
|
|
140
|
-
const
|
|
140
|
+
const inputs = {
|
|
141
141
|
appId: ctx.appId,
|
|
142
142
|
datasource,
|
|
143
143
|
queryVerb,
|
|
@@ -145,11 +145,14 @@ function preview(ctx) {
|
|
|
145
145
|
parameters,
|
|
146
146
|
transformer,
|
|
147
147
|
queryId,
|
|
148
|
+
// have to pass down to the thread runner - can't put into context now
|
|
149
|
+
environmentVariables: envVars,
|
|
148
150
|
ctx: {
|
|
149
151
|
user: ctx.user,
|
|
150
152
|
auth: Object.assign({}, authConfigCtx),
|
|
151
153
|
},
|
|
152
|
-
}
|
|
154
|
+
};
|
|
155
|
+
const runFn = () => Runner.run(inputs);
|
|
153
156
|
const { rows, keys, info, extra } = yield pro_1.quotas.addQuery(runFn, {
|
|
154
157
|
datasourceId: datasource._id,
|
|
155
158
|
});
|
|
@@ -199,7 +202,7 @@ function execute(ctx, opts = { rowsOnly: false, isAutomation: false }) {
|
|
|
199
202
|
return __awaiter(this, void 0, void 0, function* () {
|
|
200
203
|
const db = backend_core_1.context.getAppDB();
|
|
201
204
|
const query = yield db.get(ctx.params.queryId);
|
|
202
|
-
const datasource = yield
|
|
205
|
+
const { datasource, envVars } = yield sdk_1.default.datasources.getWithEnvVars(query.datasourceId);
|
|
203
206
|
let authConfigCtx = {};
|
|
204
207
|
if (!opts.isAutomation) {
|
|
205
208
|
authConfigCtx = getAuthConfig(ctx);
|
|
@@ -215,7 +218,7 @@ function execute(ctx, opts = { rowsOnly: false, isAutomation: false }) {
|
|
|
215
218
|
}
|
|
216
219
|
// call the relevant CRUD method on the integration class
|
|
217
220
|
try {
|
|
218
|
-
const
|
|
221
|
+
const inputs = {
|
|
219
222
|
appId: ctx.appId,
|
|
220
223
|
datasource,
|
|
221
224
|
queryVerb: query.queryVerb,
|
|
@@ -224,11 +227,14 @@ function execute(ctx, opts = { rowsOnly: false, isAutomation: false }) {
|
|
|
224
227
|
parameters: enrichedParameters,
|
|
225
228
|
transformer: query.transformer,
|
|
226
229
|
queryId: ctx.params.queryId,
|
|
230
|
+
// have to pass down to the thread runner - can't put into context now
|
|
231
|
+
environmentVariables: envVars,
|
|
227
232
|
ctx: {
|
|
228
233
|
user: ctx.user,
|
|
229
234
|
auth: Object.assign({}, authConfigCtx),
|
|
230
235
|
},
|
|
231
|
-
}
|
|
236
|
+
};
|
|
237
|
+
const runFn = () => Runner.run(inputs);
|
|
232
238
|
const { rows, pagination, extra } = yield pro_1.quotas.addQuery(runFn, {
|
|
233
239
|
datasourceId: datasource._id,
|
|
234
240
|
});
|
|
@@ -261,10 +267,11 @@ function executeV2(ctx, { isAutomation } = {}) {
|
|
|
261
267
|
}
|
|
262
268
|
exports.executeV2 = executeV2;
|
|
263
269
|
const removeDynamicVariables = (queryId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
270
|
+
var _a;
|
|
264
271
|
const db = backend_core_1.context.getAppDB();
|
|
265
272
|
const query = yield db.get(queryId);
|
|
266
|
-
const datasource = yield
|
|
267
|
-
const dynamicVariables = datasource.config.dynamicVariables;
|
|
273
|
+
const datasource = yield sdk_1.default.datasources.get(query.datasourceId);
|
|
274
|
+
const dynamicVariables = (_a = datasource.config) === null || _a === void 0 ? void 0 : _a.dynamicVariables;
|
|
268
275
|
if (dynamicVariables) {
|
|
269
276
|
// delete dynamic variables from the datasource
|
|
270
277
|
datasource.config.dynamicVariables = dynamicVariables.filter((dv) => dv.queryId !== queryId);
|
|
@@ -280,7 +287,7 @@ function destroy(ctx) {
|
|
|
280
287
|
const queryId = ctx.params.queryId;
|
|
281
288
|
yield removeDynamicVariables(queryId);
|
|
282
289
|
const query = yield db.get(queryId);
|
|
283
|
-
const datasource = yield
|
|
290
|
+
const datasource = yield sdk_1.default.datasources.get(query.datasourceId);
|
|
284
291
|
yield db.remove(ctx.params.queryId, ctx.params.revId);
|
|
285
292
|
ctx.message = `Query deleted.`;
|
|
286
293
|
ctx.status = 200;
|
|
@@ -19,6 +19,9 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
19
19
|
}
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
22
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
26
|
exports.ExternalRequest = void 0;
|
|
24
27
|
const types_1 = require("@budibase/types");
|
|
@@ -29,8 +32,8 @@ const utils_3 = require("../../../integrations/utils");
|
|
|
29
32
|
const string_templates_1 = require("@budibase/string-templates");
|
|
30
33
|
const fp_1 = require("lodash/fp");
|
|
31
34
|
const rowProcessor_1 = require("../../../utilities/rowProcessor");
|
|
32
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
33
35
|
const utils_4 = require("./utils");
|
|
36
|
+
const sdk_1 = __importDefault(require("../../../sdk"));
|
|
34
37
|
function buildFilters(id, filters, table) {
|
|
35
38
|
const primary = table.primary;
|
|
36
39
|
// if passed in array need to copy for shifting etc
|
|
@@ -562,6 +565,7 @@ class ExternalRequest {
|
|
|
562
565
|
return fields;
|
|
563
566
|
}
|
|
564
567
|
run(config) {
|
|
568
|
+
var _a;
|
|
565
569
|
return __awaiter(this, void 0, void 0, function* () {
|
|
566
570
|
const { operation, tableId } = this;
|
|
567
571
|
let { datasourceId, tableName } = (0, utils_3.breakExternalTableId)(tableId);
|
|
@@ -569,8 +573,7 @@ class ExternalRequest {
|
|
|
569
573
|
throw "Unable to run without a table name";
|
|
570
574
|
}
|
|
571
575
|
if (!this.datasource) {
|
|
572
|
-
|
|
573
|
-
this.datasource = yield db.get(datasourceId);
|
|
576
|
+
this.datasource = yield sdk_1.default.datasources.get(datasourceId);
|
|
574
577
|
if (!this.datasource || !this.datasource.entities) {
|
|
575
578
|
throw "No tables found, fetch tables before query.";
|
|
576
579
|
}
|
|
@@ -583,6 +586,12 @@ class ExternalRequest {
|
|
|
583
586
|
}
|
|
584
587
|
// look for specific components of config which may not be considered acceptable
|
|
585
588
|
let { id, row, filters, sort, paginate, rows } = cleanupConfig(config, table);
|
|
589
|
+
//if the sort column is a formula, remove it
|
|
590
|
+
for (let sortColumn of Object.keys(sort || {})) {
|
|
591
|
+
if (((_a = table.schema[sortColumn]) === null || _a === void 0 ? void 0 : _a.type) === "formula") {
|
|
592
|
+
sort === null || sort === void 0 ? true : delete sort[sortColumn];
|
|
593
|
+
}
|
|
594
|
+
}
|
|
586
595
|
filters = buildFilters(id, filters || {}, table);
|
|
587
596
|
const relationships = this.buildRelationships(table);
|
|
588
597
|
// clean up row on ingress using schema
|
|
@@ -42,15 +42,19 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
42
42
|
}
|
|
43
43
|
return t;
|
|
44
44
|
};
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
45
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
49
|
exports.fetchEnrichedRow = exports.exportRows = exports.validate = exports.search = exports.bulkDestroy = exports.destroy = exports.find = exports.fetch = exports.fetchView = exports.save = exports.patch = exports.handleRequest = void 0;
|
|
47
50
|
const constants_1 = require("../../../constants");
|
|
48
51
|
const utils_1 = require("../../../integrations/utils");
|
|
49
52
|
const ExternalRequest_1 = require("./ExternalRequest");
|
|
50
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
51
53
|
const exporters = __importStar(require("../view/exporters"));
|
|
52
54
|
const fileSystem_1 = require("../../../utilities/fileSystem");
|
|
53
55
|
const types_1 = require("@budibase/types");
|
|
56
|
+
const sdk_1 = __importDefault(require("../../../sdk"));
|
|
57
|
+
const { cleanExportRows } = require("./utils");
|
|
54
58
|
function handleRequest(operation, tableId, opts) {
|
|
55
59
|
return __awaiter(this, void 0, void 0, function* () {
|
|
56
60
|
// make sure the filters are cleaned up, no empty strings for equals, fuzzy or string
|
|
@@ -222,20 +226,21 @@ exports.validate = validate;
|
|
|
222
226
|
function exportRows(ctx) {
|
|
223
227
|
return __awaiter(this, void 0, void 0, function* () {
|
|
224
228
|
const { datasourceId } = (0, utils_1.breakExternalTableId)(ctx.params.tableId);
|
|
225
|
-
const db = backend_core_1.context.getAppDB();
|
|
226
229
|
const format = ctx.query.format;
|
|
227
230
|
const { columns } = ctx.request.body;
|
|
228
|
-
const datasource = yield
|
|
231
|
+
const datasource = yield sdk_1.default.datasources.get(datasourceId);
|
|
229
232
|
if (!datasource || !datasource.entities) {
|
|
230
233
|
ctx.throw(400, "Datasource has not been configured for plus API.");
|
|
231
234
|
}
|
|
232
|
-
ctx.request.body
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
235
|
+
if (ctx.request.body.rows) {
|
|
236
|
+
ctx.request.body = {
|
|
237
|
+
query: {
|
|
238
|
+
oneOf: {
|
|
239
|
+
_id: ctx.request.body.rows.map((row) => JSON.parse(decodeURI(row))[0]),
|
|
240
|
+
},
|
|
236
241
|
},
|
|
237
|
-
}
|
|
238
|
-
}
|
|
242
|
+
};
|
|
243
|
+
}
|
|
239
244
|
let result = yield search(ctx);
|
|
240
245
|
let rows = [];
|
|
241
246
|
// Filter data to only specified columns if required
|
|
@@ -250,13 +255,16 @@ function exportRows(ctx) {
|
|
|
250
255
|
else {
|
|
251
256
|
rows = result.rows;
|
|
252
257
|
}
|
|
253
|
-
|
|
258
|
+
// @ts-ignore
|
|
259
|
+
let schema = datasource.entities[tableName].schema;
|
|
260
|
+
let exportRows = cleanExportRows(rows, schema, format, columns);
|
|
261
|
+
let headers = Object.keys(schema);
|
|
254
262
|
// @ts-ignore
|
|
255
263
|
const exporter = exporters[format];
|
|
256
264
|
const filename = `export.${format}`;
|
|
257
265
|
// send down the file
|
|
258
266
|
ctx.attachment(filename);
|
|
259
|
-
return (0, fileSystem_1.apiFileReturn)(exporter(headers,
|
|
267
|
+
return (0, fileSystem_1.apiFileReturn)(exporter(headers, exportRows));
|
|
260
268
|
});
|
|
261
269
|
}
|
|
262
270
|
exports.exportRows = exportRows;
|
|
@@ -266,8 +274,7 @@ function fetchEnrichedRow(ctx) {
|
|
|
266
274
|
const id = ctx.params.rowId;
|
|
267
275
|
const tableId = ctx.params.tableId;
|
|
268
276
|
const { datasourceId, tableName } = (0, utils_1.breakExternalTableId)(tableId);
|
|
269
|
-
const
|
|
270
|
-
const datasource = yield db.get(datasourceId);
|
|
277
|
+
const datasource = yield sdk_1.default.datasources.get(datasourceId);
|
|
271
278
|
if (!tableName) {
|
|
272
279
|
ctx.throw(400, "Unable to find table.");
|
|
273
280
|
}
|
|
@@ -61,8 +61,9 @@ const utils_2 = require("../view/utils");
|
|
|
61
61
|
const fp_1 = require("lodash/fp");
|
|
62
62
|
const backend_core_1 = require("@budibase/backend-core");
|
|
63
63
|
const staticFormula_1 = require("./staticFormula");
|
|
64
|
-
const
|
|
64
|
+
const exporters_1 = require("../view/exporters");
|
|
65
65
|
const fileSystem_1 = require("../../../utilities/fileSystem");
|
|
66
|
+
const { cleanExportRows } = require("./utils");
|
|
66
67
|
const CALCULATION_TYPES = {
|
|
67
68
|
SUM: "sum",
|
|
68
69
|
COUNT: "count",
|
|
@@ -364,6 +365,13 @@ function search(ctx) {
|
|
|
364
365
|
const _a = ctx.request.body, { paginate, query } = _a, params = __rest(_a, ["paginate", "query"]);
|
|
365
366
|
params.version = ctx.version;
|
|
366
367
|
params.tableId = tableId;
|
|
368
|
+
let table;
|
|
369
|
+
if (params.sort && !params.sortType) {
|
|
370
|
+
table = yield db.get(tableId);
|
|
371
|
+
const schema = table.schema;
|
|
372
|
+
const sortField = schema[params.sort];
|
|
373
|
+
params.sortType = sortField.type == "number" ? "number" : "string";
|
|
374
|
+
}
|
|
367
375
|
let response;
|
|
368
376
|
if (paginate) {
|
|
369
377
|
response = yield (0, internalSearch_1.paginatedSearch)(query, params);
|
|
@@ -377,7 +385,7 @@ function search(ctx) {
|
|
|
377
385
|
if (tableId === utils_1.InternalTables.USER_METADATA) {
|
|
378
386
|
response.rows = yield (0, global_1.getGlobalUsersFromMetadata)(response.rows);
|
|
379
387
|
}
|
|
380
|
-
|
|
388
|
+
table = table || (yield db.get(tableId));
|
|
381
389
|
response.rows = yield (0, rowProcessor_1.outputProcessing)(table, response.rows);
|
|
382
390
|
}
|
|
383
391
|
return response;
|
|
@@ -399,13 +407,21 @@ function exportRows(ctx) {
|
|
|
399
407
|
const table = yield db.get(ctx.params.tableId);
|
|
400
408
|
const rowIds = ctx.request.body.rows;
|
|
401
409
|
let format = ctx.query.format;
|
|
402
|
-
const { columns } = ctx.request.body;
|
|
403
|
-
let
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
410
|
+
const { columns, query } = ctx.request.body;
|
|
411
|
+
let result;
|
|
412
|
+
if (rowIds) {
|
|
413
|
+
let response = (yield db.allDocs({
|
|
414
|
+
include_docs: true,
|
|
415
|
+
keys: rowIds,
|
|
416
|
+
})).rows.map(row => row.doc);
|
|
417
|
+
result = yield (0, rowProcessor_1.outputProcessing)(table, response);
|
|
418
|
+
}
|
|
419
|
+
else if (query) {
|
|
420
|
+
let searchResponse = yield exports.search(ctx);
|
|
421
|
+
result = searchResponse.rows;
|
|
422
|
+
}
|
|
408
423
|
let rows = [];
|
|
424
|
+
let schema = table.schema;
|
|
409
425
|
// Filter data to only specified columns if required
|
|
410
426
|
if (columns && columns.length) {
|
|
411
427
|
for (let i = 0; i < result.length; i++) {
|
|
@@ -418,13 +434,22 @@ function exportRows(ctx) {
|
|
|
418
434
|
else {
|
|
419
435
|
rows = result;
|
|
420
436
|
}
|
|
421
|
-
let
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
437
|
+
let exportRows = cleanExportRows(rows, schema, format, columns);
|
|
438
|
+
if (format === exporters_1.Format.CSV) {
|
|
439
|
+
ctx.attachment("export.csv");
|
|
440
|
+
return (0, fileSystem_1.apiFileReturn)((0, exporters_1.csv)(Object.keys(rows[0]), exportRows));
|
|
441
|
+
}
|
|
442
|
+
else if (format === exporters_1.Format.JSON) {
|
|
443
|
+
ctx.attachment("export.json");
|
|
444
|
+
return (0, fileSystem_1.apiFileReturn)((0, exporters_1.json)(exportRows));
|
|
445
|
+
}
|
|
446
|
+
else if (format === exporters_1.Format.JSON_WITH_SCHEMA) {
|
|
447
|
+
ctx.attachment("export.json");
|
|
448
|
+
return (0, fileSystem_1.apiFileReturn)((0, exporters_1.jsonWithSchema)(schema, exportRows));
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
throw "Format not recognised";
|
|
452
|
+
}
|
|
428
453
|
});
|
|
429
454
|
}
|
|
430
455
|
exports.exportRows = exportRows;
|