@budibase/server 2.1.39 → 2.1.40-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/aws-sdk.ts +14 -0
- package/__mocks__/node-fetch.ts +5 -1
- package/builder/assets/{index.534f6c29.css → index.144dddb2.css} +2 -2
- package/builder/assets/{index.a89ac148.js → index.fce502b3.js} +311 -311
- package/builder/index.html +2 -2
- package/coverage/clover.xml +10747 -3757
- package/coverage/coverage-final.json +266 -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} +26 -26
- 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} +75 -75
- 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} +47 -47
- 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} +246 -87
- 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} +53 -71
- package/coverage/lcov-report/src/api/controllers/index.html +431 -0
- package/coverage/lcov-report/{api/controllers/integration.js.html → src/api/controllers/integration.ts.html} +19 -22
- package/coverage/lcov-report/{api/controllers/layout.js.html → src/api/controllers/layout.ts.html} +26 -26
- package/coverage/lcov-report/{api/controllers/metadata.js.html → src/api/controllers/metadata.ts.html} +26 -23
- package/coverage/lcov-report/{api/controllers/migrations.js.html → src/api/controllers/migrations.ts.html} +18 -15
- package/coverage/lcov-report/{api/controllers/permission.js.html → src/api/controllers/permission.ts.html} +80 -71
- 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/src/api/controllers/public/mapping/tables.ts.html +163 -0
- 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} +17 -17
- package/coverage/lcov-report/{api/controllers/role.js.html → src/api/controllers/role.ts.html} +44 -56
- package/coverage/lcov-report/{api/controllers/routing.js.html → src/api/controllers/routing.ts.html} +65 -56
- 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} +145 -94
- 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} +137 -95
- package/coverage/lcov-report/{api/controllers/row/internalSearch.js.html → src/api/controllers/row/internalSearch.ts.html} +182 -110
- package/coverage/lcov-report/{api/controllers/row/staticFormula.js.html → src/api/controllers/row/staticFormula.ts.html} +66 -51
- package/coverage/lcov-report/{api/controllers/row/utils.js.html → src/api/controllers/row/utils.ts.html} +77 -47
- 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} +17 -14
- 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} +96 -54
- package/coverage/lcov-report/{api/controllers/table/external.js.html → src/api/controllers/table/external.ts.html} +196 -103
- 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} +46 -37
- 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} +34 -25
- package/coverage/lcov-report/{api/controllers/user.js.html → src/api/controllers/user.ts.html} +79 -85
- package/coverage/lcov-report/{api/controllers/view/exporters.js.html → src/api/controllers/view/exporters.ts.html} +20 -14
- 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} +75 -48
- package/coverage/lcov-report/{api/controllers/view/utils.js.html → src/api/controllers/view/utils.ts.html} +61 -43
- package/coverage/lcov-report/{api/controllers/view/viewBuilder.js.html → src/api/controllers/view/viewBuilder.ts.html} +74 -32
- 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} +35 -56
- package/coverage/lcov-report/{api/routes/analytics.js.html → src/api/routes/analytics.ts.html} +14 -14
- package/coverage/lcov-report/{api/routes/integration.js.html → src/api/routes/apikeys.ts.html} +18 -18
- package/coverage/lcov-report/{constants/screens.js.html → src/api/routes/application.ts.html} +63 -63
- 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} +48 -42
- package/coverage/lcov-report/{api/routes/cloud.js.html → src/api/routes/backup.ts.html} +21 -21
- package/coverage/lcov-report/{api/routes/deploy.js.html → src/api/routes/cloud.ts.html} +25 -22
- package/coverage/lcov-report/{api/routes/component.js.html → src/api/routes/component.ts.html} +17 -17
- 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/{api/routes/layout.js.html → src/api/routes/layout.ts.html} +18 -18
- package/coverage/lcov-report/{api/routes/metadata.js.html → src/api/routes/metadata.ts.html} +24 -24
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +127 -0
- package/coverage/lcov-report/{api/routes/permission.js.html → src/api/routes/permission.ts.html} +48 -24
- 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} +33 -42
- package/coverage/lcov-report/{utilities/routing/index.js.html → src/api/routes/role.ts.html} +39 -42
- package/coverage/lcov-report/{api/routes/routing.js.html → src/api/routes/routing.ts.html} +17 -17
- 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} +36 -21
- 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} +24 -33
- package/coverage/lcov-report/{api/routes/templates.js.html → src/api/routes/templates.ts.html} +18 -18
- 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} +29 -35
- 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} +46 -58
- package/coverage/lcov-report/{api/routes/view.js.html → src/api/routes/view.ts.html} +40 -31
- 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} +50 -41
- package/coverage/lcov-report/{automations/automationUtils.js.html → src/automations/automationUtils.ts.html} +30 -27
- package/coverage/lcov-report/{automations/bullboard.js.html → src/automations/bullboard.ts.html} +30 -33
- 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} +42 -42
- package/coverage/lcov-report/src/automations/logging/index.html +116 -0
- package/coverage/lcov-report/{events/utils.js.html → src/automations/logging/index.ts.html} +70 -70
- package/coverage/lcov-report/{automations/steps/bash.js.html → src/automations/steps/bash.ts.html} +40 -25
- 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} +32 -17
- 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} +38 -23
- package/coverage/lcov-report/{automations/steps/executeQuery.js.html → src/automations/steps/executeQuery.ts.html} +41 -26
- package/coverage/lcov-report/{automations/steps/executeScript.js.html → src/automations/steps/executeScript.ts.html} +54 -24
- package/coverage/lcov-report/{automations/steps/filter.js.html → src/automations/steps/filter.ts.html} +36 -27
- 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} +35 -20
- 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} +48 -33
- package/coverage/lcov-report/{automations/steps/queryRows.js.html → src/automations/steps/queryRows.ts.html} +94 -58
- package/coverage/lcov-report/{automations/steps/sendSmtpEmail.js.html → src/automations/steps/sendSmtpEmail.ts.html} +37 -22
- package/coverage/lcov-report/{automations/steps/serverLog.js.html → src/automations/steps/serverLog.ts.html} +38 -20
- package/coverage/lcov-report/{automations/steps/slack.js.html → src/automations/steps/slack.ts.html} +35 -20
- package/coverage/lcov-report/{automations/steps/updateRow.js.html → src/automations/steps/updateRow.ts.html} +36 -21
- package/coverage/lcov-report/{automations/steps/utils.js.html → src/automations/steps/utils.ts.html} +44 -26
- package/coverage/lcov-report/{automations/steps/zapier.js.html → src/automations/steps/zapier.ts.html} +38 -20
- 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} +17 -17
- 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} +59 -47
- 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/{constants/index.js.html → src/constants/index.ts.html} +173 -185
- package/coverage/lcov-report/{constants/layouts.js.html → src/constants/layouts.ts.html} +16 -34
- package/coverage/lcov-report/{api/routes/datasource.js.html → src/constants/screens.ts.html} +56 -65
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +2032 -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} +44 -26
- package/coverage/lcov-report/{db → src/db}/index.html +48 -33
- package/coverage/lcov-report/src/db/index.ts.html +133 -0
- package/coverage/lcov-report/{db/linkedRows/LinkController.js.html → src/db/linkedRows/LinkController.ts.html} +92 -155
- 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} +83 -68
- package/coverage/lcov-report/{db/linkedRows/linkUtils.js.html → src/db/linkedRows/linkUtils.ts.html} +73 -46
- package/coverage/lcov-report/{db/newid.js.html → src/db/newid.ts.html} +11 -11
- package/coverage/lcov-report/{db/utils.js.html → src/db/utils.ts.html} +105 -153
- package/coverage/lcov-report/{automations/triggerInfo/app.js.html → src/definitions/automations.ts.html} +42 -42
- package/coverage/lcov-report/src/definitions/datasource.ts.html +235 -0
- 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} +36 -21
- package/coverage/lcov-report/{events/index.js.html → src/events/BudibaseEmitter.ts.html} +23 -26
- 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/src/integrations/base/utils.ts.html +121 -0
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +406 -0
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +745 -0
- 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} +31 -28
- package/coverage/lcov-report/src/middleware/authorized.ts.html +460 -0
- package/coverage/lcov-report/{middleware/builder.js.html → src/middleware/builder.ts.html} +43 -37
- package/coverage/lcov-report/{middleware/currentapp.js.html → src/middleware/currentapp.ts.html} +77 -68
- 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} +24 -24
- package/coverage/lcov-report/{middleware/resourceId.js.html → src/middleware/resourceId.ts.html} +40 -25
- package/coverage/lcov-report/{api/routes/apikeys.js.html → src/middleware/selfhost.ts.html} +27 -27
- package/coverage/lcov-report/{middleware/utils.js.html → src/middleware/utils.ts.html} +19 -13
- 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} +53 -53
- 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 +146 -0
- package/coverage/lcov-report/{api/routes/role.js.html → src/migrations/functions/syncQuotas.ts.html} +32 -32
- 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 +403 -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} +12 -12
- package/coverage/lcov-report/{utilities/centralPath.js.html → src/utilities/centralPath.ts.html} +13 -13
- package/coverage/lcov-report/{utilities/csvParser.js.html → src/utilities/csvParser.ts.html} +104 -56
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +547 -0
- package/coverage/lcov-report/{api/controllers/table → src/utilities/fileSystem}/index.html +43 -43
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1117 -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} +107 -74
- package/coverage/lcov-report/{utilities → src/utilities}/index.html +92 -77
- package/coverage/lcov-report/{utilities/index.js.html → src/utilities/index.ts.html} +78 -54
- package/coverage/lcov-report/{utilities/plugins.js.html → src/utilities/plugins.ts.html} +22 -19
- 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} +115 -346
- 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} +50 -38
- package/coverage/lcov-report/{utilities/scriptRunner.js.html → src/utilities/scriptRunner.ts.html} +28 -16
- package/coverage/lcov-report/{utilities/security.js.html → src/utilities/security.ts.html} +56 -74
- 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} +34 -46
- 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} +29 -35
- package/coverage/lcov-report/{utilities/workerRequests.js.html → src/utilities/workerRequests.ts.html} +129 -114
- package/coverage/lcov-report/src/watch.ts.html +196 -0
- package/coverage/lcov-report/src/websocket.ts.html +163 -0
- package/coverage/lcov.info +19514 -6962
- 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 +144 -92
- 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 +571 -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/usageQuotas/syncApps.js +3 -4
- package/dist/migrations/functions/usageQuotas/syncRows.js +3 -4
- package/dist/migrations/functions/userEmailViewCasing.js +3 -3
- 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 +202 -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} +100 -47
- 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/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 +649 -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/tests/appUrls.spec.js +4 -4
- 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/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} +55 -63
- 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/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
|
|
|
@@ -91,13 +82,13 @@ exports.loadHandlebarsFile = path => {
|
|
|
91
82
|
* @param {string} contents the contents of the file which is to be returned from the API.
|
|
92
83
|
* @return {Object} the read stream which can be put into the koa context body.
|
|
93
84
|
*/
|
|
94
|
-
|
|
85
|
+
export function apiFileReturn(contents: string) {
|
|
95
86
|
const path = join(budibaseTempDir(), uuid())
|
|
96
87
|
fs.writeFileSync(path, contents)
|
|
97
88
|
return fs.createReadStream(path)
|
|
98
89
|
}
|
|
99
90
|
|
|
100
|
-
|
|
91
|
+
export function streamFile(path: string) {
|
|
101
92
|
return fs.createReadStream(path)
|
|
102
93
|
}
|
|
103
94
|
|
|
@@ -106,7 +97,7 @@ exports.streamFile = path => {
|
|
|
106
97
|
* @param {string} fileContents contents which will be written to a temp file.
|
|
107
98
|
* @return {string} the path to the temp file.
|
|
108
99
|
*/
|
|
109
|
-
|
|
100
|
+
export function storeTempFile(fileContents: string) {
|
|
110
101
|
const path = join(budibaseTempDir(), uuid())
|
|
111
102
|
fs.writeFileSync(path, fileContents)
|
|
112
103
|
return path
|
|
@@ -116,7 +107,7 @@ exports.storeTempFile = fileContents => {
|
|
|
116
107
|
* Utility function for getting a file read stream - a simple in memory buffered read
|
|
117
108
|
* stream doesn't work for pouchdb.
|
|
118
109
|
*/
|
|
119
|
-
|
|
110
|
+
export function stringToFileStream(contents: string) {
|
|
120
111
|
const path = exports.storeTempFile(contents)
|
|
121
112
|
return fs.createReadStream(path)
|
|
122
113
|
}
|
|
@@ -125,7 +116,7 @@ exports.stringToFileStream = contents => {
|
|
|
125
116
|
* Creates a temp file and returns it from the API.
|
|
126
117
|
* @param {string} fileContents the contents to be returned in file.
|
|
127
118
|
*/
|
|
128
|
-
|
|
119
|
+
export function sendTempFile(fileContents: string) {
|
|
129
120
|
const path = exports.storeTempFile(fileContents)
|
|
130
121
|
return fs.createReadStream(path)
|
|
131
122
|
}
|
|
@@ -135,7 +126,7 @@ exports.sendTempFile = fileContents => {
|
|
|
135
126
|
* @param {string} appId The ID of the app which is being created.
|
|
136
127
|
* @return {Promise<void>} once promise completes app resources should be ready in object store.
|
|
137
128
|
*/
|
|
138
|
-
|
|
129
|
+
export async function createApp(appId: string) {
|
|
139
130
|
await updateClientLibrary(appId)
|
|
140
131
|
}
|
|
141
132
|
|
|
@@ -144,8 +135,8 @@ exports.createApp = async appId => {
|
|
|
144
135
|
* @param {string} appId The ID of the app which is being deleted.
|
|
145
136
|
* @return {Promise<void>} once promise completes the app resources will be removed from object store.
|
|
146
137
|
*/
|
|
147
|
-
|
|
148
|
-
await deleteFolder(ObjectStoreBuckets.APPS, `${appId}/`)
|
|
138
|
+
export async function deleteApp(appId: string) {
|
|
139
|
+
await objectStore.deleteFolder(ObjectStoreBuckets.APPS, `${appId}/`)
|
|
149
140
|
}
|
|
150
141
|
|
|
151
142
|
/**
|
|
@@ -154,18 +145,22 @@ exports.deleteApp = async appId => {
|
|
|
154
145
|
* @param name
|
|
155
146
|
* @return {Promise<*>}
|
|
156
147
|
*/
|
|
157
|
-
|
|
148
|
+
export async function downloadTemplate(type: string, name: string) {
|
|
158
149
|
const DEFAULT_TEMPLATES_BUCKET =
|
|
159
150
|
"prod-budi-templates.s3-eu-west-1.amazonaws.com"
|
|
160
151
|
const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name}.tar.gz`
|
|
161
|
-
return downloadTarball(
|
|
152
|
+
return objectStore.downloadTarball(
|
|
153
|
+
templateUrl,
|
|
154
|
+
ObjectStoreBuckets.TEMPLATES,
|
|
155
|
+
type
|
|
156
|
+
)
|
|
162
157
|
}
|
|
163
158
|
|
|
164
159
|
/**
|
|
165
160
|
* Retrieves component libraries from object store (or tmp symlink if in local)
|
|
166
161
|
*/
|
|
167
|
-
|
|
168
|
-
const appId = getAppId()
|
|
162
|
+
export async function getComponentLibraryManifest(library: string) {
|
|
163
|
+
const appId = context.getAppId()
|
|
169
164
|
const filename = "manifest.json"
|
|
170
165
|
/* istanbul ignore next */
|
|
171
166
|
// when testing in cypress and so on we need to get the package
|
|
@@ -182,12 +177,16 @@ exports.getComponentLibraryManifest = async library => {
|
|
|
182
177
|
return require(path)
|
|
183
178
|
}
|
|
184
179
|
|
|
180
|
+
if (!appId) {
|
|
181
|
+
throw new Error("No app ID found - cannot get component libraries")
|
|
182
|
+
}
|
|
183
|
+
|
|
185
184
|
let resp
|
|
186
185
|
let path
|
|
187
186
|
try {
|
|
188
187
|
// Try to load the manifest from the new file location
|
|
189
188
|
path = join(appId, filename)
|
|
190
|
-
resp = await retrieve(ObjectStoreBuckets.APPS, path)
|
|
189
|
+
resp = await objectStore.retrieve(ObjectStoreBuckets.APPS, path)
|
|
191
190
|
} catch (error) {
|
|
192
191
|
console.error(
|
|
193
192
|
`component-manifest-objectstore=failed appId=${appId} path=${path}`,
|
|
@@ -195,7 +194,7 @@ exports.getComponentLibraryManifest = async library => {
|
|
|
195
194
|
)
|
|
196
195
|
// Fallback to loading it from the old location for old apps
|
|
197
196
|
path = join(appId, "node_modules", library, "package", filename)
|
|
198
|
-
resp = await retrieve(ObjectStoreBuckets.APPS, path)
|
|
197
|
+
resp = await objectStore.retrieve(ObjectStoreBuckets.APPS, path)
|
|
199
198
|
}
|
|
200
199
|
if (typeof resp !== "string") {
|
|
201
200
|
resp = resp.toString("utf8")
|
|
@@ -207,14 +206,17 @@ exports.getComponentLibraryManifest = async library => {
|
|
|
207
206
|
* All file reads come through here just to make sure all of them make sense
|
|
208
207
|
* allows a centralised location to check logic is all good.
|
|
209
208
|
*/
|
|
210
|
-
|
|
211
|
-
|
|
209
|
+
export function readFileSync(
|
|
210
|
+
filepath: string,
|
|
211
|
+
options: BufferEncoding = "utf8"
|
|
212
|
+
) {
|
|
213
|
+
return fs.readFileSync(filepath, { encoding: options })
|
|
212
214
|
}
|
|
213
215
|
|
|
214
216
|
/**
|
|
215
217
|
* Given a set of app IDs makes sure file system is cleared of any of their temp info.
|
|
216
218
|
*/
|
|
217
|
-
|
|
219
|
+
export function cleanup(appIds: string[]) {
|
|
218
220
|
for (let appId of appIds) {
|
|
219
221
|
const path = join(budibaseTempDir(), appId)
|
|
220
222
|
if (fs.existsSync(path)) {
|
|
@@ -223,7 +225,7 @@ exports.cleanup = appIds => {
|
|
|
223
225
|
}
|
|
224
226
|
}
|
|
225
227
|
|
|
226
|
-
|
|
228
|
+
export function createTempFolder(item: string) {
|
|
227
229
|
const path = join(budibaseTempDir(), item)
|
|
228
230
|
try {
|
|
229
231
|
// remove old tmp directories automatically - don't combine
|
|
@@ -231,24 +233,22 @@ const createTempFolder = item => {
|
|
|
231
233
|
fs.rmSync(path, { recursive: true, force: true })
|
|
232
234
|
}
|
|
233
235
|
fs.mkdirSync(path)
|
|
234
|
-
} catch (err) {
|
|
236
|
+
} catch (err: any) {
|
|
235
237
|
throw new Error(`Path cannot be created: ${err.message}`)
|
|
236
238
|
}
|
|
237
239
|
|
|
238
240
|
return path
|
|
239
241
|
}
|
|
240
|
-
exports.createTempFolder = createTempFolder
|
|
241
242
|
|
|
242
|
-
|
|
243
|
+
export async function extractTarball(fromFilePath: string, toPath: string) {
|
|
243
244
|
await tar.extract({
|
|
244
245
|
file: fromFilePath,
|
|
245
246
|
C: toPath,
|
|
246
247
|
})
|
|
247
248
|
}
|
|
248
|
-
exports.extractTarball = extractTarball
|
|
249
249
|
|
|
250
|
-
|
|
251
|
-
let metadata = {}
|
|
250
|
+
export async function getPluginMetadata(path: string) {
|
|
251
|
+
let metadata: { schema?: any; package?: any } = {}
|
|
252
252
|
try {
|
|
253
253
|
const pkg = fs.readFileSync(join(path, "package.json"), "utf8")
|
|
254
254
|
const schema = fs.readFileSync(join(path, "schema.json"), "utf8")
|
|
@@ -265,7 +265,7 @@ const getPluginMetadata = async path => {
|
|
|
265
265
|
"package.json is missing one of 'name', 'version' or 'description'."
|
|
266
266
|
)
|
|
267
267
|
}
|
|
268
|
-
} catch (err) {
|
|
268
|
+
} catch (err: any) {
|
|
269
269
|
throw new Error(
|
|
270
270
|
`Unable to process schema.json/package.json in plugin. ${err.message}`
|
|
271
271
|
)
|
|
@@ -273,9 +273,12 @@ const getPluginMetadata = async path => {
|
|
|
273
273
|
|
|
274
274
|
return { metadata, directory: path }
|
|
275
275
|
}
|
|
276
|
-
exports.getPluginMetadata = getPluginMetadata
|
|
277
276
|
|
|
278
|
-
|
|
277
|
+
export async function getDatasourcePlugin(
|
|
278
|
+
name: string,
|
|
279
|
+
url: string,
|
|
280
|
+
hash: string
|
|
281
|
+
) {
|
|
279
282
|
if (!fs.existsSync(DATASOURCE_PATH)) {
|
|
280
283
|
fs.mkdirSync(DATASOURCE_PATH)
|
|
281
284
|
}
|
|
@@ -311,7 +314,7 @@ exports.getDatasourcePlugin = async (name, url, hash) => {
|
|
|
311
314
|
/**
|
|
312
315
|
* Find for a file recursively from start path applying filter, return first match
|
|
313
316
|
*/
|
|
314
|
-
|
|
317
|
+
export function findFileRec(startPath: string, filter: any) {
|
|
315
318
|
if (!fs.existsSync(startPath)) {
|
|
316
319
|
return
|
|
317
320
|
}
|
|
@@ -332,21 +335,10 @@ exports.findFileRec = (startPath, filter) => {
|
|
|
332
335
|
/**
|
|
333
336
|
* Remove a folder which is not empty from the file system
|
|
334
337
|
*/
|
|
335
|
-
|
|
338
|
+
export function deleteFolderFileSystem(path: string) {
|
|
336
339
|
if (!fs.existsSync(path)) {
|
|
337
340
|
return
|
|
338
341
|
}
|
|
339
342
|
|
|
340
343
|
fs.rmSync(path, { recursive: true, force: true })
|
|
341
344
|
}
|
|
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
|
}
|