@budibase/server 2.1.44 → 2.1.46-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.538092be.css +6 -0
- package/builder/assets/index.f3d43c3f.js +1020 -0
- package/builder/index.html +2 -2
- package/coverage/clover.xml +11101 -3980
- package/coverage/coverage-final.json +273 -118
- package/coverage/lcov-report/index.html +727 -187
- 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 +1891 -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} +61 -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 +748 -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/src/api/controllers/plugin/file.ts.html +130 -0
- 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 +325 -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} +26 -26
- package/coverage/lcov-report/{api/controllers/role.js.html → src/api/controllers/role.ts.html} +51 -63
- 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 +2269 -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} +78 -255
- 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} +63 -84
- 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/src/api/routes/application.ts.html +223 -0
- 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/src/api/routes/layout.ts.html +133 -0
- package/coverage/lcov-report/{api/routes/metadata.js.html → src/api/routes/metadata.ts.html} +31 -31
- package/coverage/lcov-report/{api/routes/migrations.js.html → src/api/routes/migrations.ts.html} +24 -24
- package/coverage/lcov-report/{api/routes/permission.js.html → src/api/routes/permission.ts.html} +55 -31
- 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/tests/index.html +116 -0
- package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +169 -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/src/api/routes/templates.ts.html +133 -0
- 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/{automations/triggerInfo/index.js.html → src/automations/triggerInfo/index.ts.html} +24 -24
- 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/{constants/screens.js.html → src/constants/screens.ts.html} +64 -58
- 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/templates.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/src/events/index.ts.html +100 -0
- package/coverage/lcov-report/src/events/utils.ts.html +319 -0
- package/coverage/lcov-report/src/index.html +191 -0
- package/coverage/lcov-report/{db/index.js.html → src/index.ts.html} +35 -35
- 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 +1012 -0
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +1867 -0
- package/coverage/lcov-report/src/integrations/mysql.ts.html +967 -0
- package/coverage/lcov-report/src/integrations/oracle.ts.html +1387 -0
- package/coverage/lcov-report/src/integrations/postgres.ts.html +1087 -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} +57 -51
- package/coverage/lcov-report/{middleware/currentapp.js.html → src/middleware/currentapp.ts.html} +116 -107
- 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} +31 -31
- package/coverage/lcov-report/{middleware/resourceId.js.html → src/middleware/resourceId.ts.html} +66 -51
- 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 +166 -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/src/migrations/functions/backfill/app/layouts.ts.html +172 -0
- 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/{api/routes/role.js.html → src/migrations/functions/syncQuotas.ts.html} +36 -36
- 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/{automations/index.js.html → src/migrations/functions/usageQuotas/syncRows.ts.html} +58 -61
- 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/applications/index.html +146 -0
- package/coverage/lcov-report/{middleware/utils.js.html → src/sdk/app/applications/index.ts.html} +19 -19
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +268 -0
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +136 -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/layout.js.html → src/sdk/index.ts.html} +24 -24
- package/coverage/lcov-report/src/sdk/users/index.html +131 -0
- package/coverage/lcov-report/src/sdk/users/index.ts.html +100 -0
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +277 -0
- 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} +144 -111
- 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 +30 -30
- package/coverage/lcov-report/{utilities/usageQuota/rows.js.html → src/utilities/usageQuota/rows.ts.html} +42 -54
- 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} +44 -50
- 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} +68 -71
- package/coverage/lcov-report/src/websocket.ts.html +163 -0
- package/coverage/lcov.info +19994 -7196
- package/dist/api/controllers/apikeys.js +12 -9
- package/dist/api/controllers/application.js +430 -446
- package/dist/api/controllers/automation.js +122 -82
- package/dist/api/controllers/cloud.js +85 -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 +19 -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/users.js +18 -0
- 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 +539 -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 +65 -94
- 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/public/tests/utils.js +33 -0
- 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/base/types.js +2 -0
- package/dist/integrations/elasticsearch.js +26 -2
- package/dist/integrations/googlesheets.js +5 -6
- package/dist/integrations/index.js +15 -6
- package/dist/integrations/microsoftSqlServer.js +8 -3
- package/dist/integrations/oracle.js +8 -1
- package/dist/integrations/postgres.js +6 -3
- 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 +7 -11
- 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/applications/index.js +28 -0
- package/dist/sdk/app/applications/sync.js +70 -0
- package/dist/sdk/app/applications/utils.js +21 -0
- 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/sdk/index.js +4 -2
- package/dist/sdk/users/index.js +27 -0
- package/dist/sdk/users/utils.js +65 -0
- 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/integrations/mssql/data/setup.sql +3 -3
- package/scripts/integrations/postgres/emp-skill.sql +46 -0
- package/scripts/localdomain.js +34 -6
- package/src/api/controllers/{apikeys.js → apikeys.ts} +10 -10
- package/src/api/controllers/application.ts +100 -135
- 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} +25 -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 +19 -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/users.ts +25 -6
- 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 +605 -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} +42 -101
- 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 +3 -21
- package/src/api/routes/public/tests/users.spec.js +38 -0
- package/src/api/routes/public/tests/utils.ts +28 -0
- 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/application.spec.js +0 -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/base/types.ts +134 -0
- package/src/integrations/elasticsearch.ts +32 -2
- package/src/integrations/googlesheets.ts +5 -7
- package/src/integrations/index.ts +45 -41
- package/src/integrations/microsoftSqlServer.ts +14 -12
- package/src/integrations/mysql.ts +4 -3
- package/src/integrations/oracle.ts +17 -46
- package/src/integrations/postgres.ts +8 -2
- 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 +4 -11
- 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/applications/index.ts +7 -0
- package/src/sdk/app/applications/sync.ts +61 -0
- package/src/sdk/app/applications/utils.ts +17 -0
- 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/sdk/index.ts +4 -3
- package/src/sdk/users/index.ts +5 -0
- package/src/sdk/users/utils.ts +64 -0
- 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.2d05742a.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/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
|
@@ -1,26 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { budibaseTempDir } from "../budibaseDir"
|
|
2
|
+
import fs from "fs"
|
|
3
|
+
import { join } from "path"
|
|
4
|
+
import { context, objectStore } from "@budibase/backend-core"
|
|
5
|
+
import { ObjectStoreBuckets } from "../../constants"
|
|
6
|
+
import { updateClientLibrary } from "./clientLibrary"
|
|
7
|
+
import { checkSlashesInUrl } from "../"
|
|
8
|
+
import env from "../../environment"
|
|
9
|
+
import fetch from "node-fetch"
|
|
4
10
|
const uuid = require("uuid/v4")
|
|
5
|
-
const { ObjectStoreBuckets } = require("../../constants")
|
|
6
|
-
const {
|
|
7
|
-
upload,
|
|
8
|
-
retrieve,
|
|
9
|
-
retrieveToTmp,
|
|
10
|
-
deleteFolder,
|
|
11
|
-
downloadTarball,
|
|
12
|
-
downloadTarballDirect,
|
|
13
|
-
deleteFiles,
|
|
14
|
-
} = require("./utilities")
|
|
15
|
-
const { updateClientLibrary } = require("./clientLibrary")
|
|
16
|
-
const { checkSlashesInUrl } = require("../")
|
|
17
|
-
const env = require("../../environment")
|
|
18
|
-
const { getAppId } = require("@budibase/backend-core/context")
|
|
19
11
|
const tar = require("tar")
|
|
20
|
-
const fetch = require("node-fetch")
|
|
21
12
|
|
|
22
|
-
const TOP_LEVEL_PATH = join(__dirname, "..", "..", "..")
|
|
23
|
-
const NODE_MODULES_PATH = join(TOP_LEVEL_PATH, "node_modules")
|
|
13
|
+
export const TOP_LEVEL_PATH = join(__dirname, "..", "..", "..")
|
|
14
|
+
export const NODE_MODULES_PATH = join(TOP_LEVEL_PATH, "node_modules")
|
|
24
15
|
const DATASOURCE_PATH = join(budibaseTempDir(), "datasource")
|
|
25
16
|
|
|
26
17
|
/**
|
|
@@ -34,14 +25,14 @@ const DATASOURCE_PATH = join(budibaseTempDir(), "datasource")
|
|
|
34
25
|
/**
|
|
35
26
|
* Upon first startup of instance there may not be everything we need in tmp directory, set it up.
|
|
36
27
|
*/
|
|
37
|
-
|
|
28
|
+
export function init() {
|
|
38
29
|
const tempDir = budibaseTempDir()
|
|
39
30
|
if (!fs.existsSync(tempDir)) {
|
|
40
31
|
// some test cases fire this quickly enough that
|
|
41
32
|
// synchronous cases can end up here at the same time
|
|
42
33
|
try {
|
|
43
34
|
fs.mkdirSync(tempDir)
|
|
44
|
-
} catch (err) {
|
|
35
|
+
} catch (err: any) {
|
|
45
36
|
if (!err || err.code !== "EEXIST") {
|
|
46
37
|
throw err
|
|
47
38
|
}
|
|
@@ -81,7 +72,7 @@ exports.checkDevelopmentEnvironment = () => {
|
|
|
81
72
|
* @param {string} path The path to the handlebars file which is to be loaded.
|
|
82
73
|
* @returns {string} The loaded handlebars file as a string - loaded as utf8.
|
|
83
74
|
*/
|
|
84
|
-
|
|
75
|
+
export function loadHandlebarsFile(path: string) {
|
|
85
76
|
return fs.readFileSync(path, "utf8")
|
|
86
77
|
}
|
|
87
78
|
|
|
@@ -89,15 +80,19 @@ exports.loadHandlebarsFile = path => {
|
|
|
89
80
|
* When return a file from the API need to write the file to the system temporarily so we
|
|
90
81
|
* can create a read stream to send.
|
|
91
82
|
* @param {string} contents the contents of the file which is to be returned from the API.
|
|
83
|
+
* @param {string} encoding the encoding of the file to return (utf8 default)
|
|
92
84
|
* @return {Object} the read stream which can be put into the koa context body.
|
|
93
85
|
*/
|
|
94
|
-
|
|
86
|
+
export function apiFileReturn(
|
|
87
|
+
contents: string,
|
|
88
|
+
encoding: BufferEncoding = "utf8"
|
|
89
|
+
) {
|
|
95
90
|
const path = join(budibaseTempDir(), uuid())
|
|
96
|
-
fs.writeFileSync(path, contents)
|
|
97
|
-
return fs.createReadStream(path)
|
|
91
|
+
fs.writeFileSync(path, contents, { encoding })
|
|
92
|
+
return fs.createReadStream(path, { encoding })
|
|
98
93
|
}
|
|
99
94
|
|
|
100
|
-
|
|
95
|
+
export function streamFile(path: string) {
|
|
101
96
|
return fs.createReadStream(path)
|
|
102
97
|
}
|
|
103
98
|
|
|
@@ -106,7 +101,7 @@ exports.streamFile = path => {
|
|
|
106
101
|
* @param {string} fileContents contents which will be written to a temp file.
|
|
107
102
|
* @return {string} the path to the temp file.
|
|
108
103
|
*/
|
|
109
|
-
|
|
104
|
+
export function storeTempFile(fileContents: string) {
|
|
110
105
|
const path = join(budibaseTempDir(), uuid())
|
|
111
106
|
fs.writeFileSync(path, fileContents)
|
|
112
107
|
return path
|
|
@@ -116,7 +111,7 @@ exports.storeTempFile = fileContents => {
|
|
|
116
111
|
* Utility function for getting a file read stream - a simple in memory buffered read
|
|
117
112
|
* stream doesn't work for pouchdb.
|
|
118
113
|
*/
|
|
119
|
-
|
|
114
|
+
export function stringToFileStream(contents: string) {
|
|
120
115
|
const path = exports.storeTempFile(contents)
|
|
121
116
|
return fs.createReadStream(path)
|
|
122
117
|
}
|
|
@@ -125,7 +120,7 @@ exports.stringToFileStream = contents => {
|
|
|
125
120
|
* Creates a temp file and returns it from the API.
|
|
126
121
|
* @param {string} fileContents the contents to be returned in file.
|
|
127
122
|
*/
|
|
128
|
-
|
|
123
|
+
export function sendTempFile(fileContents: string) {
|
|
129
124
|
const path = exports.storeTempFile(fileContents)
|
|
130
125
|
return fs.createReadStream(path)
|
|
131
126
|
}
|
|
@@ -135,7 +130,7 @@ exports.sendTempFile = fileContents => {
|
|
|
135
130
|
* @param {string} appId The ID of the app which is being created.
|
|
136
131
|
* @return {Promise<void>} once promise completes app resources should be ready in object store.
|
|
137
132
|
*/
|
|
138
|
-
|
|
133
|
+
export async function createApp(appId: string) {
|
|
139
134
|
await updateClientLibrary(appId)
|
|
140
135
|
}
|
|
141
136
|
|
|
@@ -144,8 +139,8 @@ exports.createApp = async appId => {
|
|
|
144
139
|
* @param {string} appId The ID of the app which is being deleted.
|
|
145
140
|
* @return {Promise<void>} once promise completes the app resources will be removed from object store.
|
|
146
141
|
*/
|
|
147
|
-
|
|
148
|
-
await deleteFolder(ObjectStoreBuckets.APPS, `${appId}/`)
|
|
142
|
+
export async function deleteApp(appId: string) {
|
|
143
|
+
await objectStore.deleteFolder(ObjectStoreBuckets.APPS, `${appId}/`)
|
|
149
144
|
}
|
|
150
145
|
|
|
151
146
|
/**
|
|
@@ -154,18 +149,22 @@ exports.deleteApp = async appId => {
|
|
|
154
149
|
* @param name
|
|
155
150
|
* @return {Promise<*>}
|
|
156
151
|
*/
|
|
157
|
-
|
|
152
|
+
export async function downloadTemplate(type: string, name: string) {
|
|
158
153
|
const DEFAULT_TEMPLATES_BUCKET =
|
|
159
154
|
"prod-budi-templates.s3-eu-west-1.amazonaws.com"
|
|
160
155
|
const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name}.tar.gz`
|
|
161
|
-
return downloadTarball(
|
|
156
|
+
return objectStore.downloadTarball(
|
|
157
|
+
templateUrl,
|
|
158
|
+
ObjectStoreBuckets.TEMPLATES,
|
|
159
|
+
type
|
|
160
|
+
)
|
|
162
161
|
}
|
|
163
162
|
|
|
164
163
|
/**
|
|
165
164
|
* Retrieves component libraries from object store (or tmp symlink if in local)
|
|
166
165
|
*/
|
|
167
|
-
|
|
168
|
-
const appId = getAppId()
|
|
166
|
+
export async function getComponentLibraryManifest(library: string) {
|
|
167
|
+
const appId = context.getAppId()
|
|
169
168
|
const filename = "manifest.json"
|
|
170
169
|
/* istanbul ignore next */
|
|
171
170
|
// when testing in cypress and so on we need to get the package
|
|
@@ -182,12 +181,16 @@ exports.getComponentLibraryManifest = async library => {
|
|
|
182
181
|
return require(path)
|
|
183
182
|
}
|
|
184
183
|
|
|
184
|
+
if (!appId) {
|
|
185
|
+
throw new Error("No app ID found - cannot get component libraries")
|
|
186
|
+
}
|
|
187
|
+
|
|
185
188
|
let resp
|
|
186
189
|
let path
|
|
187
190
|
try {
|
|
188
191
|
// Try to load the manifest from the new file location
|
|
189
192
|
path = join(appId, filename)
|
|
190
|
-
resp = await retrieve(ObjectStoreBuckets.APPS, path)
|
|
193
|
+
resp = await objectStore.retrieve(ObjectStoreBuckets.APPS, path)
|
|
191
194
|
} catch (error) {
|
|
192
195
|
console.error(
|
|
193
196
|
`component-manifest-objectstore=failed appId=${appId} path=${path}`,
|
|
@@ -195,7 +198,7 @@ exports.getComponentLibraryManifest = async library => {
|
|
|
195
198
|
)
|
|
196
199
|
// Fallback to loading it from the old location for old apps
|
|
197
200
|
path = join(appId, "node_modules", library, "package", filename)
|
|
198
|
-
resp = await retrieve(ObjectStoreBuckets.APPS, path)
|
|
201
|
+
resp = await objectStore.retrieve(ObjectStoreBuckets.APPS, path)
|
|
199
202
|
}
|
|
200
203
|
if (typeof resp !== "string") {
|
|
201
204
|
resp = resp.toString("utf8")
|
|
@@ -207,14 +210,17 @@ exports.getComponentLibraryManifest = async library => {
|
|
|
207
210
|
* All file reads come through here just to make sure all of them make sense
|
|
208
211
|
* allows a centralised location to check logic is all good.
|
|
209
212
|
*/
|
|
210
|
-
|
|
211
|
-
|
|
213
|
+
export function readFileSync(
|
|
214
|
+
filepath: string,
|
|
215
|
+
options: BufferEncoding = "utf8"
|
|
216
|
+
) {
|
|
217
|
+
return fs.readFileSync(filepath, { encoding: options })
|
|
212
218
|
}
|
|
213
219
|
|
|
214
220
|
/**
|
|
215
221
|
* Given a set of app IDs makes sure file system is cleared of any of their temp info.
|
|
216
222
|
*/
|
|
217
|
-
|
|
223
|
+
export function cleanup(appIds: string[]) {
|
|
218
224
|
for (let appId of appIds) {
|
|
219
225
|
const path = join(budibaseTempDir(), appId)
|
|
220
226
|
if (fs.existsSync(path)) {
|
|
@@ -223,7 +229,7 @@ exports.cleanup = appIds => {
|
|
|
223
229
|
}
|
|
224
230
|
}
|
|
225
231
|
|
|
226
|
-
|
|
232
|
+
export function createTempFolder(item: string) {
|
|
227
233
|
const path = join(budibaseTempDir(), item)
|
|
228
234
|
try {
|
|
229
235
|
// remove old tmp directories automatically - don't combine
|
|
@@ -231,24 +237,22 @@ const createTempFolder = item => {
|
|
|
231
237
|
fs.rmSync(path, { recursive: true, force: true })
|
|
232
238
|
}
|
|
233
239
|
fs.mkdirSync(path)
|
|
234
|
-
} catch (err) {
|
|
240
|
+
} catch (err: any) {
|
|
235
241
|
throw new Error(`Path cannot be created: ${err.message}`)
|
|
236
242
|
}
|
|
237
243
|
|
|
238
244
|
return path
|
|
239
245
|
}
|
|
240
|
-
exports.createTempFolder = createTempFolder
|
|
241
246
|
|
|
242
|
-
|
|
247
|
+
export async function extractTarball(fromFilePath: string, toPath: string) {
|
|
243
248
|
await tar.extract({
|
|
244
249
|
file: fromFilePath,
|
|
245
250
|
C: toPath,
|
|
246
251
|
})
|
|
247
252
|
}
|
|
248
|
-
exports.extractTarball = extractTarball
|
|
249
253
|
|
|
250
|
-
|
|
251
|
-
let metadata = {}
|
|
254
|
+
export async function getPluginMetadata(path: string) {
|
|
255
|
+
let metadata: { schema?: any; package?: any } = {}
|
|
252
256
|
try {
|
|
253
257
|
const pkg = fs.readFileSync(join(path, "package.json"), "utf8")
|
|
254
258
|
const schema = fs.readFileSync(join(path, "schema.json"), "utf8")
|
|
@@ -265,7 +269,7 @@ const getPluginMetadata = async path => {
|
|
|
265
269
|
"package.json is missing one of 'name', 'version' or 'description'."
|
|
266
270
|
)
|
|
267
271
|
}
|
|
268
|
-
} catch (err) {
|
|
272
|
+
} catch (err: any) {
|
|
269
273
|
throw new Error(
|
|
270
274
|
`Unable to process schema.json/package.json in plugin. ${err.message}`
|
|
271
275
|
)
|
|
@@ -273,9 +277,12 @@ const getPluginMetadata = async path => {
|
|
|
273
277
|
|
|
274
278
|
return { metadata, directory: path }
|
|
275
279
|
}
|
|
276
|
-
exports.getPluginMetadata = getPluginMetadata
|
|
277
280
|
|
|
278
|
-
|
|
281
|
+
export async function getDatasourcePlugin(
|
|
282
|
+
name: string,
|
|
283
|
+
url: string,
|
|
284
|
+
hash: string
|
|
285
|
+
) {
|
|
279
286
|
if (!fs.existsSync(DATASOURCE_PATH)) {
|
|
280
287
|
fs.mkdirSync(DATASOURCE_PATH)
|
|
281
288
|
}
|
|
@@ -311,7 +318,7 @@ exports.getDatasourcePlugin = async (name, url, hash) => {
|
|
|
311
318
|
/**
|
|
312
319
|
* Find for a file recursively from start path applying filter, return first match
|
|
313
320
|
*/
|
|
314
|
-
|
|
321
|
+
export function findFileRec(startPath: string, filter: any) {
|
|
315
322
|
if (!fs.existsSync(startPath)) {
|
|
316
323
|
return
|
|
317
324
|
}
|
|
@@ -332,21 +339,10 @@ exports.findFileRec = (startPath, filter) => {
|
|
|
332
339
|
/**
|
|
333
340
|
* Remove a folder which is not empty from the file system
|
|
334
341
|
*/
|
|
335
|
-
|
|
342
|
+
export function deleteFolderFileSystem(path: string) {
|
|
336
343
|
if (!fs.existsSync(path)) {
|
|
337
344
|
return
|
|
338
345
|
}
|
|
339
346
|
|
|
340
347
|
fs.rmSync(path, { recursive: true, force: true })
|
|
341
348
|
}
|
|
342
|
-
|
|
343
|
-
/**
|
|
344
|
-
* Full function definition for below can be found in the utilities.
|
|
345
|
-
*/
|
|
346
|
-
exports.upload = upload
|
|
347
|
-
exports.retrieve = retrieve
|
|
348
|
-
exports.retrieveToTmp = retrieveToTmp
|
|
349
|
-
exports.deleteFiles = deleteFiles
|
|
350
|
-
exports.downloadTarballDirect = downloadTarballDirect
|
|
351
|
-
exports.TOP_LEVEL_PATH = TOP_LEVEL_PATH
|
|
352
|
-
exports.NODE_MODULES_PATH = NODE_MODULES_PATH
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import jimp from "jimp"
|
|
2
2
|
|
|
3
3
|
const FORMATS = {
|
|
4
4
|
IMAGES: ["png", "jpg", "jpeg", "gif", "bmp", "tiff"],
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
function processImage(file) {
|
|
7
|
+
function processImage(file: { path: string }) {
|
|
8
8
|
// this will overwrite the temp file
|
|
9
9
|
return jimp.read(file.path).then(img => {
|
|
10
10
|
return img.resize(300, jimp.AUTO).write(file.path)
|
|
11
11
|
})
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
async function process(file) {
|
|
14
|
+
export async function process(file: { extension: string; path: string }) {
|
|
15
15
|
if (FORMATS.IMAGES.includes(file.extension.toLowerCase())) {
|
|
16
16
|
await processImage(file)
|
|
17
17
|
}
|
|
18
18
|
return file
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
exports.process = process
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { getMultiIDParams, getGlobalIDFromUserMetadataID } from "../db/utils"
|
|
2
|
+
import {
|
|
3
|
+
roles,
|
|
4
|
+
db as dbCore,
|
|
5
|
+
cache,
|
|
6
|
+
tenancy,
|
|
7
|
+
context,
|
|
8
|
+
} from "@budibase/backend-core"
|
|
9
|
+
import env from "../environment"
|
|
10
|
+
import { groups } from "@budibase/pro"
|
|
11
|
+
import { BBContext, ContextUser, User } from "@budibase/types"
|
|
12
|
+
|
|
13
|
+
export function updateAppRole(
|
|
14
|
+
user: ContextUser,
|
|
15
|
+
{ appId }: { appId?: string } = {}
|
|
16
|
+
) {
|
|
17
|
+
appId = appId || context.getAppId()
|
|
18
|
+
|
|
19
|
+
if (!user || !user.roles) {
|
|
20
|
+
return user
|
|
21
|
+
}
|
|
22
|
+
// if in an multi-tenancy environment make sure roles are never updated
|
|
23
|
+
if (env.MULTI_TENANCY && appId && !tenancy.isUserInAppTenant(appId, user)) {
|
|
24
|
+
delete user.builder
|
|
25
|
+
delete user.admin
|
|
26
|
+
user.roleId = roles.BUILTIN_ROLE_IDS.PUBLIC
|
|
27
|
+
return user
|
|
28
|
+
}
|
|
29
|
+
// always use the deployed app
|
|
30
|
+
if (appId) {
|
|
31
|
+
user.roleId = user.roles[dbCore.getProdAppID(appId)]
|
|
32
|
+
}
|
|
33
|
+
// if a role wasn't found then either set as admin (builder) or public (everyone else)
|
|
34
|
+
if (!user.roleId && user.builder && user.builder.global) {
|
|
35
|
+
user.roleId = roles.BUILTIN_ROLE_IDS.ADMIN
|
|
36
|
+
} else if (!user.roleId && !user?.userGroups?.length) {
|
|
37
|
+
user.roleId = roles.BUILTIN_ROLE_IDS.PUBLIC
|
|
38
|
+
} else if (user?.userGroups?.length) {
|
|
39
|
+
user.roleId = undefined
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
delete user.roles
|
|
43
|
+
return user
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function checkGroupRoles(
|
|
47
|
+
user: ContextUser,
|
|
48
|
+
{ appId }: { appId?: string } = {}
|
|
49
|
+
) {
|
|
50
|
+
if (user.roleId && user.roleId !== roles.BUILTIN_ROLE_IDS.PUBLIC) {
|
|
51
|
+
return user
|
|
52
|
+
}
|
|
53
|
+
if (appId) {
|
|
54
|
+
user.roleId = await groups.getGroupRoleId(user as User, appId)
|
|
55
|
+
}
|
|
56
|
+
return user
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function processUser(
|
|
60
|
+
user: ContextUser,
|
|
61
|
+
{ appId }: { appId?: string } = {}
|
|
62
|
+
) {
|
|
63
|
+
if (user) {
|
|
64
|
+
delete user.password
|
|
65
|
+
}
|
|
66
|
+
user = await updateAppRole(user, { appId })
|
|
67
|
+
if (!user.roleId && user?.userGroups?.length) {
|
|
68
|
+
user = await checkGroupRoles(user, { appId })
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return user
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export async function getCachedSelf(ctx: BBContext, appId: string) {
|
|
75
|
+
// this has to be tenant aware, can't depend on the context to find it out
|
|
76
|
+
// running some middlewares before the tenancy causes context to break
|
|
77
|
+
const user = await cache.user.getUser(ctx.user?._id!)
|
|
78
|
+
return processUser(user, { appId })
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export async function getRawGlobalUser(userId: string) {
|
|
82
|
+
const db = tenancy.getGlobalDB()
|
|
83
|
+
return db.get(getGlobalIDFromUserMetadataID(userId))
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export async function getGlobalUser(userId: string) {
|
|
87
|
+
const appId = context.getAppId()
|
|
88
|
+
let user = await getRawGlobalUser(userId)
|
|
89
|
+
return processUser(user, { appId })
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export async function getGlobalUsers(users?: ContextUser[]) {
|
|
93
|
+
const appId = context.getAppId()
|
|
94
|
+
const db = tenancy.getGlobalDB()
|
|
95
|
+
let globalUsers
|
|
96
|
+
if (users) {
|
|
97
|
+
const globalIds = users.map(user =>
|
|
98
|
+
getGlobalIDFromUserMetadataID(user._id!)
|
|
99
|
+
)
|
|
100
|
+
globalUsers = (await db.allDocs(getMultiIDParams(globalIds))).rows.map(
|
|
101
|
+
row => row.doc
|
|
102
|
+
)
|
|
103
|
+
} else {
|
|
104
|
+
globalUsers = (
|
|
105
|
+
await db.allDocs(
|
|
106
|
+
dbCore.getGlobalUserParams(null, {
|
|
107
|
+
include_docs: true,
|
|
108
|
+
})
|
|
109
|
+
)
|
|
110
|
+
).rows.map(row => row.doc)
|
|
111
|
+
}
|
|
112
|
+
globalUsers = globalUsers
|
|
113
|
+
.filter(user => user != null)
|
|
114
|
+
.map(user => {
|
|
115
|
+
delete user.password
|
|
116
|
+
delete user.forceResetPassword
|
|
117
|
+
return user
|
|
118
|
+
})
|
|
119
|
+
if (!appId) {
|
|
120
|
+
return globalUsers
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return globalUsers.map(user => updateAppRole(user))
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export async function getGlobalUsersFromMetadata(users: ContextUser[]) {
|
|
127
|
+
const globalUsers = await getGlobalUsers(users)
|
|
128
|
+
return users.map(user => {
|
|
129
|
+
const globalUser = globalUsers.find(
|
|
130
|
+
globalUser => globalUser && user._id?.includes(globalUser._id)
|
|
131
|
+
)
|
|
132
|
+
return {
|
|
133
|
+
...globalUser,
|
|
134
|
+
// doing user second overwrites the id and rev (always metadata)
|
|
135
|
+
...user,
|
|
136
|
+
}
|
|
137
|
+
})
|
|
138
|
+
}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import env from "../environment"
|
|
2
|
+
import { OBJ_STORE_DIRECTORY } from "../constants"
|
|
3
|
+
import { objectStore, context } from "@budibase/backend-core"
|
|
4
|
+
import { generateMetadataID } from "../db/utils"
|
|
5
|
+
import { Document } from "@budibase/types"
|
|
6
|
+
import stream from "stream"
|
|
7
|
+
const Readable = stream.Readable
|
|
8
|
+
|
|
9
|
+
export function wait(ms: number) {
|
|
10
|
+
return new Promise(resolve => setTimeout(resolve, ms))
|
|
11
|
+
}
|
|
9
12
|
|
|
10
|
-
|
|
13
|
+
export const isDev = env.isDev
|
|
11
14
|
|
|
12
|
-
|
|
15
|
+
export const NUMBER_REGEX = /^[+-]?([0-9]*[.])?[0-9]+$/g
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
export function removeFromArray(array: any[], element: any) {
|
|
15
18
|
const index = array.indexOf(element)
|
|
16
19
|
if (index !== -1) {
|
|
17
20
|
array.splice(index, 1)
|
|
@@ -25,7 +28,7 @@ exports.removeFromArray = (array, element) => {
|
|
|
25
28
|
* @param {string} url The URL to test and remove any extra double slashes.
|
|
26
29
|
* @return {string} The updated url.
|
|
27
30
|
*/
|
|
28
|
-
|
|
31
|
+
export function checkSlashesInUrl(url: string) {
|
|
29
32
|
return url.replace(/(https?:\/\/)|(\/)+/g, "$1$2")
|
|
30
33
|
}
|
|
31
34
|
|
|
@@ -33,7 +36,7 @@ exports.checkSlashesInUrl = url => {
|
|
|
33
36
|
* Gets the address of the object store, depending on whether self hosted or in cloud.
|
|
34
37
|
* @return {string} The base URL of the object store (MinIO or S3).
|
|
35
38
|
*/
|
|
36
|
-
|
|
39
|
+
export function objectStoreUrl() {
|
|
37
40
|
if (env.SELF_HOSTED || env.MINIO_URL) {
|
|
38
41
|
// can use a relative url for this as all goes through the proxy (this is hosted in minio)
|
|
39
42
|
return OBJ_STORE_DIRECTORY
|
|
@@ -52,9 +55,9 @@ exports.objectStoreUrl = () => {
|
|
|
52
55
|
* @return {string} The URL to be inserted into appPackage response or server rendered
|
|
53
56
|
* app index file.
|
|
54
57
|
*/
|
|
55
|
-
|
|
58
|
+
export function clientLibraryPath(appId: string, version: string) {
|
|
56
59
|
if (env.isProd()) {
|
|
57
|
-
let url = `${
|
|
60
|
+
let url = `${objectStoreUrl()}/${objectStore.sanitizeKey(
|
|
58
61
|
appId
|
|
59
62
|
)}/budibase-client.js`
|
|
60
63
|
|
|
@@ -68,18 +71,19 @@ exports.clientLibraryPath = (appId, version) => {
|
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
73
|
|
|
71
|
-
|
|
72
|
-
return
|
|
73
|
-
`${exports.objectStoreUrl()}/${attachmentKey}`
|
|
74
|
-
)
|
|
74
|
+
export function attachmentsRelativeURL(attachmentKey: string) {
|
|
75
|
+
return checkSlashesInUrl(`${objectStoreUrl()}/${attachmentKey}`)
|
|
75
76
|
}
|
|
76
77
|
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
export async function updateEntityMetadata(
|
|
79
|
+
type: string,
|
|
80
|
+
entityId: string,
|
|
81
|
+
updateFn: any
|
|
82
|
+
) {
|
|
83
|
+
const db = context.getAppDB()
|
|
79
84
|
const id = generateMetadataID(type, entityId)
|
|
80
85
|
// read it to see if it exists, we'll overwrite it no matter what
|
|
81
|
-
let rev,
|
|
82
|
-
metadata = {}
|
|
86
|
+
let rev, metadata: Document
|
|
83
87
|
try {
|
|
84
88
|
const oldMetadata = await db.get(id)
|
|
85
89
|
rev = oldMetadata._rev
|
|
@@ -100,14 +104,18 @@ exports.updateEntityMetadata = async (type, entityId, updateFn) => {
|
|
|
100
104
|
}
|
|
101
105
|
}
|
|
102
106
|
|
|
103
|
-
|
|
104
|
-
|
|
107
|
+
export async function saveEntityMetadata(
|
|
108
|
+
type: string,
|
|
109
|
+
entityId: string,
|
|
110
|
+
metadata: Document
|
|
111
|
+
) {
|
|
112
|
+
return updateEntityMetadata(type, entityId, () => {
|
|
105
113
|
return metadata
|
|
106
114
|
})
|
|
107
115
|
}
|
|
108
116
|
|
|
109
|
-
|
|
110
|
-
const db = getAppDB()
|
|
117
|
+
export async function deleteEntityMetadata(type: string, entityId: string) {
|
|
118
|
+
const db = context.getAppDB()
|
|
111
119
|
const id = generateMetadataID(type, entityId)
|
|
112
120
|
let rev
|
|
113
121
|
try {
|
|
@@ -123,7 +131,7 @@ exports.deleteEntityMetadata = async (type, entityId) => {
|
|
|
123
131
|
}
|
|
124
132
|
}
|
|
125
133
|
|
|
126
|
-
|
|
134
|
+
export function escapeDangerousCharacters(string: string) {
|
|
127
135
|
return string
|
|
128
136
|
.replace(/[\\]/g, "\\\\")
|
|
129
137
|
.replace(/[\b]/g, "\\b")
|
|
@@ -133,7 +141,7 @@ exports.escapeDangerousCharacters = string => {
|
|
|
133
141
|
.replace(/[\t]/g, "\\t")
|
|
134
142
|
}
|
|
135
143
|
|
|
136
|
-
|
|
144
|
+
export function stringToReadStream(string: string) {
|
|
137
145
|
return new Readable({
|
|
138
146
|
read() {
|
|
139
147
|
this.push(string)
|
|
@@ -142,7 +150,7 @@ exports.stringToReadStream = string => {
|
|
|
142
150
|
})
|
|
143
151
|
}
|
|
144
152
|
|
|
145
|
-
|
|
153
|
+
export function formatBytes(bytes: string) {
|
|
146
154
|
const units = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]
|
|
147
155
|
const byteIncrements = 1024
|
|
148
156
|
let unit = 0
|
|
@@ -153,7 +161,7 @@ exports.formatBytes = bytes => {
|
|
|
153
161
|
return `${size.toFixed(size < 10 && unit > 0 ? 1 : 0)}${units[unit]}`
|
|
154
162
|
}
|
|
155
163
|
|
|
156
|
-
|
|
164
|
+
export function convertBookmark(bookmark: string) {
|
|
157
165
|
const IS_NUMBER = /^\d+\.?\d*$/
|
|
158
166
|
if (typeof bookmark === "string" && bookmark.match(IS_NUMBER)) {
|
|
159
167
|
return parseFloat(bookmark)
|
|
@@ -161,7 +169,7 @@ exports.convertBookmark = bookmark => {
|
|
|
161
169
|
return bookmark
|
|
162
170
|
}
|
|
163
171
|
|
|
164
|
-
|
|
172
|
+
export function isQsTrue(param: string) {
|
|
165
173
|
if (typeof param === "string") {
|
|
166
174
|
return param.toLowerCase() === "true"
|
|
167
175
|
} else {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import env from "../environment"
|
|
2
|
+
import { plugins as ProPlugins } from "@budibase/pro"
|
|
3
|
+
import { objectStore } from "@budibase/backend-core"
|
|
4
|
+
import { Plugin } from "@budibase/types"
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
export function enrichPluginURLs(plugins: Plugin[]) {
|
|
6
7
|
if (!plugins || !plugins.length) {
|
|
7
8
|
return []
|
|
8
9
|
}
|