@budibase/server 2.1.41 → 2.1.43-alpha.0
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 +14 -0
- package/__mocks__/node-fetch.ts +5 -1
- package/builder/assets/index.0c44dac3.css +6 -0
- package/builder/assets/index.17a2178b.js +1021 -0
- package/builder/index.html +2 -2
- package/coverage/clover.xml +10910 -3861
- package/coverage/coverage-final.json +267 -118
- package/coverage/lcov-report/index.html +679 -184
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +190 -0
- package/coverage/lcov-report/{api/controllers/apikeys.js.html → src/api/controllers/apikeys.ts.html} +30 -30
- package/coverage/lcov-report/src/api/controllers/application.ts.html +2038 -0
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +301 -0
- package/coverage/lcov-report/{api/controllers/automation.js.html → src/api/controllers/automation.ts.html} +99 -99
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +148 -0
- package/coverage/lcov-report/{api/controllers/cloud.js.html → src/api/controllers/cloud.ts.html} +58 -58
- package/coverage/lcov-report/src/api/controllers/component.ts.html +259 -0
- package/coverage/lcov-report/{api/controllers/datasource.js.html → src/api/controllers/datasource.ts.html} +287 -107
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +259 -0
- package/coverage/lcov-report/{utilities/rowProcessor → src/api/controllers/deploy}/index.html +40 -40
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +730 -0
- package/coverage/lcov-report/{api/controllers/dev.js.html → src/api/controllers/dev.ts.html} +69 -87
- package/coverage/lcov-report/src/api/controllers/index.html +431 -0
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +124 -0
- package/coverage/lcov-report/{api/controllers/layout.js.html → src/api/controllers/layout.ts.html} +31 -31
- package/coverage/lcov-report/{api/controllers/metadata.js.html → src/api/controllers/metadata.ts.html} +33 -30
- package/coverage/lcov-report/{api/controllers/migrations.js.html → src/api/controllers/migrations.ts.html} +20 -17
- package/coverage/lcov-report/{api/controllers/permission.js.html → src/api/controllers/permission.ts.html} +88 -79
- package/coverage/lcov-report/{api/routes/role.js.html → src/api/controllers/plugin/file.ts.html} +40 -40
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +310 -0
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +206 -0
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +484 -0
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +253 -0
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +97 -0
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +121 -0
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +136 -0
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +334 -0
- package/coverage/lcov-report/src/api/controllers/public/index.html +191 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +181 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +191 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +124 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +202 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +178 -0
- package/coverage/lcov-report/{utilities/routing/index.js.html → src/api/controllers/public/mapping/tables.ts.html} +46 -43
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +181 -0
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +145 -0
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +328 -0
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +253 -0
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +268 -0
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +220 -0
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +373 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +131 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +379 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +157 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +403 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +146 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +586 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +712 -0
- package/coverage/lcov-report/src/api/controllers/query/index.html +131 -0
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +976 -0
- package/coverage/lcov-report/{api/controllers/query/validation.js.html → src/api/controllers/query/validation.ts.html} +25 -25
- package/coverage/lcov-report/{api/controllers/role.js.html → src/api/controllers/role.ts.html} +48 -60
- package/coverage/lcov-report/{api/controllers/routing.js.html → src/api/controllers/routing.ts.html} +67 -58
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +2260 -0
- package/coverage/lcov-report/{api/controllers/row/external.js.html → src/api/controllers/row/external.ts.html} +162 -111
- package/coverage/lcov-report/{api → src/api}/controllers/row/index.html +82 -52
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +541 -0
- package/coverage/lcov-report/{api/controllers/row/internal.js.html → src/api/controllers/row/internal.ts.html} +163 -121
- package/coverage/lcov-report/{api/controllers/row/internalSearch.js.html → src/api/controllers/row/internalSearch.ts.html} +189 -117
- package/coverage/lcov-report/{api/controllers/row/staticFormula.js.html → src/api/controllers/row/staticFormula.ts.html} +73 -58
- package/coverage/lcov-report/{api/controllers/row/utils.js.html → src/api/controllers/row/utils.ts.html} +88 -58
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +463 -0
- package/coverage/lcov-report/{api/controllers/script.js.html → src/api/controllers/script.ts.html} +19 -16
- package/coverage/lcov-report/src/api/controllers/static/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +694 -0
- package/coverage/lcov-report/{api/controllers/table/bulkFormula.js.html → src/api/controllers/table/bulkFormula.ts.html} +104 -62
- package/coverage/lcov-report/{api/controllers/table/external.js.html → src/api/controllers/table/external.ts.html} +204 -111
- package/coverage/lcov-report/src/api/controllers/table/index.html +176 -0
- package/coverage/lcov-report/{api/controllers/table/index.js.html → src/api/controllers/table/index.ts.html} +58 -49
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +661 -0
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1255 -0
- package/coverage/lcov-report/{api/controllers/templates.js.html → src/api/controllers/templates.ts.html} +38 -29
- package/coverage/lcov-report/{api/controllers/user.js.html → src/api/controllers/user.ts.html} +93 -99
- package/coverage/lcov-report/{api/controllers/view/exporters.js.html → src/api/controllers/view/exporters.ts.html} +22 -16
- package/coverage/lcov-report/{api → src/api}/controllers/view/index.html +36 -36
- package/coverage/lcov-report/{api/controllers/view/index.js.html → src/api/controllers/view/index.ts.html} +91 -64
- package/coverage/lcov-report/{api/controllers/view/utils.js.html → src/api/controllers/view/utils.ts.html} +72 -54
- package/coverage/lcov-report/{api/controllers/view/viewBuilder.js.html → src/api/controllers/view/viewBuilder.ts.html} +78 -36
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +379 -0
- package/coverage/lcov-report/{api → src/api}/index.html +23 -23
- package/coverage/lcov-report/{api/index.js.html → src/api/index.ts.html} +55 -76
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +112 -0
- package/coverage/lcov-report/{api/routes/integration.js.html → src/api/routes/apikeys.ts.html} +25 -25
- package/coverage/lcov-report/{constants/screens.js.html → src/api/routes/application.ts.html} +66 -66
- package/coverage/lcov-report/src/api/routes/auth.ts.html +109 -0
- package/coverage/lcov-report/{api/routes/automation.js.html → src/api/routes/automation.ts.html} +53 -47
- package/coverage/lcov-report/{api/routes/cloud.js.html → src/api/routes/backup.ts.html} +28 -28
- package/coverage/lcov-report/{api/routes/deploy.js.html → src/api/routes/cloud.ts.html} +31 -28
- package/coverage/lcov-report/{api/routes/component.js.html → src/api/routes/component.ts.html} +24 -24
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +265 -0
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +148 -0
- package/coverage/lcov-report/src/api/routes/dev.ts.html +199 -0
- package/coverage/lcov-report/{api → src/api}/routes/index.html +167 -47
- package/coverage/lcov-report/src/api/routes/index.ts.html +289 -0
- package/coverage/lcov-report/src/api/routes/integration.ts.html +133 -0
- package/coverage/lcov-report/{automations/triggerInfo/index.js.html → src/api/routes/layout.ts.html} +29 -26
- package/coverage/lcov-report/{api/routes/metadata.js.html → src/api/routes/metadata.ts.html} +31 -31
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +127 -0
- package/coverage/lcov-report/src/api/routes/permission.ts.html +208 -0
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +151 -0
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +541 -0
- package/coverage/lcov-report/src/api/routes/public/index.html +191 -0
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +493 -0
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +116 -0
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +328 -0
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +313 -0
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +598 -0
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +586 -0
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +511 -0
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +238 -0
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +116 -0
- package/coverage/lcov-report/{api/routes/query.js.html → src/api/routes/query.ts.html} +41 -50
- package/coverage/lcov-report/src/api/routes/role.ts.html +157 -0
- package/coverage/lcov-report/{api/routes/routing.js.html → src/api/routes/routing.ts.html} +24 -24
- package/coverage/lcov-report/src/api/routes/row.ts.html +883 -0
- package/coverage/lcov-report/{api/routes/screen.js.html → src/api/routes/screen.ts.html} +43 -28
- package/coverage/lcov-report/{api/routes/script.js.html → src/api/routes/script.ts.html} +17 -17
- package/coverage/lcov-report/src/api/routes/static.ts.html +280 -0
- package/coverage/lcov-report/{api/routes/table.js.html → src/api/routes/table.ts.html} +32 -41
- package/coverage/lcov-report/{api/routes/templates.js.html → src/api/routes/templates.ts.html} +25 -25
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +550 -0
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +131 -0
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +367 -0
- package/coverage/lcov-report/{api/routes/user.js.html → src/api/routes/user.ts.html} +35 -41
- package/coverage/lcov-report/{api → src/api}/routes/utils/index.html +15 -15
- package/coverage/lcov-report/{api/routes/utils/validators.js.html → src/api/routes/utils/validators.ts.html} +86 -98
- package/coverage/lcov-report/{api/routes/view.js.html → src/api/routes/view.ts.html} +45 -36
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +166 -0
- package/coverage/lcov-report/src/app.ts.html +406 -0
- package/coverage/lcov-report/{automations/actions.js.html → src/automations/actions.ts.html} +69 -60
- package/coverage/lcov-report/{automations/automationUtils.js.html → src/automations/automationUtils.ts.html} +36 -33
- package/coverage/lcov-report/{automations/bullboard.js.html → src/automations/bullboard.ts.html} +39 -42
- package/coverage/lcov-report/{automations → src/automations}/index.html +63 -48
- package/coverage/lcov-report/{api/routes/dev.js.html → src/automations/index.ts.html} +46 -46
- package/coverage/lcov-report/src/automations/logging/index.html +116 -0
- package/coverage/lcov-report/src/automations/logging/index.ts.html +199 -0
- package/coverage/lcov-report/{automations/steps/bash.js.html → src/automations/steps/bash.ts.html} +45 -30
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +382 -0
- package/coverage/lcov-report/{automations/steps/delay.js.html → src/automations/steps/delay.ts.html} +34 -19
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +349 -0
- package/coverage/lcov-report/{automations/steps/discord.js.html → src/automations/steps/discord.ts.html} +43 -28
- package/coverage/lcov-report/{automations/steps/executeQuery.js.html → src/automations/steps/executeQuery.ts.html} +45 -30
- package/coverage/lcov-report/{automations/steps/executeScript.js.html → src/automations/steps/executeScript.ts.html} +58 -28
- package/coverage/lcov-report/{automations/steps/filter.js.html → src/automations/steps/filter.ts.html} +39 -30
- package/coverage/lcov-report/src/automations/steps/index.html +371 -0
- package/coverage/lcov-report/{automations/steps/integromat.js.html → src/automations/steps/integromat.ts.html} +38 -23
- package/coverage/lcov-report/{automations/steps/loop.js.html → src/automations/steps/loop.ts.html} +21 -15
- package/coverage/lcov-report/{automations/steps/outgoingWebhook.js.html → src/automations/steps/outgoingWebhook.ts.html} +54 -39
- package/coverage/lcov-report/{automations/steps/queryRows.js.html → src/automations/steps/queryRows.ts.html} +102 -66
- package/coverage/lcov-report/{automations/steps/sendSmtpEmail.js.html → src/automations/steps/sendSmtpEmail.ts.html} +40 -25
- package/coverage/lcov-report/{automations/steps/serverLog.js.html → src/automations/steps/serverLog.ts.html} +40 -22
- package/coverage/lcov-report/{automations/steps/slack.js.html → src/automations/steps/slack.ts.html} +38 -23
- package/coverage/lcov-report/{automations/steps/updateRow.js.html → src/automations/steps/updateRow.ts.html} +40 -25
- package/coverage/lcov-report/{automations/steps/utils.js.html → src/automations/steps/utils.ts.html} +45 -27
- package/coverage/lcov-report/{automations/steps/zapier.js.html → src/automations/steps/zapier.ts.html} +41 -23
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +116 -0
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +265 -0
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +196 -0
- package/coverage/lcov-report/{automations/triggerInfo/cron.js.html → src/automations/triggerInfo/cron.ts.html} +30 -15
- package/coverage/lcov-report/{automations → src/automations}/triggerInfo/index.html +31 -31
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +130 -0
- package/coverage/lcov-report/{automations/triggerInfo/rowDeleted.js.html → src/automations/triggerInfo/rowDeleted.ts.html} +30 -15
- package/coverage/lcov-report/{automations/triggerInfo/rowSaved.js.html → src/automations/triggerInfo/rowSaved.ts.html} +30 -15
- package/coverage/lcov-report/{automations/triggerInfo/rowUpdated.js.html → src/automations/triggerInfo/rowUpdated.ts.html} +30 -15
- package/coverage/lcov-report/{automations/triggerInfo/webhook.js.html → src/automations/triggerInfo/webhook.ts.html} +30 -15
- package/coverage/lcov-report/{automations/triggers.js.html → src/automations/triggers.ts.html} +78 -66
- package/coverage/lcov-report/src/automations/utils.ts.html +886 -0
- package/coverage/lcov-report/{constants → src/constants}/index.html +26 -26
- package/coverage/lcov-report/src/constants/index.ts.html +697 -0
- package/coverage/lcov-report/{constants/layouts.js.html → src/constants/layouts.ts.html} +18 -36
- package/coverage/lcov-report/src/constants/screens.ts.html +229 -0
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +2059 -0
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +541 -0
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +427 -0
- package/coverage/lcov-report/src/db/defaultData/index.html +176 -0
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +403 -0
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +559 -0
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +526 -0
- package/coverage/lcov-report/{db/inMemoryView.js.html → src/db/inMemoryView.ts.html} +47 -29
- package/coverage/lcov-report/{db → src/db}/index.html +48 -33
- package/coverage/lcov-report/{api/routes/layout.js.html → src/db/index.ts.html} +28 -28
- package/coverage/lcov-report/{db/linkedRows/LinkController.js.html → src/db/linkedRows/LinkController.ts.html} +97 -160
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +265 -0
- package/coverage/lcov-report/src/db/linkedRows/index.html +161 -0
- package/coverage/lcov-report/{db/linkedRows/index.js.html → src/db/linkedRows/index.ts.html} +93 -78
- package/coverage/lcov-report/{db/linkedRows/linkUtils.js.html → src/db/linkedRows/linkUtils.ts.html} +83 -56
- package/coverage/lcov-report/{db/newid.js.html → src/db/newid.ts.html} +14 -14
- package/coverage/lcov-report/{db/utils.js.html → src/db/utils.ts.html} +163 -211
- package/coverage/lcov-report/{automations/triggerInfo/app.js.html → src/definitions/automations.ts.html} +42 -42
- package/coverage/lcov-report/{api/routes/datasource.js.html → src/definitions/datasource.ts.html} +61 -64
- package/coverage/lcov-report/src/definitions/index.html +131 -0
- package/coverage/lcov-report/src/environment.ts.html +457 -0
- package/coverage/lcov-report/{events/AutomationEmitter.js.html → src/events/AutomationEmitter.ts.html} +40 -25
- package/coverage/lcov-report/{events/index.js.html → src/events/BudibaseEmitter.ts.html} +26 -29
- package/coverage/lcov-report/{events → src/events}/index.html +48 -33
- package/coverage/lcov-report/{middleware/utils.js.html → src/events/index.ts.html} +18 -24
- package/coverage/lcov-report/src/events/utils.ts.html +319 -0
- package/coverage/lcov-report/src/index.html +191 -0
- package/coverage/lcov-report/src/index.ts.html +133 -0
- package/coverage/lcov-report/{utilities/queue/inMemoryQueue.js.html → src/integrations/airtable.ts.html} +213 -135
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +415 -0
- package/coverage/lcov-report/src/integrations/base/index.html +161 -0
- package/coverage/lcov-report/src/integrations/base/query.ts.html +133 -0
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +1951 -0
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +691 -0
- package/coverage/lcov-report/{api/routes/apikeys.js.html → src/integrations/base/utils.ts.html} +30 -30
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +406 -0
- package/coverage/lcov-report/{constants/index.js.html → src/integrations/dynamodb.ts.html} +263 -227
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +634 -0
- package/coverage/lcov-report/src/integrations/firebase.ts.html +646 -0
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1315 -0
- package/coverage/lcov-report/src/integrations/index.html +371 -0
- package/coverage/lcov-report/src/integrations/index.ts.html +445 -0
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1006 -0
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +1867 -0
- package/coverage/lcov-report/src/integrations/mysql.ts.html +964 -0
- package/coverage/lcov-report/src/integrations/oracle.ts.html +1474 -0
- package/coverage/lcov-report/src/integrations/postgres.ts.html +1069 -0
- package/coverage/lcov-report/src/integrations/queries/index.html +116 -0
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +463 -0
- package/coverage/lcov-report/src/integrations/redis.ts.html +550 -0
- package/coverage/lcov-report/src/integrations/rest.ts.html +1381 -0
- package/coverage/lcov-report/src/integrations/s3.ts.html +862 -0
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +376 -0
- package/coverage/lcov-report/{integrations → src/integrations}/tests/TestConfiguration.js.html +10 -10
- package/coverage/lcov-report/{integrations → src/integrations}/tests/index.html +10 -10
- package/coverage/lcov-report/src/integrations/utils.ts.html +1018 -0
- package/coverage/lcov-report/{middleware/appInfo.js.html → src/middleware/appInfo.ts.html} +33 -30
- package/coverage/lcov-report/src/middleware/authorized.ts.html +460 -0
- package/coverage/lcov-report/{middleware/builder.js.html → src/middleware/builder.ts.html} +46 -40
- package/coverage/lcov-report/{middleware/currentapp.js.html → src/middleware/currentapp.ts.html} +81 -72
- package/coverage/lcov-report/{middleware → src/middleware}/index.html +78 -63
- package/coverage/lcov-report/{middleware/joi-validator.js.html → src/middleware/joi-validator.ts.html} +25 -22
- package/coverage/lcov-report/{middleware/publicApi.js.html → src/middleware/publicApi.ts.html} +27 -27
- package/coverage/lcov-report/{middleware/resourceId.js.html → src/middleware/resourceId.ts.html} +60 -45
- package/coverage/lcov-report/{api/controllers/integration.js.html → src/middleware/selfhost.ts.html} +22 -28
- package/coverage/lcov-report/{api/routes/analytics.js.html → src/middleware/utils.ts.html} +19 -19
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +187 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +163 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +151 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +206 -0
- package/coverage/lcov-report/{automations/index.js.html → src/migrations/functions/backfill/app/layouts.ts.html} +56 -56
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +226 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +151 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +151 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +166 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +532 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +283 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +146 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +265 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +232 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +724 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +161 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +106 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +235 -0
- package/coverage/lcov-report/src/migrations/functions/index.html +161 -0
- package/coverage/lcov-report/{db/index.js.html → src/migrations/functions/syncQuotas.ts.html} +35 -38
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +520 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +161 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +94 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +127 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +115 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +169 -0
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +124 -0
- package/coverage/lcov-report/{utilities/queue → src/migrations}/index.html +23 -23
- package/coverage/lcov-report/src/migrations/index.ts.html +430 -0
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +205 -0
- package/coverage/lcov-report/src/migrations/tests/index.html +131 -0
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +283 -0
- package/coverage/lcov-report/src/sdk/app/automations/index.html +131 -0
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +100 -0
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +214 -0
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +91 -0
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +604 -0
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +682 -0
- package/coverage/lcov-report/src/sdk/app/backups/index.html +176 -0
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +112 -0
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +292 -0
- package/coverage/lcov-report/src/sdk/app/tables/index.html +116 -0
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +265 -0
- package/coverage/lcov-report/{utilities/routing → src/sdk}/index.html +10 -10
- package/coverage/lcov-report/{api/routes/migrations.js.html → src/sdk/index.ts.html} +24 -21
- package/coverage/lcov-report/src/startup.ts.html +499 -0
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +1966 -0
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +127 -0
- package/coverage/lcov-report/src/tests/utilities/index.html +161 -0
- package/coverage/lcov-report/{middleware/selfhost.js.html → src/tests/utilities/index.ts.html} +33 -30
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +667 -0
- package/coverage/lcov-report/src/threads/automation.ts.html +1594 -0
- package/coverage/lcov-report/src/threads/index.html +161 -0
- package/coverage/lcov-report/src/threads/index.ts.html +418 -0
- package/coverage/lcov-report/src/threads/query.ts.html +961 -0
- package/coverage/lcov-report/src/threads/utils.ts.html +373 -0
- package/coverage/lcov-report/{utilities/budibaseDir.js.html → src/utilities/budibaseDir.ts.html} +14 -14
- package/coverage/lcov-report/{utilities/centralPath.js.html → src/utilities/centralPath.ts.html} +16 -16
- package/coverage/lcov-report/{utilities/csvParser.js.html → src/utilities/csvParser.ts.html} +107 -59
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +547 -0
- package/coverage/lcov-report/{api/controllers/table → src/utilities/fileSystem}/index.html +44 -44
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1129 -0
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +142 -0
- package/coverage/lcov-report/{utilities/global.js.html → src/utilities/global.ts.html} +115 -82
- package/coverage/lcov-report/{utilities → src/utilities}/index.html +92 -77
- package/coverage/lcov-report/{utilities/index.js.html → src/utilities/index.ts.html} +98 -74
- package/coverage/lcov-report/{utilities/plugins.js.html → src/utilities/plugins.ts.html} +25 -22
- package/coverage/lcov-report/src/utilities/redis.ts.html +343 -0
- package/coverage/lcov-report/{api/controllers/query → src/utilities/routing}/index.html +8 -8
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +181 -0
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +146 -0
- package/coverage/lcov-report/{utilities/rowProcessor/index.js.html → src/utilities/rowProcessor/index.ts.html} +128 -359
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +373 -0
- package/coverage/lcov-report/{utilities/rowProcessor/utils.js.html → src/utilities/rowProcessor/utils.ts.html} +54 -42
- package/coverage/lcov-report/{utilities/scriptRunner.js.html → src/utilities/scriptRunner.ts.html} +31 -19
- package/coverage/lcov-report/{utilities/security.js.html → src/utilities/security.ts.html} +60 -78
- package/coverage/lcov-report/{utilities/statusCodes.js.html → src/utilities/statusCodes.ts.html} +11 -11
- package/coverage/lcov-report/{utilities → src/utilities}/usageQuota/index.html +28 -28
- package/coverage/lcov-report/{utilities/usageQuota/rows.js.html → src/utilities/usageQuota/rows.ts.html} +36 -48
- package/coverage/lcov-report/{utilities/usageQuota/usageQuoteReset.js.html → src/utilities/usageQuota/usageQuoteReset.ts.html} +13 -13
- package/coverage/lcov-report/{utilities/users.js.html → src/utilities/users.ts.html} +34 -40
- package/coverage/lcov-report/{utilities/workerRequests.js.html → src/utilities/workerRequests.ts.html} +127 -112
- package/coverage/lcov-report/{events/utils.js.html → src/watch.ts.html} +67 -70
- package/coverage/lcov-report/src/websocket.ts.html +163 -0
- package/coverage/lcov.info +19754 -7082
- package/dist/api/controllers/apikeys.js +12 -9
- package/dist/api/controllers/application.js +48 -45
- package/dist/api/controllers/automation.js +122 -82
- package/dist/api/controllers/cloud.js +84 -71
- package/dist/api/controllers/component.js +4 -2
- package/dist/api/controllers/datasource.js +151 -94
- package/dist/api/controllers/deploy/Deployment.js +10 -6
- package/dist/api/controllers/deploy/index.js +13 -16
- package/dist/api/controllers/dev.js +96 -81
- package/dist/api/controllers/integration.js +11 -8
- package/dist/api/controllers/layout.js +18 -15
- package/dist/api/controllers/metadata.js +51 -37
- package/dist/api/controllers/migrations.js +19 -11
- package/dist/api/controllers/permission.js +52 -43
- package/dist/api/controllers/plugin/index.js +6 -7
- package/dist/api/controllers/plugin/utils.js +2 -1
- package/dist/api/controllers/public/applications.js +17 -9
- package/dist/api/controllers/public/tables.js +29 -9
- package/dist/api/controllers/public/utils.js +2 -2
- package/dist/api/controllers/query/import/index.js +1 -2
- package/dist/api/controllers/query/index.js +10 -13
- package/dist/api/controllers/query/validation.js +41 -33
- package/dist/api/controllers/role.js +29 -27
- package/dist/api/controllers/routing.js +71 -58
- package/dist/api/controllers/row/ExternalRequest.js +538 -542
- package/dist/api/controllers/row/external.js +258 -190
- package/dist/api/controllers/row/index.js +43 -14
- package/dist/api/controllers/row/internal.js +354 -295
- package/dist/api/controllers/row/internalSearch.js +95 -80
- package/dist/api/controllers/row/staticFormula.js +125 -112
- package/dist/api/controllers/row/utils.js +122 -84
- package/dist/api/controllers/screen.js +81 -66
- package/dist/api/controllers/script.js +13 -6
- package/dist/api/controllers/static/index.js +11 -14
- package/dist/api/controllers/table/bulkFormula.js +47 -35
- package/dist/api/controllers/table/external.js +89 -53
- package/dist/api/controllers/table/index.js +64 -31
- package/dist/api/controllers/table/internal.js +5 -6
- package/dist/api/controllers/table/utils.js +39 -35
- package/dist/api/controllers/templates.js +17 -10
- package/dist/api/controllers/user.js +82 -70
- package/dist/api/controllers/view/exporters.js +8 -4
- package/dist/api/controllers/view/index.js +201 -153
- package/dist/api/controllers/view/utils.js +151 -121
- package/dist/api/controllers/view/viewBuilder.js +4 -16
- package/dist/api/controllers/webhook.js +25 -2
- package/dist/api/index.js +38 -34
- package/dist/api/routes/analytics.js +29 -3
- package/dist/api/routes/apikeys.js +33 -7
- package/dist/api/routes/application.js +8 -9
- package/dist/api/routes/auth.js +1 -2
- package/dist/api/routes/automation.js +46 -20
- package/dist/api/routes/backup.js +3 -4
- package/dist/api/routes/cloud.js +32 -6
- package/dist/api/routes/component.js +32 -6
- package/dist/api/routes/datasource.js +39 -13
- package/dist/api/routes/deploy.js +34 -8
- package/dist/api/routes/dev.js +36 -10
- package/dist/api/routes/integration.js +33 -7
- package/dist/api/routes/layout.js +33 -7
- package/dist/api/routes/metadata.js +36 -10
- package/dist/api/routes/migrations.js +32 -6
- package/dist/api/routes/permission.js +38 -12
- package/dist/api/routes/plugin.js +5 -5
- package/dist/api/routes/public/index.js +11 -11
- package/dist/api/routes/query.js +42 -15
- package/dist/api/routes/role.js +36 -10
- package/dist/api/routes/routing.js +32 -6
- package/dist/api/routes/row.js +12 -11
- package/dist/api/routes/screen.js +35 -9
- package/dist/api/routes/script.js +32 -6
- package/dist/api/routes/static.js +9 -9
- package/dist/api/routes/table.js +40 -13
- package/dist/api/routes/templates.js +33 -7
- package/dist/api/routes/tests/utilities/TestFunctions.js +6 -8
- package/dist/api/routes/tests/utilities/index.js +69 -32
- package/dist/api/routes/user.js +40 -13
- package/dist/api/routes/utils/validators.js +142 -126
- package/dist/api/routes/view.js +38 -12
- package/dist/api/routes/webhook.js +1 -2
- package/dist/app.js +22 -22
- package/dist/automations/actions.js +53 -24
- package/dist/automations/automationUtils.js +31 -19
- package/dist/automations/bullboard.js +59 -29
- package/dist/automations/index.js +23 -18
- package/dist/automations/steps/bash.js +40 -10
- package/dist/automations/steps/createRow.js +2 -1
- package/dist/automations/steps/delay.js +9 -5
- package/dist/automations/steps/deleteRow.js +2 -1
- package/dist/automations/steps/discord.js +14 -7
- package/dist/automations/steps/executeQuery.js +34 -7
- package/dist/automations/steps/executeScript.js +34 -7
- package/dist/automations/steps/filter.js +20 -18
- package/dist/automations/steps/integromat.js +14 -7
- package/dist/automations/steps/loop.js +4 -1
- package/dist/automations/steps/outgoingWebhook.js +45 -14
- package/dist/automations/steps/queryRows.js +71 -38
- package/dist/automations/steps/sendSmtpEmail.js +33 -6
- package/dist/automations/steps/serverLog.js +12 -8
- package/dist/automations/steps/slack.js +14 -7
- package/dist/automations/steps/updateRow.js +34 -7
- package/dist/automations/steps/utils.js +22 -16
- package/dist/automations/steps/zapier.js +15 -7
- package/dist/automations/tests/utilities/index.js +62 -38
- package/dist/automations/triggerInfo/app.js +4 -1
- package/dist/automations/triggerInfo/cron.js +4 -1
- package/dist/automations/triggerInfo/index.js +31 -6
- package/dist/automations/triggerInfo/rowDeleted.js +4 -1
- package/dist/automations/triggerInfo/rowSaved.js +4 -1
- package/dist/automations/triggerInfo/rowUpdated.js +4 -1
- package/dist/automations/triggerInfo/webhook.js +4 -1
- package/dist/automations/triggers.js +90 -57
- package/dist/automations/utils.js +9 -8
- package/dist/constants/index.js +118 -104
- package/dist/constants/layouts.js +7 -10
- package/dist/constants/screens.js +49 -44
- package/dist/db/defaultData/datasource_bb_default.js +573 -0
- package/dist/db/defaultData/employeeImport.js +155 -0
- package/dist/db/defaultData/expensesImport.js +117 -0
- package/dist/db/defaultData/inventoryImport.js +109 -0
- package/dist/db/defaultData/jobsImport.js +152 -0
- package/dist/db/dynamoClient.js +20 -20
- package/dist/db/inMemoryView.js +47 -38
- package/dist/db/index.js +7 -4
- package/dist/db/linkedRows/LinkController.js +51 -70
- package/dist/db/linkedRows/LinkDocument.js +32 -0
- package/dist/db/linkedRows/index.js +93 -81
- package/dist/db/linkedRows/linkUtils.js +42 -32
- package/dist/db/utils.js +146 -119
- package/dist/db/views/staticViews.js +91 -74
- package/dist/environment.js +9 -6
- package/dist/events/AutomationEmitter.js +13 -10
- package/dist/events/BudibaseEmitter.js +24 -0
- package/dist/events/index.js +5 -23
- package/dist/events/utils.js +18 -10
- package/dist/integrations/elasticsearch.js +26 -2
- package/dist/integrations/googlesheets.js +5 -6
- package/dist/integrations/index.js +15 -6
- package/dist/integrations/s3.js +157 -1
- package/dist/middleware/appInfo.js +14 -9
- package/dist/middleware/authorized.js +22 -21
- package/dist/middleware/builder.js +41 -40
- package/dist/middleware/currentapp.js +39 -37
- package/dist/middleware/joi-validator.js +17 -10
- package/dist/middleware/publicApi.js +5 -6
- package/dist/middleware/resourceId.js +16 -9
- package/dist/middleware/selfhost.js +5 -4
- package/dist/middleware/utils.js +5 -2
- package/dist/migrations/functions/appUrls.js +2 -2
- package/dist/migrations/functions/backfill/global.js +1 -1
- package/dist/migrations/functions/tableSettings.js +130 -0
- package/dist/migrations/functions/usageQuotas/syncApps.js +3 -4
- package/dist/migrations/functions/usageQuotas/syncRows.js +3 -4
- package/dist/migrations/functions/userEmailViewCasing.js +3 -3
- package/dist/migrations/index.js +5 -0
- package/dist/package.json +11 -45
- package/dist/sdk/app/backups/exports.js +1 -2
- package/dist/sdk/app/backups/imports.js +2 -3
- package/dist/sdk/app/tables/index.js +5 -5
- package/dist/startup.js +10 -10
- package/dist/tests/utilities/TestConfiguration.js +111 -87
- package/dist/tests/utilities/controllers.js +38 -15
- package/dist/tests/utilities/structures.js +72 -53
- package/dist/threads/automation.js +49 -27
- package/dist/threads/query.js +17 -19
- package/dist/threads/utils.js +33 -8
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/budibaseDir.js +4 -2
- package/dist/utilities/centralPath.js +14 -7
- package/dist/utilities/csvParser.js +27 -21
- package/dist/utilities/fileSystem/clientLibrary.js +87 -73
- package/dist/utilities/fileSystem/index.js +203 -175
- package/dist/utilities/fileSystem/processor.js +8 -3
- package/dist/utilities/global.js +87 -66
- package/dist/utilities/index.js +102 -75
- package/dist/utilities/plugins.js +15 -9
- package/dist/utilities/redis.js +100 -65
- package/dist/utilities/routing/index.js +27 -23
- package/dist/utilities/rowProcessor/index.js +133 -191
- package/dist/utilities/rowProcessor/map.js +99 -0
- package/dist/utilities/rowProcessor/utils.js +35 -26
- package/dist/utilities/scriptRunner.js +8 -5
- package/dist/utilities/security.js +39 -35
- package/dist/utilities/usageQuota/rows.js +56 -49
- package/dist/utilities/users.js +31 -28
- package/dist/utilities/workerRequests.js +115 -82
- package/dist/watch.js +1 -2
- package/jest.config.ts +33 -0
- package/package.json +12 -46
- package/scripts/exportAppTemplate.js +2 -2
- package/scripts/localdomain.js +34 -6
- package/src/api/controllers/{apikeys.js → apikeys.ts} +10 -10
- package/src/api/controllers/application.ts +56 -42
- package/src/api/controllers/auth.ts +4 -3
- package/src/api/controllers/{automation.js → automation.ts} +48 -48
- package/src/api/controllers/{cloud.js → cloud.ts} +24 -24
- package/src/api/controllers/component.ts +2 -1
- package/src/api/controllers/{datasource.js → datasource.ts} +109 -49
- package/src/api/controllers/deploy/{Deployment.js → Deployment.ts} +13 -10
- package/src/api/controllers/deploy/index.ts +13 -25
- package/src/api/controllers/{dev.js → dev.ts} +31 -37
- package/src/api/controllers/integration.ts +13 -0
- package/src/api/controllers/{layout.js → layout.ts} +8 -8
- package/src/api/controllers/{metadata.js → metadata.ts} +11 -10
- package/src/api/controllers/migrations.ts +14 -0
- package/src/api/controllers/{permission.js → permission.ts} +49 -46
- package/src/api/controllers/plugin/index.ts +4 -5
- package/src/api/controllers/plugin/utils.ts +3 -5
- package/src/api/controllers/public/applications.ts +15 -9
- package/src/api/controllers/public/rows.ts +1 -1
- package/src/api/controllers/public/tables.ts +2 -2
- package/src/api/controllers/public/utils.ts +2 -2
- package/src/api/controllers/query/import/index.ts +2 -3
- package/src/api/controllers/query/index.ts +11 -14
- package/src/api/controllers/query/{validation.js → validation.ts} +7 -7
- package/src/api/controllers/{role.js → role.ts} +21 -25
- package/src/api/controllers/{routing.js → routing.ts} +37 -34
- package/src/api/controllers/row/ExternalRequest.ts +602 -624
- package/src/api/controllers/row/{external.js → external.ts} +79 -62
- package/src/api/controllers/row/index.ts +19 -11
- package/src/api/controllers/row/{internal.js → internal.ts} +87 -73
- package/src/api/controllers/row/{internalSearch.js → internalSearch.ts} +92 -68
- package/src/api/controllers/row/{staticFormula.js → staticFormula.ts} +30 -25
- package/src/api/controllers/row/{utils.js → utils.ts} +32 -22
- package/src/api/controllers/screen.ts +10 -6
- package/src/api/controllers/script.ts +12 -0
- package/src/api/controllers/static/index.ts +14 -16
- package/src/api/controllers/table/{bulkFormula.js → bulkFormula.ts} +39 -25
- package/src/api/controllers/table/{external.js → external.ts} +86 -55
- package/src/api/controllers/table/{index.js → index.ts} +21 -18
- package/src/api/controllers/table/internal.ts +5 -6
- package/src/api/controllers/table/utils.ts +26 -21
- package/src/api/controllers/{templates.js → templates.ts} +10 -7
- package/src/api/controllers/{user.js → user.ts} +47 -49
- package/src/api/controllers/view/{exporters.js → exporters.ts} +5 -3
- package/src/api/controllers/view/{index.js → index.ts} +36 -27
- package/src/api/controllers/view/{utils.js → utils.ts} +26 -20
- package/src/api/controllers/view/{viewBuilder.js → viewBuilder.ts} +25 -11
- package/src/api/controllers/webhook.ts +1 -1
- package/src/api/{index.js → index.ts} +15 -22
- package/src/api/routes/analytics.ts +9 -0
- package/src/api/routes/apikeys.ts +12 -0
- package/src/api/routes/application.ts +17 -9
- package/src/api/routes/auth.ts +2 -2
- package/src/api/routes/automation.ts +87 -0
- package/src/api/routes/backup.ts +8 -4
- package/src/api/routes/cloud.ts +18 -0
- package/src/api/routes/component.ts +14 -0
- package/src/api/routes/datasource.ts +60 -0
- package/src/api/routes/deploy.ts +21 -0
- package/src/api/routes/dev.ts +38 -0
- package/src/api/routes/integration.ts +16 -0
- package/src/api/routes/layout.ts +16 -0
- package/src/api/routes/{metadata.js → metadata.ts} +13 -13
- package/src/api/routes/migrations.ts +14 -0
- package/src/api/routes/permission.ts +41 -0
- package/src/api/routes/plugin.ts +14 -6
- package/src/api/routes/public/index.ts +11 -14
- package/src/api/routes/public/tests/compare.spec.js +1 -1
- package/src/api/routes/{query.js → query.ts} +19 -22
- package/src/api/routes/role.ts +24 -0
- package/src/api/routes/routing.ts +14 -0
- package/src/api/routes/row.ts +13 -15
- package/src/api/routes/screen.ts +23 -0
- package/src/api/routes/script.ts +10 -0
- package/src/api/routes/static.ts +7 -10
- package/src/api/routes/{table.js → table.ts} +10 -13
- package/src/api/routes/templates.ts +16 -0
- package/src/api/routes/tests/analytics.spec.js +1 -1
- package/src/api/routes/tests/backup.spec.js +9 -1
- package/src/api/routes/tests/deployment.spec.ts +1 -1
- package/src/api/routes/tests/permissions.spec.js +2 -1
- package/src/api/routes/tests/query.spec.js +15 -10
- package/src/api/routes/tests/role.spec.js +7 -9
- package/src/api/routes/tests/routing.spec.js +2 -1
- package/src/api/routes/tests/row.spec.js +3 -4
- package/src/api/routes/tests/static.spec.js +2 -2
- package/src/api/routes/tests/table.spec.js +40 -36
- package/src/api/routes/tests/user.spec.js +2 -1
- package/src/api/routes/tests/utilities/TestFunctions.ts +6 -8
- package/src/api/routes/tests/utilities/{index.js → index.ts} +12 -12
- package/src/api/routes/tests/view.spec.js +3 -3
- package/src/api/routes/user.ts +51 -0
- package/src/api/routes/utils/{validators.js → validators.ts} +33 -37
- package/src/api/routes/view.ts +34 -0
- package/src/api/routes/webhook.ts +2 -2
- package/src/app.ts +15 -14
- package/src/automations/{actions.js → actions.ts} +26 -23
- package/src/automations/{automationUtils.js → automationUtils.ts} +13 -12
- package/src/automations/bullboard.ts +38 -0
- package/src/automations/index.ts +26 -0
- package/src/automations/steps/{bash.js → bash.ts} +13 -8
- package/src/automations/steps/createRow.ts +8 -3
- package/src/automations/steps/{delay.js → delay.ts} +9 -4
- package/src/automations/steps/deleteRow.ts +8 -3
- package/src/automations/steps/{discord.js → discord.ts} +10 -5
- package/src/automations/steps/{executeQuery.js → executeQuery.ts} +12 -7
- package/src/automations/steps/{executeScript.js → executeScript.ts} +17 -7
- package/src/automations/steps/{filter.js → filter.ts} +12 -9
- package/src/automations/steps/{integromat.js → integromat.ts} +10 -5
- package/src/automations/steps/{loop.js → loop.ts} +4 -2
- package/src/automations/steps/{outgoingWebhook.js → outgoingWebhook.ts} +18 -13
- package/src/automations/steps/{queryRows.js → queryRows.ts} +48 -36
- package/src/automations/steps/{sendSmtpEmail.js → sendSmtpEmail.ts} +10 -5
- package/src/automations/steps/{serverLog.js → serverLog.ts} +9 -3
- package/src/automations/steps/{slack.js → slack.ts} +10 -5
- package/src/automations/steps/{updateRow.js → updateRow.ts} +12 -7
- package/src/automations/steps/{utils.js → utils.ts} +10 -4
- package/src/automations/steps/{zapier.js → zapier.ts} +11 -5
- package/src/automations/tests/updateRow.spec.js +0 -1
- package/src/automations/tests/utilities/index.ts +60 -0
- package/src/automations/triggerInfo/{app.js → app.ts} +7 -2
- package/src/automations/triggerInfo/{cron.js → cron.ts} +7 -2
- package/src/automations/triggerInfo/index.ts +15 -0
- package/src/automations/triggerInfo/{rowDeleted.js → rowDeleted.ts} +7 -2
- package/src/automations/triggerInfo/{rowSaved.js → rowSaved.ts} +7 -2
- package/src/automations/triggerInfo/{rowUpdated.js → rowUpdated.ts} +7 -2
- package/src/automations/triggerInfo/{webhook.js → webhook.ts} +7 -2
- package/src/automations/{triggers.js → triggers.ts} +30 -26
- package/src/automations/utils.ts +9 -12
- package/src/constants/index.ts +204 -0
- package/src/constants/{layouts.js → layouts.ts} +3 -9
- package/src/constants/screens.ts +48 -0
- package/src/db/defaultData/datasource_bb_default.ts +658 -0
- package/src/db/defaultData/employeeImport.ts +152 -0
- package/src/db/defaultData/expensesImport.ts +114 -0
- package/src/db/defaultData/inventoryImport.ts +106 -0
- package/src/db/defaultData/jobsImport.ts +158 -0
- package/src/db/{dynamoClient.js → dynamoClient.ts} +39 -19
- package/src/db/{inMemoryView.js → inMemoryView.ts} +15 -9
- package/src/db/index.ts +16 -0
- package/src/db/linkedRows/{LinkController.js → LinkController.ts} +64 -85
- package/src/db/linkedRows/LinkDocument.ts +60 -0
- package/src/db/linkedRows/{index.js → index.ts} +43 -38
- package/src/db/linkedRows/{linkUtils.js → linkUtils.ts} +33 -24
- package/src/db/{newid.js → newid.ts} +1 -1
- package/src/db/tests/linkController.spec.js +73 -57
- package/src/db/tests/linkTests.spec.js +17 -14
- package/src/db/{utils.js → utils.ts} +77 -93
- package/src/db/views/{staticViews.js → staticViews.ts} +20 -13
- package/src/{environment.js → environment.ts} +11 -7
- package/src/events/{AutomationEmitter.js → AutomationEmitter.ts} +12 -7
- package/src/events/{index.js → BudibaseEmitter.ts} +7 -8
- package/src/events/index.ts +5 -0
- package/src/events/utils.ts +78 -0
- package/src/integrations/base/sql.ts +1 -1
- package/src/integrations/base/sqlTable.ts +1 -1
- package/src/integrations/elasticsearch.ts +32 -2
- package/src/integrations/googlesheets.ts +5 -7
- package/src/integrations/index.ts +45 -41
- package/src/integrations/s3.ts +179 -3
- package/src/integrations/tests/s3.spec.ts +85 -1
- package/src/integrations/utils.ts +6 -2
- package/src/middleware/appInfo.ts +20 -0
- package/src/middleware/authorized.ts +21 -28
- package/src/middleware/{builder.js → builder.ts} +17 -15
- package/src/middleware/{currentapp.js → currentapp.ts} +42 -39
- package/src/middleware/{joi-validator.js → joi-validator.ts} +9 -8
- package/src/middleware/publicApi.ts +21 -0
- package/src/middleware/{resourceId.js → resourceId.ts} +16 -11
- package/src/middleware/{selfhost.js → selfhost.ts} +4 -2
- package/src/middleware/tests/authorized.spec.js +5 -6
- package/src/middleware/tests/currentapp.spec.js +118 -63
- package/src/middleware/{utils.js → utils.ts} +3 -1
- package/src/migrations/functions/appUrls.ts +2 -2
- package/src/migrations/functions/backfill/app/tables.ts +2 -5
- package/src/migrations/functions/backfill/global.ts +1 -1
- package/src/migrations/functions/tableSettings.ts +145 -0
- package/src/migrations/functions/tests/appUrls.spec.js +4 -4
- package/src/migrations/functions/tests/tableSettings.spec.ts +144 -0
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +14 -9
- package/src/migrations/functions/usageQuotas/syncApps.ts +3 -4
- package/src/migrations/functions/usageQuotas/syncRows.ts +4 -5
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +7 -7
- package/src/migrations/functions/userEmailViewCasing.ts +3 -3
- package/src/migrations/index.ts +9 -0
- package/src/migrations/tests/index.spec.ts +1 -1
- package/src/sdk/app/backups/exports.ts +5 -3
- package/src/sdk/app/backups/imports.ts +7 -14
- package/src/sdk/app/backups/statistics.ts +9 -18
- package/src/sdk/app/tables/index.ts +7 -8
- package/src/startup.ts +5 -5
- package/{scripts/jestSetup.js → src/tests/jestSetup.ts} +11 -2
- package/src/tests/utilities/{TestConfiguration.js → TestConfiguration.ts} +111 -78
- package/src/tests/utilities/controllers.ts +14 -0
- package/src/tests/utilities/{index.js → index.ts} +2 -2
- package/src/tests/utilities/{structures.js → structures.ts} +41 -36
- package/src/threads/automation.ts +18 -19
- package/src/threads/query.ts +11 -16
- package/src/threads/utils.ts +4 -5
- package/src/utilities/budibaseDir.ts +3 -0
- package/src/utilities/{centralPath.js → centralPath.ts} +3 -3
- package/src/utilities/{csvParser.js → csvParser.ts} +42 -26
- package/src/utilities/fileSystem/{clientLibrary.js → clientLibrary.ts} +20 -20
- package/src/utilities/fileSystem/{index.js → index.ts} +61 -65
- package/src/utilities/fileSystem/{processor.js → processor.ts} +3 -5
- package/src/utilities/global.ts +138 -0
- package/src/utilities/{index.js → index.ts} +40 -32
- package/src/utilities/{plugins.js → plugins.ts} +5 -4
- package/src/utilities/{redis.js → redis.ts} +21 -20
- package/src/utilities/routing/index.ts +32 -0
- package/src/utilities/rowProcessor/{index.js → index.ts} +67 -144
- package/src/utilities/rowProcessor/map.ts +96 -0
- package/src/utilities/rowProcessor/{utils.js → utils.ts} +19 -15
- package/src/utilities/{scriptRunner.js → scriptRunner.ts} +8 -4
- package/src/utilities/security.ts +65 -0
- package/src/utilities/{statusCodes.js → statusCodes.ts} +1 -1
- package/src/utilities/usageQuota/{rows.js → rows.ts} +14 -18
- package/src/utilities/usageQuota/{usageQuoteReset.js → usageQuoteReset.ts} +1 -1
- package/src/utilities/{users.js → users.ts} +11 -13
- package/src/utilities/{workerRequests.js → workerRequests.ts} +43 -38
- package/src/watch.ts +2 -3
- package/tsconfig.build.json +1 -2
- package/tsconfig.json +3 -1
- package/builder/assets/index.2467ba90.js +0 -1021
- package/builder/assets/index.534f6c29.css +0 -6
- package/coverage/lcov-report/api/controllers/index.html +0 -326
- package/coverage/lcov-report/api/routes/permission.js.html +0 -184
- package/coverage/lcov-report/automations/steps/index.html +0 -341
- package/coverage/lcov-report/db/linkedRows/index.html +0 -146
- package/dist/integrations/tests/TestConfiguration.js +0 -1
- package/dist/utilities/fileSystem/utilities.js +0 -22
- package/dist/utilities/queue/inMemoryQueue.js +0 -126
- package/src/api/controllers/integration.js +0 -14
- package/src/api/controllers/migrations.js +0 -13
- package/src/api/controllers/script.js +0 -11
- package/src/api/routes/analytics.js +0 -9
- package/src/api/routes/apikeys.js +0 -12
- package/src/api/routes/automation.js +0 -85
- package/src/api/routes/cloud.js +0 -14
- package/src/api/routes/component.js +0 -14
- package/src/api/routes/datasource.js +0 -51
- package/src/api/routes/deploy.js +0 -17
- package/src/api/routes/dev.js +0 -26
- package/src/api/routes/integration.js +0 -12
- package/src/api/routes/layout.js +0 -16
- package/src/api/routes/migrations.js +0 -14
- package/src/api/routes/permission.js +0 -33
- package/src/api/routes/role.js +0 -15
- package/src/api/routes/routing.js +0 -14
- package/src/api/routes/screen.js +0 -18
- package/src/api/routes/script.js +0 -10
- package/src/api/routes/templates.js +0 -16
- package/src/api/routes/user.js +0 -53
- package/src/api/routes/view.js +0 -31
- package/src/automations/bullboard.js +0 -39
- package/src/automations/index.js +0 -29
- package/src/automations/tests/utilities/index.js +0 -51
- package/src/automations/triggerInfo/index.js +0 -15
- package/src/constants/index.js +0 -208
- package/src/constants/screens.js +0 -46
- package/src/db/index.js +0 -16
- package/src/events/utils.js +0 -38
- package/src/middleware/appInfo.js +0 -19
- package/src/middleware/publicApi.js +0 -21
- package/src/module.d.ts +0 -14
- package/src/tests/utilities/controllers.js +0 -16
- package/src/utilities/budibaseDir.js +0 -3
- package/src/utilities/fileSystem/utilities.js +0 -36
- package/src/utilities/global.js +0 -127
- package/src/utilities/queue/inMemoryQueue.js +0 -122
- package/src/utilities/routing/index.js +0 -25
- package/src/utilities/security.js +0 -71
|
@@ -14,19 +14,14 @@ const {
|
|
|
14
14
|
} = require("../../../utilities/fileSystem")
|
|
15
15
|
const env = require("../../../environment")
|
|
16
16
|
const { clientLibraryPath } = require("../../../utilities")
|
|
17
|
-
const { upload, deleteFiles } = require("../../../utilities/fileSystem")
|
|
18
17
|
const { attachmentsRelativeURL } = require("../../../utilities")
|
|
19
18
|
const { DocumentType } = require("../../../db/utils")
|
|
20
|
-
const {
|
|
21
|
-
const { setCookie, clearCookie } = require("@budibase/backend-core/utils")
|
|
19
|
+
const { context, objectStore, utils } = require("@budibase/backend-core")
|
|
22
20
|
const AWS = require("aws-sdk")
|
|
23
21
|
const fs = require("fs")
|
|
24
|
-
const {
|
|
25
|
-
downloadTarballDirect,
|
|
26
|
-
} = require("../../../utilities/fileSystem/utilities")
|
|
27
22
|
|
|
28
23
|
async function prepareUpload({ s3Key, bucket, metadata, file }: any) {
|
|
29
|
-
const response = await upload({
|
|
24
|
+
const response = await objectStore.upload({
|
|
30
25
|
bucket,
|
|
31
26
|
metadata,
|
|
32
27
|
filename: s3Key,
|
|
@@ -48,7 +43,7 @@ export const toggleBetaUiFeature = async function (ctx: any) {
|
|
|
48
43
|
const cookieName = `beta:${ctx.params.feature}`
|
|
49
44
|
|
|
50
45
|
if (ctx.cookies.get(cookieName)) {
|
|
51
|
-
clearCookie(ctx, cookieName)
|
|
46
|
+
utils.clearCookie(ctx, cookieName)
|
|
52
47
|
ctx.body = {
|
|
53
48
|
message: `${ctx.params.feature} disabled`,
|
|
54
49
|
}
|
|
@@ -61,11 +56,11 @@ export const toggleBetaUiFeature = async function (ctx: any) {
|
|
|
61
56
|
if (!fs.existsSync(builderPath)) {
|
|
62
57
|
fs.mkdirSync(builderPath)
|
|
63
58
|
}
|
|
64
|
-
await downloadTarballDirect(
|
|
59
|
+
await objectStore.downloadTarballDirect(
|
|
65
60
|
"https://cdn.budi.live/beta:design_ui/new_ui.tar.gz",
|
|
66
61
|
builderPath
|
|
67
62
|
)
|
|
68
|
-
setCookie(ctx, {}, cookieName)
|
|
63
|
+
utils.setCookie(ctx, {}, cookieName)
|
|
69
64
|
|
|
70
65
|
ctx.body = {
|
|
71
66
|
message: `${ctx.params.feature} enabled`,
|
|
@@ -99,13 +94,16 @@ export const uploadFile = async function (ctx: any) {
|
|
|
99
94
|
}
|
|
100
95
|
|
|
101
96
|
export const deleteObjects = async function (ctx: any) {
|
|
102
|
-
ctx.body = await deleteFiles(
|
|
97
|
+
ctx.body = await objectStore.deleteFiles(
|
|
98
|
+
ObjectStoreBuckets.APPS,
|
|
99
|
+
ctx.request.body.keys
|
|
100
|
+
)
|
|
103
101
|
}
|
|
104
102
|
|
|
105
103
|
export const serveApp = async function (ctx: any) {
|
|
106
|
-
const db = getAppDB({ skip_setup: true })
|
|
104
|
+
const db = context.getAppDB({ skip_setup: true })
|
|
107
105
|
const appInfo = await db.get(DocumentType.APP_METADATA)
|
|
108
|
-
let appId = getAppId()
|
|
106
|
+
let appId = context.getAppId()
|
|
109
107
|
|
|
110
108
|
if (!env.isJest()) {
|
|
111
109
|
const App = require("./templates/BudibaseApp.svelte").default
|
|
@@ -134,11 +132,11 @@ export const serveApp = async function (ctx: any) {
|
|
|
134
132
|
}
|
|
135
133
|
|
|
136
134
|
export const serveBuilderPreview = async function (ctx: any) {
|
|
137
|
-
const db = getAppDB({ skip_setup: true })
|
|
135
|
+
const db = context.getAppDB({ skip_setup: true })
|
|
138
136
|
const appInfo = await db.get(DocumentType.APP_METADATA)
|
|
139
137
|
|
|
140
138
|
if (!env.isJest()) {
|
|
141
|
-
let appId = getAppId()
|
|
139
|
+
let appId = context.getAppId()
|
|
142
140
|
const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`)
|
|
143
141
|
ctx.body = await processString(previewHbs, {
|
|
144
142
|
clientLibPath: clientLibraryPath(appId, appInfo.version, ctx),
|
|
@@ -156,7 +154,7 @@ export const serveClientLibrary = async function (ctx: any) {
|
|
|
156
154
|
}
|
|
157
155
|
|
|
158
156
|
export const getSignedUploadURL = async function (ctx: any) {
|
|
159
|
-
const database = getAppDB()
|
|
157
|
+
const database = context.getAppDB()
|
|
160
158
|
|
|
161
159
|
// Ensure datasource is valid
|
|
162
160
|
let datasource
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { FieldTypes, FormulaTypes } from "../../../constants"
|
|
2
|
+
import { clearColumns } from "./utils"
|
|
3
|
+
import { doesContainStrings } from "@budibase/string-templates"
|
|
4
|
+
import { cloneDeep } from "lodash/fp"
|
|
5
|
+
import { isEqual, uniq } from "lodash"
|
|
6
|
+
import { updateAllFormulasInTable } from "../row/staticFormula"
|
|
7
|
+
import { context } from "@budibase/backend-core"
|
|
8
|
+
import { FieldSchema, Table } from "@budibase/types"
|
|
9
|
+
import sdk from "../../../sdk"
|
|
9
10
|
|
|
10
|
-
function isStaticFormula(column) {
|
|
11
|
+
function isStaticFormula(column: FieldSchema) {
|
|
11
12
|
return (
|
|
12
13
|
column.type === FieldTypes.FORMULA &&
|
|
13
14
|
column.formulaType === FormulaTypes.STATIC
|
|
@@ -18,8 +19,8 @@ function isStaticFormula(column) {
|
|
|
18
19
|
* This retrieves the formula columns from a table schema that use a specified column name
|
|
19
20
|
* in the formula.
|
|
20
21
|
*/
|
|
21
|
-
function getFormulaThatUseColumn(table, columnNames) {
|
|
22
|
-
let formula = []
|
|
22
|
+
function getFormulaThatUseColumn(table: Table, columnNames: string[] | string) {
|
|
23
|
+
let formula: string[] = []
|
|
23
24
|
columnNames = Array.isArray(columnNames) ? columnNames : [columnNames]
|
|
24
25
|
for (let column of Object.values(table.schema)) {
|
|
25
26
|
// not a static formula, or doesn't contain a relationship
|
|
@@ -38,7 +39,10 @@ function getFormulaThatUseColumn(table, columnNames) {
|
|
|
38
39
|
* This functions checks for when a related table, column or related column is deleted, if any
|
|
39
40
|
* tables need to have the formula column removed.
|
|
40
41
|
*/
|
|
41
|
-
async function checkIfFormulaNeedsCleared(
|
|
42
|
+
async function checkIfFormulaNeedsCleared(
|
|
43
|
+
table: Table,
|
|
44
|
+
{ oldTable, deletion }: { oldTable?: Table; deletion?: boolean }
|
|
45
|
+
) {
|
|
42
46
|
// start by retrieving all tables, remove the current table from the list
|
|
43
47
|
const tables = (await sdk.tables.getAllInternalTables()).filter(
|
|
44
48
|
tbl => tbl._id !== table._id
|
|
@@ -49,11 +53,14 @@ async function checkIfFormulaNeedsCleared(table, { oldTable, deletion }) {
|
|
|
49
53
|
)
|
|
50
54
|
// remove any formula columns that used related columns
|
|
51
55
|
for (let removed of removedColumns) {
|
|
52
|
-
let tableToUse = table
|
|
56
|
+
let tableToUse: Table | undefined = table
|
|
53
57
|
// if relationship, get the related table
|
|
54
58
|
if (removed.type === FieldTypes.LINK) {
|
|
55
59
|
tableToUse = tables.find(table => table._id === removed.tableId)
|
|
56
60
|
}
|
|
61
|
+
if (!tableToUse) {
|
|
62
|
+
continue
|
|
63
|
+
}
|
|
57
64
|
const columnsToDelete = getFormulaThatUseColumn(tableToUse, removed.name)
|
|
58
65
|
if (columnsToDelete.length > 0) {
|
|
59
66
|
await clearColumns(table, columnsToDelete)
|
|
@@ -71,11 +78,11 @@ async function checkIfFormulaNeedsCleared(table, { oldTable, deletion }) {
|
|
|
71
78
|
// look to see if the column was used in a relationship formula,
|
|
72
79
|
// relationships won't be used for this
|
|
73
80
|
if (relatedTable && relatedColumns && removed.type !== FieldTypes.LINK) {
|
|
74
|
-
let relatedFormulaToRemove = []
|
|
81
|
+
let relatedFormulaToRemove: string[] = []
|
|
75
82
|
for (let column of relatedColumns) {
|
|
76
83
|
relatedFormulaToRemove = relatedFormulaToRemove.concat(
|
|
77
84
|
getFormulaThatUseColumn(relatedTable, [
|
|
78
|
-
column.fieldName
|
|
85
|
+
column.fieldName!,
|
|
79
86
|
removed.name,
|
|
80
87
|
])
|
|
81
88
|
)
|
|
@@ -95,13 +102,14 @@ async function checkIfFormulaNeedsCleared(table, { oldTable, deletion }) {
|
|
|
95
102
|
* specifically only for static formula.
|
|
96
103
|
*/
|
|
97
104
|
async function updateRelatedFormulaLinksOnTables(
|
|
98
|
-
table,
|
|
99
|
-
{ deletion }
|
|
105
|
+
table: Table,
|
|
106
|
+
{ deletion }: { deletion?: boolean } = {}
|
|
100
107
|
) {
|
|
101
|
-
const
|
|
108
|
+
const tableId: string = table._id!
|
|
109
|
+
const db = context.getAppDB()
|
|
102
110
|
// start by retrieving all tables, remove the current table from the list
|
|
103
111
|
const tables = (await sdk.tables.getAllInternalTables()).filter(
|
|
104
|
-
tbl => tbl._id !==
|
|
112
|
+
tbl => tbl._id !== tableId
|
|
105
113
|
)
|
|
106
114
|
// clone the tables, so we can compare at end
|
|
107
115
|
const initialTables = cloneDeep(tables)
|
|
@@ -114,7 +122,7 @@ async function updateRelatedFormulaLinksOnTables(
|
|
|
114
122
|
if (!otherTable.relatedFormula) {
|
|
115
123
|
continue
|
|
116
124
|
}
|
|
117
|
-
const index = otherTable.relatedFormula.indexOf(
|
|
125
|
+
const index = otherTable.relatedFormula.indexOf(tableId)
|
|
118
126
|
if (index !== -1) {
|
|
119
127
|
otherTable.relatedFormula.splice(index, 1)
|
|
120
128
|
}
|
|
@@ -133,11 +141,11 @@ async function updateRelatedFormulaLinksOnTables(
|
|
|
133
141
|
if (
|
|
134
142
|
relatedTable &&
|
|
135
143
|
(!relatedTable.relatedFormula ||
|
|
136
|
-
!relatedTable.relatedFormula.includes(
|
|
144
|
+
!relatedTable.relatedFormula.includes(tableId))
|
|
137
145
|
) {
|
|
138
146
|
relatedTable.relatedFormula = relatedTable.relatedFormula
|
|
139
|
-
? [...relatedTable.relatedFormula,
|
|
140
|
-
: [
|
|
147
|
+
? [...relatedTable.relatedFormula, tableId]
|
|
148
|
+
: [tableId]
|
|
141
149
|
}
|
|
142
150
|
}
|
|
143
151
|
}
|
|
@@ -150,7 +158,10 @@ async function updateRelatedFormulaLinksOnTables(
|
|
|
150
158
|
}
|
|
151
159
|
}
|
|
152
160
|
|
|
153
|
-
async function checkIfFormulaUpdated(
|
|
161
|
+
async function checkIfFormulaUpdated(
|
|
162
|
+
table: Table,
|
|
163
|
+
{ oldTable }: { oldTable?: Table }
|
|
164
|
+
) {
|
|
154
165
|
// look to see if any formula values have changed
|
|
155
166
|
const shouldUpdate = Object.values(table.schema).find(
|
|
156
167
|
column =>
|
|
@@ -165,7 +176,10 @@ async function checkIfFormulaUpdated(table, { oldTable }) {
|
|
|
165
176
|
}
|
|
166
177
|
}
|
|
167
178
|
|
|
168
|
-
|
|
179
|
+
export async function runStaticFormulaChecks(
|
|
180
|
+
table: Table,
|
|
181
|
+
{ oldTable, deletion }: { oldTable?: Table; deletion?: boolean }
|
|
182
|
+
) {
|
|
169
183
|
await updateRelatedFormulaLinksOnTables(table, { deletion })
|
|
170
184
|
await checkIfFormulaNeedsCleared(table, { oldTable, deletion })
|
|
171
185
|
if (!deletion) {
|
|
@@ -1,38 +1,43 @@
|
|
|
1
|
-
|
|
1
|
+
import {
|
|
2
2
|
buildExternalTableId,
|
|
3
3
|
breakExternalTableId,
|
|
4
|
-
}
|
|
5
|
-
|
|
4
|
+
} from "../../../integrations/utils"
|
|
5
|
+
import {
|
|
6
6
|
generateForeignKey,
|
|
7
7
|
generateJunctionTableName,
|
|
8
8
|
foreignKeyStructure,
|
|
9
9
|
hasTypeChanged,
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
10
|
+
} from "./utils"
|
|
11
|
+
import { FieldTypes, RelationshipTypes } from "../../../constants"
|
|
12
|
+
import { makeExternalQuery } from "../../../integrations/base/query"
|
|
13
|
+
import * as csvParser from "../../../utilities/csvParser"
|
|
14
|
+
import { handleRequest } from "../row/external"
|
|
15
|
+
import { events, context } from "@budibase/backend-core"
|
|
16
|
+
import {
|
|
17
|
+
Datasource,
|
|
18
|
+
Table,
|
|
19
|
+
QueryJson,
|
|
20
|
+
Operation,
|
|
21
|
+
RenameColumn,
|
|
22
|
+
FieldSchema,
|
|
23
|
+
BBContext,
|
|
24
|
+
TableRequest,
|
|
25
|
+
} from "@budibase/types"
|
|
26
|
+
import sdk from "../../../sdk"
|
|
17
27
|
const { cloneDeep } = require("lodash/fp")
|
|
18
|
-
const csvParser = require("../../../utilities/csvParser")
|
|
19
|
-
const { handleRequest } = require("../row/external")
|
|
20
|
-
const { getAppDB } = require("@budibase/backend-core/context")
|
|
21
|
-
const { events } = require("@budibase/backend-core")
|
|
22
|
-
const sdk = require("../../../sdk")
|
|
23
28
|
|
|
24
29
|
async function makeTableRequest(
|
|
25
|
-
datasource,
|
|
26
|
-
operation,
|
|
27
|
-
table,
|
|
28
|
-
tables,
|
|
29
|
-
oldTable
|
|
30
|
-
renamed
|
|
30
|
+
datasource: Datasource,
|
|
31
|
+
operation: Operation,
|
|
32
|
+
table: Table,
|
|
33
|
+
tables: Record<string, Table>,
|
|
34
|
+
oldTable?: Table,
|
|
35
|
+
renamed?: RenameColumn
|
|
31
36
|
) {
|
|
32
|
-
const json = {
|
|
37
|
+
const json: QueryJson = {
|
|
33
38
|
endpoint: {
|
|
34
|
-
datasourceId: datasource._id
|
|
35
|
-
entityId: table._id
|
|
39
|
+
datasourceId: datasource._id!,
|
|
40
|
+
entityId: table._id!,
|
|
36
41
|
operation,
|
|
37
42
|
},
|
|
38
43
|
meta: {
|
|
@@ -41,15 +46,19 @@ async function makeTableRequest(
|
|
|
41
46
|
table,
|
|
42
47
|
}
|
|
43
48
|
if (oldTable) {
|
|
44
|
-
json.meta
|
|
49
|
+
json.meta!.table = oldTable
|
|
45
50
|
}
|
|
46
51
|
if (renamed) {
|
|
47
|
-
json.meta
|
|
52
|
+
json.meta!.renamed = renamed
|
|
48
53
|
}
|
|
49
54
|
return makeExternalQuery(datasource, json)
|
|
50
55
|
}
|
|
51
56
|
|
|
52
|
-
function cleanupRelationships(
|
|
57
|
+
function cleanupRelationships(
|
|
58
|
+
table: Table,
|
|
59
|
+
tables: Record<string, Table>,
|
|
60
|
+
oldTable?: Table
|
|
61
|
+
) {
|
|
53
62
|
const tableToIterate = oldTable ? oldTable : table
|
|
54
63
|
// clean up relationships in couch table schemas
|
|
55
64
|
for (let [key, schema] of Object.entries(tableToIterate.schema)) {
|
|
@@ -78,7 +87,7 @@ function cleanupRelationships(table, tables, oldTable = null) {
|
|
|
78
87
|
}
|
|
79
88
|
}
|
|
80
89
|
|
|
81
|
-
function getDatasourceId(table) {
|
|
90
|
+
function getDatasourceId(table: Table) {
|
|
82
91
|
if (!table) {
|
|
83
92
|
throw "No table supplied"
|
|
84
93
|
}
|
|
@@ -88,7 +97,7 @@ function getDatasourceId(table) {
|
|
|
88
97
|
return breakExternalTableId(table._id).datasourceId
|
|
89
98
|
}
|
|
90
99
|
|
|
91
|
-
function otherRelationshipType(type) {
|
|
100
|
+
function otherRelationshipType(type?: string) {
|
|
92
101
|
if (type === RelationshipTypes.MANY_TO_MANY) {
|
|
93
102
|
return RelationshipTypes.MANY_TO_MANY
|
|
94
103
|
}
|
|
@@ -97,13 +106,21 @@ function otherRelationshipType(type) {
|
|
|
97
106
|
: RelationshipTypes.ONE_TO_MANY
|
|
98
107
|
}
|
|
99
108
|
|
|
100
|
-
function generateManyLinkSchema(
|
|
109
|
+
function generateManyLinkSchema(
|
|
110
|
+
datasource: Datasource,
|
|
111
|
+
column: FieldSchema,
|
|
112
|
+
table: Table,
|
|
113
|
+
relatedTable: Table
|
|
114
|
+
): Table {
|
|
115
|
+
if (!table.primary || !relatedTable.primary) {
|
|
116
|
+
throw new Error("Unable to generate many link schema, no primary keys")
|
|
117
|
+
}
|
|
101
118
|
const primary = table.name + table.primary[0]
|
|
102
119
|
const relatedPrimary = relatedTable.name + relatedTable.primary[0]
|
|
103
120
|
const jcTblName = generateJunctionTableName(column, table, relatedTable)
|
|
104
121
|
// first create the new table
|
|
105
122
|
const junctionTable = {
|
|
106
|
-
_id: buildExternalTableId(datasource._id
|
|
123
|
+
_id: buildExternalTableId(datasource._id!, jcTblName),
|
|
107
124
|
name: jcTblName,
|
|
108
125
|
primary: [primary, relatedPrimary],
|
|
109
126
|
constrained: [primary, relatedPrimary],
|
|
@@ -125,7 +142,15 @@ function generateManyLinkSchema(datasource, column, table, relatedTable) {
|
|
|
125
142
|
return junctionTable
|
|
126
143
|
}
|
|
127
144
|
|
|
128
|
-
function generateLinkSchema(
|
|
145
|
+
function generateLinkSchema(
|
|
146
|
+
column: FieldSchema,
|
|
147
|
+
table: Table,
|
|
148
|
+
relatedTable: Table,
|
|
149
|
+
type: string
|
|
150
|
+
) {
|
|
151
|
+
if (!table.primary || !relatedTable.primary) {
|
|
152
|
+
throw new Error("Unable to generate link schema, no primary keys")
|
|
153
|
+
}
|
|
129
154
|
const isOneSide = type === RelationshipTypes.ONE_TO_MANY
|
|
130
155
|
const primary = isOneSide ? relatedTable.primary[0] : table.primary[0]
|
|
131
156
|
// generate a foreign key
|
|
@@ -136,7 +161,12 @@ function generateLinkSchema(column, table, relatedTable, type) {
|
|
|
136
161
|
return foreignKey
|
|
137
162
|
}
|
|
138
163
|
|
|
139
|
-
function generateRelatedSchema(
|
|
164
|
+
function generateRelatedSchema(
|
|
165
|
+
linkColumn: FieldSchema,
|
|
166
|
+
table: Table,
|
|
167
|
+
relatedTable: Table,
|
|
168
|
+
columnName: string
|
|
169
|
+
) {
|
|
140
170
|
// generate column for other table
|
|
141
171
|
const relatedSchema = cloneDeep(linkColumn)
|
|
142
172
|
// swap them from the main link
|
|
@@ -159,21 +189,21 @@ function generateRelatedSchema(linkColumn, table, relatedTable, columnName) {
|
|
|
159
189
|
table.schema[columnName] = relatedSchema
|
|
160
190
|
}
|
|
161
191
|
|
|
162
|
-
function isRelationshipSetup(column) {
|
|
192
|
+
function isRelationshipSetup(column: FieldSchema) {
|
|
163
193
|
return column.foreignKey || column.through
|
|
164
194
|
}
|
|
165
195
|
|
|
166
|
-
|
|
167
|
-
const table = ctx.request.body
|
|
168
|
-
const
|
|
196
|
+
export async function save(ctx: BBContext) {
|
|
197
|
+
const table: TableRequest = ctx.request.body
|
|
198
|
+
const renamed = table?._rename
|
|
169
199
|
// can't do this right now
|
|
170
200
|
delete table.dataImport
|
|
171
|
-
const datasourceId = getDatasourceId(ctx.request.body)
|
|
201
|
+
const datasourceId = getDatasourceId(ctx.request.body)!
|
|
172
202
|
// table doesn't exist already, note that it is created
|
|
173
203
|
if (!table._id) {
|
|
174
204
|
table.created = true
|
|
175
205
|
}
|
|
176
|
-
let tableToSave = {
|
|
206
|
+
let tableToSave: TableRequest = {
|
|
177
207
|
type: "table",
|
|
178
208
|
_id: buildExternalTableId(datasourceId, table.name),
|
|
179
209
|
...table,
|
|
@@ -188,13 +218,13 @@ exports.save = async function (ctx) {
|
|
|
188
218
|
ctx.throw(400, "A column type has changed.")
|
|
189
219
|
}
|
|
190
220
|
|
|
191
|
-
const db = getAppDB()
|
|
221
|
+
const db = context.getAppDB()
|
|
192
222
|
const datasource = await db.get(datasourceId)
|
|
193
223
|
if (!datasource.entities) {
|
|
194
224
|
datasource.entities = {}
|
|
195
225
|
}
|
|
196
226
|
const oldTables = cloneDeep(datasource.entities)
|
|
197
|
-
const tables = datasource.entities
|
|
227
|
+
const tables: Record<string, Table> = datasource.entities
|
|
198
228
|
|
|
199
229
|
const extraTablesToUpdate = []
|
|
200
230
|
|
|
@@ -206,8 +236,11 @@ exports.save = async function (ctx) {
|
|
|
206
236
|
const relatedTable = Object.values(tables).find(
|
|
207
237
|
table => table._id === schema.tableId
|
|
208
238
|
)
|
|
209
|
-
|
|
210
|
-
|
|
239
|
+
if (!relatedTable) {
|
|
240
|
+
continue
|
|
241
|
+
}
|
|
242
|
+
const relatedColumnName = schema.fieldName!
|
|
243
|
+
const relationType = schema.relationshipType!
|
|
211
244
|
if (relationType === RelationshipTypes.MANY_TO_MANY) {
|
|
212
245
|
const junctionTable = generateManyLinkSchema(
|
|
213
246
|
datasource,
|
|
@@ -247,9 +280,7 @@ exports.save = async function (ctx) {
|
|
|
247
280
|
|
|
248
281
|
cleanupRelationships(tableToSave, tables, oldTable)
|
|
249
282
|
|
|
250
|
-
const operation = oldTable
|
|
251
|
-
? DataSourceOperation.UPDATE_TABLE
|
|
252
|
-
: DataSourceOperation.CREATE_TABLE
|
|
283
|
+
const operation = oldTable ? Operation.UPDATE_TABLE : Operation.CREATE_TABLE
|
|
253
284
|
await makeTableRequest(
|
|
254
285
|
datasource,
|
|
255
286
|
operation,
|
|
@@ -261,9 +292,7 @@ exports.save = async function (ctx) {
|
|
|
261
292
|
// update any extra tables (like foreign keys in other tables)
|
|
262
293
|
for (let extraTable of extraTablesToUpdate) {
|
|
263
294
|
const oldExtraTable = oldTables[extraTable.name]
|
|
264
|
-
let op = oldExtraTable
|
|
265
|
-
? DataSourceOperation.UPDATE_TABLE
|
|
266
|
-
: DataSourceOperation.CREATE_TABLE
|
|
295
|
+
let op = oldExtraTable ? Operation.UPDATE_TABLE : Operation.CREATE_TABLE
|
|
267
296
|
await makeTableRequest(datasource, op, extraTable, tables, oldExtraTable)
|
|
268
297
|
}
|
|
269
298
|
|
|
@@ -283,18 +312,20 @@ exports.save = async function (ctx) {
|
|
|
283
312
|
return tableToSave
|
|
284
313
|
}
|
|
285
314
|
|
|
286
|
-
|
|
287
|
-
const tableToDelete = await sdk.tables.getTable(
|
|
315
|
+
export async function destroy(ctx: BBContext) {
|
|
316
|
+
const tableToDelete: TableRequest = await sdk.tables.getTable(
|
|
317
|
+
ctx.params.tableId
|
|
318
|
+
)
|
|
288
319
|
if (!tableToDelete || !tableToDelete.created) {
|
|
289
320
|
ctx.throw(400, "Cannot delete tables which weren't created in Budibase.")
|
|
290
321
|
}
|
|
291
322
|
const datasourceId = getDatasourceId(tableToDelete)
|
|
292
323
|
|
|
293
|
-
const db = getAppDB()
|
|
324
|
+
const db = context.getAppDB()
|
|
294
325
|
const datasource = await db.get(datasourceId)
|
|
295
326
|
const tables = datasource.entities
|
|
296
327
|
|
|
297
|
-
const operation =
|
|
328
|
+
const operation = Operation.DELETE_TABLE
|
|
298
329
|
await makeTableRequest(datasource, operation, tableToDelete, tables)
|
|
299
330
|
|
|
300
331
|
cleanupRelationships(tableToDelete, tables)
|
|
@@ -305,7 +336,7 @@ exports.destroy = async function (ctx) {
|
|
|
305
336
|
return tableToDelete
|
|
306
337
|
}
|
|
307
338
|
|
|
308
|
-
|
|
339
|
+
export async function bulkImport(ctx: BBContext) {
|
|
309
340
|
const table = await sdk.tables.getTable(ctx.params.tableId)
|
|
310
341
|
const { dataImport } = ctx.request.body
|
|
311
342
|
if (!dataImport || !dataImport.schema || !dataImport.csvString) {
|
|
@@ -315,7 +346,7 @@ exports.bulkImport = async function (ctx) {
|
|
|
315
346
|
...dataImport,
|
|
316
347
|
existingTable: table,
|
|
317
348
|
})
|
|
318
|
-
await handleRequest(
|
|
349
|
+
await handleRequest(Operation.BULK_CREATE, table._id!, {
|
|
319
350
|
rows,
|
|
320
351
|
})
|
|
321
352
|
await events.rows.imported(table, "csv", rows.length)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import * as internal from "./internal"
|
|
2
|
+
import * as external from "./external"
|
|
3
|
+
import * as csvParser from "../../../utilities/csvParser"
|
|
4
|
+
import { isExternalTable, isSQL } from "../../../integrations/utils"
|
|
5
|
+
import { getDatasourceParams } from "../../../db/utils"
|
|
6
|
+
import { context, events } from "@budibase/backend-core"
|
|
7
|
+
import { Table, BBContext } from "@budibase/types"
|
|
8
|
+
import sdk from "../../../sdk"
|
|
9
9
|
|
|
10
|
-
function pickApi({ tableId, table }) {
|
|
10
|
+
function pickApi({ tableId, table }: { tableId?: string; table?: Table }) {
|
|
11
11
|
if (table && !tableId) {
|
|
12
12
|
tableId = table._id
|
|
13
13
|
}
|
|
@@ -20,8 +20,8 @@ function pickApi({ tableId, table }) {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
// covers both internal and external
|
|
23
|
-
|
|
24
|
-
const db = getAppDB()
|
|
23
|
+
export async function fetch(ctx: BBContext) {
|
|
24
|
+
const db = context.getAppDB()
|
|
25
25
|
|
|
26
26
|
const internal = await sdk.tables.getAllInternalTables()
|
|
27
27
|
|
|
@@ -34,7 +34,7 @@ exports.fetch = async function (ctx) {
|
|
|
34
34
|
const external = externalTables.rows.flatMap(tableDoc => {
|
|
35
35
|
let entities = tableDoc.doc.entities
|
|
36
36
|
if (entities) {
|
|
37
|
-
return Object.values(entities).map(entity => ({
|
|
37
|
+
return Object.values(entities).map((entity: any) => ({
|
|
38
38
|
...entity,
|
|
39
39
|
type: "external",
|
|
40
40
|
sourceId: tableDoc.doc._id,
|
|
@@ -48,12 +48,12 @@ exports.fetch = async function (ctx) {
|
|
|
48
48
|
ctx.body = [...internal, ...external]
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
export async function find(ctx: BBContext) {
|
|
52
52
|
const tableId = ctx.params.tableId
|
|
53
53
|
ctx.body = await sdk.tables.getTable(tableId)
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
export async function save(ctx: BBContext) {
|
|
57
57
|
const appId = ctx.appId
|
|
58
58
|
const table = ctx.request.body
|
|
59
59
|
const importFormat =
|
|
@@ -74,7 +74,7 @@ exports.save = async function (ctx) {
|
|
|
74
74
|
ctx.body = savedTable
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
export async function destroy(ctx: BBContext) {
|
|
78
78
|
const appId = ctx.appId
|
|
79
79
|
const tableId = ctx.params.tableId
|
|
80
80
|
const deletedTable = await pickApi({ tableId }).destroy(ctx)
|
|
@@ -86,7 +86,7 @@ exports.destroy = async function (ctx) {
|
|
|
86
86
|
ctx.body = { message: `Table ${tableId} deleted.` }
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
export async function bulkImport(ctx: BBContext) {
|
|
90
90
|
const tableId = ctx.params.tableId
|
|
91
91
|
await pickApi({ tableId }).bulkImport(ctx)
|
|
92
92
|
// right now we don't trigger anything for bulk import because it
|
|
@@ -96,14 +96,17 @@ exports.bulkImport = async function (ctx) {
|
|
|
96
96
|
ctx.body = { message: `Bulk rows created.` }
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
export async function validateCSVSchema(ctx: BBContext) {
|
|
100
100
|
// tableId being specified means its an import to an existing table
|
|
101
101
|
const { csvString, schema = {}, tableId } = ctx.request.body
|
|
102
102
|
let existingTable
|
|
103
103
|
if (tableId) {
|
|
104
104
|
existingTable = await sdk.tables.getTable(tableId)
|
|
105
105
|
}
|
|
106
|
-
let result = await csvParser.parse(
|
|
106
|
+
let result: Record<string, any> | undefined = await csvParser.parse(
|
|
107
|
+
csvString,
|
|
108
|
+
schema
|
|
109
|
+
)
|
|
107
110
|
if (existingTable) {
|
|
108
111
|
result = csvParser.updateSchema({ schema: result, existingTable })
|
|
109
112
|
}
|
|
@@ -2,7 +2,7 @@ import { updateLinks, EventType } from "../../../db/linkedRows"
|
|
|
2
2
|
import { getRowParams, generateTableID } from "../../../db/utils"
|
|
3
3
|
import { FieldTypes } from "../../../constants"
|
|
4
4
|
import { TableSaveFunctions, hasTypeChanged, handleDataImport } from "./utils"
|
|
5
|
-
|
|
5
|
+
import { context } from "@budibase/backend-core"
|
|
6
6
|
import { isTest } from "../../../environment"
|
|
7
7
|
import {
|
|
8
8
|
cleanupAttachments,
|
|
@@ -35,7 +35,7 @@ function checkAutoColumns(table: Table, oldTable: Table) {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export async function save(ctx: any) {
|
|
38
|
-
const db = getAppDB()
|
|
38
|
+
const db = context.getAppDB()
|
|
39
39
|
const { dataImport, ...rest } = ctx.request.body
|
|
40
40
|
let tableToSave = {
|
|
41
41
|
type: "table",
|
|
@@ -133,12 +133,12 @@ export async function save(ctx: any) {
|
|
|
133
133
|
tableToSave._rev = result.rev
|
|
134
134
|
}
|
|
135
135
|
// has to run after, make sure it has _id
|
|
136
|
-
await runStaticFormulaChecks(tableToSave, { oldTable, deletion:
|
|
136
|
+
await runStaticFormulaChecks(tableToSave, { oldTable, deletion: false })
|
|
137
137
|
return tableToSave
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
export async function destroy(ctx: any) {
|
|
141
|
-
const db = getAppDB()
|
|
141
|
+
const db = context.getAppDB()
|
|
142
142
|
const tableToDelete = await db.get(ctx.params.tableId)
|
|
143
143
|
|
|
144
144
|
// Delete all rows for that table
|
|
@@ -161,7 +161,7 @@ export async function destroy(ctx: any) {
|
|
|
161
161
|
})
|
|
162
162
|
|
|
163
163
|
// don't remove the table itself until very end
|
|
164
|
-
await db.remove(tableToDelete)
|
|
164
|
+
await db.remove(tableToDelete._id, tableToDelete._rev)
|
|
165
165
|
|
|
166
166
|
// remove table search index
|
|
167
167
|
if (!isTest() || env.COUCH_DB_URL) {
|
|
@@ -176,7 +176,6 @@ export async function destroy(ctx: any) {
|
|
|
176
176
|
|
|
177
177
|
// has to run after, make sure it has _id
|
|
178
178
|
await runStaticFormulaChecks(tableToDelete, {
|
|
179
|
-
oldTable: null,
|
|
180
179
|
deletion: true,
|
|
181
180
|
})
|
|
182
181
|
await cleanupAttachments(tableToDelete, {
|