@budibase/server 1.0.49-alpha.0 → 1.0.49-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builder/assets/{index.dd9e386f.css → index.ba78c49d.css} +1 -1
- package/builder/assets/{index.8184eed9.js → index.ed1cf508.js} +205 -204
- package/builder/assets/{vendor.3bd2f661.js → vendor.d526bfe8.js} +1 -1
- package/builder/index.html +3 -3
- package/coverage/clover.xml +844 -680
- package/coverage/coverage-final.json +12 -10
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.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/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.js.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 +40 -25
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +60 -123
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +35 -11
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +551 -0
- 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 +629 -0
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +45 -30
- package/coverage/lcov-report/api/controllers/table/index.js.html +11 -53
- package/coverage/lcov-report/api/controllers/table/internal.js.html +25 -7
- package/coverage/lcov-report/api/controllers/table/utils.js.html +136 -16
- 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/application.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/index.js.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/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/row.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/static.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/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 +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- 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/createRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.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/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/automations/utils.js.html +1 -1
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +19 -4
- 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/client.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 +10 -10
- package/coverage/lcov-report/db/linkedRows/index.js.html +10 -13
- 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 +5 -5
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- 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 +44 -44
- 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/authorized.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/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/migrations/usageQuotas/index.html +1 -1
- package/coverage/lcov-report/migrations/usageQuotas/index.js.html +1 -1
- package/coverage/lcov-report/migrations/usageQuotas/syncApps.js.html +1 -1
- package/coverage/lcov-report/migrations/usageQuotas/syncRows.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +1 -1
- package/coverage/lcov-report/threads/index.js.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +1 -1
- package/coverage/lcov-report/threads/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/bcrypt.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 +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- 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 +27 -27
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +65 -29
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +73 -25
- 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/index.js.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 +1509 -1173
- package/dist/api/controllers/row/internal.js +30 -53
- package/dist/api/controllers/row/internalSearch.js +12 -4
- package/dist/api/controllers/row/staticFormula.js +147 -0
- package/dist/api/controllers/table/bulkFormula.js +160 -0
- package/dist/api/controllers/table/index.js +3 -6
- package/dist/api/controllers/table/internal.js +7 -0
- package/dist/api/controllers/table/utils.js +32 -10
- package/dist/constants/index.js +4 -0
- package/dist/db/linkedRows/index.js +4 -5
- package/dist/package.json +4 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/rowProcessor/index.js +18 -11
- package/dist/utilities/rowProcessor/utils.js +14 -4
- package/package.json +5 -5
- package/src/api/controllers/row/internal.js +29 -50
- package/src/api/controllers/row/internalSearch.js +12 -4
- package/src/api/controllers/row/staticFormula.js +157 -0
- package/src/api/controllers/table/bulkFormula.js +183 -0
- package/src/api/controllers/table/index.js +3 -17
- package/src/api/controllers/table/internal.js +7 -1
- package/src/api/controllers/table/utils.js +48 -8
- package/src/constants/index.js +5 -0
- package/src/db/linkedRows/index.js +4 -5
- package/src/definitions/common.ts +3 -0
- package/src/utilities/rowProcessor/index.js +24 -12
- package/src/utilities/rowProcessor/utils.js +23 -7
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">57.69% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>75/
|
|
28
|
+
<span class='fraction'>75/130</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">43% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>43/
|
|
35
|
+
<span class='fraction'>43/100</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">50% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>10/
|
|
42
|
+
<span class='fraction'>10/20</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">60.16% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>74/
|
|
49
|
+
<span class='fraction'>74/123</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -398,7 +398,19 @@
|
|
|
398
398
|
<a name='L339'></a><a href='#L339'>339</a>
|
|
399
399
|
<a name='L340'></a><a href='#L340'>340</a>
|
|
400
400
|
<a name='L341'></a><a href='#L341'>341</a>
|
|
401
|
-
<a name='L342'></a><a href='#L342'>342</a
|
|
401
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
402
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
403
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
404
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
405
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
406
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
407
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
408
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
409
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
410
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
411
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
412
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
413
|
+
<a name='L354'></a><a href='#L354'>354</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
|
|
402
414
|
<span class="cline-any cline-yes">37x</span>
|
|
403
415
|
<span class="cline-any cline-yes">37x</span>
|
|
404
416
|
<span class="cline-any cline-yes">37x</span>
|
|
@@ -580,6 +592,8 @@
|
|
|
580
592
|
<span class="cline-any cline-neutral"> </span>
|
|
581
593
|
<span class="cline-any cline-yes">37x</span>
|
|
582
594
|
<span class="cline-any cline-neutral"> </span>
|
|
595
|
+
<span class="cline-any cline-yes">37x</span>
|
|
596
|
+
<span class="cline-any cline-neutral"> </span>
|
|
583
597
|
<span class="cline-any cline-neutral"> </span>
|
|
584
598
|
<span class="cline-any cline-neutral"> </span>
|
|
585
599
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -630,10 +644,11 @@
|
|
|
630
644
|
<span class="cline-any cline-yes">165x</span>
|
|
631
645
|
<span class="cline-any cline-neutral"> </span>
|
|
632
646
|
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
634
647
|
<span class="cline-any cline-yes">179x</span>
|
|
635
648
|
<span class="cline-any cline-no"> </span>
|
|
636
649
|
<span class="cline-any cline-neutral"> </span>
|
|
650
|
+
<span class="cline-any cline-neutral"> </span>
|
|
651
|
+
<span class="cline-any cline-neutral"> </span>
|
|
637
652
|
<span class="cline-any cline-yes">179x</span>
|
|
638
653
|
<span class="cline-any cline-neutral"> </span>
|
|
639
654
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -665,7 +680,6 @@
|
|
|
665
680
|
<span class="cline-any cline-neutral"> </span>
|
|
666
681
|
<span class="cline-any cline-yes">103x</span>
|
|
667
682
|
<span class="cline-any cline-yes">103x</span>
|
|
668
|
-
<span class="cline-any cline-yes">103x</span>
|
|
669
683
|
<span class="cline-any cline-yes">90x</span>
|
|
670
684
|
<span class="cline-any cline-yes">90x</span>
|
|
671
685
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -707,13 +721,19 @@
|
|
|
707
721
|
<span class="cline-any cline-neutral"> </span>
|
|
708
722
|
<span class="cline-any cline-neutral"> </span>
|
|
709
723
|
<span class="cline-any cline-neutral"> </span>
|
|
724
|
+
<span class="cline-any cline-neutral"> </span>
|
|
725
|
+
<span class="cline-any cline-neutral"> </span>
|
|
710
726
|
<span class="cline-any cline-yes">37x</span>
|
|
711
|
-
<span class="cline-any cline-yes">8x</span>
|
|
712
|
-
<span class="cline-any cline-yes">8x</span>
|
|
713
727
|
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-
|
|
715
|
-
<span class="cline-any cline-
|
|
716
|
-
<span class="cline-any cline-
|
|
728
|
+
<span class="cline-any cline-neutral"> </span>
|
|
729
|
+
<span class="cline-any cline-neutral"> </span>
|
|
730
|
+
<span class="cline-any cline-neutral"> </span>
|
|
731
|
+
<span class="cline-any cline-yes">11x</span>
|
|
732
|
+
<span class="cline-any cline-yes">11x</span>
|
|
733
|
+
<span class="cline-any cline-neutral"> </span>
|
|
734
|
+
<span class="cline-any cline-yes">11x</span>
|
|
735
|
+
<span class="cline-any cline-yes">11x</span>
|
|
736
|
+
<span class="cline-any cline-yes">11x</span>
|
|
717
737
|
<span class="cline-any cline-neutral"> </span>
|
|
718
738
|
<span class="cline-any cline-neutral"> </span>
|
|
719
739
|
<span class="cline-any cline-no"> </span>
|
|
@@ -725,11 +745,15 @@
|
|
|
725
745
|
<span class="cline-any cline-no"> </span>
|
|
726
746
|
<span class="cline-any cline-no"> </span>
|
|
727
747
|
<span class="cline-any cline-no"> </span>
|
|
748
|
+
<span class="cline-any cline-no"> </span>
|
|
728
749
|
<span class="cline-any cline-neutral"> </span>
|
|
729
750
|
<span class="cline-any cline-neutral"> </span>
|
|
730
751
|
<span class="cline-any cline-no"> </span>
|
|
731
752
|
<span class="cline-any cline-no"> </span>
|
|
732
753
|
<span class="cline-any cline-no"> </span>
|
|
754
|
+
<span class="cline-any cline-neutral"> </span>
|
|
755
|
+
<span class="cline-any cline-no"> </span>
|
|
756
|
+
<span class="cline-any cline-no"> </span>
|
|
733
757
|
<span class="cline-any cline-no"> </span>
|
|
734
758
|
<span class="cline-any cline-no"> </span>
|
|
735
759
|
<span class="cline-any cline-no"> </span>
|
|
@@ -921,6 +945,8 @@ function processAutoColumn(
|
|
|
921
945
|
}
|
|
922
946
|
exports.processAutoColumn = processAutoColumn
|
|
923
947
|
|
|
948
|
+
exports.processFormulas = processFormulas
|
|
949
|
+
|
|
924
950
|
/**
|
|
925
951
|
* This will coerce a value to the correct types based on the type transform map
|
|
926
952
|
* @param {object} row The value to coerce
|
|
@@ -970,11 +996,12 @@ exports.inputProcessing = (
|
|
|
970
996
|
}
|
|
971
997
|
continue
|
|
972
998
|
}
|
|
973
|
-
//
|
|
974
|
-
// type coercion cannot completely remove the field, so have to do it here
|
|
999
|
+
// remove any formula values, they are to be generated
|
|
975
1000
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (field.type === FieldTypes.FORMULA) {
|
|
976
1001
|
<span class="cstat-no" title="statement not covered" > delete clonedRow[key]</span>
|
|
977
|
-
}
|
|
1002
|
+
}
|
|
1003
|
+
// otherwise coerce what is there to correct types
|
|
1004
|
+
else {
|
|
978
1005
|
clonedRow[key] = exports.coerce(value, field.type)
|
|
979
1006
|
}
|
|
980
1007
|
}
|
|
@@ -991,7 +1018,7 @@ exports.inputProcessing = (
|
|
|
991
1018
|
/**
|
|
992
1019
|
* This function enriches the input rows with anything they are supposed to contain, for example
|
|
993
1020
|
* link records or attachment links.
|
|
994
|
-
* @param {
|
|
1021
|
+
* @param {string} appId the app in which the request is looking for enriched rows.
|
|
995
1022
|
* @param {object} table the table from which these rows came from originally, this is used to determine
|
|
996
1023
|
* the schema of the rows and then enrich.
|
|
997
1024
|
* @param {object[]|object} rows the rows which are to be enriched.
|
|
@@ -999,22 +1026,21 @@ exports.inputProcessing = (
|
|
|
999
1026
|
* @returns {object[]|object} the enriched rows will be returned.
|
|
1000
1027
|
*/
|
|
1001
1028
|
exports.outputProcessing = async (
|
|
1002
|
-
|
|
1029
|
+
{ appId },
|
|
1003
1030
|
table,
|
|
1004
1031
|
rows,
|
|
1005
1032
|
opts = { squash: true }
|
|
1006
1033
|
) => {
|
|
1007
|
-
const appId = ctx.appId
|
|
1008
1034
|
let wasArray = true
|
|
1009
1035
|
if (!(rows instanceof Array)) {
|
|
1010
1036
|
rows = [rows]
|
|
1011
1037
|
wasArray = false
|
|
1012
1038
|
}
|
|
1013
1039
|
// attach any linked row information
|
|
1014
|
-
let enriched = await linkRows.attachFullLinkedDocs(
|
|
1040
|
+
let enriched = await linkRows.attachFullLinkedDocs(appId, table, rows)
|
|
1015
1041
|
|
|
1016
1042
|
// process formulas
|
|
1017
|
-
enriched = processFormulas(table, enriched)
|
|
1043
|
+
enriched = processFormulas(table, enriched, { dynamic: true })
|
|
1018
1044
|
|
|
1019
1045
|
// update the attachments URL depending on hosting
|
|
1020
1046
|
for (let [property, column] of Object.entries(table.schema)) {
|
|
@@ -1046,9 +1072,15 @@ exports.outputProcessing = async (
|
|
|
1046
1072
|
* @param {any} row optional - the row being removed.
|
|
1047
1073
|
* @param {any} rows optional - if multiple rows being deleted can do this in bulk.
|
|
1048
1074
|
* @param {any} oldRow optional - if updating a row this will determine the difference.
|
|
1075
|
+
* @param {any} oldTable optional - if updating a table, can supply the old table to look for
|
|
1076
|
+
* deleted attachment columns.
|
|
1049
1077
|
* @return {Promise<void>} When all attachments have been removed this will return.
|
|
1050
1078
|
*/
|
|
1051
|
-
exports.cleanupAttachments = async (
|
|
1079
|
+
exports.cleanupAttachments = async (
|
|
1080
|
+
appId,
|
|
1081
|
+
table,
|
|
1082
|
+
{ row, rows, oldRow, oldTable }
|
|
1083
|
+
) => {
|
|
1052
1084
|
if (!isProdAppID(appId)) {
|
|
1053
1085
|
const prodAppId = getDeployedAppID(appId)
|
|
1054
1086
|
// if prod exists, then don't allow deleting
|
|
@@ -1063,12 +1095,16 @@ exports.cleanupAttachments = async (appId, table, { row, rows, oldRow }) => {
|
|
|
1063
1095
|
<span class="cstat-no" title="statement not covered" > files = files.concat(row[key].map(<span class="fstat-no" title="function not covered" >at</span>tachment => <span class="cstat-no" title="statement not covered" >attachment.key)</span>)</span>
|
|
1064
1096
|
}
|
|
1065
1097
|
}
|
|
1066
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1098
|
+
const schemaToUse = <span class="cstat-no" title="statement not covered" >oldTable ? oldTable.schema : table.schema</span>
|
|
1099
|
+
<span class="cstat-no" title="statement not covered" > for (let [key, schema] of Object.entries(schemaToUse)) {</span>
|
|
1067
1100
|
<span class="cstat-no" title="statement not covered" > if (schema.type !== FieldTypes.ATTACHMENT) {</span>
|
|
1068
1101
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1069
1102
|
}
|
|
1070
|
-
//
|
|
1071
|
-
<span class="cstat-no" title="statement not covered" > if (
|
|
1103
|
+
// old table had this column, new table doesn't - delete it
|
|
1104
|
+
<span class="cstat-no" title="statement not covered" > if (oldTable && !table.schema[key]) {</span>
|
|
1105
|
+
<span class="cstat-no" title="statement not covered" > rows.forEach(<span class="fstat-no" title="function not covered" >ro</span>w => <span class="cstat-no" title="statement not covered" >addFiles(row, key))</span></span>
|
|
1106
|
+
} else <span class="cstat-no" title="statement not covered" >if (oldRow && row) {</span>
|
|
1107
|
+
// if updating, need to manage the differences
|
|
1072
1108
|
<span class="cstat-no" title="statement not covered" > files = files.concat(getRemovedAttachmentKeys(oldRow, row, key))</span>
|
|
1073
1109
|
} else <span class="cstat-no" title="statement not covered" >if (row) {</span>
|
|
1074
1110
|
<span class="cstat-no" title="statement not covered" > addFiles(row, key)</span>
|
|
@@ -1087,7 +1123,7 @@ exports.cleanupAttachments = async (appId, table, { row, rows, oldRow }) => {
|
|
|
1087
1123
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1088
1124
|
Code coverage generated by
|
|
1089
1125
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
1090
|
-
at Mon Jan 31 2022
|
|
1126
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
1091
1127
|
</div>
|
|
1092
1128
|
</div>
|
|
1093
1129
|
<script src="../../prettify.js"></script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">66.66% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>12/18</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">50% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>9/18</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>1/
|
|
42
|
+
<span class='fraction'>1/1</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">70.58% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>12/17</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
56
|
</p>
|
|
57
57
|
</div>
|
|
58
|
-
<div class='status-line
|
|
58
|
+
<div class='status-line medium'></div>
|
|
59
59
|
<pre><table class="coverage">
|
|
60
60
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
61
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -80,49 +80,97 @@
|
|
|
80
80
|
<a name='L21'></a><a href='#L21'>21</a>
|
|
81
81
|
<a name='L22'></a><a href='#L22'>22</a>
|
|
82
82
|
<a name='L23'></a><a href='#L23'>23</a>
|
|
83
|
-
<a name='L24'></a><a href='#L24'>24</a
|
|
83
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
84
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
85
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
86
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
87
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
88
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
89
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
90
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
91
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
92
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
93
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
94
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
95
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
96
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
97
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
98
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
99
|
+
<a name='L40'></a><a href='#L40'>40</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
|
|
84
100
|
<span class="cline-any cline-yes">37x</span>
|
|
85
101
|
<span class="cline-any cline-neutral"> </span>
|
|
86
102
|
<span class="cline-any cline-neutral"> </span>
|
|
87
103
|
<span class="cline-any cline-neutral"> </span>
|
|
88
104
|
<span class="cline-any cline-neutral"> </span>
|
|
89
105
|
<span class="cline-any cline-yes">37x</span>
|
|
90
|
-
<span class="cline-any cline-yes">121x</span>
|
|
91
|
-
<span class="cline-any cline-yes">121x</span>
|
|
92
|
-
<span class="cline-any cline-yes">18x</span>
|
|
93
106
|
<span class="cline-any cline-neutral"> </span>
|
|
94
|
-
<span class="cline-any cline-yes">121x</span>
|
|
95
|
-
<span class="cline-any cline-yes">370x</span>
|
|
96
|
-
<span class="cline-any cline-yes">370x</span>
|
|
97
107
|
<span class="cline-any cline-neutral"> </span>
|
|
98
108
|
<span class="cline-any cline-neutral"> </span>
|
|
109
|
+
<span class="cline-any cline-neutral"> </span>
|
|
110
|
+
<span class="cline-any cline-yes">267x</span>
|
|
111
|
+
<span class="cline-any cline-yes">267x</span>
|
|
112
|
+
<span class="cline-any cline-yes">164x</span>
|
|
113
|
+
<span class="cline-any cline-yes">164x</span>
|
|
114
|
+
<span class="cline-any cline-neutral"> </span>
|
|
115
|
+
<span class="cline-any cline-yes">267x</span>
|
|
116
|
+
<span class="cline-any cline-yes">776x</span>
|
|
117
|
+
<span class="cline-any cline-yes">776x</span>
|
|
118
|
+
<span class="cline-any cline-neutral"> </span>
|
|
119
|
+
<span class="cline-any cline-neutral"> </span>
|
|
120
|
+
<span class="cline-any cline-neutral"> </span>
|
|
121
|
+
<span class="cline-any cline-neutral"> </span>
|
|
122
|
+
<span class="cline-any cline-yes">776x</span>
|
|
123
|
+
<span class="cline-any cline-neutral"> </span>
|
|
124
|
+
<span class="cline-any cline-neutral"> </span>
|
|
125
|
+
<span class="cline-any cline-no"> </span>
|
|
126
|
+
<span class="cline-any cline-no"> </span>
|
|
127
|
+
<span class="cline-any cline-no"> </span>
|
|
128
|
+
<span class="cline-any cline-no"> </span>
|
|
99
129
|
<span class="cline-any cline-no"> </span>
|
|
100
130
|
<span class="cline-any cline-neutral"> </span>
|
|
101
131
|
<span class="cline-any cline-neutral"> </span>
|
|
102
132
|
<span class="cline-any cline-neutral"> </span>
|
|
103
133
|
<span class="cline-any cline-neutral"> </span>
|
|
104
|
-
<span class="cline-any cline-yes">121x</span>
|
|
105
134
|
<span class="cline-any cline-neutral"> </span>
|
|
106
|
-
<span class="cline-any cline-neutral"> </span
|
|
135
|
+
<span class="cline-any cline-neutral"> </span>
|
|
136
|
+
<span class="cline-any cline-yes">267x</span>
|
|
137
|
+
<span class="cline-any cline-neutral"> </span>
|
|
138
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const { FieldTypes, FormulaTypes } = require("../../constants")
|
|
107
139
|
const { processStringSync } = require("@budibase/string-templates")
|
|
108
140
|
|
|
109
141
|
/**
|
|
110
142
|
* Looks through the rows provided and finds formulas - which it then processes.
|
|
111
143
|
*/
|
|
112
|
-
exports.processFormulas = (
|
|
144
|
+
exports.processFormulas = (
|
|
145
|
+
table,
|
|
146
|
+
rows,
|
|
147
|
+
{ dynamic, contextRows } = { dynamic: true }
|
|
148
|
+
) => {
|
|
113
149
|
const single = !Array.isArray(rows)
|
|
114
150
|
if (single) {
|
|
115
151
|
rows = [rows]
|
|
152
|
+
contextRows = contextRows ? [contextRows] : contextRows
|
|
116
153
|
}
|
|
117
154
|
for (let [column, schema] of Object.entries(table.schema)) {
|
|
118
|
-
|
|
155
|
+
const isStatic = schema.formulaType === FormulaTypes.STATIC
|
|
156
|
+
if (
|
|
157
|
+
schema.type !== FieldTypes.FORMULA ||
|
|
158
|
+
(<span class="branch-1 cbranch-no" title="branch not covered" >dynamic </span>&& <span class="branch-2 cbranch-no" title="branch not covered" >isStatic)</span> ||
|
|
159
|
+
(<span class="branch-3 cbranch-no" title="branch not covered" >!dynamic </span>&& <span class="branch-4 cbranch-no" title="branch not covered" >!isStatic)</span>
|
|
160
|
+
) {
|
|
119
161
|
continue
|
|
120
162
|
}
|
|
121
163
|
// iterate through rows and process formula
|
|
122
|
-
<span class="cstat-no" title="statement not covered" >
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
164
|
+
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < rows.length; i++) {</span>
|
|
165
|
+
<span class="cstat-no" title="statement not covered" > if (schema.formula) {</span>
|
|
166
|
+
let row = <span class="cstat-no" title="statement not covered" >rows[i]</span>
|
|
167
|
+
let context = <span class="cstat-no" title="statement not covered" >contextRows ? contextRows[i] : row</span>
|
|
168
|
+
<span class="cstat-no" title="statement not covered" > rows[i] = {</span>
|
|
169
|
+
...row,
|
|
170
|
+
[column]: processStringSync(schema.formula, context),
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
126
174
|
}
|
|
127
175
|
return single ? rows[0] : rows
|
|
128
176
|
}
|
|
@@ -133,7 +181,7 @@ exports.processFormulas = (table, rows) => {
|
|
|
133
181
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
134
182
|
Code coverage generated by
|
|
135
183
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
136
|
-
at Mon Jan 31 2022
|
|
184
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
137
185
|
</div>
|
|
138
186
|
</div>
|
|
139
187
|
<script src="../../prettify.js"></script>
|
|
@@ -136,7 +136,7 @@ module.exports = ScriptRunner
|
|
|
136
136
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
137
137
|
Code coverage generated by
|
|
138
138
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
139
|
-
at Mon Jan 31 2022
|
|
139
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
140
140
|
</div>
|
|
141
141
|
</div>
|
|
142
142
|
<script src="../prettify.js"></script>
|
|
@@ -274,7 +274,7 @@ exports.CURRENTLY_SUPPORTED_LEVELS = CURRENTLY_SUPPORTED_LEVELS
|
|
|
274
274
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
275
275
|
Code coverage generated by
|
|
276
276
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
277
|
-
at Mon Jan 31 2022
|
|
277
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
278
278
|
</div>
|
|
279
279
|
</div>
|
|
280
280
|
<script src="../prettify.js"></script>
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
86
86
|
Code coverage generated by
|
|
87
87
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
88
|
-
at Mon Jan 31 2022
|
|
88
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
89
89
|
</div>
|
|
90
90
|
</div>
|
|
91
91
|
<script src="../prettify.js"></script>
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
126
126
|
Code coverage generated by
|
|
127
127
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
128
|
-
at Mon Jan 31 2022
|
|
128
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
<script src="../../prettify.js"></script>
|
|
@@ -340,7 +340,7 @@ exports.update = async (property, usage, opts = { dryRun: false }) => {
|
|
|
340
340
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
341
341
|
Code coverage generated by
|
|
342
342
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
343
|
-
at Mon Jan 31 2022
|
|
343
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
344
344
|
</div>
|
|
345
345
|
</div>
|
|
346
346
|
<script src="../../prettify.js"></script>
|
|
@@ -286,7 +286,7 @@ exports.getUniqueRows = async appIds => {
|
|
|
286
286
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
287
287
|
Code coverage generated by
|
|
288
288
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
289
|
-
at Mon Jan 31 2022
|
|
289
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
290
290
|
</div>
|
|
291
291
|
</div>
|
|
292
292
|
<script src="../../prettify.js"></script>
|
|
@@ -118,7 +118,7 @@ function <span class="fstat-no" title="function not covered" >resetQuotasIfRequi
|
|
|
118
118
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
119
119
|
Code coverage generated by
|
|
120
120
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
121
|
-
at Mon Jan 31 2022
|
|
121
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
122
122
|
</div>
|
|
123
123
|
</div>
|
|
124
124
|
<script src="../../prettify.js"></script>
|
|
@@ -136,7 +136,7 @@ exports.getFullUser = async (ctx, userId) => {
|
|
|
136
136
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
137
137
|
Code coverage generated by
|
|
138
138
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
139
|
-
at Mon Jan 31 2022
|
|
139
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
140
140
|
</div>
|
|
141
141
|
</div>
|
|
142
142
|
<script src="../prettify.js"></script>
|
|
@@ -334,7 +334,7 @@ exports.removeAppFromUserRoles = async (ctx, appId) => {
|
|
|
334
334
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
335
335
|
Code coverage generated by
|
|
336
336
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
337
|
-
at Mon Jan 31 2022
|
|
337
|
+
at Mon Jan 31 2022 16:01:47 GMT+0000 (Coordinated Universal Time)
|
|
338
338
|
</div>
|
|
339
339
|
</div>
|
|
340
340
|
<script src="../prettify.js"></script>
|