@budibase/server 2.6.19-alpha.3 → 2.6.19-alpha.31
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.71388c79.js → index.3dd3d237.js} +435 -428
- package/builder/assets/{index.07382a47.css → index.8469b14c.css} +2 -2
- package/builder/index.html +2 -2
- package/client/manifest.json +5229 -0
- package/dist/automation.js +32436 -0
- package/dist/automation.js.map +7 -0
- package/dist/index.js +44735 -13
- package/dist/index.js.map +7 -0
- package/dist/query.js +24367 -0
- package/dist/query.js.map +7 -0
- package/jest.config.ts +3 -0
- package/nodemon.json +1 -1
- package/package.json +32 -13
- 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 +20 -0
- package/src/api/controllers/row/index.ts +15 -22
- package/src/api/controllers/row/internal.ts +1 -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 +5 -0
- 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/datasource.spec.ts +1 -1
- 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/environment.ts +3 -0
- package/src/integration-test/postgres.spec.ts +47 -4
- 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 +11 -3
- package/src/integrations/microsoftSqlServer.ts +18 -2
- package/src/integrations/mongodb.ts +3 -1
- package/src/integrations/mysql.ts +27 -11
- package/src/integrations/oracle.ts +11 -1
- package/src/integrations/postgres.ts +15 -1
- package/src/integrations/redis.ts +3 -1
- package/src/integrations/s3.ts +3 -1
- package/src/integrations/snowflake.ts +3 -1
- package/src/integrations/tests/googlesheets.spec.ts +41 -9
- package/src/middleware/builder.ts +4 -5
- package/src/sdk/app/automations/index.ts +2 -0
- package/src/sdk/app/automations/utils.ts +7 -0
- 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 +78 -22
- package/src/threads/index.ts +9 -3
- package/src/threads/utils.ts +2 -0
- package/src/utilities/fileSystem/app.ts +1 -1
- package/src/utilities/fileSystem/clientLibrary.ts +8 -3
- package/src/utilities/fileSystem/filesystem.ts +3 -1
- package/src/utilities/redis.ts +19 -2
- package/src/websockets/builder.ts +69 -0
- package/src/websockets/grid.ts +25 -7
- package/src/websockets/index.ts +5 -2
- package/src/websockets/websocket.ts +20 -4
- package/tsconfig.build.json +9 -1
- package/tsconfig.json +1 -14
- 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 -337
- 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 -44
- 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 -484
- package/dist/integrations/index.js +0 -138
- package/dist/integrations/microsoftSqlServer.js +0 -289
- package/dist/integrations/mongodb.js +0 -630
- package/dist/integrations/mysql.js +0 -272
- package/dist/integrations/oracle.js +0 -404
- package/dist/integrations/postgres.js +0 -320
- 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
package/dist/threads/query.js
DELETED
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.execute = void 0;
|
|
16
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
17
|
-
utils_1.default.threadSetup();
|
|
18
|
-
const scriptRunner_1 = __importDefault(require("../utilities/scriptRunner"));
|
|
19
|
-
const integrations_1 = require("../integrations");
|
|
20
|
-
const string_templates_1 = require("@budibase/string-templates");
|
|
21
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
22
|
-
const utils_2 = require("../db/utils");
|
|
23
|
-
const sdk_1 = __importDefault(require("../sdk"));
|
|
24
|
-
const fp_1 = require("lodash/fp");
|
|
25
|
-
const utils_3 = require("../integrations/utils");
|
|
26
|
-
const sql_1 = require("../integrations/queries/sql");
|
|
27
|
-
class QueryRunner {
|
|
28
|
-
constructor(input, flags = { noRecursiveQuery: false }) {
|
|
29
|
-
this.datasource = input.datasource;
|
|
30
|
-
this.queryVerb = input.queryVerb;
|
|
31
|
-
this.fields = input.fields;
|
|
32
|
-
this.parameters = input.parameters;
|
|
33
|
-
this.pagination = input.pagination;
|
|
34
|
-
this.transformer = input.transformer;
|
|
35
|
-
this.queryId = input.queryId;
|
|
36
|
-
this.noRecursiveQuery = flags.noRecursiveQuery;
|
|
37
|
-
this.cachedVariables = [];
|
|
38
|
-
// Additional context items for enrichment
|
|
39
|
-
this.ctx = input.ctx;
|
|
40
|
-
// allows the response from a query to be stored throughout this
|
|
41
|
-
// execution so that if it needs to be re-used for another variable
|
|
42
|
-
// it can be
|
|
43
|
-
this.queryResponse = {};
|
|
44
|
-
this.hasRerun = false;
|
|
45
|
-
this.hasRefreshedOAuth = false;
|
|
46
|
-
this.hasDynamicVariables = false;
|
|
47
|
-
}
|
|
48
|
-
execute() {
|
|
49
|
-
var _a;
|
|
50
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
-
let { datasource, fields, queryVerb, transformer } = this;
|
|
52
|
-
let datasourceClone = (0, fp_1.cloneDeep)(datasource);
|
|
53
|
-
let fieldsClone = (0, fp_1.cloneDeep)(fields);
|
|
54
|
-
const Integration = yield (0, integrations_1.getIntegration)(datasourceClone.source);
|
|
55
|
-
if (!Integration) {
|
|
56
|
-
throw "Integration type does not exist.";
|
|
57
|
-
}
|
|
58
|
-
if (datasourceClone.config.authConfigs) {
|
|
59
|
-
const updatedConfigs = [];
|
|
60
|
-
for (let config of datasourceClone.config.authConfigs) {
|
|
61
|
-
updatedConfigs.push(yield sdk_1.default.queries.enrichContext(config, this.ctx));
|
|
62
|
-
}
|
|
63
|
-
datasourceClone.config.authConfigs = updatedConfigs;
|
|
64
|
-
}
|
|
65
|
-
const integration = new Integration(datasourceClone.config);
|
|
66
|
-
// pre-query, make sure datasource variables are added to parameters
|
|
67
|
-
const parameters = yield this.addDatasourceVariables();
|
|
68
|
-
// Enrich the parameters with the addition context items.
|
|
69
|
-
// 'user' is now a reserved variable key in mapping parameters
|
|
70
|
-
const enrichedParameters = yield sdk_1.default.queries.enrichContext(parameters, this.ctx);
|
|
71
|
-
const enrichedContext = Object.assign(Object.assign({}, enrichedParameters), this.ctx);
|
|
72
|
-
// Parse global headers
|
|
73
|
-
if (datasourceClone.config.defaultHeaders) {
|
|
74
|
-
datasourceClone.config.defaultHeaders = yield sdk_1.default.queries.enrichContext(datasourceClone.config.defaultHeaders, enrichedContext);
|
|
75
|
-
}
|
|
76
|
-
let query;
|
|
77
|
-
// handle SQL injections by interpolating the variables
|
|
78
|
-
if ((0, utils_3.isSQL)(datasourceClone)) {
|
|
79
|
-
query = yield (0, sql_1.interpolateSQL)(fieldsClone, enrichedContext, integration);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
query = yield sdk_1.default.queries.enrichContext(fieldsClone, enrichedContext);
|
|
83
|
-
}
|
|
84
|
-
// Add pagination values for REST queries
|
|
85
|
-
if (this.pagination) {
|
|
86
|
-
query.paginationValues = this.pagination;
|
|
87
|
-
}
|
|
88
|
-
let output = utils_1.default.formatResponse(yield integration[queryVerb](query));
|
|
89
|
-
let rows = output, info = undefined, extra = undefined, pagination = undefined;
|
|
90
|
-
if (utils_1.default.hasExtraData(output)) {
|
|
91
|
-
rows = output.data;
|
|
92
|
-
info = output.info;
|
|
93
|
-
extra = output.extra;
|
|
94
|
-
pagination = output.pagination;
|
|
95
|
-
}
|
|
96
|
-
// transform as required
|
|
97
|
-
if (transformer) {
|
|
98
|
-
const runner = new scriptRunner_1.default(transformer, {
|
|
99
|
-
data: rows,
|
|
100
|
-
params: enrichedParameters,
|
|
101
|
-
});
|
|
102
|
-
rows = runner.execute();
|
|
103
|
-
}
|
|
104
|
-
// if the request fails we retry once, invalidating the cached value
|
|
105
|
-
if (info && info.code >= 400 && !this.hasRerun) {
|
|
106
|
-
if (((_a = this.ctx.user) === null || _a === void 0 ? void 0 : _a.provider) &&
|
|
107
|
-
info.code === 401 &&
|
|
108
|
-
!this.hasRefreshedOAuth) {
|
|
109
|
-
yield this.refreshOAuth2(this.ctx);
|
|
110
|
-
// Attempt to refresh the access token from the provider
|
|
111
|
-
this.hasRefreshedOAuth = true;
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
this.hasRerun = true;
|
|
115
|
-
}
|
|
116
|
-
yield utils_1.default.invalidateDynamicVariables(this.cachedVariables);
|
|
117
|
-
return this.execute();
|
|
118
|
-
}
|
|
119
|
-
// check for undefined response
|
|
120
|
-
if (!rows) {
|
|
121
|
-
rows = [];
|
|
122
|
-
}
|
|
123
|
-
// needs to an array for next step
|
|
124
|
-
if (!Array.isArray(rows)) {
|
|
125
|
-
rows = [rows];
|
|
126
|
-
}
|
|
127
|
-
// map into JSON if just raw primitive here
|
|
128
|
-
if (rows.find((row) => typeof row !== "object")) {
|
|
129
|
-
rows = rows.map((value) => ({ value }));
|
|
130
|
-
}
|
|
131
|
-
// get all the potential fields in the schema
|
|
132
|
-
let keys = rows.flatMap(Object.keys);
|
|
133
|
-
if (integration.end) {
|
|
134
|
-
integration.end();
|
|
135
|
-
}
|
|
136
|
-
return { rows, keys, info, extra, pagination };
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
runAnotherQuery(queryId, parameters) {
|
|
140
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
-
const db = backend_core_1.context.getAppDB();
|
|
142
|
-
const query = yield db.get(queryId);
|
|
143
|
-
const datasource = yield sdk_1.default.datasources.get(query.datasourceId, {
|
|
144
|
-
enriched: true,
|
|
145
|
-
});
|
|
146
|
-
return new QueryRunner({
|
|
147
|
-
datasource,
|
|
148
|
-
queryVerb: query.queryVerb,
|
|
149
|
-
fields: query.fields,
|
|
150
|
-
parameters,
|
|
151
|
-
transformer: query.transformer,
|
|
152
|
-
queryId,
|
|
153
|
-
ctx: this.ctx,
|
|
154
|
-
}, { noRecursiveQuery: true }).execute();
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
refreshOAuth2(ctx) {
|
|
158
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
159
|
-
const { oauth2, providerType, _id } = ctx.user;
|
|
160
|
-
const { configId } = ctx.auth;
|
|
161
|
-
if (!providerType || !(oauth2 === null || oauth2 === void 0 ? void 0 : oauth2.refreshToken)) {
|
|
162
|
-
throw new Error("No refresh token found for authenticated user");
|
|
163
|
-
}
|
|
164
|
-
const resp = yield backend_core_1.auth.refreshOAuthToken(oauth2.refreshToken, providerType, configId);
|
|
165
|
-
// Refresh session flow. Should be in same location as refreshOAuthToken
|
|
166
|
-
// There are several other properties available in 'resp'
|
|
167
|
-
if (!resp.err) {
|
|
168
|
-
const globalUserId = (0, utils_2.getGlobalIDFromUserMetadataID)(_id);
|
|
169
|
-
yield backend_core_1.auth.updateUserOAuth(globalUserId, resp);
|
|
170
|
-
this.ctx.user = yield backend_core_1.cache.user.getUser(globalUserId);
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
// In this event the user may have oAuth issues that
|
|
174
|
-
// could require re-authenticating with their provider.
|
|
175
|
-
let errorMessage = resp.err.data ? resp.err.data : resp.err.toString();
|
|
176
|
-
throw new Error("OAuth2 access token could not be refreshed: " + errorMessage);
|
|
177
|
-
}
|
|
178
|
-
return resp;
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
getDynamicVariable(variable) {
|
|
182
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
183
|
-
let { parameters } = this;
|
|
184
|
-
const queryId = variable.queryId, name = variable.name;
|
|
185
|
-
let value = yield utils_1.default.checkCacheForDynamicVariable(queryId, name);
|
|
186
|
-
if (!value) {
|
|
187
|
-
value = this.queryResponse[queryId]
|
|
188
|
-
? this.queryResponse[queryId]
|
|
189
|
-
: yield this.runAnotherQuery(queryId, parameters);
|
|
190
|
-
// store incase this query is to be called again
|
|
191
|
-
this.queryResponse[queryId] = value;
|
|
192
|
-
yield utils_1.default.storeDynamicVariable(queryId, name, value);
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
this.cachedVariables.push({ queryId, name });
|
|
196
|
-
}
|
|
197
|
-
return value;
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
addDatasourceVariables() {
|
|
201
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
202
|
-
let { datasource, parameters, fields } = this;
|
|
203
|
-
if (!datasource || !datasource.config) {
|
|
204
|
-
return parameters;
|
|
205
|
-
}
|
|
206
|
-
const staticVars = datasource.config.staticVariables || {};
|
|
207
|
-
const dynamicVars = datasource.config.dynamicVariables || [];
|
|
208
|
-
for (let [key, value] of Object.entries(staticVars)) {
|
|
209
|
-
if (!parameters[key]) {
|
|
210
|
-
parameters[key] = value;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
if (!this.noRecursiveQuery) {
|
|
214
|
-
// need to see if this uses any variables
|
|
215
|
-
const stringFields = JSON.stringify(fields);
|
|
216
|
-
const foundVars = dynamicVars.filter((variable) => {
|
|
217
|
-
// don't allow a query to use its own dynamic variable (loop)
|
|
218
|
-
if (variable.queryId === this.queryId) {
|
|
219
|
-
return false;
|
|
220
|
-
}
|
|
221
|
-
// look for {{ variable }} but allow spaces between handlebars
|
|
222
|
-
const regex = new RegExp(`{{[ ]*${variable.name}[ ]*}}`);
|
|
223
|
-
return regex.test(stringFields);
|
|
224
|
-
});
|
|
225
|
-
const dynamics = foundVars.map((dynVar) => this.getDynamicVariable(dynVar));
|
|
226
|
-
const responses = yield Promise.all(dynamics);
|
|
227
|
-
for (let i = 0; i < foundVars.length; i++) {
|
|
228
|
-
const variable = foundVars[i];
|
|
229
|
-
parameters[variable.name] = (0, string_templates_1.processStringSync)(variable.value, {
|
|
230
|
-
data: responses[i].rows,
|
|
231
|
-
info: responses[i].extra,
|
|
232
|
-
}, {
|
|
233
|
-
escapeNewlines: true,
|
|
234
|
-
});
|
|
235
|
-
// make sure its known that this uses dynamic variables in case it fails
|
|
236
|
-
this.hasDynamicVariables = true;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return parameters;
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
function execute(input, callback) {
|
|
244
|
-
const run = () => __awaiter(this, void 0, void 0, function* () {
|
|
245
|
-
const Runner = new QueryRunner(input);
|
|
246
|
-
try {
|
|
247
|
-
const response = yield Runner.execute();
|
|
248
|
-
callback(null, response);
|
|
249
|
-
}
|
|
250
|
-
catch (err) {
|
|
251
|
-
callback(err);
|
|
252
|
-
}
|
|
253
|
-
});
|
|
254
|
-
backend_core_1.context.doInAppContext(input.appId, () => __awaiter(this, void 0, void 0, function* () {
|
|
255
|
-
if (input.environmentVariables) {
|
|
256
|
-
return backend_core_1.context.doInEnvironmentContext(input.environmentVariables, () => {
|
|
257
|
-
return run();
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
return run();
|
|
262
|
-
}
|
|
263
|
-
}));
|
|
264
|
-
}
|
|
265
|
-
exports.execute = execute;
|
package/dist/threads/utils.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.hasExtraData = exports.formatResponse = exports.storeDynamicVariable = exports.invalidateDynamicVariables = exports.checkCacheForDynamicVariable = exports.threadSetup = void 0;
|
|
39
|
-
const environment_1 = __importDefault(require("../environment"));
|
|
40
|
-
const db = __importStar(require("../db"));
|
|
41
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
42
|
-
const VARIABLE_TTL_SECONDS = 3600;
|
|
43
|
-
let client;
|
|
44
|
-
function getClient() {
|
|
45
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
if (!client) {
|
|
47
|
-
client = yield new backend_core_1.redis.Client(backend_core_1.redis.utils.Databases.QUERY_VARS).init();
|
|
48
|
-
}
|
|
49
|
-
return client;
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
process.on("exit", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
-
if (client) {
|
|
54
|
-
yield client.finish();
|
|
55
|
-
}
|
|
56
|
-
}));
|
|
57
|
-
function makeVariableKey(queryId, variable) {
|
|
58
|
-
return `${queryId}${backend_core_1.db.SEPARATOR}${variable}`;
|
|
59
|
-
}
|
|
60
|
-
function threadSetup() {
|
|
61
|
-
// don't run this if not threading
|
|
62
|
-
if (environment_1.default.isTest() || environment_1.default.DISABLE_THREADING || !environment_1.default.isInThread()) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
db.init();
|
|
66
|
-
}
|
|
67
|
-
exports.threadSetup = threadSetup;
|
|
68
|
-
function checkCacheForDynamicVariable(queryId, variable) {
|
|
69
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
const cache = yield getClient();
|
|
71
|
-
return cache.get(makeVariableKey(queryId, variable));
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
exports.checkCacheForDynamicVariable = checkCacheForDynamicVariable;
|
|
75
|
-
function invalidateDynamicVariables(cachedVars) {
|
|
76
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
-
const cache = yield getClient();
|
|
78
|
-
let promises = [];
|
|
79
|
-
for (let variable of cachedVars) {
|
|
80
|
-
promises.push(cache.delete(makeVariableKey(variable.queryId, variable.name)));
|
|
81
|
-
}
|
|
82
|
-
yield Promise.all(promises);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
exports.invalidateDynamicVariables = invalidateDynamicVariables;
|
|
86
|
-
function storeDynamicVariable(queryId, variable, value) {
|
|
87
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
-
const cache = yield getClient();
|
|
89
|
-
yield cache.store(makeVariableKey(queryId, variable), value, VARIABLE_TTL_SECONDS);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
exports.storeDynamicVariable = storeDynamicVariable;
|
|
93
|
-
function formatResponse(resp) {
|
|
94
|
-
if (typeof resp === "string") {
|
|
95
|
-
try {
|
|
96
|
-
resp = JSON.parse(resp);
|
|
97
|
-
}
|
|
98
|
-
catch (err) {
|
|
99
|
-
resp = { response: resp };
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return resp;
|
|
103
|
-
}
|
|
104
|
-
exports.formatResponse = formatResponse;
|
|
105
|
-
function hasExtraData(response) {
|
|
106
|
-
return (typeof response === "object" &&
|
|
107
|
-
!Array.isArray(response) &&
|
|
108
|
-
response &&
|
|
109
|
-
response.data != null &&
|
|
110
|
-
response.info != null);
|
|
111
|
-
}
|
|
112
|
-
exports.hasExtraData = hasExtraData;
|
|
113
|
-
exports.default = {
|
|
114
|
-
hasExtraData,
|
|
115
|
-
formatResponse,
|
|
116
|
-
storeDynamicVariable,
|
|
117
|
-
invalidateDynamicVariables,
|
|
118
|
-
checkCacheForDynamicVariable,
|
|
119
|
-
threadSetup,
|
|
120
|
-
};
|