@budibase/server 2.2.12-alpha.44 → 2.2.12-alpha.46
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.80229ab4.css → index.a6babe89.css} +2 -2
- package/builder/assets/{index.94c085f6.js → index.abb0b327.js} +392 -386
- 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
|
@@ -1,111 +1,84 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.interpolateSQL =
|
|
15
|
+
exports.interpolateSQL = void 0;
|
|
4
16
|
const string_templates_1 = require("@budibase/string-templates");
|
|
17
|
+
const sdk_1 = __importDefault(require("../../sdk"));
|
|
5
18
|
const CONST_CHAR_REGEX = new RegExp("'[^']*'", "g");
|
|
6
|
-
function enrichQueryFields(fields, parameters = {}) {
|
|
7
|
-
const enrichedQuery = Array.isArray(fields) ? [] : {};
|
|
8
|
-
if (!fields || !parameters) {
|
|
9
|
-
return enrichedQuery;
|
|
10
|
-
}
|
|
11
|
-
// enrich the fields with dynamic parameters
|
|
12
|
-
for (let key of Object.keys(fields)) {
|
|
13
|
-
if (fields[key] == null) {
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
if (typeof fields[key] === "object") {
|
|
17
|
-
// enrich nested fields object
|
|
18
|
-
enrichedQuery[key] = enrichQueryFields(fields[key], parameters);
|
|
19
|
-
}
|
|
20
|
-
else if (typeof fields[key] === "string") {
|
|
21
|
-
// enrich string value as normal
|
|
22
|
-
enrichedQuery[key] = (0, string_templates_1.processStringSync)(fields[key], parameters, {
|
|
23
|
-
noEscaping: true,
|
|
24
|
-
noHelpers: true,
|
|
25
|
-
escapeNewlines: true,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
enrichedQuery[key] = fields[key];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
if (enrichedQuery.json ||
|
|
33
|
-
enrichedQuery.customData ||
|
|
34
|
-
enrichedQuery.requestBody) {
|
|
35
|
-
try {
|
|
36
|
-
enrichedQuery.json = JSON.parse(enrichedQuery.json ||
|
|
37
|
-
enrichedQuery.customData ||
|
|
38
|
-
enrichedQuery.requestBody);
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
// no json found, ignore
|
|
42
|
-
}
|
|
43
|
-
delete enrichedQuery.customData;
|
|
44
|
-
}
|
|
45
|
-
return enrichedQuery;
|
|
46
|
-
}
|
|
47
|
-
exports.enrichQueryFields = enrichQueryFields;
|
|
48
19
|
function interpolateSQL(fields, parameters, integration) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const bindings = (0, string_templates_1.findHBSBlocks)(sql);
|
|
54
|
-
let variables = [], arrays = [];
|
|
55
|
-
for (let binding of bindings) {
|
|
56
|
-
// look for array/list operations in the SQL statement, which will need handled later
|
|
57
|
-
const listRegexMatch = sql.match(new RegExp(`(in|IN|In|iN)( )+[(]?${binding}[)]?`));
|
|
58
|
-
// check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
|
|
59
|
-
// start by finding all the instances of const character strings
|
|
60
|
-
const charConstMatch = sql.match(CONST_CHAR_REGEX) || [];
|
|
61
|
-
// now look within them to see if a binding is used
|
|
62
|
-
const charConstBindingMatch = charConstMatch.find((string) => string.match(new RegExp(`'[^']*${binding}[^']*'`)));
|
|
63
|
-
if (charConstBindingMatch) {
|
|
64
|
-
let [part1, part2] = charConstBindingMatch.split(binding);
|
|
65
|
-
part1 = `'${part1.substring(1)}'`;
|
|
66
|
-
part2 = `'${part2.substring(0, part2.length - 1)}'`;
|
|
67
|
-
sql = sql.replace(charConstBindingMatch, integration.getStringConcat([
|
|
68
|
-
part1,
|
|
69
|
-
integration.getBindingIdentifier(),
|
|
70
|
-
part2,
|
|
71
|
-
]));
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
let sql = fields.sql;
|
|
22
|
+
if (!sql || typeof sql !== "string") {
|
|
23
|
+
return fields;
|
|
72
24
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
//
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
25
|
+
const bindings = (0, string_templates_1.findHBSBlocks)(sql);
|
|
26
|
+
let variables = [], arrays = [];
|
|
27
|
+
for (let binding of bindings) {
|
|
28
|
+
// look for array/list operations in the SQL statement, which will need handled later
|
|
29
|
+
const listRegexMatch = sql.match(new RegExp(`(in|IN|In|iN)( )+[(]?${binding}[)]?`));
|
|
30
|
+
// check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
|
|
31
|
+
// start by finding all the instances of const character strings
|
|
32
|
+
const charConstMatch = sql.match(CONST_CHAR_REGEX) || [];
|
|
33
|
+
// now look within them to see if a binding is used
|
|
34
|
+
const charConstBindingMatch = charConstMatch.find((string) => string.match(new RegExp(`'[^']*${binding}[^']*'`)));
|
|
35
|
+
if (charConstBindingMatch) {
|
|
36
|
+
let [part1, part2] = charConstBindingMatch.split(binding);
|
|
37
|
+
part1 = `'${part1.substring(1)}'`;
|
|
38
|
+
part2 = `'${part2.substring(0, part2.length - 1)}'`;
|
|
39
|
+
sql = sql.replace(charConstBindingMatch, integration.getStringConcat([
|
|
40
|
+
part1,
|
|
41
|
+
integration.getBindingIdentifier(),
|
|
42
|
+
part2,
|
|
43
|
+
]));
|
|
87
44
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
45
|
+
// generate SQL parameterised array
|
|
46
|
+
else if (listRegexMatch) {
|
|
47
|
+
arrays.push(binding);
|
|
48
|
+
// determine the length of the array
|
|
49
|
+
const value = (yield sdk_1.default.queries.enrichContext([binding], parameters))[0]
|
|
50
|
+
.split(",")
|
|
51
|
+
.map((val) => val.trim());
|
|
52
|
+
// build a string like ($1, $2, $3)
|
|
53
|
+
let replacement = `${Array.apply(null, Array(value.length))
|
|
54
|
+
.map(() => integration.getBindingIdentifier())
|
|
55
|
+
.join(",")}`;
|
|
56
|
+
// check if parentheses are needed
|
|
57
|
+
if (!listRegexMatch[0].includes(`(${binding})`)) {
|
|
58
|
+
replacement = `(${replacement})`;
|
|
59
|
+
}
|
|
60
|
+
sql = sql.replace(binding, replacement);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
sql = sql.replace(binding, integration.getBindingIdentifier());
|
|
64
|
+
}
|
|
65
|
+
variables.push(binding);
|
|
103
66
|
}
|
|
104
|
-
|
|
105
|
-
|
|
67
|
+
// replicate the knex structure
|
|
68
|
+
fields.sql = sql;
|
|
69
|
+
fields.bindings = yield sdk_1.default.queries.enrichContext(variables, parameters);
|
|
70
|
+
// check for arrays in the data
|
|
71
|
+
let updated = [];
|
|
72
|
+
for (let i = 0; i < variables.length; i++) {
|
|
73
|
+
if (arrays.includes(variables[i])) {
|
|
74
|
+
updated = updated.concat(fields.bindings[i].split(",").map((val) => val.trim()));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
updated.push(fields.bindings[i]);
|
|
78
|
+
}
|
|
106
79
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
80
|
+
fields.bindings = updated;
|
|
81
|
+
return fields;
|
|
82
|
+
});
|
|
110
83
|
}
|
|
111
84
|
exports.interpolateSQL = interpolateSQL;
|
|
@@ -40,11 +40,11 @@ const datasource_1 = require("../definitions/datasource");
|
|
|
40
40
|
const lodash_1 = require("lodash");
|
|
41
41
|
const https = __importStar(require("https"));
|
|
42
42
|
const querystring_1 = __importDefault(require("querystring"));
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const
|
|
43
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
44
|
+
const utilities_1 = require("../utilities");
|
|
45
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
46
|
+
const form_data_1 = __importDefault(require("form-data"));
|
|
47
|
+
const url_1 = require("url");
|
|
48
48
|
const BodyTypes = {
|
|
49
49
|
NONE: "none",
|
|
50
50
|
FORM_DATA: "form",
|
|
@@ -138,7 +138,7 @@ const SCHEMA = {
|
|
|
138
138
|
class RestIntegration {
|
|
139
139
|
constructor(config) {
|
|
140
140
|
this.headers = {};
|
|
141
|
-
this.startTimeMs = performance.now();
|
|
141
|
+
this.startTimeMs = perf_hooks_1.performance.now();
|
|
142
142
|
this.config = config;
|
|
143
143
|
}
|
|
144
144
|
parseResponse(response, pagination) {
|
|
@@ -174,8 +174,8 @@ class RestIntegration {
|
|
|
174
174
|
catch (err) {
|
|
175
175
|
throw "Failed to parse response body.";
|
|
176
176
|
}
|
|
177
|
-
const size = formatBytes(response.headers.get("content-length") || Buffer.byteLength(raw, "utf8"));
|
|
178
|
-
const time = `${Math.round(performance.now() - this.startTimeMs)}ms`;
|
|
177
|
+
const size = (0, utilities_1.formatBytes)(response.headers.get("content-length") || Buffer.byteLength(raw, "utf8"));
|
|
178
|
+
const time = `${Math.round(perf_hooks_1.performance.now() - this.startTimeMs)}ms`;
|
|
179
179
|
headers = response.headers.raw();
|
|
180
180
|
for (let [key, value] of Object.entries(headers)) {
|
|
181
181
|
headers[key] = Array.isArray(value) ? value[0] : value;
|
|
@@ -206,14 +206,14 @@ class RestIntegration {
|
|
|
206
206
|
// Add pagination params to query string if required
|
|
207
207
|
if ((pagination === null || pagination === void 0 ? void 0 : pagination.location) === "query" && paginationValues) {
|
|
208
208
|
const { pageParam, sizeParam } = pagination;
|
|
209
|
-
const params = new URLSearchParams();
|
|
209
|
+
const params = new url_1.URLSearchParams();
|
|
210
210
|
// Append page number or cursor param if configured
|
|
211
211
|
if (pageParam && paginationValues.page != null) {
|
|
212
212
|
params.append(pageParam, paginationValues.page);
|
|
213
213
|
}
|
|
214
214
|
// Append page size param if configured
|
|
215
215
|
if (sizeParam && paginationValues.limit != null) {
|
|
216
|
-
params.append(sizeParam, paginationValues.limit);
|
|
216
|
+
params.append(sizeParam, String(paginationValues.limit));
|
|
217
217
|
}
|
|
218
218
|
// Prepend query string with pagination params
|
|
219
219
|
let paginationString = params.toString();
|
|
@@ -269,7 +269,7 @@ class RestIntegration {
|
|
|
269
269
|
input.body = string;
|
|
270
270
|
break;
|
|
271
271
|
case BodyTypes.ENCODED:
|
|
272
|
-
const params = new URLSearchParams();
|
|
272
|
+
const params = new url_1.URLSearchParams();
|
|
273
273
|
for (let [key, value] of Object.entries(object)) {
|
|
274
274
|
params.append(key, value);
|
|
275
275
|
}
|
|
@@ -279,7 +279,7 @@ class RestIntegration {
|
|
|
279
279
|
input.body = params;
|
|
280
280
|
break;
|
|
281
281
|
case BodyTypes.FORM_DATA:
|
|
282
|
-
const form = new
|
|
282
|
+
const form = new form_data_1.default();
|
|
283
283
|
for (let [key, value] of Object.entries(object)) {
|
|
284
284
|
form.append(key, value);
|
|
285
285
|
}
|
|
@@ -355,9 +355,9 @@ class RestIntegration {
|
|
|
355
355
|
// https://github.com/nodejs/node/issues/43798
|
|
356
356
|
input.extraHttpOptions = { insecureHTTPParser: true };
|
|
357
357
|
}
|
|
358
|
-
this.startTimeMs = performance.now();
|
|
358
|
+
this.startTimeMs = perf_hooks_1.performance.now();
|
|
359
359
|
const url = this.getUrl(path, queryString, pagination, paginationValues);
|
|
360
|
-
const response = yield
|
|
360
|
+
const response = yield (0, node_fetch_1.default)(url, input);
|
|
361
361
|
return yield this.parseResponse(response, pagination);
|
|
362
362
|
});
|
|
363
363
|
}
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "2.2.12-alpha.
|
|
4
|
+
"version": "2.2.12-alpha.45",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"license": "GPL-3.0",
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@apidevtools/swagger-parser": "10.0.3",
|
|
46
|
-
"@budibase/backend-core": "2.2.12-alpha.
|
|
47
|
-
"@budibase/client": "2.2.12-alpha.
|
|
48
|
-
"@budibase/pro": "2.2.12-alpha.
|
|
49
|
-
"@budibase/string-templates": "2.2.12-alpha.
|
|
50
|
-
"@budibase/types": "2.2.12-alpha.
|
|
46
|
+
"@budibase/backend-core": "2.2.12-alpha.45",
|
|
47
|
+
"@budibase/client": "2.2.12-alpha.45",
|
|
48
|
+
"@budibase/pro": "2.2.12-alpha.45",
|
|
49
|
+
"@budibase/string-templates": "2.2.12-alpha.45",
|
|
50
|
+
"@budibase/types": "2.2.12-alpha.45",
|
|
51
51
|
"@bull-board/api": "3.7.0",
|
|
52
52
|
"@bull-board/koa": "3.9.4",
|
|
53
53
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.mergeConfigs = exports.removeSecretSingle = exports.removeSecrets = exports.getWithEnvVars = exports.get = exports.enrich = void 0;
|
|
13
|
+
const backend_core_1 = require("@budibase/backend-core");
|
|
14
|
+
const string_templates_1 = require("@budibase/string-templates");
|
|
15
|
+
const types_1 = require("@budibase/types");
|
|
16
|
+
const fp_1 = require("lodash/fp");
|
|
17
|
+
const utils_1 = require("../../utils");
|
|
18
|
+
const integrations_1 = require("../../../integrations");
|
|
19
|
+
const ENV_VAR_PREFIX = "env.";
|
|
20
|
+
const USER_PREFIX = "user";
|
|
21
|
+
function enrichDatasourceWithValues(datasource) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
const cloned = (0, fp_1.cloneDeep)(datasource);
|
|
24
|
+
const env = yield (0, utils_1.getEnvironmentVariables)();
|
|
25
|
+
const processed = (0, string_templates_1.processObjectSync)(cloned, { env }, { onlyFound: true });
|
|
26
|
+
return {
|
|
27
|
+
datasource: processed,
|
|
28
|
+
envVars: env,
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function enrich(datasource) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const { datasource: response } = yield enrichDatasourceWithValues(datasource);
|
|
35
|
+
return response;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
exports.enrich = enrich;
|
|
39
|
+
function get(datasourceId, opts) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const appDb = backend_core_1.context.getAppDB();
|
|
42
|
+
const datasource = yield appDb.get(datasourceId);
|
|
43
|
+
if (opts === null || opts === void 0 ? void 0 : opts.enriched) {
|
|
44
|
+
return (yield enrichDatasourceWithValues(datasource)).datasource;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return datasource;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
exports.get = get;
|
|
52
|
+
function getWithEnvVars(datasourceId) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
const appDb = backend_core_1.context.getAppDB();
|
|
55
|
+
const datasource = yield appDb.get(datasourceId);
|
|
56
|
+
return enrichDatasourceWithValues(datasource);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
exports.getWithEnvVars = getWithEnvVars;
|
|
60
|
+
function removeSecrets(datasources) {
|
|
61
|
+
var _a, _b;
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const definitions = yield (0, integrations_1.getDefinitions)();
|
|
64
|
+
for (let datasource of datasources) {
|
|
65
|
+
const schema = definitions[datasource.source];
|
|
66
|
+
if (datasource.config) {
|
|
67
|
+
// strip secrets from response, so they don't show in the network request
|
|
68
|
+
if (datasource.config.auth) {
|
|
69
|
+
delete datasource.config.auth;
|
|
70
|
+
}
|
|
71
|
+
// remove passwords
|
|
72
|
+
for (let key of Object.keys(datasource.config)) {
|
|
73
|
+
if (typeof datasource.config[key] !== "string") {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const blocks = (0, string_templates_1.findHBSBlocks)(datasource.config[key]);
|
|
77
|
+
const usesEnvVars = blocks.find(block => block.includes(ENV_VAR_PREFIX)) != null;
|
|
78
|
+
if (!usesEnvVars &&
|
|
79
|
+
((_b = (_a = schema.datasource) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.type) === types_1.DatasourceFieldType.PASSWORD) {
|
|
80
|
+
datasource.config[key] = types_1.PASSWORD_REPLACEMENT;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return datasources;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
exports.removeSecrets = removeSecrets;
|
|
89
|
+
function removeSecretSingle(datasource) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
return (yield removeSecrets([datasource]))[0];
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
exports.removeSecretSingle = removeSecretSingle;
|
|
95
|
+
function mergeConfigs(update, old) {
|
|
96
|
+
var _a, _b;
|
|
97
|
+
if (!update.config) {
|
|
98
|
+
return update;
|
|
99
|
+
}
|
|
100
|
+
for (let [key, value] of Object.entries(update.config)) {
|
|
101
|
+
if (value !== types_1.PASSWORD_REPLACEMENT) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if ((_a = old.config) === null || _a === void 0 ? void 0 : _a[key]) {
|
|
105
|
+
update.config[key] = (_b = old.config) === null || _b === void 0 ? void 0 : _b[key];
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
delete update.config[key];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return update;
|
|
112
|
+
}
|
|
113
|
+
exports.mergeConfigs = mergeConfigs;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const datasources = __importStar(require("./datasources"));
|
|
27
|
+
exports.default = Object.assign({}, datasources);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const queries = __importStar(require("./queries"));
|
|
27
|
+
exports.default = Object.assign({}, queries);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.enrichContext = void 0;
|
|
13
|
+
const utils_1 = require("../../utils");
|
|
14
|
+
const string_templates_1 = require("@budibase/string-templates");
|
|
15
|
+
function enrichContext(fields, inputs = {}) {
|
|
16
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
+
const enrichedQuery = Array.isArray(fields) ? [] : {};
|
|
18
|
+
if (!fields || !inputs) {
|
|
19
|
+
return enrichedQuery;
|
|
20
|
+
}
|
|
21
|
+
const env = yield (0, utils_1.getEnvironmentVariables)();
|
|
22
|
+
const parameters = Object.assign(Object.assign({}, inputs), { env });
|
|
23
|
+
// enrich the fields with dynamic parameters
|
|
24
|
+
for (let key of Object.keys(fields)) {
|
|
25
|
+
if (fields[key] == null) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (typeof fields[key] === "object") {
|
|
29
|
+
// enrich nested fields object
|
|
30
|
+
enrichedQuery[key] = yield enrichContext(fields[key], parameters);
|
|
31
|
+
}
|
|
32
|
+
else if (typeof fields[key] === "string") {
|
|
33
|
+
// enrich string value as normal
|
|
34
|
+
enrichedQuery[key] = (0, string_templates_1.processStringSync)(fields[key], parameters, {
|
|
35
|
+
noEscaping: true,
|
|
36
|
+
noHelpers: true,
|
|
37
|
+
escapeNewlines: true,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
enrichedQuery[key] = fields[key];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (enrichedQuery.json ||
|
|
45
|
+
enrichedQuery.customData ||
|
|
46
|
+
enrichedQuery.requestBody) {
|
|
47
|
+
try {
|
|
48
|
+
enrichedQuery.json = JSON.parse(enrichedQuery.json ||
|
|
49
|
+
enrichedQuery.customData ||
|
|
50
|
+
enrichedQuery.requestBody);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
// no json found, ignore
|
|
54
|
+
}
|
|
55
|
+
delete enrichedQuery.customData;
|
|
56
|
+
}
|
|
57
|
+
return enrichedQuery;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
exports.enrichContext = enrichContext;
|
|
@@ -8,10 +8,14 @@ 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
|
const backend_core_1 = require("@budibase/backend-core");
|
|
13
16
|
const utils_1 = require("../../../db/utils");
|
|
14
17
|
const utils_2 = require("../../../integrations/utils");
|
|
18
|
+
const datasources_1 = __importDefault(require("../datasources"));
|
|
15
19
|
function getAllInternalTables(db) {
|
|
16
20
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
21
|
if (!db) {
|
|
@@ -26,7 +30,7 @@ function getAllInternalTables(db) {
|
|
|
26
30
|
function getAllExternalTables(datasourceId) {
|
|
27
31
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
32
|
const db = backend_core_1.context.getAppDB();
|
|
29
|
-
const datasource = yield
|
|
33
|
+
const datasource = yield datasources_1.default.get(datasourceId, { enriched: true });
|
|
30
34
|
if (!datasource || !datasource.entities) {
|
|
31
35
|
throw "Datasource is not configured fully.";
|
|
32
36
|
}
|
|
@@ -44,7 +48,7 @@ function getTable(tableId) {
|
|
|
44
48
|
const db = backend_core_1.context.getAppDB();
|
|
45
49
|
if ((0, utils_2.isExternalTable)(tableId)) {
|
|
46
50
|
let { datasourceId, tableName } = (0, utils_2.breakExternalTableId)(tableId);
|
|
47
|
-
const datasource = yield
|
|
51
|
+
const datasource = yield datasources_1.default.get(datasourceId);
|
|
48
52
|
const table = yield getExternalTable(datasourceId, tableName);
|
|
49
53
|
return Object.assign(Object.assign({}, table), { sql: (0, utils_2.isSQL)(datasource) });
|
|
50
54
|
}
|
package/dist/sdk/index.js
CHANGED
|
@@ -7,6 +7,8 @@ const backups_1 = __importDefault(require("./app/backups"));
|
|
|
7
7
|
const tables_1 = __importDefault(require("./app/tables"));
|
|
8
8
|
const automations_1 = __importDefault(require("./app/automations"));
|
|
9
9
|
const applications_1 = __importDefault(require("./app/applications"));
|
|
10
|
+
const datasources_1 = __importDefault(require("./app/datasources"));
|
|
11
|
+
const queries_1 = __importDefault(require("./app/queries"));
|
|
10
12
|
const rows_1 = __importDefault(require("./app/rows"));
|
|
11
13
|
const users_1 = __importDefault(require("./users"));
|
|
12
14
|
const sdk = {
|
|
@@ -16,6 +18,8 @@ const sdk = {
|
|
|
16
18
|
applications: applications_1.default,
|
|
17
19
|
rows: rows_1.default,
|
|
18
20
|
users: users_1.default,
|
|
21
|
+
datasources: datasources_1.default,
|
|
22
|
+
queries: queries_1.default,
|
|
19
23
|
};
|
|
20
24
|
// default export for TS
|
|
21
25
|
exports.default = sdk;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getEnvironmentVariables = void 0;
|
|
13
|
+
const pro_1 = require("@budibase/pro");
|
|
14
|
+
const backend_core_1 = require("@budibase/backend-core");
|
|
15
|
+
const types_1 = require("@budibase/types");
|
|
16
|
+
function getEnvironmentVariables() {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
let envVars = backend_core_1.context.getEnvironmentVariables();
|
|
19
|
+
if (!envVars) {
|
|
20
|
+
const appId = backend_core_1.context.getAppId();
|
|
21
|
+
const appEnv = backend_core_1.db.isDevAppID(appId)
|
|
22
|
+
? types_1.AppEnvironment.DEVELOPMENT
|
|
23
|
+
: types_1.AppEnvironment.PRODUCTION;
|
|
24
|
+
envVars = yield pro_1.environmentVariables.fetchValues(appEnv);
|
|
25
|
+
}
|
|
26
|
+
return envVars;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
exports.getEnvironmentVariables = getEnvironmentVariables;
|
|
@@ -50,6 +50,7 @@ const types_1 = require("@budibase/types");
|
|
|
50
50
|
const backend_core_1 = require("@budibase/backend-core");
|
|
51
51
|
const string_templates_1 = require("@budibase/string-templates");
|
|
52
52
|
const fp_1 = require("lodash/fp");
|
|
53
|
+
const sdkUtils = __importStar(require("../sdk/utils"));
|
|
53
54
|
const environment_1 = __importDefault(require("../environment"));
|
|
54
55
|
const FILTER_STEP_ID = actions.ACTION_DEFINITIONS.FILTER.stepId;
|
|
55
56
|
const LOOP_STEP_ID = actions.ACTION_DEFINITIONS.LOOP.stepId;
|
|
@@ -214,6 +215,8 @@ class Orchestrator {
|
|
|
214
215
|
execute() {
|
|
215
216
|
var _a;
|
|
216
217
|
return __awaiter(this, void 0, void 0, function* () {
|
|
218
|
+
// this will retrieve from context created at start of thread
|
|
219
|
+
this._context.env = yield sdkUtils.getEnvironmentVariables();
|
|
217
220
|
let automation = this._automation;
|
|
218
221
|
let stopped = false;
|
|
219
222
|
let loopStep = undefined;
|
|
@@ -424,8 +427,12 @@ const removeStalled = (job) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
424
427
|
throw new Error("Unable to execute, event doesn't contain app ID.");
|
|
425
428
|
}
|
|
426
429
|
yield backend_core_1.context.doInAppContext(appId, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
427
|
-
const
|
|
428
|
-
|
|
430
|
+
const envVars = yield sdkUtils.getEnvironmentVariables();
|
|
431
|
+
// put into automation thread for whole context
|
|
432
|
+
yield backend_core_1.context.doInEnvironmentContext(envVars, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
433
|
+
const automationOrchestrator = new Orchestrator(job);
|
|
434
|
+
yield automationOrchestrator.stopCron("stalled");
|
|
435
|
+
}));
|
|
429
436
|
}));
|
|
430
437
|
});
|
|
431
438
|
exports.removeStalled = removeStalled;
|