@budibase/server 1.0.48 → 1.0.49-alpha.0

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 (257) hide show
  1. package/builder/assets/{index.e083dcaf.js → index.8184eed9.js} +224 -222
  2. package/builder/assets/{index.39e01193.css → index.dd9e386f.css} +1 -1
  3. package/builder/assets/{vendor.f9faf6ab.js → vendor.3bd2f661.js} +12 -12
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +1860 -1683
  6. package/coverage/coverage-final.json +99 -95
  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 +210 -126
  10. package/coverage/lcov-report/api/controllers/auth.js.html +18 -6
  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 +4 -4
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +72 -36
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +38 -53
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  22. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.js.html +19 -19
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  25. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +16 -16
  28. package/coverage/lcov-report/api/controllers/row/index.html +15 -15
  29. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  30. package/coverage/lcov-report/api/controllers/row/internal.js.html +44 -44
  31. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +8 -8
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +39 -57
  33. package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
  34. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  35. package/coverage/lcov-report/api/controllers/table/external.js.html +12 -12
  36. package/coverage/lcov-report/api/controllers/table/index.html +23 -23
  37. package/coverage/lcov-report/api/controllers/table/index.js.html +57 -39
  38. package/coverage/lcov-report/api/controllers/table/internal.js.html +40 -34
  39. package/coverage/lcov-report/api/controllers/table/utils.js.html +87 -63
  40. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/user.js.html +30 -24
  42. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  43. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
  45. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  46. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  47. package/coverage/lcov-report/api/controllers/webhook.js.html +15 -15
  48. package/coverage/lcov-report/api/index.html +1 -1
  49. package/coverage/lcov-report/api/index.js.html +10 -10
  50. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/index.html +7 -22
  62. package/coverage/lcov-report/api/routes/index.js.html +4 -10
  63. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/static.js.html +17 -2
  74. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  79. package/coverage/lcov-report/automations/actions.js.html +24 -24
  80. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  81. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  82. package/coverage/lcov-report/automations/index.html +1 -1
  83. package/coverage/lcov-report/automations/index.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  85. package/coverage/lcov-report/automations/steps/createRow.js.html +13 -19
  86. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  87. package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
  88. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  89. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  90. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  91. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  92. package/coverage/lcov-report/automations/steps/index.html +13 -13
  93. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  94. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  95. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  96. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  97. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  98. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  99. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  100. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  101. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  102. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  103. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  104. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  106. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  107. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  108. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  109. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  110. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  111. package/coverage/lcov-report/automations/utils.js.html +32 -32
  112. package/coverage/lcov-report/constants/index.html +5 -5
  113. package/coverage/lcov-report/constants/index.js.html +38 -26
  114. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  115. package/coverage/lcov-report/constants/screens.js.html +4 -4
  116. package/coverage/lcov-report/db/client.js.html +18 -18
  117. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  118. package/coverage/lcov-report/db/index.html +15 -15
  119. package/coverage/lcov-report/db/index.js.html +3 -3
  120. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +18 -18
  121. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/index.js.html +31 -31
  123. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +15 -15
  124. package/coverage/lcov-report/db/newid.js.html +4 -4
  125. package/coverage/lcov-report/db/utils.js.html +85 -85
  126. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  127. package/coverage/lcov-report/events/index.html +1 -1
  128. package/coverage/lcov-report/events/index.js.html +5 -5
  129. package/coverage/lcov-report/events/utils.js.html +3 -3
  130. package/coverage/lcov-report/index.html +107 -77
  131. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  132. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  133. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  134. package/coverage/lcov-report/middleware/authorized.js.html +166 -64
  135. package/coverage/lcov-report/middleware/builder.js.html +8 -8
  136. package/coverage/lcov-report/middleware/currentapp.js.html +29 -29
  137. package/coverage/lcov-report/middleware/index.html +30 -30
  138. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  139. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  140. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  141. package/coverage/lcov-report/middleware/usageQuota.js.html +275 -41
  142. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  143. package/coverage/lcov-report/migrations/usageQuotas/index.html +141 -0
  144. package/coverage/lcov-report/migrations/usageQuotas/index.js.html +152 -0
  145. package/coverage/lcov-report/{api/routes/hosting.js.html → migrations/usageQuotas/syncApps.js.html} +42 -27
  146. package/coverage/lcov-report/{api/controllers/hosting.js.html → migrations/usageQuotas/syncRows.js.html} +41 -44
  147. package/coverage/lcov-report/threads/automation.js.html +1 -1
  148. package/coverage/lcov-report/threads/index.html +15 -15
  149. package/coverage/lcov-report/threads/index.js.html +10 -10
  150. package/coverage/lcov-report/threads/query.js.html +23 -8
  151. package/coverage/lcov-report/threads/utils.js.html +14 -14
  152. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  153. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  154. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  155. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  156. package/coverage/lcov-report/utilities/global.js.html +26 -26
  157. package/coverage/lcov-report/utilities/index.html +19 -19
  158. package/coverage/lcov-report/utilities/index.js.html +25 -25
  159. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  160. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  161. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  163. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  164. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +53 -53
  165. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
  166. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  167. package/coverage/lcov-report/utilities/security.js.html +8 -8
  168. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  169. package/coverage/lcov-report/utilities/usageQuota/index.html +141 -0
  170. package/coverage/lcov-report/utilities/usageQuota/index.js.html +356 -0
  171. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +302 -0
  172. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +134 -0
  173. package/coverage/lcov-report/utilities/users.js.html +5 -5
  174. package/coverage/lcov-report/utilities/workerRequests.js.html +39 -108
  175. package/coverage/lcov.info +2730 -2419
  176. package/dist/api/controllers/application.js +49 -20
  177. package/dist/api/controllers/auth.js +4 -0
  178. package/dist/api/controllers/datasource.js +11 -0
  179. package/dist/api/controllers/row/utils.js +6 -8
  180. package/dist/api/controllers/static/index.js +59 -10
  181. package/dist/api/controllers/table/index.js +10 -4
  182. package/dist/api/controllers/table/internal.js +2 -0
  183. package/dist/api/controllers/table/utils.js +9 -2
  184. package/dist/api/controllers/user.js +2 -0
  185. package/dist/api/routes/index.js +0 -2
  186. package/dist/api/routes/static.js +2 -1
  187. package/dist/automations/steps/createRow.js +2 -4
  188. package/dist/automations/steps/deleteRow.js +1 -4
  189. package/dist/constants/index.js +3 -0
  190. package/dist/definitions/datasource.js +1 -0
  191. package/dist/environment.js +1 -0
  192. package/dist/integrations/base/sql.js +13 -6
  193. package/dist/integrations/googlesheets.js +340 -0
  194. package/dist/integrations/index.js +3 -0
  195. package/dist/integrations/utils.js +57 -9
  196. package/dist/middleware/authorized.js +55 -30
  197. package/dist/middleware/usageQuota.js +82 -13
  198. package/dist/migrations/usageQuotas/index.js +24 -0
  199. package/dist/migrations/usageQuotas/syncApps.js +26 -0
  200. package/dist/migrations/usageQuotas/syncRows.js +29 -0
  201. package/dist/package.json +8 -5
  202. package/dist/tests/utilities/TestConfiguration.js +10 -6
  203. package/dist/threads/query.js +4 -0
  204. package/dist/tsconfig.tsbuildinfo +1 -1
  205. package/dist/utilities/{usageQuota.js → usageQuota/index.js} +44 -31
  206. package/dist/utilities/usageQuota/rows.js +77 -0
  207. package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
  208. package/dist/utilities/workerRequests.js +0 -20
  209. package/nodemon.json +1 -1
  210. package/package.json +9 -6
  211. package/src/api/controllers/application.js +52 -24
  212. package/src/api/controllers/auth.js +4 -0
  213. package/src/api/controllers/datasource.js +12 -0
  214. package/src/api/controllers/row/utils.js +6 -12
  215. package/src/api/controllers/static/index.js +63 -10
  216. package/src/api/controllers/table/index.js +15 -9
  217. package/src/api/controllers/table/internal.js +2 -0
  218. package/src/api/controllers/table/utils.js +9 -1
  219. package/src/api/controllers/user.js +2 -0
  220. package/src/api/routes/index.js +0 -2
  221. package/src/api/routes/static.js +5 -0
  222. package/src/api/routes/tests/application.spec.js +2 -2
  223. package/src/api/routes/tests/auth.spec.js +1 -2
  224. package/src/api/routes/tests/static.spec.js +98 -0
  225. package/src/automations/steps/createRow.js +2 -4
  226. package/src/automations/steps/deleteRow.js +1 -4
  227. package/src/constants/index.js +4 -0
  228. package/src/definitions/datasource.ts +3 -0
  229. package/src/environment.js +1 -0
  230. package/src/integrations/base/sql.ts +14 -7
  231. package/src/integrations/googlesheets.ts +353 -0
  232. package/src/integrations/index.ts +3 -0
  233. package/src/integrations/tests/sql.spec.js +16 -0
  234. package/src/integrations/utils.ts +71 -11
  235. package/src/middleware/authorized.js +64 -30
  236. package/src/middleware/tests/authorized.spec.js +6 -4
  237. package/src/middleware/tests/usageQuota.spec.js +18 -24
  238. package/src/middleware/usageQuota.js +93 -15
  239. package/src/migrations/tests/usageQuotas/index.spec.js +27 -0
  240. package/src/migrations/tests/usageQuotas/syncApps.spec.js +37 -0
  241. package/src/migrations/tests/usageQuotas/syncRows.spec.js +43 -0
  242. package/src/migrations/usageQuotas/index.js +24 -0
  243. package/src/migrations/usageQuotas/syncApps.js +18 -0
  244. package/src/migrations/usageQuotas/syncRows.js +21 -0
  245. package/src/tests/utilities/TestConfiguration.js +10 -6
  246. package/src/threads/query.js +5 -0
  247. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  248. package/src/utilities/usageQuota/index.js +92 -0
  249. package/src/utilities/usageQuota/rows.js +74 -0
  250. package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
  251. package/src/utilities/workerRequests.js +0 -23
  252. package/dist/api/controllers/hosting.js +0 -30
  253. package/dist/api/routes/hosting.js +0 -11
  254. package/src/api/controllers/hosting.js +0 -22
  255. package/src/api/routes/hosting.js +0 -13
  256. package/src/api/routes/tests/hosting.spec.js +0 -36
  257. 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">67.92% </span>
26
+ <span class="strong">69.23% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>36/53</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">40% </span>
33
+ <span class="strong">43.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>12/30</span>
35
+ <span class='fraction'>13/30</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">67.3% </span>
47
+ <span class="strong">68.62% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>35/52</span>
49
+ <span class='fraction'>35/51</span>
50
50
  </div>
51
51
 
52
52
 
@@ -147,22 +147,16 @@
147
147
  <a name='L88'></a><a href='#L88'>88</a>
148
148
  <a name='L89'></a><a href='#L89'>89</a>
149
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
157
- <span class="cline-any cline-yes">34x</span>
158
- <span class="cline-any cline-yes">34x</span>
159
- <span class="cline-any cline-yes">34x</span>
160
- <span class="cline-any cline-yes">34x</span>
161
- <span class="cline-any cline-yes">34x</span>
162
- <span class="cline-any cline-yes">34x</span>
163
- <span class="cline-any cline-yes">34x</span>
164
- <span class="cline-any cline-neutral">&nbsp;</span>
165
- <span class="cline-any cline-yes">34x</span>
150
+ <a name='L91'></a><a href='#L91'>91</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
151
+ <span class="cline-any cline-yes">37x</span>
152
+ <span class="cline-any cline-yes">37x</span>
153
+ <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-neutral">&nbsp;</span>
159
+ <span class="cline-any cline-yes">37x</span>
166
160
  <span class="cline-any cline-neutral">&nbsp;</span>
167
161
  <span class="cline-any cline-yes">2x</span>
168
162
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -172,14 +166,14 @@
172
166
  <span class="cline-any cline-neutral">&nbsp;</span>
173
167
  <span class="cline-any cline-neutral">&nbsp;</span>
174
168
  <span class="cline-any cline-neutral">&nbsp;</span>
175
- <span class="cline-any cline-yes">34x</span>
169
+ <span class="cline-any cline-yes">37x</span>
176
170
  <span class="cline-any cline-yes">1x</span>
177
171
  <span class="cline-any cline-yes">1x</span>
178
172
  <span class="cline-any cline-yes">1x</span>
179
173
  <span class="cline-any cline-yes">1x</span>
180
174
  <span class="cline-any cline-neutral">&nbsp;</span>
181
175
  <span class="cline-any cline-neutral">&nbsp;</span>
182
- <span class="cline-any cline-yes">34x</span>
176
+ <span class="cline-any cline-yes">37x</span>
183
177
  <span class="cline-any cline-neutral">&nbsp;</span>
184
178
  <span class="cline-any cline-neutral">&nbsp;</span>
185
179
  <span class="cline-any cline-yes">19x</span>
@@ -197,57 +191,51 @@
197
191
  <span class="cline-any cline-yes">16x</span>
198
192
  <span class="cline-any cline-neutral">&nbsp;</span>
199
193
  <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-yes">34x</span>
201
- <span class="cline-any cline-yes">74x</span>
194
+ <span class="cline-any cline-yes">37x</span>
195
+ <span class="cline-any cline-yes">77x</span>
202
196
  <span class="cline-any cline-yes">2x</span>
203
197
  <span class="cline-any cline-yes">2x</span>
204
198
  <span class="cline-any cline-neutral">&nbsp;</span>
205
- <span class="cline-any cline-yes">74x</span>
206
- <span class="cline-any cline-yes">74x</span>
207
- <span class="cline-any cline-yes">206x</span>
208
- <span class="cline-any cline-yes">206x</span>
199
+ <span class="cline-any cline-yes">77x</span>
200
+ <span class="cline-any cline-yes">77x</span>
201
+ <span class="cline-any cline-yes">212x</span>
202
+ <span class="cline-any cline-yes">212x</span>
209
203
  <span class="cline-any cline-neutral">&nbsp;</span>
210
- <span class="cline-any cline-yes">206x</span>
204
+ <span class="cline-any cline-yes">212x</span>
211
205
  <span class="cline-any cline-no">&nbsp;</span>
212
206
  <span class="cline-any cline-neutral">&nbsp;</span>
213
207
  <span class="cline-any cline-neutral">&nbsp;</span>
214
208
  <span class="cline-any cline-neutral">&nbsp;</span>
215
209
  <span class="cline-any cline-neutral">&nbsp;</span>
216
- <span class="cline-any cline-yes">206x</span>
217
- <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
219
- <span class="cline-any cline-neutral">&nbsp;</span>
220
- <span class="cline-any cline-neutral">&nbsp;</span>
210
+ <span class="cline-any cline-yes">212x</span>
221
211
  <span class="cline-any cline-no">&nbsp;</span>
222
212
  <span class="cline-any cline-no">&nbsp;</span>
223
213
  <span class="cline-any cline-no">&nbsp;</span>
224
214
  <span class="cline-any cline-no">&nbsp;</span>
225
215
  <span class="cline-any cline-neutral">&nbsp;</span>
226
216
  <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-neutral">&nbsp;</span>
228
- <span class="cline-any cline-neutral">&nbsp;</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
230
217
  <span class="cline-any cline-no">&nbsp;</span>
218
+ <span class="cline-any cline-neutral">&nbsp;</span>
231
219
  <span class="cline-any cline-no">&nbsp;</span>
232
220
  <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-yes">206x</span>
221
+ <span class="cline-any cline-yes">212x</span>
234
222
  <span class="cline-any cline-neutral">&nbsp;</span>
235
223
  <span class="cline-any cline-no">&nbsp;</span>
236
224
  <span class="cline-any cline-no">&nbsp;</span>
237
225
  <span class="cline-any cline-neutral">&nbsp;</span>
238
226
  <span class="cline-any cline-no">&nbsp;</span>
239
227
  <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-yes">206x</span>
228
+ <span class="cline-any cline-yes">212x</span>
241
229
  <span class="cline-any cline-no">&nbsp;</span>
242
230
  <span class="cline-any cline-neutral">&nbsp;</span>
243
231
  <span class="cline-any cline-neutral">&nbsp;</span>
244
232
  <span class="cline-any cline-neutral">&nbsp;</span>
245
233
  <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-yes">206x</span>
234
+ <span class="cline-any cline-yes">212x</span>
247
235
  <span class="cline-any cline-neutral">&nbsp;</span>
248
- <span class="cline-any cline-yes">206x</span>
236
+ <span class="cline-any cline-yes">212x</span>
249
237
  <span class="cline-any cline-neutral">&nbsp;</span>
250
- <span class="cline-any cline-yes">74x</span>
238
+ <span class="cline-any cline-yes">77x</span>
251
239
  <span class="cline-any cline-neutral">&nbsp;</span>
252
240
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const validateJs = require("validate.js")
253
241
  const { cloneDeep } = require("lodash/fp")
@@ -309,22 +297,16 @@ exports.validate = async ({ appId, tableId, row, table }) =&gt; {
309
297
  let res
310
298
  &nbsp;
311
299
  // Validate.js doesn't seem to handle array
312
- <span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.ARRAY) {
313
- const hasValues =
314
- <span class="cstat-no" title="statement not covered" > Array.isArray(row[fieldName]) &amp;&amp; row[fieldName].length &gt; 0</span>
315
- &nbsp;
316
- // Check values are valid if values are specified
317
- <span class="cstat-no" title="statement not covered" > if (hasValues) {</span>
300
+ <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> {
301
+ <span class="cstat-no" title="statement not covered" > if (row[fieldName].length) {</span>
318
302
  <span class="cstat-no" title="statement not covered" > row[fieldName].map(<span class="fstat-no" title="function not covered" >va</span>l =&gt; {</span>
319
303
  <span class="cstat-no" title="statement not covered" > if (!constraints.inclusion.includes(val)) {</span>
320
- <span class="cstat-no" title="statement not covered" > errors[fieldName] = "Value not in list"</span>
304
+ <span class="cstat-no" title="statement not covered" > errors[fieldName] = "Field not in list"</span>
321
305
  }
322
306
  })
323
- }
324
- &nbsp;
325
- // Check for required constraint
326
- <span class="cstat-no" title="statement not covered" > if (constraints.presence === true &amp;&amp; !hasValues) {</span>
327
- <span class="cstat-no" title="statement not covered" > errors[fieldName] = "Required field"</span>
307
+ } else <span class="cstat-no" title="statement not covered" >if (constraints.presence &amp;&amp; row[fieldName].length === 0) {</span>
308
+ // non required MultiSelect creates an empty array, which should not throw errors
309
+ <span class="cstat-no" title="statement not covered" > errors[fieldName] = [`${fieldName} is required`]</span>
328
310
  }
329
311
  } 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> {
330
312
  // this should only happen if there is an error
@@ -352,7 +334,7 @@ exports.validate = async ({ appId, tableId, row, table }) =&gt; {
352
334
  <div class='footer quiet pad2 space-top1 center small'>
353
335
  Code coverage generated by
354
336
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
355
- at Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
337
+ at Mon Jan 31 2022 14:38:52 GMT+0000 (Coordinated Universal Time)
356
338
  </div>
357
339
  </div>
358
340
  <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 Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
211
+ at Mon Jan 31 2022 14:38:52 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 Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
100
+ at Mon Jan 31 2022 14:38:52 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 Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
988
+ at Mon Jan 31 2022 14:38:52 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">50.34% </span>
26
+ <span class="strong">50.33% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>221/439</span>
28
+ <span class='fraction'>226/449</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">50.81% </span>
47
+ <span class="strong">50.79% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>219/431</span>
49
+ <span class='fraction'>224/441</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="64.13" class="pic medium">
122
+ <td data-value="64.02" class="pic medium">
123
123
  <div class="chart"><div class="cover-fill" style="width: 64%"></div><div class="cover-empty" style="width: 36%"></div></div>
124
124
  </td>
125
- <td data-value="64.13" class="pct medium">64.13%</td>
126
- <td data-value="184" class="abs medium">118/184</td>
125
+ <td data-value="64.02" class="pct medium">64.02%</td>
126
+ <td data-value="189" class="abs medium">121/189</td>
127
127
  <td data-value="41.41" class="pct low">41.41%</td>
128
128
  <td data-value="99" class="abs low">41/99</td>
129
129
  <td data-value="60.71" class="pct medium">60.71%</td>
130
130
  <td data-value="28" class="abs medium">17/28</td>
131
- <td data-value="64.64" class="pct medium">64.64%</td>
132
- <td data-value="181" class="abs medium">117/181</td>
131
+ <td data-value="64.51" class="pct medium">64.51%</td>
132
+ <td data-value="186" class="abs medium">120/186</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 Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
143
+ at Mon Jan 31 2022 14:38:52 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../../../prettify.js"></script>