@budibase/server 1.0.49-alpha.6 → 1.0.49

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 (376) hide show
  1. package/__mocks__/arangojs.ts +1 -1
  2. package/__mocks__/aws-sdk.ts +4 -4
  3. package/__mocks__/mongodb.ts +5 -4
  4. package/__mocks__/mssql.ts +3 -3
  5. package/__mocks__/node-fetch.ts +1 -2
  6. package/__mocks__/pg.ts +5 -3
  7. package/builder/assets/{index.1b905242.js → index.2c37968e.js} +231 -234
  8. package/builder/assets/index.39e01193.css +1 -0
  9. package/builder/assets/{vendor.d526bfe8.js → vendor.f9faf6ab.js} +12 -12
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +2816 -3119
  12. package/coverage/coverage-final.json +101 -106
  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 +152 -257
  16. package/coverage/lcov-report/api/controllers/auth.js.html +13 -22
  17. package/coverage/lcov-report/api/controllers/automation.js.html +69 -39
  18. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/cloud.js.html +11 -8
  20. package/coverage/lcov-report/api/controllers/component.js.html +16 -13
  21. package/coverage/lcov-report/api/controllers/datasource.js.html +51 -81
  22. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  23. package/coverage/lcov-report/{utilities/usageQuota/usageQuoteReset.js.html → api/controllers/hosting.js.html} +48 -36
  24. package/coverage/lcov-report/api/controllers/index.html +76 -76
  25. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  27. package/coverage/lcov-report/api/controllers/metadata.js.html +21 -6
  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 +35 -38
  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 +10 -7
  34. package/coverage/lcov-report/api/controllers/row/external.js.html +27 -21
  35. package/coverage/lcov-report/api/controllers/row/index.html +34 -49
  36. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  37. package/coverage/lcov-report/api/controllers/row/internal.js.html +226 -118
  38. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +34 -52
  39. package/coverage/lcov-report/api/controllers/row/utils.js.html +62 -47
  40. package/coverage/lcov-report/api/controllers/screen.js.html +21 -15
  41. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  42. package/coverage/lcov-report/api/controllers/table/external.js.html +34 -25
  43. package/coverage/lcov-report/api/controllers/table/index.html +43 -58
  44. package/coverage/lcov-report/api/controllers/table/index.js.html +82 -58
  45. package/coverage/lcov-report/api/controllers/table/internal.js.html +66 -81
  46. package/coverage/lcov-report/api/controllers/table/utils.js.html +110 -218
  47. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/user.js.html +50 -47
  49. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  50. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  51. package/coverage/lcov-report/api/controllers/view/index.js.html +33 -27
  52. package/coverage/lcov-report/api/controllers/view/utils.js.html +20 -35
  53. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  54. package/coverage/lcov-report/api/controllers/webhook.js.html +28 -34
  55. package/coverage/lcov-report/api/index.html +1 -1
  56. package/coverage/lcov-report/api/index.js.html +8 -8
  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 +1 -1
  68. package/coverage/lcov-report/api/routes/{migrations.js.html → hosting.js.html} +14 -17
  69. package/coverage/lcov-report/api/routes/index.html +18 -18
  70. package/coverage/lcov-report/api/routes/index.js.html +3 -3
  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 +1 -1
  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 -17
  82. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  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 +24 -24
  88. package/coverage/lcov-report/automations/automationUtils.js.html +10 -7
  89. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  90. package/coverage/lcov-report/automations/index.html +18 -18
  91. package/coverage/lcov-report/automations/index.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  93. package/coverage/lcov-report/automations/steps/createRow.js.html +22 -13
  94. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  95. package/coverage/lcov-report/automations/steps/deleteRow.js.html +20 -11
  96. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  97. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  98. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  99. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  100. package/coverage/lcov-report/automations/steps/index.html +13 -13
  101. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  102. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  103. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  104. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  105. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  106. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  107. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  108. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  109. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  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 +55 -61
  119. package/coverage/lcov-report/automations/utils.js.html +42 -54
  120. package/coverage/lcov-report/constants/index.html +5 -5
  121. package/coverage/lcov-report/constants/index.js.html +26 -53
  122. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  123. package/coverage/lcov-report/constants/screens.js.html +4 -4
  124. package/coverage/lcov-report/db/client.js.html +18 -18
  125. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  126. package/coverage/lcov-report/db/index.html +15 -15
  127. package/coverage/lcov-report/db/index.js.html +3 -3
  128. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +37 -25
  129. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  130. package/coverage/lcov-report/db/linkedRows/index.js.html +96 -51
  131. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
  132. package/coverage/lcov-report/db/newid.js.html +4 -4
  133. package/coverage/lcov-report/db/utils.js.html +87 -87
  134. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  135. package/coverage/lcov-report/events/index.html +1 -1
  136. package/coverage/lcov-report/events/index.js.html +5 -5
  137. package/coverage/lcov-report/events/utils.js.html +3 -3
  138. package/coverage/lcov-report/index.html +120 -135
  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 +1 -1
  142. package/coverage/lcov-report/middleware/authorized.js.html +65 -173
  143. package/coverage/lcov-report/middleware/builder.js.html +10 -10
  144. package/coverage/lcov-report/middleware/currentapp.js.html +83 -95
  145. package/coverage/lcov-report/middleware/index.html +38 -38
  146. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  147. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  148. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  149. package/coverage/lcov-report/middleware/usageQuota.js.html +53 -281
  150. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  151. package/coverage/lcov-report/threads/automation.js.html +24 -30
  152. package/coverage/lcov-report/threads/index.html +26 -26
  153. package/coverage/lcov-report/threads/index.js.html +10 -10
  154. package/coverage/lcov-report/threads/query.js.html +26 -62
  155. package/coverage/lcov-report/threads/utils.js.html +14 -14
  156. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  157. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  158. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  159. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  160. package/coverage/lcov-report/utilities/global.js.html +49 -58
  161. package/coverage/lcov-report/utilities/index.html +37 -37
  162. package/coverage/lcov-report/utilities/index.js.html +73 -43
  163. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  164. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  165. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  166. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  167. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  168. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +103 -97
  169. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +27 -75
  170. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  171. package/coverage/lcov-report/utilities/security.js.html +8 -8
  172. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  173. package/coverage/lcov-report/utilities/users.js.html +9 -9
  174. package/coverage/lcov-report/utilities/workerRequests.js.html +112 -43
  175. package/coverage/lcov.info +4423 -5022
  176. package/dist/api/controllers/application.js +60 -90
  177. package/dist/api/controllers/auth.js +5 -8
  178. package/dist/api/controllers/automation.js +19 -14
  179. package/dist/api/controllers/cloud.js +3 -2
  180. package/dist/api/controllers/component.js +4 -3
  181. package/dist/api/controllers/datasource.js +10 -20
  182. package/dist/api/controllers/deploy/Deployment.js +6 -3
  183. package/dist/api/controllers/deploy/index.js +13 -12
  184. package/dist/api/controllers/dev.js +5 -5
  185. package/dist/api/controllers/hosting.js +30 -0
  186. package/dist/api/controllers/layout.js +3 -3
  187. package/dist/api/controllers/metadata.js +4 -4
  188. package/dist/api/controllers/permission.js +4 -4
  189. package/dist/api/controllers/query/import/index.js +6 -4
  190. package/dist/api/controllers/query/index.js +10 -11
  191. package/dist/api/controllers/role.js +5 -5
  192. package/dist/api/controllers/routing.js +6 -5
  193. package/dist/api/controllers/row/ExternalRequest.js +63 -76
  194. package/dist/api/controllers/row/external.js +4 -4
  195. package/dist/api/controllers/row/internal.js +93 -55
  196. package/dist/api/controllers/row/internalSearch.js +17 -23
  197. package/dist/api/controllers/row/utils.js +14 -13
  198. package/dist/api/controllers/screen.js +7 -5
  199. package/dist/api/controllers/static/index.js +12 -61
  200. package/dist/api/controllers/table/external.js +10 -7
  201. package/dist/api/controllers/table/index.js +13 -16
  202. package/dist/api/controllers/table/internal.js +16 -22
  203. package/dist/api/controllers/table/utils.js +35 -62
  204. package/dist/api/controllers/user.js +20 -18
  205. package/dist/api/controllers/view/index.js +10 -8
  206. package/dist/api/controllers/view/utils.js +4 -9
  207. package/dist/api/controllers/webhook.js +8 -10
  208. package/dist/api/routes/hosting.js +11 -0
  209. package/dist/api/routes/index.js +2 -2
  210. package/dist/api/routes/static.js +1 -2
  211. package/dist/api/routes/tests/utilities/TestFunctions.js +17 -37
  212. package/dist/app.js +5 -35
  213. package/dist/automations/automationUtils.js +3 -2
  214. package/dist/automations/steps/createRow.js +5 -3
  215. package/dist/automations/steps/deleteRow.js +4 -1
  216. package/dist/automations/steps/updateRow.js +1 -1
  217. package/dist/automations/triggers.js +25 -27
  218. package/dist/automations/utils.js +5 -10
  219. package/dist/constants/index.js +0 -7
  220. package/dist/db/linkedRows/LinkController.js +7 -3
  221. package/dist/db/linkedRows/index.js +27 -16
  222. package/dist/db/linkedRows/linkUtils.js +6 -6
  223. package/dist/db/views/staticViews.js +10 -9
  224. package/dist/definitions/datasource.js +0 -1
  225. package/dist/environment.js +1 -4
  226. package/dist/integrations/base/sql.js +6 -13
  227. package/dist/integrations/index.js +0 -3
  228. package/dist/integrations/utils.js +9 -60
  229. package/dist/middleware/authorized.js +30 -57
  230. package/dist/middleware/builder.js +2 -2
  231. package/dist/middleware/currentapp.js +37 -41
  232. package/dist/middleware/usageQuota.js +15 -82
  233. package/dist/package.json +5 -8
  234. package/dist/tests/utilities/TestConfiguration.js +50 -80
  235. package/dist/threads/automation.js +11 -13
  236. package/dist/threads/query.js +13 -23
  237. package/dist/tsconfig.tsbuildinfo +1 -1
  238. package/dist/utilities/fileSystem/index.js +3 -4
  239. package/dist/utilities/global.js +12 -15
  240. package/dist/utilities/index.js +17 -7
  241. package/dist/utilities/routing/index.js +5 -5
  242. package/dist/utilities/rowProcessor/index.js +17 -23
  243. package/dist/utilities/rowProcessor/utils.js +4 -14
  244. package/dist/utilities/{usageQuota/index.js → usageQuota.js} +31 -45
  245. package/dist/utilities/users.js +3 -3
  246. package/dist/utilities/workerRequests.js +24 -4
  247. package/nodemon.json +1 -1
  248. package/package.json +6 -9
  249. package/scripts/likeCypress.ts +1 -1
  250. package/src/api/controllers/application.js +50 -85
  251. package/src/api/controllers/auth.js +5 -8
  252. package/src/api/controllers/automation.js +23 -13
  253. package/src/api/controllers/cloud.js +3 -2
  254. package/src/api/controllers/component.js +4 -3
  255. package/src/api/controllers/datasource.js +11 -21
  256. package/src/api/controllers/deploy/Deployment.js +7 -3
  257. package/src/api/controllers/deploy/index.js +13 -20
  258. package/src/api/controllers/dev.js +5 -5
  259. package/src/api/controllers/hosting.js +22 -0
  260. package/src/api/controllers/layout.js +3 -3
  261. package/src/api/controllers/metadata.js +9 -4
  262. package/src/api/controllers/permission.js +4 -4
  263. package/src/api/controllers/query/import/index.ts +6 -4
  264. package/src/api/controllers/query/import/tests/index.spec.js +1 -2
  265. package/src/api/controllers/query/index.js +10 -11
  266. package/src/api/controllers/role.js +5 -5
  267. package/src/api/controllers/routing.js +6 -5
  268. package/src/api/controllers/row/ExternalRequest.ts +42 -53
  269. package/src/api/controllers/row/external.js +6 -4
  270. package/src/api/controllers/row/internal.js +90 -54
  271. package/src/api/controllers/row/internalSearch.js +17 -23
  272. package/src/api/controllers/row/utils.js +18 -13
  273. package/src/api/controllers/screen.js +7 -5
  274. package/src/api/controllers/static/index.js +12 -65
  275. package/src/api/controllers/table/external.js +10 -7
  276. package/src/api/controllers/table/index.js +28 -20
  277. package/src/api/controllers/table/internal.js +19 -24
  278. package/src/api/controllers/table/utils.js +42 -78
  279. package/src/api/controllers/user.js +20 -19
  280. package/src/api/controllers/view/index.js +10 -8
  281. package/src/api/controllers/view/utils.js +4 -9
  282. package/src/api/controllers/webhook.js +8 -10
  283. package/src/api/routes/hosting.js +13 -0
  284. package/src/api/routes/index.js +2 -2
  285. package/src/api/routes/static.js +0 -5
  286. package/src/api/routes/tests/application.spec.js +2 -2
  287. package/src/api/routes/tests/auth.spec.js +2 -1
  288. package/src/api/routes/tests/automation.spec.js +0 -1
  289. package/src/api/routes/tests/hosting.spec.js +36 -0
  290. package/src/api/routes/tests/misc.spec.js +1 -0
  291. package/src/api/routes/tests/routing.spec.js +12 -21
  292. package/src/api/routes/tests/row.spec.js +4 -7
  293. package/src/api/routes/tests/utilities/TestFunctions.js +17 -39
  294. package/src/app.ts +5 -18
  295. package/src/automations/automationUtils.js +3 -2
  296. package/src/automations/steps/createRow.js +5 -2
  297. package/src/automations/steps/deleteRow.js +4 -1
  298. package/src/automations/steps/updateRow.js +1 -1
  299. package/src/automations/triggers.js +31 -33
  300. package/src/automations/utils.js +5 -9
  301. package/src/constants/index.js +0 -9
  302. package/src/db/linkedRows/LinkController.js +7 -3
  303. package/src/db/linkedRows/index.js +31 -16
  304. package/src/db/linkedRows/linkUtils.js +6 -6
  305. package/src/db/tests/linkController.spec.js +1 -0
  306. package/src/db/tests/linkTests.spec.js +6 -5
  307. package/src/db/views/staticViews.js +10 -8
  308. package/src/definitions/common.ts +0 -3
  309. package/src/definitions/datasource.ts +0 -3
  310. package/src/environment.js +1 -4
  311. package/src/integrations/base/sql.ts +7 -14
  312. package/src/integrations/index.ts +0 -3
  313. package/src/integrations/tests/sql.spec.js +0 -16
  314. package/src/integrations/utils.ts +12 -75
  315. package/src/middleware/authorized.js +30 -66
  316. package/src/middleware/builder.js +2 -2
  317. package/src/middleware/currentapp.js +46 -50
  318. package/src/middleware/tests/authorized.spec.js +6 -13
  319. package/src/middleware/tests/currentapp.spec.js +0 -6
  320. package/src/middleware/tests/usageQuota.spec.js +24 -18
  321. package/src/middleware/usageQuota.js +17 -93
  322. package/src/tests/utilities/TestConfiguration.js +55 -82
  323. package/src/threads/automation.js +15 -17
  324. package/src/threads/query.js +14 -26
  325. package/src/utilities/fileSystem/index.js +3 -4
  326. package/src/utilities/global.js +12 -15
  327. package/src/utilities/index.js +17 -7
  328. package/src/utilities/routing/index.js +5 -5
  329. package/src/utilities/rowProcessor/index.js +27 -25
  330. package/src/utilities/rowProcessor/utils.js +7 -23
  331. package/src/utilities/usageQuota.js +73 -0
  332. package/src/utilities/users.js +3 -3
  333. package/src/utilities/workerRequests.js +27 -4
  334. package/builder/assets/index.83c0944f.css +0 -1
  335. package/coverage/lcov-report/api/controllers/migrations.js.html +0 -119
  336. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +0 -548
  337. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +0 -599
  338. package/coverage/lcov-report/utilities/usageQuota/index.html +0 -141
  339. package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
  340. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +0 -305
  341. package/dist/api/controllers/migrations.js +0 -21
  342. package/dist/api/controllers/row/staticFormula.js +0 -147
  343. package/dist/api/controllers/table/bulkFormula.js +0 -159
  344. package/dist/api/routes/migrations.js +0 -9
  345. package/dist/integrations/googlesheets.js +0 -340
  346. package/dist/migrations/functions/appUrls.js +0 -46
  347. package/dist/migrations/functions/quotas1.js +0 -50
  348. package/dist/migrations/functions/usageQuotas/index.js +0 -20
  349. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -30
  350. package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
  351. package/dist/migrations/functions/userEmailViewCasing.js +0 -24
  352. package/dist/migrations/index.js +0 -62
  353. package/dist/utilities/usageQuota/rows.js +0 -78
  354. package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
  355. package/src/api/controllers/migrations.js +0 -13
  356. package/src/api/controllers/row/staticFormula.js +0 -156
  357. package/src/api/controllers/table/bulkFormula.js +0 -173
  358. package/src/api/routes/migrations.js +0 -14
  359. package/src/api/routes/tests/static.spec.js +0 -98
  360. package/src/integrations/googlesheets.ts +0 -353
  361. package/src/migrations/functions/appUrls.ts +0 -34
  362. package/src/migrations/functions/quotas1.ts +0 -20
  363. package/src/migrations/functions/tests/appUrls.spec.js +0 -29
  364. package/src/migrations/functions/tests/quotas1.spec.js +0 -27
  365. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +0 -25
  366. package/src/migrations/functions/usageQuotas/index.ts +0 -8
  367. package/src/migrations/functions/usageQuotas/syncApps.ts +0 -19
  368. package/src/migrations/functions/usageQuotas/syncRows.ts +0 -22
  369. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
  370. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
  371. package/src/migrations/functions/userEmailViewCasing.ts +0 -13
  372. package/src/migrations/index.ts +0 -56
  373. package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
  374. package/src/utilities/usageQuota/index.js +0 -93
  375. package/src/utilities/usageQuota/rows.js +0 -75
  376. package/src/utilities/usageQuota/usageQuoteReset.js +0 -18
@@ -11,9 +11,9 @@ const { generateUserMetadataID, isDevAppID } = require("../db/utils")
11
11
  const { dbExists } = require("@budibase/backend-core/db")
12
12
  const { isUserInAppTenant } = require("@budibase/backend-core/tenancy")
13
13
  const { getCachedSelf } = require("../utilities/global")
14
+ const CouchDB = require("../db")
14
15
  const env = require("../environment")
15
16
  const { isWebhookEndpoint } = require("./utils")
16
- const { doInAppContext } = require("@budibase/backend-core/context")
17
17
 
18
18
  module.exports = async (ctx, next) => {
19
19
  // try to get the appID from the request
@@ -31,7 +31,7 @@ module.exports = async (ctx, next) => {
31
31
  // check the app exists referenced in cookie
32
32
  if (appCookie) {
33
33
  const appId = appCookie.appId
34
- const exists = await dbExists(appId)
34
+ const exists = await dbExists(CouchDB, appId)
35
35
  if (!exists) {
36
36
  clearCookie(ctx, Cookies.CurrentApp)
37
37
  return next()
@@ -41,15 +41,13 @@ module.exports = async (ctx, next) => {
41
41
  }
42
42
 
43
43
  // deny access to application preview
44
- if (!env.isTest()) {
45
- if (
46
- isDevAppID(requestAppId) &&
47
- !isWebhookEndpoint(ctx) &&
48
- (!ctx.user || !ctx.user.builder || !ctx.user.builder.global)
49
- ) {
50
- clearCookie(ctx, Cookies.CurrentApp)
51
- return ctx.redirect("/")
52
- }
44
+ if (
45
+ isDevAppID(requestAppId) &&
46
+ !isWebhookEndpoint(ctx) &&
47
+ (!ctx.user || !ctx.user.builder || !ctx.user.builder.global)
48
+ ) {
49
+ clearCookie(ctx, Cookies.CurrentApp)
50
+ return ctx.redirect("/")
53
51
  }
54
52
 
55
53
  let appId,
@@ -70,46 +68,44 @@ module.exports = async (ctx, next) => {
70
68
  return next()
71
69
  }
72
70
 
73
- return doInAppContext(appId, async () => {
74
- let noCookieSet = false
75
- // if the user not in the right tenant then make sure they have no permissions
76
- // need to judge this only based on the request app ID,
77
- if (
78
- env.MULTI_TENANCY &&
79
- ctx.user &&
80
- requestAppId &&
81
- !isUserInAppTenant(requestAppId)
82
- ) {
83
- // don't error, simply remove the users rights (they are a public user)
84
- delete ctx.user.builder
85
- delete ctx.user.admin
86
- delete ctx.user.roles
87
- roleId = BUILTIN_ROLE_IDS.PUBLIC
88
- noCookieSet = true
89
- }
71
+ let noCookieSet = false
72
+ // if the user not in the right tenant then make sure they have no permissions
73
+ // need to judge this only based on the request app ID,
74
+ if (
75
+ env.MULTI_TENANCY &&
76
+ ctx.user &&
77
+ requestAppId &&
78
+ !isUserInAppTenant(requestAppId)
79
+ ) {
80
+ // don't error, simply remove the users rights (they are a public user)
81
+ delete ctx.user.builder
82
+ delete ctx.user.admin
83
+ delete ctx.user.roles
84
+ roleId = BUILTIN_ROLE_IDS.PUBLIC
85
+ noCookieSet = true
86
+ }
90
87
 
91
- ctx.appId = appId
92
- if (roleId) {
93
- ctx.roleId = roleId
94
- const userId = ctx.user ? generateUserMetadataID(ctx.user._id) : null
95
- ctx.user = {
96
- ...ctx.user,
97
- // override userID with metadata one
98
- _id: userId,
99
- userId,
100
- roleId,
101
- role: await getRole(roleId),
102
- }
103
- }
104
- if (
105
- (requestAppId !== appId ||
106
- appCookie == null ||
107
- appCookie.appId !== requestAppId) &&
108
- !noCookieSet
109
- ) {
110
- setCookie(ctx, { appId }, Cookies.CurrentApp)
88
+ ctx.appId = appId
89
+ if (roleId) {
90
+ ctx.roleId = roleId
91
+ const userId = ctx.user ? generateUserMetadataID(ctx.user._id) : null
92
+ ctx.user = {
93
+ ...ctx.user,
94
+ // override userID with metadata one
95
+ _id: userId,
96
+ userId,
97
+ roleId,
98
+ role: await getRole(appId, roleId),
111
99
  }
100
+ }
101
+ if (
102
+ (requestAppId !== appId ||
103
+ appCookie == null ||
104
+ appCookie.appId !== requestAppId) &&
105
+ !noCookieSet
106
+ ) {
107
+ setCookie(ctx, { appId }, Cookies.CurrentApp)
108
+ }
112
109
 
113
- return next()
114
- })
110
+ return next()
115
111
  }
@@ -11,33 +11,26 @@ const authorizedMiddleware = require("../authorized")
11
11
  const env = require("../../environment")
12
12
  const { PermissionTypes, PermissionLevels } = require("@budibase/backend-core/permissions")
13
13
  require("@budibase/backend-core").init(require("../../db"))
14
- const { doInAppContext } = require("@budibase/backend-core/context")
15
-
16
- const APP_ID = ""
17
14
 
18
15
  class TestConfiguration {
19
16
  constructor(role) {
20
17
  this.middleware = authorizedMiddleware(role)
21
18
  this.next = jest.fn()
22
19
  this.throw = jest.fn()
23
- this.headers = {}
24
20
  this.ctx = {
25
21
  headers: {},
26
22
  request: {
27
23
  url: ""
28
24
  },
29
- appId: APP_ID,
25
+ appId: "",
30
26
  auth: {},
31
27
  next: this.next,
32
- throw: this.throw,
33
- get: (name) => this.headers[name],
28
+ throw: this.throw
34
29
  }
35
30
  }
36
31
 
37
32
  executeMiddleware() {
38
- return doInAppContext(APP_ID, () => {
39
- return this.middleware(this.ctx, this.next)
40
- })
33
+ return this.middleware(this.ctx, this.next)
41
34
  }
42
35
 
43
36
  setUser(user) {
@@ -53,7 +46,7 @@ class TestConfiguration {
53
46
  }
54
47
 
55
48
  setAuthenticated(isAuthed) {
56
- this.ctx.isAuthenticated = isAuthed
49
+ this.ctx.auth = { authenticated: isAuthed }
57
50
  }
58
51
 
59
52
  setRequestUrl(url) {
@@ -114,7 +107,7 @@ describe("Authorization middleware", () => {
114
107
  expect(config.next).toHaveBeenCalled()
115
108
  })
116
109
 
117
- it("throws if the user does not have builder permissions", async () => {
110
+ it("throws if the user has only builder permissions", async () => {
118
111
  config.setEnvironment(false)
119
112
  config.setMiddlewareRequiredPermission(PermissionTypes.BUILDER)
120
113
  config.setUser({
@@ -140,7 +133,7 @@ describe("Authorization middleware", () => {
140
133
  expect(config.next).toHaveBeenCalled()
141
134
  })
142
135
 
143
- it("throws if the user session is not authenticated", async () => {
136
+ it("throws if the user session is not authenticated after permission checks", async () => {
144
137
  config.setUser({
145
138
  role: {
146
139
  _id: ""
@@ -1,11 +1,6 @@
1
1
  mockAuthWithNoCookie()
2
2
  mockWorker()
3
3
 
4
- jest.mock("@budibase/backend-core/db", () => ({
5
- ...jest.requireActual("@budibase/backend-core/db"),
6
- dbExists: () => true,
7
- }))
8
-
9
4
  function mockWorker() {
10
5
  jest.mock("../../utilities/workerRequests", () => ({
11
6
  getGlobalSelf: () => {
@@ -55,7 +50,6 @@ function mockAuthWithCookie() {
55
50
  return "app_test"
56
51
  },
57
52
  setCookie: jest.fn(),
58
- clearCookie: jest.fn(),
59
53
  getCookie: () => ({appId: "app_different", roleId: "PUBLIC"}),
60
54
  }))
61
55
  jest.mock("@budibase/backend-core/constants", () => ({
@@ -1,5 +1,11 @@
1
1
  jest.mock("../../db")
2
2
  jest.mock("../../utilities/usageQuota")
3
+ jest.mock("../../environment", () => ({
4
+ isTest: () => true,
5
+ isProd: () => false,
6
+ isDev: () => true,
7
+ _set: () => {},
8
+ }))
3
9
  jest.mock("@budibase/backend-core/tenancy", () => ({
4
10
  getTenantId: () => "testing123"
5
11
  }))
@@ -23,10 +29,9 @@ class TestConfiguration {
23
29
  },
24
30
  req: {
25
31
  method: "POST",
26
- url: "/applications"
32
+ url: "/rows"
27
33
  }
28
34
  }
29
- usageQuota.useQuotas = () => true
30
35
  }
31
36
 
32
37
  executeMiddleware() {
@@ -108,6 +113,7 @@ describe("usageQuota middleware", () => {
108
113
 
109
114
  it("calculates and persists the correct usage quota for the relevant action", async () => {
110
115
  config.setUrl("/rows")
116
+ config.setProd(true)
111
117
 
112
118
  await config.executeMiddleware()
113
119
 
@@ -115,20 +121,20 @@ describe("usageQuota middleware", () => {
115
121
  expect(config.next).toHaveBeenCalled()
116
122
  })
117
123
 
118
- // it("calculates the correct file size from a file upload call and adds it to quota", async () => {
119
- // config.setUrl("/upload")
120
- // config.setProd(true)
121
- // config.setFiles([
122
- // {
123
- // size: 100
124
- // },
125
- // {
126
- // size: 10000
127
- // },
128
- // ])
129
- // await config.executeMiddleware()
130
-
131
- // expect(usageQuota.update).toHaveBeenCalledWith("storage", 10100)
132
- // expect(config.next).toHaveBeenCalled()
133
- // })
124
+ it("calculates the correct file size from a file upload call and adds it to quota", async () => {
125
+ config.setUrl("/upload")
126
+ config.setProd(true)
127
+ config.setFiles([
128
+ {
129
+ size: 100
130
+ },
131
+ {
132
+ size: 10000
133
+ },
134
+ ])
135
+ await config.executeMiddleware()
136
+
137
+ expect(usageQuota.update).toHaveBeenCalledWith("storage", 10100)
138
+ expect(config.next).toHaveBeenCalled()
139
+ })
134
140
  })
@@ -1,10 +1,14 @@
1
+ const CouchDB = require("../db")
1
2
  const usageQuota = require("../utilities/usageQuota")
2
- const { getUniqueRows } = require("../utilities/usageQuota/rows")
3
+ const env = require("../environment")
4
+ const { getTenantId } = require("@budibase/backend-core/tenancy")
3
5
  const {
4
6
  isExternalTable,
5
7
  isRowId: isExternalRowId,
6
8
  } = require("../integrations/utils")
7
- const { getAppDB } = require("@budibase/backend-core/context")
9
+
10
+ // tenants without limits
11
+ const EXCLUDED_TENANTS = ["bb", "default", "bbtest", "bbstaging"]
8
12
 
9
13
  // currently only counting new writes and deletes
10
14
  const METHOD_MAP = {
@@ -14,13 +18,13 @@ const METHOD_MAP = {
14
18
 
15
19
  const DOMAIN_MAP = {
16
20
  rows: usageQuota.Properties.ROW,
17
- // upload: usageQuota.Properties.UPLOAD, // doesn't work yet
18
- // views: usageQuota.Properties.VIEW, // doesn't work yet
19
- // users: usageQuota.Properties.USER, // doesn't work yet
21
+ upload: usageQuota.Properties.UPLOAD,
22
+ views: usageQuota.Properties.VIEW,
23
+ users: usageQuota.Properties.USER,
20
24
  applications: usageQuota.Properties.APPS,
21
25
  // this will not be updated by endpoint calls
22
26
  // instead it will be updated by triggerInfo
23
- // automationRuns: usageQuota.Properties.AUTOMATION, // doesn't work yet
27
+ automationRuns: usageQuota.Properties.AUTOMATION,
24
28
  }
25
29
 
26
30
  function getProperty(url) {
@@ -32,7 +36,10 @@ function getProperty(url) {
32
36
  }
33
37
 
34
38
  module.exports = async (ctx, next) => {
35
- if (!usageQuota.useQuotas()) {
39
+ const tenantId = getTenantId()
40
+
41
+ // if in development or a self hosted cloud usage quotas should not be executed
42
+ if (env.isDev() || env.SELF_HOSTED || EXCLUDED_TENANTS.includes(tenantId)) {
36
43
  return next()
37
44
  }
38
45
 
@@ -46,7 +53,7 @@ module.exports = async (ctx, next) => {
46
53
  const usageId = ctx.request.body._id
47
54
  try {
48
55
  if (ctx.appId) {
49
- const db = getAppDB()
56
+ const db = new CouchDB(ctx.appId)
50
57
  await db.get(usageId)
51
58
  }
52
59
  return next()
@@ -73,92 +80,9 @@ module.exports = async (ctx, next) => {
73
80
  usage = files.map(file => file.size).reduce((total, size) => total + size)
74
81
  }
75
82
  try {
76
- await performRequest(ctx, next, property, usage)
83
+ await usageQuota.update(property, usage)
84
+ return next()
77
85
  } catch (err) {
78
86
  ctx.throw(400, err)
79
87
  }
80
88
  }
81
-
82
- const performRequest = async (ctx, next, property, usage) => {
83
- const usageContext = {
84
- skipNext: false,
85
- skipUsage: false,
86
- [usageQuota.Properties.APPS]: {},
87
- }
88
-
89
- if (usage === -1) {
90
- if (PRE_DELETE[property]) {
91
- await PRE_DELETE[property](ctx, usageContext)
92
- }
93
- } else {
94
- if (PRE_CREATE[property]) {
95
- await PRE_CREATE[property](ctx, usageContext)
96
- }
97
- }
98
-
99
- // run the request
100
- if (!usageContext.skipNext) {
101
- await usageQuota.update(property, usage, { dryRun: true })
102
- await next()
103
- }
104
-
105
- if (usage === -1) {
106
- if (POST_DELETE[property]) {
107
- await POST_DELETE[property](ctx, usageContext)
108
- }
109
- } else {
110
- if (POST_CREATE[property]) {
111
- await POST_CREATE[property](ctx, usageContext)
112
- }
113
- }
114
-
115
- // update the usage
116
- if (!usageContext.skipUsage) {
117
- await usageQuota.update(property, usage)
118
- }
119
- }
120
-
121
- const appPreDelete = async (ctx, usageContext) => {
122
- if (ctx.query.unpublish) {
123
- // don't run usage decrement for unpublish
124
- usageContext.skipUsage = true
125
- return
126
- }
127
-
128
- // store the row count to delete
129
- const rows = await getUniqueRows([ctx.appId])
130
- if (rows.length) {
131
- usageContext[usageQuota.Properties.APPS] = { rowCount: rows.length }
132
- }
133
- }
134
-
135
- const appPostDelete = async (ctx, usageContext) => {
136
- // delete the app rows from usage
137
- const rowCount = usageContext[usageQuota.Properties.APPS].rowCount
138
- if (rowCount) {
139
- await usageQuota.update(usageQuota.Properties.ROW, -rowCount)
140
- }
141
- }
142
-
143
- const appPostCreate = async ctx => {
144
- // app import & template creation
145
- if (ctx.request.body.useTemplate === "true") {
146
- const rows = await getUniqueRows([ctx.response.body.appId])
147
- const rowCount = rows ? rows.length : 0
148
- await usageQuota.update(usageQuota.Properties.ROW, rowCount)
149
- }
150
- }
151
-
152
- const PRE_DELETE = {
153
- [usageQuota.Properties.APPS]: appPreDelete,
154
- }
155
-
156
- const POST_DELETE = {
157
- [usageQuota.Properties.APPS]: appPostDelete,
158
- }
159
-
160
- const PRE_CREATE = {}
161
-
162
- const POST_CREATE = {
163
- [usageQuota.Properties.APPS]: appPostCreate,
164
- }
@@ -1,6 +1,3 @@
1
- const core = require("@budibase/backend-core")
2
- const CouchDB = require("../../db")
3
- core.init(CouchDB)
4
1
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
5
2
  const env = require("../../environment")
6
3
  const {
@@ -20,15 +17,15 @@ const supertest = require("supertest")
20
17
  const { cleanup } = require("../../utilities/fileSystem")
21
18
  const { Cookies, Headers } = require("@budibase/backend-core/constants")
22
19
  const { jwt } = require("@budibase/backend-core/auth")
20
+ const core = require("@budibase/backend-core")
23
21
  const { getGlobalDB } = require("@budibase/backend-core/tenancy")
24
22
  const { createASession } = require("@budibase/backend-core/sessions")
25
23
  const { user: userCache } = require("@budibase/backend-core/cache")
26
- const newid = require("../../db/newid")
27
- const context = require("@budibase/backend-core/context")
24
+ const CouchDB = require("../../db")
25
+ core.init(CouchDB)
28
26
 
29
27
  const GLOBAL_USER_ID = "us_uuid1"
30
28
  const EMAIL = "babs@babs.com"
31
- const CSRF_TOKEN = "e3727778-7af0-4226-b5eb-f43cbe60a306"
32
29
 
33
30
  class TestConfiguration {
34
31
  constructor(openServer = true) {
@@ -51,10 +48,6 @@ class TestConfiguration {
51
48
  return this.appId
52
49
  }
53
50
 
54
- getCouch() {
55
- return CouchDB
56
- }
57
-
58
51
  async _req(config, params, controlFunc) {
59
52
  const request = {}
60
53
  // fake cookies, we don't need them
@@ -66,21 +59,11 @@ class TestConfiguration {
66
59
  request.request = {
67
60
  body: config,
68
61
  }
69
- async function run() {
70
- if (params) {
71
- request.params = params
72
- }
73
- await controlFunc(request)
74
- return request.body
75
- }
76
- // check if already in a context
77
- if (context.getAppId() == null) {
78
- return context.doInAppContext(this.appId, async () => {
79
- return run()
80
- })
81
- } else {
82
- return run()
62
+ if (params) {
63
+ request.params = params
83
64
  }
65
+ await controlFunc(request)
66
+ return request.body
84
67
  }
85
68
 
86
69
  async globalUser({
@@ -102,11 +85,7 @@ class TestConfiguration {
102
85
  roles: roles || {},
103
86
  tenantId: TENANT_ID,
104
87
  }
105
- await createASession(id, {
106
- sessionId: "sessionid",
107
- tenantId: TENANT_ID,
108
- csrfToken: CSRF_TOKEN,
109
- })
88
+ await createASession(id, { sessionId: "sessionid", tenantId: TENANT_ID })
110
89
  if (builder) {
111
90
  user.builder = { global: true }
112
91
  } else {
@@ -119,8 +98,7 @@ class TestConfiguration {
119
98
  }
120
99
  }
121
100
 
122
- // use a new id as the name to avoid name collisions
123
- async init(appName = newid()) {
101
+ async init(appName = "test_application") {
124
102
  await this.globalUser()
125
103
  return this.createApp(appName)
126
104
  }
@@ -153,7 +131,6 @@ class TestConfiguration {
153
131
  `${Cookies.Auth}=${authToken}`,
154
132
  `${Cookies.CurrentApp}=${appToken}`,
155
133
  ],
156
- [Headers.CSRF_TOKEN]: CSRF_TOKEN,
157
134
  }
158
135
  if (this.appId) {
159
136
  headers[Headers.APP_ID] = this.appId
@@ -186,7 +163,6 @@ class TestConfiguration {
186
163
  // create dev app
187
164
  this.app = await this._req({ name: appName }, null, controllers.app.create)
188
165
  this.appId = this.app.appId
189
- context.updateAppId(this.appId)
190
166
 
191
167
  // create production app
192
168
  this.prodApp = await this.deploy()
@@ -199,16 +175,14 @@ class TestConfiguration {
199
175
  }
200
176
 
201
177
  async deploy() {
202
- await this._req(null, null, controllers.deploy.deployApp)
203
- const prodAppId = this.getAppId().replace("_dev", "")
204
- return context.doInAppContext(prodAppId, async () => {
205
- const appPackage = await this._req(
206
- null,
207
- { appId: prodAppId },
208
- controllers.app.fetchAppPackage
209
- )
210
- return appPackage.application
211
- })
178
+ const deployment = await this._req(null, null, controllers.deploy.deployApp)
179
+ const prodAppId = deployment.appId.replace("_dev", "")
180
+ const appPackage = await this._req(
181
+ null,
182
+ { appId: prodAppId },
183
+ controllers.app.fetchAppPackage
184
+ )
185
+ return appPackage.application
212
186
  }
213
187
 
214
188
  async updateTable(config = null) {
@@ -437,47 +411,46 @@ class TestConfiguration {
437
411
 
438
412
  async login({ roleId, userId, builder, prodApp = false } = {}) {
439
413
  const appId = prodApp ? this.prodAppId : this.appId
440
- return context.doInAppContext(appId, async () => {
441
- userId = !userId ? `us_uuid1` : userId
442
- if (!this.request) {
443
- throw "Server has not been opened, cannot login."
444
- }
445
- // make sure the user exists in the global DB
446
- if (roleId !== BUILTIN_ROLE_IDS.PUBLIC) {
447
- await this.globalUser({
448
- id: userId,
449
- builder,
450
- roles: { [this.prodAppId]: roleId },
451
- })
452
- }
453
- await createASession(userId, {
454
- sessionId: "sessionid",
455
- tenantId: TENANT_ID,
456
- })
457
- // have to fake this
458
- const auth = {
414
+
415
+ userId = !userId ? `us_uuid1` : userId
416
+ if (!this.request) {
417
+ throw "Server has not been opened, cannot login."
418
+ }
419
+ // make sure the user exists in the global DB
420
+ if (roleId !== BUILTIN_ROLE_IDS.PUBLIC) {
421
+ await this.globalUser({
459
422
  userId,
460
- sessionId: "sessionid",
461
- tenantId: TENANT_ID,
462
- }
463
- const app = {
464
- roleId: roleId,
465
- appId,
466
- }
467
- const authToken = jwt.sign(auth, env.JWT_SECRET)
468
- const appToken = jwt.sign(app, env.JWT_SECRET)
469
-
470
- // returning necessary request headers
471
- await userCache.invalidateUser(userId)
472
- return {
473
- Accept: "application/json",
474
- Cookie: [
475
- `${Cookies.Auth}=${authToken}`,
476
- `${Cookies.CurrentApp}=${appToken}`,
477
- ],
478
- [Headers.APP_ID]: appId,
479
- }
423
+ builder,
424
+ roles: { [this.prodAppId]: roleId },
425
+ })
426
+ }
427
+ await createASession(userId, {
428
+ sessionId: "sessionid",
429
+ tenantId: TENANT_ID,
480
430
  })
431
+ // have to fake this
432
+ const auth = {
433
+ userId,
434
+ sessionId: "sessionid",
435
+ tenantId: TENANT_ID,
436
+ }
437
+ const app = {
438
+ roleId: roleId,
439
+ appId,
440
+ }
441
+ const authToken = jwt.sign(auth, env.JWT_SECRET)
442
+ const appToken = jwt.sign(app, env.JWT_SECRET)
443
+
444
+ // returning necessary request headers
445
+ await userCache.invalidateUser(userId)
446
+ return {
447
+ Accept: "application/json",
448
+ Cookie: [
449
+ `${Cookies.Auth}=${authToken}`,
450
+ `${Cookies.CurrentApp}=${appToken}`,
451
+ ],
452
+ [Headers.APP_ID]: appId,
453
+ }
481
454
  }
482
455
  }
483
456