@budibase/server 1.0.49 → 1.0.50-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 (381) hide show
  1. package/__mocks__/arangojs.ts +1 -1
  2. package/__mocks__/aws-sdk.ts +4 -4
  3. package/__mocks__/mongodb.ts +4 -5
  4. package/__mocks__/mssql.ts +3 -3
  5. package/__mocks__/node-fetch.ts +2 -1
  6. package/__mocks__/pg.ts +3 -5
  7. package/builder/assets/index.c0cc369d.css +6 -0
  8. package/builder/assets/{index.2c37968e.js → index.ff2bad21.js} +252 -249
  9. package/builder/assets/{vendor.f9faf6ab.js → vendor.5ad9695a.js} +202 -106
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +3105 -2814
  12. package/coverage/coverage-final.json +106 -101
  13. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/application.js.html +257 -152
  16. package/coverage/lcov-report/api/controllers/auth.js.html +22 -13
  17. package/coverage/lcov-report/api/controllers/automation.js.html +39 -69
  18. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
  20. package/coverage/lcov-report/api/controllers/component.js.html +13 -16
  21. package/coverage/lcov-report/api/controllers/datasource.js.html +81 -51
  22. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  23. package/coverage/lcov-report/api/controllers/index.html +78 -78
  24. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  26. package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
  27. package/coverage/lcov-report/api/controllers/migrations.js.html +119 -0
  28. package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
  29. package/coverage/lcov-report/api/controllers/query/index.html +10 -10
  30. package/coverage/lcov-report/api/controllers/query/index.js.html +38 -35
  31. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  32. package/coverage/lcov-report/api/controllers/role.js.html +16 -16
  33. package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
  34. package/coverage/lcov-report/api/controllers/row/external.js.html +48 -141
  35. package/coverage/lcov-report/api/controllers/row/index.html +55 -40
  36. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  37. package/coverage/lcov-report/api/controllers/row/internal.js.html +118 -226
  38. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +52 -34
  39. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +548 -0
  40. package/coverage/lcov-report/api/controllers/row/utils.js.html +47 -62
  41. package/coverage/lcov-report/api/controllers/screen.js.html +15 -21
  42. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  43. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +599 -0
  44. package/coverage/lcov-report/api/controllers/table/external.js.html +25 -34
  45. package/coverage/lcov-report/api/controllers/table/index.html +58 -43
  46. package/coverage/lcov-report/api/controllers/table/index.js.html +58 -82
  47. package/coverage/lcov-report/api/controllers/table/internal.js.html +81 -66
  48. package/coverage/lcov-report/api/controllers/table/utils.js.html +218 -110
  49. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  50. package/coverage/lcov-report/api/controllers/user.js.html +79 -76
  51. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  52. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  53. package/coverage/lcov-report/api/controllers/view/index.js.html +27 -33
  54. package/coverage/lcov-report/api/controllers/view/utils.js.html +35 -20
  55. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  56. package/coverage/lcov-report/api/controllers/webhook.js.html +34 -28
  57. package/coverage/lcov-report/api/index.html +1 -1
  58. package/coverage/lcov-report/api/index.js.html +8 -8
  59. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/index.html +18 -18
  71. package/coverage/lcov-report/api/routes/index.js.html +3 -3
  72. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/{hosting.js.html → migrations.js.html} +17 -14
  76. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/static.js.html +17 -2
  84. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  87. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  88. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  89. package/coverage/lcov-report/automations/actions.js.html +24 -24
  90. package/coverage/lcov-report/automations/automationUtils.js.html +7 -10
  91. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  92. package/coverage/lcov-report/automations/index.html +18 -18
  93. package/coverage/lcov-report/automations/index.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  95. package/coverage/lcov-report/automations/steps/createRow.js.html +13 -22
  96. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  97. package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
  98. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  99. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  100. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  101. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  102. package/coverage/lcov-report/automations/steps/index.html +13 -13
  103. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  104. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  105. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  106. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  107. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  108. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  109. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  110. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  111. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  112. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  115. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  116. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  119. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  120. package/coverage/lcov-report/automations/triggers.js.html +61 -55
  121. package/coverage/lcov-report/automations/utils.js.html +54 -42
  122. package/coverage/lcov-report/constants/index.html +5 -5
  123. package/coverage/lcov-report/constants/index.js.html +53 -26
  124. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  125. package/coverage/lcov-report/constants/screens.js.html +4 -4
  126. package/coverage/lcov-report/db/client.js.html +18 -18
  127. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  128. package/coverage/lcov-report/db/index.html +15 -15
  129. package/coverage/lcov-report/db/index.js.html +3 -3
  130. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +25 -37
  131. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  132. package/coverage/lcov-report/db/linkedRows/index.js.html +51 -96
  133. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
  134. package/coverage/lcov-report/db/newid.js.html +4 -4
  135. package/coverage/lcov-report/db/utils.js.html +87 -87
  136. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  137. package/coverage/lcov-report/events/index.html +1 -1
  138. package/coverage/lcov-report/events/index.js.html +5 -5
  139. package/coverage/lcov-report/events/utils.js.html +3 -3
  140. package/coverage/lcov-report/index.html +135 -120
  141. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  142. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  143. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  144. package/coverage/lcov-report/middleware/authorized.js.html +173 -65
  145. package/coverage/lcov-report/middleware/builder.js.html +10 -10
  146. package/coverage/lcov-report/middleware/currentapp.js.html +95 -83
  147. package/coverage/lcov-report/middleware/index.html +38 -38
  148. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  149. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  150. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  151. package/coverage/lcov-report/middleware/usageQuota.js.html +281 -53
  152. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  153. package/coverage/lcov-report/threads/automation.js.html +30 -24
  154. package/coverage/lcov-report/threads/index.html +26 -26
  155. package/coverage/lcov-report/threads/index.js.html +10 -10
  156. package/coverage/lcov-report/threads/query.js.html +39 -24
  157. package/coverage/lcov-report/threads/utils.js.html +14 -14
  158. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  159. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  160. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  161. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  162. package/coverage/lcov-report/utilities/global.js.html +58 -49
  163. package/coverage/lcov-report/utilities/index.html +37 -37
  164. package/coverage/lcov-report/utilities/index.js.html +43 -73
  165. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  166. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  167. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  168. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  169. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  170. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +97 -103
  171. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +75 -27
  172. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  173. package/coverage/lcov-report/utilities/security.js.html +8 -8
  174. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  175. package/coverage/lcov-report/utilities/usageQuota/index.html +141 -0
  176. package/coverage/lcov-report/utilities/usageQuota/index.js.html +359 -0
  177. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +305 -0
  178. package/coverage/lcov-report/{api/controllers/hosting.js.html → utilities/usageQuota/usageQuoteReset.js.html} +36 -48
  179. package/coverage/lcov-report/utilities/users.js.html +9 -9
  180. package/coverage/lcov-report/utilities/workerRequests.js.html +43 -112
  181. package/coverage/lcov.info +5010 -4425
  182. package/dist/api/controllers/application.js +90 -60
  183. package/dist/api/controllers/auth.js +8 -5
  184. package/dist/api/controllers/automation.js +14 -19
  185. package/dist/api/controllers/cloud.js +2 -3
  186. package/dist/api/controllers/component.js +3 -4
  187. package/dist/api/controllers/datasource.js +20 -10
  188. package/dist/api/controllers/deploy/Deployment.js +3 -6
  189. package/dist/api/controllers/deploy/index.js +12 -13
  190. package/dist/api/controllers/dev.js +5 -5
  191. package/dist/api/controllers/layout.js +3 -3
  192. package/dist/api/controllers/metadata.js +4 -4
  193. package/dist/api/controllers/migrations.js +21 -0
  194. package/dist/api/controllers/permission.js +4 -4
  195. package/dist/api/controllers/query/import/index.js +4 -6
  196. package/dist/api/controllers/query/index.js +11 -10
  197. package/dist/api/controllers/role.js +5 -5
  198. package/dist/api/controllers/routing.js +5 -6
  199. package/dist/api/controllers/row/ExternalRequest.js +90 -67
  200. package/dist/api/controllers/row/external.js +14 -22
  201. package/dist/api/controllers/row/internal.js +55 -93
  202. package/dist/api/controllers/row/internalSearch.js +23 -17
  203. package/dist/api/controllers/row/staticFormula.js +147 -0
  204. package/dist/api/controllers/row/utils.js +13 -14
  205. package/dist/api/controllers/screen.js +5 -7
  206. package/dist/api/controllers/static/index.js +62 -16
  207. package/dist/api/controllers/table/bulkFormula.js +159 -0
  208. package/dist/api/controllers/table/external.js +7 -10
  209. package/dist/api/controllers/table/index.js +16 -13
  210. package/dist/api/controllers/table/internal.js +22 -16
  211. package/dist/api/controllers/table/utils.js +62 -35
  212. package/dist/api/controllers/user.js +43 -43
  213. package/dist/api/controllers/view/index.js +8 -10
  214. package/dist/api/controllers/view/utils.js +9 -4
  215. package/dist/api/controllers/webhook.js +10 -8
  216. package/dist/api/routes/index.js +2 -2
  217. package/dist/api/routes/migrations.js +9 -0
  218. package/dist/api/routes/static.js +2 -1
  219. package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
  220. package/dist/app.js +35 -5
  221. package/dist/automations/automationUtils.js +2 -3
  222. package/dist/automations/steps/createRow.js +3 -5
  223. package/dist/automations/steps/deleteRow.js +1 -4
  224. package/dist/automations/steps/updateRow.js +1 -1
  225. package/dist/automations/triggers.js +27 -25
  226. package/dist/automations/utils.js +10 -5
  227. package/dist/constants/index.js +7 -0
  228. package/dist/db/linkedRows/LinkController.js +3 -7
  229. package/dist/db/linkedRows/index.js +16 -27
  230. package/dist/db/linkedRows/linkUtils.js +6 -6
  231. package/dist/db/views/staticViews.js +9 -10
  232. package/dist/definitions/datasource.js +1 -0
  233. package/dist/environment.js +4 -1
  234. package/dist/integrations/base/sql.js +62 -21
  235. package/dist/integrations/googlesheets.js +340 -0
  236. package/dist/integrations/index.js +3 -0
  237. package/dist/integrations/utils.js +60 -9
  238. package/dist/middleware/authorized.js +57 -30
  239. package/dist/middleware/builder.js +2 -2
  240. package/dist/middleware/currentapp.js +41 -37
  241. package/dist/middleware/usageQuota.js +82 -15
  242. package/dist/migrations/functions/appUrls.js +46 -0
  243. package/dist/migrations/functions/quotas1.js +50 -0
  244. package/dist/migrations/functions/usageQuotas/index.js +20 -0
  245. package/dist/migrations/functions/usageQuotas/syncApps.js +29 -0
  246. package/dist/migrations/functions/usageQuotas/syncRows.js +33 -0
  247. package/dist/migrations/functions/userEmailViewCasing.js +24 -0
  248. package/dist/migrations/index.js +62 -0
  249. package/dist/package.json +8 -5
  250. package/dist/tests/utilities/TestConfiguration.js +80 -50
  251. package/dist/threads/automation.js +13 -11
  252. package/dist/threads/query.js +15 -11
  253. package/dist/tsconfig.tsbuildinfo +1 -1
  254. package/dist/utilities/fileSystem/index.js +4 -3
  255. package/dist/utilities/global.js +15 -12
  256. package/dist/utilities/index.js +7 -17
  257. package/dist/utilities/routing/index.js +5 -5
  258. package/dist/utilities/rowProcessor/index.js +23 -17
  259. package/dist/utilities/rowProcessor/utils.js +14 -4
  260. package/dist/utilities/{usageQuota.js → usageQuota/index.js} +45 -31
  261. package/dist/utilities/usageQuota/rows.js +78 -0
  262. package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
  263. package/dist/utilities/users.js +3 -3
  264. package/dist/utilities/workerRequests.js +4 -24
  265. package/nodemon.json +1 -1
  266. package/package.json +9 -6
  267. package/scripts/integrations/mssql/data/Dockerfile +1 -1
  268. package/scripts/integrations/mssql/data/setup.sql +17 -4
  269. package/scripts/integrations/postgres/init.sql +11 -6
  270. package/scripts/likeCypress.ts +1 -1
  271. package/src/api/controllers/application.js +85 -50
  272. package/src/api/controllers/auth.js +8 -5
  273. package/src/api/controllers/automation.js +13 -23
  274. package/src/api/controllers/cloud.js +2 -3
  275. package/src/api/controllers/component.js +3 -4
  276. package/src/api/controllers/datasource.js +21 -11
  277. package/src/api/controllers/deploy/Deployment.js +3 -7
  278. package/src/api/controllers/deploy/index.js +20 -13
  279. package/src/api/controllers/dev.js +5 -5
  280. package/src/api/controllers/layout.js +3 -3
  281. package/src/api/controllers/metadata.js +4 -9
  282. package/src/api/controllers/migrations.js +13 -0
  283. package/src/api/controllers/permission.js +4 -4
  284. package/src/api/controllers/query/import/index.ts +4 -6
  285. package/src/api/controllers/query/import/tests/index.spec.js +2 -1
  286. package/src/api/controllers/query/index.js +11 -10
  287. package/src/api/controllers/role.js +5 -5
  288. package/src/api/controllers/routing.js +5 -6
  289. package/src/api/controllers/row/ExternalRequest.ts +67 -43
  290. package/src/api/controllers/row/external.js +27 -58
  291. package/src/api/controllers/row/internal.js +54 -90
  292. package/src/api/controllers/row/internalSearch.js +23 -17
  293. package/src/api/controllers/row/staticFormula.js +156 -0
  294. package/src/api/controllers/row/utils.js +13 -18
  295. package/src/api/controllers/screen.js +5 -7
  296. package/src/api/controllers/static/index.js +66 -15
  297. package/src/api/controllers/table/bulkFormula.js +173 -0
  298. package/src/api/controllers/table/external.js +7 -10
  299. package/src/api/controllers/table/index.js +20 -28
  300. package/src/api/controllers/table/internal.js +24 -19
  301. package/src/api/controllers/table/utils.js +78 -42
  302. package/src/api/controllers/user.js +46 -45
  303. package/src/api/controllers/view/index.js +8 -10
  304. package/src/api/controllers/view/utils.js +9 -4
  305. package/src/api/controllers/webhook.js +10 -8
  306. package/src/api/routes/index.js +2 -2
  307. package/src/api/routes/migrations.js +14 -0
  308. package/src/api/routes/static.js +5 -0
  309. package/src/api/routes/tests/application.spec.js +2 -2
  310. package/src/api/routes/tests/auth.spec.js +1 -2
  311. package/src/api/routes/tests/automation.spec.js +1 -0
  312. package/src/api/routes/tests/misc.spec.js +0 -1
  313. package/src/api/routes/tests/routing.spec.js +21 -12
  314. package/src/api/routes/tests/row.spec.js +7 -4
  315. package/src/api/routes/tests/static.spec.js +98 -0
  316. package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
  317. package/src/app.ts +18 -5
  318. package/src/automations/automationUtils.js +2 -3
  319. package/src/automations/steps/createRow.js +2 -5
  320. package/src/automations/steps/deleteRow.js +1 -4
  321. package/src/automations/steps/updateRow.js +1 -1
  322. package/src/automations/triggers.js +33 -31
  323. package/src/automations/utils.js +9 -5
  324. package/src/constants/index.js +9 -0
  325. package/src/db/linkedRows/LinkController.js +3 -7
  326. package/src/db/linkedRows/index.js +16 -31
  327. package/src/db/linkedRows/linkUtils.js +6 -6
  328. package/src/db/tests/linkController.spec.js +0 -1
  329. package/src/db/tests/linkTests.spec.js +5 -6
  330. package/src/db/views/staticViews.js +8 -10
  331. package/src/definitions/common.ts +3 -0
  332. package/src/definitions/datasource.ts +3 -0
  333. package/src/environment.js +4 -1
  334. package/src/integrations/base/sql.ts +75 -29
  335. package/src/integrations/googlesheets.ts +353 -0
  336. package/src/integrations/index.ts +3 -0
  337. package/src/integrations/tests/sql.spec.js +16 -0
  338. package/src/integrations/utils.ts +75 -12
  339. package/src/middleware/authorized.js +66 -30
  340. package/src/middleware/builder.js +2 -2
  341. package/src/middleware/currentapp.js +50 -46
  342. package/src/middleware/tests/authorized.spec.js +13 -6
  343. package/src/middleware/tests/currentapp.spec.js +6 -0
  344. package/src/middleware/tests/usageQuota.spec.js +18 -24
  345. package/src/middleware/usageQuota.js +93 -17
  346. package/src/migrations/functions/appUrls.ts +34 -0
  347. package/src/migrations/functions/quotas1.ts +20 -0
  348. package/src/migrations/functions/tests/appUrls.spec.js +29 -0
  349. package/src/migrations/functions/tests/quotas1.spec.js +27 -0
  350. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
  351. package/src/migrations/functions/usageQuotas/index.ts +8 -0
  352. package/src/migrations/functions/usageQuotas/syncApps.ts +18 -0
  353. package/src/migrations/functions/usageQuotas/syncRows.ts +22 -0
  354. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +37 -0
  355. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +43 -0
  356. package/src/migrations/functions/userEmailViewCasing.ts +13 -0
  357. package/src/migrations/index.ts +56 -0
  358. package/src/module.d.ts +3 -0
  359. package/src/tests/utilities/TestConfiguration.js +82 -55
  360. package/src/threads/automation.js +17 -15
  361. package/src/threads/query.js +17 -12
  362. package/src/utilities/fileSystem/index.js +4 -3
  363. package/src/utilities/global.js +15 -12
  364. package/src/utilities/index.js +7 -17
  365. package/src/utilities/routing/index.js +5 -5
  366. package/src/utilities/rowProcessor/index.js +25 -27
  367. package/src/utilities/rowProcessor/utils.js +23 -7
  368. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  369. package/src/utilities/usageQuota/index.js +93 -0
  370. package/src/utilities/usageQuota/rows.js +75 -0
  371. package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
  372. package/src/utilities/users.js +3 -3
  373. package/src/utilities/workerRequests.js +4 -27
  374. package/tsconfig.json +2 -1
  375. package/builder/assets/index.39e01193.css +0 -1
  376. package/dist/api/controllers/hosting.js +0 -30
  377. package/dist/api/routes/hosting.js +0 -11
  378. package/src/api/controllers/hosting.js +0 -22
  379. package/src/api/routes/hosting.js +0 -13
  380. package/src/api/routes/tests/hosting.spec.js +0 -36
  381. package/src/utilities/usageQuota.js +0 -73
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">14.85% </span>
26
+ <span class="strong">16.12% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>15/101</span>
28
+ <span class='fraction'>15/93</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">15.15% </span>
47
+ <span class="strong">16.48% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>15/99</span>
49
+ <span class='fraction'>15/91</span>
50
50
  </div>
51
51
 
52
52
 
@@ -257,49 +257,18 @@
257
257
  <a name='L198'></a><a href='#L198'>198</a>
258
258
  <a name='L199'></a><a href='#L199'>199</a>
259
259
  <a name='L200'></a><a href='#L200'>200</a>
260
- <a name='L201'></a><a href='#L201'>201</a>
261
- <a name='L202'></a><a href='#L202'>202</a>
262
- <a name='L203'></a><a href='#L203'>203</a>
263
- <a name='L204'></a><a href='#L204'>204</a>
264
- <a name='L205'></a><a href='#L205'>205</a>
265
- <a name='L206'></a><a href='#L206'>206</a>
266
- <a name='L207'></a><a href='#L207'>207</a>
267
- <a name='L208'></a><a href='#L208'>208</a>
268
- <a name='L209'></a><a href='#L209'>209</a>
269
- <a name='L210'></a><a href='#L210'>210</a>
270
- <a name='L211'></a><a href='#L211'>211</a>
271
- <a name='L212'></a><a href='#L212'>212</a>
272
- <a name='L213'></a><a href='#L213'>213</a>
273
- <a name='L214'></a><a href='#L214'>214</a>
274
- <a name='L215'></a><a href='#L215'>215</a>
275
- <a name='L216'></a><a href='#L216'>216</a>
276
- <a name='L217'></a><a href='#L217'>217</a>
277
- <a name='L218'></a><a href='#L218'>218</a>
278
- <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a>
280
- <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a>
282
- <a name='L223'></a><a href='#L223'>223</a>
283
- <a name='L224'></a><a href='#L224'>224</a>
284
- <a name='L225'></a><a href='#L225'>225</a>
285
- <a name='L226'></a><a href='#L226'>226</a>
286
- <a name='L227'></a><a href='#L227'>227</a>
287
- <a name='L228'></a><a href='#L228'>228</a>
288
- <a name='L229'></a><a href='#L229'>229</a>
289
- <a name='L230'></a><a href='#L230'>230</a>
290
- <a name='L231'></a><a href='#L231'>231</a>
291
- <a name='L232'></a><a href='#L232'>232</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
260
+ <a name='L201'></a><a href='#L201'>201</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
292
261
  <span class="cline-any cline-neutral">&nbsp;</span>
293
262
  <span class="cline-any cline-neutral">&nbsp;</span>
294
263
  <span class="cline-any cline-neutral">&nbsp;</span>
295
264
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-yes">34x</span>
265
+ <span class="cline-any cline-yes">39x</span>
297
266
  <span class="cline-any cline-neutral">&nbsp;</span>
298
267
  <span class="cline-any cline-neutral">&nbsp;</span>
299
268
  <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-yes">34x</span>
301
- <span class="cline-any cline-yes">34x</span>
302
- <span class="cline-any cline-yes">34x</span>
269
+ <span class="cline-any cline-yes">39x</span>
270
+ <span class="cline-any cline-yes">39x</span>
271
+ <span class="cline-any cline-yes">39x</span>
303
272
  <span class="cline-any cline-neutral">&nbsp;</span>
304
273
  <span class="cline-any cline-neutral">&nbsp;</span>
305
274
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -318,12 +287,9 @@
318
287
  <span class="cline-any cline-no">&nbsp;</span>
319
288
  <span class="cline-any cline-neutral">&nbsp;</span>
320
289
  <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-yes">39x</span>
321
291
  <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-yes">34x</span>
324
- <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-yes">34x</span>
326
- <span class="cline-any cline-no">&nbsp;</span>
292
+ <span class="cline-any cline-yes">39x</span>
327
293
  <span class="cline-any cline-no">&nbsp;</span>
328
294
  <span class="cline-any cline-no">&nbsp;</span>
329
295
  <span class="cline-any cline-no">&nbsp;</span>
@@ -335,8 +301,7 @@
335
301
  <span class="cline-any cline-neutral">&nbsp;</span>
336
302
  <span class="cline-any cline-neutral">&nbsp;</span>
337
303
  <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-yes">34x</span>
339
- <span class="cline-any cline-no">&nbsp;</span>
304
+ <span class="cline-any cline-yes">39x</span>
340
305
  <span class="cline-any cline-no">&nbsp;</span>
341
306
  <span class="cline-any cline-no">&nbsp;</span>
342
307
  <span class="cline-any cline-no">&nbsp;</span>
@@ -344,7 +309,7 @@
344
309
  <span class="cline-any cline-neutral">&nbsp;</span>
345
310
  <span class="cline-any cline-neutral">&nbsp;</span>
346
311
  <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-yes">34x</span>
312
+ <span class="cline-any cline-yes">39x</span>
348
313
  <span class="cline-any cline-neutral">&nbsp;</span>
349
314
  <span class="cline-any cline-neutral">&nbsp;</span>
350
315
  <span class="cline-any cline-no">&nbsp;</span>
@@ -352,44 +317,30 @@
352
317
  <span class="cline-any cline-no">&nbsp;</span>
353
318
  <span class="cline-any cline-neutral">&nbsp;</span>
354
319
  <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-yes">34x</span>
356
- <span class="cline-any cline-no">&nbsp;</span>
320
+ <span class="cline-any cline-yes">39x</span>
357
321
  <span class="cline-any cline-no">&nbsp;</span>
358
322
  <span class="cline-any cline-no">&nbsp;</span>
359
323
  <span class="cline-any cline-neutral">&nbsp;</span>
360
324
  <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-yes">34x</span>
362
- <span class="cline-any cline-no">&nbsp;</span>
325
+ <span class="cline-any cline-yes">39x</span>
363
326
  <span class="cline-any cline-no">&nbsp;</span>
364
327
  <span class="cline-any cline-no">&nbsp;</span>
365
328
  <span class="cline-any cline-no">&nbsp;</span>
366
329
  <span class="cline-any cline-neutral">&nbsp;</span>
367
330
  <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
331
  <span class="cline-any cline-no">&nbsp;</span>
374
332
  <span class="cline-any cline-neutral">&nbsp;</span>
375
333
  <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-yes">34x</span>
377
- <span class="cline-any cline-no">&nbsp;</span>
334
+ <span class="cline-any cline-yes">39x</span>
378
335
  <span class="cline-any cline-no">&nbsp;</span>
379
336
  <span class="cline-any cline-no">&nbsp;</span>
380
337
  <span class="cline-any cline-no">&nbsp;</span>
381
338
  <span class="cline-any cline-neutral">&nbsp;</span>
382
339
  <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-neutral">&nbsp;</span>
388
340
  <span class="cline-any cline-no">&nbsp;</span>
389
341
  <span class="cline-any cline-neutral">&nbsp;</span>
390
342
  <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-yes">34x</span>
392
- <span class="cline-any cline-no">&nbsp;</span>
343
+ <span class="cline-any cline-yes">39x</span>
393
344
  <span class="cline-any cline-no">&nbsp;</span>
394
345
  <span class="cline-any cline-no">&nbsp;</span>
395
346
  <span class="cline-any cline-no">&nbsp;</span>
@@ -404,8 +355,7 @@
404
355
  <span class="cline-any cline-no">&nbsp;</span>
405
356
  <span class="cline-any cline-neutral">&nbsp;</span>
406
357
  <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-yes">34x</span>
408
- <span class="cline-any cline-no">&nbsp;</span>
358
+ <span class="cline-any cline-yes">39x</span>
409
359
  <span class="cline-any cline-no">&nbsp;</span>
410
360
  <span class="cline-any cline-no">&nbsp;</span>
411
361
  <span class="cline-any cline-no">&nbsp;</span>
@@ -450,24 +400,18 @@
450
400
  <span class="cline-any cline-neutral">&nbsp;</span>
451
401
  <span class="cline-any cline-neutral">&nbsp;</span>
452
402
  <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-neutral">&nbsp;</span>
458
403
  <span class="cline-any cline-no">&nbsp;</span>
459
404
  <span class="cline-any cline-neutral">&nbsp;</span>
460
405
  <span class="cline-any cline-neutral">&nbsp;</span>
461
406
  <span class="cline-any cline-no">&nbsp;</span>
462
407
  <span class="cline-any cline-neutral">&nbsp;</span>
463
408
  <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-yes">34x</span>
409
+ <span class="cline-any cline-yes">39x</span>
465
410
  <span class="cline-any cline-neutral">&nbsp;</span>
466
411
  <span class="cline-any cline-no">&nbsp;</span>
467
412
  <span class="cline-any cline-neutral">&nbsp;</span>
468
413
  <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-yes">34x</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
414
+ <span class="cline-any cline-yes">39x</span>
471
415
  <span class="cline-any cline-no">&nbsp;</span>
472
416
  <span class="cline-any cline-no">&nbsp;</span>
473
417
  <span class="cline-any cline-no">&nbsp;</span>
@@ -481,11 +425,6 @@
481
425
  <span class="cline-any cline-neutral">&nbsp;</span>
482
426
  <span class="cline-any cline-neutral">&nbsp;</span>
483
427
  <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
428
  <span class="cline-any cline-no">&nbsp;</span>
490
429
  <span class="cline-any cline-no">&nbsp;</span>
491
430
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -516,7 +455,6 @@
516
455
  <span class="cline-any cline-neutral">&nbsp;</span>
517
456
  <span class="cline-any cline-neutral">&nbsp;</span>
518
457
  <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
458
  <span class="cline-any cline-no">&nbsp;</span>
521
459
  <span class="cline-any cline-neutral">&nbsp;</span>
522
460
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
@@ -530,9 +468,9 @@ const {
530
468
  breakRowIdField,
531
469
  } = require("../../../integrations/utils")
532
470
  const ExternalRequest = require("./ExternalRequest")
533
- const CouchDB = require("../../../db")
471
+ const { getAppDB } = require("@budibase/backend-core/context")
534
472
  &nbsp;
535
- async function <span class="fstat-no" title="function not covered" >handleRequest(</span>appId, operation, tableId, opts = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
473
+ async function <span class="fstat-no" title="function not covered" >handleRequest(</span>operation, tableId, opts = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
536
474
  // make sure the filters are cleaned up, no empty strings for equals, fuzzy or string
537
475
  <span class="cstat-no" title="statement not covered" > if (opts &amp;&amp; opts.filters) {</span>
538
476
  <span class="cstat-no" title="statement not covered" > for (let filterField of NoEmptyFilterStrings) {</span>
@@ -546,31 +484,27 @@ async function <span class="fstat-no" title="function not covered" >handleReques
546
484
  }
547
485
  }
548
486
  }
549
- <span class="cstat-no" title="statement not covered" > return new ExternalRequest(appId, operation, tableId, opts.datasource).run(</span>
550
- opts
551
- )
487
+ <span class="cstat-no" title="statement not covered" > return new ExternalRequest(operation, tableId, opts.datasource).run(opts)</span>
552
488
  }
553
489
  &nbsp;
554
490
  exports.handleRequest = handleRequest
555
491
  &nbsp;
556
492
  exports.patch = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
557
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
558
493
  const inputs = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
559
494
  const tableId = <span class="cstat-no" title="statement not covered" >ctx.params.tableId</span>
560
495
  const id = <span class="cstat-no" title="statement not covered" >breakRowIdField(inputs._id)</span>
561
496
  // don't save the ID to db
562
497
  <span class="cstat-no" title="statement not covered" > delete inputs._id</span>
563
- <span class="cstat-no" title="statement not covered" > return handleRequest(appId, DataSourceOperation.UPDATE, tableId, {</span>
498
+ <span class="cstat-no" title="statement not covered" > return handleRequest(DataSourceOperation.UPDATE, tableId, {</span>
564
499
  id,
565
500
  row: inputs,
566
501
  })
567
502
  }
568
503
  &nbsp;
569
504
  exports.save = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
570
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
571
505
  const inputs = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
572
506
  const tableId = <span class="cstat-no" title="statement not covered" >ctx.params.tableId</span>
573
- <span class="cstat-no" title="statement not covered" > return handleRequest(appId, DataSourceOperation.CREATE, tableId, {</span>
507
+ <span class="cstat-no" title="statement not covered" > return handleRequest(DataSourceOperation.CREATE, tableId, {</span>
574
508
  row: inputs,
575
509
  })
576
510
  }
@@ -584,49 +518,35 @@ exports.fetchView = <span class="fstat-no" title="function not covered" >as</spa
584
518
  }
585
519
  &nbsp;
586
520
  exports.fetch = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
587
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
588
521
  const tableId = <span class="cstat-no" title="statement not covered" >ctx.params.tableId</span>
589
- <span class="cstat-no" title="statement not covered" > return handleRequest(appId, DataSourceOperation.READ, tableId)</span>
522
+ <span class="cstat-no" title="statement not covered" > return handleRequest(DataSourceOperation.READ, tableId)</span>
590
523
  }
591
524
  &nbsp;
592
525
  exports.find = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
593
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
594
526
  const id = <span class="cstat-no" title="statement not covered" >ctx.params.rowId</span>
595
527
  const tableId = <span class="cstat-no" title="statement not covered" >ctx.params.tableId</span>
596
- const response = <span class="cstat-no" title="statement not covered" >await handleRequest(</span>
597
- appId,
598
- DataSourceOperation.READ,
599
- tableId,
600
- {
601
- id,
602
- }
603
- )
528
+ const response = <span class="cstat-no" title="statement not covered" >await handleRequest(DataSourceOperation.READ, tableId, {</span>
529
+ id,
530
+ })
604
531
  <span class="cstat-no" title="statement not covered" > return response ? response[0] : response</span>
605
532
  }
606
533
  &nbsp;
607
534
  exports.destroy = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
608
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
609
535
  const tableId = <span class="cstat-no" title="statement not covered" >ctx.params.tableId</span>
610
536
  const id = <span class="cstat-no" title="statement not covered" >ctx.request.body._id</span>
611
- const { row } = <span class="cstat-no" title="statement not covered" >await handleRequest(</span>
612
- appId,
613
- DataSourceOperation.DELETE,
614
- tableId,
615
- {
616
- id,
617
- }
618
- )
537
+ const { row } = <span class="cstat-no" title="statement not covered" >await handleRequest(DataSourceOperation.DELETE, tableId, {</span>
538
+ id,
539
+ })
619
540
  <span class="cstat-no" title="statement not covered" > return { response: { ok: true }, row }</span>
620
541
  }
621
542
  &nbsp;
622
543
  exports.bulkDestroy = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
623
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
624
544
  const { rows } = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
625
545
  const tableId = <span class="cstat-no" title="statement not covered" >ctx.params.tableId</span>
626
546
  let promises = <span class="cstat-no" title="statement not covered" >[]</span>
627
547
  <span class="cstat-no" title="statement not covered" > for (let row of rows) {</span>
628
548
  <span class="cstat-no" title="statement not covered" > promises.push(</span>
629
- handleRequest(appId, DataSourceOperation.DELETE, tableId, {
549
+ handleRequest(DataSourceOperation.DELETE, tableId, {
630
550
  id: breakRowIdField(row._id),
631
551
  })
632
552
  )
@@ -636,7 +556,6 @@ exports.bulkDestroy = <span class="fstat-no" title="function not covered" >as</s
636
556
  }
637
557
  &nbsp;
638
558
  exports.search = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
639
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
640
559
  const tableId = <span class="cstat-no" title="statement not covered" >ctx.params.tableId</span>
641
560
  const { paginate, query, ...params } = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
642
561
  let { bookmark, limit } = <span class="cstat-no" title="statement not covered" >params</span>
@@ -666,26 +585,21 @@ exports.search = <span class="fstat-no" title="function not covered" >as</span>y
666
585
  [params.sort]: direction,
667
586
  }
668
587
  }
669
- const rows = <span class="cstat-no" title="statement not covered" >await handleRequest(appId, DataSourceOperation.READ, tableId, {</span>
588
+ const rows = <span class="cstat-no" title="statement not covered" >await handleRequest(DataSourceOperation.READ, tableId, {</span>
670
589
  filters: query,
671
590
  sort,
672
591
  paginate: paginateObj,
673
592
  })
674
593
  let hasNextPage = <span class="cstat-no" title="statement not covered" >false</span>
675
594
  <span class="cstat-no" title="statement not covered" > if (paginate &amp;&amp; rows.length === limit) {</span>
676
- const nextRows = <span class="cstat-no" title="statement not covered" >await handleRequest(</span>
677
- appId,
678
- DataSourceOperation.READ,
679
- tableId,
680
- {
681
- filters: query,
682
- sort,
683
- paginate: {
684
- limit: 1,
685
- page: bookmark * limit + 1,
686
- },
687
- }
688
- )
595
+ const nextRows = <span class="cstat-no" title="statement not covered" >await handleRequest(DataSourceOperation.READ, tableId, {</span>
596
+ filters: query,
597
+ sort,
598
+ paginate: {
599
+ limit: 1,
600
+ page: bookmark * limit + 1,
601
+ },
602
+ })
689
603
  <span class="cstat-no" title="statement not covered" > hasNextPage = nextRows.length &gt; 0</span>
690
604
  }
691
605
  // need wrapper object for bookmarks etc when paginating
@@ -698,25 +612,19 @@ exports.validate = <span class="fstat-no" title="function not covered" >as</span
698
612
  }
699
613
  &nbsp;
700
614
  exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
701
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
702
615
  const id = <span class="cstat-no" title="statement not covered" >ctx.params.rowId</span>
703
616
  const tableId = <span class="cstat-no" title="statement not covered" >ctx.params.tableId</span>
704
617
  const { datasourceId, tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(tableId)</span>
705
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
618
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
706
619
  const datasource = <span class="cstat-no" title="statement not covered" >await db.get(datasourceId)</span>
707
620
  <span class="cstat-no" title="statement not covered" > if (!datasource || !datasource.entities) {</span>
708
621
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Datasource has not been configured for plus API.")</span>
709
622
  }
710
623
  const tables = <span class="cstat-no" title="statement not covered" >datasource.entities</span>
711
- const response = <span class="cstat-no" title="statement not covered" >await handleRequest(</span>
712
- appId,
713
- DataSourceOperation.READ,
714
- tableId,
715
- {
716
- id,
717
- datasource,
718
- }
719
- )
624
+ const response = <span class="cstat-no" title="statement not covered" >await handleRequest(DataSourceOperation.READ, tableId, {</span>
625
+ id,
626
+ datasource,
627
+ })
720
628
  const table = <span class="cstat-no" title="statement not covered" >tables[tableName]</span>
721
629
  const row = <span class="cstat-no" title="statement not covered" >response[0]</span>
722
630
  // this seems like a lot of work, but basically we need to dig deeper for the enrich
@@ -735,7 +643,6 @@ exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >
735
643
  // don't support composite keys right now
736
644
  const linkedIds = <span class="cstat-no" title="statement not covered" >links.map(<span class="fstat-no" title="function not covered" >li</span>nk =&gt; <span class="cstat-no" title="statement not covered" >breakRowIdField(link._id)[0])</span></span>
737
645
  <span class="cstat-no" title="statement not covered" > row[fieldName] = await handleRequest(</span>
738
- appId,
739
646
  DataSourceOperation.READ,
740
647
  linkedTableId,
741
648
  {
@@ -757,7 +664,7 @@ exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >
757
664
  <div class='footer quiet pad2 space-top1 center small'>
758
665
  Code coverage generated by
759
666
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
760
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
667
+ at Mon Feb 07 2022 20:42:11 GMT+0000 (Coordinated Universal Time)
761
668
  </div>
762
669
  </div>
763
670
  <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">52.54% </span>
26
+ <span class="strong">51.15% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>320/609</span>
28
+ <span class='fraction'>332/649</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">32.29% </span>
33
+ <span class="strong">30.13% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>83/257</span>
35
+ <span class='fraction'>88/292</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">43.18% </span>
40
+ <span class="strong">41.93% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>38/88</span>
42
+ <span class='fraction'>39/93</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">52.59% </span>
47
+ <span class="strong">51.25% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>314/597</span>
49
+ <span class='fraction'>326/636</span>
50
50
  </div>
51
51
 
52
52
 
@@ -74,17 +74,17 @@
74
74
  </thead>
75
75
  <tbody><tr>
76
76
  <td class="file low" data-value="external.js"><a href="external.js.html">external.js</a></td>
77
- <td data-value="14.85" class="pic low">
78
- <div class="chart"><div class="cover-fill" style="width: 14%"></div><div class="cover-empty" style="width: 86%"></div></div>
77
+ <td data-value="16.12" class="pic low">
78
+ <div class="chart"><div class="cover-fill" style="width: 16%"></div><div class="cover-empty" style="width: 84%"></div></div>
79
79
  </td>
80
- <td data-value="14.85" class="pct low">14.85%</td>
81
- <td data-value="101" class="abs low">15/101</td>
80
+ <td data-value="16.12" class="pct low">16.12%</td>
81
+ <td data-value="93" class="abs low">15/93</td>
82
82
  <td data-value="0" class="pct low">0%</td>
83
83
  <td data-value="42" class="abs low">0/42</td>
84
84
  <td data-value="0" class="pct low">0%</td>
85
85
  <td data-value="13" class="abs low">0/13</td>
86
- <td data-value="15.15" class="pct low">15.15%</td>
87
- <td data-value="99" class="abs low">15/99</td>
86
+ <td data-value="16.48" class="pct low">16.48%</td>
87
+ <td data-value="91" class="abs low">15/91</td>
88
88
  </tr>
89
89
 
90
90
  <tr>
@@ -104,47 +104,62 @@
104
104
 
105
105
  <tr>
106
106
  <td class="file high" data-value="internal.js"><a href="internal.js.html">internal.js</a></td>
107
- <td data-value="83.18" class="pic high">
108
- <div class="chart"><div class="cover-fill" style="width: 83%"></div><div class="cover-empty" style="width: 17%"></div></div>
107
+ <td data-value="85.42" class="pic high">
108
+ <div class="chart"><div class="cover-fill" style="width: 85%"></div><div class="cover-empty" style="width: 15%"></div></div>
109
109
  </td>
110
- <td data-value="83.18" class="pct high">83.18%</td>
111
- <td data-value="220" class="abs high">183/220</td>
112
- <td data-value="60.93" class="pct medium">60.93%</td>
113
- <td data-value="64" class="abs medium">39/64</td>
114
- <td data-value="92" class="pct high">92%</td>
115
- <td data-value="25" class="abs high">23/25</td>
116
- <td data-value="83.17" class="pct high">83.17%</td>
117
- <td data-value="214" class="abs high">178/214</td>
110
+ <td data-value="85.42" class="pct high">85.42%</td>
111
+ <td data-value="199" class="abs high">170/199</td>
112
+ <td data-value="63.33" class="pct medium">63.33%</td>
113
+ <td data-value="60" class="abs medium">38/60</td>
114
+ <td data-value="91.66" class="pct high">91.66%</td>
115
+ <td data-value="24" class="abs high">22/24</td>
116
+ <td data-value="85.49" class="pct high">85.49%</td>
117
+ <td data-value="193" class="abs high">165/193</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
121
121
  <td class="file low" data-value="internalSearch.js"><a href="internalSearch.js.html">internalSearch.js</a></td>
122
- <td data-value="4.66" class="pic low">
123
- <div class="chart"><div class="cover-fill" style="width: 4%"></div><div class="cover-empty" style="width: 96%"></div></div>
122
+ <td data-value="5.16" class="pic low">
123
+ <div class="chart"><div class="cover-fill" style="width: 5%"></div><div class="cover-empty" style="width: 95%"></div></div>
124
124
  </td>
125
- <td data-value="4.66" class="pct low">4.66%</td>
126
- <td data-value="150" class="abs low">7/150</td>
125
+ <td data-value="5.16" class="pct low">5.16%</td>
126
+ <td data-value="155" class="abs low">8/155</td>
127
127
  <td data-value="0" class="pct low">0%</td>
128
- <td data-value="87" class="abs low">0/87</td>
128
+ <td data-value="95" class="abs low">0/95</td>
129
129
  <td data-value="0" class="pct low">0%</td>
130
130
  <td data-value="33" class="abs low">0/33</td>
131
- <td data-value="4.76" class="pct low">4.76%</td>
132
- <td data-value="147" class="abs low">7/147</td>
131
+ <td data-value="5.26" class="pct low">5.26%</td>
132
+ <td data-value="152" class="abs low">8/152</td>
133
+ </tr>
134
+
135
+ <tr>
136
+ <td class="file low" data-value="staticFormula.js"><a href="staticFormula.js.html">staticFormula.js</a></td>
137
+ <td data-value="35.93" class="pic low">
138
+ <div class="chart"><div class="cover-fill" style="width: 35%"></div><div class="cover-empty" style="width: 65%"></div></div>
139
+ </td>
140
+ <td data-value="35.93" class="pct low">35.93%</td>
141
+ <td data-value="64" class="abs low">23/64</td>
142
+ <td data-value="16.12" class="pct low">16.12%</td>
143
+ <td data-value="31" class="abs low">5/31</td>
144
+ <td data-value="33.33" class="pct low">33.33%</td>
145
+ <td data-value="6" class="abs low">2/6</td>
146
+ <td data-value="36.5" class="pct low">36.5%</td>
147
+ <td data-value="63" class="abs low">23/63</td>
133
148
  </tr>
134
149
 
135
150
  <tr>
136
151
  <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
137
- <td data-value="67.92" class="pic medium">
138
- <div class="chart"><div class="cover-fill" style="width: 67%"></div><div class="cover-empty" style="width: 33%"></div></div>
152
+ <td data-value="69.81" class="pic medium">
153
+ <div class="chart"><div class="cover-fill" style="width: 69%"></div><div class="cover-empty" style="width: 31%"></div></div>
139
154
  </td>
140
- <td data-value="67.92" class="pct medium">67.92%</td>
141
- <td data-value="53" class="abs medium">36/53</td>
142
- <td data-value="40" class="pct low">40%</td>
143
- <td data-value="30" class="abs low">12/30</td>
155
+ <td data-value="69.81" class="pct medium">69.81%</td>
156
+ <td data-value="53" class="abs medium">37/53</td>
157
+ <td data-value="43.33" class="pct low">43.33%</td>
158
+ <td data-value="30" class="abs low">13/30</td>
144
159
  <td data-value="66.66" class="pct medium">66.66%</td>
145
160
  <td data-value="6" class="abs medium">4/6</td>
146
- <td data-value="67.3" class="pct medium">67.3%</td>
147
- <td data-value="52" class="abs medium">35/52</td>
161
+ <td data-value="69.23" class="pct medium">69.23%</td>
162
+ <td data-value="52" class="abs medium">36/52</td>
148
163
  </tr>
149
164
 
150
165
  </tbody>
@@ -155,7 +170,7 @@
155
170
  <div class='footer quiet pad2 space-top1 center small'>
156
171
  Code coverage generated by
157
172
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
158
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
173
+ at Mon Feb 07 2022 20:42:11 GMT+0000 (Coordinated Universal Time)
159
174
  </div>
160
175
  </div>
161
176
  <script src="../../../prettify.js"></script>