@budibase/server 0.9.125-alpha.4 → 0.9.125-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 (270) hide show
  1. package/builder/assets/{index.dc48c234.js → index.cf133375.js} +2 -2
  2. package/builder/assets/{vendor.4af73c18.js → vendor.d8e1ee7b.js} +1 -1
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +1659 -1493
  5. package/coverage/coverage-final.json +101 -87
  6. package/coverage/lcov-report/api/controllers/analytics.js.html +3 -3
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +6 -6
  8. package/coverage/lcov-report/api/controllers/application.js.html +39 -39
  9. package/coverage/lcov-report/api/controllers/auth.js.html +6 -6
  10. package/coverage/lcov-report/api/controllers/automation.js.html +151 -361
  11. package/coverage/lcov-report/api/controllers/backup.js.html +3 -3
  12. package/coverage/lcov-report/api/controllers/component.js.html +5 -5
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/dev.js.html +15 -15
  15. package/coverage/lcov-report/api/controllers/hosting.js.html +8 -8
  16. package/coverage/lcov-report/api/controllers/index.html +39 -24
  17. package/coverage/lcov-report/api/controllers/integration.js.html +4 -4
  18. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/metadata.js.html +218 -0
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query.js.html +6 -12
  22. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/routing.js.html +9 -9
  24. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/index.html +20 -20
  26. package/coverage/lcov-report/api/controllers/row/index.js.html +14 -14
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +95 -62
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/utils.js.html +10 -10
  30. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.js.html +24 -24
  34. package/coverage/lcov-report/api/controllers/table/utils.js.html +32 -32
  35. package/coverage/lcov-report/api/controllers/templates.js.html +5 -5
  36. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  42. package/coverage/lcov-report/api/index.html +1 -1
  43. package/coverage/lcov-report/api/index.js.html +23 -23
  44. package/coverage/lcov-report/api/routes/analytics.js.html +6 -6
  45. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -8
  46. package/coverage/lcov-report/api/routes/application.js.html +8 -8
  47. package/coverage/lcov-report/api/routes/auth.js.html +6 -6
  48. package/coverage/lcov-report/api/routes/automation.js.html +41 -26
  49. package/coverage/lcov-report/api/routes/backup.js.html +8 -8
  50. package/coverage/lcov-report/api/routes/component.js.html +8 -8
  51. package/coverage/lcov-report/api/routes/datasource.js.html +13 -13
  52. package/coverage/lcov-report/api/routes/deploy.js.html +8 -8
  53. package/coverage/lcov-report/api/routes/dev.js.html +11 -11
  54. package/coverage/lcov-report/api/routes/hosting.js.html +8 -8
  55. package/coverage/lcov-report/api/routes/index.html +24 -9
  56. package/coverage/lcov-report/api/routes/index.js.html +36 -30
  57. package/coverage/lcov-report/api/routes/integration.js.html +8 -8
  58. package/coverage/lcov-report/api/routes/layout.js.html +8 -8
  59. package/coverage/lcov-report/api/routes/metadata.js.html +194 -0
  60. package/coverage/lcov-report/api/routes/permission.js.html +12 -12
  61. package/coverage/lcov-report/api/routes/query.js.html +13 -13
  62. package/coverage/lcov-report/api/routes/role.js.html +12 -12
  63. package/coverage/lcov-report/api/routes/routing.js.html +8 -8
  64. package/coverage/lcov-report/api/routes/row.js.html +10 -10
  65. package/coverage/lcov-report/api/routes/screen.js.html +11 -11
  66. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/static.js.html +13 -13
  68. package/coverage/lcov-report/api/routes/table.js.html +12 -12
  69. package/coverage/lcov-report/api/routes/templates.js.html +8 -8
  70. package/coverage/lcov-report/api/routes/user.js.html +9 -9
  71. package/coverage/lcov-report/api/routes/view.js.html +11 -11
  72. package/coverage/lcov-report/api/routes/webhook.js.html +11 -11
  73. package/coverage/lcov-report/automations/actions.js.html +38 -107
  74. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  75. package/coverage/lcov-report/automations/bullboard.js.html +46 -16
  76. package/coverage/lcov-report/automations/index.html +67 -67
  77. package/coverage/lcov-report/automations/index.js.html +26 -128
  78. package/coverage/lcov-report/automations/steps/bash.js.html +33 -12
  79. package/coverage/lcov-report/automations/steps/createRow.js.html +8 -8
  80. package/coverage/lcov-report/automations/steps/delay.js.html +45 -6
  81. package/coverage/lcov-report/automations/steps/deleteRow.js.html +8 -8
  82. package/coverage/lcov-report/automations/steps/discord.js.html +329 -0
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +19 -31
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +18 -30
  85. package/coverage/lcov-report/automations/steps/filter.js.html +22 -19
  86. package/coverage/lcov-report/automations/steps/index.html +125 -65
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +341 -0
  88. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +26 -32
  89. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +9 -9
  90. package/coverage/lcov-report/automations/steps/serverLog.js.html +20 -8
  91. package/coverage/lcov-report/automations/steps/{sendgridEmail.js.html → slack.js.html} +57 -87
  92. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  93. package/coverage/lcov-report/automations/steps/utils.js.html +188 -0
  94. package/coverage/lcov-report/automations/steps/zapier.js.html +332 -0
  95. package/coverage/lcov-report/automations/thread.js.html +79 -76
  96. package/coverage/lcov-report/automations/triggerInfo/app.js.html +173 -0
  97. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +173 -0
  98. package/coverage/lcov-report/automations/triggerInfo/index.html +201 -0
  99. package/coverage/lcov-report/automations/triggerInfo/index.js.html +125 -0
  100. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +176 -0
  101. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +200 -0
  102. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +200 -0
  103. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +188 -0
  104. package/coverage/lcov-report/automations/triggers.js.html +54 -819
  105. package/coverage/lcov-report/automations/utils.js.html +557 -0
  106. package/coverage/lcov-report/constants/index.html +5 -5
  107. package/coverage/lcov-report/constants/index.js.html +19 -4
  108. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  109. package/coverage/lcov-report/constants/screens.js.html +2 -2
  110. package/coverage/lcov-report/db/client.js.html +1 -1
  111. package/coverage/lcov-report/db/index.html +19 -19
  112. package/coverage/lcov-report/db/index.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +73 -73
  114. package/coverage/lcov-report/db/linkedRows/index.html +17 -17
  115. package/coverage/lcov-report/db/linkedRows/index.js.html +79 -115
  116. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +31 -31
  117. package/coverage/lcov-report/db/newid.js.html +2 -2
  118. package/coverage/lcov-report/db/utils.js.html +79 -28
  119. package/coverage/lcov-report/events/AutomationEmitter.js.html +7 -7
  120. package/coverage/lcov-report/events/index.html +1 -1
  121. package/coverage/lcov-report/events/index.js.html +2 -2
  122. package/coverage/lcov-report/events/utils.js.html +1 -1
  123. package/coverage/lcov-report/index.html +115 -100
  124. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  125. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  126. package/coverage/lcov-report/{automations/logic.js.html → middleware/appInfo.js.html} +35 -38
  127. package/coverage/lcov-report/middleware/authorized.js.html +16 -16
  128. package/coverage/lcov-report/middleware/builder.js.html +15 -15
  129. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  130. package/coverage/lcov-report/middleware/index.html +23 -8
  131. package/coverage/lcov-report/middleware/joi-validator.js.html +6 -6
  132. package/coverage/lcov-report/middleware/resourceId.js.html +28 -28
  133. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  134. package/coverage/lcov-report/middleware/usageQuota.js.html +8 -8
  135. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  136. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  137. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  138. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  139. package/coverage/lcov-report/utilities/global.js.html +21 -21
  140. package/coverage/lcov-report/utilities/index.html +18 -18
  141. package/coverage/lcov-report/utilities/index.js.html +167 -14
  142. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +12 -12
  143. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  144. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
  146. package/coverage/lcov-report/utilities/rowProcessor/index.html +14 -14
  147. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +87 -51
  148. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +8 -8
  149. package/coverage/lcov-report/utilities/security.js.html +2 -2
  150. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  151. package/coverage/lcov-report/utilities/users.js.html +1 -1
  152. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  153. package/coverage/lcov.info +2641 -2357
  154. package/dist/api/controllers/automation.js +49 -127
  155. package/dist/api/controllers/deploy/index.js +17 -1
  156. package/dist/api/controllers/metadata.js +49 -0
  157. package/dist/api/controllers/query.js +0 -2
  158. package/dist/api/controllers/row/internal.js +33 -23
  159. package/dist/api/routes/automation.js +4 -5
  160. package/dist/api/routes/index.js +2 -0
  161. package/dist/api/routes/metadata.js +13 -0
  162. package/dist/api/routes/tests/utilities/TestFunctions.js +13 -0
  163. package/dist/app.js +1 -1
  164. package/dist/automations/actions.js +26 -46
  165. package/dist/automations/bullboard.js +10 -2
  166. package/dist/automations/index.js +11 -48
  167. package/dist/automations/steps/bash.js +11 -5
  168. package/dist/automations/steps/createRow.js +4 -4
  169. package/dist/automations/steps/delay.js +15 -2
  170. package/dist/automations/steps/deleteRow.js +4 -4
  171. package/dist/automations/steps/discord.js +91 -0
  172. package/dist/automations/steps/executeQuery.js +11 -14
  173. package/dist/automations/steps/executeScript.js +11 -14
  174. package/dist/automations/steps/filter.js +18 -17
  175. package/dist/automations/steps/integromat.js +94 -0
  176. package/dist/automations/steps/outgoingWebhook.js +12 -16
  177. package/dist/automations/steps/sendSmtpEmail.js +3 -3
  178. package/dist/automations/steps/serverLog.js +6 -2
  179. package/dist/automations/steps/slack.js +73 -0
  180. package/dist/automations/steps/updateRow.js +3 -3
  181. package/dist/automations/steps/utils.js +46 -0
  182. package/dist/automations/steps/zapier.js +91 -0
  183. package/dist/automations/tests/utilities/index.js +2 -12
  184. package/dist/automations/thread.js +23 -25
  185. package/dist/automations/triggerInfo/app.js +32 -0
  186. package/dist/automations/triggerInfo/cron.js +32 -0
  187. package/dist/automations/triggerInfo/index.js +15 -0
  188. package/dist/automations/triggerInfo/rowDeleted.js +33 -0
  189. package/dist/automations/triggerInfo/rowSaved.js +41 -0
  190. package/dist/automations/triggerInfo/rowUpdated.js +41 -0
  191. package/dist/automations/triggerInfo/webhook.js +37 -0
  192. package/dist/automations/triggers.js +27 -284
  193. package/dist/automations/utils.js +143 -0
  194. package/dist/constants/index.js +4 -0
  195. package/dist/db/linkedRows/index.js +14 -26
  196. package/dist/db/utils.js +14 -1
  197. package/dist/environment.js +1 -0
  198. package/dist/integrations/mysql.js +1 -1
  199. package/dist/middleware/appInfo.js +17 -0
  200. package/dist/middleware/usageQuota.js +1 -1
  201. package/dist/package.json +7 -6
  202. package/dist/tsconfig.tsbuildinfo +1 -1
  203. package/dist/utilities/fileSystem/index.js +0 -26
  204. package/dist/utilities/index.js +54 -0
  205. package/dist/utilities/redis.js +16 -1
  206. package/dist/utilities/rowProcessor/index.js +7 -4
  207. package/package.json +8 -7
  208. package/scripts/selfhost.js +8 -0
  209. package/src/api/controllers/automation.js +75 -145
  210. package/src/api/controllers/deploy/index.js +23 -1
  211. package/src/api/controllers/metadata.js +46 -0
  212. package/src/api/controllers/query.js +0 -2
  213. package/src/api/controllers/row/internal.js +34 -23
  214. package/src/api/routes/automation.js +16 -11
  215. package/src/api/routes/index.js +2 -0
  216. package/src/api/routes/metadata.js +38 -0
  217. package/src/api/routes/tests/automation.spec.js +4 -26
  218. package/src/api/routes/tests/metadata.spec.js +65 -0
  219. package/src/api/routes/tests/utilities/TestFunctions.js +14 -0
  220. package/src/app.ts +1 -1
  221. package/src/automations/actions.js +26 -49
  222. package/src/automations/bullboard.js +12 -2
  223. package/src/automations/index.js +11 -45
  224. package/src/automations/steps/bash.js +12 -5
  225. package/src/automations/steps/createRow.js +4 -4
  226. package/src/automations/steps/delay.js +15 -2
  227. package/src/automations/steps/deleteRow.js +4 -4
  228. package/src/automations/steps/discord.js +83 -0
  229. package/src/automations/steps/executeQuery.js +11 -15
  230. package/src/automations/steps/executeScript.js +11 -15
  231. package/src/automations/steps/filter.js +18 -17
  232. package/src/automations/steps/integromat.js +87 -0
  233. package/src/automations/steps/outgoingWebhook.js +12 -14
  234. package/src/automations/steps/sendSmtpEmail.js +3 -3
  235. package/src/automations/steps/serverLog.js +6 -2
  236. package/src/automations/steps/slack.js +64 -0
  237. package/src/automations/steps/updateRow.js +3 -3
  238. package/src/automations/steps/utils.js +36 -0
  239. package/src/automations/steps/zapier.js +84 -0
  240. package/src/automations/tests/automation.spec.js +3 -66
  241. package/src/automations/tests/delay.spec.js +1 -1
  242. package/src/automations/tests/filter.spec.js +13 -13
  243. package/src/automations/tests/utilities/index.js +2 -13
  244. package/src/automations/thread.js +27 -26
  245. package/src/automations/triggerInfo/app.js +31 -0
  246. package/src/automations/triggerInfo/cron.js +31 -0
  247. package/src/automations/triggerInfo/index.js +15 -0
  248. package/src/automations/triggerInfo/rowDeleted.js +32 -0
  249. package/src/automations/triggerInfo/rowSaved.js +40 -0
  250. package/src/automations/triggerInfo/rowUpdated.js +40 -0
  251. package/src/automations/triggerInfo/webhook.js +36 -0
  252. package/src/automations/triggers.js +33 -288
  253. package/src/automations/utils.js +159 -0
  254. package/src/constants/index.js +5 -0
  255. package/src/db/linkedRows/index.js +15 -27
  256. package/src/db/tests/linkTests.spec.js +0 -12
  257. package/src/db/utils.js +17 -0
  258. package/src/environment.js +1 -0
  259. package/src/integrations/mysql.ts +1 -1
  260. package/src/middleware/appInfo.js +19 -0
  261. package/src/middleware/usageQuota.js +1 -1
  262. package/src/utilities/fileSystem/index.js +0 -30
  263. package/src/utilities/index.js +51 -0
  264. package/src/utilities/redis.js +18 -1
  265. package/src/utilities/rowProcessor/index.js +16 -4
  266. package/dist/automations/logic.js +0 -17
  267. package/dist/automations/steps/sendgridEmail.js +0 -85
  268. package/src/automations/logic.js +0 -20
  269. package/src/automations/steps/sendgridEmail.js +0 -74
  270. package/src/automations/tests/sendEmail.spec.js +0 -36
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">96.1% </span>
26
+ <span class="strong">96.08% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>296/308</span>
28
+ <span class='fraction'>294/306</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">85.82% </span>
33
+ <span class="strong">86.57% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>115/134</span>
35
+ <span class='fraction'>116/134</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">94.83% </span>
40
+ <span class="strong">94.74% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>55/58</span>
42
+ <span class='fraction'>54/57</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">96.31% </span>
47
+ <span class="strong">96.28% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>287/298</span>
49
+ <span class='fraction'>285/296</span>
50
50
  </div>
51
51
 
52
52
 
@@ -89,17 +89,17 @@
89
89
 
90
90
  <tr>
91
91
  <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
92
- <td data-value="94.95" class="pic high">
92
+ <td data-value="94.85" class="pic high">
93
93
  <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
94
94
  </td>
95
- <td data-value="94.95" class="pct high">94.95%</td>
96
- <td data-value="99" class="abs high">94/99</td>
97
- <td data-value="80" class="pct high">80%</td>
98
- <td data-value="40" class="abs high">32/40</td>
95
+ <td data-value="94.85" class="pct high">94.85%</td>
96
+ <td data-value="97" class="abs high">92/97</td>
97
+ <td data-value="82.5" class="pct high">82.5%</td>
98
+ <td data-value="40" class="abs high">33/40</td>
99
99
  <td data-value="100" class="pct high">100%</td>
100
- <td data-value="18" class="abs high">18/18</td>
101
- <td data-value="94.68" class="pct high">94.68%</td>
102
- <td data-value="94" class="abs high">89/94</td>
100
+ <td data-value="17" class="abs high">17/17</td>
101
+ <td data-value="94.57" class="pct high">94.57%</td>
102
+ <td data-value="92" class="abs high">87/92</td>
103
103
  </tr>
104
104
 
105
105
  <tr>
@@ -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 Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
128
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
129
129
  </div>
130
130
  </div>
131
131
  <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">94.95% </span>
26
+ <span class="strong">94.85% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>94/99</span>
28
+ <span class='fraction'>92/97</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">80% </span>
33
+ <span class="strong">82.5% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>32/40</span>
35
+ <span class='fraction'>33/40</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>18/18</span>
42
+ <span class='fraction'>17/17</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">94.68% </span>
47
+ <span class="strong">94.57% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>89/94</span>
49
+ <span class='fraction'>87/92</span>
50
50
  </div>
51
51
 
52
52
 
@@ -273,19 +273,7 @@
273
273
  <a name='L214'></a><a href='#L214'>214</a>
274
274
  <a name='L215'></a><a href='#L215'>215</a>
275
275
  <a name='L216'></a><a href='#L216'>216</a>
276
- <a name='L217'></a><a href='#L217'>217</a>
277
- <a name='L218'></a><a href='#L218'>218</a>
278
- <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a>
280
- <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a>
282
- <a name='L223'></a><a href='#L223'>223</a>
283
- <a name='L224'></a><a href='#L224'>224</a>
284
- <a name='L225'></a><a href='#L225'>225</a>
285
- <a name='L226'></a><a href='#L226'>226</a>
286
- <a name='L227'></a><a href='#L227'>227</a>
287
- <a name='L228'></a><a href='#L228'>228</a>
288
- <a name='L229'></a><a href='#L229'>229</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
276
+ <a name='L217'></a><a href='#L217'>217</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
289
277
  <span class="cline-any cline-neutral">&nbsp;</span>
290
278
  <span class="cline-any cline-neutral">&nbsp;</span>
291
279
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -324,120 +312,108 @@
324
312
  <span class="cline-any cline-yes">33x</span>
325
313
  <span class="cline-any cline-neutral">&nbsp;</span>
326
314
  <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-yes">11x</span>
328
- <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-yes">11x</span>
330
- <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-yes">11x</span>
333
- <span class="cline-any cline-neutral">&nbsp;</span>
334
- <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-yes">30x</span>
316
+ <span class="cline-any cline-yes">113x</span>
317
+ <span class="cline-any cline-yes">53x</span>
318
+ <span class="cline-any cline-yes">53x</span>
319
+ <span class="cline-any cline-yes">53x</span>
337
320
  <span class="cline-any cline-neutral">&nbsp;</span>
338
321
  <span class="cline-any cline-neutral">&nbsp;</span>
339
322
  <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-yes">30x</span>
340
324
  <span class="cline-any cline-neutral">&nbsp;</span>
341
325
  <span class="cline-any cline-neutral">&nbsp;</span>
342
- <span class="cline-any cline-yes">11x</span>
343
326
  <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-yes">30x</span>
344
328
  <span class="cline-any cline-neutral">&nbsp;</span>
345
- <span class="cline-any cline-yes">13x</span>
329
+ <span class="cline-any cline-yes">30x</span>
346
330
  <span class="cline-any cline-neutral">&nbsp;</span>
347
331
  <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-yes">30x</span>
348
333
  <span class="cline-any cline-neutral">&nbsp;</span>
349
334
  <span class="cline-any cline-neutral">&nbsp;</span>
350
335
  <span class="cline-any cline-neutral">&nbsp;</span>
351
336
  <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-yes">10x</span>
353
- <span class="cline-any cline-yes">10x</span>
354
- <span class="cline-any cline-yes">10x</span>
355
- <span class="cline-any cline-yes">9x</span>
356
337
  <span class="cline-any cline-neutral">&nbsp;</span>
357
338
  <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-yes">10x</span>
359
- <span class="cline-any cline-yes">9x</span>
360
339
  <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-yes">10x</span>
362
- <span class="cline-any cline-yes">10x</span>
363
340
  <span class="cline-any cline-neutral">&nbsp;</span>
364
341
  <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-yes">30x</span>
365
343
  <span class="cline-any cline-neutral">&nbsp;</span>
366
344
  <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-yes">25x</span>
367
346
  <span class="cline-any cline-neutral">&nbsp;</span>
368
347
  <span class="cline-any cline-neutral">&nbsp;</span>
369
348
  <span class="cline-any cline-neutral">&nbsp;</span>
370
349
  <span class="cline-any cline-neutral">&nbsp;</span>
371
350
  <span class="cline-any cline-neutral">&nbsp;</span>
372
351
  <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-yes">30x</span>
353
+ <span class="cline-any cline-yes">30x</span>
354
+ <span class="cline-any cline-yes">30x</span>
355
+ <span class="cline-any cline-yes">18x</span>
373
356
  <span class="cline-any cline-neutral">&nbsp;</span>
374
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-yes">30x</span>
359
+ <span class="cline-any cline-yes">18x</span>
375
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-yes">30x</span>
362
+ <span class="cline-any cline-yes">30x</span>
376
363
  <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-yes">33x</span>
378
- <span class="cline-any cline-yes">180x</span>
379
- <span class="cline-any cline-yes">180x</span>
380
- <span class="cline-any cline-yes">180x</span>
381
- <span class="cline-any cline-no">&nbsp;</span>
382
364
  <span class="cline-any cline-neutral">&nbsp;</span>
383
365
  <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-yes">180x</span>
385
- <span class="cline-any cline-yes">103x</span>
386
366
  <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-yes">180x</span>
388
- <span class="cline-any cline-yes">180x</span>
389
- <span class="cline-any cline-yes">180x</span>
390
367
  <span class="cline-any cline-neutral">&nbsp;</span>
391
368
  <span class="cline-any cline-neutral">&nbsp;</span>
392
369
  <span class="cline-any cline-neutral">&nbsp;</span>
393
370
  <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-yes">136x</span>
395
371
  <span class="cline-any cline-neutral">&nbsp;</span>
396
372
  <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-no">&nbsp;</span>
398
373
  <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-yes">44x</span>
400
374
  <span class="cline-any cline-neutral">&nbsp;</span>
401
375
  <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-yes">23x</span>
403
376
  <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-yes">33x</span>
378
+ <span class="cline-any cline-yes">175x</span>
379
+ <span class="cline-any cline-yes">175x</span>
380
+ <span class="cline-any cline-yes">175x</span>
404
381
  <span class="cline-any cline-no">&nbsp;</span>
405
382
  <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">19x</span>
407
383
  <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-yes">1x</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-yes">1x</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
384
+ <span class="cline-any cline-yes">175x</span>
385
+ <span class="cline-any cline-yes">100x</span>
413
386
  <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-yes">175x</span>
388
+ <span class="cline-any cline-yes">175x</span>
389
+ <span class="cline-any cline-yes">175x</span>
414
390
  <span class="cline-any cline-neutral">&nbsp;</span>
415
391
  <span class="cline-any cline-neutral">&nbsp;</span>
416
392
  <span class="cline-any cline-neutral">&nbsp;</span>
417
393
  <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-yes">134x</span>
418
395
  <span class="cline-any cline-neutral">&nbsp;</span>
419
396
  <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-no">&nbsp;</span>
420
398
  <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-yes">41x</span>
421
400
  <span class="cline-any cline-neutral">&nbsp;</span>
422
401
  <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-yes">21x</span>
423
403
  <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-yes">33x</span>
425
- <span class="cline-any cline-yes">1x</span>
404
+ <span class="cline-any cline-no">&nbsp;</span>
426
405
  <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-yes">1x</span>
406
+ <span class="cline-any cline-yes">18x</span>
428
407
  <span class="cline-any cline-neutral">&nbsp;</span>
429
408
  <span class="cline-any cline-yes">1x</span>
430
- <span class="cline-any cline-yes">1x</span>
431
409
  <span class="cline-any cline-neutral">&nbsp;</span>
432
410
  <span class="cline-any cline-yes">1x</span>
433
- <span class="cline-any cline-yes">1x</span>
434
411
  <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-yes">1x</span>
412
+ <span class="cline-any cline-no">&nbsp;</span>
436
413
  <span class="cline-any cline-neutral">&nbsp;</span>
437
414
  <span class="cline-any cline-neutral">&nbsp;</span>
438
415
  <span class="cline-any cline-neutral">&nbsp;</span>
439
416
  <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-yes">1x</span>
441
417
  <span class="cline-any cline-neutral">&nbsp;</span>
442
418
  <span class="cline-any cline-neutral">&nbsp;</span>
443
419
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -445,39 +421,39 @@
445
421
  <span class="cline-any cline-neutral">&nbsp;</span>
446
422
  <span class="cline-any cline-neutral">&nbsp;</span>
447
423
  <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-yes">33x</span>
425
+ <span class="cline-any cline-yes">97x</span>
426
+ <span class="cline-any cline-yes">97x</span>
427
+ <span class="cline-any cline-yes">97x</span>
428
+ <span class="cline-any cline-yes">67x</span>
448
429
  <span class="cline-any cline-neutral">&nbsp;</span>
449
430
  <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-yes">30x</span>
450
432
  <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">33x</span>
452
- <span class="cline-any cline-yes">25x</span>
453
- <span class="cline-any cline-yes">25x</span>
433
+ <span class="cline-any cline-yes">30x</span>
454
434
  <span class="cline-any cline-yes">25x</span>
455
- <span class="cline-any cline-yes">15x</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
435
  <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-yes">10x</span>
459
436
  <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-yes">10x</span>
461
- <span class="cline-any cline-yes">12x</span>
437
+ <span class="cline-any cline-yes">30x</span>
462
438
  <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-yes">10x</span>
464
- <span class="cline-any cline-yes">10x</span>
465
- <span class="cline-any cline-yes">10x</span>
466
- <span class="cline-any cline-yes">10x</span>
467
- <span class="cline-any cline-yes">9x</span>
468
- <span class="cline-any cline-yes">9x</span>
439
+ <span class="cline-any cline-yes">30x</span>
440
+ <span class="cline-any cline-yes">30x</span>
441
+ <span class="cline-any cline-yes">30x</span>
442
+ <span class="cline-any cline-yes">30x</span>
443
+ <span class="cline-any cline-yes">18x</span>
444
+ <span class="cline-any cline-yes">18x</span>
469
445
  <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-yes">9x</span>
446
+ <span class="cline-any cline-yes">18x</span>
471
447
  <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-yes">9x</span>
473
- <span class="cline-any cline-yes">9x</span>
474
- <span class="cline-any cline-yes">9x</span>
448
+ <span class="cline-any cline-yes">18x</span>
449
+ <span class="cline-any cline-yes">18x</span>
450
+ <span class="cline-any cline-yes">18x</span>
475
451
  <span class="cline-any cline-no">&nbsp;</span>
476
452
  <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-yes">9x</span>
453
+ <span class="cline-any cline-yes">18x</span>
478
454
  <span class="cline-any cline-neutral">&nbsp;</span>
479
455
  <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-yes">10x</span>
456
+ <span class="cline-any cline-yes">30x</span>
481
457
  <span class="cline-any cline-neutral">&nbsp;</span>
482
458
  <span class="cline-any cline-neutral">&nbsp;</span>
483
459
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -551,6 +527,18 @@ exports.IncludeDocs = IncludeDocs
551
527
  exports.getLinkDocuments = getLinkDocuments
552
528
  exports.createLinkView = createLinkView
553
529
  &nbsp;
530
+ function clearRelationshipFields(table, rows) {
531
+ for (let [key, field] of Object.entries(table.schema)) {
532
+ if (field.type === FieldTypes.LINK) {
533
+ rows = rows.map(row =&gt; {
534
+ delete row[key]
535
+ return row
536
+ })
537
+ }
538
+ }
539
+ return rows
540
+ }
541
+ &nbsp;
554
542
  async function getLinksForRows(appId, rows) {
555
543
  const tableIds = [...new Set(rows.map(el =&gt; el.tableId))]
556
544
  // start by getting all the link values for performance reasons
@@ -641,33 +629,6 @@ exports.updateLinks = async function (args) {
641
629
  }
642
630
  }
643
631
  &nbsp;
644
- /**
645
- * Update a row with information about the links that pertain to it.
646
- * @param {string} appId The instance in which this row has been created.
647
- * @param {object} rows The row(s) themselves which is to be updated with info (if applicable). This can be
648
- * a single row object or an array of rows - both will be handled.
649
- * @returns {Promise&lt;object&gt;} The updated row (this may be the same if no links were found). If an array was input
650
- * then an array will be output, object input -&gt; object output.
651
- */
652
- exports.attachLinkIDs = async (appId, rows) =&gt; {
653
- const links = await getLinksForRows(appId, rows)
654
- // now iterate through the rows and all field information
655
- for (let row of rows) {
656
- // find anything that matches the row's ID we are searching for and join it
657
- links
658
- .filter(el =&gt; el.thisId === row._id)
659
- .forEach(link =&gt; {
660
- <span class="missing-if-branch" title="else path not taken" >E</span>if (row[link.fieldName] == null) {
661
- row[link.fieldName] = []
662
- }
663
- row[link.fieldName].push(link.id)
664
- })
665
- }
666
- // if it was an array when it came in then handle it as an array in response
667
- // otherwise return the first element as there was only one input
668
- return rows
669
- }
670
- &nbsp;
671
632
  /**
672
633
  * Given a table and a list of rows this will retrieve all of the attached docs and enrich them into the row.
673
634
  * This is required for formula fields, this may only be utilised internally (for now).
@@ -688,6 +649,9 @@ exports.attachFullLinkedDocs = async (ctx, table, rows) =&gt; {
688
649
  const links = (await getLinksForRows(appId, rows)).filter(link =&gt;
689
650
  rows.some(row =&gt; row._id === link.thisId)
690
651
  )
652
+ // clear any existing links that could be dupe'd
653
+ rows = clearRelationshipFields(table, rows)
654
+ // now get the docs and combine into the rows
691
655
  let linked = await getFullLinkedDocs(ctx, appId, links)
692
656
  const linkedTables = []
693
657
  for (let row of rows) {
@@ -748,7 +712,7 @@ exports.squashLinksToPrimaryDisplay = async (appId, table, enriched) =&gt; {
748
712
  <div class='footer quiet pad2 space-top1 center small'>
749
713
  Code coverage generated by
750
714
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
751
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
715
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
752
716
  </div>
753
717
  </div>
754
718
  <script src="../../prettify.js"></script>
@@ -205,40 +205,40 @@
205
205
  <span class="cline-any cline-neutral">&nbsp;</span>
206
206
  <span class="cline-any cline-neutral">&nbsp;</span>
207
207
  <span class="cline-any cline-yes">33x</span>
208
- <span class="cline-any cline-yes">54x</span>
209
- <span class="cline-any cline-yes">54x</span>
208
+ <span class="cline-any cline-yes">71x</span>
209
+ <span class="cline-any cline-yes">71x</span>
210
210
  <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-yes">54x</span>
212
- <span class="cline-any cline-yes">34x</span>
211
+ <span class="cline-any cline-yes">71x</span>
212
+ <span class="cline-any cline-yes">32x</span>
213
213
  <span class="cline-any cline-neutral">&nbsp;</span>
214
214
  <span class="cline-any cline-neutral">&nbsp;</span>
215
215
  <span class="cline-any cline-neutral">&nbsp;</span>
216
- <span class="cline-any cline-yes">20x</span>
216
+ <span class="cline-any cline-yes">39x</span>
217
217
  <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-yes">54x</span>
219
- <span class="cline-any cline-yes">54x</span>
220
- <span class="cline-any cline-yes">54x</span>
218
+ <span class="cline-any cline-yes">71x</span>
219
+ <span class="cline-any cline-yes">71x</span>
220
+ <span class="cline-any cline-yes">71x</span>
221
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
- <span class="cline-any cline-yes">53x</span>
223
- <span class="cline-any cline-yes">53x</span>
222
+ <span class="cline-any cline-yes">70x</span>
223
+ <span class="cline-any cline-yes">70x</span>
224
224
  <span class="cline-any cline-neutral">&nbsp;</span>
225
- <span class="cline-any cline-yes">49x</span>
225
+ <span class="cline-any cline-yes">73x</span>
226
226
  <span class="cline-any cline-neutral">&nbsp;</span>
227
227
  <span class="cline-any cline-neutral">&nbsp;</span>
228
228
  <span class="cline-any cline-neutral">&nbsp;</span>
229
- <span class="cline-any cline-yes">22x</span>
229
+ <span class="cline-any cline-yes">34x</span>
230
230
  <span class="cline-any cline-neutral">&nbsp;</span>
231
- <span class="cline-any cline-yes">27x</span>
232
- <span class="cline-any cline-yes">27x</span>
233
- <span class="cline-any cline-yes">27x</span>
231
+ <span class="cline-any cline-yes">39x</span>
232
+ <span class="cline-any cline-yes">39x</span>
233
+ <span class="cline-any cline-yes">39x</span>
234
234
  <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-yes">27x</span>
235
+ <span class="cline-any cline-yes">39x</span>
236
236
  <span class="cline-any cline-neutral">&nbsp;</span>
237
237
  <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-yes">53x</span>
239
- <span class="cline-any cline-yes">38x</span>
238
+ <span class="cline-any cline-yes">70x</span>
239
+ <span class="cline-any cline-yes">36x</span>
240
240
  <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-yes">15x</span>
241
+ <span class="cline-any cline-yes">34x</span>
242
242
  <span class="cline-any cline-neutral">&nbsp;</span>
243
243
  <span class="cline-any cline-neutral">&nbsp;</span>
244
244
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -253,27 +253,27 @@
253
253
  <span class="cline-any cline-neutral">&nbsp;</span>
254
254
  <span class="cline-any cline-neutral">&nbsp;</span>
255
255
  <span class="cline-any cline-yes">33x</span>
256
- <span class="cline-any cline-yes">11x</span>
257
- <span class="cline-any cline-yes">17x</span>
256
+ <span class="cline-any cline-yes">30x</span>
257
+ <span class="cline-any cline-yes">33x</span>
258
258
  <span class="cline-any cline-neutral">&nbsp;</span>
259
259
  <span class="cline-any cline-neutral">&nbsp;</span>
260
260
  <span class="cline-any cline-neutral">&nbsp;</span>
261
261
  <span class="cline-any cline-yes">33x</span>
262
- <span class="cline-any cline-yes">25x</span>
263
- <span class="cline-any cline-yes">89x</span>
264
- <span class="cline-any cline-yes">17x</span>
262
+ <span class="cline-any cline-yes">97x</span>
263
+ <span class="cline-any cline-yes">290x</span>
264
+ <span class="cline-any cline-yes">53x</span>
265
265
  <span class="cline-any cline-neutral">&nbsp;</span>
266
266
  <span class="cline-any cline-neutral">&nbsp;</span>
267
267
  <span class="cline-any cline-yes">33x</span>
268
- <span class="cline-any cline-yes">50x</span>
269
- <span class="cline-any cline-yes">50x</span>
268
+ <span class="cline-any cline-yes">59x</span>
269
+ <span class="cline-any cline-yes">59x</span>
270
270
  <span class="cline-any cline-yes">32x</span>
271
271
  <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-yes">18x</span>
273
- <span class="cline-any cline-yes">18x</span>
274
- <span class="cline-any cline-yes">18x</span>
272
+ <span class="cline-any cline-yes">27x</span>
273
+ <span class="cline-any cline-yes">27x</span>
274
+ <span class="cline-any cline-yes">27x</span>
275
275
  <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-yes">18x</span>
276
+ <span class="cline-any cline-yes">27x</span>
277
277
  <span class="cline-any cline-neutral">&nbsp;</span>
278
278
  <span class="cline-any cline-neutral">&nbsp;</span>
279
279
  <span class="cline-any cline-yes">33x</span>
@@ -412,7 +412,7 @@ exports.getRelatedTableForField = (table, fieldName) =&gt; {
412
412
  <div class='footer quiet pad2 space-top1 center small'>
413
413
  Code coverage generated by
414
414
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
415
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
415
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
416
416
  </div>
417
417
  </div>
418
418
  <script src="../../prettify.js"></script>