@budibase/server 2.2.3 → 2.2.4-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/aws-sdk.ts +19 -0
- package/__mocks__/node-fetch.ts +78 -0
- package/builder/assets/{index.c7a7a2d0.js → index.77b82b83.js} +185 -185
- package/builder/index.html +1 -1
- package/coverage/clover.xml +4914 -4899
- package/coverage/coverage-final.json +265 -262
- package/coverage/lcov-report/index.html +176 -176
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/application.ts.html +171 -159
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +51 -51
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +91 -79
- package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +30 -30
- 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 +83 -83
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/index.html +51 -51
- 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 +19 -19
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +63 -63
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +150 -135
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +55 -55
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +10 -10
- 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 +6 -6
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +6 -6
- 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 +8 -8
- 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 +8 -8
- 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 +8 -8
- 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 +10 -10
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/query/index.html +19 -19
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +60 -60
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +10 -10
- 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 +43 -25
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +20 -20
- package/coverage/lcov-report/src/api/controllers/row/index.html +13 -13
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +54 -51
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +21 -12
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +17 -14
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
- package/coverage/lcov-report/src/api/controllers/script.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/static/index.html +11 -11
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +32 -44
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/table/index.html +19 -19
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +17 -17
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +51 -51
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/user.ts.html +119 -119
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +47 -47
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +22 -22
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +33 -33
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +14 -14
- package/coverage/lcov-report/src/api/index.html +1 -1
- package/coverage/lcov-report/src/api/index.ts.html +33 -33
- 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 +9 -9
- 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 +1 -1
- package/coverage/lcov-report/src/api/routes/index.ts.html +40 -37
- 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 +12 -12
- 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 +10 -10
- 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 +11 -11
- 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 +11 -11
- package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +16 -16
- 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 +22 -22
- 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 +42 -42
- 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 +32 -32
- package/coverage/lcov-report/src/automations/actions.ts.html +25 -25
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +91 -19
- package/coverage/lcov-report/src/automations/bullboard.ts.html +11 -11
- package/coverage/lcov-report/src/automations/index.html +19 -19
- package/coverage/lcov-report/src/automations/index.ts.html +13 -13
- package/coverage/lcov-report/src/automations/logging/index.html +1 -1
- package/coverage/lcov-report/src/automations/logging/index.ts.html +11 -11
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
- 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 +33 -33
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/index.html +83 -83
- 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 +14 -14
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +17 -17
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +18 -18
- 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 +16 -16
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +5 -5
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +26 -26
- 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 +21 -21
- package/coverage/lcov-report/src/automations/utils.ts.html +56 -56
- package/coverage/lcov-report/src/constants/index.html +1 -1
- package/coverage/lcov-report/src/constants/index.ts.html +92 -92
- package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
- package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +23 -23
- 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 +16 -16
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +5 -5
- package/coverage/lcov-report/src/db/index.html +19 -19
- package/coverage/lcov-report/src/db/index.ts.html +9 -9
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +8 -8
- 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 +15 -15
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +12 -12
- package/coverage/lcov-report/src/db/newid.ts.html +4 -4
- package/coverage/lcov-report/src/db/utils.ts.html +80 -80
- package/coverage/lcov-report/src/definitions/automations.ts.html +4 -4
- package/coverage/lcov-report/src/definitions/datasource.ts.html +4 -4
- package/coverage/lcov-report/src/definitions/index.html +1 -1
- package/coverage/lcov-report/src/environment.ts.html +43 -31
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
- 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 +3 -3
- package/coverage/lcov-report/src/index.html +26 -26
- package/coverage/lcov-report/src/index.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/integrations/base/query.ts.html +3 -3
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +14 -14
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +3 -3
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
- 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 +5 -5
- package/coverage/lcov-report/src/integrations/index.ts.html +35 -47
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
- package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
- package/coverage/lcov-report/src/integrations/postgres.ts.html +42 -42
- package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +13 -13
- package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/rest.ts.html +16 -16
- 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 +36 -36
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +7 -7
- package/coverage/lcov-report/src/middleware/authorized.ts.html +28 -28
- package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +39 -39
- 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 +22 -22
- 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 +13 -10
- 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 +15 -15
- package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
- 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 +6 -6
- 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 +42 -54
- package/coverage/lcov-report/src/sdk/app/backups/index.html +30 -30
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
- package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/index.html +1 -1
- package/coverage/lcov-report/src/sdk/index.ts.html +8 -8
- package/coverage/lcov-report/src/sdk/users/index.html +5 -5
- package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +34 -34
- package/coverage/lcov-report/src/startup.ts.html +42 -42
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +146 -119
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
- package/coverage/lcov-report/src/tests/utilities/index.html +10 -10
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +30 -30
- package/coverage/lcov-report/src/threads/automation.ts.html +32 -101
- package/coverage/lcov-report/src/threads/index.html +19 -19
- package/coverage/lcov-report/src/threads/index.ts.html +25 -25
- package/coverage/lcov-report/src/threads/query.ts.html +71 -71
- package/coverage/lcov-report/src/threads/utils.ts.html +18 -18
- package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/centralPath.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/csvParser.ts.html +8 -8
- package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +12 -12
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +595 -0
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +79 -19
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +20 -1049
- package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +280 -0
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
- package/coverage/lcov-report/src/utilities/global.ts.html +42 -42
- package/coverage/lcov-report/src/utilities/index.html +48 -63
- package/coverage/lcov-report/src/utilities/index.ts.html +36 -168
- package/coverage/lcov-report/src/utilities/redis.ts.html +32 -32
- package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +28 -28
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +60 -33
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +32 -32
- package/coverage/lcov-report/src/utilities/security.ts.html +6 -6
- package/coverage/lcov-report/src/utilities/statusCodes.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 +35 -35
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/users.ts.html +6 -6
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +56 -56
- package/coverage/lcov-report/src/watch.ts.html +9 -9
- package/coverage/lcov-report/src/websocket.ts.html +15 -15
- package/coverage/lcov.info +6978 -6941
- package/dist/api/controllers/application.js +9 -10
- package/dist/api/controllers/cloud.js +6 -2
- package/dist/api/controllers/plugin/index.js +6 -6
- package/dist/api/controllers/row/ExternalRequest.js +14 -8
- package/dist/api/controllers/row/internal.js +11 -11
- package/dist/api/controllers/row/staticFormula.js +1 -1
- package/dist/api/controllers/static/index.js +8 -11
- package/dist/automations/automationUtils.js +26 -1
- package/dist/environment.js +6 -2
- package/dist/integrations/index.js +1 -2
- package/dist/migrations/functions/backfill/global/configs.js +4 -4
- package/dist/package.json +9 -7
- package/dist/sdk/app/backups/imports.js +3 -7
- package/dist/threads/automation.js +2 -26
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/app.js +97 -0
- package/dist/utilities/fileSystem/clientLibrary.js +3 -3
- package/dist/utilities/fileSystem/filesystem.js +182 -0
- package/dist/utilities/fileSystem/index.js +18 -342
- package/dist/utilities/fileSystem/plugin.js +63 -0
- package/dist/utilities/fileSystem/template.js +44 -0
- package/dist/utilities/index.js +1 -44
- package/dist/utilities/rowProcessor/index.js +12 -4
- package/package.json +10 -8
- package/src/api/controllers/application.ts +16 -12
- package/src/api/controllers/auth.ts +2 -2
- package/src/api/controllers/cloud.ts +10 -6
- package/src/api/controllers/plugin/index.ts +14 -9
- package/src/api/controllers/row/ExternalRequest.ts +14 -8
- package/src/api/controllers/row/internal.ts +23 -22
- package/src/api/controllers/row/staticFormula.ts +5 -2
- package/src/api/controllers/row/utils.ts +2 -1
- package/src/api/controllers/static/index.ts +6 -10
- package/src/api/routes/index.ts +4 -3
- package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap} +0 -0
- package/src/api/routes/tests/{application.spec.js → application.spec.ts} +40 -7
- package/src/api/routes/tests/{backup.spec.js → backup.spec.ts} +17 -6
- package/src/api/routes/tests/cloud.spec.ts +66 -0
- package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
- package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
- package/src/api/routes/tests/data/export-test.tar.gz +0 -0
- package/src/api/routes/tests/{datasource.spec.js → datasource.spec.ts} +23 -15
- package/src/api/routes/tests/plugin.spec.ts +179 -0
- package/src/api/routes/tests/routing.spec.js +0 -1
- package/src/api/routes/tests/row.spec.js +4 -2
- package/src/api/routes/tests/static.spec.js +2 -17
- package/src/api/routes/tests/table.spec.js +8 -2
- package/src/api/routes/tests/user.spec.js +86 -0
- package/src/api/routes/tests/utilities/index.ts +2 -2
- package/src/automations/automationUtils.ts +24 -0
- package/src/automations/tests/bash.spec.js +34 -0
- package/src/automations/tests/discord.spec.js +27 -0
- package/src/automations/tests/executeQuery.spec.js +49 -0
- package/src/automations/tests/executeScript.spec.js +48 -0
- package/src/automations/tests/sendSmtpEmail.spec.js +71 -0
- package/src/automations/tests/serverLog.spec.js +22 -0
- package/src/automations/tests/utilities/index.ts +2 -2
- package/src/automations/tests/zapier.spec.js +27 -0
- package/src/automations/unitTests/automationUtils.spec.ts +65 -0
- package/src/environment.ts +6 -2
- package/src/integrations/index.ts +1 -5
- package/src/migrations/functions/backfill/global/configs.ts +5 -4
- package/src/sdk/app/backups/imports.ts +3 -7
- package/src/tests/jestSetup.ts +4 -1
- package/src/tests/utilities/TestConfiguration.ts +9 -0
- package/src/threads/automation.ts +2 -25
- package/src/utilities/fileSystem/app.ts +86 -0
- package/src/utilities/fileSystem/clientLibrary.ts +1 -1
- package/src/utilities/fileSystem/filesystem.ts +170 -0
- package/src/utilities/fileSystem/index.ts +5 -348
- package/src/utilities/fileSystem/plugin.ts +65 -0
- package/src/utilities/fileSystem/template.ts +36 -0
- package/src/utilities/index.ts +1 -45
- package/src/utilities/rowProcessor/index.ts +17 -8
- package/src/utilities/rowProcessor/tests/utils.spec.ts +57 -0
- package/tsconfig.build.json +2 -0
- package/coverage/lcov-report/src/utilities/plugins.ts.html +0 -151
- package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
- package/dist/api/routes/tests/utilities/index.js +0 -131
- package/dist/automations/tests/utilities/index.js +0 -81
- package/dist/tests/utilities/TestConfiguration.js +0 -562
- package/dist/tests/utilities/controllers.js +0 -40
- package/dist/tests/utilities/structures.js +0 -168
- package/dist/utilities/plugins.js +0 -26
- package/src/automations/unitTests/automationUtils.spec.js +0 -17
- package/src/utilities/plugins.ts +0 -22
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
cleanupAttachments,
|
|
14
14
|
} from "../../../utilities/rowProcessor"
|
|
15
15
|
import { FieldTypes } from "../../../constants"
|
|
16
|
-
import
|
|
16
|
+
import * as utils from "./utils"
|
|
17
17
|
import { fullSearch, paginatedSearch } from "./internalSearch"
|
|
18
18
|
import { getGlobalUsersFromMetadata } from "../../../utilities/global"
|
|
19
19
|
import * as inMemoryViews from "../../../db/inMemoryView"
|
|
@@ -30,7 +30,8 @@ import { finaliseRow, updateRelatedFormula } from "./staticFormula"
|
|
|
30
30
|
import * as exporters from "../view/exporters"
|
|
31
31
|
import { apiFileReturn } from "../../../utilities/fileSystem"
|
|
32
32
|
import {
|
|
33
|
-
|
|
33
|
+
Ctx,
|
|
34
|
+
UserCtx,
|
|
34
35
|
Database,
|
|
35
36
|
LinkDocumentValue,
|
|
36
37
|
Row,
|
|
@@ -69,7 +70,7 @@ async function getView(db: Database, viewName: string) {
|
|
|
69
70
|
return viewInfo
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
async function getRawTableData(ctx:
|
|
73
|
+
async function getRawTableData(ctx: Ctx, db: Database, tableId: string) {
|
|
73
74
|
let rows
|
|
74
75
|
if (tableId === InternalTables.USER_METADATA) {
|
|
75
76
|
await userController.fetchMetadata(ctx)
|
|
@@ -85,7 +86,7 @@ async function getRawTableData(ctx: BBContext, db: Database, tableId: string) {
|
|
|
85
86
|
return rows as Row[]
|
|
86
87
|
}
|
|
87
88
|
|
|
88
|
-
export async function patch(ctx:
|
|
89
|
+
export async function patch(ctx: UserCtx) {
|
|
89
90
|
const db = context.getAppDB()
|
|
90
91
|
const inputs = ctx.request.body
|
|
91
92
|
const tableId = inputs.tableId
|
|
@@ -95,7 +96,7 @@ export async function patch(ctx: BBContext) {
|
|
|
95
96
|
let dbTable = await db.get(tableId)
|
|
96
97
|
oldRow = await outputProcessing(
|
|
97
98
|
dbTable,
|
|
98
|
-
await findRow(ctx, tableId, inputs._id)
|
|
99
|
+
await utils.findRow(ctx, tableId, inputs._id)
|
|
99
100
|
)
|
|
100
101
|
} catch (err) {
|
|
101
102
|
if (isUserTable) {
|
|
@@ -117,8 +118,8 @@ export async function patch(ctx: BBContext) {
|
|
|
117
118
|
}
|
|
118
119
|
|
|
119
120
|
// this returns the table and row incase they have been updated
|
|
120
|
-
let { table, row } = inputProcessing(ctx.user
|
|
121
|
-
const validateResult = await
|
|
121
|
+
let { table, row } = inputProcessing(ctx.user, dbTable, combinedRow)
|
|
122
|
+
const validateResult = await utils.validate({
|
|
122
123
|
row,
|
|
123
124
|
table,
|
|
124
125
|
})
|
|
@@ -150,7 +151,7 @@ export async function patch(ctx: BBContext) {
|
|
|
150
151
|
})
|
|
151
152
|
}
|
|
152
153
|
|
|
153
|
-
export async function save(ctx:
|
|
154
|
+
export async function save(ctx: UserCtx) {
|
|
154
155
|
const db = context.getAppDB()
|
|
155
156
|
let inputs = ctx.request.body
|
|
156
157
|
inputs.tableId = ctx.params.tableId
|
|
@@ -161,8 +162,8 @@ export async function save(ctx: BBContext) {
|
|
|
161
162
|
|
|
162
163
|
// this returns the table and row incase they have been updated
|
|
163
164
|
const dbTable = await db.get(inputs.tableId)
|
|
164
|
-
let { table, row } = inputProcessing(ctx.user
|
|
165
|
-
const validateResult = await
|
|
165
|
+
let { table, row } = inputProcessing(ctx.user, dbTable, inputs)
|
|
166
|
+
const validateResult = await utils.validate({
|
|
166
167
|
row,
|
|
167
168
|
table,
|
|
168
169
|
})
|
|
@@ -185,7 +186,7 @@ export async function save(ctx: BBContext) {
|
|
|
185
186
|
})
|
|
186
187
|
}
|
|
187
188
|
|
|
188
|
-
export async function fetchView(ctx:
|
|
189
|
+
export async function fetchView(ctx: Ctx) {
|
|
189
190
|
const viewName = ctx.params.viewName
|
|
190
191
|
|
|
191
192
|
// if this is a table view being looked for just transfer to that
|
|
@@ -252,7 +253,7 @@ export async function fetchView(ctx: BBContext) {
|
|
|
252
253
|
return rows
|
|
253
254
|
}
|
|
254
255
|
|
|
255
|
-
export async function fetch(ctx:
|
|
256
|
+
export async function fetch(ctx: Ctx) {
|
|
256
257
|
const db = context.getAppDB()
|
|
257
258
|
|
|
258
259
|
const tableId = ctx.params.tableId
|
|
@@ -261,15 +262,15 @@ export async function fetch(ctx: BBContext) {
|
|
|
261
262
|
return outputProcessing(table, rows)
|
|
262
263
|
}
|
|
263
264
|
|
|
264
|
-
export async function find(ctx:
|
|
265
|
+
export async function find(ctx: Ctx) {
|
|
265
266
|
const db = dbCore.getDB(ctx.appId)
|
|
266
267
|
const table = await db.get(ctx.params.tableId)
|
|
267
|
-
let row = await findRow(ctx, ctx.params.tableId, ctx.params.rowId)
|
|
268
|
+
let row = await utils.findRow(ctx, ctx.params.tableId, ctx.params.rowId)
|
|
268
269
|
row = await outputProcessing(table, row)
|
|
269
270
|
return row
|
|
270
271
|
}
|
|
271
272
|
|
|
272
|
-
export async function destroy(ctx:
|
|
273
|
+
export async function destroy(ctx: Ctx) {
|
|
273
274
|
const db = context.getAppDB()
|
|
274
275
|
const { _id } = ctx.request.body
|
|
275
276
|
let row = await db.get(_id)
|
|
@@ -305,7 +306,7 @@ export async function destroy(ctx: BBContext) {
|
|
|
305
306
|
return { response, row }
|
|
306
307
|
}
|
|
307
308
|
|
|
308
|
-
export async function bulkDestroy(ctx:
|
|
309
|
+
export async function bulkDestroy(ctx: Ctx) {
|
|
309
310
|
const db = context.getAppDB()
|
|
310
311
|
const tableId = ctx.params.tableId
|
|
311
312
|
const table = await db.get(tableId)
|
|
@@ -344,7 +345,7 @@ export async function bulkDestroy(ctx: BBContext) {
|
|
|
344
345
|
return { response: { ok: true }, rows: processedRows }
|
|
345
346
|
}
|
|
346
347
|
|
|
347
|
-
export async function search(ctx:
|
|
348
|
+
export async function search(ctx: Ctx) {
|
|
348
349
|
// Fetch the whole table when running in cypress, as search doesn't work
|
|
349
350
|
if (!env.COUCH_DB_URL && env.isCypress()) {
|
|
350
351
|
return { rows: await fetch(ctx) }
|
|
@@ -376,14 +377,14 @@ export async function search(ctx: BBContext) {
|
|
|
376
377
|
return response
|
|
377
378
|
}
|
|
378
379
|
|
|
379
|
-
export async function validate(ctx:
|
|
380
|
-
return
|
|
380
|
+
export async function validate(ctx: Ctx) {
|
|
381
|
+
return utils.validate({
|
|
381
382
|
tableId: ctx.params.tableId,
|
|
382
383
|
row: ctx.request.body,
|
|
383
384
|
})
|
|
384
385
|
}
|
|
385
386
|
|
|
386
|
-
export async function exportRows(ctx:
|
|
387
|
+
export async function exportRows(ctx: Ctx) {
|
|
387
388
|
const db = context.getAppDB()
|
|
388
389
|
const table = await db.get(ctx.params.tableId)
|
|
389
390
|
const rowIds = ctx.request.body.rows
|
|
@@ -421,14 +422,14 @@ export async function exportRows(ctx: BBContext) {
|
|
|
421
422
|
return apiFileReturn(exporter(headers, rows))
|
|
422
423
|
}
|
|
423
424
|
|
|
424
|
-
export async function fetchEnrichedRow(ctx:
|
|
425
|
+
export async function fetchEnrichedRow(ctx: Ctx) {
|
|
425
426
|
const db = context.getAppDB()
|
|
426
427
|
const tableId = ctx.params.tableId
|
|
427
428
|
const rowId = ctx.params.rowId
|
|
428
429
|
// need table to work out where links go in row
|
|
429
430
|
let [table, row] = await Promise.all([
|
|
430
431
|
db.get(tableId),
|
|
431
|
-
findRow(ctx, tableId, rowId),
|
|
432
|
+
utils.findRow(ctx, tableId, rowId),
|
|
432
433
|
])
|
|
433
434
|
// get the link docs
|
|
434
435
|
const linkVals = (await linkRows.getLinkDocuments({
|
|
@@ -16,7 +16,10 @@ const { cloneDeep } = require("lodash/fp")
|
|
|
16
16
|
* updated.
|
|
17
17
|
* NOTE: this will only for affect static formulas.
|
|
18
18
|
*/
|
|
19
|
-
export async function updateRelatedFormula(
|
|
19
|
+
export async function updateRelatedFormula(
|
|
20
|
+
table: Table,
|
|
21
|
+
enrichedRows: Row[] | Row
|
|
22
|
+
) {
|
|
20
23
|
const db = context.getAppDB()
|
|
21
24
|
// no formula to update, we're done
|
|
22
25
|
if (!table.relatedFormula) {
|
|
@@ -155,7 +158,7 @@ export async function finaliseRow(
|
|
|
155
158
|
enrichedRow = await processFormulas(table, enrichedRow, { dynamic: false })
|
|
156
159
|
// this updates the related formulas in other rows based on the relations to this row
|
|
157
160
|
if (updateFormula) {
|
|
158
|
-
await
|
|
161
|
+
await updateRelatedFormula(table, enrichedRow)
|
|
159
162
|
}
|
|
160
163
|
return { row: enrichedRow, table }
|
|
161
164
|
}
|
|
@@ -7,6 +7,7 @@ import { BBContext, Row, Table } from "@budibase/types"
|
|
|
7
7
|
export { removeKeyNumbering } from "../../../integrations/base/utils"
|
|
8
8
|
const validateJs = require("validate.js")
|
|
9
9
|
const { cloneDeep } = require("lodash/fp")
|
|
10
|
+
import { Ctx } from "@budibase/types"
|
|
10
11
|
|
|
11
12
|
validateJs.extend(validateJs.validators.datetime, {
|
|
12
13
|
parse: function (value: string) {
|
|
@@ -25,7 +26,7 @@ export async function getDatasourceAndQuery(json: any) {
|
|
|
25
26
|
return makeExternalQuery(datasource, json)
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
export async function findRow(ctx:
|
|
29
|
+
export async function findRow(ctx: Ctx, tableId: string, rowId: string) {
|
|
29
30
|
const db = context.getAppDB()
|
|
30
31
|
let row
|
|
31
32
|
// TODO remove special user case in future
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { enrichPluginURLs } from "../../../utilities/plugins"
|
|
2
|
-
|
|
3
1
|
require("svelte/register")
|
|
4
2
|
|
|
5
3
|
const send = require("koa-send")
|
|
6
4
|
const { resolve, join } = require("../../../utilities/centralPath")
|
|
7
5
|
const uuid = require("uuid")
|
|
8
|
-
|
|
6
|
+
import { ObjectStoreBuckets } from "../../../constants"
|
|
9
7
|
const { processString } = require("@budibase/string-templates")
|
|
10
8
|
const {
|
|
11
9
|
loadHandlebarsFile,
|
|
@@ -13,8 +11,6 @@ const {
|
|
|
13
11
|
TOP_LEVEL_PATH,
|
|
14
12
|
} = require("../../../utilities/fileSystem")
|
|
15
13
|
const env = require("../../../environment")
|
|
16
|
-
const { clientLibraryPath } = require("../../../utilities")
|
|
17
|
-
const { attachmentsRelativeURL } = require("../../../utilities")
|
|
18
14
|
const { DocumentType } = require("../../../db/utils")
|
|
19
15
|
const { context, objectStore, utils } = require("@budibase/backend-core")
|
|
20
16
|
const AWS = require("aws-sdk")
|
|
@@ -33,7 +29,7 @@ async function prepareUpload({ s3Key, bucket, metadata, file }: any) {
|
|
|
33
29
|
return {
|
|
34
30
|
size: file.size,
|
|
35
31
|
name: file.name,
|
|
36
|
-
url:
|
|
32
|
+
url: objectStore.getAppFileUrl(s3Key),
|
|
37
33
|
extension: [...file.name.split(".")].pop(),
|
|
38
34
|
key: response.Key,
|
|
39
35
|
}
|
|
@@ -85,7 +81,7 @@ export const uploadFile = async function (ctx: any) {
|
|
|
85
81
|
|
|
86
82
|
return prepareUpload({
|
|
87
83
|
file,
|
|
88
|
-
s3Key: `${
|
|
84
|
+
s3Key: `${context.getProdAppId()}/attachments/${processedFileName}`,
|
|
89
85
|
bucket: ObjectStoreBuckets.APPS,
|
|
90
86
|
})
|
|
91
87
|
})
|
|
@@ -107,14 +103,14 @@ export const serveApp = async function (ctx: any) {
|
|
|
107
103
|
|
|
108
104
|
if (!env.isJest()) {
|
|
109
105
|
const App = require("./templates/BudibaseApp.svelte").default
|
|
110
|
-
const plugins = enrichPluginURLs(appInfo.usedPlugins)
|
|
106
|
+
const plugins = objectStore.enrichPluginURLs(appInfo.usedPlugins)
|
|
111
107
|
const { head, html, css } = App.render({
|
|
112
108
|
metaImage:
|
|
113
109
|
"https://res.cloudinary.com/daog6scxm/image/upload/v1666109324/meta-images/budibase-meta-image_uukc1m.png",
|
|
114
110
|
title: appInfo.name,
|
|
115
111
|
production: env.isProd(),
|
|
116
112
|
appId,
|
|
117
|
-
clientLibPath:
|
|
113
|
+
clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
|
|
118
114
|
usedPlugins: plugins,
|
|
119
115
|
})
|
|
120
116
|
|
|
@@ -139,7 +135,7 @@ export const serveBuilderPreview = async function (ctx: any) {
|
|
|
139
135
|
let appId = context.getAppId()
|
|
140
136
|
const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`)
|
|
141
137
|
ctx.body = await processString(previewHbs, {
|
|
142
|
-
clientLibPath:
|
|
138
|
+
clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
|
|
143
139
|
})
|
|
144
140
|
} else {
|
|
145
141
|
// just return the app info for jest to assert on
|
package/src/api/routes/index.ts
CHANGED
|
@@ -26,13 +26,14 @@ import cloudRoutes from "./cloud"
|
|
|
26
26
|
import migrationRoutes from "./migrations"
|
|
27
27
|
import pluginRoutes from "./plugin"
|
|
28
28
|
import Router from "@koa/router"
|
|
29
|
-
import { api } from "@budibase/pro"
|
|
29
|
+
import { api as pro } from "@budibase/pro"
|
|
30
30
|
|
|
31
31
|
export { default as staticRoutes } from "./static"
|
|
32
32
|
export { default as publicRoutes } from "./public"
|
|
33
33
|
|
|
34
|
-
const appBackupRoutes =
|
|
35
|
-
const scheduleRoutes =
|
|
34
|
+
const appBackupRoutes = pro.appBackups
|
|
35
|
+
const scheduleRoutes = pro.schedules
|
|
36
|
+
|
|
36
37
|
export const mainRoutes: Router[] = [
|
|
37
38
|
appBackupRoutes,
|
|
38
39
|
backupRoutes,
|
package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap}
RENAMED
|
File without changes
|
|
@@ -12,13 +12,11 @@ jest.mock("../../../utilities/redis", () => ({
|
|
|
12
12
|
shutdown: jest.fn(),
|
|
13
13
|
}))
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const { AppStatus } = require("../../../db/utils")
|
|
21
|
-
const { events } = require("@budibase/backend-core")
|
|
15
|
+
import { clearAllApps, checkBuilderEndpoint } from "./utilities/TestFunctions"
|
|
16
|
+
import * as setup from "./utilities"
|
|
17
|
+
import { AppStatus } from "../../../db/utils"
|
|
18
|
+
import { events } from "@budibase/backend-core"
|
|
19
|
+
import env from "../../../environment"
|
|
22
20
|
|
|
23
21
|
describe("/applications", () => {
|
|
24
22
|
let request = setup.getRequest()
|
|
@@ -234,4 +232,39 @@ describe("/applications", () => {
|
|
|
234
232
|
expect(getRes.body.application.updatedAt).toBeDefined()
|
|
235
233
|
})
|
|
236
234
|
})
|
|
235
|
+
|
|
236
|
+
describe("sync", () => {
|
|
237
|
+
it("app should sync correctly", async () => {
|
|
238
|
+
const res = await request
|
|
239
|
+
.post(`/api/applications/${config.getAppId()}/sync`)
|
|
240
|
+
.set(config.defaultHeaders())
|
|
241
|
+
.expect("Content-Type", /json/)
|
|
242
|
+
.expect(200)
|
|
243
|
+
expect(res.body.message).toEqual("App sync completed successfully.")
|
|
244
|
+
})
|
|
245
|
+
|
|
246
|
+
it("app should not sync if production", async () => {
|
|
247
|
+
const res = await request
|
|
248
|
+
.post(`/api/applications/app_123456/sync`)
|
|
249
|
+
.set(config.defaultHeaders())
|
|
250
|
+
.expect("Content-Type", /json/)
|
|
251
|
+
.expect(400)
|
|
252
|
+
expect(res.body.message).toEqual(
|
|
253
|
+
"This action cannot be performed for production apps"
|
|
254
|
+
)
|
|
255
|
+
})
|
|
256
|
+
|
|
257
|
+
it("app should not sync if sync is disabled", async () => {
|
|
258
|
+
env._set("DISABLE_AUTO_PROD_APP_SYNC", true)
|
|
259
|
+
const res = await request
|
|
260
|
+
.post(`/api/applications/${config.getAppId()}/sync`)
|
|
261
|
+
.set(config.defaultHeaders())
|
|
262
|
+
.expect("Content-Type", /json/)
|
|
263
|
+
.expect(200)
|
|
264
|
+
expect(res.body.message).toEqual(
|
|
265
|
+
"App sync disabled. You can reenable with the DISABLE_AUTO_PROD_APP_SYNC environment variable."
|
|
266
|
+
)
|
|
267
|
+
env._set("DISABLE_AUTO_PROD_APP_SYNC", false)
|
|
268
|
+
})
|
|
269
|
+
})
|
|
237
270
|
})
|
|
@@ -8,10 +8,10 @@ jest.mock("@budibase/backend-core", () => {
|
|
|
8
8
|
}
|
|
9
9
|
})
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
import * as setup from "./utilities"
|
|
12
|
+
import { events } from "@budibase/backend-core"
|
|
13
|
+
import sdk from "../../../sdk"
|
|
14
|
+
import { checkBuilderEndpoint } from "./utilities/TestFunctions"
|
|
15
15
|
describe("/backups", () => {
|
|
16
16
|
let request = setup.getRequest()
|
|
17
17
|
let config = setup.getConfig()
|
|
@@ -30,7 +30,7 @@ describe("/backups", () => {
|
|
|
30
30
|
.expect(200)
|
|
31
31
|
expect(res.text).toBeDefined()
|
|
32
32
|
expect(res.headers["content-type"]).toEqual("application/gzip")
|
|
33
|
-
expect(events.app.exported
|
|
33
|
+
expect(events.app.exported).toBeCalledTimes(1)
|
|
34
34
|
})
|
|
35
35
|
|
|
36
36
|
it("should apply authorization to endpoint", async () => {
|
|
@@ -41,4 +41,15 @@ describe("/backups", () => {
|
|
|
41
41
|
})
|
|
42
42
|
})
|
|
43
43
|
})
|
|
44
|
-
|
|
44
|
+
|
|
45
|
+
describe("calculateBackupStats", () => {
|
|
46
|
+
it("should be able to calculate the backup statistics", async () => {
|
|
47
|
+
config.createAutomation()
|
|
48
|
+
config.createScreen()
|
|
49
|
+
let res = await sdk.backups.calculateBackupStats(config.getAppId())
|
|
50
|
+
expect(res.automations).toEqual(1)
|
|
51
|
+
expect(res.datasources).toEqual(1)
|
|
52
|
+
expect(res.screens).toEqual(1)
|
|
53
|
+
})
|
|
54
|
+
})
|
|
55
|
+
})
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { db as dbCore } from "@budibase/backend-core"
|
|
2
|
+
import { AppStatus } from "../../../db/utils"
|
|
3
|
+
|
|
4
|
+
import * as setup from "./utilities"
|
|
5
|
+
|
|
6
|
+
describe("/cloud", () => {
|
|
7
|
+
let request = setup.getRequest()
|
|
8
|
+
let config = setup.getConfig()
|
|
9
|
+
|
|
10
|
+
afterAll(setup.afterAll)
|
|
11
|
+
|
|
12
|
+
beforeEach(async () => {
|
|
13
|
+
await config.init()
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
afterEach(async () => {
|
|
17
|
+
// clear all mocks
|
|
18
|
+
jest.clearAllMocks()
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
describe("import", () => {
|
|
22
|
+
it("should be able to import apps", async () => {
|
|
23
|
+
// first we need to delete any existing apps on the system so it looks clean otherwise the
|
|
24
|
+
// import will not run
|
|
25
|
+
await request
|
|
26
|
+
.delete(
|
|
27
|
+
`/api/applications/${dbCore.getProdAppID(
|
|
28
|
+
config.getAppId()
|
|
29
|
+
)}?unpublish=true`
|
|
30
|
+
)
|
|
31
|
+
.set(config.defaultHeaders())
|
|
32
|
+
.expect("Content-Type", /json/)
|
|
33
|
+
.expect(200)
|
|
34
|
+
await request
|
|
35
|
+
.delete(`/api/applications/${config.getAppId()}`)
|
|
36
|
+
.set(config.defaultHeaders())
|
|
37
|
+
.expect("Content-Type", /json/)
|
|
38
|
+
.expect(200)
|
|
39
|
+
|
|
40
|
+
// get a count of apps before the import
|
|
41
|
+
const preImportApps = await request
|
|
42
|
+
.get(`/api/applications?status=${AppStatus.ALL}`)
|
|
43
|
+
.set(config.defaultHeaders())
|
|
44
|
+
.expect("Content-Type", /json/)
|
|
45
|
+
.expect(200)
|
|
46
|
+
|
|
47
|
+
// Perform the import
|
|
48
|
+
const res = await request
|
|
49
|
+
.post(`/api/cloud/import`)
|
|
50
|
+
.attach("importFile", "src/api/routes/tests/data/export-test.tar.gz")
|
|
51
|
+
.set(config.defaultHeaders())
|
|
52
|
+
.expect(200)
|
|
53
|
+
expect(res.body.message).toEqual("Apps successfully imported.")
|
|
54
|
+
|
|
55
|
+
// get a count of apps after the import
|
|
56
|
+
const postImportApps = await request
|
|
57
|
+
.get(`/api/applications?status=${AppStatus.ALL}`)
|
|
58
|
+
.set(config.defaultHeaders())
|
|
59
|
+
.expect("Content-Type", /json/)
|
|
60
|
+
.expect(200)
|
|
61
|
+
|
|
62
|
+
// There are two apps in the file that was imported so check for this
|
|
63
|
+
expect(postImportApps.body.length).toEqual(2)
|
|
64
|
+
})
|
|
65
|
+
})
|
|
66
|
+
})
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
jest.mock("pg")
|
|
2
|
+
import * as setup from "./utilities"
|
|
3
|
+
import { checkBuilderEndpoint } from "./utilities/TestFunctions"
|
|
4
|
+
import { checkCacheForDynamicVariable } from "../../../threads/utils"
|
|
5
|
+
import { events } from "@budibase/backend-core"
|
|
2
6
|
|
|
3
|
-
let setup = require("./utilities")
|
|
4
7
|
let { basicDatasource } = setup.structures
|
|
5
|
-
let { checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
|
6
8
|
const pg = require("pg")
|
|
7
|
-
const { checkCacheForDynamicVariable } = require("../../../threads/utils")
|
|
8
|
-
const { events } = require("@budibase/backend-core")
|
|
9
9
|
|
|
10
10
|
describe("/datasources", () => {
|
|
11
11
|
let request = setup.getRequest()
|
|
12
12
|
let config = setup.getConfig()
|
|
13
|
-
let datasource
|
|
13
|
+
let datasource: any
|
|
14
14
|
|
|
15
15
|
afterAll(setup.afterAll)
|
|
16
16
|
|
|
@@ -26,7 +26,7 @@ describe("/datasources", () => {
|
|
|
26
26
|
.post(`/api/datasources`)
|
|
27
27
|
.send(basicDatasource())
|
|
28
28
|
.set(config.defaultHeaders())
|
|
29
|
-
.expect(
|
|
29
|
+
.expect("Content-Type", /json/)
|
|
30
30
|
.expect(200)
|
|
31
31
|
|
|
32
32
|
expect(res.body.datasource.name).toEqual("Test")
|
|
@@ -42,7 +42,7 @@ describe("/datasources", () => {
|
|
|
42
42
|
.put(`/api/datasources/${datasource._id}`)
|
|
43
43
|
.send(datasource)
|
|
44
44
|
.set(config.defaultHeaders())
|
|
45
|
-
.expect(
|
|
45
|
+
.expect("Content-Type", /json/)
|
|
46
46
|
.expect(200)
|
|
47
47
|
|
|
48
48
|
expect(res.body.datasource.name).toEqual("Updated Test")
|
|
@@ -51,25 +51,34 @@ describe("/datasources", () => {
|
|
|
51
51
|
})
|
|
52
52
|
|
|
53
53
|
describe("dynamic variables", () => {
|
|
54
|
-
async function preview(
|
|
54
|
+
async function preview(
|
|
55
|
+
datasource: any,
|
|
56
|
+
fields: { path: string; queryString: string }
|
|
57
|
+
) {
|
|
55
58
|
return config.previewQuery(request, config, datasource, fields)
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
it("should invalidate changed or removed variables", async () => {
|
|
59
62
|
const { datasource, query } = await config.dynamicVariableDatasource()
|
|
60
63
|
// preview once to cache variables
|
|
61
|
-
await preview(datasource, {
|
|
64
|
+
await preview(datasource, {
|
|
65
|
+
path: "www.test.com",
|
|
66
|
+
queryString: "test={{ variable3 }}",
|
|
67
|
+
})
|
|
62
68
|
// check variables in cache
|
|
63
|
-
let contents = await checkCacheForDynamicVariable(
|
|
69
|
+
let contents = await checkCacheForDynamicVariable(
|
|
70
|
+
query._id,
|
|
71
|
+
"variable3"
|
|
72
|
+
)
|
|
64
73
|
expect(contents.rows.length).toEqual(1)
|
|
65
|
-
|
|
74
|
+
|
|
66
75
|
// update the datasource to remove the variables
|
|
67
76
|
datasource.config.dynamicVariables = []
|
|
68
77
|
const res = await request
|
|
69
78
|
.put(`/api/datasources/${datasource._id}`)
|
|
70
79
|
.send(datasource)
|
|
71
80
|
.set(config.defaultHeaders())
|
|
72
|
-
.expect(
|
|
81
|
+
.expect("Content-Type", /json/)
|
|
73
82
|
.expect(200)
|
|
74
83
|
expect(res.body.errors).toBeUndefined()
|
|
75
84
|
|
|
@@ -85,7 +94,7 @@ describe("/datasources", () => {
|
|
|
85
94
|
const res = await request
|
|
86
95
|
.get(`/api/datasources`)
|
|
87
96
|
.set(config.defaultHeaders())
|
|
88
|
-
.expect(
|
|
97
|
+
.expect("Content-Type", /json/)
|
|
89
98
|
.expect(200)
|
|
90
99
|
|
|
91
100
|
const datasources = res.body
|
|
@@ -160,7 +169,7 @@ describe("/datasources", () => {
|
|
|
160
169
|
const res = await request
|
|
161
170
|
.get(`/api/datasources`)
|
|
162
171
|
.set(config.defaultHeaders())
|
|
163
|
-
.expect(
|
|
172
|
+
.expect("Content-Type", /json/)
|
|
164
173
|
.expect(200)
|
|
165
174
|
|
|
166
175
|
expect(res.body.length).toEqual(1)
|
|
@@ -174,6 +183,5 @@ describe("/datasources", () => {
|
|
|
174
183
|
url: `/api/datasources/${datasource._id}/${datasource._rev}`,
|
|
175
184
|
})
|
|
176
185
|
})
|
|
177
|
-
|
|
178
186
|
})
|
|
179
187
|
})
|