@budibase/server 1.0.46-alpha.1 → 1.0.46-alpha.5

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 (238) hide show
  1. package/builder/assets/{index.0df4f7ab.css → index.243ca52c.css} +1 -1
  2. package/builder/assets/{index.d109814f.js → index.298ba3d3.js} +184 -184
  3. package/builder/assets/{vendor.10e2ad1b.js → vendor.3bd2f661.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +1685 -1534
  6. package/coverage/coverage-final.json +98 -94
  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 +192 -129
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +21 -21
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +30 -30
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +19 -34
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  22. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.js.html +19 -19
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  25. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +16 -16
  28. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  30. package/coverage/lcov-report/api/controllers/row/internal.js.html +44 -44
  31. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +8 -8
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +25 -25
  33. package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
  34. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  35. package/coverage/lcov-report/api/controllers/table/external.js.html +12 -12
  36. package/coverage/lcov-report/api/controllers/table/index.html +16 -16
  37. package/coverage/lcov-report/api/controllers/table/index.js.html +25 -25
  38. package/coverage/lcov-report/api/controllers/table/internal.js.html +40 -34
  39. package/coverage/lcov-report/api/controllers/table/utils.js.html +76 -61
  40. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/user.js.html +20 -20
  42. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  43. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
  45. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  46. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  47. package/coverage/lcov-report/api/controllers/webhook.js.html +15 -15
  48. package/coverage/lcov-report/api/index.html +1 -1
  49. package/coverage/lcov-report/api/index.js.html +10 -10
  50. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/index.html +7 -22
  62. package/coverage/lcov-report/api/routes/index.js.html +4 -10
  63. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/static.js.html +17 -2
  74. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  79. package/coverage/lcov-report/automations/actions.js.html +24 -24
  80. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  81. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  82. package/coverage/lcov-report/automations/index.html +1 -1
  83. package/coverage/lcov-report/automations/index.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  85. package/coverage/lcov-report/automations/steps/createRow.js.html +13 -19
  86. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  87. package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
  88. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  89. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  90. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  91. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  92. package/coverage/lcov-report/automations/steps/index.html +13 -13
  93. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  94. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  95. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  96. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  97. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  98. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  99. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  100. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  101. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  102. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  103. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  104. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  106. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  107. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  108. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  109. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  110. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  111. package/coverage/lcov-report/automations/utils.js.html +32 -32
  112. package/coverage/lcov-report/constants/index.html +1 -1
  113. package/coverage/lcov-report/constants/index.js.html +22 -22
  114. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  115. package/coverage/lcov-report/constants/screens.js.html +4 -4
  116. package/coverage/lcov-report/db/client.js.html +18 -18
  117. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  118. package/coverage/lcov-report/db/index.html +15 -15
  119. package/coverage/lcov-report/db/index.js.html +3 -3
  120. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +18 -18
  121. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/index.js.html +31 -31
  123. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +15 -15
  124. package/coverage/lcov-report/db/newid.js.html +4 -4
  125. package/coverage/lcov-report/db/utils.js.html +85 -85
  126. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  127. package/coverage/lcov-report/events/index.html +1 -1
  128. package/coverage/lcov-report/events/index.js.html +5 -5
  129. package/coverage/lcov-report/events/utils.js.html +3 -3
  130. package/coverage/lcov-report/index.html +99 -69
  131. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  132. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  133. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  134. package/coverage/lcov-report/middleware/authorized.js.html +11 -11
  135. package/coverage/lcov-report/middleware/builder.js.html +8 -8
  136. package/coverage/lcov-report/middleware/currentapp.js.html +34 -61
  137. package/coverage/lcov-report/middleware/index.html +25 -25
  138. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  139. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  140. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  141. package/coverage/lcov-report/middleware/usageQuota.js.html +275 -41
  142. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  143. package/coverage/lcov-report/migrations/usageQuotas/index.html +141 -0
  144. package/coverage/lcov-report/migrations/usageQuotas/index.js.html +152 -0
  145. package/coverage/lcov-report/{api/routes/hosting.js.html → migrations/usageQuotas/syncApps.js.html} +42 -27
  146. package/coverage/lcov-report/{api/controllers/hosting.js.html → migrations/usageQuotas/syncRows.js.html} +41 -44
  147. package/coverage/lcov-report/threads/automation.js.html +1 -1
  148. package/coverage/lcov-report/threads/index.html +15 -15
  149. package/coverage/lcov-report/threads/index.js.html +10 -10
  150. package/coverage/lcov-report/threads/query.js.html +23 -8
  151. package/coverage/lcov-report/threads/utils.js.html +14 -14
  152. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  153. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  154. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  155. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  156. package/coverage/lcov-report/utilities/global.js.html +26 -26
  157. package/coverage/lcov-report/utilities/index.html +19 -19
  158. package/coverage/lcov-report/utilities/index.js.html +25 -25
  159. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  160. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  161. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  163. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  164. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +53 -53
  165. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
  166. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  167. package/coverage/lcov-report/utilities/security.js.html +8 -8
  168. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  169. package/coverage/lcov-report/utilities/usageQuota/index.html +141 -0
  170. package/coverage/lcov-report/utilities/usageQuota/index.js.html +356 -0
  171. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +302 -0
  172. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +134 -0
  173. package/coverage/lcov-report/utilities/users.js.html +5 -5
  174. package/coverage/lcov-report/utilities/workerRequests.js.html +39 -108
  175. package/coverage/lcov.info +2415 -2154
  176. package/dist/api/controllers/application.js +45 -24
  177. package/dist/api/controllers/static/index.js +59 -10
  178. package/dist/api/controllers/table/internal.js +2 -0
  179. package/dist/api/controllers/table/utils.js +5 -0
  180. package/dist/api/routes/index.js +0 -2
  181. package/dist/api/routes/static.js +2 -1
  182. package/dist/automations/steps/createRow.js +2 -4
  183. package/dist/automations/steps/deleteRow.js +1 -4
  184. package/dist/environment.js +1 -0
  185. package/dist/integrations/rest.js +5 -5
  186. package/dist/integrations/s3.js +1 -1
  187. package/dist/integrations/utils.js +6 -3
  188. package/dist/middleware/currentapp.js +0 -9
  189. package/dist/middleware/usageQuota.js +82 -13
  190. package/dist/migrations/usageQuotas/index.js +24 -0
  191. package/dist/migrations/usageQuotas/syncApps.js +26 -0
  192. package/dist/migrations/usageQuotas/syncRows.js +29 -0
  193. package/dist/package.json +5 -5
  194. package/dist/tests/utilities/TestConfiguration.js +3 -1
  195. package/dist/threads/query.js +4 -0
  196. package/dist/tsconfig.tsbuildinfo +1 -1
  197. package/dist/utilities/{usageQuota.js → usageQuota/index.js} +44 -31
  198. package/dist/utilities/usageQuota/rows.js +77 -0
  199. package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
  200. package/dist/utilities/workerRequests.js +0 -20
  201. package/nodemon.json +1 -1
  202. package/package.json +6 -6
  203. package/src/api/controllers/application.js +48 -27
  204. package/src/api/controllers/static/index.js +63 -10
  205. package/src/api/controllers/table/internal.js +2 -0
  206. package/src/api/controllers/table/utils.js +5 -0
  207. package/src/api/routes/index.js +0 -2
  208. package/src/api/routes/static.js +5 -0
  209. package/src/api/routes/tests/application.spec.js +2 -2
  210. package/src/api/routes/tests/static.spec.js +98 -0
  211. package/src/automations/steps/createRow.js +2 -4
  212. package/src/automations/steps/deleteRow.js +1 -4
  213. package/src/environment.js +1 -0
  214. package/src/integrations/rest.ts +9 -28
  215. package/src/integrations/s3.ts +1 -1
  216. package/src/integrations/utils.ts +18 -5
  217. package/src/middleware/currentapp.js +0 -9
  218. package/src/middleware/tests/usageQuota.spec.js +18 -24
  219. package/src/middleware/usageQuota.js +93 -15
  220. package/src/migrations/tests/usageQuotas/index.spec.js +27 -0
  221. package/src/migrations/tests/usageQuotas/syncApps.spec.js +37 -0
  222. package/src/migrations/tests/usageQuotas/syncRows.spec.js +43 -0
  223. package/src/migrations/usageQuotas/index.js +24 -0
  224. package/src/migrations/usageQuotas/syncApps.js +18 -0
  225. package/src/migrations/usageQuotas/syncRows.js +21 -0
  226. package/src/tests/utilities/TestConfiguration.js +3 -1
  227. package/src/threads/query.js +5 -0
  228. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  229. package/src/utilities/usageQuota/index.js +92 -0
  230. package/src/utilities/usageQuota/rows.js +74 -0
  231. package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
  232. package/src/utilities/workerRequests.js +0 -23
  233. package/dist/api/controllers/hosting.js +0 -30
  234. package/dist/api/routes/hosting.js +0 -11
  235. package/src/api/controllers/hosting.js +0 -22
  236. package/src/api/routes/hosting.js +0 -13
  237. package/src/api/routes/tests/hosting.spec.js +0 -36
  238. package/src/utilities/usageQuota.js +0 -73
@@ -0,0 +1,141 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for migrations/usageQuotas</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> migrations/usageQuotas</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>40/40</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">62.5% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>5/8</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>5/5</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>39/39</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ </div>
58
+ <div class='status-line high'></div>
59
+ <div class="pad1">
60
+ <table class="coverage-summary">
61
+ <thead>
62
+ <tr>
63
+ <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
64
+ <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
65
+ <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
66
+ <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
67
+ <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
68
+ <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
69
+ <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
70
+ <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
71
+ <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
72
+ <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
73
+ </tr>
74
+ </thead>
75
+ <tbody><tr>
76
+ <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
77
+ <td data-value="100" class="pic high">
78
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
79
+ </td>
80
+ <td data-value="100" class="pct high">100%</td>
81
+ <td data-value="10" class="abs high">10/10</td>
82
+ <td data-value="100" class="pct high">100%</td>
83
+ <td data-value="2" class="abs high">2/2</td>
84
+ <td data-value="100" class="pct high">100%</td>
85
+ <td data-value="2" class="abs high">2/2</td>
86
+ <td data-value="100" class="pct high">100%</td>
87
+ <td data-value="10" class="abs high">10/10</td>
88
+ </tr>
89
+
90
+ <tr>
91
+ <td class="file high" data-value="syncApps.js"><a href="syncApps.js.html">syncApps.js</a></td>
92
+ <td data-value="100" class="pic high">
93
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
94
+ </td>
95
+ <td data-value="100" class="pct high">100%</td>
96
+ <td data-value="13" class="abs high">13/13</td>
97
+ <td data-value="50" class="pct medium">50%</td>
98
+ <td data-value="2" class="abs medium">1/2</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="100" class="pct high">100%</td>
102
+ <td data-value="13" class="abs high">13/13</td>
103
+ </tr>
104
+
105
+ <tr>
106
+ <td class="file high" data-value="syncRows.js"><a href="syncRows.js.html">syncRows.js</a></td>
107
+ <td data-value="100" class="pic high">
108
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
109
+ </td>
110
+ <td data-value="100" class="pct high">100%</td>
111
+ <td data-value="17" class="abs high">17/17</td>
112
+ <td data-value="50" class="pct medium">50%</td>
113
+ <td data-value="4" class="abs medium">2/4</td>
114
+ <td data-value="100" class="pct high">100%</td>
115
+ <td data-value="2" class="abs high">2/2</td>
116
+ <td data-value="100" class="pct high">100%</td>
117
+ <td data-value="16" class="abs high">16/16</td>
118
+ </tr>
119
+
120
+ </tbody>
121
+ </table>
122
+ </div>
123
+ <div class='push'></div><!-- for sticky footer -->
124
+ </div><!-- /wrapper -->
125
+ <div class='footer quiet pad2 space-top1 center small'>
126
+ Code coverage generated by
127
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
128
+ at Wed Jan 26 2022 15:03:02 GMT+0000 (Coordinated Universal Time)
129
+ </div>
130
+ </div>
131
+ <script src="../../prettify.js"></script>
132
+ <script>
133
+ window.onload = function () {
134
+ prettyPrint();
135
+ };
136
+ </script>
137
+ <script src="../../sorter.js"></script>
138
+ <script src="../../block-navigation.js"></script>
139
+ </body>
140
+ </html>
141
+
@@ -0,0 +1,152 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for migrations/usageQuotas/index.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">migrations/usageQuotas</a> index.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>10/10</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>2/2</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>2/2</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>10/10</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ </div>
58
+ <div class='status-line high'></div>
59
+ <pre><table class="coverage">
60
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
+ <a name='L2'></a><a href='#L2'>2</a>
62
+ <a name='L3'></a><a href='#L3'>3</a>
63
+ <a name='L4'></a><a href='#L4'>4</a>
64
+ <a name='L5'></a><a href='#L5'>5</a>
65
+ <a name='L6'></a><a href='#L6'>6</a>
66
+ <a name='L7'></a><a href='#L7'>7</a>
67
+ <a name='L8'></a><a href='#L8'>8</a>
68
+ <a name='L9'></a><a href='#L9'>9</a>
69
+ <a name='L10'></a><a href='#L10'>10</a>
70
+ <a name='L11'></a><a href='#L11'>11</a>
71
+ <a name='L12'></a><a href='#L12'>12</a>
72
+ <a name='L13'></a><a href='#L13'>13</a>
73
+ <a name='L14'></a><a href='#L14'>14</a>
74
+ <a name='L15'></a><a href='#L15'>15</a>
75
+ <a name='L16'></a><a href='#L16'>16</a>
76
+ <a name='L17'></a><a href='#L17'>17</a>
77
+ <a name='L18'></a><a href='#L18'>18</a>
78
+ <a name='L19'></a><a href='#L19'>19</a>
79
+ <a name='L20'></a><a href='#L20'>20</a>
80
+ <a name='L21'></a><a href='#L21'>21</a>
81
+ <a name='L22'></a><a href='#L22'>22</a>
82
+ <a name='L23'></a><a href='#L23'>23</a>
83
+ <a name='L24'></a><a href='#L24'>24</a>
84
+ <a name='L25'></a><a href='#L25'>25</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
85
+ <span class="cline-any cline-neutral">&nbsp;</span>
86
+ <span class="cline-any cline-neutral">&nbsp;</span>
87
+ <span class="cline-any cline-neutral">&nbsp;</span>
88
+ <span class="cline-any cline-yes">25x</span>
89
+ <span class="cline-any cline-yes">25x</span>
90
+ <span class="cline-any cline-yes">25x</span>
91
+ <span class="cline-any cline-yes">25x</span>
92
+ <span class="cline-any cline-neutral">&nbsp;</span>
93
+ <span class="cline-any cline-yes">25x</span>
94
+ <span class="cline-any cline-yes">4x</span>
95
+ <span class="cline-any cline-yes">3x</span>
96
+ <span class="cline-any cline-neutral">&nbsp;</span>
97
+ <span class="cline-any cline-neutral">&nbsp;</span>
98
+ <span class="cline-any cline-neutral">&nbsp;</span>
99
+ <span class="cline-any cline-yes">1x</span>
100
+ <span class="cline-any cline-neutral">&nbsp;</span>
101
+ <span class="cline-any cline-neutral">&nbsp;</span>
102
+ <span class="cline-any cline-neutral">&nbsp;</span>
103
+ <span class="cline-any cline-yes">1x</span>
104
+ <span class="cline-any cline-yes">1x</span>
105
+ <span class="cline-any cline-neutral">&nbsp;</span>
106
+ <span class="cline-any cline-neutral">&nbsp;</span>
107
+ <span class="cline-any cline-neutral">&nbsp;</span>
108
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
109
+ MIGRATIONS,
110
+ MIGRATION_DBS,
111
+ migrateIfRequired,
112
+ } = require("@budibase/backend-core/migrations")
113
+ const { useQuotas } = require("../../utilities/usageQuota")
114
+ const syncApps = require("./syncApps")
115
+ const syncRows = require("./syncRows")
116
+ &nbsp;
117
+ exports.run = async () =&gt; {
118
+ if (!useQuotas()) {
119
+ return
120
+ }
121
+ &nbsp;
122
+ // Jan 2022
123
+ await migrateIfRequired(
124
+ MIGRATION_DBS.GLOBAL_DB,
125
+ MIGRATIONS.QUOTAS_1,
126
+ async () =&gt; {
127
+ await syncApps.run()
128
+ await syncRows.run()
129
+ }
130
+ )
131
+ }
132
+ &nbsp;</pre></td></tr></table></pre>
133
+
134
+ <div class='push'></div><!-- for sticky footer -->
135
+ </div><!-- /wrapper -->
136
+ <div class='footer quiet pad2 space-top1 center small'>
137
+ Code coverage generated by
138
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
139
+ at Wed Jan 26 2022 15:03:02 GMT+0000 (Coordinated Universal Time)
140
+ </div>
141
+ </div>
142
+ <script src="../../prettify.js"></script>
143
+ <script>
144
+ window.onload = function () {
145
+ prettyPrint();
146
+ };
147
+ </script>
148
+ <script src="../../sorter.js"></script>
149
+ <script src="../../block-navigation.js"></script>
150
+ </body>
151
+ </html>
152
+
@@ -3,7 +3,7 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for api/routes/hosting.js</title>
6
+ <title>Code coverage report for migrations/usageQuotas/syncApps.js</title>
7
7
  <meta charset="utf-8" />
8
8
  <link rel="stylesheet" href="../../prettify.css" />
9
9
  <link rel="stylesheet" href="../../base.css" />
@@ -19,34 +19,34 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">api/routes</a> hosting.js</h1>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">migrations/usageQuotas</a> syncApps.js</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>7/7</span>
28
+ <span class='fraction'>13/13</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
33
+ <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/0</span>
35
+ <span class='fraction'>1/2</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/0</span>
42
+ <span class='fraction'>1/1</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>7/7</span>
49
+ <span class='fraction'>13/13</span>
50
50
  </div>
51
51
 
52
52
 
@@ -70,32 +70,47 @@
70
70
  <a name='L11'></a><a href='#L11'>11</a>
71
71
  <a name='L12'></a><a href='#L12'>12</a>
72
72
  <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
74
- <span class="cline-any cline-yes">23x</span>
75
- <span class="cline-any cline-yes">23x</span>
76
- <span class="cline-any cline-yes">23x</span>
77
- <span class="cline-any cline-neutral">&nbsp;</span>
78
- <span class="cline-any cline-yes">23x</span>
73
+ <a name='L14'></a><a href='#L14'>14</a>
74
+ <a name='L15'></a><a href='#L15'>15</a>
75
+ <a name='L16'></a><a href='#L16'>16</a>
76
+ <a name='L17'></a><a href='#L17'>17</a>
77
+ <a name='L18'></a><a href='#L18'>18</a>
78
+ <a name='L19'></a><a href='#L19'>19</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">25x</span>
79
+ <span class="cline-any cline-yes">25x</span>
80
+ <span class="cline-any cline-yes">25x</span>
81
+ <span class="cline-any cline-yes">25x</span>
79
82
  <span class="cline-any cline-neutral">&nbsp;</span>
80
- <span class="cline-any cline-yes">23x</span>
83
+ <span class="cline-any cline-yes">25x</span>
84
+ <span class="cline-any cline-yes">1x</span>
81
85
  <span class="cline-any cline-neutral">&nbsp;</span>
86
+ <span class="cline-any cline-yes">1x</span>
87
+ <span class="cline-any cline-yes">1x</span>
82
88
  <span class="cline-any cline-neutral">&nbsp;</span>
83
89
  <span class="cline-any cline-neutral">&nbsp;</span>
90
+ <span class="cline-any cline-yes">1x</span>
91
+ <span class="cline-any cline-yes">1x</span>
92
+ <span class="cline-any cline-yes">1x</span>
93
+ <span class="cline-any cline-yes">1x</span>
94
+ <span class="cline-any cline-yes">1x</span>
84
95
  <span class="cline-any cline-neutral">&nbsp;</span>
85
- <span class="cline-any cline-yes">23x</span>
86
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
87
- const controller = require("../controllers/hosting")
88
- const authorized = require("../../middleware/authorized")
89
- const { BUILDER } = require("@budibase/backend-core/permissions")
90
- &nbsp;
91
- const router = Router()
96
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { getGlobalDB, getTenantId } = require("@budibase/backend-core/tenancy")
97
+ const { getAllApps } = require("@budibase/backend-core/db")
98
+ const CouchDB = require("../../db")
99
+ const { getUsageQuotaDoc } = require("../../utilities/usageQuota")
92
100
  &nbsp;
93
- router
94
- .get("/api/hosting/urls", authorized(BUILDER), controller.fetchUrls)
95
- // this isn't risky, doesn't return anything about apps other than names and URLs
96
- .get("/api/hosting/apps", controller.getDeployedApps)
101
+ exports.run = async () =&gt; {
102
+ const db = getGlobalDB()
103
+ // get app count
104
+ const devApps = await getAllApps(CouchDB, { dev: true })
105
+ const appCount = devApps ? devApps.length : <span class="branch-1 cbranch-no" title="branch not covered" >0</span>
97
106
  &nbsp;
98
- module.exports = router
107
+ // sync app count
108
+ const tenantId = getTenantId()
109
+ console.log(`[Tenant: ${tenantId}] Syncing app count: ${appCount}`)
110
+ const usageDoc = await getUsageQuotaDoc(db)
111
+ usageDoc.usageQuota.apps = appCount
112
+ await db.put(usageDoc)
113
+ }
99
114
  &nbsp;</pre></td></tr></table></pre>
100
115
 
101
116
  <div class='push'></div><!-- for sticky footer -->
@@ -103,7 +118,7 @@ module.exports = router
103
118
  <div class='footer quiet pad2 space-top1 center small'>
104
119
  Code coverage generated by
105
120
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
106
- at Thu Jan 20 2022 18:46:12 GMT+0000 (Coordinated Universal Time)
121
+ at Wed Jan 26 2022 15:03:02 GMT+0000 (Coordinated Universal Time)
107
122
  </div>
108
123
  </div>
109
124
  <script src="../../prettify.js"></script>
@@ -3,7 +3,7 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for api/controllers/hosting.js</title>
6
+ <title>Code coverage report for migrations/usageQuotas/syncRows.js</title>
7
7
  <meta charset="utf-8" />
8
8
  <link rel="stylesheet" href="../../prettify.css" />
9
9
  <link rel="stylesheet" href="../../base.css" />
@@ -19,34 +19,34 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">api/controllers</a> hosting.js</h1>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">migrations/usageQuotas</a> syncRows.js</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">93.33% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>14/15</span>
28
+ <span class='fraction'>17/17</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">75% </span>
33
+ <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/4</span>
35
+ <span class='fraction'>2/4</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">50% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/2</span>
42
+ <span class='fraction'>2/2</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">93.33% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>14/15</span>
49
+ <span class='fraction'>16/16</span>
50
50
  </div>
51
51
 
52
52
 
@@ -78,50 +78,47 @@
78
78
  <a name='L19'></a><a href='#L19'>19</a>
79
79
  <a name='L20'></a><a href='#L20'>20</a>
80
80
  <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
83
- <span class="cline-any cline-yes">23x</span>
84
- <span class="cline-any cline-yes">23x</span>
85
- <span class="cline-any cline-yes">23x</span>
86
- <span class="cline-any cline-yes">23x</span>
81
+ <a name='L22'></a><a href='#L22'>22</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">25x</span>
82
+ <span class="cline-any cline-yes">25x</span>
83
+ <span class="cline-any cline-yes">25x</span>
84
+ <span class="cline-any cline-yes">25x</span>
85
+ <span class="cline-any cline-yes">25x</span>
87
86
  <span class="cline-any cline-neutral">&nbsp;</span>
88
- <span class="cline-any cline-yes">23x</span>
87
+ <span class="cline-any cline-yes">25x</span>
89
88
  <span class="cline-any cline-yes">1x</span>
89
+ <span class="cline-any cline-neutral">&nbsp;</span>
90
90
  <span class="cline-any cline-yes">1x</span>
91
+ <span class="cline-any cline-yes">4x</span>
92
+ <span class="cline-any cline-yes">1x</span>
93
+ <span class="cline-any cline-yes">1x</span>
94
+ <span class="cline-any cline-neutral">&nbsp;</span>
95
+ <span class="cline-any cline-neutral">&nbsp;</span>
91
96
  <span class="cline-any cline-yes">1x</span>
92
97
  <span class="cline-any cline-yes">1x</span>
93
98
  <span class="cline-any cline-yes">1x</span>
94
99
  <span class="cline-any cline-yes">1x</span>
95
- <span class="cline-any cline-neutral">&nbsp;</span>
96
100
  <span class="cline-any cline-yes">1x</span>
97
101
  <span class="cline-any cline-neutral">&nbsp;</span>
98
- <span class="cline-any cline-neutral">&nbsp;</span>
99
- <span class="cline-any cline-neutral">&nbsp;</span>
100
- <span class="cline-any cline-neutral">&nbsp;</span>
101
- <span class="cline-any cline-yes">23x</span>
102
- <span class="cline-any cline-no">&nbsp;</span>
103
- <span class="cline-any cline-neutral">&nbsp;</span>
104
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
105
- const { getDeployedApps } = require("../../utilities/workerRequests")
106
- const { getScopedConfig } = require("@budibase/backend-core/db")
107
- const { Configs } = require("@budibase/backend-core/constants")
108
- const { checkSlashesInUrl } = require("../../utilities")
102
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { getGlobalDB, getTenantId } = require("@budibase/backend-core/tenancy")
103
+ const { getAllApps } = require("@budibase/backend-core/db")
104
+ const CouchDB = require("../../db")
105
+ const { getUsageQuotaDoc } = require("../../utilities/usageQuota")
106
+ const { getUniqueRows } = require("../../utilities/usageQuota/rows")
109
107
  &nbsp;
110
- exports.fetchUrls = async ctx =&gt; {
111
- const appId = ctx.appId
112
- const db = new CouchDB(appId)
113
- const settings = await getScopedConfig(db, { type: Configs.SETTINGS })
114
- let appUrl = "http://localhost:10000/app"
115
- if (settings &amp;&amp; settings["platformUrl"]) {
116
- appUrl = checkSlashesInUrl(`${settings["platformUrl"]}/app`)
117
- }
118
- ctx.body = {
119
- app: appUrl,
120
- }
121
- }
108
+ exports.run = async () =&gt; {
109
+ const db = getGlobalDB()
110
+ // get all rows in all apps
111
+ const allApps = await getAllApps(CouchDB, { all: true })
112
+ const appIds = allApps ? allApps.map(app =&gt; app.appId) : <span class="branch-1 cbranch-no" title="branch not covered" >[]</span>
113
+ const rows = await getUniqueRows(appIds)
114
+ const rowCount = rows ? rows.length : <span class="branch-1 cbranch-no" title="branch not covered" >0</span>
122
115
  &nbsp;
123
- exports.getDeployedApps = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
124
- <span class="cstat-no" title="statement not covered" > ctx.body = await getDeployedApps()</span>
116
+ // sync row count
117
+ const tenantId = getTenantId()
118
+ console.log(`[Tenant: ${tenantId}] Syncing row count: ${rowCount}`)
119
+ const usageDoc = await getUsageQuotaDoc(db)
120
+ usageDoc.usageQuota.rows = rowCount
121
+ await db.put(usageDoc)
125
122
  }
126
123
  &nbsp;</pre></td></tr></table></pre>
127
124
 
@@ -130,7 +127,7 @@ exports.getDeployedApps = <span class="fstat-no" title="function not covered" >a
130
127
  <div class='footer quiet pad2 space-top1 center small'>
131
128
  Code coverage generated by
132
129
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
133
- at Thu Jan 20 2022 18:46:12 GMT+0000 (Coordinated Universal Time)
130
+ at Wed Jan 26 2022 15:03:02 GMT+0000 (Coordinated Universal Time)
134
131
  </div>
135
132
  </div>
136
133
  <script src="../../prettify.js"></script>
@@ -502,7 +502,7 @@ module.exports = (input, callback) =&gt; {
502
502
  <div class='footer quiet pad2 space-top1 center small'>
503
503
  Code coverage generated by
504
504
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
505
- at Thu Jan 20 2022 18:46:12 GMT+0000 (Coordinated Universal Time)
505
+ at Wed Jan 26 2022 15:03:02 GMT+0000 (Coordinated Universal Time)
506
506
  </div>
507
507
  </div>
508
508
  <script src="../prettify.js"></script>