@budibase/server 0.9.186 → 0.9.190-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 (309) hide show
  1. package/Dockerfile +7 -1
  2. package/LICENSE +1 -1
  3. package/__mocks__/mssql.ts +1 -1
  4. package/__mocks__/oracledb.ts +31 -0
  5. package/__mocks__/pg.ts +3 -0
  6. package/builder/assets/bb-space-man.5be51a45.svg +290 -0
  7. package/builder/assets/index.43f4c913.js +1316 -0
  8. package/builder/assets/index.7d405e74.css +1 -0
  9. package/builder/assets/oracle.66592424.png +0 -0
  10. package/builder/assets/vendor.470042a4.js +152 -0
  11. package/builder/assets/vendor.5e1fe644.css +1 -0
  12. package/builder/index.html +4 -4
  13. package/coverage/clover.xml +1520 -1087
  14. package/coverage/coverage-final.json +93 -89
  15. package/coverage/lcov-report/api/controllers/analytics.js.html +2 -2
  16. package/coverage/lcov-report/api/controllers/apikeys.js.html +2 -2
  17. package/coverage/lcov-report/api/controllers/application.js.html +64 -13
  18. package/coverage/lcov-report/api/controllers/auth.js.html +19 -10
  19. package/coverage/lcov-report/api/controllers/automation.js.html +3 -3
  20. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  23. package/coverage/lcov-report/api/controllers/datasource.js.html +232 -28
  24. package/coverage/lcov-report/api/controllers/dev.js.html +16 -7
  25. package/coverage/lcov-report/api/controllers/hosting.js.html +10 -10
  26. package/coverage/lcov-report/api/controllers/index.html +91 -91
  27. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/layout.js.html +3 -3
  29. package/coverage/lcov-report/api/controllers/metadata.js.html +3 -3
  30. package/coverage/lcov-report/api/controllers/permission.js.html +3 -3
  31. package/coverage/lcov-report/api/controllers/query.js.html +53 -209
  32. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  33. package/coverage/lcov-report/api/controllers/routing.js.html +3 -3
  34. package/coverage/lcov-report/api/controllers/row/external.js.html +17 -8
  35. package/coverage/lcov-report/api/controllers/row/index.html +26 -26
  36. package/coverage/lcov-report/api/controllers/row/index.js.html +2 -2
  37. package/coverage/lcov-report/api/controllers/row/internal.js.html +9 -9
  38. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +2 -2
  39. package/coverage/lcov-report/api/controllers/row/utils.js.html +21 -30
  40. package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
  41. package/coverage/lcov-report/api/controllers/script.js.html +3 -3
  42. package/coverage/lcov-report/api/controllers/table/external.js.html +1001 -0
  43. package/coverage/lcov-report/api/controllers/table/index.html +56 -26
  44. package/coverage/lcov-report/api/controllers/table/index.js.html +80 -350
  45. package/coverage/lcov-report/api/controllers/table/internal.js.html +545 -0
  46. package/coverage/lcov-report/api/controllers/table/utils.js.html +175 -52
  47. package/coverage/lcov-report/api/controllers/templates.js.html +4 -4
  48. package/coverage/lcov-report/api/controllers/user.js.html +390 -33
  49. package/coverage/lcov-report/api/controllers/view/exporters.js.html +19 -4
  50. package/coverage/lcov-report/api/controllers/view/index.html +22 -22
  51. package/coverage/lcov-report/api/controllers/view/index.js.html +52 -13
  52. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  53. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -3
  54. package/coverage/lcov-report/api/controllers/webhook.js.html +4 -4
  55. package/coverage/lcov-report/api/index.html +1 -1
  56. package/coverage/lcov-report/api/index.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/dev.js.html +2 -2
  68. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/index.html +4 -4
  70. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/query.js.html +5 -2
  76. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/static.js.html +2 -2
  82. package/coverage/lcov-report/api/routes/table.js.html +35 -2
  83. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/user.js.html +17 -2
  85. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  87. package/coverage/lcov-report/automations/actions.js.html +2 -2
  88. package/coverage/lcov-report/automations/automationUtils.js.html +4 -4
  89. package/coverage/lcov-report/automations/bullboard.js.html +71 -20
  90. package/coverage/lcov-report/automations/index.html +35 -50
  91. package/coverage/lcov-report/automations/index.js.html +2 -2
  92. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/discord.js.html +3 -3
  97. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -3
  99. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/index.html +14 -14
  101. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +3 -3
  103. package/coverage/lcov-report/automations/steps/queryRows.js.html +3 -3
  104. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  106. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  107. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  108. package/coverage/lcov-report/automations/steps/utils.js.html +7 -7
  109. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  114. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  115. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  116. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggers.js.html +22 -10
  119. package/coverage/lcov-report/automations/utils.js.html +42 -12
  120. package/coverage/lcov-report/constants/index.html +5 -5
  121. package/coverage/lcov-report/constants/index.js.html +87 -21
  122. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  123. package/coverage/lcov-report/constants/screens.js.html +1 -1
  124. package/coverage/lcov-report/db/client.js.html +2 -2
  125. package/coverage/lcov-report/db/inMemoryView.js.html +2 -2
  126. package/coverage/lcov-report/db/index.html +2 -2
  127. package/coverage/lcov-report/db/index.js.html +1 -1
  128. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +6 -6
  129. package/coverage/lcov-report/db/linkedRows/index.html +10 -10
  130. package/coverage/lcov-report/db/linkedRows/index.js.html +5 -5
  131. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +6 -6
  132. package/coverage/lcov-report/db/newid.js.html +3 -3
  133. package/coverage/lcov-report/db/utils.js.html +57 -57
  134. package/coverage/lcov-report/events/AutomationEmitter.js.html +6 -6
  135. package/coverage/lcov-report/events/index.html +6 -6
  136. package/coverage/lcov-report/events/index.js.html +1 -1
  137. package/coverage/lcov-report/events/utils.js.html +5 -5
  138. package/coverage/lcov-report/index.html +108 -93
  139. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  140. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  141. package/coverage/lcov-report/middleware/appInfo.js.html +2 -2
  142. package/coverage/lcov-report/middleware/authorized.js.html +58 -34
  143. package/coverage/lcov-report/middleware/builder.js.html +16 -7
  144. package/coverage/lcov-report/middleware/currentapp.js.html +6 -6
  145. package/coverage/lcov-report/middleware/index.html +27 -27
  146. package/coverage/lcov-report/middleware/joi-validator.js.html +2 -2
  147. package/coverage/lcov-report/middleware/resourceId.js.html +18 -18
  148. package/coverage/lcov-report/middleware/selfhost.js.html +2 -2
  149. package/coverage/lcov-report/middleware/usageQuota.js.html +4 -4
  150. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  151. package/coverage/lcov-report/{automations/thread.js.html → threads/automation.js.html} +90 -33
  152. package/coverage/lcov-report/threads/index.html +141 -0
  153. package/coverage/lcov-report/threads/index.js.html +278 -0
  154. package/coverage/lcov-report/threads/query.js.html +278 -0
  155. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  156. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  157. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  158. package/coverage/lcov-report/utilities/csvParser.js.html +144 -15
  159. package/coverage/lcov-report/utilities/global.js.html +26 -11
  160. package/coverage/lcov-report/utilities/index.html +48 -48
  161. package/coverage/lcov-report/utilities/index.js.html +47 -14
  162. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +30 -9
  163. package/coverage/lcov-report/utilities/queue/index.html +14 -14
  164. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  165. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  166. package/coverage/lcov-report/utilities/rowProcessor/index.html +4 -4
  167. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +2 -2
  168. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +3 -3
  169. package/coverage/lcov-report/utilities/scriptRunner.js.html +16 -7
  170. package/coverage/lcov-report/utilities/security.js.html +3 -3
  171. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  172. package/coverage/lcov-report/utilities/users.js.html +1 -1
  173. package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
  174. package/coverage/lcov.info +2558 -1787
  175. package/dist/api/controllers/application.js +15 -1
  176. package/dist/api/controllers/auth.js +3 -3
  177. package/dist/api/controllers/datasource.js +67 -16
  178. package/dist/api/controllers/deploy/index.js +2 -0
  179. package/dist/api/controllers/dev.js +4 -1
  180. package/dist/api/controllers/query.js +30 -58
  181. package/dist/api/controllers/row/ExternalRequest.js +37 -14
  182. package/dist/api/controllers/row/external.js +3 -1
  183. package/dist/api/controllers/row/utils.js +6 -12
  184. package/dist/api/controllers/table/external.js +249 -0
  185. package/dist/api/controllers/table/index.js +49 -123
  186. package/dist/api/controllers/table/internal.js +150 -0
  187. package/dist/api/controllers/table/utils.js +62 -28
  188. package/dist/api/controllers/user.js +123 -11
  189. package/dist/api/controllers/view/exporters.js +4 -0
  190. package/dist/api/controllers/view/index.js +14 -2
  191. package/dist/api/routes/query.js +1 -1
  192. package/dist/api/routes/table.js +7 -1
  193. package/dist/api/routes/user.js +2 -1
  194. package/dist/app.js +2 -11
  195. package/dist/automations/bullboard.js +37 -10
  196. package/dist/automations/triggers.js +7 -3
  197. package/dist/automations/utils.js +11 -2
  198. package/dist/constants/index.js +19 -0
  199. package/dist/definitions/datasource.js +5 -0
  200. package/dist/environment.js +13 -0
  201. package/dist/integrations/base/IntegrationBase.js +2 -0
  202. package/dist/integrations/base/datasourcePlus.js +2 -0
  203. package/dist/integrations/base/sql.js +338 -180
  204. package/dist/integrations/base/sqlTable.js +143 -0
  205. package/dist/integrations/base/utils.js +30 -0
  206. package/dist/integrations/index.js +6 -0
  207. package/dist/integrations/microsoftSqlServer.js +117 -9
  208. package/dist/integrations/mysql.js +14 -84
  209. package/dist/integrations/oracle.js +345 -0
  210. package/dist/integrations/postgres.js +35 -28
  211. package/dist/integrations/utils.js +71 -9
  212. package/dist/middleware/authorized.js +22 -11
  213. package/dist/middleware/builder.js +4 -1
  214. package/dist/package.json +13 -8
  215. package/dist/tests/utilities/TestConfiguration.js +2 -1
  216. package/dist/{automations/thread.js → threads/automation.js} +26 -8
  217. package/dist/threads/index.js +64 -0
  218. package/dist/threads/query.js +64 -0
  219. package/dist/tsconfig.tsbuildinfo +1 -1
  220. package/dist/utilities/csvParser.js +46 -5
  221. package/dist/utilities/global.js +6 -2
  222. package/dist/utilities/index.js +11 -0
  223. package/dist/utilities/queue/inMemoryQueue.js +8 -0
  224. package/dist/utilities/scriptRunner.js +4 -1
  225. package/package.json +14 -9
  226. package/scripts/dev/manage.js +1 -0
  227. package/scripts/integrations/mssql/data/Dockerfile +9 -0
  228. package/scripts/integrations/mssql/data/entrypoint.sh +24 -0
  229. package/scripts/integrations/mssql/data/setup.sql +54 -0
  230. package/scripts/integrations/mssql/docker-compose.yaml +12 -0
  231. package/scripts/integrations/mssql/reset.sh +3 -0
  232. package/scripts/integrations/oracle/docker-compose.yml +19 -0
  233. package/scripts/integrations/oracle/instantclient/linux/x86-64/basiclite-21.4.zip +0 -0
  234. package/scripts/integrations/oracle/instantclient/linux/x86-64/install.sh +23 -0
  235. package/scripts/integrations/oracle/oracle.md +90 -0
  236. package/scripts/integrations/postgres/docker-compose.yml +3 -3
  237. package/scripts/likeCypress.ts +33 -0
  238. package/src/api/controllers/application.js +18 -1
  239. package/src/api/controllers/auth.js +3 -0
  240. package/src/api/controllers/datasource.js +84 -16
  241. package/src/api/controllers/deploy/index.js +2 -0
  242. package/src/api/controllers/dev.js +4 -1
  243. package/src/api/controllers/query.js +29 -81
  244. package/src/api/controllers/row/ExternalRequest.ts +47 -16
  245. package/src/api/controllers/row/external.js +4 -1
  246. package/src/api/controllers/row/utils.js +8 -11
  247. package/src/api/controllers/table/external.js +307 -0
  248. package/src/api/controllers/table/index.js +47 -137
  249. package/src/api/controllers/table/internal.js +155 -0
  250. package/src/api/controllers/table/utils.js +74 -33
  251. package/src/api/controllers/user.js +132 -13
  252. package/src/api/controllers/view/exporters.js +5 -0
  253. package/src/api/controllers/view/index.js +15 -2
  254. package/src/api/routes/query.js +1 -0
  255. package/src/api/routes/table.js +11 -0
  256. package/src/api/routes/tests/datasource.spec.js +2 -2
  257. package/src/api/routes/tests/misc.spec.js +5 -1
  258. package/src/api/routes/tests/query.spec.js +0 -1
  259. package/src/api/routes/user.js +5 -0
  260. package/src/app.ts +2 -10
  261. package/src/automations/bullboard.js +28 -11
  262. package/src/automations/tests/automation.spec.js +3 -4
  263. package/src/automations/triggers.js +7 -3
  264. package/src/automations/utils.js +12 -2
  265. package/src/constants/index.js +22 -0
  266. package/src/definitions/common.ts +7 -1
  267. package/src/definitions/datasource.ts +10 -3
  268. package/src/environment.js +15 -0
  269. package/src/integrations/airtable.ts +2 -1
  270. package/src/integrations/arangodb.ts +2 -1
  271. package/src/integrations/base/IntegrationBase.ts +6 -0
  272. package/src/integrations/base/datasourcePlus.ts +9 -0
  273. package/src/integrations/base/sql.ts +362 -222
  274. package/src/integrations/base/sqlTable.ts +180 -0
  275. package/src/integrations/base/utils.ts +22 -0
  276. package/src/integrations/couchdb.ts +2 -1
  277. package/src/integrations/dynamodb.ts +2 -1
  278. package/src/integrations/elasticsearch.ts +2 -1
  279. package/src/integrations/index.ts +7 -0
  280. package/src/integrations/microsoftSqlServer.ts +145 -13
  281. package/src/integrations/mongodb.ts +2 -1
  282. package/src/integrations/mysql.ts +20 -94
  283. package/src/integrations/oracle.ts +445 -0
  284. package/src/integrations/postgres.ts +45 -35
  285. package/src/integrations/rest.ts +2 -1
  286. package/src/integrations/s3.ts +2 -1
  287. package/src/integrations/tests/microsoftSqlServer.spec.js +22 -15
  288. package/src/integrations/tests/oracle.spec.js +94 -0
  289. package/src/integrations/tests/postgres.spec.js +4 -0
  290. package/src/integrations/utils.ts +74 -8
  291. package/src/middleware/authorized.js +26 -18
  292. package/src/middleware/builder.js +4 -1
  293. package/src/middleware/tests/authorized.spec.js +2 -0
  294. package/src/tests/utilities/TestConfiguration.js +2 -1
  295. package/src/{automations/thread.js → threads/automation.js} +27 -8
  296. package/src/threads/index.js +66 -0
  297. package/src/threads/query.js +66 -0
  298. package/src/utilities/csvParser.js +48 -5
  299. package/src/utilities/global.js +7 -2
  300. package/src/utilities/index.js +11 -0
  301. package/src/utilities/queue/inMemoryQueue.js +7 -0
  302. package/src/utilities/scriptRunner.js +4 -1
  303. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -6
  304. package/src/utilities/tests/csvParser.spec.js +3 -0
  305. package/tsconfig.json +1 -1
  306. package/builder/assets/index.10556cc1.js +0 -201
  307. package/builder/assets/index.7469e1e4.css +0 -29
  308. package/builder/assets/vendor.278a305c.js +0 -9
  309. package/builder/assets/vendor.d75d5eb7.css +0 -1
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">87.88% </span>
26
+ <span class="strong">88.88% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>29/33</span>
28
+ <span class='fraction'>32/36</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">87.88% </span>
47
+ <span class="strong">88.88% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>29/33</span>
49
+ <span class='fraction'>32/36</span>
50
50
  </div>
51
51
 
52
52
 
@@ -132,7 +132,10 @@
132
132
  <a name='L73'></a><a href='#L73'>73</a>
133
133
  <a name='L74'></a><a href='#L74'>74</a>
134
134
  <a name='L75'></a><a href='#L75'>75</a>
135
- <a name='L76'></a><a href='#L76'>76</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
136
139
  <span class="cline-any cline-neutral">&nbsp;</span>
137
140
  <span class="cline-any cline-neutral">&nbsp;</span>
138
141
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -142,6 +145,7 @@
142
145
  <span class="cline-any cline-yes">24x</span>
143
146
  <span class="cline-any cline-yes">24x</span>
144
147
  <span class="cline-any cline-yes">24x</span>
148
+ <span class="cline-any cline-yes">24x</span>
145
149
  <span class="cline-any cline-neutral">&nbsp;</span>
146
150
  <span class="cline-any cline-yes">24x</span>
147
151
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -185,6 +189,8 @@
185
189
  <span class="cline-any cline-yes">1x</span>
186
190
  <span class="cline-any cline-yes">1x</span>
187
191
  <span class="cline-any cline-yes">1x</span>
192
+ <span class="cline-any cline-yes">1x</span>
193
+ <span class="cline-any cline-yes">1x</span>
188
194
  <span class="cline-any cline-neutral">&nbsp;</span>
189
195
  <span class="cline-any cline-yes">1x</span>
190
196
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -217,6 +223,7 @@ const {
217
223
  const CouchDB = require("../db")
218
224
  const { DocumentTypes } = require("../db/utils")
219
225
  const { PermissionTypes } = require("@budibase/auth/permissions")
226
+ const { app: appCache } = require("@budibase/auth/cache")
220
227
  &nbsp;
221
228
  const DEBOUNCE_TIME_SEC = 30
222
229
  &nbsp;
@@ -259,7 +266,9 @@ async function updateAppUpdatedAt(ctx) {
259
266
  const db = new CouchDB(appId)
260
267
  const metadata = await db.get(DocumentTypes.APP_METADATA)
261
268
  metadata.updatedAt = new Date().toISOString()
262
- await db.put(metadata)
269
+ const response = await db.put(metadata)
270
+ metadata._rev = response.rev
271
+ await appCache.invalidateAppMetadata(appId, metadata)
263
272
  // set a new debounce record with a short TTL
264
273
  await setDebounce(appId, DEBOUNCE_TIME_SEC)
265
274
  }
@@ -289,7 +298,7 @@ module.exports = async (ctx, permType) =&gt; {
289
298
  <div class='footer quiet pad2 space-top1 center small'>
290
299
  Code coverage generated by
291
300
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
292
- at Fri Nov 12 2021 13:13:12 GMT+0000 (Coordinated Universal Time)
301
+ at Thu Nov 25 2021 12:28:23 GMT+0000 (Coordinated Universal Time)
293
302
  </div>
294
303
  </div>
295
304
  <script src="../prettify.js"></script>
@@ -23,14 +23,14 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">83.02% </span>
26
+ <span class="strong">83.01% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>44/53</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">78.05% </span>
33
+ <span class="strong">78.04% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>32/41</span>
36
36
  </div>
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">83.02% </span>
47
+ <span class="strong">83.01% </span>
48
48
  <span class="quiet">Lines</span>
49
49
  <span class='fraction'>44/53</span>
50
50
  </div>
@@ -324,7 +324,7 @@ module.exports = async (ctx, next) =&gt; {
324
324
  if (!ctx.user) {
325
325
  // not logged in, try to set a cookie for public apps
326
326
  appId = requestAppId
327
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (requestAppId != null) {
327
+ } else if (requestAppId != null) {
328
328
  // Different App ID means cookie needs reset, or if the same public user has logged in
329
329
  const globalUser = await getCachedSelf(ctx, requestAppId)
330
330
  appId = requestAppId
@@ -355,7 +355,7 @@ module.exports = async (ctx, next) =&gt; {
355
355
  }
356
356
  &nbsp;
357
357
  ctx.appId = appId
358
- <span class="missing-if-branch" title="else path not taken" >E</span>if (roleId) {
358
+ if (roleId) {
359
359
  ctx.roleId = roleId
360
360
  const userId = ctx.user ? generateUserMetadataID(ctx.user._id) : null
361
361
  ctx.user = {
@@ -385,7 +385,7 @@ module.exports = async (ctx, next) =&gt; {
385
385
  <div class='footer quiet pad2 space-top1 center small'>
386
386
  Code coverage generated by
387
387
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
388
- at Fri Nov 12 2021 13:13:12 GMT+0000 (Coordinated Universal Time)
388
+ at Thu Nov 25 2021 12:28:23 GMT+0000 (Coordinated Universal Time)
389
389
  </div>
390
390
  </div>
391
391
  <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">89.81% </span>
26
+ <span class="strong">90.26% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>194/216</span>
28
+ <span class='fraction'>204/226</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">79.45% </span>
33
+ <span class="strong">79.6% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>116/146</span>
35
+ <span class='fraction'>121/152</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'>28/28</span>
42
+ <span class='fraction'>29/29</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">89.72% </span>
47
+ <span class="strong">90.17% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>192/214</span>
49
+ <span class='fraction'>202/224</span>
50
50
  </div>
51
51
 
52
52
 
@@ -79,7 +79,7 @@
79
79
  </td>
80
80
  <td data-value="80" class="pct high">80%</td>
81
81
  <td data-value="10" class="abs high">8/10</td>
82
- <td data-value="54.55" class="pct medium">54.55%</td>
82
+ <td data-value="54.54" class="pct medium">54.54%</td>
83
83
  <td data-value="11" class="abs medium">6/11</td>
84
84
  <td data-value="100" class="pct high">100%</td>
85
85
  <td data-value="2" class="abs high">2/2</td>
@@ -93,42 +93,42 @@
93
93
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
94
94
  </td>
95
95
  <td data-value="100" class="pct high">100%</td>
96
- <td data-value="27" class="abs high">27/27</td>
97
- <td data-value="90.91" class="pct high">90.91%</td>
98
- <td data-value="22" class="abs high">20/22</td>
96
+ <td data-value="34" class="abs high">34/34</td>
97
+ <td data-value="89.28" class="pct high">89.28%</td>
98
+ <td data-value="28" class="abs high">25/28</td>
99
99
  <td data-value="100" class="pct high">100%</td>
100
- <td data-value="3" class="abs high">3/3</td>
100
+ <td data-value="4" class="abs high">4/4</td>
101
101
  <td data-value="100" class="pct high">100%</td>
102
- <td data-value="27" class="abs high">27/27</td>
102
+ <td data-value="34" class="abs high">34/34</td>
103
103
  </tr>
104
104
 
105
105
  <tr>
106
106
  <td class="file high" data-value="builder.js"><a href="builder.js.html">builder.js</a></td>
107
- <td data-value="87.88" class="pic high">
108
- <div class="chart"><div class="cover-fill" style="width: 87%"></div><div class="cover-empty" style="width: 13%"></div></div>
107
+ <td data-value="88.88" class="pic high">
108
+ <div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
109
109
  </td>
110
- <td data-value="87.88" class="pct high">87.88%</td>
111
- <td data-value="33" class="abs high">29/33</td>
110
+ <td data-value="88.88" class="pct high">88.88%</td>
111
+ <td data-value="36" class="abs high">32/36</td>
112
112
  <td data-value="77.27" class="pct medium">77.27%</td>
113
113
  <td data-value="22" class="abs medium">17/22</td>
114
114
  <td data-value="100" class="pct high">100%</td>
115
115
  <td data-value="3" class="abs high">3/3</td>
116
- <td data-value="87.88" class="pct high">87.88%</td>
117
- <td data-value="33" class="abs high">29/33</td>
116
+ <td data-value="88.88" class="pct high">88.88%</td>
117
+ <td data-value="36" class="abs high">32/36</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
121
121
  <td class="file high" data-value="currentapp.js"><a href="currentapp.js.html">currentapp.js</a></td>
122
- <td data-value="83.02" class="pic high">
122
+ <td data-value="83.01" class="pic high">
123
123
  <div class="chart"><div class="cover-fill" style="width: 83%"></div><div class="cover-empty" style="width: 17%"></div></div>
124
124
  </td>
125
- <td data-value="83.02" class="pct high">83.02%</td>
125
+ <td data-value="83.01" class="pct high">83.01%</td>
126
126
  <td data-value="53" class="abs high">44/53</td>
127
- <td data-value="78.05" class="pct medium">78.05%</td>
127
+ <td data-value="78.04" class="pct medium">78.04%</td>
128
128
  <td data-value="41" class="abs medium">32/41</td>
129
129
  <td data-value="100" class="pct high">100%</td>
130
130
  <td data-value="1" class="abs high">1/1</td>
131
- <td data-value="83.02" class="pct high">83.02%</td>
131
+ <td data-value="83.01" class="pct high">83.01%</td>
132
132
  <td data-value="53" class="abs high">44/53</td>
133
133
  </tr>
134
134
 
@@ -179,16 +179,16 @@
179
179
 
180
180
  <tr>
181
181
  <td class="file high" data-value="usageQuota.js"><a href="usageQuota.js.html">usageQuota.js</a></td>
182
- <td data-value="92.11" class="pic high">
182
+ <td data-value="92.1" class="pic high">
183
183
  <div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
184
184
  </td>
185
- <td data-value="92.11" class="pct high">92.11%</td>
185
+ <td data-value="92.1" class="pct high">92.1%</td>
186
186
  <td data-value="38" class="abs high">35/38</td>
187
187
  <td data-value="82.14" class="pct high">82.14%</td>
188
188
  <td data-value="28" class="abs high">23/28</td>
189
189
  <td data-value="100" class="pct high">100%</td>
190
190
  <td data-value="4" class="abs high">4/4</td>
191
- <td data-value="91.67" class="pct high">91.67%</td>
191
+ <td data-value="91.66" class="pct high">91.66%</td>
192
192
  <td data-value="36" class="abs high">33/36</td>
193
193
  </tr>
194
194
 
@@ -215,7 +215,7 @@
215
215
  <div class='footer quiet pad2 space-top1 center small'>
216
216
  Code coverage generated by
217
217
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
218
- at Fri Nov 12 2021 13:13:12 GMT+0000 (Coordinated Universal Time)
218
+ at Thu Nov 25 2021 12:28:23 GMT+0000 (Coordinated Universal Time)
219
219
  </div>
220
220
  </div>
221
221
  <script src="../prettify.js"></script>
@@ -122,7 +122,7 @@
122
122
  let params = null
123
123
  if (ctx[property] != null) {
124
124
  params = ctx[property]
125
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (ctx.request[property] != null) {
125
+ } else if (ctx.request[property] != null) {
126
126
  params = ctx.request[property]
127
127
  }
128
128
  const { error } = schema.validate(params)
@@ -148,7 +148,7 @@ module.exports.params = schema =&gt; {
148
148
  <div class='footer quiet pad2 space-top1 center small'>
149
149
  Code coverage generated by
150
150
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
151
- at Fri Nov 12 2021 13:13:12 GMT+0000 (Coordinated Universal Time)
151
+ at Thu Nov 25 2021 12:28:23 GMT+0000 (Coordinated Universal Time)
152
152
  </div>
153
153
  </div>
154
154
  <script src="../prettify.js"></script>
@@ -120,15 +120,15 @@
120
120
  <a name='L61'></a><a href='#L61'>61</a>
121
121
  <a name='L62'></a><a href='#L62'>62</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
122
122
  <span class="cline-any cline-neutral">&nbsp;</span>
123
- <span class="cline-any cline-yes">558x</span>
124
- <span class="cline-any cline-yes">558x</span>
125
- <span class="cline-any cline-yes">558x</span>
126
- <span class="cline-any cline-yes">558x</span>
123
+ <span class="cline-any cline-yes">604x</span>
124
+ <span class="cline-any cline-yes">604x</span>
125
+ <span class="cline-any cline-yes">604x</span>
126
+ <span class="cline-any cline-yes">604x</span>
127
127
  <span class="cline-any cline-neutral">&nbsp;</span>
128
128
  <span class="cline-any cline-neutral">&nbsp;</span>
129
129
  <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-yes">558x</span>
131
- <span class="cline-any cline-yes">558x</span>
130
+ <span class="cline-any cline-yes">604x</span>
131
+ <span class="cline-any cline-yes">604x</span>
132
132
  <span class="cline-any cline-neutral">&nbsp;</span>
133
133
  <span class="cline-any cline-neutral">&nbsp;</span>
134
134
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -137,21 +137,21 @@
137
137
  <span class="cline-any cline-neutral">&nbsp;</span>
138
138
  <span class="cline-any cline-neutral">&nbsp;</span>
139
139
  <span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-yes">558x</span>
141
- <span class="cline-any cline-yes">558x</span>
142
- <span class="cline-any cline-yes">558x</span>
143
- <span class="cline-any cline-yes">558x</span>
144
- <span class="cline-any cline-yes">55x</span>
145
- <span class="cline-any cline-yes">55x</span>
140
+ <span class="cline-any cline-yes">604x</span>
141
+ <span class="cline-any cline-yes">604x</span>
142
+ <span class="cline-any cline-yes">604x</span>
143
+ <span class="cline-any cline-yes">604x</span>
144
+ <span class="cline-any cline-yes">57x</span>
145
+ <span class="cline-any cline-yes">57x</span>
146
146
  <span class="cline-any cline-yes">1x</span>
147
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-yes">54x</span>
149
- <span class="cline-any cline-yes">50x</span>
148
+ <span class="cline-any cline-yes">56x</span>
149
+ <span class="cline-any cline-yes">52x</span>
150
150
  <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-yes">54x</span>
151
+ <span class="cline-any cline-yes">56x</span>
152
152
  <span class="cline-any cline-yes">11x</span>
153
153
  <span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-yes">54x</span>
154
+ <span class="cline-any cline-yes">56x</span>
155
155
  <span class="cline-any cline-neutral">&nbsp;</span>
156
156
  <span class="cline-any cline-neutral">&nbsp;</span>
157
157
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -159,7 +159,7 @@
159
159
  <span class="cline-any cline-yes">24x</span>
160
160
  <span class="cline-any cline-neutral">&nbsp;</span>
161
161
  <span class="cline-any cline-yes">24x</span>
162
- <span class="cline-any cline-yes">416x</span>
162
+ <span class="cline-any cline-yes">462x</span>
163
163
  <span class="cline-any cline-neutral">&nbsp;</span>
164
164
  <span class="cline-any cline-neutral">&nbsp;</span>
165
165
  <span class="cline-any cline-yes">24x</span>
@@ -247,7 +247,7 @@ module.exports.bodySubResource = (main, sub) =&gt; {
247
247
  <div class='footer quiet pad2 space-top1 center small'>
248
248
  Code coverage generated by
249
249
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
250
- at Fri Nov 12 2021 13:13:12 GMT+0000 (Coordinated Universal Time)
250
+ at Thu Nov 25 2021 12:28:23 GMT+0000 (Coordinated Universal Time)
251
251
  </div>
252
252
  </div>
253
253
  <script src="../prettify.js"></script>
@@ -81,7 +81,7 @@
81
81
  // if added as a middleware will stop requests unless builder is in self host mode
82
82
  // or cloud is in self host
83
83
  module.exports = async (ctx, next) =&gt; {
84
- <span class="missing-if-branch" title="else path not taken" >E</span>if (env.SELF_HOSTED) {
84
+ if (env.SELF_HOSTED) {
85
85
  await next()
86
86
  return
87
87
  }
@@ -94,7 +94,7 @@ module.exports = async (ctx, next) =&gt; {
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
97
- at Fri Nov 12 2021 13:13:12 GMT+0000 (Coordinated Universal Time)
97
+ at Thu Nov 25 2021 12:28:23 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  </div>
100
100
  <script src="../prettify.js"></script>
@@ -23,7 +23,7 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.11% </span>
26
+ <span class="strong">92.1% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>35/38</span>
29
29
  </div>
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">91.67% </span>
47
+ <span class="strong">91.66% </span>
48
48
  <span class="quiet">Lines</span>
49
49
  <span class='fraction'>33/36</span>
50
50
  </div>
@@ -287,7 +287,7 @@ module.exports = async (ctx, next) =&gt; {
287
287
  if (ctx.request.body &amp;&amp; ctx.request.body._id &amp;&amp; ctx.request.body._rev) {
288
288
  const usageId = ctx.request.body._id
289
289
  try {
290
- <span class="missing-if-branch" title="else path not taken" >E</span>if (ctx.appId) {
290
+ if (ctx.appId) {
291
291
  const db = new CouchDB(ctx.appId)
292
292
  await db.get(usageId)
293
293
  }
@@ -328,7 +328,7 @@ module.exports = async (ctx, next) =&gt; {
328
328
  <div class='footer quiet pad2 space-top1 center small'>
329
329
  Code coverage generated by
330
330
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
331
- at Fri Nov 12 2021 13:13:12 GMT+0000 (Coordinated Universal Time)
331
+ at Thu Nov 25 2021 12:28:23 GMT+0000 (Coordinated Universal Time)
332
332
  </div>
333
333
  </div>
334
334
  <script src="../prettify.js"></script>
@@ -85,7 +85,7 @@ exports.isWebhookEndpoint = ctx =&gt; {
85
85
  <div class='footer quiet pad2 space-top1 center small'>
86
86
  Code coverage generated by
87
87
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
88
- at Fri Nov 12 2021 13:13:12 GMT+0000 (Coordinated Universal Time)
88
+ at Thu Nov 25 2021 12:28:23 GMT+0000 (Coordinated Universal Time)
89
89
  </div>
90
90
  </div>
91
91
  <script src="../prettify.js"></script>