@budibase/server 1.0.45 → 1.0.46-alpha.3

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 (221) hide show
  1. package/builder/assets/{index.39e01193.css → index.0df4f7ab.css} +1 -1
  2. package/builder/assets/{index.04ee727d.js → index.6eae2fa0.js} +229 -227
  3. package/builder/assets/{vendor.f9faf6ab.js → vendor.10e2ad1b.js} +12 -12
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +1470 -1285
  6. package/coverage/coverage-final.json +90 -84
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +90 -90
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +21 -21
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +16 -16
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/index.html +1 -1
  19. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
  21. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  23. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/index.js.html +19 -19
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  26. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  27. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/external.js.html +16 -16
  29. package/coverage/lcov-report/api/controllers/row/index.html +15 -15
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +44 -44
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +8 -8
  33. package/coverage/lcov-report/api/controllers/row/utils.js.html +53 -38
  34. package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
  35. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +12 -12
  37. package/coverage/lcov-report/api/controllers/table/index.html +23 -23
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +57 -39
  39. package/coverage/lcov-report/api/controllers/table/internal.js.html +40 -34
  40. package/coverage/lcov-report/api/controllers/table/utils.js.html +86 -62
  41. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/user.js.html +20 -20
  43. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  44. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
  46. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  47. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  48. package/coverage/lcov-report/api/controllers/webhook.js.html +15 -15
  49. package/coverage/lcov-report/api/index.html +1 -1
  50. package/coverage/lcov-report/api/index.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/index.html +1 -1
  64. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  81. package/coverage/lcov-report/automations/actions.js.html +24 -24
  82. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  83. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  84. package/coverage/lcov-report/automations/index.html +1 -1
  85. package/coverage/lcov-report/automations/index.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  87. package/coverage/lcov-report/automations/steps/createRow.js.html +13 -19
  88. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  89. package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
  90. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  91. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  92. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  93. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  94. package/coverage/lcov-report/automations/steps/index.html +13 -13
  95. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  96. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  97. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  98. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  99. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  100. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  101. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  102. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  103. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  104. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  105. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  106. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  108. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  109. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  110. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  113. package/coverage/lcov-report/automations/utils.js.html +32 -32
  114. package/coverage/lcov-report/constants/index.html +1 -1
  115. package/coverage/lcov-report/constants/index.js.html +22 -22
  116. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  117. package/coverage/lcov-report/constants/screens.js.html +4 -4
  118. package/coverage/lcov-report/db/client.js.html +18 -18
  119. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  120. package/coverage/lcov-report/db/index.html +15 -15
  121. package/coverage/lcov-report/db/index.js.html +3 -3
  122. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +18 -18
  123. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/index.js.html +31 -31
  125. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +15 -15
  126. package/coverage/lcov-report/db/newid.js.html +4 -4
  127. package/coverage/lcov-report/db/utils.js.html +83 -83
  128. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  129. package/coverage/lcov-report/events/index.html +1 -1
  130. package/coverage/lcov-report/events/index.js.html +5 -5
  131. package/coverage/lcov-report/events/utils.js.html +3 -3
  132. package/coverage/lcov-report/index.html +74 -44
  133. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  134. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  135. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  136. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  137. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  138. package/coverage/lcov-report/middleware/currentapp.js.html +33 -6
  139. package/coverage/lcov-report/middleware/index.html +25 -25
  140. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  141. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  142. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  143. package/coverage/lcov-report/middleware/usageQuota.js.html +275 -41
  144. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  145. package/coverage/lcov-report/migrations/usageQuotas/index.html +141 -0
  146. package/coverage/lcov-report/migrations/usageQuotas/index.js.html +152 -0
  147. package/coverage/lcov-report/migrations/usageQuotas/syncApps.js.html +134 -0
  148. package/coverage/lcov-report/migrations/usageQuotas/syncRows.js.html +143 -0
  149. package/coverage/lcov-report/threads/automation.js.html +1 -1
  150. package/coverage/lcov-report/threads/index.html +1 -1
  151. package/coverage/lcov-report/threads/index.js.html +10 -10
  152. package/coverage/lcov-report/threads/query.js.html +1 -1
  153. package/coverage/lcov-report/threads/utils.js.html +14 -14
  154. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  155. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  156. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  157. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  158. package/coverage/lcov-report/utilities/global.js.html +14 -14
  159. package/coverage/lcov-report/utilities/index.html +1 -1
  160. package/coverage/lcov-report/utilities/index.js.html +25 -25
  161. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  162. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  163. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  164. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  166. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +53 -53
  167. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
  168. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  169. package/coverage/lcov-report/utilities/security.js.html +8 -8
  170. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  171. package/coverage/lcov-report/utilities/usageQuota/index.html +141 -0
  172. package/coverage/lcov-report/utilities/usageQuota/index.js.html +356 -0
  173. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +302 -0
  174. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +134 -0
  175. package/coverage/lcov-report/utilities/users.js.html +5 -5
  176. package/coverage/lcov-report/utilities/workerRequests.js.html +31 -31
  177. package/coverage/lcov.info +2010 -1698
  178. package/dist/api/controllers/row/utils.js +12 -6
  179. package/dist/api/controllers/table/index.js +10 -4
  180. package/dist/api/controllers/table/internal.js +2 -0
  181. package/dist/api/controllers/table/utils.js +9 -2
  182. package/dist/automations/steps/createRow.js +2 -4
  183. package/dist/automations/steps/deleteRow.js +1 -4
  184. package/dist/environment.js +1 -0
  185. package/dist/integrations/base/sql.js +13 -6
  186. package/dist/integrations/utils.js +53 -8
  187. package/dist/middleware/currentapp.js +9 -0
  188. package/dist/middleware/usageQuota.js +82 -13
  189. package/dist/migrations/usageQuotas/index.js +24 -0
  190. package/dist/migrations/usageQuotas/syncApps.js +26 -0
  191. package/dist/migrations/usageQuotas/syncRows.js +29 -0
  192. package/dist/package.json +4 -4
  193. package/dist/tsconfig.tsbuildinfo +1 -1
  194. package/dist/utilities/{usageQuota.js → usageQuota/index.js} +44 -31
  195. package/dist/utilities/usageQuota/rows.js +77 -0
  196. package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
  197. package/package.json +5 -5
  198. package/src/api/controllers/row/utils.js +11 -6
  199. package/src/api/controllers/table/index.js +15 -9
  200. package/src/api/controllers/table/internal.js +2 -0
  201. package/src/api/controllers/table/utils.js +9 -1
  202. package/src/automations/steps/createRow.js +2 -4
  203. package/src/automations/steps/deleteRow.js +1 -4
  204. package/src/environment.js +1 -0
  205. package/src/integrations/base/sql.ts +14 -7
  206. package/src/integrations/tests/sql.spec.js +16 -0
  207. package/src/integrations/utils.ts +57 -10
  208. package/src/middleware/currentapp.js +9 -0
  209. package/src/middleware/tests/usageQuota.spec.js +18 -24
  210. package/src/middleware/usageQuota.js +93 -15
  211. package/src/migrations/tests/usageQuotas/index.spec.js +27 -0
  212. package/src/migrations/tests/usageQuotas/syncApps.spec.js +37 -0
  213. package/src/migrations/tests/usageQuotas/syncRows.spec.js +43 -0
  214. package/src/migrations/usageQuotas/index.js +24 -0
  215. package/src/migrations/usageQuotas/syncApps.js +18 -0
  216. package/src/migrations/usageQuotas/syncRows.js +21 -0
  217. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  218. package/src/utilities/usageQuota/index.js +92 -0
  219. package/src/utilities/usageQuota/rows.js +74 -0
  220. package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
  221. package/src/utilities/usageQuota.js +0 -73
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">73.46% </span>
26
+ <span class="strong">69.23% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>36/49</span>
28
+ <span class='fraction'>36/52</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">53.84% </span>
33
+ <span class="strong">45.16% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>14/26</span>
35
+ <span class='fraction'>14/31</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">72.91% </span>
47
+ <span class="strong">68.62% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>35/48</span>
49
+ <span class='fraction'>35/51</span>
50
50
  </div>
51
51
 
52
52
 
@@ -145,16 +145,21 @@
145
145
  <a name='L86'></a><a href='#L86'>86</a>
146
146
  <a name='L87'></a><a href='#L87'>87</a>
147
147
  <a name='L88'></a><a href='#L88'>88</a>
148
- <a name='L89'></a><a href='#L89'>89</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
149
- <span class="cline-any cline-yes">34x</span>
150
- <span class="cline-any cline-yes">34x</span>
151
- <span class="cline-any cline-yes">34x</span>
152
- <span class="cline-any cline-yes">34x</span>
153
- <span class="cline-any cline-yes">34x</span>
154
- <span class="cline-any cline-yes">34x</span>
155
- <span class="cline-any cline-yes">34x</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-yes">34x</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
154
+ <span class="cline-any cline-yes">37x</span>
155
+ <span class="cline-any cline-yes">37x</span>
156
+ <span class="cline-any cline-yes">37x</span>
157
+ <span class="cline-any cline-yes">37x</span>
158
+ <span class="cline-any cline-yes">37x</span>
159
+ <span class="cline-any cline-yes">37x</span>
160
+ <span class="cline-any cline-yes">37x</span>
161
+ <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-yes">37x</span>
158
163
  <span class="cline-any cline-neutral">&nbsp;</span>
159
164
  <span class="cline-any cline-yes">2x</span>
160
165
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -164,14 +169,14 @@
164
169
  <span class="cline-any cline-neutral">&nbsp;</span>
165
170
  <span class="cline-any cline-neutral">&nbsp;</span>
166
171
  <span class="cline-any cline-neutral">&nbsp;</span>
167
- <span class="cline-any cline-yes">34x</span>
172
+ <span class="cline-any cline-yes">37x</span>
168
173
  <span class="cline-any cline-yes">1x</span>
169
174
  <span class="cline-any cline-yes">1x</span>
170
175
  <span class="cline-any cline-yes">1x</span>
171
176
  <span class="cline-any cline-yes">1x</span>
172
177
  <span class="cline-any cline-neutral">&nbsp;</span>
173
178
  <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-yes">34x</span>
179
+ <span class="cline-any cline-yes">37x</span>
175
180
  <span class="cline-any cline-neutral">&nbsp;</span>
176
181
  <span class="cline-any cline-neutral">&nbsp;</span>
177
182
  <span class="cline-any cline-yes">19x</span>
@@ -189,17 +194,17 @@
189
194
  <span class="cline-any cline-yes">16x</span>
190
195
  <span class="cline-any cline-neutral">&nbsp;</span>
191
196
  <span class="cline-any cline-neutral">&nbsp;</span>
192
- <span class="cline-any cline-yes">34x</span>
193
- <span class="cline-any cline-yes">74x</span>
197
+ <span class="cline-any cline-yes">37x</span>
198
+ <span class="cline-any cline-yes">77x</span>
194
199
  <span class="cline-any cline-yes">2x</span>
195
200
  <span class="cline-any cline-yes">2x</span>
196
201
  <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-yes">74x</span>
198
- <span class="cline-any cline-yes">74x</span>
199
- <span class="cline-any cline-yes">206x</span>
200
- <span class="cline-any cline-yes">206x</span>
202
+ <span class="cline-any cline-yes">77x</span>
203
+ <span class="cline-any cline-yes">77x</span>
204
+ <span class="cline-any cline-yes">212x</span>
205
+ <span class="cline-any cline-yes">212x</span>
201
206
  <span class="cline-any cline-neutral">&nbsp;</span>
202
- <span class="cline-any cline-yes">206x</span>
207
+ <span class="cline-any cline-yes">212x</span>
203
208
  <span class="cline-any cline-neutral">&nbsp;</span>
204
209
  <span class="cline-any cline-neutral">&nbsp;</span>
205
210
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -208,30 +213,35 @@
208
213
  <span class="cline-any cline-neutral">&nbsp;</span>
209
214
  <span class="cline-any cline-neutral">&nbsp;</span>
210
215
  <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-yes">206x</span>
216
+ <span class="cline-any cline-yes">212x</span>
217
+ <span class="cline-any cline-no">&nbsp;</span>
212
218
  <span class="cline-any cline-no">&nbsp;</span>
213
219
  <span class="cline-any cline-no">&nbsp;</span>
214
220
  <span class="cline-any cline-no">&nbsp;</span>
215
221
  <span class="cline-any cline-neutral">&nbsp;</span>
216
222
  <span class="cline-any cline-neutral">&nbsp;</span>
217
- <span class="cline-any cline-yes">206x</span>
223
+ <span class="cline-any cline-no">&nbsp;</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
225
+ <span class="cline-any cline-no">&nbsp;</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-yes">212x</span>
218
228
  <span class="cline-any cline-neutral">&nbsp;</span>
219
229
  <span class="cline-any cline-no">&nbsp;</span>
220
230
  <span class="cline-any cline-no">&nbsp;</span>
221
231
  <span class="cline-any cline-neutral">&nbsp;</span>
222
232
  <span class="cline-any cline-no">&nbsp;</span>
223
233
  <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-yes">206x</span>
234
+ <span class="cline-any cline-yes">212x</span>
225
235
  <span class="cline-any cline-no">&nbsp;</span>
226
236
  <span class="cline-any cline-neutral">&nbsp;</span>
227
237
  <span class="cline-any cline-neutral">&nbsp;</span>
228
238
  <span class="cline-any cline-neutral">&nbsp;</span>
229
239
  <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-yes">206x</span>
240
+ <span class="cline-any cline-yes">212x</span>
231
241
  <span class="cline-any cline-neutral">&nbsp;</span>
232
- <span class="cline-any cline-yes">206x</span>
242
+ <span class="cline-any cline-yes">212x</span>
233
243
  <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-yes">74x</span>
244
+ <span class="cline-any cline-yes">77x</span>
235
245
  <span class="cline-any cline-neutral">&nbsp;</span>
236
246
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const validateJs = require("validate.js")
237
247
  const { cloneDeep } = require("lodash/fp")
@@ -296,12 +306,17 @@ exports.validate = async ({ appId, tableId, row, table }) =&gt; {
296
306
  let res
297
307
  &nbsp;
298
308
  // Validate.js doesn't seem to handle array
299
- <span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.ARRAY &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >row[fieldName] </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >row[fieldName].length)</span> {
300
- <span class="cstat-no" title="statement not covered" > row[fieldName].map(<span class="fstat-no" title="function not covered" >va</span>l =&gt; {</span>
301
- <span class="cstat-no" title="statement not covered" > if (!constraints.inclusion.includes(val)) {</span>
302
- <span class="cstat-no" title="statement not covered" > errors[fieldName] = "Field not in list"</span>
303
- }
304
- })
309
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.ARRAY &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >row[fieldName])</span> {
310
+ <span class="cstat-no" title="statement not covered" > if (row[fieldName].length) {</span>
311
+ <span class="cstat-no" title="statement not covered" > row[fieldName].map(<span class="fstat-no" title="function not covered" >va</span>l =&gt; {</span>
312
+ <span class="cstat-no" title="statement not covered" > if (!constraints.inclusion.includes(val)) {</span>
313
+ <span class="cstat-no" title="statement not covered" > errors[fieldName] = "Field not in list"</span>
314
+ }
315
+ })
316
+ } else <span class="cstat-no" title="statement not covered" >if (constraints.presence &amp;&amp; row[fieldName].length === 0) {</span>
317
+ // non required MultiSelect creates an empty array, which should not throw errors
318
+ <span class="cstat-no" title="statement not covered" > errors[fieldName] = [`${fieldName} is required`]</span>
319
+ }
305
320
  } else <span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.JSON &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof row[fieldName] === "string")</span> {
306
321
  // this should only happen if there is an error
307
322
  <span class="cstat-no" title="statement not covered" > try {</span>
@@ -328,7 +343,7 @@ exports.validate = async ({ appId, tableId, row, table }) =&gt; {
328
343
  <div class='footer quiet pad2 space-top1 center small'>
329
344
  Code coverage generated by
330
345
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
331
- at Thu Jan 20 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
346
+ at Fri Jan 21 2022 11:26:59 GMT+0000 (Coordinated Universal Time)
332
347
  </div>
333
348
  </div>
334
349
  <script src="../../../prettify.js"></script>
@@ -105,11 +105,11 @@
105
105
  <a name='L46'></a><a href='#L46'>46</a>
106
106
  <a name='L47'></a><a href='#L47'>47</a>
107
107
  <a name='L48'></a><a href='#L48'>48</a>
108
- <a name='L49'></a><a href='#L49'>49</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
109
- <span class="cline-any cline-yes">33x</span>
110
- <span class="cline-any cline-yes">33x</span>
108
+ <a name='L49'></a><a href='#L49'>49</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">36x</span>
109
+ <span class="cline-any cline-yes">36x</span>
110
+ <span class="cline-any cline-yes">36x</span>
111
111
  <span class="cline-any cline-neutral">&nbsp;</span>
112
- <span class="cline-any cline-yes">33x</span>
112
+ <span class="cline-any cline-yes">36x</span>
113
113
  <span class="cline-any cline-yes">1x</span>
114
114
  <span class="cline-any cline-yes">1x</span>
115
115
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -127,7 +127,7 @@
127
127
  <span class="cline-any cline-neutral">&nbsp;</span>
128
128
  <span class="cline-any cline-neutral">&nbsp;</span>
129
129
  <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-yes">33x</span>
130
+ <span class="cline-any cline-yes">36x</span>
131
131
  <span class="cline-any cline-yes">19x</span>
132
132
  <span class="cline-any cline-yes">19x</span>
133
133
  <span class="cline-any cline-yes">19x</span>
@@ -145,7 +145,7 @@
145
145
  <span class="cline-any cline-neutral">&nbsp;</span>
146
146
  <span class="cline-any cline-neutral">&nbsp;</span>
147
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-yes">33x</span>
148
+ <span class="cline-any cline-yes">36x</span>
149
149
  <span class="cline-any cline-yes">1x</span>
150
150
  <span class="cline-any cline-yes">1x</span>
151
151
  <span class="cline-any cline-yes">1x</span>
@@ -208,7 +208,7 @@ exports.destroy = async ctx =&gt; {
208
208
  <div class='footer quiet pad2 space-top1 center small'>
209
209
  Code coverage generated by
210
210
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
211
- at Thu Jan 20 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
211
+ at Fri Jan 21 2022 11:26:59 GMT+0000 (Coordinated Universal Time)
212
212
  </div>
213
213
  </div>
214
214
  <script src="../../prettify.js"></script>
@@ -68,15 +68,15 @@
68
68
  <a name='L9'></a><a href='#L9'>9</a>
69
69
  <a name='L10'></a><a href='#L10'>10</a>
70
70
  <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
71
+ <a name='L12'></a><a href='#L12'>12</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
72
72
  <span class="cline-any cline-neutral">&nbsp;</span>
73
- <span class="cline-any cline-yes">34x</span>
73
+ <span class="cline-any cline-yes">37x</span>
74
74
  <span class="cline-any cline-no">&nbsp;</span>
75
75
  <span class="cline-any cline-no">&nbsp;</span>
76
76
  <span class="cline-any cline-no">&nbsp;</span>
77
77
  <span class="cline-any cline-neutral">&nbsp;</span>
78
78
  <span class="cline-any cline-neutral">&nbsp;</span>
79
- <span class="cline-any cline-yes">34x</span>
79
+ <span class="cline-any cline-yes">37x</span>
80
80
  <span class="cline-any cline-no">&nbsp;</span>
81
81
  <span class="cline-any cline-neutral">&nbsp;</span>
82
82
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const ScriptRunner = require("../../utilities/scriptRunner")
@@ -97,7 +97,7 @@ exports.save = <span class="fstat-no" title="function not covered" >as</span>ync
97
97
  <div class='footer quiet pad2 space-top1 center small'>
98
98
  Code coverage generated by
99
99
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
100
- at Thu Jan 20 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
100
+ at Fri Jan 21 2022 11:26:59 GMT+0000 (Coordinated Universal Time)
101
101
  </div>
102
102
  </div>
103
103
  <script src="../../prettify.js"></script>
@@ -364,27 +364,27 @@
364
364
  <a name='L305'></a><a href='#L305'>305</a>
365
365
  <a name='L306'></a><a href='#L306'>306</a>
366
366
  <a name='L307'></a><a href='#L307'>307</a>
367
- <a name='L308'></a><a href='#L308'>308</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
367
+ <a name='L308'></a><a href='#L308'>308</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
368
368
  <span class="cline-any cline-neutral">&nbsp;</span>
369
369
  <span class="cline-any cline-neutral">&nbsp;</span>
370
370
  <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-yes">34x</span>
371
+ <span class="cline-any cline-yes">37x</span>
372
372
  <span class="cline-any cline-neutral">&nbsp;</span>
373
373
  <span class="cline-any cline-neutral">&nbsp;</span>
374
374
  <span class="cline-any cline-neutral">&nbsp;</span>
375
375
  <span class="cline-any cline-neutral">&nbsp;</span>
376
376
  <span class="cline-any cline-neutral">&nbsp;</span>
377
377
  <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-yes">34x</span>
378
+ <span class="cline-any cline-yes">37x</span>
379
379
  <span class="cline-any cline-neutral">&nbsp;</span>
380
380
  <span class="cline-any cline-neutral">&nbsp;</span>
381
381
  <span class="cline-any cline-neutral">&nbsp;</span>
382
382
  <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-yes">34x</span>
384
- <span class="cline-any cline-yes">34x</span>
385
- <span class="cline-any cline-yes">34x</span>
386
- <span class="cline-any cline-yes">34x</span>
387
- <span class="cline-any cline-yes">34x</span>
383
+ <span class="cline-any cline-yes">37x</span>
384
+ <span class="cline-any cline-yes">37x</span>
385
+ <span class="cline-any cline-yes">37x</span>
386
+ <span class="cline-any cline-yes">37x</span>
387
+ <span class="cline-any cline-yes">37x</span>
388
388
  <span class="cline-any cline-neutral">&nbsp;</span>
389
389
  <span class="cline-any cline-neutral">&nbsp;</span>
390
390
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -524,7 +524,7 @@
524
524
  <span class="cline-any cline-no">&nbsp;</span>
525
525
  <span class="cline-any cline-neutral">&nbsp;</span>
526
526
  <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-yes">34x</span>
527
+ <span class="cline-any cline-yes">37x</span>
528
528
  <span class="cline-any cline-no">&nbsp;</span>
529
529
  <span class="cline-any cline-no">&nbsp;</span>
530
530
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -632,7 +632,7 @@
632
632
  <span class="cline-any cline-no">&nbsp;</span>
633
633
  <span class="cline-any cline-neutral">&nbsp;</span>
634
634
  <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-yes">34x</span>
635
+ <span class="cline-any cline-yes">37x</span>
636
636
  <span class="cline-any cline-no">&nbsp;</span>
637
637
  <span class="cline-any cline-no">&nbsp;</span>
638
638
  <span class="cline-any cline-no">&nbsp;</span>
@@ -655,7 +655,7 @@
655
655
  <span class="cline-any cline-no">&nbsp;</span>
656
656
  <span class="cline-any cline-neutral">&nbsp;</span>
657
657
  <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-yes">34x</span>
658
+ <span class="cline-any cline-yes">37x</span>
659
659
  <span class="cline-any cline-no">&nbsp;</span>
660
660
  <span class="cline-any cline-no">&nbsp;</span>
661
661
  <span class="cline-any cline-no">&nbsp;</span>
@@ -985,7 +985,7 @@ exports.bulkImport = <span class="fstat-no" title="function not covered" >as</sp
985
985
  <div class='footer quiet pad2 space-top1 center small'>
986
986
  Code coverage generated by
987
987
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
988
- at Thu Jan 20 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
988
+ at Fri Jan 21 2022 11:26:59 GMT+0000 (Coordinated Universal Time)
989
989
  </div>
990
990
  </div>
991
991
  <script src="../../../prettify.js"></script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">51.16% </span>
26
+ <span class="strong">51.13% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>220/430</span>
28
+ <span class='fraction'>225/440</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">51.65% </span>
47
+ <span class="strong">51.62% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>218/422</span>
49
+ <span class='fraction'>223/432</span>
50
50
  </div>
51
51
 
52
52
 
@@ -88,48 +88,48 @@
88
88
  </tr>
89
89
 
90
90
  <tr>
91
- <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
92
- <td data-value="81.81" class="pic high">
93
- <div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
91
+ <td class="file medium" data-value="index.js"><a href="index.js.html">index.js</a></td>
92
+ <td data-value="77.58" class="pic medium">
93
+ <div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
94
94
  </td>
95
- <td data-value="81.81" class="pct high">81.81%</td>
96
- <td data-value="55" class="abs high">45/55</td>
95
+ <td data-value="77.58" class="pct medium">77.58%</td>
96
+ <td data-value="58" class="abs medium">45/58</td>
97
97
  <td data-value="73.91" class="pct medium">73.91%</td>
98
98
  <td data-value="23" class="abs medium">17/23</td>
99
99
  <td data-value="70" class="pct medium">70%</td>
100
100
  <td data-value="10" class="abs medium">7/10</td>
101
- <td data-value="83.01" class="pct high">83.01%</td>
102
- <td data-value="53" class="abs high">44/53</td>
101
+ <td data-value="78.57" class="pct medium">78.57%</td>
102
+ <td data-value="56" class="abs medium">44/56</td>
103
103
  </tr>
104
104
 
105
105
  <tr>
106
106
  <td class="file medium" data-value="internal.js"><a href="internal.js.html">internal.js</a></td>
107
- <td data-value="74.6" class="pic medium">
108
- <div class="chart"><div class="cover-fill" style="width: 74%"></div><div class="cover-empty" style="width: 26%"></div></div>
107
+ <td data-value="75.38" class="pic medium">
108
+ <div class="chart"><div class="cover-fill" style="width: 75%"></div><div class="cover-empty" style="width: 25%"></div></div>
109
109
  </td>
110
- <td data-value="74.6" class="pct medium">74.6%</td>
111
- <td data-value="63" class="abs medium">47/63</td>
110
+ <td data-value="75.38" class="pct medium">75.38%</td>
111
+ <td data-value="65" class="abs medium">49/65</td>
112
112
  <td data-value="71.87" class="pct medium">71.87%</td>
113
113
  <td data-value="32" class="abs medium">23/32</td>
114
114
  <td data-value="60" class="pct medium">60%</td>
115
115
  <td data-value="5" class="abs medium">3/5</td>
116
- <td data-value="78.33" class="pct medium">78.33%</td>
117
- <td data-value="60" class="abs medium">47/60</td>
116
+ <td data-value="79.03" class="pct medium">79.03%</td>
117
+ <td data-value="62" class="abs medium">49/62</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
121
121
  <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
122
- <td data-value="66.85" class="pic medium">
122
+ <td data-value="66.66" class="pic medium">
123
123
  <div class="chart"><div class="cover-fill" style="width: 66%"></div><div class="cover-empty" style="width: 34%"></div></div>
124
124
  </td>
125
- <td data-value="66.85" class="pct medium">66.85%</td>
126
- <td data-value="175" class="abs medium">117/175</td>
125
+ <td data-value="66.66" class="pct medium">66.66%</td>
126
+ <td data-value="180" class="abs medium">120/180</td>
127
127
  <td data-value="45.55" class="pct low">45.55%</td>
128
128
  <td data-value="90" class="abs low">41/90</td>
129
129
  <td data-value="62.96" class="pct medium">62.96%</td>
130
130
  <td data-value="27" class="abs medium">17/27</td>
131
- <td data-value="67.44" class="pct medium">67.44%</td>
132
- <td data-value="172" class="abs medium">116/172</td>
131
+ <td data-value="67.23" class="pct medium">67.23%</td>
132
+ <td data-value="177" class="abs medium">119/177</td>
133
133
  </tr>
134
134
 
135
135
  </tbody>
@@ -140,7 +140,7 @@
140
140
  <div class='footer quiet pad2 space-top1 center small'>
141
141
  Code coverage generated by
142
142
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
143
- at Thu Jan 20 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
143
+ at Fri Jan 21 2022 11:26:59 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../../../prettify.js"></script>