@budibase/server 1.0.105-alpha.3 → 1.0.105-alpha.30
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/builder/assets/index.0a453ed0.js +1296 -0
- package/builder/assets/{index.ea3718aa.css → index.f602f4de.css} +2 -2
- package/builder/index.html +2 -2
- package/coverage/clover.xml +711 -1678
- package/coverage/coverage-final.json +30 -45
- package/coverage/lcov-report/api/controllers/analytics.js.html +8 -3
- package/coverage/lcov-report/api/controllers/apikeys.js.html +9 -4
- package/coverage/lcov-report/api/controllers/auth.js.html +8 -3
- package/coverage/lcov-report/api/controllers/automation.js.html +8 -3
- package/coverage/lcov-report/api/controllers/backup.js.html +8 -3
- package/coverage/lcov-report/api/controllers/cloud.js.html +8 -3
- package/coverage/lcov-report/api/controllers/component.js.html +8 -3
- package/coverage/lcov-report/api/controllers/datasource.js.html +11 -6
- package/coverage/lcov-report/api/controllers/dev.js.html +8 -3
- package/coverage/lcov-report/api/controllers/index.html +16 -26
- package/coverage/lcov-report/api/controllers/integration.js.html +8 -3
- package/coverage/lcov-report/api/controllers/layout.js.html +8 -3
- package/coverage/lcov-report/api/controllers/metadata.js.html +8 -3
- package/coverage/lcov-report/api/controllers/migrations.js.html +8 -3
- package/coverage/lcov-report/api/controllers/permission.js.html +8 -3
- package/coverage/lcov-report/api/controllers/query/index.html +16 -26
- package/coverage/lcov-report/api/controllers/query/validation.js.html +8 -3
- package/coverage/lcov-report/api/controllers/role.js.html +10 -5
- package/coverage/lcov-report/api/controllers/routing.js.html +9 -4
- package/coverage/lcov-report/api/controllers/row/external.js.html +8 -3
- package/coverage/lcov-report/api/controllers/row/index.html +25 -35
- package/coverage/lcov-report/api/controllers/row/internal.js.html +32 -24
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +21 -16
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +24 -19
- package/coverage/lcov-report/api/controllers/row/utils.js.html +33 -19
- package/coverage/lcov-report/api/controllers/screen.js.html +9 -4
- package/coverage/lcov-report/api/controllers/script.js.html +8 -3
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +55 -50
- package/coverage/lcov-report/api/controllers/table/external.js.html +8 -3
- package/coverage/lcov-report/api/controllers/table/index.html +19 -44
- package/coverage/lcov-report/api/controllers/table/index.js.html +20 -15
- package/coverage/lcov-report/api/controllers/templates.js.html +8 -3
- package/coverage/lcov-report/api/controllers/user.js.html +8 -3
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +8 -3
- package/coverage/lcov-report/api/controllers/view/index.html +8 -3
- package/coverage/lcov-report/api/controllers/view/index.js.html +10 -5
- package/coverage/lcov-report/api/controllers/view/utils.js.html +8 -3
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +8 -3
- package/coverage/lcov-report/api/controllers/webhook.js.html +10 -5
- package/coverage/lcov-report/api/index.html +18 -13
- package/coverage/lcov-report/api/index.js.html +28 -8
- package/coverage/lcov-report/api/routes/analytics.js.html +8 -3
- package/coverage/lcov-report/api/routes/apikeys.js.html +8 -3
- package/coverage/lcov-report/api/routes/auth.js.html +8 -3
- package/coverage/lcov-report/api/routes/automation.js.html +8 -3
- package/coverage/lcov-report/api/routes/backup.js.html +8 -3
- package/coverage/lcov-report/api/routes/cloud.js.html +8 -3
- package/coverage/lcov-report/api/routes/component.js.html +8 -3
- package/coverage/lcov-report/api/routes/datasource.js.html +8 -3
- package/coverage/lcov-report/api/routes/deploy.js.html +8 -3
- package/coverage/lcov-report/api/routes/dev.js.html +9 -4
- package/coverage/lcov-report/api/routes/index.html +13 -68
- package/coverage/lcov-report/api/routes/integration.js.html +8 -3
- package/coverage/lcov-report/api/routes/layout.js.html +8 -3
- package/coverage/lcov-report/api/routes/metadata.js.html +8 -3
- package/coverage/lcov-report/api/routes/migrations.js.html +8 -3
- package/coverage/lcov-report/api/routes/permission.js.html +8 -3
- package/coverage/lcov-report/api/routes/query.js.html +8 -3
- package/coverage/lcov-report/api/routes/role.js.html +8 -3
- package/coverage/lcov-report/api/routes/routing.js.html +8 -3
- package/coverage/lcov-report/api/routes/screen.js.html +8 -3
- package/coverage/lcov-report/api/routes/script.js.html +8 -3
- package/coverage/lcov-report/api/routes/table.js.html +8 -3
- package/coverage/lcov-report/api/routes/templates.js.html +8 -3
- package/coverage/lcov-report/api/routes/user.js.html +8 -3
- package/coverage/lcov-report/api/routes/utils/index.html +8 -3
- package/coverage/lcov-report/api/routes/utils/validators.js.html +8 -3
- package/coverage/lcov-report/api/routes/view.js.html +8 -3
- package/coverage/lcov-report/api/routes/webhook.js.html +8 -3
- package/coverage/lcov-report/automations/actions.js.html +21 -7
- package/coverage/lcov-report/automations/automationUtils.js.html +64 -23
- package/coverage/lcov-report/automations/bullboard.js.html +8 -3
- package/coverage/lcov-report/automations/index.html +27 -37
- package/coverage/lcov-report/automations/index.js.html +8 -3
- package/coverage/lcov-report/automations/steps/bash.js.html +8 -3
- package/coverage/lcov-report/automations/steps/delay.js.html +8 -3
- package/coverage/lcov-report/automations/steps/discord.js.html +8 -3
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +8 -3
- package/coverage/lcov-report/automations/steps/executeScript.js.html +8 -3
- package/coverage/lcov-report/automations/steps/filter.js.html +8 -3
- package/coverage/lcov-report/automations/steps/index.html +31 -41
- package/coverage/lcov-report/automations/steps/integromat.js.html +8 -3
- package/coverage/lcov-report/{api/routes/static.js.html → automations/steps/loop.js.html} +70 -80
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +9 -4
- package/coverage/lcov-report/automations/steps/queryRows.js.html +9 -4
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +8 -3
- package/coverage/lcov-report/automations/steps/serverLog.js.html +8 -3
- package/coverage/lcov-report/automations/steps/slack.js.html +8 -3
- package/coverage/lcov-report/automations/steps/updateRow.js.html +8 -3
- package/coverage/lcov-report/automations/steps/utils.js.html +14 -9
- package/coverage/lcov-report/automations/steps/zapier.js.html +8 -3
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +8 -3
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +8 -3
- package/coverage/lcov-report/automations/triggerInfo/index.html +8 -3
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -3
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +8 -3
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +8 -3
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +8 -3
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +8 -3
- package/coverage/lcov-report/automations/triggers.js.html +16 -11
- package/coverage/lcov-report/block-navigation.js +8 -0
- package/coverage/lcov-report/constants/index.html +12 -7
- package/coverage/lcov-report/constants/index.js.html +54 -31
- package/coverage/lcov-report/constants/layouts.js.html +8 -3
- package/coverage/lcov-report/constants/screens.js.html +8 -3
- package/coverage/lcov-report/db/client.js.html +26 -21
- package/coverage/lcov-report/db/inMemoryView.js.html +8 -3
- package/coverage/lcov-report/db/index.html +8 -3
- package/coverage/lcov-report/db/index.js.html +10 -5
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +20 -15
- package/coverage/lcov-report/db/linkedRows/index.html +8 -3
- package/coverage/lcov-report/db/linkedRows/index.js.html +22 -17
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +12 -7
- package/coverage/lcov-report/db/newid.js.html +11 -6
- package/coverage/lcov-report/db/utils.js.html +83 -78
- package/coverage/lcov-report/events/AutomationEmitter.js.html +14 -9
- package/coverage/lcov-report/events/index.html +8 -3
- package/coverage/lcov-report/events/index.js.html +9 -4
- package/coverage/lcov-report/events/utils.js.html +18 -13
- package/coverage/lcov-report/index.html +124 -119
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +8 -3
- package/coverage/lcov-report/integrations/tests/index.html +8 -3
- package/coverage/lcov-report/middleware/appInfo.js.html +8 -3
- package/coverage/lcov-report/middleware/builder.js.html +8 -3
- package/coverage/lcov-report/middleware/currentapp.js.html +65 -15
- package/coverage/lcov-report/middleware/index.html +25 -50
- package/coverage/lcov-report/middleware/joi-validator.js.html +9 -4
- package/coverage/lcov-report/middleware/publicApi.js.html +8 -3
- package/coverage/lcov-report/middleware/resourceId.js.html +8 -3
- package/coverage/lcov-report/middleware/selfhost.js.html +9 -4
- package/coverage/lcov-report/middleware/utils.js.html +8 -3
- package/coverage/lcov-report/sorter.js +26 -0
- package/coverage/lcov-report/threads/automation.js.html +581 -90
- package/coverage/lcov-report/threads/index.html +27 -37
- package/coverage/lcov-report/threads/query.js.html +10 -5
- package/coverage/lcov-report/threads/utils.js.html +11 -6
- package/coverage/lcov-report/utilities/bcrypt.js.html +8 -3
- package/coverage/lcov-report/utilities/budibaseDir.js.html +8 -3
- package/coverage/lcov-report/utilities/centralPath.js.html +8 -3
- package/coverage/lcov-report/utilities/csvParser.js.html +10 -5
- package/coverage/lcov-report/utilities/global.js.html +9 -4
- package/coverage/lcov-report/utilities/index.html +8 -3
- package/coverage/lcov-report/utilities/index.js.html +11 -6
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +32 -9
- package/coverage/lcov-report/utilities/queue/index.html +12 -7
- package/coverage/lcov-report/utilities/routing/index.html +8 -3
- package/coverage/lcov-report/utilities/routing/index.js.html +8 -3
- package/coverage/lcov-report/utilities/rowProcessor/index.html +8 -3
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +46 -41
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +18 -13
- package/coverage/lcov-report/utilities/scriptRunner.js.html +8 -3
- package/coverage/lcov-report/utilities/security.js.html +9 -4
- package/coverage/lcov-report/utilities/statusCodes.js.html +8 -3
- package/coverage/lcov-report/utilities/usageQuota/index.html +24 -34
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +45 -40
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +8 -3
- package/coverage/lcov-report/utilities/users.js.html +8 -3
- package/coverage/lcov-report/utilities/workerRequests.js.html +9 -4
- package/coverage/lcov.info +1141 -2837
- package/dist/api/controllers/application.js +138 -70
- package/dist/api/controllers/deploy/index.js +64 -35
- package/dist/api/controllers/public/applications.js +29 -9
- package/dist/api/controllers/public/queries.js +27 -7
- package/dist/api/controllers/public/rows.js +32 -12
- package/dist/api/controllers/public/tables.js +2 -2
- package/dist/api/controllers/public/users.js +8 -8
- package/dist/api/controllers/public/utils.js +1 -1
- package/dist/api/controllers/query/import/index.js +3 -3
- package/dist/api/controllers/query/index.js +57 -44
- package/dist/api/controllers/row/ExternalRequest.js +27 -27
- package/dist/api/controllers/row/index.js +83 -60
- package/dist/api/controllers/row/internal.js +2 -1
- package/dist/api/controllers/row/utils.js +2 -1
- package/dist/api/controllers/static/templates/BudibaseApp.svelte +3 -0
- package/dist/api/controllers/table/bulkFormula.js +2 -1
- package/dist/api/controllers/table/internal.js +40 -34
- package/dist/api/controllers/table/utils.js +271 -229
- package/dist/api/index.js +5 -0
- package/dist/api/routes/application.js +39 -13
- package/dist/api/routes/index.js +61 -56
- package/dist/api/routes/public/index.js +6 -9
- package/dist/api/routes/public/queries.js +1 -1
- package/dist/api/routes/public/rows.js +1 -1
- package/dist/api/routes/public/tables.js +3 -3
- package/dist/api/routes/public/users.js +1 -1
- package/dist/api/routes/row.js +43 -17
- package/dist/api/routes/static.js +40 -13
- package/dist/api/routes/tests/utilities/TestFunctions.js +62 -26
- package/dist/app.js +11 -4
- package/dist/automations/actions.js +3 -0
- package/dist/automations/automationUtils.js +10 -0
- package/dist/automations/steps/createRow.js +12 -12
- package/dist/automations/steps/deleteRow.js +13 -16
- package/dist/automations/steps/loop.js +51 -0
- package/dist/automations/tests/utilities/index.js +0 -2
- package/dist/automations/utils.js +187 -132
- package/dist/constants/index.js +5 -0
- package/dist/environment.js +1 -2
- package/dist/integrations/base/sql.js +2 -2
- package/dist/integrations/base/sqlTable.js +2 -2
- package/dist/integrations/googlesheets.js +1 -1
- package/dist/integrations/microsoftSqlServer.js +8 -8
- package/dist/integrations/mysql.js +9 -9
- package/dist/integrations/oracle.js +7 -7
- package/dist/integrations/postgres.js +7 -7
- package/dist/integrations/rest.js +1 -1
- package/dist/middleware/authorized.js +51 -51
- package/dist/middleware/currentapp.js +15 -1
- package/dist/migrations/functions/appUrls.js +1 -1
- package/dist/migrations/functions/developerQuota.js +49 -0
- package/dist/migrations/functions/publishedAppsQuota.js +47 -0
- package/dist/migrations/functions/quotas1.js +6 -2
- package/dist/migrations/functions/usageQuotas/index.js +0 -4
- package/dist/migrations/functions/usageQuotas/syncApps.js +4 -7
- package/dist/migrations/functions/usageQuotas/syncDevelopers.js +24 -0
- package/dist/migrations/functions/usageQuotas/syncPublishedApps.js +26 -0
- package/dist/migrations/functions/usageQuotas/syncRows.js +5 -8
- package/dist/migrations/index.js +17 -1
- package/dist/package.json +11 -8
- package/dist/threads/automation.js +149 -27
- package/dist/threads/index.js +35 -8
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/utilities/queue/inMemoryQueue.js +6 -1
- package/nodemon.json +1 -1
- package/package.json +12 -9
- package/scripts/dev/manage.js +2 -0
- package/src/api/controllers/{application.js → application.ts} +103 -44
- package/src/api/controllers/deploy/{index.js → index.ts} +45 -28
- package/src/api/controllers/public/applications.ts +2 -2
- package/src/api/controllers/public/queries.ts +1 -1
- package/src/api/controllers/public/rows.ts +1 -1
- package/src/api/controllers/query/{index.js → index.ts} +51 -48
- package/src/api/controllers/row/ExternalRequest.ts +1 -1
- package/src/api/controllers/row/{index.js → index.ts} +24 -17
- package/src/api/controllers/row/internal.js +2 -1
- package/src/api/controllers/row/utils.js +4 -1
- package/src/api/controllers/static/templates/BudibaseApp.svelte +3 -0
- package/src/api/controllers/table/bulkFormula.js +1 -1
- package/src/api/controllers/table/{internal.js → internal.ts} +27 -24
- package/src/api/controllers/table/{utils.js → utils.ts} +86 -69
- package/src/api/index.js +5 -0
- package/src/api/routes/{application.js → application.ts} +8 -14
- package/src/api/routes/index.ts +60 -0
- package/src/api/routes/public/index.ts +1 -4
- package/src/api/routes/{row.js → row.ts} +7 -15
- package/src/api/routes/{static.js → static.ts} +11 -11
- package/src/api/routes/tests/utilities/{TestFunctions.js → TestFunctions.ts} +42 -25
- package/src/app.ts +1 -2
- package/src/automations/actions.js +3 -0
- package/src/automations/automationUtils.js +12 -0
- package/src/automations/steps/{createRow.js → createRow.ts} +9 -15
- package/src/automations/steps/{deleteRow.js → deleteRow.ts} +10 -16
- package/src/automations/steps/loop.js +50 -0
- package/src/automations/tests/automation.spec.js +0 -1
- package/src/automations/tests/{createRow.spec.js → createRow.spec.ts} +4 -15
- package/src/automations/tests/{deleteRow.spec.js → deleteRow.spec.ts} +3 -5
- package/src/automations/tests/utilities/index.js +0 -2
- package/src/automations/{utils.js → utils.ts} +39 -27
- package/src/constants/index.js +6 -0
- package/src/environment.js +1 -2
- package/src/middleware/{authorized.js → authorized.ts} +20 -14
- package/src/middleware/currentapp.js +16 -1
- package/src/migrations/functions/developerQuota.ts +15 -0
- package/src/migrations/functions/publishedAppsQuota.ts +13 -0
- package/src/migrations/functions/tests/quotas1.spec.js +0 -2
- package/src/migrations/functions/usageQuotas/index.ts +0 -5
- package/src/migrations/functions/usageQuotas/syncApps.ts +3 -6
- package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
- package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
- package/src/migrations/functions/usageQuotas/syncRows.ts +3 -6
- package/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts +32 -0
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +38 -0
- package/src/migrations/index.ts +13 -1
- package/src/module.d.ts +4 -0
- package/src/threads/automation.js +196 -34
- package/src/threads/{index.js → index.ts} +14 -12
- package/src/utilities/queue/inMemoryQueue.js +7 -1
- package/tsconfig.build.json +10 -0
- package/tsconfig.json +2 -2
- package/builder/assets/index.5778ea01.js +0 -1291
- package/coverage/lcov-report/api/controllers/application.js.html +0 -1430
- package/coverage/lcov-report/api/controllers/query/index.js.html +0 -713
- package/coverage/lcov-report/api/controllers/row/index.js.html +0 -524
- package/coverage/lcov-report/api/controllers/table/internal.js.html +0 -548
- package/coverage/lcov-report/api/controllers/table/utils.js.html +0 -1331
- package/coverage/lcov-report/api/routes/application.js.html +0 -179
- package/coverage/lcov-report/api/routes/index.js.html +0 -266
- package/coverage/lcov-report/api/routes/row.js.html +0 -908
- package/coverage/lcov-report/automations/steps/createRow.js.html +0 -380
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +0 -347
- package/coverage/lcov-report/automations/utils.js.html +0 -662
- package/coverage/lcov-report/middleware/authorized.js.html +0 -458
- package/coverage/lcov-report/middleware/usageQuota.js.html +0 -572
- package/coverage/lcov-report/threads/index.js.html +0 -278
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
- package/dist/middleware/usageQuota.js +0 -154
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/utilities/usageQuota/index.js +0 -86
- package/src/api/routes/index.js +0 -62
- package/src/middleware/tests/usageQuota.spec.js +0 -134
- package/src/middleware/usageQuota.js +0 -164
- package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
- package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
- package/src/utilities/usageQuota/index.js +0 -93
|
@@ -1,31 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import * as rowController from "../../../controllers/row"
|
|
2
|
+
import * as appController from "../../../controllers/application"
|
|
3
|
+
import { AppStatus } from "../../../../db/utils"
|
|
4
|
+
import { BUILTIN_ROLE_IDS } from "@budibase/backend-core/roles"
|
|
5
|
+
import { TENANT_ID } from "../../../../tests/utilities/structures"
|
|
6
|
+
import { getAppDB, doInAppContext } from "@budibase/backend-core/context"
|
|
7
|
+
import * as env from "../../../../environment"
|
|
8
|
+
|
|
9
|
+
class Request {
|
|
10
|
+
appId: any
|
|
11
|
+
params: any
|
|
12
|
+
request: any
|
|
13
|
+
body: any
|
|
14
|
+
|
|
15
|
+
constructor(appId: any, params: any) {
|
|
16
|
+
this.appId = appId
|
|
17
|
+
this.params = params
|
|
18
|
+
this.request = {}
|
|
19
|
+
}
|
|
13
20
|
}
|
|
14
21
|
|
|
15
|
-
function runRequest(appId, controlFunc, request) {
|
|
22
|
+
function runRequest(appId: any, controlFunc: any, request?: any) {
|
|
16
23
|
return doInAppContext(appId, async () => {
|
|
17
24
|
return controlFunc(request)
|
|
18
25
|
})
|
|
19
26
|
}
|
|
20
27
|
|
|
21
|
-
|
|
28
|
+
export const getAllTableRows = async (config: any) => {
|
|
22
29
|
const req = new Request(config.appId, { tableId: config.table._id })
|
|
23
30
|
await runRequest(config.appId, rowController.fetch, req)
|
|
24
31
|
return req.body
|
|
25
32
|
}
|
|
26
33
|
|
|
27
|
-
|
|
28
|
-
const req = { query: { status: AppStatus.DEV }, user: { tenantId } }
|
|
34
|
+
export const clearAllApps = async (tenantId = TENANT_ID) => {
|
|
35
|
+
const req: any = { query: { status: AppStatus.DEV }, user: { tenantId } }
|
|
29
36
|
await appController.fetch(req)
|
|
30
37
|
const apps = req.body
|
|
31
38
|
if (!apps || apps.length <= 0) {
|
|
@@ -34,11 +41,11 @@ exports.clearAllApps = async (tenantId = TENANT_ID) => {
|
|
|
34
41
|
for (let app of apps) {
|
|
35
42
|
const { appId } = app
|
|
36
43
|
const req = new Request(null, { appId })
|
|
37
|
-
await runRequest(appId, appController.
|
|
44
|
+
await runRequest(appId, appController.destroy, req)
|
|
38
45
|
}
|
|
39
46
|
}
|
|
40
47
|
|
|
41
|
-
|
|
48
|
+
export const clearAllAutomations = async (config: any) => {
|
|
42
49
|
const automations = await config.getAllAutomations()
|
|
43
50
|
for (let auto of automations) {
|
|
44
51
|
await doInAppContext(config.appId, async () => {
|
|
@@ -47,7 +54,12 @@ exports.clearAllAutomations = async config => {
|
|
|
47
54
|
}
|
|
48
55
|
}
|
|
49
56
|
|
|
50
|
-
|
|
57
|
+
export const createRequest = (
|
|
58
|
+
request: any,
|
|
59
|
+
method: any,
|
|
60
|
+
url: any,
|
|
61
|
+
body: any
|
|
62
|
+
) => {
|
|
51
63
|
let req
|
|
52
64
|
|
|
53
65
|
if (method === "POST") req = request.post(url).send(body)
|
|
@@ -59,7 +71,12 @@ exports.createRequest = (request, method, url, body) => {
|
|
|
59
71
|
return req
|
|
60
72
|
}
|
|
61
73
|
|
|
62
|
-
|
|
74
|
+
export const checkBuilderEndpoint = async ({
|
|
75
|
+
config,
|
|
76
|
+
method,
|
|
77
|
+
url,
|
|
78
|
+
body,
|
|
79
|
+
}: any) => {
|
|
63
80
|
const headers = await config.login({
|
|
64
81
|
userId: "us_fail",
|
|
65
82
|
builder: false,
|
|
@@ -71,14 +88,14 @@ exports.checkBuilderEndpoint = async ({ config, method, url, body }) => {
|
|
|
71
88
|
.expect(403)
|
|
72
89
|
}
|
|
73
90
|
|
|
74
|
-
|
|
91
|
+
export const checkPermissionsEndpoint = async ({
|
|
75
92
|
config,
|
|
76
93
|
method,
|
|
77
94
|
url,
|
|
78
95
|
body,
|
|
79
96
|
passRole,
|
|
80
97
|
failRole,
|
|
81
|
-
}) => {
|
|
98
|
+
}: any) => {
|
|
82
99
|
const passHeader = await config.login({
|
|
83
100
|
roleId: passRole,
|
|
84
101
|
prodApp: true,
|
|
@@ -106,11 +123,11 @@ exports.checkPermissionsEndpoint = async ({
|
|
|
106
123
|
.expect(403)
|
|
107
124
|
}
|
|
108
125
|
|
|
109
|
-
|
|
126
|
+
export const getDB = () => {
|
|
110
127
|
return getAppDB()
|
|
111
128
|
}
|
|
112
129
|
|
|
113
|
-
|
|
130
|
+
export const testAutomation = async (config: any, automation: any) => {
|
|
114
131
|
return runRequest(automation.appId, async () => {
|
|
115
132
|
return await config.request
|
|
116
133
|
.post(`/api/automations/${automation._id}/test`)
|
|
@@ -126,7 +143,7 @@ exports.testAutomation = async (config, automation) => {
|
|
|
126
143
|
})
|
|
127
144
|
}
|
|
128
145
|
|
|
129
|
-
|
|
146
|
+
export const runInProd = async (func: any) => {
|
|
130
147
|
const nodeEnv = env.NODE_ENV
|
|
131
148
|
const workerId = env.JEST_WORKER_ID
|
|
132
149
|
env._set("NODE_ENV", "PRODUCTION")
|
package/src/app.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// need to load environment first
|
|
2
2
|
import { ExtendableContext } from "koa"
|
|
3
|
-
|
|
4
3
|
import * as env from "./environment"
|
|
5
4
|
const CouchDB = require("./db")
|
|
6
5
|
require("@budibase/backend-core").init(CouchDB)
|
|
@@ -15,7 +14,7 @@ const automations = require("./automations/index")
|
|
|
15
14
|
const Sentry = require("@sentry/node")
|
|
16
15
|
const fileSystem = require("./utilities/fileSystem")
|
|
17
16
|
const bullboard = require("./automations/bullboard")
|
|
18
|
-
|
|
17
|
+
import redis from "./utilities/redis"
|
|
19
18
|
import * as migrations from "./migrations"
|
|
20
19
|
|
|
21
20
|
const app = new Koa()
|
|
@@ -13,6 +13,7 @@ const integromat = require("./steps/integromat")
|
|
|
13
13
|
let filter = require("./steps/filter")
|
|
14
14
|
let delay = require("./steps/delay")
|
|
15
15
|
let queryRow = require("./steps/queryRows")
|
|
16
|
+
let loop = require("./steps/loop")
|
|
16
17
|
const env = require("../environment")
|
|
17
18
|
|
|
18
19
|
const ACTION_IMPLS = {
|
|
@@ -27,6 +28,7 @@ const ACTION_IMPLS = {
|
|
|
27
28
|
DELAY: delay.run,
|
|
28
29
|
FILTER: filter.run,
|
|
29
30
|
QUERY_ROWS: queryRow.run,
|
|
31
|
+
LOOP: loop.run,
|
|
30
32
|
// these used to be lowercase step IDs, maintain for backwards compat
|
|
31
33
|
discord: discord.run,
|
|
32
34
|
slack: slack.run,
|
|
@@ -45,6 +47,7 @@ const ACTION_DEFINITIONS = {
|
|
|
45
47
|
DELAY: delay.definition,
|
|
46
48
|
FILTER: filter.definition,
|
|
47
49
|
QUERY_ROWS: queryRow.definition,
|
|
50
|
+
LOOP: loop.definition,
|
|
48
51
|
// these used to be lowercase step IDs, maintain for backwards compat
|
|
49
52
|
discord: discord.definition,
|
|
50
53
|
slack: slack.definition,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const { getTable } = require("../api/controllers/table/utils")
|
|
2
|
+
const { findHBSBlocks } = require("@budibase/string-templates")
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* When values are input to the system generally they will be of type string as this is required for template strings.
|
|
@@ -74,3 +75,14 @@ exports.getError = err => {
|
|
|
74
75
|
}
|
|
75
76
|
return typeof err !== "string" ? err.toString() : err
|
|
76
77
|
}
|
|
78
|
+
|
|
79
|
+
exports.substituteLoopStep = (hbsString, substitute) => {
|
|
80
|
+
let blocks = findHBSBlocks(hbsString)
|
|
81
|
+
for (let block of blocks) {
|
|
82
|
+
let oldBlock = block
|
|
83
|
+
block = block.replace(/loop/, substitute)
|
|
84
|
+
hbsString = hbsString.replace(new RegExp(oldBlock, "g"), block)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return hbsString
|
|
88
|
+
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const { buildCtx } = require("./utils")
|
|
1
|
+
import { save } from "../../api/controllers/row"
|
|
2
|
+
import { cleanUpRow, getError } from "../automationUtils"
|
|
3
|
+
import { buildCtx } from "./utils"
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
export const definition = {
|
|
7
6
|
name: "Create Row",
|
|
8
7
|
tagline: "Create a {{inputs.enriched.table.name}} row",
|
|
9
8
|
icon: "TableRowAddBottom",
|
|
@@ -59,7 +58,7 @@ exports.definition = {
|
|
|
59
58
|
},
|
|
60
59
|
}
|
|
61
60
|
|
|
62
|
-
|
|
61
|
+
export async function run({ inputs, appId, emitter }: any) {
|
|
63
62
|
if (inputs.row == null || inputs.row.tableId == null) {
|
|
64
63
|
return {
|
|
65
64
|
success: false,
|
|
@@ -69,7 +68,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
|
|
|
69
68
|
}
|
|
70
69
|
}
|
|
71
70
|
// have to clean up the row, remove the table from it
|
|
72
|
-
const ctx = buildCtx(appId, emitter, {
|
|
71
|
+
const ctx: any = buildCtx(appId, emitter, {
|
|
73
72
|
body: inputs.row,
|
|
74
73
|
params: {
|
|
75
74
|
tableId: inputs.row.tableId,
|
|
@@ -77,13 +76,8 @@ exports.run = async function ({ inputs, appId, emitter }) {
|
|
|
77
76
|
})
|
|
78
77
|
|
|
79
78
|
try {
|
|
80
|
-
inputs.row = await
|
|
81
|
-
|
|
82
|
-
inputs.row
|
|
83
|
-
)
|
|
84
|
-
await usage.update(usage.Properties.ROW, 1, { dryRun: true })
|
|
85
|
-
await rowController.save(ctx)
|
|
86
|
-
await usage.update(usage.Properties.ROW, 1)
|
|
79
|
+
inputs.row = await cleanUpRow(inputs.row.tableId, inputs.row)
|
|
80
|
+
await save(ctx)
|
|
87
81
|
return {
|
|
88
82
|
row: inputs.row,
|
|
89
83
|
response: ctx.body,
|
|
@@ -94,7 +88,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
|
|
|
94
88
|
} catch (err) {
|
|
95
89
|
return {
|
|
96
90
|
success: false,
|
|
97
|
-
response:
|
|
91
|
+
response: getError(err),
|
|
98
92
|
}
|
|
99
93
|
}
|
|
100
94
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const automationUtils = require("../automationUtils")
|
|
1
|
+
import { destroy } from "../../api/controllers/row"
|
|
2
|
+
import { buildCtx } from "./utils"
|
|
3
|
+
import { getError } from "../automationUtils"
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
export const definition = {
|
|
7
6
|
description: "Delete a row from your database",
|
|
8
7
|
icon: "TableRowRemoveCenter",
|
|
9
8
|
name: "Delete Row",
|
|
@@ -24,12 +23,8 @@ exports.definition = {
|
|
|
24
23
|
type: "string",
|
|
25
24
|
title: "Row ID",
|
|
26
25
|
},
|
|
27
|
-
revision: {
|
|
28
|
-
type: "string",
|
|
29
|
-
title: "Row Revision",
|
|
30
|
-
},
|
|
31
26
|
},
|
|
32
|
-
required: ["tableId", "id"
|
|
27
|
+
required: ["tableId", "id"],
|
|
33
28
|
},
|
|
34
29
|
outputs: {
|
|
35
30
|
properties: {
|
|
@@ -52,8 +47,8 @@ exports.definition = {
|
|
|
52
47
|
},
|
|
53
48
|
}
|
|
54
49
|
|
|
55
|
-
|
|
56
|
-
if (inputs.id == null
|
|
50
|
+
export async function run({ inputs, appId, emitter }: any) {
|
|
51
|
+
if (inputs.id == null) {
|
|
57
52
|
return {
|
|
58
53
|
success: false,
|
|
59
54
|
response: {
|
|
@@ -62,7 +57,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
|
|
|
62
57
|
}
|
|
63
58
|
}
|
|
64
59
|
|
|
65
|
-
let ctx = buildCtx(appId, emitter, {
|
|
60
|
+
let ctx: any = buildCtx(appId, emitter, {
|
|
66
61
|
body: {
|
|
67
62
|
_id: inputs.id,
|
|
68
63
|
_rev: inputs.revision,
|
|
@@ -73,8 +68,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
|
|
|
73
68
|
})
|
|
74
69
|
|
|
75
70
|
try {
|
|
76
|
-
await
|
|
77
|
-
await rowController.destroy(ctx)
|
|
71
|
+
await destroy(ctx)
|
|
78
72
|
return {
|
|
79
73
|
response: ctx.body,
|
|
80
74
|
row: ctx.row,
|
|
@@ -83,7 +77,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
|
|
|
83
77
|
} catch (err) {
|
|
84
78
|
return {
|
|
85
79
|
success: false,
|
|
86
|
-
response:
|
|
80
|
+
response: getError(err),
|
|
87
81
|
}
|
|
88
82
|
}
|
|
89
83
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
exports.definition = {
|
|
2
|
+
name: "Looping",
|
|
3
|
+
icon: "Reuse",
|
|
4
|
+
tagline: "Loop the block",
|
|
5
|
+
description: "Loop",
|
|
6
|
+
stepId: "LOOP",
|
|
7
|
+
internal: true,
|
|
8
|
+
inputs: {},
|
|
9
|
+
schema: {
|
|
10
|
+
inputs: {
|
|
11
|
+
properties: {
|
|
12
|
+
option: {
|
|
13
|
+
customType: "loopOption",
|
|
14
|
+
title: "Input type",
|
|
15
|
+
},
|
|
16
|
+
binding: {
|
|
17
|
+
type: "string",
|
|
18
|
+
title: "Binding / Value",
|
|
19
|
+
},
|
|
20
|
+
iterations: {
|
|
21
|
+
type: "number",
|
|
22
|
+
title: "Max loop iterations",
|
|
23
|
+
},
|
|
24
|
+
failure: {
|
|
25
|
+
type: "string",
|
|
26
|
+
title: "Failure Condition",
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
required: ["type", "value", "iterations", "failure"],
|
|
30
|
+
},
|
|
31
|
+
outputs: {
|
|
32
|
+
properties: {
|
|
33
|
+
items: {
|
|
34
|
+
customType: "item",
|
|
35
|
+
description: "The item currently being executed",
|
|
36
|
+
},
|
|
37
|
+
success: {
|
|
38
|
+
type: "boolean",
|
|
39
|
+
description: "Whether the message loop was successfully",
|
|
40
|
+
},
|
|
41
|
+
iterations: {
|
|
42
|
+
type: "number",
|
|
43
|
+
descriptions: "The amount of times the block ran",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
required: ["success", "items", "iterations"],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
type: "LOGIC",
|
|
50
|
+
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const usageQuota = require("../../utilities/usageQuota")
|
|
4
|
-
const setup = require("./utilities")
|
|
1
|
+
import * as setup from "./utilities"
|
|
5
2
|
|
|
6
3
|
describe("test the create row action", () => {
|
|
7
|
-
let table
|
|
4
|
+
let table: any
|
|
5
|
+
let row: any
|
|
8
6
|
let config = setup.getConfig()
|
|
9
7
|
|
|
10
8
|
beforeEach(async () => {
|
|
@@ -36,20 +34,11 @@ describe("test the create row action", () => {
|
|
|
36
34
|
row: {
|
|
37
35
|
tableId: "invalid",
|
|
38
36
|
invalid: "invalid",
|
|
39
|
-
}
|
|
37
|
+
},
|
|
40
38
|
})
|
|
41
39
|
expect(res.success).toEqual(false)
|
|
42
40
|
})
|
|
43
41
|
|
|
44
|
-
it("check usage quota attempts", async () => {
|
|
45
|
-
await setup.runInProd(async () => {
|
|
46
|
-
await setup.runStep(setup.actions.CREATE_ROW.stepId, {
|
|
47
|
-
row
|
|
48
|
-
})
|
|
49
|
-
expect(usageQuota.update).toHaveBeenCalledWith("rows", 1)
|
|
50
|
-
})
|
|
51
|
-
})
|
|
52
|
-
|
|
53
42
|
it("should check invalid inputs return an error", async () => {
|
|
54
43
|
const res = await setup.runStep(setup.actions.CREATE_ROW.stepId, {})
|
|
55
44
|
expect(res.success).toEqual(false)
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
jest.mock("../../utilities/usageQuota")
|
|
2
|
-
|
|
3
|
-
const usageQuota = require("../../utilities/usageQuota")
|
|
4
1
|
const setup = require("./utilities")
|
|
5
2
|
|
|
6
3
|
describe("test the delete row action", () => {
|
|
7
|
-
let table
|
|
4
|
+
let table: any
|
|
5
|
+
let row: any
|
|
6
|
+
let inputs: any
|
|
8
7
|
let config = setup.getConfig()
|
|
9
8
|
|
|
10
9
|
beforeEach(async () => {
|
|
@@ -37,7 +36,6 @@ describe("test the delete row action", () => {
|
|
|
37
36
|
it("check usage quota attempts", async () => {
|
|
38
37
|
await setup.runInProd(async () => {
|
|
39
38
|
await setup.runStep(setup.actions.DELETE_ROW.stepId, inputs)
|
|
40
|
-
expect(usageQuota.update).toHaveBeenCalledWith("rows", -1)
|
|
41
39
|
})
|
|
42
40
|
})
|
|
43
41
|
|
|
@@ -18,7 +18,6 @@ exports.afterAll = () => {
|
|
|
18
18
|
|
|
19
19
|
exports.runInProd = async fn => {
|
|
20
20
|
env._set("NODE_ENV", "production")
|
|
21
|
-
env._set("USE_QUOTAS", 1)
|
|
22
21
|
let error
|
|
23
22
|
try {
|
|
24
23
|
await fn()
|
|
@@ -26,7 +25,6 @@ exports.runInProd = async fn => {
|
|
|
26
25
|
error = err
|
|
27
26
|
}
|
|
28
27
|
env._set("NODE_ENV", "jest")
|
|
29
|
-
env._set("USE_QUOTAS", null)
|
|
30
28
|
if (error) {
|
|
31
29
|
throw error
|
|
32
30
|
}
|
|
@@ -1,26 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { Thread, ThreadType } from "../threads"
|
|
2
|
+
import { definitions } from "./triggerInfo"
|
|
3
|
+
import * as webhooks from "../api/controllers/webhook"
|
|
4
|
+
import CouchDB from "../db"
|
|
5
|
+
import { queue } from "./bullboard"
|
|
6
|
+
import newid from "../db/newid"
|
|
7
|
+
import { updateEntityMetadata } from "../utilities"
|
|
8
|
+
import { MetadataTypes, WebhookType } from "../constants"
|
|
9
|
+
import { getProdAppID } from "@budibase/backend-core/db"
|
|
10
|
+
import { cloneDeep } from "lodash/fp"
|
|
11
|
+
import { getAppDB, getAppId } from "@budibase/backend-core/context"
|
|
12
|
+
import { tenancy } from "@budibase/backend-core"
|
|
13
|
+
import { quotas } from "@budibase/pro"
|
|
12
14
|
|
|
13
15
|
const WH_STEP_ID = definitions.WEBHOOK.stepId
|
|
14
16
|
const CRON_STEP_ID = definitions.CRON.stepId
|
|
15
17
|
const Runner = new Thread(ThreadType.AUTOMATION)
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
export async function processEvent(job: any) {
|
|
18
20
|
try {
|
|
19
|
-
// need to actually await these so that an error can be captured properly
|
|
20
21
|
console.log(
|
|
21
22
|
`${job.data.automation.appId} automation ${job.data.automation._id} running`
|
|
22
23
|
)
|
|
23
|
-
|
|
24
|
+
// need to actually await these so that an error can be captured properly
|
|
25
|
+
const tenantId = tenancy.getTenantIDFromAppID(job.data.event.appId)
|
|
26
|
+
return await tenancy.doInTenant(tenantId, async () => {
|
|
27
|
+
const runFn = () => Runner.run(job)
|
|
28
|
+
return quotas.addAutomation(runFn)
|
|
29
|
+
})
|
|
24
30
|
} catch (err) {
|
|
25
31
|
const errJson = JSON.stringify(err)
|
|
26
32
|
console.error(
|
|
@@ -31,11 +37,15 @@ exports.processEvent = async job => {
|
|
|
31
37
|
}
|
|
32
38
|
}
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
export async function updateTestHistory(
|
|
41
|
+
appId: any,
|
|
42
|
+
automation: any,
|
|
43
|
+
history: any
|
|
44
|
+
) {
|
|
35
45
|
return updateEntityMetadata(
|
|
36
46
|
MetadataTypes.AUTOMATION_TEST_HISTORY,
|
|
37
47
|
automation._id,
|
|
38
|
-
metadata => {
|
|
48
|
+
(metadata: any) => {
|
|
39
49
|
if (metadata && Array.isArray(metadata.history)) {
|
|
40
50
|
metadata.history.push(history)
|
|
41
51
|
} else {
|
|
@@ -48,7 +58,7 @@ exports.updateTestHistory = async (appId, automation, history) => {
|
|
|
48
58
|
)
|
|
49
59
|
}
|
|
50
60
|
|
|
51
|
-
|
|
61
|
+
export function removeDeprecated(definitions: any) {
|
|
52
62
|
const base = cloneDeep(definitions)
|
|
53
63
|
for (let key of Object.keys(base)) {
|
|
54
64
|
if (base[key].deprecated) {
|
|
@@ -59,13 +69,15 @@ exports.removeDeprecated = definitions => {
|
|
|
59
69
|
}
|
|
60
70
|
|
|
61
71
|
// end the repetition and the job itself
|
|
62
|
-
|
|
72
|
+
export async function disableAllCrons(appId: any) {
|
|
63
73
|
const promises = []
|
|
64
74
|
const jobs = await queue.getRepeatableJobs()
|
|
65
75
|
for (let job of jobs) {
|
|
66
76
|
if (job.key.includes(`${appId}_cron`)) {
|
|
67
77
|
promises.push(queue.removeRepeatableByKey(job.key))
|
|
68
|
-
|
|
78
|
+
if (job.id) {
|
|
79
|
+
promises.push(queue.removeJobs(job.id))
|
|
80
|
+
}
|
|
69
81
|
}
|
|
70
82
|
}
|
|
71
83
|
return Promise.all(promises)
|
|
@@ -76,9 +88,9 @@ exports.disableAllCrons = async appId => {
|
|
|
76
88
|
* @param {string} appId The ID of the app in which we are checking for webhooks
|
|
77
89
|
* @param {object|undefined} automation The automation object to be updated.
|
|
78
90
|
*/
|
|
79
|
-
|
|
91
|
+
export async function enableCronTrigger(appId: any, automation: any) {
|
|
80
92
|
const trigger = automation ? automation.definition.trigger : null
|
|
81
|
-
function isCronTrigger(auto) {
|
|
93
|
+
function isCronTrigger(auto: any) {
|
|
82
94
|
return (
|
|
83
95
|
auto &&
|
|
84
96
|
auto.definition.trigger &&
|
|
@@ -89,7 +101,7 @@ exports.enableCronTrigger = async (appId, automation) => {
|
|
|
89
101
|
if (isCronTrigger(automation)) {
|
|
90
102
|
// make a job id rather than letting Bull decide, makes it easier to handle on way out
|
|
91
103
|
const jobId = `${appId}_cron_${newid()}`
|
|
92
|
-
const job = await queue.add(
|
|
104
|
+
const job: any = await queue.add(
|
|
93
105
|
{
|
|
94
106
|
automation,
|
|
95
107
|
event: { appId, timestamp: Date.now() },
|
|
@@ -117,13 +129,13 @@ exports.enableCronTrigger = async (appId, automation) => {
|
|
|
117
129
|
* @returns {Promise<object|undefined>} After this is complete the new automation object may have been updated and should be
|
|
118
130
|
* written to DB (this does not write to DB as it would be wasteful to repeat).
|
|
119
131
|
*/
|
|
120
|
-
|
|
132
|
+
export async function checkForWebhooks({ oldAuto, newAuto }: any) {
|
|
121
133
|
const appId = getAppId()
|
|
122
134
|
const oldTrigger = oldAuto ? oldAuto.definition.trigger : null
|
|
123
135
|
const newTrigger = newAuto ? newAuto.definition.trigger : null
|
|
124
136
|
const triggerChanged =
|
|
125
137
|
oldTrigger && newTrigger && oldTrigger.id !== newTrigger.id
|
|
126
|
-
function isWebhookTrigger(auto) {
|
|
138
|
+
function isWebhookTrigger(auto: any) {
|
|
127
139
|
return (
|
|
128
140
|
auto &&
|
|
129
141
|
auto.definition.trigger &&
|
|
@@ -159,7 +171,7 @@ exports.checkForWebhooks = async ({ oldAuto, newAuto }) => {
|
|
|
159
171
|
(!isWebhookTrigger(oldAuto) || triggerChanged) &&
|
|
160
172
|
isWebhookTrigger(newAuto)
|
|
161
173
|
) {
|
|
162
|
-
const ctx = {
|
|
174
|
+
const ctx: any = {
|
|
163
175
|
appId,
|
|
164
176
|
request: {
|
|
165
177
|
body: new webhooks.Webhook(
|
|
@@ -189,6 +201,6 @@ exports.checkForWebhooks = async ({ oldAuto, newAuto }) => {
|
|
|
189
201
|
* @param appId {string} the app that is being removed.
|
|
190
202
|
* @return {Promise<void>} clean is complete if this succeeds.
|
|
191
203
|
*/
|
|
192
|
-
|
|
193
|
-
await
|
|
204
|
+
export async function cleanupAutomations(appId: any) {
|
|
205
|
+
await disableAllCrons(appId)
|
|
194
206
|
}
|
package/src/constants/index.js
CHANGED
|
@@ -190,5 +190,11 @@ exports.WebhookType = {
|
|
|
190
190
|
AUTOMATION: "automation",
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
+
exports.AutomationErrors = {
|
|
194
|
+
INCORRECT_TYPE: "INCORRECT_TYPE",
|
|
195
|
+
MAX_ITERATIONS: "MAX_ITERATIONS_REACHED",
|
|
196
|
+
FAILURE_CONDITION: "FAILURE_CONDITION_MET",
|
|
197
|
+
}
|
|
198
|
+
|
|
193
199
|
// pass through the list from the auth/core lib
|
|
194
200
|
exports.ObjectStoreBuckets = ObjectStoreBuckets
|
package/src/environment.js
CHANGED
|
@@ -38,8 +38,6 @@ module.exports = {
|
|
|
38
38
|
ENABLE_ANALYTICS: process.env.ENABLE_ANALYTICS,
|
|
39
39
|
MINIO_ACCESS_KEY: process.env.MINIO_ACCESS_KEY,
|
|
40
40
|
MINIO_SECRET_KEY: process.env.MINIO_SECRET_KEY,
|
|
41
|
-
USE_QUOTAS: process.env.USE_QUOTAS,
|
|
42
|
-
EXCLUDE_QUOTAS_TENANTS: process.env.EXCLUDE_QUOTAS_TENANTS,
|
|
43
41
|
REDIS_URL: process.env.REDIS_URL,
|
|
44
42
|
REDIS_PASSWORD: process.env.REDIS_PASSWORD,
|
|
45
43
|
INTERNAL_API_KEY: process.env.INTERNAL_API_KEY,
|
|
@@ -59,6 +57,7 @@ module.exports = {
|
|
|
59
57
|
LOG_LEVEL: process.env.LOG_LEVEL,
|
|
60
58
|
AUTOMATION_DIRECTORY: process.env.AUTOMATION_DIRECTORY,
|
|
61
59
|
AUTOMATION_BUCKET: process.env.AUTOMATION_BUCKET,
|
|
60
|
+
AUTOMATION_MAX_ITERATIONS: process.env.AUTOMATION_MAX_ITERATIONS,
|
|
62
61
|
SENDGRID_API_KEY: process.env.SENDGRID_API_KEY,
|
|
63
62
|
DYNAMO_ENDPOINT: process.env.DYNAMO_ENDPOINT,
|
|
64
63
|
POSTHOG_TOKEN: process.env.POSTHOG_TOKEN,
|