@budibase/server 2.6.19-alpha.5 → 2.6.19-alpha.51
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/.dockerignore +7 -6
- package/Dockerfile +16 -8
- package/builder/assets/index.4f47d591.js +1869 -0
- package/builder/assets/index.6ebb99b3.css +6 -0
- package/builder/index.html +2 -2
- package/client/manifest.json +5229 -0
- package/dist/automation.js +32566 -0
- package/dist/automation.js.map +7 -0
- package/dist/index.js +45038 -13
- package/dist/index.js.map +7 -0
- package/dist/query.js +24454 -0
- package/dist/query.js.map +7 -0
- package/jest.config.ts +3 -0
- package/nodemon.json +1 -1
- package/package.json +33 -15
- package/pm2.config.js +1 -1
- package/scripts/build.js +48 -0
- package/src/api/controllers/application.ts +21 -22
- package/src/api/controllers/automation.ts +37 -9
- package/src/api/controllers/datasource.ts +25 -15
- package/src/api/controllers/deploy/index.ts +1 -0
- package/src/api/controllers/plugin/index.ts +1 -1
- package/src/api/controllers/row/external.ts +39 -15
- package/src/api/controllers/row/index.ts +18 -24
- package/src/api/controllers/row/internal.ts +1 -1
- package/src/api/controllers/row/staticFormula.ts +6 -1
- package/src/api/controllers/row/utils.ts +12 -0
- package/src/api/controllers/static/index.ts +3 -3
- package/src/api/controllers/table/index.ts +3 -0
- package/src/api/controllers/table/internal.ts +2 -6
- package/src/api/controllers/table/utils.ts +32 -1
- package/src/api/controllers/view/index.ts +5 -5
- package/src/api/controllers/webhook.ts +33 -9
- package/src/api/routes/application.ts +5 -0
- package/src/api/routes/automation.ts +0 -1
- package/src/api/routes/datasource.ts +2 -2
- package/src/api/routes/static.ts +3 -1
- package/src/api/routes/tests/{automation.spec.js → automation.spec.ts} +106 -31
- package/src/api/routes/tests/view.spec.js +4 -3
- package/src/api/routes/tests/{webhook.spec.js → webhook.spec.ts} +33 -11
- package/src/app.ts +0 -1
- package/src/automations/actions.ts +8 -0
- package/src/automations/logging/index.ts +21 -0
- package/src/automations/steps/bash.ts +4 -0
- package/src/automations/steps/collect.ts +58 -0
- package/src/automations/steps/createRow.ts +4 -0
- package/src/automations/steps/delay.ts +1 -0
- package/src/automations/steps/deleteRow.ts +4 -0
- package/src/automations/steps/discord.ts +4 -0
- package/src/automations/steps/executeQuery.ts +4 -0
- package/src/automations/steps/executeScript.ts +4 -0
- package/src/automations/steps/filter.ts +1 -0
- package/src/automations/steps/loop.ts +1 -0
- package/src/automations/steps/make.ts +4 -0
- package/src/automations/steps/openai.ts +106 -0
- package/src/automations/steps/outgoingWebhook.ts +4 -0
- package/src/automations/steps/queryRows.ts +4 -0
- package/src/automations/steps/sendSmtpEmail.ts +4 -0
- package/src/automations/steps/serverLog.ts +4 -0
- package/src/automations/steps/slack.ts +4 -0
- package/src/automations/steps/updateRow.ts +4 -0
- package/src/automations/steps/zapier.ts +4 -0
- package/src/automations/tests/openai.spec.ts +86 -0
- package/src/automations/triggers.ts +3 -2
- package/src/constants/index.ts +17 -16
- package/src/db/inMemoryView.ts +1 -0
- package/src/db/linkedRows/index.ts +5 -3
- package/src/environment.ts +3 -0
- package/src/integration-test/postgres.spec.ts +5 -5
- package/src/integrations/airtable.ts +3 -1
- package/src/integrations/arangodb.ts +3 -1
- package/src/integrations/base/sqlTable.ts +0 -1
- package/src/integrations/couchdb.ts +3 -1
- package/src/integrations/dynamodb.ts +3 -1
- package/src/integrations/elasticsearch.ts +3 -1
- package/src/integrations/firebase.ts +3 -1
- package/src/integrations/googlesheets.ts +37 -13
- package/src/integrations/microsoftSqlServer.ts +4 -4
- package/src/integrations/mongodb.ts +3 -1
- package/src/integrations/mysql.ts +4 -4
- package/src/integrations/oracle.ts +4 -4
- package/src/integrations/postgres.ts +4 -4
- package/src/integrations/redis.ts +10 -2
- package/src/integrations/s3.ts +3 -1
- package/src/integrations/snowflake.ts +3 -1
- package/src/middleware/builder.ts +26 -18
- package/src/sdk/app/automations/index.ts +2 -0
- package/src/sdk/app/automations/utils.ts +7 -0
- package/src/sdk/plugins/plugins.ts +1 -1
- package/src/startup.ts +2 -0
- package/src/tests/utilities/TestConfiguration.ts +4 -2
- package/src/tests/utilities/structures.ts +42 -0
- package/src/threads/automation.ts +91 -23
- package/src/threads/index.ts +9 -3
- package/src/threads/utils.ts +2 -0
- package/src/utilities/fileSystem/app.ts +14 -4
- package/src/utilities/fileSystem/clientLibrary.ts +8 -3
- package/src/utilities/fileSystem/filesystem.ts +3 -1
- package/src/utilities/redis.ts +25 -3
- package/src/utilities/rowProcessor/index.ts +4 -1
- package/src/utilities/rowProcessor/map.ts +1 -1
- package/src/websockets/builder.ts +77 -0
- package/src/websockets/client.ts +2 -2
- package/src/websockets/grid.ts +44 -44
- package/src/websockets/index.ts +13 -6
- package/src/websockets/websocket.ts +207 -7
- package/tsconfig.build.json +9 -1
- package/tsconfig.json +1 -14
- package/builder/assets/index.07382a47.css +0 -6
- package/builder/assets/index.3d5c50fb.js +0 -1786
- package/dist/api/controllers/analytics.js +0 -46
- package/dist/api/controllers/apikeys.js +0 -72
- package/dist/api/controllers/application.js +0 -574
- package/dist/api/controllers/auth.js +0 -80
- package/dist/api/controllers/automation.js +0 -303
- package/dist/api/controllers/backup.js +0 -37
- package/dist/api/controllers/component.js +0 -59
- package/dist/api/controllers/datasource.js +0 -352
- package/dist/api/controllers/deploy/Deployment.js +0 -53
- package/dist/api/controllers/deploy/index.js +0 -198
- package/dist/api/controllers/dev.js +0 -146
- package/dist/api/controllers/integration.js +0 -28
- package/dist/api/controllers/layout.js +0 -49
- package/dist/api/controllers/metadata.js +0 -63
- package/dist/api/controllers/migrations.js +0 -29
- package/dist/api/controllers/ops.js +0 -40
- package/dist/api/controllers/permission.js +0 -162
- package/dist/api/controllers/plugin/file.js +0 -24
- package/dist/api/controllers/plugin/github.js +0 -69
- package/dist/api/controllers/plugin/index.js +0 -112
- package/dist/api/controllers/plugin/npm.js +0 -58
- package/dist/api/controllers/plugin/uploaders.js +0 -11
- package/dist/api/controllers/plugin/url.js +0 -24
- package/dist/api/controllers/plugin/utils.js +0 -27
- package/dist/api/controllers/public/applications.js +0 -146
- package/dist/api/controllers/public/mapping/applications.js +0 -29
- package/dist/api/controllers/public/mapping/index.js +0 -11
- package/dist/api/controllers/public/mapping/queries.js +0 -36
- package/dist/api/controllers/public/mapping/rows.js +0 -24
- package/dist/api/controllers/public/mapping/tables.js +0 -23
- package/dist/api/controllers/public/mapping/types.js +0 -2
- package/dist/api/controllers/public/mapping/users.js +0 -29
- package/dist/api/controllers/public/metrics.js +0 -113
- package/dist/api/controllers/public/queries.js +0 -58
- package/dist/api/controllers/public/rows.js +0 -120
- package/dist/api/controllers/public/tables.js +0 -95
- package/dist/api/controllers/public/users.js +0 -93
- package/dist/api/controllers/public/utils.js +0 -56
- package/dist/api/controllers/query/import/index.js +0 -87
- package/dist/api/controllers/query/import/sources/base/index.js +0 -75
- package/dist/api/controllers/query/import/sources/base/openapi.js +0 -42
- package/dist/api/controllers/query/import/sources/curl.js +0 -99
- package/dist/api/controllers/query/import/sources/openapi2.js +0 -145
- package/dist/api/controllers/query/import/sources/openapi3.js +0 -177
- package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
- package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
- package/dist/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json +0 -253
- package/dist/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json +0 -1225
- package/dist/api/controllers/query/index.js +0 -299
- package/dist/api/controllers/query/validation.js +0 -53
- package/dist/api/controllers/role.js +0 -109
- package/dist/api/controllers/routing.js +0 -105
- package/dist/api/controllers/row/ExternalRequest.js +0 -683
- package/dist/api/controllers/row/external.js +0 -339
- package/dist/api/controllers/row/index.js +0 -203
- package/dist/api/controllers/row/internal.js +0 -509
- package/dist/api/controllers/row/internalSearch.js +0 -28
- package/dist/api/controllers/row/staticFormula.js +0 -165
- package/dist/api/controllers/row/utils.js +0 -183
- package/dist/api/controllers/screen.js +0 -110
- package/dist/api/controllers/script.js +0 -30
- package/dist/api/controllers/static/index.js +0 -268
- package/dist/api/controllers/table/bulkFormula.js +0 -173
- package/dist/api/controllers/table/external.js +0 -279
- package/dist/api/controllers/table/index.js +0 -179
- package/dist/api/controllers/table/internal.js +0 -197
- package/dist/api/controllers/table/utils.js +0 -379
- package/dist/api/controllers/templates.js +0 -56
- package/dist/api/controllers/user.js +0 -124
- package/dist/api/controllers/view/exporters.js +0 -46
- package/dist/api/controllers/view/index.js +0 -193
- package/dist/api/controllers/view/utils.js +0 -177
- package/dist/api/controllers/view/viewBuilder.js +0 -158
- package/dist/api/controllers/webhook.js +0 -134
- package/dist/api/index.js +0 -55
- package/dist/api/routes/analytics.js +0 -34
- package/dist/api/routes/apikeys.js +0 -37
- package/dist/api/routes/application.js +0 -48
- package/dist/api/routes/auth.js +0 -33
- package/dist/api/routes/automation.js +0 -50
- package/dist/api/routes/backup.js +0 -35
- package/dist/api/routes/component.js +0 -35
- package/dist/api/routes/datasource.js +0 -45
- package/dist/api/routes/deploy.js +0 -37
- package/dist/api/routes/dev.js +0 -49
- package/dist/api/routes/index.js +0 -75
- package/dist/api/routes/integration.js +0 -37
- package/dist/api/routes/layout.js +0 -37
- package/dist/api/routes/metadata.js +0 -40
- package/dist/api/routes/migrations.js +0 -36
- package/dist/api/routes/ops.js +0 -52
- package/dist/api/routes/permission.js +0 -44
- package/dist/api/routes/plugin.js +0 -39
- package/dist/api/routes/public/applications.js +0 -174
- package/dist/api/routes/public/index.js +0 -140
- package/dist/api/routes/public/metrics.js +0 -30
- package/dist/api/routes/public/middleware/mapper.js +0 -97
- package/dist/api/routes/public/queries.js +0 -72
- package/dist/api/routes/public/rows.js +0 -158
- package/dist/api/routes/public/tables.js +0 -152
- package/dist/api/routes/public/users.js +0 -135
- package/dist/api/routes/public/utils/Endpoint.js +0 -36
- package/dist/api/routes/query.js +0 -47
- package/dist/api/routes/role.js +0 -40
- package/dist/api/routes/routing.js +0 -39
- package/dist/api/routes/row.js +0 -239
- package/dist/api/routes/screen.js +0 -39
- package/dist/api/routes/script.js +0 -35
- package/dist/api/routes/static.js +0 -80
- package/dist/api/routes/table.js +0 -163
- package/dist/api/routes/templates.js +0 -37
- package/dist/api/routes/user.js +0 -43
- package/dist/api/routes/utils/validators.js +0 -238
- package/dist/api/routes/view.js +0 -42
- package/dist/api/routes/webhook.js +0 -43
- package/dist/app.js +0 -132
- package/dist/automations/actions.js +0 -137
- package/dist/automations/automationUtils.js +0 -173
- package/dist/automations/bullboard.js +0 -71
- package/dist/automations/index.js +0 -43
- package/dist/automations/logging/index.js +0 -53
- package/dist/automations/steps/bash.js +0 -111
- package/dist/automations/steps/createRow.js +0 -108
- package/dist/automations/steps/delay.js +0 -53
- package/dist/automations/steps/deleteRow.js +0 -96
- package/dist/automations/steps/discord.js +0 -116
- package/dist/automations/steps/executeQuery.js +0 -134
- package/dist/automations/steps/executeScript.js +0 -106
- package/dist/automations/steps/filter.js +0 -112
- package/dist/automations/steps/loop.js +0 -54
- package/dist/automations/steps/make.js +0 -134
- package/dist/automations/steps/outgoingWebhook.js +0 -166
- package/dist/automations/steps/queryRows.js +0 -216
- package/dist/automations/steps/sendSmtpEmail.js +0 -115
- package/dist/automations/steps/serverLog.js +0 -65
- package/dist/automations/steps/slack.js +0 -98
- package/dist/automations/steps/updateRow.js +0 -144
- package/dist/automations/steps/utils.js +0 -56
- package/dist/automations/steps/zapier.js +0 -130
- package/dist/automations/triggerInfo/app.js +0 -36
- package/dist/automations/triggerInfo/cron.js +0 -35
- package/dist/automations/triggerInfo/index.js +0 -40
- package/dist/automations/triggerInfo/rowDeleted.js +0 -36
- package/dist/automations/triggerInfo/rowSaved.js +0 -44
- package/dist/automations/triggerInfo/rowUpdated.js +0 -44
- package/dist/automations/triggerInfo/webhook.js +0 -40
- package/dist/automations/triggers.js +0 -181
- package/dist/automations/utils.js +0 -275
- package/dist/constants/definitions.js +0 -2
- package/dist/constants/index.js +0 -181
- package/dist/constants/layouts.js +0 -148
- package/dist/constants/screens.js +0 -51
- package/dist/db/defaultData/datasource_bb_default.js +0 -574
- package/dist/db/defaultData/employeeImport.js +0 -155
- package/dist/db/defaultData/expensesImport.js +0 -117
- package/dist/db/defaultData/inventoryImport.js +0 -109
- package/dist/db/defaultData/jobsImport.js +0 -152
- package/dist/db/dynamoClient.js +0 -124
- package/dist/db/inMemoryView.js +0 -62
- package/dist/db/index.js +0 -43
- package/dist/db/linkedRows/LinkController.js +0 -392
- package/dist/db/linkedRows/LinkDocument.js +0 -33
- package/dist/db/linkedRows/index.js +0 -206
- package/dist/db/linkedRows/linkUtils.js +0 -131
- package/dist/db/newid.js +0 -7
- package/dist/db/utils.js +0 -248
- package/dist/db/views/staticViews.js +0 -144
- package/dist/ddApm.js +0 -11
- package/dist/definitions/automations.js +0 -8
- package/dist/definitions/common.js +0 -2
- package/dist/definitions/datasource.js +0 -7
- package/dist/definitions/openapi.js +0 -6
- package/dist/environment.js +0 -109
- package/dist/events/AutomationEmitter.js +0 -53
- package/dist/events/BudibaseEmitter.js +0 -25
- package/dist/events/docUpdates/index.js +0 -17
- package/dist/events/docUpdates/processors.js +0 -18
- package/dist/events/docUpdates/syncUsers.js +0 -49
- package/dist/events/index.js +0 -11
- package/dist/events/utils.js +0 -43
- package/dist/integrations/airtable.js +0 -173
- package/dist/integrations/arangodb.js +0 -119
- package/dist/integrations/base/query.js +0 -32
- package/dist/integrations/base/sql.js +0 -600
- package/dist/integrations/base/sqlTable.js +0 -167
- package/dist/integrations/base/types.js +0 -2
- package/dist/integrations/couchdb.js +0 -140
- package/dist/integrations/dynamodb.js +0 -210
- package/dist/integrations/elasticsearch.js +0 -201
- package/dist/integrations/firebase.js +0 -189
- package/dist/integrations/googlesheets.js +0 -493
- package/dist/integrations/index.js +0 -138
- package/dist/integrations/microsoftSqlServer.js +0 -308
- package/dist/integrations/mongodb.js +0 -630
- package/dist/integrations/mysql.js +0 -291
- package/dist/integrations/oracle.js +0 -415
- package/dist/integrations/postgres.js +0 -335
- package/dist/integrations/queries/sql.js +0 -84
- package/dist/integrations/redis.js +0 -187
- package/dist/integrations/rest.js +0 -400
- package/dist/integrations/s3.js +0 -256
- package/dist/integrations/snowflake.js +0 -114
- package/dist/integrations/utils.js +0 -295
- package/dist/middleware/appInfo.js +0 -22
- package/dist/middleware/authorized.js +0 -112
- package/dist/middleware/builder.js +0 -93
- package/dist/middleware/currentapp.js +0 -103
- package/dist/middleware/joi-validator.js +0 -43
- package/dist/middleware/publicApi.js +0 -25
- package/dist/middleware/resourceId.js +0 -59
- package/dist/middleware/selfhost.js +0 -24
- package/dist/middleware/utils.js +0 -8
- package/dist/migrations/functions/appUrls.js +0 -42
- package/dist/migrations/functions/backfill/app/automations.js +0 -31
- package/dist/migrations/functions/backfill/app/datasources.js +0 -28
- package/dist/migrations/functions/backfill/app/layouts.js +0 -33
- package/dist/migrations/functions/backfill/app/queries.js +0 -49
- package/dist/migrations/functions/backfill/app/roles.js +0 -28
- package/dist/migrations/functions/backfill/app/screens.js +0 -28
- package/dist/migrations/functions/backfill/app/tables.js +0 -37
- package/dist/migrations/functions/backfill/app.js +0 -176
- package/dist/migrations/functions/backfill/global/configs.js +0 -67
- package/dist/migrations/functions/backfill/global/quotas.js +0 -60
- package/dist/migrations/functions/backfill/global/users.js +0 -50
- package/dist/migrations/functions/backfill/global.js +0 -205
- package/dist/migrations/functions/backfill/index.js +0 -32
- package/dist/migrations/functions/backfill/installation.js +0 -80
- package/dist/migrations/functions/syncQuotas.js +0 -52
- package/dist/migrations/functions/tableSettings.js +0 -130
- package/dist/migrations/functions/usageQuotas/index.js +0 -16
- package/dist/migrations/functions/usageQuotas/syncApps.js +0 -24
- package/dist/migrations/functions/usageQuotas/syncPlugins.js +0 -23
- package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
- package/dist/migrations/functions/usageQuotas/syncUsers.js +0 -21
- package/dist/migrations/functions/userEmailViewCasing.js +0 -24
- package/dist/migrations/index.js +0 -111
- package/dist/migrations/tests/helpers.js +0 -72
- package/dist/migrations/tests/structures.js +0 -37
- package/dist/sdk/app/applications/index.js +0 -28
- package/dist/sdk/app/applications/sync.js +0 -164
- package/dist/sdk/app/applications/utils.js +0 -21
- package/dist/sdk/app/automations/index.js +0 -29
- package/dist/sdk/app/automations/webhook.js +0 -54
- package/dist/sdk/app/backups/constants.js +0 -6
- package/dist/sdk/app/backups/exports.js +0 -160
- package/dist/sdk/app/backups/imports.js +0 -170
- package/dist/sdk/app/backups/index.js +0 -29
- package/dist/sdk/app/backups/statistics.js +0 -73
- package/dist/sdk/app/datasources/datasources.js +0 -173
- package/dist/sdk/app/datasources/index.js +0 -27
- package/dist/sdk/app/queries/index.js +0 -27
- package/dist/sdk/app/queries/queries.js +0 -60
- package/dist/sdk/app/rows/attachments.js +0 -61
- package/dist/sdk/app/rows/index.js +0 -28
- package/dist/sdk/app/rows/rows.js +0 -30
- package/dist/sdk/app/tables/index.js +0 -65
- package/dist/sdk/index.js +0 -27
- package/dist/sdk/plugins/index.js +0 -27
- package/dist/sdk/plugins/plugins.js +0 -53
- package/dist/sdk/users/index.js +0 -27
- package/dist/sdk/users/utils.js +0 -87
- package/dist/sdk/utils/index.js +0 -29
- package/dist/startup.js +0 -158
- package/dist/threads/automation.js +0 -450
- package/dist/threads/definitions.js +0 -2
- package/dist/threads/index.js +0 -140
- package/dist/threads/query.js +0 -265
- package/dist/threads/utils.js +0 -120
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/utilities/appDirectoryTemplate/package.json +0 -10
- package/dist/utilities/budibaseDir.js +0 -5
- package/dist/utilities/centralPath.js +0 -27
- package/dist/utilities/csv.js +0 -33
- package/dist/utilities/fileSystem/app.js +0 -88
- package/dist/utilities/fileSystem/clientLibrary.js +0 -138
- package/dist/utilities/fileSystem/filesystem.js +0 -180
- package/dist/utilities/fileSystem/index.js +0 -21
- package/dist/utilities/fileSystem/plugin.js +0 -76
- package/dist/utilities/fileSystem/processor.js +0 -34
- package/dist/utilities/fileSystem/template.js +0 -47
- package/dist/utilities/global.js +0 -149
- package/dist/utilities/index.js +0 -143
- package/dist/utilities/redis.js +0 -117
- package/dist/utilities/retry.js +0 -30
- package/dist/utilities/routing/index.js +0 -39
- package/dist/utilities/rowProcessor/index.js +0 -282
- package/dist/utilities/rowProcessor/map.js +0 -116
- package/dist/utilities/rowProcessor/utils.js +0 -87
- package/dist/utilities/schema.js +0 -112
- package/dist/utilities/scriptRunner.js +0 -26
- package/dist/utilities/security.js +0 -57
- package/dist/utilities/statusCodes.js +0 -9
- package/dist/utilities/usageQuota/rows.js +0 -88
- package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
- package/dist/utilities/users.js +0 -57
- package/dist/utilities/workerRequests.js +0 -171
- package/dist/watch.js +0 -53
- package/dist/websockets/client.js +0 -14
- package/dist/websockets/grid.js +0 -60
- package/dist/websockets/index.js +0 -17
- package/dist/websockets/websocket.js +0 -78
- /package/dist/{api/controllers/static/templates/BudibaseApp.svelte → BudibaseApp-Y5NZEDTC.svelte} +0 -0
- /package/dist/{api/controllers/static/templates/app.hbs → app.hbs} +0 -0
- /package/dist/{api/controllers/static/templates/preview.hbs → preview.hbs} +0 -0
|
@@ -4,6 +4,7 @@ import * as external from "./external"
|
|
|
4
4
|
import { isExternalTable } from "../../../integrations/utils"
|
|
5
5
|
import { Ctx } from "@budibase/types"
|
|
6
6
|
import * as utils from "./utils"
|
|
7
|
+
import { gridSocket } from "../../../websockets"
|
|
7
8
|
|
|
8
9
|
function pickApi(tableId: any) {
|
|
9
10
|
if (isExternalTable(tableId)) {
|
|
@@ -12,21 +13,9 @@ function pickApi(tableId: any) {
|
|
|
12
13
|
return internal
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
function getTableId(ctx: any) {
|
|
16
|
-
if (ctx.request.body && ctx.request.body.tableId) {
|
|
17
|
-
return ctx.request.body.tableId
|
|
18
|
-
}
|
|
19
|
-
if (ctx.params && ctx.params.tableId) {
|
|
20
|
-
return ctx.params.tableId
|
|
21
|
-
}
|
|
22
|
-
if (ctx.params && ctx.params.viewName) {
|
|
23
|
-
return ctx.params.viewName
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
16
|
export async function patch(ctx: any): Promise<any> {
|
|
28
17
|
const appId = ctx.appId
|
|
29
|
-
const tableId = getTableId(ctx)
|
|
18
|
+
const tableId = utils.getTableId(ctx)
|
|
30
19
|
const body = ctx.request.body
|
|
31
20
|
// if it doesn't have an _id then its save
|
|
32
21
|
if (body && !body._id) {
|
|
@@ -47,6 +36,7 @@ export async function patch(ctx: any): Promise<any> {
|
|
|
47
36
|
ctx.eventEmitter.emitRow(`row:update`, appId, row, table)
|
|
48
37
|
ctx.message = `${table.name} updated successfully.`
|
|
49
38
|
ctx.body = row
|
|
39
|
+
gridSocket?.emitRowUpdate(ctx, row)
|
|
50
40
|
} catch (err) {
|
|
51
41
|
ctx.throw(400, err)
|
|
52
42
|
}
|
|
@@ -54,13 +44,13 @@ export async function patch(ctx: any): Promise<any> {
|
|
|
54
44
|
|
|
55
45
|
export const save = async (ctx: any) => {
|
|
56
46
|
const appId = ctx.appId
|
|
57
|
-
const tableId = getTableId(ctx)
|
|
47
|
+
const tableId = utils.getTableId(ctx)
|
|
58
48
|
const body = ctx.request.body
|
|
59
49
|
// if it has an ID already then its a patch
|
|
60
50
|
if (body && body._id) {
|
|
61
51
|
return patch(ctx)
|
|
62
52
|
}
|
|
63
|
-
const { row, table } = await quotas.addRow(() =>
|
|
53
|
+
const { row, table, squashed } = await quotas.addRow(() =>
|
|
64
54
|
quotas.addQuery(() => pickApi(tableId).save(ctx), {
|
|
65
55
|
datasourceId: tableId,
|
|
66
56
|
})
|
|
@@ -68,24 +58,26 @@ export const save = async (ctx: any) => {
|
|
|
68
58
|
ctx.status = 200
|
|
69
59
|
ctx.eventEmitter && ctx.eventEmitter.emitRow(`row:save`, appId, row, table)
|
|
70
60
|
ctx.message = `${table.name} saved successfully`
|
|
71
|
-
|
|
61
|
+
// prefer squashed for response
|
|
62
|
+
ctx.body = row || squashed
|
|
63
|
+
gridSocket?.emitRowUpdate(ctx, row || squashed)
|
|
72
64
|
}
|
|
73
65
|
export async function fetchView(ctx: any) {
|
|
74
|
-
const tableId = getTableId(ctx)
|
|
66
|
+
const tableId = utils.getTableId(ctx)
|
|
75
67
|
ctx.body = await quotas.addQuery(() => pickApi(tableId).fetchView(ctx), {
|
|
76
68
|
datasourceId: tableId,
|
|
77
69
|
})
|
|
78
70
|
}
|
|
79
71
|
|
|
80
72
|
export async function fetch(ctx: any) {
|
|
81
|
-
const tableId = getTableId(ctx)
|
|
73
|
+
const tableId = utils.getTableId(ctx)
|
|
82
74
|
ctx.body = await quotas.addQuery(() => pickApi(tableId).fetch(ctx), {
|
|
83
75
|
datasourceId: tableId,
|
|
84
76
|
})
|
|
85
77
|
}
|
|
86
78
|
|
|
87
79
|
export async function find(ctx: any) {
|
|
88
|
-
const tableId = getTableId(ctx)
|
|
80
|
+
const tableId = utils.getTableId(ctx)
|
|
89
81
|
ctx.body = await quotas.addQuery(() => pickApi(tableId).find(ctx), {
|
|
90
82
|
datasourceId: tableId,
|
|
91
83
|
})
|
|
@@ -94,7 +86,7 @@ export async function find(ctx: any) {
|
|
|
94
86
|
export async function destroy(ctx: any) {
|
|
95
87
|
const appId = ctx.appId
|
|
96
88
|
const inputs = ctx.request.body
|
|
97
|
-
const tableId = getTableId(ctx)
|
|
89
|
+
const tableId = utils.getTableId(ctx)
|
|
98
90
|
let response, row
|
|
99
91
|
if (inputs.rows) {
|
|
100
92
|
let { rows } = await quotas.addQuery(
|
|
@@ -107,6 +99,7 @@ export async function destroy(ctx: any) {
|
|
|
107
99
|
response = rows
|
|
108
100
|
for (let row of rows) {
|
|
109
101
|
ctx.eventEmitter && ctx.eventEmitter.emitRow(`row:delete`, appId, row)
|
|
102
|
+
gridSocket?.emitRowDeletion(ctx, row._id)
|
|
110
103
|
}
|
|
111
104
|
} else {
|
|
112
105
|
let resp = await quotas.addQuery(() => pickApi(tableId).destroy(ctx), {
|
|
@@ -116,6 +109,7 @@ export async function destroy(ctx: any) {
|
|
|
116
109
|
response = resp.response
|
|
117
110
|
row = resp.row
|
|
118
111
|
ctx.eventEmitter && ctx.eventEmitter.emitRow(`row:delete`, appId, row)
|
|
112
|
+
gridSocket?.emitRowDeletion(ctx, row._id)
|
|
119
113
|
}
|
|
120
114
|
ctx.status = 200
|
|
121
115
|
// for automations include the row that was deleted
|
|
@@ -124,7 +118,7 @@ export async function destroy(ctx: any) {
|
|
|
124
118
|
}
|
|
125
119
|
|
|
126
120
|
export async function search(ctx: any) {
|
|
127
|
-
const tableId = getTableId(ctx)
|
|
121
|
+
const tableId = utils.getTableId(ctx)
|
|
128
122
|
ctx.status = 200
|
|
129
123
|
ctx.body = await quotas.addQuery(() => pickApi(tableId).search(ctx), {
|
|
130
124
|
datasourceId: tableId,
|
|
@@ -132,7 +126,7 @@ export async function search(ctx: any) {
|
|
|
132
126
|
}
|
|
133
127
|
|
|
134
128
|
export async function validate(ctx: Ctx) {
|
|
135
|
-
const tableId = getTableId(ctx)
|
|
129
|
+
const tableId = utils.getTableId(ctx)
|
|
136
130
|
// external tables are hard to validate currently
|
|
137
131
|
if (isExternalTable(tableId)) {
|
|
138
132
|
ctx.body = { valid: true }
|
|
@@ -145,7 +139,7 @@ export async function validate(ctx: Ctx) {
|
|
|
145
139
|
}
|
|
146
140
|
|
|
147
141
|
export async function fetchEnrichedRow(ctx: any) {
|
|
148
|
-
const tableId = getTableId(ctx)
|
|
142
|
+
const tableId = utils.getTableId(ctx)
|
|
149
143
|
ctx.body = await quotas.addQuery(
|
|
150
144
|
() => pickApi(tableId).fetchEnrichedRow(ctx),
|
|
151
145
|
{
|
|
@@ -155,7 +149,7 @@ export async function fetchEnrichedRow(ctx: any) {
|
|
|
155
149
|
}
|
|
156
150
|
|
|
157
151
|
export const exportRows = async (ctx: any) => {
|
|
158
|
-
const tableId = getTableId(ctx)
|
|
152
|
+
const tableId = utils.getTableId(ctx)
|
|
159
153
|
ctx.body = await quotas.addQuery(() => pickApi(tableId).exportRows(ctx), {
|
|
160
154
|
datasourceId: tableId,
|
|
161
155
|
})
|
|
@@ -415,7 +415,7 @@ export async function exportRows(ctx: UserCtx) {
|
|
|
415
415
|
|
|
416
416
|
result = await outputProcessing(table, response)
|
|
417
417
|
} else if (query) {
|
|
418
|
-
let searchResponse = await
|
|
418
|
+
let searchResponse = await search(ctx)
|
|
419
419
|
result = searchResponse.rows
|
|
420
420
|
}
|
|
421
421
|
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import { FieldTypes, FormulaTypes } from "../../../constants"
|
|
8
8
|
import { context } from "@budibase/backend-core"
|
|
9
9
|
import { Table, Row } from "@budibase/types"
|
|
10
|
+
import * as linkRows from "../../../db/linkedRows"
|
|
10
11
|
const { isEqual } = require("lodash")
|
|
11
12
|
const { cloneDeep } = require("lodash/fp")
|
|
12
13
|
|
|
@@ -166,5 +167,9 @@ export async function finaliseRow(
|
|
|
166
167
|
if (updateFormula) {
|
|
167
168
|
await updateRelatedFormula(table, enrichedRow)
|
|
168
169
|
}
|
|
169
|
-
|
|
170
|
+
const squashed = await linkRows.squashLinksToPrimaryDisplay(
|
|
171
|
+
table,
|
|
172
|
+
enrichedRow
|
|
173
|
+
)
|
|
174
|
+
return { row: enrichedRow, squashed, table }
|
|
170
175
|
}
|
|
@@ -154,3 +154,15 @@ export function cleanExportRows(
|
|
|
154
154
|
|
|
155
155
|
return cleanRows
|
|
156
156
|
}
|
|
157
|
+
|
|
158
|
+
export function getTableId(ctx: any) {
|
|
159
|
+
if (ctx.request.body && ctx.request.body.tableId) {
|
|
160
|
+
return ctx.request.body.tableId
|
|
161
|
+
}
|
|
162
|
+
if (ctx.params && ctx.params.tableId) {
|
|
163
|
+
return ctx.params.tableId
|
|
164
|
+
}
|
|
165
|
+
if (ctx.params && ctx.params.viewName) {
|
|
166
|
+
return ctx.params.viewName
|
|
167
|
+
}
|
|
168
|
+
}
|
|
@@ -134,7 +134,7 @@ export const serveApp = async function (ctx: any) {
|
|
|
134
134
|
? objectStore.getGlobalFileUrl("settings", "logoUrl")
|
|
135
135
|
: "",
|
|
136
136
|
})
|
|
137
|
-
const appHbs = loadHandlebarsFile(`${__dirname}/
|
|
137
|
+
const appHbs = loadHandlebarsFile(`${__dirname}/app.hbs`)
|
|
138
138
|
ctx.body = await processString(appHbs, {
|
|
139
139
|
head,
|
|
140
140
|
body: html,
|
|
@@ -161,7 +161,7 @@ export const serveApp = async function (ctx: any) {
|
|
|
161
161
|
: "",
|
|
162
162
|
})
|
|
163
163
|
|
|
164
|
-
const appHbs = loadHandlebarsFile(`${__dirname}/
|
|
164
|
+
const appHbs = loadHandlebarsFile(`${__dirname}/app.hbs`)
|
|
165
165
|
ctx.body = await processString(appHbs, {
|
|
166
166
|
head,
|
|
167
167
|
body: html,
|
|
@@ -177,7 +177,7 @@ export const serveBuilderPreview = async function (ctx: any) {
|
|
|
177
177
|
|
|
178
178
|
if (!env.isJest()) {
|
|
179
179
|
let appId = context.getAppId()
|
|
180
|
-
const previewHbs = loadHandlebarsFile(`${__dirname}/
|
|
180
|
+
const previewHbs = loadHandlebarsFile(`${__dirname}/preview.hbs`)
|
|
181
181
|
ctx.body = await processString(previewHbs, {
|
|
182
182
|
clientLibPath: objectStore.clientLibraryUrl(appId!, appInfo.version),
|
|
183
183
|
})
|
|
@@ -11,6 +11,7 @@ import { context, events } from "@budibase/backend-core"
|
|
|
11
11
|
import { Table, UserCtx } from "@budibase/types"
|
|
12
12
|
import sdk from "../../../sdk"
|
|
13
13
|
import { jsonFromCsvString } from "../../../utilities/csv"
|
|
14
|
+
import { builderSocket } from "../../../websockets"
|
|
14
15
|
|
|
15
16
|
function pickApi({ tableId, table }: { tableId?: string; table?: Table }) {
|
|
16
17
|
if (table && !tableId) {
|
|
@@ -77,6 +78,7 @@ export async function save(ctx: UserCtx) {
|
|
|
77
78
|
ctx.eventEmitter &&
|
|
78
79
|
ctx.eventEmitter.emitTable(`table:save`, appId, savedTable)
|
|
79
80
|
ctx.body = savedTable
|
|
81
|
+
builderSocket?.emitTableUpdate(ctx, savedTable)
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
export async function destroy(ctx: UserCtx) {
|
|
@@ -89,6 +91,7 @@ export async function destroy(ctx: UserCtx) {
|
|
|
89
91
|
ctx.status = 200
|
|
90
92
|
ctx.table = deletedTable
|
|
91
93
|
ctx.body = { message: `Table ${tableId} deleted.` }
|
|
94
|
+
builderSocket?.emitTableDeletion(ctx, tableId)
|
|
92
95
|
}
|
|
93
96
|
|
|
94
97
|
export async function bulkImport(ctx: UserCtx) {
|
|
@@ -186,11 +186,7 @@ export async function destroy(ctx: any) {
|
|
|
186
186
|
export async function bulkImport(ctx: any) {
|
|
187
187
|
const db = context.getAppDB()
|
|
188
188
|
const table = await sdk.tables.getTable(ctx.params.tableId)
|
|
189
|
-
const { rows } = ctx.request.body
|
|
190
|
-
await handleDataImport(ctx.user, table, rows)
|
|
191
|
-
|
|
192
|
-
// Ensure auto id and other table updates are persisted
|
|
193
|
-
await db.put(table)
|
|
194
|
-
|
|
189
|
+
const { rows, identifierFields } = ctx.request.body
|
|
190
|
+
await handleDataImport(ctx.user, table, rows, identifierFields)
|
|
195
191
|
return table
|
|
196
192
|
}
|
|
@@ -149,7 +149,12 @@ export function importToRows(
|
|
|
149
149
|
return finalData
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
export async function handleDataImport(
|
|
152
|
+
export async function handleDataImport(
|
|
153
|
+
user: any,
|
|
154
|
+
table: any,
|
|
155
|
+
rows: any,
|
|
156
|
+
identifierFields: Array<string> = []
|
|
157
|
+
) {
|
|
153
158
|
const schema: unknown = table.schema
|
|
154
159
|
|
|
155
160
|
if (!rows || !isRows(rows) || !isSchema(schema)) {
|
|
@@ -161,6 +166,32 @@ export async function handleDataImport(user: any, table: any, rows: any) {
|
|
|
161
166
|
|
|
162
167
|
let finalData: any = importToRows(data, table, user)
|
|
163
168
|
|
|
169
|
+
//Set IDs of finalData to match existing row if an update is expected
|
|
170
|
+
if (identifierFields.length > 0) {
|
|
171
|
+
const allDocs = await db.allDocs(
|
|
172
|
+
getRowParams(table._id, null, {
|
|
173
|
+
include_docs: true,
|
|
174
|
+
})
|
|
175
|
+
)
|
|
176
|
+
allDocs.rows
|
|
177
|
+
.map(existingRow => existingRow.doc)
|
|
178
|
+
.forEach((doc: any) => {
|
|
179
|
+
finalData.forEach((finalItem: any) => {
|
|
180
|
+
let match = true
|
|
181
|
+
for (const field of identifierFields) {
|
|
182
|
+
if (finalItem[field] !== doc[field]) {
|
|
183
|
+
match = false
|
|
184
|
+
break
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (match) {
|
|
188
|
+
finalItem._id = doc._id
|
|
189
|
+
finalItem._rev = doc._rev
|
|
190
|
+
}
|
|
191
|
+
})
|
|
192
|
+
})
|
|
193
|
+
}
|
|
194
|
+
|
|
164
195
|
await quotas.addRows(finalData.length, () => db.bulkDocs(finalData), {
|
|
165
196
|
tableId: table._id,
|
|
166
197
|
})
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
View,
|
|
17
17
|
} from "@budibase/types"
|
|
18
18
|
import { cleanExportRows } from "../row/utils"
|
|
19
|
+
import { builderSocket } from "../../../websockets"
|
|
19
20
|
|
|
20
21
|
const { cloneDeep, isEqual } = require("lodash")
|
|
21
22
|
|
|
@@ -48,7 +49,7 @@ export async function save(ctx: Ctx) {
|
|
|
48
49
|
if (!view.meta.schema) {
|
|
49
50
|
view.meta.schema = table.schema
|
|
50
51
|
}
|
|
51
|
-
table.views[viewName] = view.meta
|
|
52
|
+
table.views[viewName] = { ...view.meta, name: viewName }
|
|
52
53
|
if (originalName) {
|
|
53
54
|
delete table.views[originalName]
|
|
54
55
|
existingTable.views[viewName] = existingTable.views[originalName]
|
|
@@ -56,10 +57,8 @@ export async function save(ctx: Ctx) {
|
|
|
56
57
|
await db.put(table)
|
|
57
58
|
await handleViewEvents(existingTable.views[viewName], table.views[viewName])
|
|
58
59
|
|
|
59
|
-
ctx.body =
|
|
60
|
-
|
|
61
|
-
name: viewToSave.name,
|
|
62
|
-
}
|
|
60
|
+
ctx.body = table.views[viewName]
|
|
61
|
+
builderSocket?.emitTableUpdate(ctx, table)
|
|
63
62
|
}
|
|
64
63
|
|
|
65
64
|
export async function calculationEvents(existingView: View, newView: View) {
|
|
@@ -128,6 +127,7 @@ export async function destroy(ctx: Ctx) {
|
|
|
128
127
|
await events.view.deleted(view)
|
|
129
128
|
|
|
130
129
|
ctx.body = view
|
|
130
|
+
builderSocket?.emitTableUpdate(ctx, table)
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
export async function exportView(ctx: Ctx) {
|
|
@@ -6,8 +6,11 @@ import {
|
|
|
6
6
|
WebhookActionType,
|
|
7
7
|
BBContext,
|
|
8
8
|
Automation,
|
|
9
|
+
AutomationActionStepId,
|
|
9
10
|
} from "@budibase/types"
|
|
10
11
|
import sdk from "../../sdk"
|
|
12
|
+
import * as pro from "@budibase/pro"
|
|
13
|
+
|
|
11
14
|
const toJsonSchema = require("to-json-schema")
|
|
12
15
|
const validate = require("jsonschema").validate
|
|
13
16
|
|
|
@@ -78,15 +81,36 @@ export async function trigger(ctx: BBContext) {
|
|
|
78
81
|
if (webhook.action.type === WebhookActionType.AUTOMATION) {
|
|
79
82
|
// trigger with both the pure request and then expand it
|
|
80
83
|
// incase the user has produced a schema to bind to
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
let hasCollectStep = sdk.automations.utils.checkForCollectStep(target)
|
|
85
|
+
|
|
86
|
+
if (hasCollectStep && (await pro.features.isSyncAutomationsEnabled())) {
|
|
87
|
+
const response = await triggers.externalTrigger(
|
|
88
|
+
target,
|
|
89
|
+
{
|
|
90
|
+
body: ctx.request.body,
|
|
91
|
+
...ctx.request.body,
|
|
92
|
+
appId: prodAppId,
|
|
93
|
+
},
|
|
94
|
+
{ getResponses: true }
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
let collectedValue = response.steps.find(
|
|
98
|
+
(step: any) => step.stepId === AutomationActionStepId.COLLECT
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
ctx.status = 200
|
|
102
|
+
ctx.body = collectedValue.outputs
|
|
103
|
+
} else {
|
|
104
|
+
await triggers.externalTrigger(target, {
|
|
105
|
+
body: ctx.request.body,
|
|
106
|
+
...ctx.request.body,
|
|
107
|
+
appId: prodAppId,
|
|
108
|
+
})
|
|
109
|
+
ctx.status = 200
|
|
110
|
+
ctx.body = {
|
|
111
|
+
message: "Webhook trigger fired successfully",
|
|
112
|
+
}
|
|
113
|
+
}
|
|
90
114
|
}
|
|
91
115
|
} catch (err: any) {
|
|
92
116
|
if (err.status === 404) {
|
|
@@ -38,6 +38,11 @@ router
|
|
|
38
38
|
authorized(permissions.BUILDER),
|
|
39
39
|
controller.revertClient
|
|
40
40
|
)
|
|
41
|
+
.post(
|
|
42
|
+
"/api/applications/:appId/sample",
|
|
43
|
+
authorized(permissions.BUILDER),
|
|
44
|
+
controller.addSampleData
|
|
45
|
+
)
|
|
41
46
|
.post(
|
|
42
47
|
"/api/applications/:appId/publish",
|
|
43
48
|
authorized(permissions.BUILDER),
|
package/src/api/routes/static.ts
CHANGED
|
@@ -5,6 +5,7 @@ import authorized from "../../middleware/authorized"
|
|
|
5
5
|
import { permissions } from "@budibase/backend-core"
|
|
6
6
|
import env from "../../environment"
|
|
7
7
|
import { paramResource } from "../../middleware/resourceId"
|
|
8
|
+
import { devClientLibPath } from "../../utilities/fileSystem"
|
|
8
9
|
const { BUILDER, PermissionType, PermissionLevel } = permissions
|
|
9
10
|
|
|
10
11
|
const router: Router = new Router()
|
|
@@ -17,7 +18,8 @@ router.param("file", async (file: any, ctx: any, next: any) => {
|
|
|
17
18
|
}
|
|
18
19
|
// test serves from require
|
|
19
20
|
if (env.isTest()) {
|
|
20
|
-
|
|
21
|
+
const path = devClientLibPath()
|
|
22
|
+
ctx.devPath = path.split(ctx.file)[0]
|
|
21
23
|
} else if (env.isDev()) {
|
|
22
24
|
// Serving the client library from your local dir in dev
|
|
23
25
|
ctx.devPath = budibaseTempDir()
|