@budibase/server 2.2.12-alpha.4 → 2.2.12-alpha.41
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/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
- package/builder/assets/{index.11f4795c.js → index.5d8a522b.js} +408 -419
- package/builder/assets/index.80229ab4.css +6 -0
- package/builder/index.html +2 -2
- package/coverage/clover.xml +4294 -4395
- package/coverage/coverage-final.json +278 -279
- package/coverage/lcov-report/index.html +395 -395
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/application.ts.html +105 -105
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +37 -37
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +16 -16
- package/coverage/lcov-report/src/api/controllers/component.ts.html +12 -12
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +24 -24
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +7 -7
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +83 -83
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +28 -28
- package/coverage/lcov-report/src/api/controllers/index.html +98 -98
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/layout.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/metadata.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/migrations.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/permission.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +20 -20
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +31 -31
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +26 -26
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +3 -3
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +31 -31
- package/coverage/lcov-report/src/api/controllers/public/index.html +58 -58
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +25 -25
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +15 -15
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +21 -21
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +21 -21
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +27 -27
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +8 -8
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +14 -14
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +12 -12
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +23 -23
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +16 -16
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +20 -20
- package/coverage/lcov-report/src/api/controllers/query/index.html +15 -15
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +28 -28
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/role.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/routing.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +55 -37
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +44 -44
- package/coverage/lcov-report/src/api/controllers/row/index.html +58 -58
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +36 -36
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +77 -74
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +146 -146
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +33 -33
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +28 -28
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +12 -12
- package/coverage/lcov-report/src/api/controllers/script.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/static/index.html +15 -15
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +34 -34
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +60 -60
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +42 -42
- package/coverage/lcov-report/src/api/controllers/table/index.html +48 -48
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +155 -68
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +58 -61
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +93 -96
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +21 -21
- package/coverage/lcov-report/src/api/controllers/user.ts.html +103 -79
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +64 -19
- package/coverage/lcov-report/src/api/controllers/view/index.html +38 -38
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +74 -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 +8 -8
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +15 -15
- package/coverage/lcov-report/src/api/index.html +15 -15
- package/coverage/lcov-report/src/api/index.ts.html +31 -31
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/application.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/auth.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/automation.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/backup.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/cloud.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/component.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/dev.ts.html +17 -17
- package/coverage/lcov-report/src/api/routes/index.html +66 -66
- package/coverage/lcov-report/src/api/routes/index.ts.html +36 -36
- package/coverage/lcov-report/src/api/routes/integration.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/layout.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/metadata.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/permission.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +16 -16
- package/coverage/lcov-report/src/api/routes/public/index.html +24 -24
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +60 -60
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +5 -5
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/public/tests/index.html +7 -7
- package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +5 -5
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +21 -21
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +5 -5
- package/coverage/lcov-report/src/api/routes/query.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/role.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/routing.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/row.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/screen.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/script.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/static.ts.html +18 -18
- package/coverage/lcov-report/src/api/routes/table.ts.html +29 -98
- package/coverage/lcov-report/src/api/routes/templates.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +23 -23
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/user.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/utils/index.html +3 -3
- package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +44 -44
- package/coverage/lcov-report/src/api/routes/view.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +13 -13
- package/coverage/lcov-report/src/app.ts.html +22 -16
- package/coverage/lcov-report/src/automations/actions.ts.html +31 -31
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +61 -61
- package/coverage/lcov-report/src/automations/bullboard.ts.html +19 -19
- package/coverage/lcov-report/src/automations/index.html +53 -53
- package/coverage/lcov-report/src/automations/index.ts.html +23 -23
- package/coverage/lcov-report/src/automations/logging/index.html +3 -3
- package/coverage/lcov-report/src/automations/logging/index.ts.html +10 -10
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +11 -11
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/delay.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/discord.ts.html +11 -11
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +12 -12
- package/coverage/lcov-report/src/automations/steps/index.html +75 -75
- package/coverage/lcov-report/src/automations/steps/integromat.ts.html +10 -10
- package/coverage/lcov-report/src/automations/steps/loop.ts.html +5 -5
- package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +19 -19
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +43 -43
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +10 -10
- package/coverage/lcov-report/src/automations/steps/slack.ts.html +10 -10
- package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +9 -9
- package/coverage/lcov-report/src/automations/steps/utils.ts.html +12 -12
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +8 -8
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +15 -15
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +24 -24
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/index.html +17 -17
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +10 -10
- package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +6 -6
- package/coverage/lcov-report/src/automations/triggers.ts.html +53 -38
- package/coverage/lcov-report/src/automations/utils.ts.html +65 -65
- package/coverage/lcov-report/src/constants/index.html +19 -19
- package/coverage/lcov-report/src/constants/index.ts.html +80 -80
- package/coverage/lcov-report/src/constants/layouts.ts.html +9 -9
- package/coverage/lcov-report/src/constants/screens.ts.html +4 -4
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -45
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +8 -8
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +8 -8
- package/coverage/lcov-report/src/db/defaultData/index.html +43 -43
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +8 -8
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +8 -8
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +26 -26
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +13 -13
- package/coverage/lcov-report/src/db/index.html +32 -32
- package/coverage/lcov-report/src/db/index.ts.html +10 -10
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +38 -38
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +7 -7
- package/coverage/lcov-report/src/db/linkedRows/index.html +37 -37
- package/coverage/lcov-report/src/db/linkedRows/index.ts.html +40 -40
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +25 -25
- package/coverage/lcov-report/src/db/newid.ts.html +5 -5
- package/coverage/lcov-report/src/db/utils.ts.html +75 -75
- package/coverage/lcov-report/src/definitions/automations.ts.html +5 -5
- package/coverage/lcov-report/src/definitions/datasource.ts.html +5 -5
- package/coverage/lcov-report/src/definitions/index.html +4 -4
- package/coverage/lcov-report/src/environment.ts.html +16 -16
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +14 -14
- package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +8 -8
- package/coverage/lcov-report/src/events/index.html +20 -20
- package/coverage/lcov-report/src/events/index.ts.html +7 -7
- package/coverage/lcov-report/src/events/utils.ts.html +11 -11
- package/coverage/lcov-report/src/index.html +36 -36
- package/coverage/lcov-report/src/index.ts.html +6 -6
- package/coverage/lcov-report/src/integrations/airtable.ts.html +10 -10
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +9 -9
- package/coverage/lcov-report/src/integrations/base/index.html +20 -20
- package/coverage/lcov-report/src/integrations/base/query.ts.html +3 -3
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +37 -37
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +21 -21
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +10 -10
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +15 -15
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +9 -9
- package/coverage/lcov-report/src/integrations/firebase.ts.html +12 -12
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +41 -41
- package/coverage/lcov-report/src/integrations/index.html +125 -125
- package/coverage/lcov-report/src/integrations/index.ts.html +40 -40
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +31 -31
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +421 -289
- package/coverage/lcov-report/src/integrations/mysql.ts.html +27 -27
- package/coverage/lcov-report/src/integrations/oracle.ts.html +31 -31
- package/coverage/lcov-report/src/integrations/postgres.ts.html +22 -22
- package/coverage/lcov-report/src/integrations/queries/index.html +5 -5
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +6 -6
- package/coverage/lcov-report/src/integrations/redis.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/rest.ts.html +28 -28
- package/coverage/lcov-report/src/integrations/s3.ts.html +17 -17
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +15 -15
- package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/src/integrations/utils.ts.html +49 -49
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +11 -11
- package/coverage/lcov-report/src/middleware/authorized.ts.html +31 -19
- package/coverage/lcov-report/src/middleware/builder.ts.html +15 -15
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +18 -15
- package/coverage/lcov-report/src/middleware/index.html +40 -40
- package/coverage/lcov-report/src/middleware/joi-validator.ts.html +10 -10
- package/coverage/lcov-report/src/middleware/publicApi.ts.html +9 -9
- package/coverage/lcov-report/src/middleware/resourceId.ts.html +23 -23
- package/coverage/lcov-report/src/middleware/selfhost.ts.html +2 -2
- package/coverage/lcov-report/src/middleware/utils.ts.html +3 -3
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +31 -31
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +13 -13
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +21 -21
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +10 -10
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +19 -19
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +9 -9
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +13 -13
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +23 -23
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +26 -26
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +14 -14
- package/coverage/lcov-report/src/migrations/functions/index.html +18 -18
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +11 -11
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +11 -11
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +3 -3
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/index.html +15 -15
- package/coverage/lcov-report/src/migrations/index.ts.html +43 -43
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/tests/index.html +6 -6
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/applications/index.html +11 -11
- package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +6 -6
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +24 -24
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +15 -15
- package/coverage/lcov-report/src/sdk/app/automations/index.html +7 -7
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +8 -8
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +30 -30
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +24 -24
- package/coverage/lcov-report/src/sdk/app/backups/index.html +27 -27
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +7 -7
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +12 -12
- package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +8 -8
- package/coverage/lcov-report/src/sdk/app/rows/index.html +8 -8
- package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +6 -6
- package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/tables/index.html +11 -11
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +16 -16
- package/coverage/lcov-report/src/sdk/index.html +5 -5
- package/coverage/lcov-report/src/sdk/index.ts.html +11 -11
- package/coverage/lcov-report/src/sdk/users/index.html +6 -6
- package/coverage/lcov-report/src/sdk/users/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +29 -29
- package/coverage/lcov-report/src/startup.ts.html +40 -55
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +108 -108
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +20 -20
- package/coverage/lcov-report/src/tests/utilities/index.html +30 -30
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +2 -2
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +231 -42
- package/coverage/lcov-report/src/threads/automation.ts.html +202 -190
- package/coverage/lcov-report/src/threads/index.html +43 -43
- package/coverage/lcov-report/src/threads/index.ts.html +38 -38
- package/coverage/lcov-report/src/threads/query.ts.html +12 -12
- package/coverage/lcov-report/src/threads/utils.ts.html +26 -26
- package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/centralPath.ts.html +5 -5
- package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +10 -10
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +12 -12
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +20 -20
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +42 -42
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +6 -6
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +9 -9
- package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +5 -5
- package/coverage/lcov-report/src/utilities/global.ts.html +54 -54
- package/coverage/lcov-report/src/utilities/index.html +74 -89
- package/coverage/lcov-report/src/utilities/index.ts.html +32 -32
- package/coverage/lcov-report/src/utilities/redis.ts.html +35 -35
- 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 +32 -32
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +67 -67
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +9 -9
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +26 -26
- package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +173 -233
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +8 -8
- package/coverage/lcov-report/src/utilities/security.ts.html +13 -13
- package/coverage/lcov-report/src/utilities/usageQuota/index.html +9 -9
- package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +8 -8
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +61 -34
- package/coverage/lcov-report/src/watch.ts.html +20 -20
- package/coverage/lcov-report/src/websocket.ts.html +5 -5
- package/coverage/lcov.info +10214 -9826
- package/dist/api/controllers/query/index.js +5 -2
- package/dist/api/controllers/row/ExternalRequest.js +7 -0
- package/dist/api/controllers/row/internal.js +12 -8
- package/dist/api/controllers/static/index.js +7 -4
- package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
- package/dist/api/controllers/table/external.js +8 -30
- package/dist/api/controllers/table/index.js +44 -15
- package/dist/api/controllers/table/internal.js +6 -7
- package/dist/api/controllers/table/utils.js +9 -9
- package/dist/api/controllers/user.js +14 -6
- package/dist/api/controllers/view/exporters.js +22 -6
- package/dist/api/controllers/view/index.js +19 -34
- package/dist/api/controllers/view/viewBuilder.js +15 -2
- package/dist/api/routes/analytics.js +2 -1
- package/dist/api/routes/apikeys.js +2 -1
- package/dist/api/routes/application.js +2 -1
- package/dist/api/routes/auth.js +2 -1
- package/dist/api/routes/automation.js +2 -1
- package/dist/api/routes/backup.js +2 -1
- package/dist/api/routes/cloud.js +2 -1
- package/dist/api/routes/component.js +2 -1
- package/dist/api/routes/datasource.js +2 -1
- package/dist/api/routes/deploy.js +2 -1
- package/dist/api/routes/dev.js +2 -1
- package/dist/api/routes/integration.js +2 -1
- package/dist/api/routes/layout.js +2 -1
- package/dist/api/routes/metadata.js +2 -1
- package/dist/api/routes/migrations.js +2 -1
- package/dist/api/routes/permission.js +2 -1
- package/dist/api/routes/query.js +2 -1
- package/dist/api/routes/role.js +2 -1
- package/dist/api/routes/routing.js +2 -1
- package/dist/api/routes/screen.js +2 -1
- package/dist/api/routes/script.js +2 -1
- package/dist/api/routes/static.js +6 -5
- package/dist/api/routes/table.js +8 -38
- package/dist/api/routes/templates.js +2 -1
- package/dist/api/routes/user.js +2 -1
- package/dist/api/routes/utils/validators.js +1 -1
- package/dist/api/routes/view.js +2 -1
- package/dist/api/routes/webhook.js +2 -1
- package/dist/app.js +9 -7
- package/dist/automations/logging/index.js +5 -25
- package/dist/automations/triggers.js +1 -0
- package/dist/db/index.js +5 -2
- package/dist/db/linkedRows/LinkController.js +2 -1
- package/dist/db/linkedRows/LinkDocument.js +2 -1
- package/dist/db/newid.js +4 -2
- package/dist/environment.js +2 -1
- package/dist/events/AutomationEmitter.js +2 -1
- package/dist/events/BudibaseEmitter.js +2 -1
- package/dist/events/index.js +2 -1
- package/dist/integrations/index.js +5 -5
- package/dist/integrations/mongodb.js +311 -271
- package/dist/middleware/authorized.js +2 -1
- package/dist/middleware/builder.js +4 -2
- package/dist/middleware/currentapp.js +6 -3
- package/dist/middleware/publicApi.js +4 -2
- package/dist/middleware/selfhost.js +4 -1
- package/dist/package.json +9 -7
- package/dist/startup.js +17 -17
- package/dist/threads/automation.js +9 -5
- package/dist/threads/index.js +4 -4
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/filesystem.js +3 -3
- package/dist/utilities/schema.js +108 -0
- package/dist/utilities/scriptRunner.js +2 -1
- package/dist/utilities/statusCodes.js +2 -1
- package/dist/utilities/workerRequests.js +2 -0
- package/dist/watch.js +2 -25
- package/jest.config.ts +5 -2
- package/package.json +10 -8
- package/src/api/controllers/query/index.ts +2 -2
- package/src/api/controllers/row/ExternalRequest.ts +6 -0
- package/src/api/controllers/row/internal.ts +10 -9
- package/src/api/controllers/static/index.ts +1 -1
- package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
- package/src/api/controllers/table/external.ts +10 -10
- package/src/api/controllers/table/index.ts +46 -17
- package/src/api/controllers/table/internal.ts +6 -7
- package/src/api/controllers/table/utils.ts +12 -13
- package/src/api/controllers/user.ts +21 -13
- package/src/api/controllers/view/exporters.ts +20 -5
- package/src/api/controllers/view/index.ts +21 -12
- package/src/api/controllers/view/tests/viewBuilder.spec.js +1 -1
- package/src/api/controllers/view/viewBuilder.ts +1 -1
- package/src/api/routes/analytics.ts +1 -1
- package/src/api/routes/apikeys.ts +1 -1
- package/src/api/routes/application.ts +1 -1
- package/src/api/routes/auth.ts +1 -1
- package/src/api/routes/automation.ts +1 -1
- package/src/api/routes/backup.ts +1 -1
- package/src/api/routes/cloud.ts +1 -1
- package/src/api/routes/component.ts +1 -1
- package/src/api/routes/datasource.ts +1 -1
- package/src/api/routes/deploy.ts +1 -1
- package/src/api/routes/dev.ts +1 -1
- package/src/api/routes/integration.ts +1 -1
- package/src/api/routes/layout.ts +1 -1
- package/src/api/routes/metadata.ts +1 -1
- package/src/api/routes/migrations.ts +1 -1
- package/src/api/routes/permission.ts +1 -1
- package/src/api/routes/query.ts +1 -1
- package/src/api/routes/role.ts +1 -1
- package/src/api/routes/routing.ts +1 -1
- package/src/api/routes/screen.ts +1 -1
- package/src/api/routes/script.ts +1 -1
- package/src/api/routes/static.ts +2 -2
- package/src/api/routes/table.ts +16 -39
- package/src/api/routes/templates.ts +1 -1
- package/src/api/routes/tests/misc.spec.js +4 -10
- package/src/api/routes/tests/plugin.spec.ts +10 -10
- package/src/api/routes/tests/table.spec.js +8 -30
- package/src/api/routes/tests/user.spec.js +20 -1
- package/src/api/routes/tests/utilities/TestFunctions.ts +1 -1
- package/src/api/routes/user.ts +1 -1
- package/src/api/routes/utils/validators.ts +1 -1
- package/src/api/routes/view.ts +1 -1
- package/src/api/routes/webhook.ts +1 -1
- package/src/app.ts +5 -3
- package/src/automations/logging/index.ts +1 -1
- package/src/automations/tests/loop.spec.ts +45 -0
- package/src/automations/triggers.ts +6 -1
- package/src/db/index.ts +1 -1
- package/src/db/linkedRows/LinkController.ts +1 -1
- package/src/db/linkedRows/LinkDocument.ts +1 -1
- package/src/db/newid.ts +1 -1
- package/src/db/tests/linkController.spec.js +1 -1
- package/src/environment.ts +1 -1
- package/src/events/AutomationEmitter.ts +1 -1
- package/src/events/BudibaseEmitter.ts +1 -1
- package/src/events/index.ts +1 -1
- package/src/integrations/index.ts +4 -4
- package/src/integrations/mongodb.ts +315 -271
- package/src/integrations/tests/rest.spec.ts +15 -13
- package/src/middleware/authorized.ts +5 -1
- package/src/middleware/builder.ts +1 -1
- package/src/middleware/currentapp.ts +4 -3
- package/src/middleware/publicApi.ts +1 -1
- package/src/middleware/selfhost.ts +1 -1
- package/src/middleware/tests/authorized.spec.js +1 -1
- package/src/middleware/tests/currentapp.spec.js +1 -1
- package/src/middleware/tests/selfhost.spec.js +1 -1
- package/src/startup.ts +3 -8
- package/src/tests/jestEnv.ts +13 -0
- package/src/tests/jestSetup.ts +0 -14
- package/src/tests/utilities/TestConfiguration.ts +1 -1
- package/src/tests/utilities/structures.ts +65 -2
- package/src/threads/automation.ts +9 -5
- package/src/threads/index.ts +1 -1
- package/src/utilities/fileSystem/filesystem.ts +1 -1
- package/src/utilities/schema.ts +141 -0
- package/src/utilities/scriptRunner.ts +1 -1
- package/src/utilities/statusCodes.ts +1 -1
- package/src/utilities/workerRequests.ts +10 -1
- package/src/watch.ts +1 -1
- package/tsconfig.json +2 -1
- package/builder/assets/index.fa480d5b.css +0 -6
- package/coverage/lcov-report/src/utilities/statusCodes.ts.html +0 -106
- package/dist/utilities/csvParser.js +0 -152
- package/src/utilities/csvParser.ts +0 -161
- package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
- package/src/utilities/tests/csvParser.spec.js +0 -112
|
@@ -4,19 +4,21 @@ import { getGlobalUsers, getRawGlobalUser } from "../../utilities/global"
|
|
|
4
4
|
import { getFullUser } from "../../utilities/users"
|
|
5
5
|
import {
|
|
6
6
|
context,
|
|
7
|
-
constants,
|
|
8
7
|
roles as rolesCore,
|
|
9
8
|
db as dbCore,
|
|
10
9
|
} from "@budibase/backend-core"
|
|
11
|
-
import { BBContext, User } from "@budibase/types"
|
|
10
|
+
import { BBContext, Ctx, SyncUserRequest, User } from "@budibase/types"
|
|
12
11
|
import sdk from "../../sdk"
|
|
13
12
|
|
|
14
|
-
export async function syncUser(ctx:
|
|
13
|
+
export async function syncUser(ctx: Ctx<SyncUserRequest>) {
|
|
15
14
|
let deleting = false,
|
|
16
15
|
user: User | any
|
|
17
16
|
const userId = ctx.params.id
|
|
17
|
+
|
|
18
|
+
const previousUser = ctx.request.body?.previousUser
|
|
19
|
+
|
|
18
20
|
try {
|
|
19
|
-
user = await getRawGlobalUser(userId)
|
|
21
|
+
user = (await getRawGlobalUser(userId)) as User
|
|
20
22
|
} catch (err: any) {
|
|
21
23
|
if (err && err.status === 404) {
|
|
22
24
|
user = {}
|
|
@@ -25,6 +27,11 @@ export async function syncUser(ctx: BBContext) {
|
|
|
25
27
|
throw err
|
|
26
28
|
}
|
|
27
29
|
}
|
|
30
|
+
|
|
31
|
+
let previousApps = previousUser
|
|
32
|
+
? Object.keys(previousUser.roles).map(appId => appId)
|
|
33
|
+
: []
|
|
34
|
+
|
|
28
35
|
const roles = deleting ? {} : user.roles
|
|
29
36
|
// remove props which aren't useful to metadata
|
|
30
37
|
delete user.password
|
|
@@ -40,8 +47,9 @@ export async function syncUser(ctx: BBContext) {
|
|
|
40
47
|
.filter(entry => entry[1] !== rolesCore.BUILTIN_ROLE_IDS.PUBLIC)
|
|
41
48
|
.map(([appId]) => appId)
|
|
42
49
|
}
|
|
43
|
-
for (let prodAppId of prodAppIds) {
|
|
50
|
+
for (let prodAppId of new Set([...prodAppIds, ...previousApps])) {
|
|
44
51
|
const roleId = roles[prodAppId]
|
|
52
|
+
const deleteFromApp = !roleId
|
|
45
53
|
const devAppId = dbCore.getDevelopmentAppID(prodAppId)
|
|
46
54
|
for (let appId of [prodAppId, devAppId]) {
|
|
47
55
|
if (!(await dbCore.dbExists(appId))) {
|
|
@@ -54,24 +62,24 @@ export async function syncUser(ctx: BBContext) {
|
|
|
54
62
|
try {
|
|
55
63
|
metadata = await db.get(metadataId)
|
|
56
64
|
} catch (err) {
|
|
57
|
-
if (
|
|
65
|
+
if (deleteFromApp) {
|
|
58
66
|
return
|
|
59
67
|
}
|
|
60
68
|
metadata = {
|
|
61
69
|
tableId: InternalTables.USER_METADATA,
|
|
62
70
|
}
|
|
63
71
|
}
|
|
72
|
+
|
|
73
|
+
if (deleteFromApp) {
|
|
74
|
+
await db.remove(metadata)
|
|
75
|
+
return
|
|
76
|
+
}
|
|
77
|
+
|
|
64
78
|
// assign the roleId for the metadata doc
|
|
65
79
|
if (roleId) {
|
|
66
80
|
metadata.roleId = roleId
|
|
67
81
|
}
|
|
68
|
-
let combined =
|
|
69
|
-
? sdk.users.combineMetadataAndUser(user, metadata)
|
|
70
|
-
: {
|
|
71
|
-
...metadata,
|
|
72
|
-
status: constants.UserStatus.INACTIVE,
|
|
73
|
-
metadata: rolesCore.BUILTIN_ROLE_IDS.PUBLIC,
|
|
74
|
-
}
|
|
82
|
+
let combined = sdk.users.combineMetadataAndUser(user, metadata)
|
|
75
83
|
// if its null then there was no updates required
|
|
76
84
|
if (combined) {
|
|
77
85
|
await db.put(combined)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Row } from "@budibase/types"
|
|
1
|
+
import { Row, TableSchema } from "@budibase/types"
|
|
2
2
|
|
|
3
3
|
export function csv(headers: string[], rows: Row[]) {
|
|
4
4
|
let csv = headers.map(key => `"${key}"`).join(",")
|
|
@@ -18,11 +18,26 @@ export function csv(headers: string[], rows: Row[]) {
|
|
|
18
18
|
return csv
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
export function json(
|
|
21
|
+
export function json(rows: Row[]) {
|
|
22
22
|
return JSON.stringify(rows, undefined, 2)
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
export function jsonWithSchema(schema: TableSchema, rows: Row[]) {
|
|
26
|
+
const newSchema: TableSchema = {}
|
|
27
|
+
Object.values(schema).forEach(column => {
|
|
28
|
+
if (!column.autocolumn) {
|
|
29
|
+
newSchema[column.name] = column
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
return JSON.stringify({ schema: newSchema, rows }, undefined, 2)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export enum Format {
|
|
36
|
+
CSV = "csv",
|
|
37
|
+
JSON = "json",
|
|
38
|
+
JSON_WITH_SCHEMA = "jsonWithSchema",
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function isFormat(format: any): format is Format {
|
|
42
|
+
return Object.values(Format).includes(format as Format)
|
|
28
43
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import viewTemplate from "./viewBuilder"
|
|
2
2
|
import { apiFileReturn } from "../../../utilities/fileSystem"
|
|
3
|
-
import
|
|
3
|
+
import { csv, json, jsonWithSchema, Format, isFormat } from "./exporters"
|
|
4
4
|
import { deleteView, getView, getViews, saveView } from "./utils"
|
|
5
5
|
import { fetchView } from "../row"
|
|
6
6
|
import { FieldTypes } from "../../../constants"
|
|
@@ -127,9 +127,13 @@ export async function exportView(ctx: BBContext) {
|
|
|
127
127
|
const viewName = decodeURIComponent(ctx.query.view as string)
|
|
128
128
|
const view = await getView(viewName)
|
|
129
129
|
|
|
130
|
-
const format = ctx.query.format as
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
const format = ctx.query.format as unknown
|
|
131
|
+
|
|
132
|
+
if (!isFormat(format)) {
|
|
133
|
+
ctx.throw(
|
|
134
|
+
400,
|
|
135
|
+
"Format must be specified, either csv, json or jsonWithSchema"
|
|
136
|
+
)
|
|
133
137
|
}
|
|
134
138
|
|
|
135
139
|
if (view) {
|
|
@@ -171,7 +175,7 @@ export async function exportView(ctx: BBContext) {
|
|
|
171
175
|
})
|
|
172
176
|
|
|
173
177
|
// make sure no "undefined" entries appear in the CSV
|
|
174
|
-
if (format ===
|
|
178
|
+
if (format === Format.CSV) {
|
|
175
179
|
const schemaKeys = Object.keys(schema)
|
|
176
180
|
for (let key of schemaKeys) {
|
|
177
181
|
for (let row of rows) {
|
|
@@ -182,13 +186,18 @@ export async function exportView(ctx: BBContext) {
|
|
|
182
186
|
}
|
|
183
187
|
}
|
|
184
188
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
if (format === Format.CSV) {
|
|
190
|
+
ctx.attachment(`${viewName}.csv`)
|
|
191
|
+
ctx.body = apiFileReturn(csv(Object.keys(schema), rows))
|
|
192
|
+
} else if (format === Format.JSON) {
|
|
193
|
+
ctx.attachment(`${viewName}.json`)
|
|
194
|
+
ctx.body = apiFileReturn(json(rows))
|
|
195
|
+
} else if (format === Format.JSON_WITH_SCHEMA) {
|
|
196
|
+
ctx.attachment(`${viewName}.json`)
|
|
197
|
+
ctx.body = apiFileReturn(jsonWithSchema(schema, rows))
|
|
198
|
+
} else {
|
|
199
|
+
throw "Format not recognised"
|
|
200
|
+
}
|
|
192
201
|
|
|
193
202
|
if (viewName.startsWith(DocumentType.TABLE)) {
|
|
194
203
|
await events.table.exported(table, format as TableExportFormat)
|
|
@@ -136,7 +136,7 @@ function parseEmitExpression(field: string, groupBy: string) {
|
|
|
136
136
|
* filters: Array of filter objects containing predicates that are parsed into a JS expression
|
|
137
137
|
* calculation: an optional calculation to be performed over the view data.
|
|
138
138
|
*/
|
|
139
|
-
export
|
|
139
|
+
export default function ({
|
|
140
140
|
field,
|
|
141
141
|
tableId,
|
|
142
142
|
groupBy,
|
package/src/api/routes/auth.ts
CHANGED
package/src/api/routes/backup.ts
CHANGED
package/src/api/routes/cloud.ts
CHANGED
package/src/api/routes/deploy.ts
CHANGED
package/src/api/routes/dev.ts
CHANGED
package/src/api/routes/layout.ts
CHANGED
package/src/api/routes/query.ts
CHANGED
package/src/api/routes/role.ts
CHANGED
package/src/api/routes/screen.ts
CHANGED
package/src/api/routes/script.ts
CHANGED
package/src/api/routes/static.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as controller from "../controllers/static"
|
|
|
3
3
|
import { budibaseTempDir } from "../../utilities/budibaseDir"
|
|
4
4
|
import authorized from "../../middleware/authorized"
|
|
5
5
|
import { permissions } from "@budibase/backend-core"
|
|
6
|
-
import
|
|
6
|
+
import env from "../../environment"
|
|
7
7
|
import { paramResource } from "../../middleware/resourceId"
|
|
8
8
|
const { BUILDER, PermissionType, PermissionLevel } = permissions
|
|
9
9
|
|
|
@@ -62,4 +62,4 @@ router
|
|
|
62
62
|
controller.getSignedUploadURL
|
|
63
63
|
)
|
|
64
64
|
|
|
65
|
-
export
|
|
65
|
+
export default router
|
package/src/api/routes/table.ts
CHANGED
|
@@ -67,10 +67,7 @@ router
|
|
|
67
67
|
* structure, and the "updated", new column name should also be supplied. The schema should also be updated, this field
|
|
68
68
|
* lets the server know that a field hasn't just been deleted, that the data has moved to a new name, this will fix
|
|
69
69
|
* the rows in the table. This functionality is only available for internal tables.
|
|
70
|
-
* @apiParam (Body) {object} [
|
|
71
|
-
* CSV validation endpoint. Send the CSV data to the validation endpoint, then put the results of that call
|
|
72
|
-
* into this property, along with the CSV and a table/rows will be built from it. This is not supported when updating
|
|
73
|
-
* or for external tables.
|
|
70
|
+
* @apiParam (Body) {object[]} [rows] When creating a table using a compatible data source, an array of objects to be imported into the new table can be provided.
|
|
74
71
|
*
|
|
75
72
|
* @apiParamExample {json} Example:
|
|
76
73
|
* {
|
|
@@ -99,15 +96,7 @@ router
|
|
|
99
96
|
* "old": "columnName",
|
|
100
97
|
* "updated": "newColumnName",
|
|
101
98
|
* },
|
|
102
|
-
* "
|
|
103
|
-
* "csvString": "column\nvalue",
|
|
104
|
-
* "primaryDisplay": "column",
|
|
105
|
-
* "schema": {
|
|
106
|
-
* "column": {
|
|
107
|
-
* "type": "string"
|
|
108
|
-
* }
|
|
109
|
-
* }
|
|
110
|
-
* }
|
|
99
|
+
* "rows": []
|
|
111
100
|
* }
|
|
112
101
|
*
|
|
113
102
|
* @apiSuccess {object} table The response body will contain the table structure after being cleaned up and
|
|
@@ -121,30 +110,20 @@ router
|
|
|
121
110
|
tableValidator(),
|
|
122
111
|
tableController.save
|
|
123
112
|
)
|
|
124
|
-
/**
|
|
125
|
-
* @api {post} /api/tables/csv/validate Validate a CSV for a table
|
|
126
|
-
* @apiName Validate a CSV for a table
|
|
127
|
-
* @apiGroup tables
|
|
128
|
-
* @apiPermission builder
|
|
129
|
-
* @apiDescription When creating a new table, or importing a CSV to an existing table the CSV must be validated and
|
|
130
|
-
* converted into a Budibase schema; this endpoint does this.
|
|
131
|
-
*
|
|
132
|
-
* @apiParam (Body) {string} csvString The CSV which is to be validated as a string.
|
|
133
|
-
* @apiParam (Body) {object} [schema] When a CSV has been validated it is possible to re-validate after changing the
|
|
134
|
-
* type of a field, by default everything will be strings as there is no way to infer types. The returned schema can
|
|
135
|
-
* be updated and then returned to the endpoint to re-validate and check if the type will work for the CSV, e.g.
|
|
136
|
-
* using a number instead of strings.
|
|
137
|
-
* @apiParam (Body) {string} [tableId] If importing data to an existing table this will pull the current table and
|
|
138
|
-
* remove any fields from the CSV schema which do not exist on the table/don't match the type of the table. When
|
|
139
|
-
* importing a CSV to an existing table only fields that are present on the table can be imported.
|
|
140
|
-
*
|
|
141
|
-
* @apiSuccess {object} schema The response body will contain a "schema" object that represents the schema found for
|
|
142
|
-
* the CSV - this will be in the same format used for table schema.s
|
|
143
|
-
*/
|
|
144
113
|
.post(
|
|
145
|
-
"/api/
|
|
114
|
+
"/api/convert/csvToJson",
|
|
115
|
+
authorized(BUILDER),
|
|
116
|
+
tableController.csvToJson
|
|
117
|
+
)
|
|
118
|
+
.post(
|
|
119
|
+
"/api/tables/validateNewTableImport",
|
|
120
|
+
authorized(BUILDER),
|
|
121
|
+
tableController.validateNewTableImport
|
|
122
|
+
)
|
|
123
|
+
.post(
|
|
124
|
+
"/api/tables/validateExistingTableImport",
|
|
146
125
|
authorized(BUILDER),
|
|
147
|
-
tableController.
|
|
126
|
+
tableController.validateExistingTableImport
|
|
148
127
|
)
|
|
149
128
|
/**
|
|
150
129
|
* @api {post} /api/tables/:tableId/:revId Delete a table
|
|
@@ -177,9 +156,7 @@ router
|
|
|
177
156
|
*
|
|
178
157
|
* @apiParam {string} tableId The ID of the table which the data should be imported to.
|
|
179
158
|
*
|
|
180
|
-
* @apiParam (Body) {object}
|
|
181
|
-
* a CSV, it will have the "schema" returned from the CSV validation endpoint and the "csvString" which is to be
|
|
182
|
-
* turned into rows.
|
|
159
|
+
* @apiParam (Body) {object[]} rows An array of objects representing the rows to be imported, key-value pairs not matching the table schema will be ignored.
|
|
183
160
|
*
|
|
184
161
|
* @apiSuccess {string} message A message stating that the data was imported successfully.
|
|
185
162
|
*/
|
|
@@ -190,4 +167,4 @@ router
|
|
|
190
167
|
tableController.bulkImport
|
|
191
168
|
)
|
|
192
169
|
|
|
193
|
-
export
|
|
170
|
+
export default router
|
|
@@ -42,7 +42,7 @@ describe("run misc tests", () => {
|
|
|
42
42
|
})
|
|
43
43
|
|
|
44
44
|
describe("test table utilities", () => {
|
|
45
|
-
it("should be able to import
|
|
45
|
+
it("should be able to import data", async () => {
|
|
46
46
|
return config.doInContext(null, async () => {
|
|
47
47
|
const table = await config.createTable({
|
|
48
48
|
name: "table",
|
|
@@ -75,17 +75,11 @@ describe("run misc tests", () => {
|
|
|
75
75
|
},
|
|
76
76
|
},
|
|
77
77
|
})
|
|
78
|
-
|
|
79
|
-
csvString: "a,b,c,d\n1,2,3,4",
|
|
80
|
-
schema: {},
|
|
81
|
-
}
|
|
82
|
-
for (let col of ["a", "b", "c", "d"]) {
|
|
83
|
-
dataImport.schema[col] = { type: "string" }
|
|
84
|
-
}
|
|
78
|
+
|
|
85
79
|
await tableUtils.handleDataImport(
|
|
86
80
|
{ userId: "test" },
|
|
87
81
|
table,
|
|
88
|
-
|
|
82
|
+
[{ a: '1', b: '2', c: '3', d: '4'}]
|
|
89
83
|
)
|
|
90
84
|
const rows = await config.getRows()
|
|
91
85
|
expect(rows[0].a).toEqual("1")
|
|
@@ -94,4 +88,4 @@ describe("run misc tests", () => {
|
|
|
94
88
|
})
|
|
95
89
|
})
|
|
96
90
|
})
|
|
97
|
-
})
|
|
91
|
+
})
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
let mockObjectStore = jest.fn().mockImplementation(() => {
|
|
2
|
-
return [{ name: "test.js" }]
|
|
3
|
-
})
|
|
4
|
-
|
|
5
|
-
let deleteFolder = jest.fn().mockImplementation()
|
|
6
1
|
jest.mock("@budibase/backend-core", () => {
|
|
7
2
|
const core = jest.requireActual("@budibase/backend-core")
|
|
8
3
|
return {
|
|
@@ -10,15 +5,20 @@ jest.mock("@budibase/backend-core", () => {
|
|
|
10
5
|
objectStore: {
|
|
11
6
|
...core.objectStore,
|
|
12
7
|
upload: jest.fn(),
|
|
13
|
-
uploadDirectory:
|
|
14
|
-
|
|
8
|
+
uploadDirectory: jest.fn().mockImplementation(() => {
|
|
9
|
+
return [{ name: "test.js" }]
|
|
10
|
+
}),
|
|
11
|
+
deleteFolder: jest.fn().mockImplementation(),
|
|
15
12
|
},
|
|
16
13
|
}
|
|
17
14
|
})
|
|
18
15
|
|
|
19
|
-
import { events } from "@budibase/backend-core"
|
|
16
|
+
import { events, objectStore } from "@budibase/backend-core"
|
|
20
17
|
import * as setup from "./utilities"
|
|
21
18
|
|
|
19
|
+
const mockUploadDirectory = objectStore.uploadDirectory as jest.Mock
|
|
20
|
+
const mockDeleteFolder = objectStore.deleteFolder as jest.Mock
|
|
21
|
+
|
|
22
22
|
describe("/plugins", () => {
|
|
23
23
|
let request = setup.getRequest()
|
|
24
24
|
let config = setup.getConfig()
|
|
@@ -57,7 +57,7 @@ describe("/plugins", () => {
|
|
|
57
57
|
})
|
|
58
58
|
|
|
59
59
|
it("should not be able to create a plugin if there is an error", async () => {
|
|
60
|
-
|
|
60
|
+
mockUploadDirectory.mockImplementationOnce(() => {
|
|
61
61
|
throw new Error()
|
|
62
62
|
})
|
|
63
63
|
let res = await createPlugin(400)
|
|
@@ -92,7 +92,7 @@ describe("/plugins", () => {
|
|
|
92
92
|
expect(events.plugin.deleted).toHaveBeenCalledTimes(1)
|
|
93
93
|
})
|
|
94
94
|
it("should handle an error deleting a plugin", async () => {
|
|
95
|
-
|
|
95
|
+
mockDeleteFolder.mockImplementationOnce(() => {
|
|
96
96
|
throw new Error()
|
|
97
97
|
})
|
|
98
98
|
|
|
@@ -43,21 +43,18 @@ describe("/tables", () => {
|
|
|
43
43
|
expect(events.table.created).toBeCalledWith(res.body)
|
|
44
44
|
})
|
|
45
45
|
|
|
46
|
-
it("creates a table via data import
|
|
46
|
+
it("creates a table via data import", async () => {
|
|
47
47
|
const table = basicTable()
|
|
48
|
-
table.
|
|
49
|
-
csvString: "\"name\",\"description\"\n\"test-name\",\"test-desc\"",
|
|
50
|
-
}
|
|
51
|
-
table.dataImport.schema = table.schema
|
|
48
|
+
table.rows = [{ name: 'test-name', description: 'test-desc' }]
|
|
52
49
|
|
|
53
50
|
const res = await createTable(table)
|
|
54
51
|
|
|
55
52
|
expect(events.table.created).toBeCalledTimes(1)
|
|
56
53
|
expect(events.table.created).toBeCalledWith(res.body)
|
|
57
54
|
expect(events.table.imported).toBeCalledTimes(1)
|
|
58
|
-
expect(events.table.imported).toBeCalledWith(res.body
|
|
55
|
+
expect(events.table.imported).toBeCalledWith(res.body)
|
|
59
56
|
expect(events.rows.imported).toBeCalledTimes(1)
|
|
60
|
-
expect(events.rows.imported).toBeCalledWith(res.body,
|
|
57
|
+
expect(events.rows.imported).toBeCalledWith(res.body, 1)
|
|
61
58
|
})
|
|
62
59
|
|
|
63
60
|
it("should apply authorization to endpoint", async () => {
|
|
@@ -155,11 +152,10 @@ describe("/tables", () => {
|
|
|
155
152
|
it("imports rows successfully", async () => {
|
|
156
153
|
const table = await config.createTable()
|
|
157
154
|
const importRequest = {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
schema: table.schema
|
|
161
|
-
}
|
|
155
|
+
schema: table.schema,
|
|
156
|
+
rows: [{ name: 'test-name', description: 'test-desc' }]
|
|
162
157
|
}
|
|
158
|
+
|
|
163
159
|
jest.clearAllMocks()
|
|
164
160
|
|
|
165
161
|
await request
|
|
@@ -171,7 +167,7 @@ describe("/tables", () => {
|
|
|
171
167
|
|
|
172
168
|
expect(events.table.created).not.toHaveBeenCalled()
|
|
173
169
|
expect(events.rows.imported).toBeCalledTimes(1)
|
|
174
|
-
expect(events.rows.imported).toBeCalledWith(table,
|
|
170
|
+
expect(events.rows.imported).toBeCalledWith(table, 1)
|
|
175
171
|
})
|
|
176
172
|
})
|
|
177
173
|
|
|
@@ -206,24 +202,6 @@ describe("/tables", () => {
|
|
|
206
202
|
})
|
|
207
203
|
})
|
|
208
204
|
|
|
209
|
-
describe("validate csv", () => {
|
|
210
|
-
it("should be able to validate a CSV layout", async () => {
|
|
211
|
-
const res = await request
|
|
212
|
-
.post(`/api/tables/csv/validate`)
|
|
213
|
-
.send({
|
|
214
|
-
csvString: "a,b,c,d\n1,2,3,4"
|
|
215
|
-
})
|
|
216
|
-
.set(config.defaultHeaders())
|
|
217
|
-
.expect('Content-Type', /json/)
|
|
218
|
-
.expect(200)
|
|
219
|
-
expect(res.body.schema).toBeDefined()
|
|
220
|
-
expect(res.body.schema.a).toEqual({
|
|
221
|
-
type: "string",
|
|
222
|
-
success: true,
|
|
223
|
-
})
|
|
224
|
-
})
|
|
225
|
-
})
|
|
226
|
-
|
|
227
205
|
describe("indexing", () => {
|
|
228
206
|
it("should be able to create a table with indexes", async () => {
|
|
229
207
|
await context.doInAppContext(appId, async () => {
|
|
@@ -171,9 +171,28 @@ describe("/users", () => {
|
|
|
171
171
|
.expect("Content-Type", /json/)
|
|
172
172
|
expect(res.body.message).toEqual('User synced.')
|
|
173
173
|
})
|
|
174
|
-
})
|
|
175
174
|
|
|
176
175
|
|
|
176
|
+
it("should sync the user when a previous user is specified", async () => {
|
|
177
|
+
const app1 = await config.createApp('App 1')
|
|
178
|
+
const app2 = await config.createApp('App 2')
|
|
177
179
|
|
|
180
|
+
let user = await config.createUser(
|
|
181
|
+
undefined,
|
|
182
|
+
undefined,
|
|
183
|
+
undefined,
|
|
184
|
+
undefined,
|
|
185
|
+
false,
|
|
186
|
+
true,
|
|
187
|
+
{ [app1.appId]: 'ADMIN' })
|
|
188
|
+
let res = await request
|
|
189
|
+
.post(`/api/users/metadata/sync/${user._id}`)
|
|
190
|
+
.set(config.defaultHeaders())
|
|
191
|
+
.send({ previousUser: { ...user, roles: { ...user.roles, [app2.appId]: 'BASIC' } } })
|
|
192
|
+
.expect(200)
|
|
193
|
+
.expect("Content-Type", /json/)
|
|
178
194
|
|
|
195
|
+
expect(res.body.message).toEqual('User synced.')
|
|
196
|
+
})
|
|
197
|
+
})
|
|
179
198
|
})
|
|
@@ -3,7 +3,7 @@ import * as appController from "../../../controllers/application"
|
|
|
3
3
|
import { AppStatus } from "../../../../db/utils"
|
|
4
4
|
import { roles, tenancy, context } from "@budibase/backend-core"
|
|
5
5
|
import { TENANT_ID } from "../../../../tests/utilities/structures"
|
|
6
|
-
import
|
|
6
|
+
import env from "../../../../environment"
|
|
7
7
|
|
|
8
8
|
class Request {
|
|
9
9
|
appId: any
|