@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">90% </span>
26
+ <span class="strong">85.71% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>18/20</span>
28
+ <span class='fraction'>42/49</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">50% </span>
33
+ <span class="strong">58.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/4</span>
35
+ <span class='fraction'>7/12</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'>6/6</span>
42
+ <span class='fraction'>10/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">88.89% </span>
47
+ <span class="strong">85.11% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>16/18</span>
49
+ <span class='fraction'>40/47</span>
50
50
  </div>
51
51
 
52
52
 
@@ -114,7 +114,60 @@
114
114
  <a name='L55'></a><a href='#L55'>55</a>
115
115
  <a name='L56'></a><a href='#L56'>56</a>
116
116
  <a name='L57'></a><a href='#L57'>57</a>
117
- <a name='L58'></a><a href='#L58'>58</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
117
+ <a name='L58'></a><a href='#L58'>58</a>
118
+ <a name='L59'></a><a href='#L59'>59</a>
119
+ <a name='L60'></a><a href='#L60'>60</a>
120
+ <a name='L61'></a><a href='#L61'>61</a>
121
+ <a name='L62'></a><a href='#L62'>62</a>
122
+ <a name='L63'></a><a href='#L63'>63</a>
123
+ <a name='L64'></a><a href='#L64'>64</a>
124
+ <a name='L65'></a><a href='#L65'>65</a>
125
+ <a name='L66'></a><a href='#L66'>66</a>
126
+ <a name='L67'></a><a href='#L67'>67</a>
127
+ <a name='L68'></a><a href='#L68'>68</a>
128
+ <a name='L69'></a><a href='#L69'>69</a>
129
+ <a name='L70'></a><a href='#L70'>70</a>
130
+ <a name='L71'></a><a href='#L71'>71</a>
131
+ <a name='L72'></a><a href='#L72'>72</a>
132
+ <a name='L73'></a><a href='#L73'>73</a>
133
+ <a name='L74'></a><a href='#L74'>74</a>
134
+ <a name='L75'></a><a href='#L75'>75</a>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a>
139
+ <a name='L80'></a><a href='#L80'>80</a>
140
+ <a name='L81'></a><a href='#L81'>81</a>
141
+ <a name='L82'></a><a href='#L82'>82</a>
142
+ <a name='L83'></a><a href='#L83'>83</a>
143
+ <a name='L84'></a><a href='#L84'>84</a>
144
+ <a name='L85'></a><a href='#L85'>85</a>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a>
147
+ <a name='L88'></a><a href='#L88'>88</a>
148
+ <a name='L89'></a><a href='#L89'>89</a>
149
+ <a name='L90'></a><a href='#L90'>90</a>
150
+ <a name='L91'></a><a href='#L91'>91</a>
151
+ <a name='L92'></a><a href='#L92'>92</a>
152
+ <a name='L93'></a><a href='#L93'>93</a>
153
+ <a name='L94'></a><a href='#L94'>94</a>
154
+ <a name='L95'></a><a href='#L95'>95</a>
155
+ <a name='L96'></a><a href='#L96'>96</a>
156
+ <a name='L97'></a><a href='#L97'>97</a>
157
+ <a name='L98'></a><a href='#L98'>98</a>
158
+ <a name='L99'></a><a href='#L99'>99</a>
159
+ <a name='L100'></a><a href='#L100'>100</a>
160
+ <a name='L101'></a><a href='#L101'>101</a>
161
+ <a name='L102'></a><a href='#L102'>102</a>
162
+ <a name='L103'></a><a href='#L103'>103</a>
163
+ <a name='L104'></a><a href='#L104'>104</a>
164
+ <a name='L105'></a><a href='#L105'>105</a>
165
+ <a name='L106'></a><a href='#L106'>106</a>
166
+ <a name='L107'></a><a href='#L107'>107</a>
167
+ <a name='L108'></a><a href='#L108'>108</a>
168
+ <a name='L109'></a><a href='#L109'>109</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
169
+ <span class="cline-any cline-yes">34x</span>
170
+ <span class="cline-any cline-yes">34x</span>
118
171
  <span class="cline-any cline-yes">34x</span>
119
172
  <span class="cline-any cline-yes">34x</span>
120
173
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -131,7 +184,7 @@
131
184
  <span class="cline-any cline-neutral">&nbsp;</span>
132
185
  <span class="cline-any cline-neutral">&nbsp;</span>
133
186
  <span class="cline-any cline-yes">34x</span>
134
- <span class="cline-any cline-yes">12x</span>
187
+ <span class="cline-any cline-yes">13x</span>
135
188
  <span class="cline-any cline-neutral">&nbsp;</span>
136
189
  <span class="cline-any cline-neutral">&nbsp;</span>
137
190
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -139,11 +192,11 @@
139
192
  <span class="cline-any cline-neutral">&nbsp;</span>
140
193
  <span class="cline-any cline-neutral">&nbsp;</span>
141
194
  <span class="cline-any cline-yes">34x</span>
142
- <span class="cline-any cline-yes">1x</span>
195
+ <span class="cline-any cline-yes">2x</span>
143
196
  <span class="cline-any cline-neutral">&nbsp;</span>
144
197
  <span class="cline-any cline-yes">1x</span>
145
198
  <span class="cline-any cline-neutral">&nbsp;</span>
146
- <span class="cline-any cline-no">&nbsp;</span>
199
+ <span class="cline-any cline-yes">1x</span>
147
200
  <span class="cline-any cline-neutral">&nbsp;</span>
148
201
  <span class="cline-any cline-neutral">&nbsp;</span>
149
202
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -167,13 +220,64 @@
167
220
  <span class="cline-any cline-neutral">&nbsp;</span>
168
221
  <span class="cline-any cline-neutral">&nbsp;</span>
169
222
  <span class="cline-any cline-yes">34x</span>
223
+ <span class="cline-any cline-yes">2x</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
225
+ <span class="cline-any cline-neutral">&nbsp;</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-yes">34x</span>
229
+ <span class="cline-any cline-yes">3x</span>
230
+ <span class="cline-any cline-yes">3x</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-yes">3x</span>
234
+ <span class="cline-any cline-yes">3x</span>
235
+ <span class="cline-any cline-yes">3x</span>
236
+ <span class="cline-any cline-no">&nbsp;</span>
237
+ <span class="cline-any cline-no">&nbsp;</span>
238
+ <span class="cline-any cline-neutral">&nbsp;</span>
239
+ <span class="cline-any cline-yes">3x</span>
240
+ <span class="cline-any cline-yes">3x</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-yes">3x</span>
243
+ <span class="cline-any cline-yes">3x</span>
244
+ <span class="cline-any cline-no">&nbsp;</span>
245
+ <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-yes">3x</span>
247
+ <span class="cline-any cline-yes">3x</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-neutral">&nbsp;</span>
254
+ <span class="cline-any cline-yes">34x</span>
170
255
  <span class="cline-any cline-yes">1x</span>
256
+ <span class="cline-any cline-yes">1x</span>
257
+ <span class="cline-any cline-neutral">&nbsp;</span>
171
258
  <span class="cline-any cline-neutral">&nbsp;</span>
172
259
  <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-yes">34x</span>
261
+ <span class="cline-any cline-yes">4x</span>
262
+ <span class="cline-any cline-yes">4x</span>
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-yes">4x</span>
265
+ <span class="cline-any cline-yes">4x</span>
266
+ <span class="cline-any cline-no">&nbsp;</span>
267
+ <span class="cline-any cline-no">&nbsp;</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-yes">4x</span>
273
+ <span class="cline-any cline-no">&nbsp;</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
275
  <span class="cline-any cline-neutral">&nbsp;</span>
174
276
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const env = require("../environment")
175
277
  const { OBJ_STORE_DIRECTORY } = require("../constants")
176
278
  const { sanitizeKey } = require("@budibase/auth/src/objectStore")
279
+ const CouchDB = require("../db")
280
+ const { generateMetadataID } = require("../db/utils")
177
281
  &nbsp;
178
282
  const BB_CDN = "https://cdn.budi.live"
179
283
  &nbsp;
@@ -196,11 +300,11 @@ exports.checkSlashesInUrl = url =&gt; {
196
300
  * @return {string} The base URL of the object store (MinIO or S3).
197
301
  */
198
302
  exports.objectStoreUrl = () =&gt; {
199
- <span class="missing-if-branch" title="else path not taken" >E</span>if (env.SELF_HOSTED) {
303
+ if (env.SELF_HOSTED) {
200
304
  // can use a relative url for this as all goes through the proxy (this is hosted in minio)
201
305
  return OBJ_STORE_DIRECTORY
202
306
  } else {
203
- <span class="cstat-no" title="statement not covered" > return BB_CDN</span>
307
+ return BB_CDN
204
308
  }
205
309
  }
206
310
  &nbsp;
@@ -228,6 +332,55 @@ exports.attachmentsRelativeURL = attachmentKey =&gt; {
228
332
  `${exports.objectStoreUrl()}/${attachmentKey}`
229
333
  )
230
334
  }
335
+ &nbsp;
336
+ exports.updateEntityMetadata = async (appId, type, entityId, updateFn) =&gt; {
337
+ const db = new CouchDB(appId)
338
+ const id = generateMetadataID(type, entityId)
339
+ // read it to see if it exists, we'll overwrite it no matter what
340
+ let rev,
341
+ metadata = {}
342
+ try {
343
+ const oldMetadata = await db.get(id)
344
+ <span class="cstat-no" title="statement not covered" > rev = oldMetadata._rev</span>
345
+ <span class="cstat-no" title="statement not covered" > metadata = updateFn(oldMetadata)</span>
346
+ } catch (err) {
347
+ rev = null
348
+ metadata = updateFn({})
349
+ }
350
+ metadata._id = id
351
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (rev) {
352
+ <span class="cstat-no" title="statement not covered" > metadata._rev = rev</span>
353
+ }
354
+ const response = await db.put(metadata)
355
+ return {
356
+ ...metadata,
357
+ _id: id,
358
+ _rev: response.rev,
359
+ }
360
+ }
361
+ &nbsp;
362
+ exports.saveEntityMetadata = async (appId, type, entityId, metadata) =&gt; {
363
+ return exports.updateEntityMetadata(appId, type, entityId, () =&gt; {
364
+ return metadata
365
+ })
366
+ }
367
+ &nbsp;
368
+ exports.deleteEntityMetadata = async (appId, type, entityId) =&gt; {
369
+ const db = new CouchDB(appId)
370
+ const id = generateMetadataID(type, entityId)
371
+ let rev
372
+ try {
373
+ const metadata = await db.get(id)
374
+ <span class="cstat-no" title="statement not covered" > if (metadata) {</span>
375
+ <span class="cstat-no" title="statement not covered" > rev = metadata._rev</span>
376
+ }
377
+ } catch (err) {
378
+ // don't need to error if it doesn't exist
379
+ }
380
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (id &amp;&amp; rev) {
381
+ <span class="cstat-no" title="statement not covered" > await db.remove(id, rev)</span>
382
+ }
383
+ }
231
384
  &nbsp;</pre></td></tr></table></pre>
232
385
 
233
386
  <div class='push'></div><!-- for sticky footer -->
@@ -235,7 +388,7 @@ exports.attachmentsRelativeURL = attachmentKey =&gt; {
235
388
  <div class='footer quiet pad2 space-top1 center small'>
236
389
  Code coverage generated by
237
390
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
238
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
391
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
239
392
  </div>
240
393
  </div>
241
394
  <script src="../prettify.js"></script>
@@ -156,7 +156,7 @@
156
156
  <span class="cline-any cline-neutral">&nbsp;</span>
157
157
  <span class="cline-any cline-neutral">&nbsp;</span>
158
158
  <span class="cline-any cline-neutral">&nbsp;</span>
159
- <span class="cline-any cline-yes">10x</span>
159
+ <span class="cline-any cline-yes">8x</span>
160
160
  <span class="cline-any cline-neutral">&nbsp;</span>
161
161
  <span class="cline-any cline-neutral">&nbsp;</span>
162
162
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -192,14 +192,14 @@
192
192
  <span class="cline-any cline-neutral">&nbsp;</span>
193
193
  <span class="cline-any cline-neutral">&nbsp;</span>
194
194
  <span class="cline-any cline-neutral">&nbsp;</span>
195
- <span class="cline-any cline-yes">25x</span>
196
- <span class="cline-any cline-yes">17x</span>
197
- <span class="cline-any cline-yes">7x</span>
195
+ <span class="cline-any cline-yes">27x</span>
196
+ <span class="cline-any cline-yes">11x</span>
197
+ <span class="cline-any cline-yes">3x</span>
198
198
  <span class="cline-any cline-neutral">&nbsp;</span>
199
- <span class="cline-any cline-yes">10x</span>
200
- <span class="cline-any cline-yes">10x</span>
201
- <span class="cline-any cline-yes">10x</span>
202
- <span class="cline-any cline-yes">10x</span>
199
+ <span class="cline-any cline-yes">8x</span>
200
+ <span class="cline-any cline-yes">8x</span>
201
+ <span class="cline-any cline-yes">8x</span>
202
+ <span class="cline-any cline-yes">8x</span>
203
203
  <span class="cline-any cline-neutral">&nbsp;</span>
204
204
  <span class="cline-any cline-neutral">&nbsp;</span>
205
205
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -213,11 +213,11 @@
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">10x</span>
216
+ <span class="cline-any cline-yes">8x</span>
217
217
  <span class="cline-any cline-no">&nbsp;</span>
218
218
  <span class="cline-any cline-neutral">&nbsp;</span>
219
- <span class="cline-any cline-yes">10x</span>
220
- <span class="cline-any cline-yes">10x</span>
219
+ <span class="cline-any cline-yes">8x</span>
220
+ <span class="cline-any cline-yes">8x</span>
221
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
222
  <span class="cline-any cline-neutral">&nbsp;</span>
223
223
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -325,7 +325,7 @@ module.exports = InMemoryQueue
325
325
  <div class='footer quiet pad2 space-top1 center small'>
326
326
  Code coverage generated by
327
327
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
328
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
328
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
329
329
  </div>
330
330
  </div>
331
331
  <script src="../../prettify.js"></script>
@@ -95,7 +95,7 @@
95
95
  <div class='footer quiet pad2 space-top1 center small'>
96
96
  Code coverage generated by
97
97
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
98
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
99
99
  </div>
100
100
  </div>
101
101
  <script src="../../prettify.js"></script>
@@ -95,7 +95,7 @@
95
95
  <div class='footer quiet pad2 space-top1 center small'>
96
96
  Code coverage generated by
97
97
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
98
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
99
99
  </div>
100
100
  </div>
101
101
  <script src="../../prettify.js"></script>
@@ -82,11 +82,11 @@
82
82
  <a name='L23'></a><a href='#L23'>23</a>
83
83
  <a name='L24'></a><a href='#L24'>24</a>
84
84
  <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">22x</span>
86
- <span class="cline-any cline-yes">22x</span>
87
- <span class="cline-any cline-yes">22x</span>
85
+ <a name='L26'></a><a href='#L26'>26</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
86
+ <span class="cline-any cline-yes">23x</span>
87
+ <span class="cline-any cline-yes">23x</span>
88
88
  <span class="cline-any cline-neutral">&nbsp;</span>
89
- <span class="cline-any cline-yes">22x</span>
89
+ <span class="cline-any cline-yes">23x</span>
90
90
  <span class="cline-any cline-yes">3x</span>
91
91
  <span class="cline-any cline-yes">3x</span>
92
92
  <span class="cline-any cline-yes">3x</span>
@@ -106,7 +106,7 @@
106
106
  <span class="cline-any cline-neutral">&nbsp;</span>
107
107
  <span class="cline-any cline-neutral">&nbsp;</span>
108
108
  <span class="cline-any cline-neutral">&nbsp;</span>
109
- <span class="cline-any cline-yes">22x</span>
109
+ <span class="cline-any cline-yes">23x</span>
110
110
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
111
111
  const { createRoutingView } = require("../../db/views/staticViews")
112
112
  const { ViewNames, getQueryIndex, UNICODE_MAX } = require("../../db/utils")
@@ -139,7 +139,7 @@ exports.createRoutingView = createRoutingView
139
139
  <div class='footer quiet pad2 space-top1 center small'>
140
140
  Code coverage generated by
141
141
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
142
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
142
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
143
143
  </div>
144
144
  </div>
145
145
  <script src="../../prettify.js"></script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">77.27% </span>
26
+ <span class="strong">77.53% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>68/88</span>
28
+ <span class='fraction'>69/89</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">66.67% </span>
33
+ <span class="strong">68.42% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>36/54</span>
35
+ <span class='fraction'>39/57</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">77.91% </span>
47
+ <span class="strong">78.16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>67/86</span>
49
+ <span class='fraction'>68/87</span>
50
50
  </div>
51
51
 
52
52
 
@@ -74,17 +74,17 @@
74
74
  </thead>
75
75
  <tbody><tr>
76
76
  <td class="file medium" data-value="index.js"><a href="index.js.html">index.js</a></td>
77
- <td data-value="76.32" class="pic medium">
77
+ <td data-value="76.62" class="pic medium">
78
78
  <div class="chart"><div class="cover-fill" style="width: 76%"></div><div class="cover-empty" style="width: 24%"></div></div>
79
79
  </td>
80
- <td data-value="76.32" class="pct medium">76.32%</td>
81
- <td data-value="76" class="abs medium">58/76</td>
82
- <td data-value="64.58" class="pct medium">64.58%</td>
83
- <td data-value="48" class="abs medium">31/48</td>
80
+ <td data-value="76.62" class="pct medium">76.62%</td>
81
+ <td data-value="77" class="abs medium">59/77</td>
82
+ <td data-value="66.67" class="pct medium">66.67%</td>
83
+ <td data-value="51" class="abs medium">34/51</td>
84
84
  <td data-value="90" class="pct high">90%</td>
85
85
  <td data-value="10" class="abs high">9/10</td>
86
- <td data-value="76" class="pct medium">76%</td>
87
- <td data-value="75" class="abs medium">57/75</td>
86
+ <td data-value="76.32" class="pct medium">76.32%</td>
87
+ <td data-value="76" class="abs medium">58/76</td>
88
88
  </tr>
89
89
 
90
90
  <tr>
@@ -110,7 +110,7 @@
110
110
  <div class='footer quiet pad2 space-top1 center small'>
111
111
  Code coverage generated by
112
112
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
113
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
113
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
114
114
  </div>
115
115
  </div>
116
116
  <script src="../../prettify.js"></script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">76.32% </span>
26
+ <span class="strong">76.62% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>58/76</span>
28
+ <span class='fraction'>59/77</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">64.58% </span>
33
+ <span class="strong">66.67% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>31/48</span>
35
+ <span class='fraction'>34/51</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">76% </span>
47
+ <span class="strong">76.32% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>57/75</span>
49
+ <span class='fraction'>58/76</span>
50
50
  </div>
51
51
 
52
52
 
@@ -276,7 +276,19 @@
276
276
  <a name='L217'></a><a href='#L217'>217</a>
277
277
  <a name='L218'></a><a href='#L218'>218</a>
278
278
  <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
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>
289
+ <a name='L230'></a><a href='#L230'>230</a>
290
+ <a name='L231'></a><a href='#L231'>231</a>
291
+ <a name='L232'></a><a href='#L232'>232</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
280
292
  <span class="cline-any cline-yes">33x</span>
281
293
  <span class="cline-any cline-yes">33x</span>
282
294
  <span class="cline-any cline-yes">33x</span>
@@ -293,13 +305,13 @@
293
305
  <span class="cline-any cline-neutral">&nbsp;</span>
294
306
  <span class="cline-any cline-neutral">&nbsp;</span>
295
307
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-yes">12x</span>
308
+ <span class="cline-any cline-yes">11x</span>
297
309
  <span class="cline-any cline-yes">2x</span>
298
310
  <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">10x</span>
311
+ <span class="cline-any cline-yes">9x</span>
300
312
  <span class="cline-any cline-no">&nbsp;</span>
301
313
  <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-yes">10x</span>
314
+ <span class="cline-any cline-yes">9x</span>
303
315
  <span class="cline-any cline-neutral">&nbsp;</span>
304
316
  <span class="cline-any cline-neutral">&nbsp;</span>
305
317
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -371,12 +383,12 @@
371
383
  <span class="cline-any cline-neutral">&nbsp;</span>
372
384
  <span class="cline-any cline-neutral">&nbsp;</span>
373
385
  <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-yes">73x</span>
386
+ <span class="cline-any cline-yes">71x</span>
375
387
  <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-yes">73x</span>
377
- <span class="cline-any cline-yes">73x</span>
378
- <span class="cline-any cline-yes">208x</span>
379
- <span class="cline-any cline-yes">208x</span>
388
+ <span class="cline-any cline-yes">71x</span>
389
+ <span class="cline-any cline-yes">71x</span>
390
+ <span class="cline-any cline-yes">202x</span>
391
+ <span class="cline-any cline-yes">202x</span>
380
392
  <span class="cline-any cline-neutral">&nbsp;</span>
381
393
  <span class="cline-any cline-no">&nbsp;</span>
382
394
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -403,7 +415,7 @@
403
415
  <span class="cline-any cline-no">&nbsp;</span>
404
416
  <span class="cline-any cline-neutral">&nbsp;</span>
405
417
  <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">73x</span>
418
+ <span class="cline-any cline-yes">71x</span>
407
419
  <span class="cline-any cline-neutral">&nbsp;</span>
408
420
  <span class="cline-any cline-neutral">&nbsp;</span>
409
421
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -414,13 +426,13 @@
414
426
  <span class="cline-any cline-neutral">&nbsp;</span>
415
427
  <span class="cline-any cline-yes">33x</span>
416
428
  <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-yes">175x</span>
429
+ <span class="cline-any cline-yes">170x</span>
418
430
  <span class="cline-any cline-yes">16x</span>
419
- <span class="cline-any cline-yes">159x</span>
420
- <span class="cline-any cline-yes">23x</span>
431
+ <span class="cline-any cline-yes">154x</span>
432
+ <span class="cline-any cline-yes">22x</span>
421
433
  <span class="cline-any cline-neutral">&nbsp;</span>
422
434
  <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-yes">136x</span>
435
+ <span class="cline-any cline-yes">132x</span>
424
436
  <span class="cline-any cline-neutral">&nbsp;</span>
425
437
  <span class="cline-any cline-neutral">&nbsp;</span>
426
438
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -432,29 +444,30 @@
432
444
  <span class="cline-any cline-neutral">&nbsp;</span>
433
445
  <span class="cline-any cline-neutral">&nbsp;</span>
434
446
  <span class="cline-any cline-yes">33x</span>
435
- <span class="cline-any cline-yes">73x</span>
447
+ <span class="cline-any cline-yes">71x</span>
436
448
  <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-yes">73x</span>
438
- <span class="cline-any cline-yes">73x</span>
439
- <span class="cline-any cline-yes">73x</span>
440
- <span class="cline-any cline-yes">331x</span>
449
+ <span class="cline-any cline-yes">71x</span>
450
+ <span class="cline-any cline-yes">71x</span>
451
+ <span class="cline-any cline-yes">71x</span>
452
+ <span class="cline-any cline-yes">322x</span>
441
453
  <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-yes">331x</span>
443
- <span class="cline-any cline-yes">157x</span>
454
+ <span class="cline-any cline-yes">322x</span>
455
+ <span class="cline-any cline-yes">153x</span>
444
456
  <span class="cline-any cline-yes">3x</span>
445
457
  <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-yes">157x</span>
458
+ <span class="cline-any cline-yes">153x</span>
447
459
  <span class="cline-any cline-neutral">&nbsp;</span>
448
460
  <span class="cline-any cline-neutral">&nbsp;</span>
449
461
  <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-yes">174x</span>
462
+ <span class="cline-any cline-yes">169x</span>
451
463
  <span class="cline-any cline-no">&nbsp;</span>
452
464
  <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-yes">174x</span>
465
+ <span class="cline-any cline-yes">169x</span>
454
466
  <span class="cline-any cline-neutral">&nbsp;</span>
455
467
  <span class="cline-any cline-neutral">&nbsp;</span>
456
468
  <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">73x</span>
469
+ <span class="cline-any cline-yes">71x</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
471
  <span class="cline-any cline-neutral">&nbsp;</span>
459
472
  <span class="cline-any cline-neutral">&nbsp;</span>
460
473
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -467,33 +480,44 @@
467
480
  <span class="cline-any cline-neutral">&nbsp;</span>
468
481
  <span class="cline-any cline-neutral">&nbsp;</span>
469
482
  <span class="cline-any cline-yes">33x</span>
470
- <span class="cline-any cline-yes">25x</span>
471
- <span class="cline-any cline-yes">25x</span>
472
- <span class="cline-any cline-yes">25x</span>
473
- <span class="cline-any cline-yes">15x</span>
474
- <span class="cline-any cline-yes">15x</span>
475
483
  <span class="cline-any cline-neutral">&nbsp;</span>
476
484
  <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-yes">25x</span>
478
485
  <span class="cline-any cline-neutral">&nbsp;</span>
479
486
  <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-yes">25x</span>
481
487
  <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-yes">97x</span>
489
+ <span class="cline-any cline-yes">97x</span>
490
+ <span class="cline-any cline-yes">97x</span>
491
+ <span class="cline-any cline-yes">85x</span>
492
+ <span class="cline-any cline-yes">85x</span>
482
493
  <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-yes">25x</span>
484
- <span class="cline-any cline-yes">89x</span>
485
- <span class="cline-any cline-yes">4x</span>
486
- <span class="cline-any cline-yes">4x</span>
487
- <span class="cline-any cline-yes">3x</span>
488
494
  <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-yes">1x</span>
490
- <span class="cline-any cline-yes">1x</span>
495
+ <span class="cline-any cline-yes">97x</span>
491
496
  <span class="cline-any cline-neutral">&nbsp;</span>
492
497
  <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-yes">97x</span>
493
499
  <span class="cline-any cline-neutral">&nbsp;</span>
494
500
  <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-yes">97x</span>
502
+ <span class="cline-any cline-yes">290x</span>
503
+ <span class="cline-any cline-yes">8x</span>
504
+ <span class="cline-any cline-yes">8x</span>
505
+ <span class="cline-any cline-yes">6x</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-yes">2x</span>
508
+ <span class="cline-any cline-yes">2x</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-yes">97x</span>
495
514
  <span class="cline-any cline-yes">25x</span>
496
- <span class="cline-any cline-yes">25x</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-yes">97x</span>
497
521
  <span class="cline-any cline-neutral">&nbsp;</span>
498
522
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const linkRows = require("../../db/linkedRows")
499
523
  const { cloneDeep } = require("lodash/fp")
@@ -682,10 +706,16 @@ exports.inputProcessing = (user = {}, table, row) =&gt; {
682
706
  * @param {object} ctx the request which is looking for enriched rows.
683
707
  * @param {object} table the table from which these rows came from originally, this is used to determine
684
708
  * the schema of the rows and then enrich.
685
- * @param {object[]} rows the rows which are to be enriched.
686
- * @returns {object[]} the enriched rows will be returned.
709
+ * @param {object[]|object} rows the rows which are to be enriched.
710
+ * @param {object} opts used to set some options for the output, such as disabling relationship squashing.
711
+ * @returns {object[]|object} the enriched rows will be returned.
687
712
  */
688
- exports.outputProcessing = async (ctx, table, rows) =&gt; {
713
+ exports.outputProcessing = async (
714
+ ctx,
715
+ table,
716
+ rows,
717
+ opts = { squash: true }
718
+ ) =&gt; {
689
719
  const appId = ctx.appId
690
720
  let wasArray = true
691
721
  if (!(rows instanceof Array)) {
@@ -711,7 +741,13 @@ exports.outputProcessing = async (ctx, table, rows) =&gt; {
711
741
  }
712
742
  }
713
743
  }
714
- enriched = await linkRows.squashLinksToPrimaryDisplay(appId, table, enriched)
744
+ if (opts.squash) {
745
+ enriched = await linkRows.squashLinksToPrimaryDisplay(
746
+ appId,
747
+ table,
748
+ enriched
749
+ )
750
+ }
715
751
  return wasArray ? enriched : enriched[0]
716
752
  }
717
753
  &nbsp;</pre></td></tr></table></pre>
@@ -721,7 +757,7 @@ exports.outputProcessing = async (ctx, table, rows) =&gt; {
721
757
  <div class='footer quiet pad2 space-top1 center small'>
722
758
  Code coverage generated by
723
759
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
724
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
760
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
725
761
  </div>
726
762
  </div>
727
763
  <script src="../../prettify.js"></script>