@budibase/server 1.2.44 → 1.2.47
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.cd024733.js → index.5686a36e.js} +1 -1
- package/builder/index.html +1 -1
- package/coverage/clover.xml +32 -30
- package/coverage/coverage-final.json +3 -3
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +1 -1
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +13 -7
- package/coverage/lcov-report/automations/index.html +12 -12
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +1 -1
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +1 -1
- package/coverage/lcov-report/events/AutomationEmitter.js.html +5 -5
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +15 -15
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +1 -1
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +16 -4
- package/coverage/lcov-report/utilities/queue/index.html +5 -5
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +38 -34
- package/dist/automations/bullboard.js +2 -0
- package/dist/automations/listeners.js +102 -0
- package/dist/automations/utils.js +6 -2
- package/dist/package.json +6 -6
- package/dist/threads/automation.js +27 -11
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/queue/inMemoryQueue.js +3 -0
- package/package.json +7 -7
- package/src/automations/bullboard.js +2 -0
- package/src/automations/listeners.ts +78 -0
- package/src/automations/utils.ts +7 -6
- package/src/threads/automation.ts +35 -16
- package/src/utilities/queue/inMemoryQueue.js +4 -0
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
92
92
|
Code coverage generated by
|
|
93
93
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
94
|
-
at
|
|
94
|
+
at Sat Aug 20 2022 11:44:08 GMT+0000 (Coordinated Universal Time)
|
|
95
95
|
</div>
|
|
96
96
|
<script src="../prettify.js"></script>
|
|
97
97
|
<script>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at
|
|
119
|
+
at Sat Aug 20 2022 11:44:08 GMT+0000 (Coordinated Universal Time)
|
|
120
120
|
</div>
|
|
121
121
|
<script src="../../prettify.js"></script>
|
|
122
122
|
<script>
|
|
@@ -307,7 +307,7 @@ exports.getUniqueRows = async appIds => {
|
|
|
307
307
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
308
308
|
Code coverage generated by
|
|
309
309
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
310
|
-
at
|
|
310
|
+
at Sat Aug 20 2022 11:44:08 GMT+0000 (Coordinated Universal Time)
|
|
311
311
|
</div>
|
|
312
312
|
<script src="../../prettify.js"></script>
|
|
313
313
|
<script>
|
|
@@ -124,7 +124,7 @@ function <span class="fstat-no" title="function not covered" >resetQuotasIfRequi
|
|
|
124
124
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
125
125
|
Code coverage generated by
|
|
126
126
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
127
|
-
at
|
|
127
|
+
at Sat Aug 20 2022 11:44:08 GMT+0000 (Coordinated Universal Time)
|
|
128
128
|
</div>
|
|
129
129
|
<script src="../../prettify.js"></script>
|
|
130
130
|
<script>
|
|
@@ -205,7 +205,7 @@ exports.publicApiUserFix = ctx => {
|
|
|
205
205
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
206
206
|
Code coverage generated by
|
|
207
207
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
208
|
-
at
|
|
208
|
+
at Sat Aug 20 2022 11:44:08 GMT+0000 (Coordinated Universal Time)
|
|
209
209
|
</div>
|
|
210
210
|
<script src="../prettify.js"></script>
|
|
211
211
|
<script>
|
|
@@ -535,7 +535,7 @@ exports.getChecklist = <span class="fstat-no" title="function not covered" >as</
|
|
|
535
535
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
536
536
|
Code coverage generated by
|
|
537
537
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
538
|
-
at
|
|
538
|
+
at Sat Aug 20 2022 11:44:08 GMT+0000 (Coordinated Universal Time)
|
|
539
539
|
</div>
|
|
540
540
|
<script src="../prettify.js"></script>
|
|
541
541
|
<script>
|
package/coverage/lcov.info
CHANGED
|
@@ -4619,10 +4619,10 @@ BRH:21
|
|
|
4619
4619
|
end_of_record
|
|
4620
4620
|
TN:
|
|
4621
4621
|
SF:src/automations/bullboard.js
|
|
4622
|
-
FN:
|
|
4623
|
-
FN:
|
|
4624
|
-
FN:
|
|
4625
|
-
FN:
|
|
4622
|
+
FN:20,cleanup
|
|
4623
|
+
FN:26,(anonymous_1)
|
|
4624
|
+
FN:31,(anonymous_2)
|
|
4625
|
+
FN:50,(anonymous_3)
|
|
4626
4626
|
FNF:4
|
|
4627
4627
|
FNH:0
|
|
4628
4628
|
FNDA:0,cleanup
|
|
@@ -4637,41 +4637,43 @@ DA:5,45
|
|
|
4637
4637
|
DA:8,45
|
|
4638
4638
|
DA:9,45
|
|
4639
4639
|
DA:10,45
|
|
4640
|
-
DA:
|
|
4640
|
+
DA:11,45
|
|
4641
4641
|
DA:13,45
|
|
4642
4642
|
DA:14,45
|
|
4643
|
-
DA:
|
|
4644
|
-
DA:
|
|
4645
|
-
DA:
|
|
4643
|
+
DA:15,45
|
|
4644
|
+
DA:17,45
|
|
4645
|
+
DA:18,45
|
|
4646
|
+
DA:21,0
|
|
4646
4647
|
DA:24,45
|
|
4647
|
-
DA:26,
|
|
4648
|
-
DA:
|
|
4648
|
+
DA:26,45
|
|
4649
|
+
DA:28,0
|
|
4649
4650
|
DA:29,0
|
|
4650
|
-
DA:
|
|
4651
|
-
DA:
|
|
4652
|
-
DA:35,0
|
|
4651
|
+
DA:31,0
|
|
4652
|
+
DA:32,0
|
|
4653
4653
|
DA:36,0
|
|
4654
4654
|
DA:37,0
|
|
4655
4655
|
DA:38,0
|
|
4656
|
+
DA:39,0
|
|
4656
4657
|
DA:40,0
|
|
4657
|
-
DA:
|
|
4658
|
-
DA:
|
|
4659
|
-
DA:
|
|
4660
|
-
DA:
|
|
4661
|
-
DA:50,0
|
|
4658
|
+
DA:42,0
|
|
4659
|
+
DA:46,0
|
|
4660
|
+
DA:47,0
|
|
4661
|
+
DA:50,45
|
|
4662
4662
|
DA:51,0
|
|
4663
4663
|
DA:52,0
|
|
4664
|
-
DA:
|
|
4665
|
-
|
|
4666
|
-
|
|
4664
|
+
DA:53,0
|
|
4665
|
+
DA:54,0
|
|
4666
|
+
DA:58,45
|
|
4667
|
+
LF:35
|
|
4668
|
+
LH:18
|
|
4667
4669
|
BRDA:5,0,0,45
|
|
4668
4670
|
BRDA:5,0,1,0
|
|
4669
|
-
BRDA:
|
|
4670
|
-
BRDA:
|
|
4671
|
-
BRDA:
|
|
4672
|
-
BRDA:
|
|
4673
|
-
BRDA:
|
|
4674
|
-
BRDA:
|
|
4671
|
+
BRDA:14,1,0,45
|
|
4672
|
+
BRDA:14,1,1,45
|
|
4673
|
+
BRDA:28,2,0,0
|
|
4674
|
+
BRDA:28,2,1,0
|
|
4675
|
+
BRDA:51,3,0,0
|
|
4676
|
+
BRDA:51,3,1,0
|
|
4675
4677
|
BRF:8
|
|
4676
4678
|
BRH:3
|
|
4677
4679
|
end_of_record
|
|
@@ -6380,9 +6382,9 @@ FNH:2
|
|
|
6380
6382
|
FNDA:6,(anonymous_0)
|
|
6381
6383
|
FNDA:5,(anonymous_1)
|
|
6382
6384
|
FNDA:0,(anonymous_2)
|
|
6383
|
-
DA:1,
|
|
6384
|
-
DA:2,
|
|
6385
|
-
DA:5,
|
|
6385
|
+
DA:1,44
|
|
6386
|
+
DA:2,44
|
|
6387
|
+
DA:5,44
|
|
6386
6388
|
DA:15,6
|
|
6387
6389
|
DA:16,6
|
|
6388
6390
|
DA:23,5
|
|
@@ -6391,7 +6393,7 @@ DA:26,4
|
|
|
6391
6393
|
DA:38,0
|
|
6392
6394
|
DA:39,0
|
|
6393
6395
|
DA:41,0
|
|
6394
|
-
DA:51,
|
|
6396
|
+
DA:51,44
|
|
6395
6397
|
LF:12
|
|
6396
6398
|
LH:9
|
|
6397
6399
|
BRDA:21,0,0,0
|
|
@@ -7647,8 +7649,9 @@ FN:97,(anonymous_7)
|
|
|
7647
7649
|
FN:102,(anonymous_8)
|
|
7648
7650
|
FN:109,(anonymous_9)
|
|
7649
7651
|
FN:113,(anonymous_10)
|
|
7650
|
-
|
|
7651
|
-
|
|
7652
|
+
FN:117,(anonymous_11)
|
|
7653
|
+
FNF:12
|
|
7654
|
+
FNH:7
|
|
7652
7655
|
FNDA:8,newJob
|
|
7653
7656
|
FNDA:45,(anonymous_1)
|
|
7654
7657
|
FNDA:32,(anonymous_2)
|
|
@@ -7660,6 +7663,7 @@ FNDA:253,(anonymous_7)
|
|
|
7660
7663
|
FNDA:0,(anonymous_8)
|
|
7661
7664
|
FNDA:0,(anonymous_9)
|
|
7662
7665
|
FNDA:0,(anonymous_10)
|
|
7666
|
+
FNDA:45,(anonymous_11)
|
|
7663
7667
|
DA:1,45
|
|
7664
7668
|
DA:13,8
|
|
7665
7669
|
DA:33,45
|
|
@@ -7682,7 +7686,7 @@ DA:91,0
|
|
|
7682
7686
|
DA:98,253
|
|
7683
7687
|
DA:110,0
|
|
7684
7688
|
DA:114,0
|
|
7685
|
-
DA:
|
|
7689
|
+
DA:122,45
|
|
7686
7690
|
LF:23
|
|
7687
7691
|
LH:18
|
|
7688
7692
|
BRDA:32,0,0,0
|
|
@@ -18,10 +18,12 @@ const Queue = env.isTest()
|
|
|
18
18
|
const { JobQueues } = require("../constants");
|
|
19
19
|
const { utils } = require("@budibase/backend-core/redis");
|
|
20
20
|
const { opts, redisProtocolUrl } = utils.getRedisOptions();
|
|
21
|
+
const listeners = require("./listeners");
|
|
21
22
|
const CLEANUP_PERIOD_MS = 60 * 1000;
|
|
22
23
|
const queueConfig = redisProtocolUrl || { redis: opts };
|
|
23
24
|
let cleanupInternal = null;
|
|
24
25
|
let automationQueue = new Queue(JobQueues.AUTOMATIONS, queueConfig);
|
|
26
|
+
listeners.addListeners(automationQueue);
|
|
25
27
|
function cleanup() {
|
|
26
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27
29
|
yield automationQueue.clean(CLEANUP_PERIOD_MS, "completed");
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.addListeners = void 0;
|
|
36
|
+
const automation = __importStar(require("../threads/automation"));
|
|
37
|
+
const addListeners = (queue) => {
|
|
38
|
+
logging(queue);
|
|
39
|
+
handleStalled(queue);
|
|
40
|
+
};
|
|
41
|
+
exports.addListeners = addListeners;
|
|
42
|
+
const handleStalled = (queue) => {
|
|
43
|
+
queue.on("stalled", (job) => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
yield automation.removeStalled(job);
|
|
45
|
+
}));
|
|
46
|
+
};
|
|
47
|
+
const logging = (queue) => {
|
|
48
|
+
var _a;
|
|
49
|
+
if ((_a = process.env.NODE_DEBUG) === null || _a === void 0 ? void 0 : _a.includes("bull")) {
|
|
50
|
+
queue
|
|
51
|
+
.on("error", (error) => {
|
|
52
|
+
// An error occurred.
|
|
53
|
+
console.error(`automation-event=error error=${JSON.stringify(error)}`);
|
|
54
|
+
})
|
|
55
|
+
.on("waiting", (jobId) => {
|
|
56
|
+
// A Job is waiting to be processed as soon as a worker is idling.
|
|
57
|
+
console.log(`automation-event=waiting jobId=${jobId}`);
|
|
58
|
+
})
|
|
59
|
+
.on("active", (job, jobPromise) => {
|
|
60
|
+
// A job has started. You can use `jobPromise.cancel()`` to abort it.
|
|
61
|
+
console.log(`automation-event=active jobId=${job.id}`);
|
|
62
|
+
})
|
|
63
|
+
.on("stalled", (job) => {
|
|
64
|
+
// A job has been marked as stalled. This is useful for debugging job
|
|
65
|
+
// workers that crash or pause the event loop.
|
|
66
|
+
console.error(`automation-event=stalled jobId=${job.id} job=${JSON.stringify(job)}`);
|
|
67
|
+
})
|
|
68
|
+
.on("progress", (job, progress) => {
|
|
69
|
+
// A job's progress was updated!
|
|
70
|
+
console.log(`automation-event=progress jobId=${job.id} progress=${progress}`);
|
|
71
|
+
})
|
|
72
|
+
.on("completed", (job, result) => {
|
|
73
|
+
// A job successfully completed with a `result`.
|
|
74
|
+
console.log(`automation-event=completed jobId=${job.id} result=${result}`);
|
|
75
|
+
})
|
|
76
|
+
.on("failed", (job, err) => {
|
|
77
|
+
// A job failed with reason `err`!
|
|
78
|
+
console.log(`automation-event=failed jobId=${job.id} error=${err}`);
|
|
79
|
+
})
|
|
80
|
+
.on("paused", () => {
|
|
81
|
+
// The queue has been paused.
|
|
82
|
+
console.log(`automation-event=paused`);
|
|
83
|
+
})
|
|
84
|
+
.on("resumed", (job) => {
|
|
85
|
+
// The queue has been resumed.
|
|
86
|
+
console.log(`automation-event=paused jobId=${job.id}`);
|
|
87
|
+
})
|
|
88
|
+
.on("cleaned", (jobs, type) => {
|
|
89
|
+
// Old jobs have been cleaned from the queue. `jobs` is an array of cleaned
|
|
90
|
+
// jobs, and `type` is the type of jobs cleaned.
|
|
91
|
+
console.log(`automation-event=cleaned length=${jobs.length} type=${type}`);
|
|
92
|
+
})
|
|
93
|
+
.on("drained", () => {
|
|
94
|
+
// Emitted every time the queue has processed all the waiting jobs (even if there can be some delayed jobs not yet processed)
|
|
95
|
+
console.log(`automation-event=drained`);
|
|
96
|
+
})
|
|
97
|
+
.on("removed", (job) => {
|
|
98
|
+
// A job successfully removed.
|
|
99
|
+
console.log(`automation-event=removed jobId=${job.id}`);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
};
|
|
@@ -52,10 +52,13 @@ const pro_1 = require("@budibase/pro");
|
|
|
52
52
|
const WH_STEP_ID = triggerInfo_1.definitions.WEBHOOK.stepId;
|
|
53
53
|
const CRON_STEP_ID = triggerInfo_1.definitions.CRON.stepId;
|
|
54
54
|
const Runner = new threads_1.Thread(threads_1.ThreadType.AUTOMATION);
|
|
55
|
+
const jobMessage = (job, message) => {
|
|
56
|
+
return `app=${job.data.event.appId} automation=${job.data.automation._id} jobId=${job.id} trigger=${job.data.automation.definition.trigger.event} : ${message}`;
|
|
57
|
+
};
|
|
55
58
|
function processEvent(job) {
|
|
56
59
|
return __awaiter(this, void 0, void 0, function* () {
|
|
57
60
|
try {
|
|
58
|
-
console.log(
|
|
61
|
+
console.log(jobMessage(job, "running"));
|
|
59
62
|
// need to actually await these so that an error can be captured properly
|
|
60
63
|
const tenantId = backend_core_1.tenancy.getTenantIDFromAppID(job.data.event.appId);
|
|
61
64
|
return yield backend_core_1.tenancy.doInTenant(tenantId, () => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -65,7 +68,7 @@ function processEvent(job) {
|
|
|
65
68
|
}
|
|
66
69
|
catch (err) {
|
|
67
70
|
const errJson = JSON.stringify(err);
|
|
68
|
-
console.error(
|
|
71
|
+
console.error(jobMessage(job, `was unable to run - ${errJson}`));
|
|
69
72
|
console.trace(err);
|
|
70
73
|
return { err };
|
|
71
74
|
}
|
|
@@ -119,6 +122,7 @@ function disableCron(jobId, jobKey) {
|
|
|
119
122
|
return __awaiter(this, void 0, void 0, function* () {
|
|
120
123
|
yield bullboard_1.queue.removeRepeatableByKey(jobKey);
|
|
121
124
|
yield bullboard_1.queue.removeJobs(jobId);
|
|
125
|
+
console.log(`jobId=${jobId} disabled`);
|
|
122
126
|
});
|
|
123
127
|
}
|
|
124
128
|
exports.disableCron = disableCron;
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "1.2.
|
|
4
|
+
"version": "1.2.46",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -77,11 +77,11 @@
|
|
|
77
77
|
"license": "GPL-3.0",
|
|
78
78
|
"dependencies": {
|
|
79
79
|
"@apidevtools/swagger-parser": "10.0.3",
|
|
80
|
-
"@budibase/backend-core": "^1.2.
|
|
81
|
-
"@budibase/client": "^1.2.
|
|
82
|
-
"@budibase/pro": "1.2.
|
|
83
|
-
"@budibase/string-templates": "^1.2.
|
|
84
|
-
"@budibase/types": "^1.2.
|
|
80
|
+
"@budibase/backend-core": "^1.2.46",
|
|
81
|
+
"@budibase/client": "^1.2.46",
|
|
82
|
+
"@budibase/pro": "1.2.46",
|
|
83
|
+
"@budibase/string-templates": "^1.2.46",
|
|
84
|
+
"@budibase/types": "^1.2.46",
|
|
85
85
|
"@bull-board/api": "3.7.0",
|
|
86
86
|
"@bull-board/koa": "3.9.4",
|
|
87
87
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.execute = void 0;
|
|
15
|
+
exports.removeStalled = exports.execute = void 0;
|
|
16
16
|
const utils_1 = __importDefault(require("./utils"));
|
|
17
17
|
utils_1.default.threadSetup();
|
|
18
18
|
const utils_2 = require("../automations/utils");
|
|
@@ -130,22 +130,30 @@ class Orchestrator {
|
|
|
130
130
|
return metadata;
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
|
-
|
|
133
|
+
stopCron(reason) {
|
|
134
134
|
var _a, _b;
|
|
135
135
|
return __awaiter(this, void 0, void 0, function* () {
|
|
136
|
-
if (!
|
|
137
|
-
return
|
|
136
|
+
if (!this._repeat) {
|
|
137
|
+
return;
|
|
138
138
|
}
|
|
139
|
+
logWarn(`CRON disabled reason=${reason} - ${this._appId}/${this._automation._id}`);
|
|
139
140
|
const automation = this._automation;
|
|
140
141
|
const trigger = automation.definition.trigger;
|
|
142
|
+
yield (0, utils_2.disableCron)((_a = this._repeat) === null || _a === void 0 ? void 0 : _a.jobId, (_b = this._repeat) === null || _b === void 0 ? void 0 : _b.jobKey);
|
|
143
|
+
this.updateExecutionOutput(trigger.id, trigger.stepId, {}, {
|
|
144
|
+
status: types_1.AutomationStatus.STOPPED_ERROR,
|
|
145
|
+
success: false,
|
|
146
|
+
});
|
|
147
|
+
yield (0, logging_1.storeLog)(automation, this.executionOutput);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
checkIfShouldStop(metadata) {
|
|
151
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
if (!metadata.errorCount || !this._repeat) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
141
155
|
if (metadata.errorCount >= constants_1.MAX_AUTOMATION_RECURRING_ERRORS) {
|
|
142
|
-
|
|
143
|
-
yield (0, utils_2.disableCron)((_a = this._repeat) === null || _a === void 0 ? void 0 : _a.jobId, (_b = this._repeat) === null || _b === void 0 ? void 0 : _b.jobKey);
|
|
144
|
-
this.updateExecutionOutput(trigger.id, trigger.stepId, {}, {
|
|
145
|
-
status: types_1.AutomationStatus.STOPPED_ERROR,
|
|
146
|
-
success: false,
|
|
147
|
-
});
|
|
148
|
-
yield (0, logging_1.storeLog)(automation, this.executionOutput);
|
|
156
|
+
yield this.stopCron("errors");
|
|
149
157
|
return true;
|
|
150
158
|
}
|
|
151
159
|
return false;
|
|
@@ -396,3 +404,11 @@ function execute(input, callback) {
|
|
|
396
404
|
}));
|
|
397
405
|
}
|
|
398
406
|
exports.execute = execute;
|
|
407
|
+
const removeStalled = (input) => __awaiter(void 0, void 0, void 0, function* () {
|
|
408
|
+
const appId = input.data.event.appId;
|
|
409
|
+
yield doInAppContext(appId, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
410
|
+
const automationOrchestrator = new Orchestrator(input.data.automation, input.data.event, input.opts);
|
|
411
|
+
yield automationOrchestrator.stopCron("stalled");
|
|
412
|
+
}));
|
|
413
|
+
});
|
|
414
|
+
exports.removeStalled = removeStalled;
|