@budibase/server 1.0.48 → 1.0.49-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 (289) hide show
  1. package/builder/assets/{index.e083dcaf.js → index.21e57eb4.js} +234 -231
  2. package/builder/assets/index.83c0944f.css +1 -0
  3. package/builder/assets/{vendor.f9faf6ab.js → vendor.d526bfe8.js} +12 -12
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +2338 -2028
  6. package/coverage/coverage-final.json +100 -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 +53 -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/migrations.js.html +119 -0
  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 +48 -33
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +95 -158
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +41 -17
  33. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +551 -0
  34. package/coverage/lcov-report/api/controllers/row/utils.js.html +39 -57
  35. package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
  36. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  37. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +629 -0
  38. package/coverage/lcov-report/api/controllers/table/external.js.html +12 -12
  39. package/coverage/lcov-report/api/controllers/table/index.html +46 -31
  40. package/coverage/lcov-report/api/controllers/table/index.js.html +53 -77
  41. package/coverage/lcov-report/api/controllers/table/internal.js.html +59 -35
  42. package/coverage/lcov-report/api/controllers/table/utils.js.html +217 -73
  43. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/user.js.html +30 -24
  45. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  46. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
  48. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  49. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  50. package/coverage/lcov-report/api/controllers/webhook.js.html +15 -15
  51. package/coverage/lcov-report/api/index.html +1 -1
  52. package/coverage/lcov-report/api/index.js.html +8 -8
  53. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/index.html +18 -18
  65. package/coverage/lcov-report/api/routes/index.js.html +3 -3
  66. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/{hosting.js.html → migrations.js.html} +17 -14
  70. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/static.js.html +17 -2
  78. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  83. package/coverage/lcov-report/automations/actions.js.html +24 -24
  84. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  85. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  86. package/coverage/lcov-report/automations/index.html +1 -1
  87. package/coverage/lcov-report/automations/index.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  89. package/coverage/lcov-report/automations/steps/createRow.js.html +13 -19
  90. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  91. package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
  92. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  93. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  94. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  95. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  96. package/coverage/lcov-report/automations/steps/index.html +13 -13
  97. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  98. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  99. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  100. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  101. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  102. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  103. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  104. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  105. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  106. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  107. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  108. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  110. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  115. package/coverage/lcov-report/automations/utils.js.html +32 -32
  116. package/coverage/lcov-report/constants/index.html +5 -5
  117. package/coverage/lcov-report/constants/index.js.html +53 -26
  118. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  119. package/coverage/lcov-report/constants/screens.js.html +4 -4
  120. package/coverage/lcov-report/db/client.js.html +18 -18
  121. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  122. package/coverage/lcov-report/db/index.html +15 -15
  123. package/coverage/lcov-report/db/index.js.html +3 -3
  124. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +18 -18
  125. package/coverage/lcov-report/db/linkedRows/index.html +10 -10
  126. package/coverage/lcov-report/db/linkedRows/index.js.html +38 -41
  127. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +15 -15
  128. package/coverage/lcov-report/db/newid.js.html +4 -4
  129. package/coverage/lcov-report/db/utils.js.html +86 -86
  130. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  131. package/coverage/lcov-report/events/index.html +1 -1
  132. package/coverage/lcov-report/events/index.js.html +5 -5
  133. package/coverage/lcov-report/events/utils.js.html +3 -3
  134. package/coverage/lcov-report/index.html +114 -99
  135. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  136. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  137. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  138. package/coverage/lcov-report/middleware/authorized.js.html +166 -64
  139. package/coverage/lcov-report/middleware/builder.js.html +8 -8
  140. package/coverage/lcov-report/middleware/currentapp.js.html +29 -29
  141. package/coverage/lcov-report/middleware/index.html +30 -30
  142. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  143. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  144. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  145. package/coverage/lcov-report/middleware/usageQuota.js.html +270 -42
  146. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  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 +27 -27
  164. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +115 -79
  165. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +75 -27
  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/{api/controllers/hosting.js.html → utilities/usageQuota/usageQuoteReset.js.html} +36 -48
  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 +3656 -3057
  176. package/dist/api/controllers/application.js +61 -34
  177. package/dist/api/controllers/auth.js +4 -0
  178. package/dist/api/controllers/datasource.js +11 -0
  179. package/dist/api/controllers/migrations.js +21 -0
  180. package/dist/api/controllers/row/internal.js +30 -53
  181. package/dist/api/controllers/row/internalSearch.js +12 -4
  182. package/dist/api/controllers/row/staticFormula.js +147 -0
  183. package/dist/api/controllers/row/utils.js +6 -8
  184. package/dist/api/controllers/static/index.js +59 -10
  185. package/dist/api/controllers/table/bulkFormula.js +160 -0
  186. package/dist/api/controllers/table/index.js +12 -9
  187. package/dist/api/controllers/table/internal.js +9 -0
  188. package/dist/api/controllers/table/utils.js +41 -12
  189. package/dist/api/controllers/user.js +2 -0
  190. package/dist/api/routes/index.js +2 -2
  191. package/dist/api/routes/migrations.js +9 -0
  192. package/dist/api/routes/static.js +2 -1
  193. package/dist/app.js +35 -5
  194. package/dist/automations/steps/createRow.js +2 -4
  195. package/dist/automations/steps/deleteRow.js +1 -4
  196. package/dist/constants/index.js +7 -0
  197. package/dist/db/linkedRows/index.js +4 -5
  198. package/dist/definitions/datasource.js +1 -0
  199. package/dist/environment.js +2 -0
  200. package/dist/integrations/base/sql.js +13 -6
  201. package/dist/integrations/googlesheets.js +340 -0
  202. package/dist/integrations/index.js +3 -0
  203. package/dist/integrations/utils.js +57 -9
  204. package/dist/middleware/authorized.js +55 -30
  205. package/dist/middleware/usageQuota.js +80 -13
  206. package/dist/migrations/functions/appUrls.js +46 -0
  207. package/dist/migrations/functions/quotas1.js +50 -0
  208. package/dist/migrations/functions/usageQuotas/index.js +20 -0
  209. package/dist/migrations/functions/usageQuotas/syncApps.js +32 -0
  210. package/dist/migrations/functions/usageQuotas/syncRows.js +35 -0
  211. package/dist/migrations/functions/userEmailViewCasing.js +24 -0
  212. package/dist/migrations/index.js +62 -0
  213. package/dist/package.json +8 -5
  214. package/dist/tests/utilities/TestConfiguration.js +13 -6
  215. package/dist/threads/query.js +4 -0
  216. package/dist/tsconfig.tsbuildinfo +1 -1
  217. package/dist/utilities/rowProcessor/index.js +18 -11
  218. package/dist/utilities/rowProcessor/utils.js +14 -4
  219. package/dist/utilities/{usageQuota.js → usageQuota/index.js} +44 -31
  220. package/dist/utilities/usageQuota/rows.js +77 -0
  221. package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
  222. package/dist/utilities/workerRequests.js +0 -20
  223. package/nodemon.json +1 -1
  224. package/package.json +9 -6
  225. package/src/api/controllers/application.js +52 -24
  226. package/src/api/controllers/auth.js +4 -0
  227. package/src/api/controllers/datasource.js +12 -0
  228. package/src/api/controllers/migrations.js +13 -0
  229. package/src/api/controllers/row/internal.js +29 -50
  230. package/src/api/controllers/row/internalSearch.js +12 -4
  231. package/src/api/controllers/row/staticFormula.js +157 -0
  232. package/src/api/controllers/row/utils.js +6 -12
  233. package/src/api/controllers/static/index.js +63 -10
  234. package/src/api/controllers/table/bulkFormula.js +183 -0
  235. package/src/api/controllers/table/index.js +16 -24
  236. package/src/api/controllers/table/internal.js +9 -1
  237. package/src/api/controllers/table/utils.js +57 -9
  238. package/src/api/controllers/user.js +2 -0
  239. package/src/api/routes/index.js +2 -2
  240. package/src/api/routes/migrations.js +14 -0
  241. package/src/api/routes/static.js +5 -0
  242. package/src/api/routes/tests/application.spec.js +2 -2
  243. package/src/api/routes/tests/auth.spec.js +1 -2
  244. package/src/api/routes/tests/static.spec.js +98 -0
  245. package/src/app.ts +18 -5
  246. package/src/automations/steps/createRow.js +2 -4
  247. package/src/automations/steps/deleteRow.js +1 -4
  248. package/src/constants/index.js +9 -0
  249. package/src/db/linkedRows/index.js +4 -5
  250. package/src/definitions/common.ts +3 -0
  251. package/src/definitions/datasource.ts +3 -0
  252. package/src/environment.js +2 -0
  253. package/src/integrations/base/sql.ts +14 -7
  254. package/src/integrations/googlesheets.ts +353 -0
  255. package/src/integrations/index.ts +3 -0
  256. package/src/integrations/tests/sql.spec.js +16 -0
  257. package/src/integrations/utils.ts +71 -11
  258. package/src/middleware/authorized.js +64 -30
  259. package/src/middleware/tests/authorized.spec.js +6 -4
  260. package/src/middleware/tests/usageQuota.spec.js +18 -24
  261. package/src/middleware/usageQuota.js +91 -15
  262. package/src/migrations/functions/appUrls.ts +34 -0
  263. package/src/migrations/functions/quotas1.ts +20 -0
  264. package/src/migrations/functions/tests/appUrls.spec.js +29 -0
  265. package/src/migrations/functions/tests/quotas1.spec.js +27 -0
  266. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
  267. package/src/migrations/functions/usageQuotas/index.ts +8 -0
  268. package/src/migrations/functions/usageQuotas/syncApps.ts +18 -0
  269. package/src/migrations/functions/usageQuotas/syncRows.ts +21 -0
  270. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +37 -0
  271. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +43 -0
  272. package/src/migrations/functions/userEmailViewCasing.ts +13 -0
  273. package/src/migrations/index.ts +56 -0
  274. package/src/tests/utilities/TestConfiguration.js +14 -6
  275. package/src/threads/query.js +5 -0
  276. package/src/utilities/rowProcessor/index.js +24 -12
  277. package/src/utilities/rowProcessor/utils.js +23 -7
  278. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  279. package/src/utilities/usageQuota/index.js +92 -0
  280. package/src/utilities/usageQuota/rows.js +74 -0
  281. package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
  282. package/src/utilities/workerRequests.js +0 -23
  283. package/builder/assets/index.39e01193.css +0 -1
  284. package/dist/api/controllers/hosting.js +0 -30
  285. package/dist/api/routes/hosting.js +0 -11
  286. package/src/api/controllers/hosting.js +0 -22
  287. package/src/api/routes/hosting.js +0 -13
  288. package/src/api/routes/tests/hosting.spec.js +0 -36
  289. package/src/utilities/usageQuota.js +0 -73
@@ -158,7 +158,7 @@
158
158
  <a name='L99'></a><a href='#L99'>99</a>
159
159
  <a name='L100'></a><a href='#L100'>100</a>
160
160
  <a name='L101'></a><a href='#L101'>101</a>
161
- <a name='L102'></a><a href='#L102'>102</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
161
+ <a name='L102'></a><a href='#L102'>102</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">38x</span>
162
162
  <span class="cline-any cline-neutral">&nbsp;</span>
163
163
  <span class="cline-any cline-neutral">&nbsp;</span>
164
164
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -190,10 +190,10 @@
190
190
  <span class="cline-any cline-neutral">&nbsp;</span>
191
191
  <span class="cline-any cline-neutral">&nbsp;</span>
192
192
  <span class="cline-any cline-neutral">&nbsp;</span>
193
- <span class="cline-any cline-yes">33x</span>
194
- <span class="cline-any cline-yes">33x</span>
195
- <span class="cline-any cline-yes">33x</span>
196
- <span class="cline-any cline-yes">33x</span>
193
+ <span class="cline-any cline-yes">38x</span>
194
+ <span class="cline-any cline-yes">38x</span>
195
+ <span class="cline-any cline-yes">38x</span>
196
+ <span class="cline-any cline-yes">38x</span>
197
197
  <span class="cline-any cline-neutral">&nbsp;</span>
198
198
  <span class="cline-any cline-neutral">&nbsp;</span>
199
199
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -247,7 +247,7 @@
247
247
  <span class="cline-any cline-neutral">&nbsp;</span>
248
248
  <span class="cline-any cline-neutral">&nbsp;</span>
249
249
  <span class="cline-any cline-neutral">&nbsp;</span>
250
- <span class="cline-any cline-yes">192x</span>
250
+ <span class="cline-any cline-yes">202x</span>
251
251
  <span class="cline-any cline-neutral">&nbsp;</span>
252
252
  <span class="cline-any cline-neutral">&nbsp;</span>
253
253
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -258,7 +258,7 @@
258
258
  <span class="cline-any cline-neutral">&nbsp;</span>
259
259
  <span class="cline-any cline-neutral">&nbsp;</span>
260
260
  <span class="cline-any cline-neutral">&nbsp;</span>
261
- <span class="cline-any cline-yes">33x</span>
261
+ <span class="cline-any cline-yes">38x</span>
262
262
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">let events = require("events")
263
263
  &nbsp;
264
264
  /**
@@ -367,7 +367,7 @@ module.exports = InMemoryQueue
367
367
  <div class='footer quiet pad2 space-top1 center small'>
368
368
  Code coverage generated by
369
369
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
370
- at Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
370
+ at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
371
371
  </div>
372
372
  </div>
373
373
  <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 Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
98
+ at Mon Jan 31 2022 17:55:41 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 Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
98
+ at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
99
99
  </div>
100
100
  </div>
101
101
  <script src="../../prettify.js"></script>
@@ -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 Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
142
+ at Mon Jan 31 2022 17:55:41 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">61.59% </span>
26
+ <span class="strong">58.78% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>85/138</span>
28
+ <span class='fraction'>87/148</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">48% </span>
33
+ <span class="strong">44.06% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>48/100</span>
35
+ <span class='fraction'>52/118</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">64.12% </span>
47
+ <span class="strong">61.42% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>84/131</span>
49
+ <span class='fraction'>86/140</span>
50
50
  </div>
51
51
 
52
52
 
@@ -74,32 +74,32 @@
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="59.52" class="pic medium">
78
- <div class="chart"><div class="cover-fill" style="width: 59%"></div><div class="cover-empty" style="width: 41%"></div></div>
77
+ <td data-value="57.69" class="pic medium">
78
+ <div class="chart"><div class="cover-fill" style="width: 57%"></div><div class="cover-empty" style="width: 43%"></div></div>
79
79
  </td>
80
- <td data-value="59.52" class="pct medium">59.52%</td>
81
- <td data-value="126" class="abs medium">75/126</td>
82
- <td data-value="45.74" class="pct low">45.74%</td>
83
- <td data-value="94" class="abs low">43/94</td>
84
- <td data-value="52.63" class="pct medium">52.63%</td>
85
- <td data-value="19" class="abs medium">10/19</td>
86
- <td data-value="61.66" class="pct medium">61.66%</td>
87
- <td data-value="120" class="abs medium">74/120</td>
80
+ <td data-value="57.69" class="pct medium">57.69%</td>
81
+ <td data-value="130" class="abs medium">75/130</td>
82
+ <td data-value="43" class="pct low">43%</td>
83
+ <td data-value="100" class="abs low">43/100</td>
84
+ <td data-value="50" class="pct medium">50%</td>
85
+ <td data-value="20" class="abs medium">10/20</td>
86
+ <td data-value="60.16" class="pct medium">60.16%</td>
87
+ <td data-value="123" class="abs medium">74/123</td>
88
88
  </tr>
89
89
 
90
90
  <tr>
91
- <td class="file high" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
92
- <td data-value="83.33" class="pic high">
93
- <div class="chart"><div class="cover-fill" style="width: 83%"></div><div class="cover-empty" style="width: 17%"></div></div>
91
+ <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
92
+ <td data-value="66.66" class="pic medium">
93
+ <div class="chart"><div class="cover-fill" style="width: 66%"></div><div class="cover-empty" style="width: 34%"></div></div>
94
94
  </td>
95
- <td data-value="83.33" class="pct high">83.33%</td>
96
- <td data-value="12" class="abs high">10/12</td>
97
- <td data-value="83.33" class="pct high">83.33%</td>
98
- <td data-value="6" class="abs high">5/6</td>
95
+ <td data-value="66.66" class="pct medium">66.66%</td>
96
+ <td data-value="18" class="abs medium">12/18</td>
99
97
  <td data-value="50" class="pct medium">50%</td>
100
- <td data-value="2" class="abs medium">1/2</td>
101
- <td data-value="90.9" class="pct high">90.9%</td>
102
- <td data-value="11" class="abs high">10/11</td>
98
+ <td data-value="18" class="abs medium">9/18</td>
99
+ <td data-value="100" class="pct high">100%</td>
100
+ <td data-value="1" class="abs high">1/1</td>
101
+ <td data-value="70.58" class="pct medium">70.58%</td>
102
+ <td data-value="17" class="abs medium">12/17</td>
103
103
  </tr>
104
104
 
105
105
  </tbody>
@@ -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 Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
113
+ at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
114
114
  </div>
115
115
  </div>
116
116
  <script src="../../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">59.52% </span>
26
+ <span class="strong">57.69% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>75/126</span>
28
+ <span class='fraction'>75/130</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">45.74% </span>
33
+ <span class="strong">43% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>43/94</span>
35
+ <span class='fraction'>43/100</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">52.63% </span>
40
+ <span class="strong">50% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/19</span>
42
+ <span class='fraction'>10/20</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">61.66% </span>
47
+ <span class="strong">60.16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>74/120</span>
49
+ <span class='fraction'>74/123</span>
50
50
  </div>
51
51
 
52
52
 
@@ -398,26 +398,38 @@
398
398
  <a name='L339'></a><a href='#L339'>339</a>
399
399
  <a name='L340'></a><a href='#L340'>340</a>
400
400
  <a name='L341'></a><a href='#L341'>341</a>
401
- <a name='L342'></a><a href='#L342'>342</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
402
- <span class="cline-any cline-yes">34x</span>
403
- <span class="cline-any cline-yes">34x</span>
404
- <span class="cline-any cline-yes">34x</span>
405
- <span class="cline-any cline-yes">34x</span>
406
- <span class="cline-any cline-yes">34x</span>
407
- <span class="cline-any cline-yes">34x</span>
401
+ <a name='L342'></a><a href='#L342'>342</a>
402
+ <a name='L343'></a><a href='#L343'>343</a>
403
+ <a name='L344'></a><a href='#L344'>344</a>
404
+ <a name='L345'></a><a href='#L345'>345</a>
405
+ <a name='L346'></a><a href='#L346'>346</a>
406
+ <a name='L347'></a><a href='#L347'>347</a>
407
+ <a name='L348'></a><a href='#L348'>348</a>
408
+ <a name='L349'></a><a href='#L349'>349</a>
409
+ <a name='L350'></a><a href='#L350'>350</a>
410
+ <a name='L351'></a><a href='#L351'>351</a>
411
+ <a name='L352'></a><a href='#L352'>352</a>
412
+ <a name='L353'></a><a href='#L353'>353</a>
413
+ <a name='L354'></a><a href='#L354'>354</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
414
+ <span class="cline-any cline-yes">39x</span>
415
+ <span class="cline-any cline-yes">39x</span>
416
+ <span class="cline-any cline-yes">39x</span>
417
+ <span class="cline-any cline-yes">39x</span>
418
+ <span class="cline-any cline-yes">39x</span>
419
+ <span class="cline-any cline-yes">39x</span>
408
420
  <span class="cline-any cline-neutral">&nbsp;</span>
409
421
  <span class="cline-any cline-neutral">&nbsp;</span>
410
422
  <span class="cline-any cline-neutral">&nbsp;</span>
411
423
  <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-yes">34x</span>
413
- <span class="cline-any cline-yes">34x</span>
424
+ <span class="cline-any cline-yes">39x</span>
425
+ <span class="cline-any cline-yes">39x</span>
414
426
  <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-yes">34x</span>
427
+ <span class="cline-any cline-yes">39x</span>
416
428
  <span class="cline-any cline-neutral">&nbsp;</span>
417
429
  <span class="cline-any cline-neutral">&nbsp;</span>
418
430
  <span class="cline-any cline-neutral">&nbsp;</span>
419
431
  <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-yes">34x</span>
432
+ <span class="cline-any cline-yes">39x</span>
421
433
  <span class="cline-any cline-neutral">&nbsp;</span>
422
434
  <span class="cline-any cline-neutral">&nbsp;</span>
423
435
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -536,13 +548,13 @@
536
548
  <span class="cline-any cline-neutral">&nbsp;</span>
537
549
  <span class="cline-any cline-neutral">&nbsp;</span>
538
550
  <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-yes">73x</span>
540
- <span class="cline-any cline-yes">73x</span>
551
+ <span class="cline-any cline-yes">76x</span>
552
+ <span class="cline-any cline-yes">76x</span>
541
553
  <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-yes">73x</span>
543
- <span class="cline-any cline-yes">73x</span>
544
- <span class="cline-any cline-yes">206x</span>
545
- <span class="cline-any cline-yes">206x</span>
554
+ <span class="cline-any cline-yes">76x</span>
555
+ <span class="cline-any cline-yes">76x</span>
556
+ <span class="cline-any cline-yes">212x</span>
557
+ <span class="cline-any cline-yes">212x</span>
546
558
  <span class="cline-any cline-neutral">&nbsp;</span>
547
559
  <span class="cline-any cline-no">&nbsp;</span>
548
560
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -576,29 +588,31 @@
576
588
  <span class="cline-any cline-no">&nbsp;</span>
577
589
  <span class="cline-any cline-neutral">&nbsp;</span>
578
590
  <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-yes">73x</span>
591
+ <span class="cline-any cline-yes">76x</span>
580
592
  <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-yes">34x</span>
593
+ <span class="cline-any cline-yes">39x</span>
582
594
  <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-yes">39x</span>
583
596
  <span class="cline-any cline-neutral">&nbsp;</span>
584
597
  <span class="cline-any cline-neutral">&nbsp;</span>
585
598
  <span class="cline-any cline-neutral">&nbsp;</span>
586
599
  <span class="cline-any cline-neutral">&nbsp;</span>
587
600
  <span class="cline-any cline-neutral">&nbsp;</span>
588
601
  <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-yes">34x</span>
590
602
  <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-yes">174x</span>
603
+ <span class="cline-any cline-yes">39x</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-yes">180x</span>
592
606
  <span class="cline-any cline-no">&nbsp;</span>
593
607
  <span class="cline-any cline-neutral">&nbsp;</span>
594
608
  <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-yes">174x</span>
609
+ <span class="cline-any cline-yes">180x</span>
596
610
  <span class="cline-any cline-yes">16x</span>
597
- <span class="cline-any cline-yes">158x</span>
611
+ <span class="cline-any cline-yes">164x</span>
598
612
  <span class="cline-any cline-yes">22x</span>
599
613
  <span class="cline-any cline-neutral">&nbsp;</span>
600
614
  <span class="cline-any cline-neutral">&nbsp;</span>
601
- <span class="cline-any cline-yes">136x</span>
615
+ <span class="cline-any cline-yes">142x</span>
602
616
  <span class="cline-any cline-neutral">&nbsp;</span>
603
617
  <span class="cline-any cline-neutral">&nbsp;</span>
604
618
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -610,41 +624,42 @@
610
624
  <span class="cline-any cline-neutral">&nbsp;</span>
611
625
  <span class="cline-any cline-neutral">&nbsp;</span>
612
626
  <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-yes">34x</span>
627
+ <span class="cline-any cline-yes">39x</span>
614
628
  <span class="cline-any cline-neutral">&nbsp;</span>
615
629
  <span class="cline-any cline-neutral">&nbsp;</span>
616
630
  <span class="cline-any cline-neutral">&nbsp;</span>
617
631
  <span class="cline-any cline-neutral">&nbsp;</span>
618
632
  <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-yes">73x</span>
633
+ <span class="cline-any cline-yes">76x</span>
620
634
  <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-yes">73x</span>
622
- <span class="cline-any cline-yes">73x</span>
623
- <span class="cline-any cline-yes">73x</span>
624
- <span class="cline-any cline-yes">332x</span>
635
+ <span class="cline-any cline-yes">76x</span>
636
+ <span class="cline-any cline-yes">76x</span>
637
+ <span class="cline-any cline-yes">76x</span>
638
+ <span class="cline-any cline-yes">344x</span>
625
639
  <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-yes">332x</span>
627
- <span class="cline-any cline-yes">159x</span>
640
+ <span class="cline-any cline-yes">344x</span>
641
+ <span class="cline-any cline-yes">165x</span>
628
642
  <span class="cline-any cline-yes">3x</span>
629
643
  <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-yes">159x</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-yes">165x</span>
632
645
  <span class="cline-any cline-neutral">&nbsp;</span>
633
646
  <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-yes">173x</span>
647
+ <span class="cline-any cline-yes">179x</span>
635
648
  <span class="cline-any cline-no">&nbsp;</span>
636
649
  <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-yes">173x</span>
650
+ <span class="cline-any cline-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-yes">179x</span>
638
653
  <span class="cline-any cline-neutral">&nbsp;</span>
639
654
  <span class="cline-any cline-neutral">&nbsp;</span>
640
655
  <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-yes">73x</span>
642
- <span class="cline-any cline-yes">68x</span>
643
- <span class="cline-any cline-yes">68x</span>
656
+ <span class="cline-any cline-yes">76x</span>
657
+ <span class="cline-any cline-yes">71x</span>
658
+ <span class="cline-any cline-yes">71x</span>
644
659
  <span class="cline-any cline-neutral">&nbsp;</span>
645
660
  <span class="cline-any cline-neutral">&nbsp;</span>
646
661
  <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-yes">73x</span>
662
+ <span class="cline-any cline-yes">76x</span>
648
663
  <span class="cline-any cline-neutral">&nbsp;</span>
649
664
  <span class="cline-any cline-neutral">&nbsp;</span>
650
665
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -657,27 +672,26 @@
657
672
  <span class="cline-any cline-neutral">&nbsp;</span>
658
673
  <span class="cline-any cline-neutral">&nbsp;</span>
659
674
  <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-yes">34x</span>
675
+ <span class="cline-any cline-yes">39x</span>
661
676
  <span class="cline-any cline-neutral">&nbsp;</span>
662
677
  <span class="cline-any cline-neutral">&nbsp;</span>
663
678
  <span class="cline-any cline-neutral">&nbsp;</span>
664
679
  <span class="cline-any cline-neutral">&nbsp;</span>
665
680
  <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-yes">100x</span>
667
- <span class="cline-any cline-yes">100x</span>
668
- <span class="cline-any cline-yes">100x</span>
669
- <span class="cline-any cline-yes">87x</span>
670
- <span class="cline-any cline-yes">87x</span>
681
+ <span class="cline-any cline-yes">103x</span>
682
+ <span class="cline-any cline-yes">103x</span>
683
+ <span class="cline-any cline-yes">90x</span>
684
+ <span class="cline-any cline-yes">90x</span>
671
685
  <span class="cline-any cline-neutral">&nbsp;</span>
672
686
  <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-yes">100x</span>
687
+ <span class="cline-any cline-yes">103x</span>
674
688
  <span class="cline-any cline-neutral">&nbsp;</span>
675
689
  <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-yes">100x</span>
690
+ <span class="cline-any cline-yes">103x</span>
677
691
  <span class="cline-any cline-neutral">&nbsp;</span>
678
692
  <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-yes">100x</span>
680
- <span class="cline-any cline-yes">296x</span>
693
+ <span class="cline-any cline-yes">103x</span>
694
+ <span class="cline-any cline-yes">302x</span>
681
695
  <span class="cline-any cline-yes">8x</span>
682
696
  <span class="cline-any cline-yes">8x</span>
683
697
  <span class="cline-any cline-yes">6x</span>
@@ -688,14 +702,14 @@
688
702
  <span class="cline-any cline-neutral">&nbsp;</span>
689
703
  <span class="cline-any cline-neutral">&nbsp;</span>
690
704
  <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-yes">100x</span>
705
+ <span class="cline-any cline-yes">103x</span>
692
706
  <span class="cline-any cline-yes">26x</span>
693
707
  <span class="cline-any cline-neutral">&nbsp;</span>
694
708
  <span class="cline-any cline-neutral">&nbsp;</span>
695
709
  <span class="cline-any cline-neutral">&nbsp;</span>
696
710
  <span class="cline-any cline-neutral">&nbsp;</span>
697
711
  <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-yes">100x</span>
712
+ <span class="cline-any cline-yes">103x</span>
699
713
  <span class="cline-any cline-neutral">&nbsp;</span>
700
714
  <span class="cline-any cline-neutral">&nbsp;</span>
701
715
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -707,13 +721,19 @@
707
721
  <span class="cline-any cline-neutral">&nbsp;</span>
708
722
  <span class="cline-any cline-neutral">&nbsp;</span>
709
723
  <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-yes">34x</span>
711
- <span class="cline-any cline-yes">8x</span>
712
- <span class="cline-any cline-yes">8x</span>
713
724
  <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-yes">8x</span>
715
- <span class="cline-any cline-yes">8x</span>
716
- <span class="cline-any cline-yes">8x</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-yes">39x</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-yes">11x</span>
732
+ <span class="cline-any cline-yes">11x</span>
733
+ <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-yes">11x</span>
735
+ <span class="cline-any cline-yes">11x</span>
736
+ <span class="cline-any cline-yes">11x</span>
717
737
  <span class="cline-any cline-neutral">&nbsp;</span>
718
738
  <span class="cline-any cline-neutral">&nbsp;</span>
719
739
  <span class="cline-any cline-no">&nbsp;</span>
@@ -725,11 +745,15 @@
725
745
  <span class="cline-any cline-no">&nbsp;</span>
726
746
  <span class="cline-any cline-no">&nbsp;</span>
727
747
  <span class="cline-any cline-no">&nbsp;</span>
748
+ <span class="cline-any cline-no">&nbsp;</span>
728
749
  <span class="cline-any cline-neutral">&nbsp;</span>
729
750
  <span class="cline-any cline-neutral">&nbsp;</span>
730
751
  <span class="cline-any cline-no">&nbsp;</span>
731
752
  <span class="cline-any cline-no">&nbsp;</span>
732
753
  <span class="cline-any cline-no">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-no">&nbsp;</span>
756
+ <span class="cline-any cline-no">&nbsp;</span>
733
757
  <span class="cline-any cline-no">&nbsp;</span>
734
758
  <span class="cline-any cline-no">&nbsp;</span>
735
759
  <span class="cline-any cline-no">&nbsp;</span>
@@ -921,6 +945,8 @@ function processAutoColumn(
921
945
  }
922
946
  exports.processAutoColumn = processAutoColumn
923
947
  &nbsp;
948
+ exports.processFormulas = processFormulas
949
+ &nbsp;
924
950
  /**
925
951
  * This will coerce a value to the correct types based on the type transform map
926
952
  * @param {object} row The value to coerce
@@ -970,11 +996,12 @@ exports.inputProcessing = (
970
996
  }
971
997
  continue
972
998
  }
973
- // specific case to delete formula values if they get saved
974
- // type coercion cannot completely remove the field, so have to do it here
999
+ // remove any formula values, they are to be generated
975
1000
  <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type === FieldTypes.FORMULA) {
976
1001
  <span class="cstat-no" title="statement not covered" > delete clonedRow[key]</span>
977
- } else {
1002
+ }
1003
+ // otherwise coerce what is there to correct types
1004
+ else {
978
1005
  clonedRow[key] = exports.coerce(value, field.type)
979
1006
  }
980
1007
  }
@@ -991,7 +1018,7 @@ exports.inputProcessing = (
991
1018
  /**
992
1019
  * This function enriches the input rows with anything they are supposed to contain, for example
993
1020
  * link records or attachment links.
994
- * @param {object} ctx the request which is looking for enriched rows.
1021
+ * @param {string} appId the app in which the request is looking for enriched rows.
995
1022
  * @param {object} table the table from which these rows came from originally, this is used to determine
996
1023
  * the schema of the rows and then enrich.
997
1024
  * @param {object[]|object} rows the rows which are to be enriched.
@@ -999,22 +1026,21 @@ exports.inputProcessing = (
999
1026
  * @returns {object[]|object} the enriched rows will be returned.
1000
1027
  */
1001
1028
  exports.outputProcessing = async (
1002
- ctx,
1029
+ { appId },
1003
1030
  table,
1004
1031
  rows,
1005
1032
  opts = { squash: true }
1006
1033
  ) =&gt; {
1007
- const appId = ctx.appId
1008
1034
  let wasArray = true
1009
1035
  if (!(rows instanceof Array)) {
1010
1036
  rows = [rows]
1011
1037
  wasArray = false
1012
1038
  }
1013
1039
  // attach any linked row information
1014
- let enriched = await linkRows.attachFullLinkedDocs(ctx, table, rows)
1040
+ let enriched = await linkRows.attachFullLinkedDocs(appId, table, rows)
1015
1041
  &nbsp;
1016
1042
  // process formulas
1017
- enriched = processFormulas(table, enriched)
1043
+ enriched = processFormulas(table, enriched, { dynamic: true })
1018
1044
  &nbsp;
1019
1045
  // update the attachments URL depending on hosting
1020
1046
  for (let [property, column] of Object.entries(table.schema)) {
@@ -1046,9 +1072,15 @@ exports.outputProcessing = async (
1046
1072
  * @param {any} row optional - the row being removed.
1047
1073
  * @param {any} rows optional - if multiple rows being deleted can do this in bulk.
1048
1074
  * @param {any} oldRow optional - if updating a row this will determine the difference.
1075
+ * @param {any} oldTable optional - if updating a table, can supply the old table to look for
1076
+ * deleted attachment columns.
1049
1077
  * @return {Promise&lt;void&gt;} When all attachments have been removed this will return.
1050
1078
  */
1051
- exports.cleanupAttachments = async (appId, table, { row, rows, oldRow }) =&gt; {
1079
+ exports.cleanupAttachments = async (
1080
+ appId,
1081
+ table,
1082
+ { row, rows, oldRow, oldTable }
1083
+ ) =&gt; {
1052
1084
  if (!isProdAppID(appId)) {
1053
1085
  const prodAppId = getDeployedAppID(appId)
1054
1086
  // if prod exists, then don't allow deleting
@@ -1063,12 +1095,16 @@ exports.cleanupAttachments = async (appId, table, { row, rows, oldRow }) =&gt; {
1063
1095
  <span class="cstat-no" title="statement not covered" > files = files.concat(row[key].map(<span class="fstat-no" title="function not covered" >at</span>tachment =&gt; <span class="cstat-no" title="statement not covered" >attachment.key)</span>)</span>
1064
1096
  }
1065
1097
  }
1066
- <span class="cstat-no" title="statement not covered" > for (let [key, schema] of Object.entries(table.schema)) {</span>
1098
+ const schemaToUse = <span class="cstat-no" title="statement not covered" >oldTable ? oldTable.schema : table.schema</span>
1099
+ <span class="cstat-no" title="statement not covered" > for (let [key, schema] of Object.entries(schemaToUse)) {</span>
1067
1100
  <span class="cstat-no" title="statement not covered" > if (schema.type !== FieldTypes.ATTACHMENT) {</span>
1068
1101
  <span class="cstat-no" title="statement not covered" > continue</span>
1069
1102
  }
1070
- // if updating, need to manage the differences
1071
- <span class="cstat-no" title="statement not covered" > if (oldRow &amp;&amp; row) {</span>
1103
+ // old table had this column, new table doesn't - delete it
1104
+ <span class="cstat-no" title="statement not covered" > if (oldTable &amp;&amp; !table.schema[key]) {</span>
1105
+ <span class="cstat-no" title="statement not covered" > rows.forEach(<span class="fstat-no" title="function not covered" >ro</span>w =&gt; <span class="cstat-no" title="statement not covered" >addFiles(row, key))</span></span>
1106
+ } else <span class="cstat-no" title="statement not covered" >if (oldRow &amp;&amp; row) {</span>
1107
+ // if updating, need to manage the differences
1072
1108
  <span class="cstat-no" title="statement not covered" > files = files.concat(getRemovedAttachmentKeys(oldRow, row, key))</span>
1073
1109
  } else <span class="cstat-no" title="statement not covered" >if (row) {</span>
1074
1110
  <span class="cstat-no" title="statement not covered" > addFiles(row, key)</span>
@@ -1087,7 +1123,7 @@ exports.cleanupAttachments = async (appId, table, { row, rows, oldRow }) =&gt; {
1087
1123
  <div class='footer quiet pad2 space-top1 center small'>
1088
1124
  Code coverage generated by
1089
1125
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1090
- at Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
1126
+ at Mon Jan 31 2022 17:55:41 GMT+0000 (Coordinated Universal Time)
1091
1127
  </div>
1092
1128
  </div>
1093
1129
  <script src="../../prettify.js"></script>