@budibase/server 0.9.167-alpha.4 → 0.9.167-alpha.8

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.
Files changed (178) hide show
  1. package/builder/assets/{index.60f832ce.js → index.553837db.js} +34 -34
  2. package/builder/assets/{index.18ad7651.css → index.c4a1fb7f.css} +1 -1
  3. package/builder/assets/{vendor.60887453.js → vendor.278a305c.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +273 -245
  6. package/coverage/coverage-final.json +9 -8
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/index.html +26 -26
  19. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query.js.html +129 -24
  24. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/script.js.html +12 -57
  34. package/coverage/lcov-report/api/controllers/table/index.html +10 -10
  35. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/utils.js.html +8 -38
  37. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  45. package/coverage/lcov-report/api/index.html +1 -1
  46. package/coverage/lcov-report/api/index.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.html +1 -1
  60. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/query.js.html +9 -3
  66. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  77. package/coverage/lcov-report/automations/actions.js.html +31 -10
  78. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  79. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  80. package/coverage/lcov-report/automations/index.html +19 -19
  81. package/coverage/lcov-report/automations/index.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/index.html +1 -1
  91. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  100. package/coverage/lcov-report/automations/thread.js.html +54 -12
  101. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  110. package/coverage/lcov-report/automations/utils.js.html +1 -1
  111. package/coverage/lcov-report/constants/index.html +1 -1
  112. package/coverage/lcov-report/constants/index.js.html +1 -1
  113. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  114. package/coverage/lcov-report/constants/screens.js.html +1 -1
  115. package/coverage/lcov-report/db/client.js.html +1 -1
  116. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  117. package/coverage/lcov-report/db/index.html +1 -1
  118. package/coverage/lcov-report/db/index.js.html +1 -1
  119. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +12 -12
  120. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  121. package/coverage/lcov-report/db/linkedRows/index.js.html +9 -9
  122. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  123. package/coverage/lcov-report/db/newid.js.html +1 -1
  124. package/coverage/lcov-report/db/utils.js.html +1 -1
  125. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  126. package/coverage/lcov-report/events/index.html +1 -1
  127. package/coverage/lcov-report/events/index.js.html +1 -1
  128. package/coverage/lcov-report/events/utils.js.html +1 -1
  129. package/coverage/lcov-report/index.html +37 -37
  130. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  131. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  132. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  133. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  134. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  135. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  136. package/coverage/lcov-report/middleware/index.html +1 -1
  137. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  138. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  139. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  140. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  141. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  142. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  143. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  144. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  145. package/coverage/lcov-report/utilities/global.js.html +1 -1
  146. package/coverage/lcov-report/utilities/index.html +22 -7
  147. package/coverage/lcov-report/utilities/index.js.html +1 -1
  148. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  149. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  150. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  151. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  152. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  153. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  154. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  155. package/coverage/lcov-report/utilities/scriptRunner.js.html +143 -0
  156. package/coverage/lcov-report/utilities/security.js.html +1 -1
  157. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  158. package/coverage/lcov-report/utilities/users.js.html +1 -1
  159. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  160. package/coverage/lcov.info +450 -402
  161. package/dist/api/controllers/query.js +26 -8
  162. package/dist/api/controllers/script.js +4 -16
  163. package/dist/api/controllers/table/utils.js +2 -10
  164. package/dist/api/routes/query.js +3 -1
  165. package/dist/automations/actions.js +9 -3
  166. package/dist/automations/thread.js +14 -3
  167. package/dist/package.json +5 -4
  168. package/dist/tsconfig.tsbuildinfo +1 -1
  169. package/dist/utilities/scriptRunner.js +19 -0
  170. package/package.json +6 -5
  171. package/src/api/controllers/query.js +46 -11
  172. package/src/api/controllers/script.js +4 -19
  173. package/src/api/controllers/table/utils.js +2 -12
  174. package/src/api/routes/query.js +3 -1
  175. package/src/automations/actions.js +10 -3
  176. package/src/automations/thread.js +17 -3
  177. package/src/integrations/tests/mongo.spec.js +10 -6
  178. package/src/utilities/scriptRunner.js +21 -0
@@ -169,7 +169,7 @@ exports.endUserPing = <span class="fstat-no" title="function not covered" >as</s
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
172
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
172
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
173
173
  </div>
174
174
  </div>
175
175
  <script src="../../prettify.js"></script>
@@ -226,7 +226,7 @@ exports.update = async function (ctx) {
226
226
  <div class='footer quiet pad2 space-top1 center small'>
227
227
  Code coverage generated by
228
228
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
229
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
229
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
230
230
  </div>
231
231
  </div>
232
232
  <script src="../../prettify.js"></script>
@@ -1120,7 +1120,7 @@ const createEmptyAppPackage = async (ctx, app) =&gt; {
1120
1120
  <div class='footer quiet pad2 space-top1 center small'>
1121
1121
  Code coverage generated by
1122
1122
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1123
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
1123
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
1124
1124
  </div>
1125
1125
  </div>
1126
1126
  <script src="../../prettify.js"></script>
@@ -193,7 +193,7 @@ exports.fetchSelf = async ctx =&gt; {
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
196
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
196
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
197
197
  </div>
198
198
  </div>
199
199
  <script src="../../prettify.js"></script>
@@ -736,7 +736,7 @@ exports.test = async function (ctx) {
736
736
  <div class='footer quiet pad2 space-top1 center small'>
737
737
  Code coverage generated by
738
738
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
739
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
739
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
740
740
  </div>
741
741
  </div>
742
742
  <script src="../../prettify.js"></script>
@@ -94,7 +94,7 @@ exports.exportAppDump = async function (ctx) {
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
97
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
97
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  </div>
100
100
  <script src="../../prettify.js"></script>
@@ -397,7 +397,7 @@ exports.importApps = <span class="fstat-no" title="function not covered" >as</sp
397
397
  <div class='footer quiet pad2 space-top1 center small'>
398
398
  Code coverage generated by
399
399
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
400
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
400
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
401
401
  </div>
402
402
  </div>
403
403
  <script src="../../prettify.js"></script>
@@ -169,7 +169,7 @@ exports.fetchAppComponentDefinitions = async function (ctx) {
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
172
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
172
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
173
173
  </div>
174
174
  </div>
175
175
  <script src="../../prettify.js"></script>
@@ -505,7 +505,7 @@ const buildSchemaHelper = <span class="fstat-no" title="function not covered" >a
505
505
  <div class='footer quiet pad2 space-top1 center small'>
506
506
  Code coverage generated by
507
507
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
508
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
508
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
509
509
  </div>
510
510
  </div>
511
511
  <script src="../../prettify.js"></script>
@@ -400,7 +400,7 @@ exports.getBudibaseVersion = <span class="fstat-no" title="function not covered"
400
400
  <div class='footer quiet pad2 space-top1 center small'>
401
401
  Code coverage generated by
402
402
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
403
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
403
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
404
404
  </div>
405
405
  </div>
406
406
  <script src="../../prettify.js"></script>
@@ -130,7 +130,7 @@ exports.getDeployedApps = <span class="fstat-no" title="function not covered" >a
130
130
  <div class='footer quiet pad2 space-top1 center small'>
131
131
  Code coverage generated by
132
132
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
133
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
133
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
134
134
  </div>
135
135
  </div>
136
136
  <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">78.63% </span>
26
+ <span class="strong">78.83% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>791/1006</span>
28
+ <span class='fraction'>797/1011</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">55.7% </span>
33
+ <span class="strong">55.63% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>171/307</span>
35
+ <span class='fraction'>173/311</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">77.62% </span>
40
+ <span class="strong">78.47% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>111/143</span>
42
+ <span class='fraction'>113/144</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">78.83% </span>
47
+ <span class="strong">79.1% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>782/992</span>
49
+ <span class='fraction'>787/995</span>
50
50
  </div>
51
51
 
52
52
 
@@ -299,17 +299,17 @@
299
299
 
300
300
  <tr>
301
301
  <td class="file medium" data-value="query.js"><a href="query.js.html">query.js</a></td>
302
- <td data-value="79.55" class="pic medium">
303
- <div class="chart"><div class="cover-fill" style="width: 79%"></div><div class="cover-empty" style="width: 21%"></div></div>
302
+ <td data-value="77.78" class="pic medium">
303
+ <div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
304
304
  </td>
305
- <td data-value="79.55" class="pct medium">79.55%</td>
306
- <td data-value="88" class="abs medium">70/88</td>
307
- <td data-value="54.05" class="pct medium">54.05%</td>
308
- <td data-value="37" class="abs medium">20/37</td>
309
- <td data-value="100" class="pct high">100%</td>
310
- <td data-value="10" class="abs high">10/10</td>
311
- <td data-value="79.31" class="pct medium">79.31%</td>
312
- <td data-value="87" class="abs medium">69/87</td>
305
+ <td data-value="77.78" class="pct medium">77.78%</td>
306
+ <td data-value="99" class="abs medium">77/99</td>
307
+ <td data-value="53.66" class="pct medium">53.66%</td>
308
+ <td data-value="41" class="abs medium">22/41</td>
309
+ <td data-value="92.31" class="pct high">92.31%</td>
310
+ <td data-value="13" class="abs high">12/13</td>
311
+ <td data-value="78.13" class="pct medium">78.13%</td>
312
+ <td data-value="96" class="abs medium">75/96</td>
313
313
  </tr>
314
314
 
315
315
  <tr>
@@ -359,17 +359,17 @@
359
359
 
360
360
  <tr>
361
361
  <td class="file low" data-value="script.js"><a href="script.js.html">script.js</a></td>
362
- <td data-value="30.77" class="pic low">
363
- <div class="chart"><div class="cover-fill" style="width: 30%"></div><div class="cover-empty" style="width: 70%"></div></div>
362
+ <td data-value="42.86" class="pic low">
363
+ <div class="chart"><div class="cover-fill" style="width: 42%"></div><div class="cover-empty" style="width: 58%"></div></div>
364
364
  </td>
365
- <td data-value="30.77" class="pct low">30.77%</td>
366
- <td data-value="13" class="abs low">4/13</td>
365
+ <td data-value="42.86" class="pct low">42.86%</td>
366
+ <td data-value="7" class="abs low">3/7</td>
367
367
  <td data-value="100" class="pct high">100%</td>
368
368
  <td data-value="0" class="abs high">0/0</td>
369
369
  <td data-value="0" class="pct low">0%</td>
370
- <td data-value="4" class="abs low">0/4</td>
371
- <td data-value="30.77" class="pct low">30.77%</td>
372
- <td data-value="13" class="abs low">4/13</td>
370
+ <td data-value="2" class="abs low">0/2</td>
371
+ <td data-value="42.86" class="pct low">42.86%</td>
372
+ <td data-value="7" class="abs low">3/7</td>
373
373
  </tr>
374
374
 
375
375
  <tr>
@@ -425,7 +425,7 @@
425
425
  <div class='footer quiet pad2 space-top1 center small'>
426
426
  Code coverage generated by
427
427
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
428
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
428
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
429
429
  </div>
430
430
  </div>
431
431
  <script src="../../prettify.js"></script>
@@ -100,7 +100,7 @@ exports.find = async function (ctx) {
100
100
  <div class='footer quiet pad2 space-top1 center small'>
101
101
  Code coverage generated by
102
102
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
103
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
103
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
104
104
  </div>
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
@@ -217,7 +217,7 @@ exports.destroy = async function (ctx) {
217
217
  <div class='footer quiet pad2 space-top1 center small'>
218
218
  Code coverage generated by
219
219
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
220
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
220
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
221
221
  </div>
222
222
  </div>
223
223
  <script src="../../prettify.js"></script>
@@ -202,7 +202,7 @@ exports.getMetadata = async ctx =&gt; {
202
202
  <div class='footer quiet pad2 space-top1 center small'>
203
203
  Code coverage generated by
204
204
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
205
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
205
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
206
206
  </div>
207
207
  </div>
208
208
  <script src="../../prettify.js"></script>
@@ -586,7 +586,7 @@ exports.removePermission = async function (ctx) {
586
586
  <div class='footer quiet pad2 space-top1 center small'>
587
587
  Code coverage generated by
588
588
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
589
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
589
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
590
590
  </div>
591
591
  </div>
592
592
  <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">79.55% </span>
26
+ <span class="strong">77.78% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>70/88</span>
28
+ <span class='fraction'>77/99</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">54.05% </span>
33
+ <span class="strong">53.66% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>20/37</span>
35
+ <span class='fraction'>22/41</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">92.31% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/10</span>
42
+ <span class='fraction'>12/13</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">79.31% </span>
47
+ <span class="strong">78.13% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>69/87</span>
49
+ <span class='fraction'>75/96</span>
50
50
  </div>
51
51
 
52
52
 
@@ -233,7 +233,43 @@
233
233
  <a name='L174'></a><a href='#L174'>174</a>
234
234
  <a name='L175'></a><a href='#L175'>175</a>
235
235
  <a name='L176'></a><a href='#L176'>176</a>
236
- <a name='L177'></a><a href='#L177'>177</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
236
+ <a name='L177'></a><a href='#L177'>177</a>
237
+ <a name='L178'></a><a href='#L178'>178</a>
238
+ <a name='L179'></a><a href='#L179'>179</a>
239
+ <a name='L180'></a><a href='#L180'>180</a>
240
+ <a name='L181'></a><a href='#L181'>181</a>
241
+ <a name='L182'></a><a href='#L182'>182</a>
242
+ <a name='L183'></a><a href='#L183'>183</a>
243
+ <a name='L184'></a><a href='#L184'>184</a>
244
+ <a name='L185'></a><a href='#L185'>185</a>
245
+ <a name='L186'></a><a href='#L186'>186</a>
246
+ <a name='L187'></a><a href='#L187'>187</a>
247
+ <a name='L188'></a><a href='#L188'>188</a>
248
+ <a name='L189'></a><a href='#L189'>189</a>
249
+ <a name='L190'></a><a href='#L190'>190</a>
250
+ <a name='L191'></a><a href='#L191'>191</a>
251
+ <a name='L192'></a><a href='#L192'>192</a>
252
+ <a name='L193'></a><a href='#L193'>193</a>
253
+ <a name='L194'></a><a href='#L194'>194</a>
254
+ <a name='L195'></a><a href='#L195'>195</a>
255
+ <a name='L196'></a><a href='#L196'>196</a>
256
+ <a name='L197'></a><a href='#L197'>197</a>
257
+ <a name='L198'></a><a href='#L198'>198</a>
258
+ <a name='L199'></a><a href='#L199'>199</a>
259
+ <a name='L200'></a><a href='#L200'>200</a>
260
+ <a name='L201'></a><a href='#L201'>201</a>
261
+ <a name='L202'></a><a href='#L202'>202</a>
262
+ <a name='L203'></a><a href='#L203'>203</a>
263
+ <a name='L204'></a><a href='#L204'>204</a>
264
+ <a name='L205'></a><a href='#L205'>205</a>
265
+ <a name='L206'></a><a href='#L206'>206</a>
266
+ <a name='L207'></a><a href='#L207'>207</a>
267
+ <a name='L208'></a><a href='#L208'>208</a>
268
+ <a name='L209'></a><a href='#L209'>209</a>
269
+ <a name='L210'></a><a href='#L210'>210</a>
270
+ <a name='L211'></a><a href='#L211'>211</a>
271
+ <a name='L212'></a><a href='#L212'>212</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
272
+ <span class="cline-any cline-yes">34x</span>
237
273
  <span class="cline-any cline-yes">34x</span>
238
274
  <span class="cline-any cline-yes">34x</span>
239
275
  <span class="cline-any cline-yes">34x</span>
@@ -264,8 +300,35 @@
264
300
  <span class="cline-any cline-neutral">&nbsp;</span>
265
301
  <span class="cline-any cline-neutral">&nbsp;</span>
266
302
  <span class="cline-any cline-yes">2x</span>
303
+ <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-yes">2x</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-yes">2x</span>
315
+ <span class="cline-any cline-no">&nbsp;</span>
316
+ <span class="cline-any cline-no">&nbsp;</span>
317
+ <span class="cline-any cline-neutral">&nbsp;</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-yes">2x</span>
321
+ <span class="cline-any cline-no">&nbsp;</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-yes">2x</span>
267
326
  <span class="cline-any cline-no">&nbsp;</span>
268
327
  <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-yes">2x</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
332
  <span class="cline-any cline-yes">2x</span>
270
333
  <span class="cline-any cline-neutral">&nbsp;</span>
271
334
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -358,14 +421,15 @@
358
421
  <span class="cline-any cline-neutral">&nbsp;</span>
359
422
  <span class="cline-any cline-neutral">&nbsp;</span>
360
423
  <span class="cline-any cline-yes">1x</span>
361
- <span class="cline-any cline-neutral">&nbsp;</span>
362
424
  <span class="cline-any cline-yes">1x</span>
363
- <span class="cline-any cline-neutral">&nbsp;</span>
364
425
  <span class="cline-any cline-yes">1x</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
427
  <span class="cline-any cline-yes">1x</span>
366
428
  <span class="cline-any cline-neutral">&nbsp;</span>
367
429
  <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-yes">1x</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
433
  <span class="cline-any cline-neutral">&nbsp;</span>
370
434
  <span class="cline-any cline-yes">1x</span>
371
435
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -393,9 +457,15 @@
393
457
  <span class="cline-any cline-neutral">&nbsp;</span>
394
458
  <span class="cline-any cline-neutral">&nbsp;</span>
395
459
  <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-yes">1x</span>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
462
  <span class="cline-any cline-neutral">&nbsp;</span>
397
463
  <span class="cline-any cline-yes">1x</span>
398
464
  <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
469
  <span class="cline-any cline-yes">1x</span>
400
470
  <span class="cline-any cline-neutral">&nbsp;</span>
401
471
  <span class="cline-any cline-yes">1x</span>
@@ -415,6 +485,7 @@ const { generateQueryID, getQueryParams } = require("../../db/utils")
415
485
  const { integrations } = require("../../integrations")
416
486
  const { BaseQueryVerbs } = require("../../constants")
417
487
  const env = require("../../environment")
488
+ const ScriptRunner = require("../../utilities/scriptRunner")
418
489
  &nbsp;
419
490
  // simple function to append "readable" to all read queries
420
491
  function enrichQueries(input) {
@@ -439,12 +510,39 @@ function formatResponse(resp) {
439
510
  <span class="cstat-no" title="statement not covered" > resp = { response: resp }</span>
440
511
  }
441
512
  }
442
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(resp)) {
443
- <span class="cstat-no" title="statement not covered" > resp = [resp]</span>
444
- }
445
513
  return resp
446
514
  }
447
515
  &nbsp;
516
+ async function runAndTransform(
517
+ integration,
518
+ queryVerb,
519
+ enrichedQuery,
520
+ transformer
521
+ ) {
522
+ let rows = formatResponse(await integration[queryVerb](enrichedQuery))
523
+ &nbsp;
524
+ // transform as required
525
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (transformer) {
526
+ const runner = <span class="cstat-no" title="statement not covered" >new ScriptRunner(transformer, { data: rows })</span>
527
+ <span class="cstat-no" title="statement not covered" > rows = runner.execute()</span>
528
+ }
529
+ &nbsp;
530
+ // needs to an array for next step
531
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(rows)) {
532
+ <span class="cstat-no" title="statement not covered" > rows = [rows]</span>
533
+ }
534
+ &nbsp;
535
+ // map into JSON if just raw primitive here
536
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (rows.find(row =&gt; typeof row !== "object")) {
537
+ <span class="cstat-no" title="statement not covered" > rows = rows.map(<span class="fstat-no" title="function not covered" >va</span>lue =&gt; (<span class="cstat-no" title="statement not covered" >{ value })</span>)</span>
538
+ }
539
+ &nbsp;
540
+ // get all the potential fields in the schema
541
+ let keys = rows.flatMap(Object.keys)
542
+ &nbsp;
543
+ return { rows, keys }
544
+ }
545
+ &nbsp;
448
546
  exports.fetch = async function (ctx) {
449
547
  const db = new CouchDB(ctx.appId)
450
548
  &nbsp;
@@ -533,15 +631,16 @@ exports.preview = async function (ctx) {
533
631
  ctx.throw(400, "Integration type does not exist.")
534
632
  }
535
633
  &nbsp;
536
- const { fields, parameters, queryVerb } = ctx.request.body
537
- &nbsp;
634
+ const { fields, parameters, queryVerb, transformer } = ctx.request.body
538
635
  const enrichedQuery = await enrichQueryFields(fields, parameters)
539
- &nbsp;
540
636
  const integration = new Integration(datasource.config)
541
- const rows = formatResponse(await integration[queryVerb](enrichedQuery))
542
637
  &nbsp;
543
- // get all the potential fields in the schema
544
- const keys = rows.flatMap(Object.keys)
638
+ const { rows, keys } = await runAndTransform(
639
+ integration,
640
+ queryVerb,
641
+ enrichedQuery,
642
+ transformer
643
+ )
545
644
  &nbsp;
546
645
  ctx.body = {
547
646
  rows,
@@ -569,10 +668,16 @@ exports.execute = async function (ctx) {
569
668
  query.fields,
570
669
  ctx.request.body.parameters
571
670
  )
572
- &nbsp;
573
671
  const integration = new Integration(datasource.config)
672
+ &nbsp;
574
673
  // call the relevant CRUD method on the integration class
575
- ctx.body = formatResponse(await integration[query.queryVerb](enrichedQuery))
674
+ const { rows } = await runAndTransform(
675
+ integration,
676
+ query.queryVerb,
677
+ enrichedQuery,
678
+ query.transformer
679
+ )
680
+ ctx.body = rows
576
681
  // cleanup
577
682
  <span class="missing-if-branch" title="if path not taken" >I</span>if (integration.end) {
578
683
  <span class="cstat-no" title="statement not covered" > integration.end()</span>
@@ -592,7 +697,7 @@ exports.destroy = async function (ctx) {
592
697
  <div class='footer quiet pad2 space-top1 center small'>
593
698
  Code coverage generated by
594
699
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
595
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
700
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
596
701
  </div>
597
702
  </div>
598
703
  <script src="../../prettify.js"></script>
@@ -358,7 +358,7 @@ exports.destroy = async function (ctx) {
358
358
  <div class='footer quiet pad2 space-top1 center small'>
359
359
  Code coverage generated by
360
360
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
361
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
361
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
362
362
  </div>
363
363
  </div>
364
364
  <script src="../../prettify.js"></script>
@@ -343,7 +343,7 @@ exports.clientFetch = async ctx =&gt; {
343
343
  <div class='footer quiet pad2 space-top1 center small'>
344
344
  Code coverage generated by
345
345
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
346
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
346
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
347
347
  </div>
348
348
  </div>
349
349
  <script src="../../prettify.js"></script>
@@ -748,7 +748,7 @@ exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >
748
748
  <div class='footer quiet pad2 space-top1 center small'>
749
749
  Code coverage generated by
750
750
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
751
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
751
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
752
752
  </div>
753
753
  </div>
754
754
  <script src="../../../prettify.js"></script>
@@ -155,7 +155,7 @@
155
155
  <div class='footer quiet pad2 space-top1 center small'>
156
156
  Code coverage generated by
157
157
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
158
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
158
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
159
159
  </div>
160
160
  </div>
161
161
  <script src="../../../prettify.js"></script>
@@ -481,7 +481,7 @@ exports.fetchEnrichedRow = async function (ctx) {
481
481
  <div class='footer quiet pad2 space-top1 center small'>
482
482
  Code coverage generated by
483
483
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
484
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
484
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
485
485
  </div>
486
486
  </div>
487
487
  <script src="../../../prettify.js"></script>
@@ -1405,7 +1405,7 @@ exports.fetchEnrichedRow = async ctx =&gt; {
1405
1405
  <div class='footer quiet pad2 space-top1 center small'>
1406
1406
  Code coverage generated by
1407
1407
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1408
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
1408
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
1409
1409
  </div>
1410
1410
  </div>
1411
1411
  <script src="../../../prettify.js"></script>
@@ -1228,7 +1228,7 @@ exports.fullSearch = <span class="fstat-no" title="function not covered" >as</sp
1228
1228
  <div class='footer quiet pad2 space-top1 center small'>
1229
1229
  Code coverage generated by
1230
1230
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1231
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
1231
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
1232
1232
  </div>
1233
1233
  </div>
1234
1234
  <script src="../../../prettify.js"></script>
@@ -328,7 +328,7 @@ exports.validate = async ({ appId, tableId, row, table }) =&gt; {
328
328
  <div class='footer quiet pad2 space-top1 center small'>
329
329
  Code coverage generated by
330
330
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
331
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
331
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
332
332
  </div>
333
333
  </div>
334
334
  <script src="../../../prettify.js"></script>
@@ -208,7 +208,7 @@ exports.destroy = async ctx =&gt; {
208
208
  <div class='footer quiet pad2 space-top1 center small'>
209
209
  Code coverage generated by
210
210
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
211
- at Thu Oct 14 2021 16:39:55 GMT+0000 (Coordinated Universal Time)
211
+ at Fri Oct 15 2021 14:55:38 GMT+0000 (Coordinated Universal Time)
212
212
  </div>
213
213
  </div>
214
214
  <script src="../../prettify.js"></script>