@budibase/server 1.0.123-alpha.0 → 1.0.123

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 (330) hide show
  1. package/builder/assets/index.68a7f4e3.css +6 -0
  2. package/builder/assets/index.8d4a5b33.js +1291 -0
  3. package/builder/assets/{vendor.5240f480.js → vendor.8e34a169.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +1763 -758
  6. package/coverage/coverage-final.json +43 -28
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +3 -8
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +4 -9
  9. package/coverage/lcov-report/api/controllers/application.js.html +1436 -0
  10. package/coverage/lcov-report/api/controllers/auth.js.html +3 -8
  11. package/coverage/lcov-report/api/controllers/automation.js.html +3 -8
  12. package/coverage/lcov-report/api/controllers/backup.js.html +3 -8
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +3 -8
  14. package/coverage/lcov-report/api/controllers/component.js.html +3 -8
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +6 -11
  16. package/coverage/lcov-report/api/controllers/dev.js.html +3 -8
  17. package/coverage/lcov-report/api/controllers/index.html +26 -16
  18. package/coverage/lcov-report/api/controllers/integration.js.html +3 -8
  19. package/coverage/lcov-report/api/controllers/layout.js.html +3 -8
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +3 -8
  21. package/coverage/lcov-report/api/controllers/migrations.js.html +3 -8
  22. package/coverage/lcov-report/api/controllers/permission.js.html +3 -8
  23. package/coverage/lcov-report/api/controllers/query/index.html +26 -16
  24. package/coverage/lcov-report/api/controllers/query/index.js.html +713 -0
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +3 -8
  26. package/coverage/lcov-report/api/controllers/role.js.html +5 -10
  27. package/coverage/lcov-report/api/controllers/routing.js.html +4 -9
  28. package/coverage/lcov-report/api/controllers/row/external.js.html +3 -8
  29. package/coverage/lcov-report/api/controllers/row/index.html +35 -25
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +524 -0
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +24 -32
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +16 -21
  33. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +19 -24
  34. package/coverage/lcov-report/api/controllers/row/utils.js.html +19 -33
  35. package/coverage/lcov-report/api/controllers/screen.js.html +4 -9
  36. package/coverage/lcov-report/api/controllers/script.js.html +3 -8
  37. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +50 -55
  38. package/coverage/lcov-report/api/controllers/table/external.js.html +3 -8
  39. package/coverage/lcov-report/api/controllers/table/index.html +44 -19
  40. package/coverage/lcov-report/api/controllers/table/index.js.html +15 -20
  41. package/coverage/lcov-report/api/controllers/table/internal.js.html +620 -0
  42. package/coverage/lcov-report/api/controllers/table/utils.js.html +1331 -0
  43. package/coverage/lcov-report/api/controllers/templates.js.html +3 -8
  44. package/coverage/lcov-report/api/controllers/user.js.html +3 -8
  45. package/coverage/lcov-report/api/controllers/view/exporters.js.html +3 -8
  46. package/coverage/lcov-report/api/controllers/view/index.html +3 -8
  47. package/coverage/lcov-report/api/controllers/view/index.js.html +5 -10
  48. package/coverage/lcov-report/api/controllers/view/utils.js.html +3 -8
  49. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -8
  50. package/coverage/lcov-report/api/controllers/webhook.js.html +5 -10
  51. package/coverage/lcov-report/api/index.html +13 -18
  52. package/coverage/lcov-report/api/index.js.html +8 -28
  53. package/coverage/lcov-report/api/routes/analytics.js.html +3 -8
  54. package/coverage/lcov-report/api/routes/apikeys.js.html +3 -8
  55. package/coverage/lcov-report/api/routes/application.js.html +179 -0
  56. package/coverage/lcov-report/api/routes/auth.js.html +3 -8
  57. package/coverage/lcov-report/api/routes/automation.js.html +3 -8
  58. package/coverage/lcov-report/api/routes/backup.js.html +3 -8
  59. package/coverage/lcov-report/api/routes/cloud.js.html +3 -8
  60. package/coverage/lcov-report/api/routes/component.js.html +3 -8
  61. package/coverage/lcov-report/api/routes/datasource.js.html +3 -8
  62. package/coverage/lcov-report/api/routes/deploy.js.html +3 -8
  63. package/coverage/lcov-report/api/routes/dev.js.html +4 -9
  64. package/coverage/lcov-report/api/routes/index.html +68 -13
  65. package/coverage/lcov-report/api/routes/index.js.html +266 -0
  66. package/coverage/lcov-report/api/routes/integration.js.html +3 -8
  67. package/coverage/lcov-report/api/routes/layout.js.html +3 -8
  68. package/coverage/lcov-report/api/routes/metadata.js.html +3 -8
  69. package/coverage/lcov-report/api/routes/migrations.js.html +3 -8
  70. package/coverage/lcov-report/api/routes/permission.js.html +3 -8
  71. package/coverage/lcov-report/api/routes/query.js.html +3 -8
  72. package/coverage/lcov-report/api/routes/role.js.html +3 -8
  73. package/coverage/lcov-report/api/routes/routing.js.html +3 -8
  74. package/coverage/lcov-report/api/routes/row.js.html +908 -0
  75. package/coverage/lcov-report/api/routes/screen.js.html +3 -8
  76. package/coverage/lcov-report/api/routes/script.js.html +3 -8
  77. package/coverage/lcov-report/{automations/steps/loop.js.html → api/routes/static.js.html} +80 -70
  78. package/coverage/lcov-report/api/routes/table.js.html +3 -8
  79. package/coverage/lcov-report/api/routes/templates.js.html +3 -8
  80. package/coverage/lcov-report/api/routes/user.js.html +3 -8
  81. package/coverage/lcov-report/api/routes/utils/index.html +3 -8
  82. package/coverage/lcov-report/api/routes/utils/validators.js.html +3 -8
  83. package/coverage/lcov-report/api/routes/view.js.html +3 -8
  84. package/coverage/lcov-report/api/routes/webhook.js.html +3 -8
  85. package/coverage/lcov-report/automations/actions.js.html +7 -21
  86. package/coverage/lcov-report/automations/automationUtils.js.html +23 -64
  87. package/coverage/lcov-report/automations/bullboard.js.html +3 -8
  88. package/coverage/lcov-report/automations/index.html +37 -27
  89. package/coverage/lcov-report/automations/index.js.html +3 -8
  90. package/coverage/lcov-report/automations/steps/bash.js.html +3 -8
  91. package/coverage/lcov-report/automations/steps/createRow.js.html +380 -0
  92. package/coverage/lcov-report/automations/steps/delay.js.html +3 -8
  93. package/coverage/lcov-report/automations/steps/deleteRow.js.html +347 -0
  94. package/coverage/lcov-report/automations/steps/discord.js.html +3 -8
  95. package/coverage/lcov-report/automations/steps/executeQuery.js.html +3 -8
  96. package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -8
  97. package/coverage/lcov-report/automations/steps/filter.js.html +3 -8
  98. package/coverage/lcov-report/automations/steps/index.html +41 -31
  99. package/coverage/lcov-report/automations/steps/integromat.js.html +3 -8
  100. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +4 -9
  101. package/coverage/lcov-report/automations/steps/queryRows.js.html +4 -9
  102. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +3 -8
  103. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -8
  104. package/coverage/lcov-report/automations/steps/slack.js.html +3 -8
  105. package/coverage/lcov-report/automations/steps/updateRow.js.html +3 -8
  106. package/coverage/lcov-report/automations/steps/utils.js.html +9 -14
  107. package/coverage/lcov-report/automations/steps/zapier.js.html +3 -8
  108. package/coverage/lcov-report/automations/triggerInfo/app.js.html +3 -8
  109. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +3 -8
  110. package/coverage/lcov-report/automations/triggerInfo/index.html +3 -8
  111. package/coverage/lcov-report/automations/triggerInfo/index.js.html +3 -8
  112. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +3 -8
  113. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +3 -8
  114. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +3 -8
  115. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +3 -8
  116. package/coverage/lcov-report/automations/triggers.js.html +11 -16
  117. package/coverage/lcov-report/automations/utils.js.html +665 -0
  118. package/coverage/lcov-report/block-navigation.js +0 -8
  119. package/coverage/lcov-report/constants/index.html +3 -8
  120. package/coverage/lcov-report/constants/index.js.html +42 -41
  121. package/coverage/lcov-report/constants/layouts.js.html +3 -8
  122. package/coverage/lcov-report/constants/screens.js.html +3 -8
  123. package/coverage/lcov-report/db/inMemoryView.js.html +3 -8
  124. package/coverage/lcov-report/db/index.html +3 -8
  125. package/coverage/lcov-report/db/index.js.html +4 -9
  126. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +23 -25
  127. package/coverage/lcov-report/db/linkedRows/index.html +12 -17
  128. package/coverage/lcov-report/db/linkedRows/index.js.html +17 -22
  129. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +7 -12
  130. package/coverage/lcov-report/db/newid.js.html +6 -11
  131. package/coverage/lcov-report/db/utils.js.html +79 -84
  132. package/coverage/lcov-report/events/AutomationEmitter.js.html +9 -14
  133. package/coverage/lcov-report/events/index.html +3 -8
  134. package/coverage/lcov-report/events/index.js.html +4 -9
  135. package/coverage/lcov-report/events/utils.js.html +13 -18
  136. package/coverage/lcov-report/index.html +132 -137
  137. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +3 -8
  138. package/coverage/lcov-report/integrations/tests/index.html +3 -8
  139. package/coverage/lcov-report/middleware/appInfo.js.html +3 -8
  140. package/coverage/lcov-report/middleware/authorized.js.html +458 -0
  141. package/coverage/lcov-report/middleware/builder.js.html +3 -8
  142. package/coverage/lcov-report/middleware/currentapp.js.html +15 -65
  143. package/coverage/lcov-report/middleware/index.html +50 -25
  144. package/coverage/lcov-report/middleware/joi-validator.js.html +4 -9
  145. package/coverage/lcov-report/middleware/publicApi.js.html +3 -8
  146. package/coverage/lcov-report/middleware/resourceId.js.html +3 -8
  147. package/coverage/lcov-report/middleware/selfhost.js.html +4 -9
  148. package/coverage/lcov-report/middleware/usageQuota.js.html +572 -0
  149. package/coverage/lcov-report/middleware/utils.js.html +3 -8
  150. package/coverage/lcov-report/sorter.js +0 -26
  151. package/coverage/lcov-report/threads/automation.js.html +90 -581
  152. package/coverage/lcov-report/threads/index.html +40 -30
  153. package/coverage/lcov-report/threads/index.js.html +296 -0
  154. package/coverage/lcov-report/threads/query.js.html +4 -9
  155. package/coverage/lcov-report/threads/utils.js.html +9 -17
  156. package/coverage/lcov-report/utilities/bcrypt.js.html +3 -8
  157. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -8
  158. package/coverage/lcov-report/utilities/centralPath.js.html +3 -8
  159. package/coverage/lcov-report/utilities/csvParser.js.html +5 -10
  160. package/coverage/lcov-report/utilities/global.js.html +4 -9
  161. package/coverage/lcov-report/utilities/index.html +3 -8
  162. package/coverage/lcov-report/utilities/index.js.html +6 -11
  163. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -32
  164. package/coverage/lcov-report/utilities/queue/index.html +7 -12
  165. package/coverage/lcov-report/utilities/routing/index.html +3 -8
  166. package/coverage/lcov-report/utilities/routing/index.js.html +3 -8
  167. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -32
  168. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +71 -67
  169. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +106 -27
  170. package/coverage/lcov-report/utilities/scriptRunner.js.html +3 -8
  171. package/coverage/lcov-report/utilities/security.js.html +4 -9
  172. package/coverage/lcov-report/utilities/statusCodes.js.html +3 -8
  173. package/coverage/lcov-report/utilities/usageQuota/index.html +34 -24
  174. package/coverage/lcov-report/utilities/usageQuota/index.js.html +359 -0
  175. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +39 -44
  176. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +3 -8
  177. package/coverage/lcov-report/utilities/users.js.html +3 -8
  178. package/coverage/lcov-report/utilities/workerRequests.js.html +4 -9
  179. package/coverage/lcov.info +3061 -1290
  180. package/dist/api/controllers/application.js +73 -145
  181. package/dist/api/controllers/deploy/index.js +36 -68
  182. package/dist/api/controllers/public/applications.js +9 -29
  183. package/dist/api/controllers/public/queries.js +7 -27
  184. package/dist/api/controllers/public/rows.js +12 -32
  185. package/dist/api/controllers/public/tables.js +2 -2
  186. package/dist/api/controllers/public/users.js +8 -8
  187. package/dist/api/controllers/public/utils.js +1 -1
  188. package/dist/api/controllers/query/import/index.js +3 -3
  189. package/dist/api/controllers/query/index.js +44 -57
  190. package/dist/api/controllers/row/ExternalRequest.js +27 -27
  191. package/dist/api/controllers/row/index.js +60 -83
  192. package/dist/api/controllers/row/internal.js +1 -2
  193. package/dist/api/controllers/row/utils.js +1 -2
  194. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -3
  195. package/dist/api/controllers/table/bulkFormula.js +1 -2
  196. package/dist/api/controllers/table/internal.js +55 -40
  197. package/dist/api/controllers/table/utils.js +229 -271
  198. package/dist/api/index.js +0 -5
  199. package/dist/api/routes/application.js +13 -39
  200. package/dist/api/routes/index.js +56 -61
  201. package/dist/api/routes/public/index.js +9 -6
  202. package/dist/api/routes/public/queries.js +1 -1
  203. package/dist/api/routes/public/rows.js +1 -1
  204. package/dist/api/routes/public/tables.js +3 -3
  205. package/dist/api/routes/public/users.js +1 -1
  206. package/dist/api/routes/row.js +17 -43
  207. package/dist/api/routes/static.js +13 -40
  208. package/dist/api/routes/tests/utilities/TestFunctions.js +33 -75
  209. package/dist/app.js +4 -8
  210. package/dist/automations/actions.js +0 -3
  211. package/dist/automations/automationUtils.js +0 -10
  212. package/dist/automations/steps/createRow.js +12 -12
  213. package/dist/automations/steps/deleteRow.js +16 -13
  214. package/dist/automations/tests/utilities/index.js +11 -13
  215. package/dist/automations/utils.js +133 -187
  216. package/dist/constants/index.js +7 -5
  217. package/dist/db/linkedRows/LinkController.js +1 -0
  218. package/dist/definitions/datasource.js +0 -1
  219. package/dist/environment.js +3 -2
  220. package/dist/index.js +0 -4
  221. package/dist/integrations/base/sql.js +2 -2
  222. package/dist/integrations/base/sqlTable.js +2 -2
  223. package/dist/integrations/googlesheets.js +1 -1
  224. package/dist/integrations/index.js +0 -4
  225. package/dist/integrations/microsoftSqlServer.js +8 -8
  226. package/dist/integrations/mysql.js +9 -9
  227. package/dist/integrations/oracle.js +7 -7
  228. package/dist/integrations/postgres.js +7 -7
  229. package/dist/integrations/queries/sql.js +2 -2
  230. package/dist/integrations/rest.js +1 -1
  231. package/dist/middleware/authorized.js +51 -51
  232. package/dist/middleware/currentapp.js +1 -15
  233. package/dist/middleware/usageQuota.js +154 -0
  234. package/dist/migrations/functions/appUrls.js +1 -1
  235. package/dist/migrations/functions/quotas1.js +2 -6
  236. package/dist/migrations/functions/usageQuotas/index.js +4 -0
  237. package/dist/migrations/functions/usageQuotas/syncApps.js +7 -4
  238. package/dist/migrations/functions/usageQuotas/syncRows.js +8 -5
  239. package/dist/migrations/index.js +1 -17
  240. package/dist/package.json +4 -10
  241. package/dist/threads/automation.js +27 -149
  242. package/dist/threads/index.js +10 -36
  243. package/dist/threads/utils.js +0 -1
  244. package/dist/tsconfig.tsbuildinfo +1 -0
  245. package/dist/utilities/queue/inMemoryQueue.js +1 -6
  246. package/dist/utilities/rowProcessor/index.js +11 -6
  247. package/dist/utilities/rowProcessor/utils.js +27 -1
  248. package/dist/utilities/usageQuota/index.js +86 -0
  249. package/nodemon.json +1 -1
  250. package/package.json +9 -15
  251. package/scripts/dev/manage.js +0 -2
  252. package/src/api/controllers/{application.ts → application.js} +51 -118
  253. package/src/api/controllers/deploy/{index.ts → index.js} +29 -53
  254. package/src/api/controllers/public/applications.ts +2 -2
  255. package/src/api/controllers/public/queries.ts +1 -1
  256. package/src/api/controllers/public/rows.ts +1 -1
  257. package/src/api/controllers/query/{index.ts → index.js} +48 -51
  258. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  259. package/src/api/controllers/row/{index.ts → index.js} +17 -24
  260. package/src/api/controllers/row/internal.js +1 -2
  261. package/src/api/controllers/row/utils.js +1 -4
  262. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -3
  263. package/src/api/controllers/table/bulkFormula.js +1 -1
  264. package/src/api/controllers/table/{internal.ts → internal.js} +48 -27
  265. package/src/api/controllers/table/{utils.ts → utils.js} +69 -86
  266. package/src/api/index.js +0 -5
  267. package/src/api/routes/{application.ts → application.js} +14 -8
  268. package/src/api/routes/index.js +62 -0
  269. package/src/api/routes/public/index.ts +4 -1
  270. package/src/api/routes/{row.ts → row.js} +15 -7
  271. package/src/api/routes/{static.ts → static.js} +11 -11
  272. package/src/api/routes/tests/misc.spec.js +37 -39
  273. package/src/api/routes/tests/routing.spec.js +0 -1
  274. package/src/api/routes/tests/utilities/{TestFunctions.ts → TestFunctions.js} +33 -57
  275. package/src/app.ts +2 -1
  276. package/src/automations/actions.js +0 -3
  277. package/src/automations/automationUtils.js +0 -12
  278. package/src/automations/steps/{createRow.ts → createRow.js} +15 -9
  279. package/src/automations/steps/{deleteRow.ts → deleteRow.js} +16 -10
  280. package/src/automations/tests/automation.spec.js +1 -0
  281. package/src/automations/tests/{createRow.spec.ts → createRow.spec.js} +15 -4
  282. package/src/automations/tests/{deleteRow.spec.ts → deleteRow.spec.js} +5 -3
  283. package/src/automations/tests/utilities/index.js +10 -12
  284. package/src/automations/{utils.ts → utils.js} +28 -39
  285. package/src/constants/index.js +8 -6
  286. package/src/db/linkedRows/LinkController.js +1 -0
  287. package/src/definitions/datasource.ts +0 -1
  288. package/src/environment.js +3 -2
  289. package/src/index.ts +0 -3
  290. package/src/integrations/index.ts +0 -4
  291. package/src/middleware/{authorized.ts → authorized.js} +14 -20
  292. package/src/middleware/currentapp.js +1 -16
  293. package/src/middleware/tests/usageQuota.spec.js +120 -0
  294. package/src/middleware/usageQuota.js +164 -0
  295. package/src/migrations/functions/tests/quotas1.spec.js +2 -0
  296. package/src/migrations/functions/usageQuotas/index.ts +5 -0
  297. package/src/migrations/functions/usageQuotas/syncApps.ts +6 -3
  298. package/src/migrations/functions/usageQuotas/syncRows.ts +6 -3
  299. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +41 -0
  300. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +45 -0
  301. package/src/migrations/index.ts +1 -13
  302. package/src/threads/automation.js +34 -196
  303. package/src/threads/{index.ts → index.js} +14 -18
  304. package/src/threads/utils.js +0 -1
  305. package/src/utilities/queue/inMemoryQueue.js +1 -7
  306. package/src/utilities/rowProcessor/index.js +12 -9
  307. package/src/utilities/rowProcessor/utils.js +29 -1
  308. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  309. package/src/utilities/usageQuota/index.js +93 -0
  310. package/tsconfig.json +2 -2
  311. package/builder/assets/index.89795487.css +0 -6
  312. package/builder/assets/index.be9a1b80.js +0 -1299
  313. package/dist/automations/steps/loop.js +0 -51
  314. package/dist/integrations/redis.js +0 -158
  315. package/dist/migrations/functions/developerQuota.js +0 -49
  316. package/dist/migrations/functions/publishedAppsQuota.js +0 -47
  317. package/dist/migrations/functions/usageQuotas/syncDevelopers.js +0 -24
  318. package/dist/migrations/functions/usageQuotas/syncPublishedApps.js +0 -26
  319. package/dist/tsconfig.build.tsbuildinfo +0 -1
  320. package/src/api/routes/index.ts +0 -60
  321. package/src/automations/steps/loop.js +0 -50
  322. package/src/integrations/redis.ts +0 -152
  323. package/src/integrations/tests/redis.spec.js +0 -60
  324. package/src/migrations/functions/developerQuota.ts +0 -15
  325. package/src/migrations/functions/publishedAppsQuota.ts +0 -13
  326. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +0 -19
  327. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +0 -21
  328. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts +0 -34
  329. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +0 -40
  330. package/tsconfig.build.json +0 -10
@@ -1,18 +1,20 @@
1
- import Deployment from "./Deployment"
2
- import {
1
+ const Deployment = require("./Deployment")
2
+ const {
3
3
  Replication,
4
4
  getProdAppID,
5
5
  getDevelopmentAppID,
6
- } from "@budibase/backend-core/db"
7
- import { DocumentTypes, getAutomationParams } from "../../../db/utils"
8
- import { disableAllCrons, enableCronTrigger } from "../../../automations/utils"
9
- import { app as appCache } from "@budibase/backend-core/cache"
10
- import {
6
+ } = require("@budibase/backend-core/db")
7
+ const { DocumentTypes, getAutomationParams } = require("../../../db/utils")
8
+ const {
9
+ disableAllCrons,
10
+ enableCronTrigger,
11
+ } = require("../../../automations/utils")
12
+ const { app: appCache } = require("@budibase/backend-core/cache")
13
+ const {
11
14
  getAppId,
12
15
  getAppDB,
13
16
  getProdAppDB,
14
- } from "@budibase/backend-core/context"
15
- import { quotas } from "@budibase/pro"
17
+ } = require("@budibase/backend-core/context")
16
18
 
17
19
  // the max time we can wait for an invalidation to complete before considering it failed
18
20
  const MAX_PENDING_TIME_MS = 30 * 60000
@@ -23,10 +25,9 @@ const DeploymentStatus = {
23
25
  }
24
26
 
25
27
  // checks that deployments are in a good state, any pending will be updated
26
- async function checkAllDeployments(deployments: any) {
28
+ async function checkAllDeployments(deployments) {
27
29
  let updated = false
28
- let deployment: any
29
- for (deployment of Object.values(deployments.history)) {
30
+ for (let deployment of Object.values(deployments.history)) {
30
31
  // check that no deployments have crashed etc and are now stuck
31
32
  if (
32
33
  deployment.status === DeploymentStatus.PENDING &&
@@ -40,7 +41,7 @@ async function checkAllDeployments(deployments: any) {
40
41
  return { updated, deployments }
41
42
  }
42
43
 
43
- async function storeDeploymentHistory(deployment: any) {
44
+ async function storeDeploymentHistory(deployment) {
44
45
  const deploymentJSON = deployment.getJSON()
45
46
  const db = getAppDB()
46
47
 
@@ -69,7 +70,7 @@ async function storeDeploymentHistory(deployment: any) {
69
70
  return deployment
70
71
  }
71
72
 
72
- async function initDeployedApp(prodAppId: any) {
73
+ async function initDeployedApp(prodAppId) {
73
74
  const db = getProdAppDB()
74
75
  console.log("Reading automation docs")
75
76
  const automations = (
@@ -78,7 +79,7 @@ async function initDeployedApp(prodAppId: any) {
78
79
  include_docs: true,
79
80
  })
80
81
  )
81
- ).rows.map((row: any) => row.doc)
82
+ ).rows.map(row => row.doc)
82
83
  console.log("You have " + automations.length + " automations")
83
84
  const promises = []
84
85
  console.log("Disabling prod crons..")
@@ -92,27 +93,21 @@ async function initDeployedApp(prodAppId: any) {
92
93
  console.log("Enabled cron triggers for deployed app..")
93
94
  }
94
95
 
95
- async function deployApp(deployment: any) {
96
+ async function deployApp(deployment) {
96
97
  let replication
97
98
  try {
98
99
  const appId = getAppId()
99
100
  const devAppId = getDevelopmentAppID(appId)
100
101
  const productionAppId = getProdAppID(appId)
101
-
102
- const config: any = {
102
+ replication = new Replication({
103
103
  source: devAppId,
104
104
  target: productionAppId,
105
- }
106
- replication = new Replication(config)
107
-
105
+ })
108
106
  console.log("Replication object created")
109
107
  await replication.replicate()
110
108
  console.log("replication complete.. replacing app meta doc")
111
109
  const db = getProdAppDB()
112
110
  const appDoc = await db.get(DocumentTypes.APP_METADATA)
113
-
114
- deployment.appUrl = appDoc.url
115
-
116
111
  appDoc.appId = productionAppId
117
112
  appDoc.instance._id = productionAppId
118
113
  await db.put(appDoc)
@@ -122,7 +117,7 @@ async function deployApp(deployment: any) {
122
117
  console.log("Deployed app initialised, setting deployment to successful")
123
118
  deployment.setStatus(DeploymentStatus.SUCCESS)
124
119
  await storeDeploymentHistory(deployment)
125
- } catch (err: any) {
120
+ } catch (err) {
126
121
  deployment.setStatus(DeploymentStatus.FAILURE, err.message)
127
122
  await storeDeploymentHistory(deployment)
128
123
  throw {
@@ -130,17 +125,18 @@ async function deployApp(deployment: any) {
130
125
  message: `Deployment Failed: ${err.message}`,
131
126
  }
132
127
  } finally {
133
- if (replication) {
134
- await replication.close()
135
- }
128
+ await replication.close()
136
129
  }
137
130
  }
138
131
 
139
- export async function fetchDeployments(ctx: any) {
132
+ exports.fetchDeployments = async function (ctx) {
140
133
  try {
141
134
  const db = getAppDB()
142
135
  const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
143
- const { updated, deployments } = await checkAllDeployments(deploymentDoc)
136
+ const { updated, deployments } = await checkAllDeployments(
137
+ deploymentDoc,
138
+ ctx.user
139
+ )
144
140
  if (updated) {
145
141
  await db.put(deployments)
146
142
  }
@@ -150,7 +146,7 @@ export async function fetchDeployments(ctx: any) {
150
146
  }
151
147
  }
152
148
 
153
- export async function deploymentProgress(ctx: any) {
149
+ exports.deploymentProgress = async function (ctx) {
154
150
  try {
155
151
  const db = getAppDB()
156
152
  const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
@@ -163,20 +159,7 @@ export async function deploymentProgress(ctx: any) {
163
159
  }
164
160
  }
165
161
 
166
- const isFirstDeploy = async () => {
167
- try {
168
- const db = getProdAppDB()
169
- await db.get(DocumentTypes.APP_METADATA)
170
- } catch (e: any) {
171
- if (e.status === 404) {
172
- return true
173
- }
174
- throw e
175
- }
176
- return false
177
- }
178
-
179
- const _deployApp = async function (ctx: any) {
162
+ exports.deployApp = async function (ctx) {
180
163
  let deployment = new Deployment()
181
164
  console.log("Deployment object created")
182
165
  deployment.setStatus(DeploymentStatus.PENDING)
@@ -185,14 +168,7 @@ const _deployApp = async function (ctx: any) {
185
168
  console.log("Stored deployment history")
186
169
 
187
170
  console.log("Deploying app...")
188
-
189
- if (await isFirstDeploy()) {
190
- await quotas.addPublishedApp(() => deployApp(deployment))
191
- } else {
192
- await deployApp(deployment)
193
- }
171
+ await deployApp(deployment)
194
172
 
195
173
  ctx.body = deployment
196
174
  }
197
-
198
- export { _deployApp as deployApp }
@@ -1,7 +1,7 @@
1
1
  const { getAllApps } = require("@budibase/backend-core/db")
2
2
  const { updateAppId } = require("@budibase/backend-core/context")
3
3
  import { search as stringSearch } from "./utils"
4
- import * as controller from "../application"
4
+ import { default as controller } from "../application"
5
5
  import { Application } from "../../../definitions/common"
6
6
 
7
7
  function fixAppID(app: Application, params: any) {
@@ -59,7 +59,7 @@ export async function destroy(ctx: any, next: any) {
59
59
  // get the app before deleting it
60
60
  await setResponseApp(ctx)
61
61
  const body = ctx.body
62
- await controller.destroy(ctx)
62
+ await controller.delete(ctx)
63
63
  // overwrite the body again
64
64
  ctx.body = body
65
65
  await next()
@@ -1,5 +1,5 @@
1
1
  import { search as stringSearch } from "./utils"
2
- import * as queryController from "../query"
2
+ import { default as queryController } from "../query"
3
3
 
4
4
  export async function search(ctx: any, next: any) {
5
5
  await queryController.fetch(ctx)
@@ -1,4 +1,4 @@
1
- import * as rowController from "../row"
1
+ import { default as rowController } from "../row"
2
2
  import { addRev } from "./utils"
3
3
  import { Row } from "../../../definitions/common"
4
4
  import { convertBookmark } from "../../../utilities"
@@ -1,19 +1,22 @@
1
- import { generateQueryID, getQueryParams, isProdAppID } from "../../../db/utils"
2
- import { BaseQueryVerbs } from "../../../constants"
3
- import { Thread, ThreadType } from "../../../threads"
4
- import { save as saveDatasource } from "../datasource"
5
- import { RestImporter } from "./import"
6
- import { invalidateDynamicVariables } from "../../../threads/utils"
7
- import { QUERY_THREAD_TIMEOUT } from "../../../environment"
8
- import { getAppDB } from "@budibase/backend-core/context"
9
- import { quotas } from "@budibase/pro"
1
+ const {
2
+ generateQueryID,
3
+ getQueryParams,
4
+ isProdAppID,
5
+ } = require("../../../db/utils")
6
+ const { BaseQueryVerbs } = require("../../../constants")
7
+ const { Thread, ThreadType } = require("../../../threads")
8
+ const { save: saveDatasource } = require("../datasource")
9
+ const { RestImporter } = require("./import")
10
+ const { invalidateDynamicVariables } = require("../../../threads/utils")
11
+ const environment = require("../../../environment")
12
+ const { getAppDB } = require("@budibase/backend-core/context")
10
13
 
11
14
  const Runner = new Thread(ThreadType.QUERY, {
12
- timeoutMs: QUERY_THREAD_TIMEOUT || 10000,
15
+ timeoutMs: environment.QUERY_THREAD_TIMEOUT || 10000,
13
16
  })
14
17
 
15
18
  // simple function to append "readable" to all read queries
16
- function enrichQueries(input: any) {
19
+ function enrichQueries(input) {
17
20
  const wasArray = Array.isArray(input)
18
21
  const queries = wasArray ? input : [input]
19
22
  for (let query of queries) {
@@ -24,7 +27,7 @@ function enrichQueries(input: any) {
24
27
  return wasArray ? queries : queries[0]
25
28
  }
26
29
 
27
- export async function fetch(ctx: any) {
30
+ exports.fetch = async function (ctx) {
28
31
  const db = getAppDB()
29
32
 
30
33
  const body = await db.allDocs(
@@ -33,10 +36,10 @@ export async function fetch(ctx: any) {
33
36
  })
34
37
  )
35
38
 
36
- ctx.body = enrichQueries(body.rows.map((row: any) => row.doc))
39
+ ctx.body = enrichQueries(body.rows.map(row => row.doc))
37
40
  }
38
41
 
39
- const _import = async (ctx: any) => {
42
+ exports.import = async ctx => {
40
43
  const body = ctx.request.body
41
44
  const data = body.data
42
45
 
@@ -46,7 +49,7 @@ const _import = async (ctx: any) => {
46
49
  let datasourceId
47
50
  if (!body.datasourceId) {
48
51
  // construct new datasource
49
- const info: any = await importer.getInfo()
52
+ const info = await importer.getInfo()
50
53
  let datasource = {
51
54
  type: "datasource",
52
55
  source: "REST",
@@ -74,9 +77,8 @@ const _import = async (ctx: any) => {
74
77
  }
75
78
  ctx.status = 200
76
79
  }
77
- export { _import as import }
78
80
 
79
- export async function save(ctx: any) {
81
+ exports.save = async function (ctx) {
80
82
  const db = getAppDB()
81
83
  const query = ctx.request.body
82
84
 
@@ -91,7 +93,7 @@ export async function save(ctx: any) {
91
93
  ctx.message = `Query ${query.name} saved successfully.`
92
94
  }
93
95
 
94
- export async function find(ctx: any) {
96
+ exports.find = async function (ctx) {
95
97
  const db = getAppDB()
96
98
  const query = enrichQueries(await db.get(ctx.params.queryId))
97
99
  // remove properties that could be dangerous in real app
@@ -102,7 +104,7 @@ export async function find(ctx: any) {
102
104
  ctx.body = query
103
105
  }
104
106
 
105
- export async function preview(ctx: any) {
107
+ exports.preview = async function (ctx) {
106
108
  const db = getAppDB()
107
109
 
108
110
  const datasource = await db.get(ctx.request.body.datasourceId)
@@ -112,18 +114,16 @@ export async function preview(ctx: any) {
112
114
  ctx.request.body
113
115
 
114
116
  try {
115
- const runFn = () =>
116
- Runner.run({
117
- appId: ctx.appId,
118
- datasource,
119
- queryVerb,
120
- fields,
121
- parameters,
122
- transformer,
123
- queryId,
124
- })
125
-
126
- const { rows, keys, info, extra } = await quotas.addQuery(runFn)
117
+ const { rows, keys, info, extra } = await Runner.run({
118
+ appId: ctx.appId,
119
+ datasource,
120
+ queryVerb,
121
+ fields,
122
+ parameters,
123
+ transformer,
124
+ queryId,
125
+ })
126
+
127
127
  ctx.body = {
128
128
  rows,
129
129
  schemaFields: [...new Set(keys)],
@@ -135,7 +135,7 @@ export async function preview(ctx: any) {
135
135
  }
136
136
  }
137
137
 
138
- async function execute(ctx: any, opts = { rowsOnly: false }) {
138
+ async function execute(ctx, opts = { rowsOnly: false }) {
139
139
  const db = getAppDB()
140
140
 
141
141
  const query = await db.get(ctx.params.queryId)
@@ -153,19 +153,16 @@ async function execute(ctx: any, opts = { rowsOnly: false }) {
153
153
 
154
154
  // call the relevant CRUD method on the integration class
155
155
  try {
156
- const runFn = () =>
157
- Runner.run({
158
- appId: ctx.appId,
159
- datasource,
160
- queryVerb: query.queryVerb,
161
- fields: query.fields,
162
- pagination: ctx.request.body.pagination,
163
- parameters: enrichedParameters,
164
- transformer: query.transformer,
165
- queryId: ctx.params.queryId,
166
- })
167
-
168
- const { rows, pagination, extra } = await quotas.addQuery(runFn)
156
+ const { rows, pagination, extra } = await Runner.run({
157
+ appId: ctx.appId,
158
+ datasource,
159
+ queryVerb: query.queryVerb,
160
+ fields: query.fields,
161
+ pagination: ctx.request.body.pagination,
162
+ parameters: enrichedParameters,
163
+ transformer: query.transformer,
164
+ queryId: ctx.params.queryId,
165
+ })
169
166
  if (opts && opts.rowsOnly) {
170
167
  ctx.body = rows
171
168
  } else {
@@ -176,15 +173,15 @@ async function execute(ctx: any, opts = { rowsOnly: false }) {
176
173
  }
177
174
  }
178
175
 
179
- export async function executeV1(ctx: any) {
176
+ exports.executeV1 = async function (ctx) {
180
177
  return execute(ctx, { rowsOnly: true })
181
178
  }
182
179
 
183
- export async function executeV2(ctx: any) {
180
+ exports.executeV2 = async function (ctx) {
184
181
  return execute(ctx, { rowsOnly: false })
185
182
  }
186
183
 
187
- const removeDynamicVariables = async (queryId: any) => {
184
+ const removeDynamicVariables = async queryId => {
188
185
  const db = getAppDB()
189
186
  const query = await db.get(queryId)
190
187
  const datasource = await db.get(query.datasourceId)
@@ -193,19 +190,19 @@ const removeDynamicVariables = async (queryId: any) => {
193
190
  if (dynamicVariables) {
194
191
  // delete dynamic variables from the datasource
195
192
  datasource.config.dynamicVariables = dynamicVariables.filter(
196
- (dv: any) => dv.queryId !== queryId
193
+ dv => dv.queryId !== queryId
197
194
  )
198
195
  await db.put(datasource)
199
196
 
200
197
  // invalidate the deleted variables
201
198
  const variablesToDelete = dynamicVariables.filter(
202
- (dv: any) => dv.queryId === queryId
199
+ dv => dv.queryId === queryId
203
200
  )
204
201
  await invalidateDynamicVariables(variablesToDelete)
205
202
  }
206
203
  }
207
204
 
208
- export async function destroy(ctx: any) {
205
+ exports.destroy = async function (ctx) {
209
206
  const db = getAppDB()
210
207
  await removeDynamicVariables(ctx.params.queryId)
211
208
  await db.remove(ctx.params.queryId, ctx.params.revId)
@@ -52,7 +52,7 @@ interface RunConfig {
52
52
 
53
53
  module External {
54
54
  function buildFilters(
55
- id: string | undefined | string[],
55
+ id: string | undefined,
56
56
  filters: SearchFilters,
57
57
  table: Table
58
58
  ) {
@@ -1,16 +1,15 @@
1
- import { quotas } from "@budibase/pro"
2
- import internal from "./internal"
3
- import external from "./external"
4
- import { isExternalTable } from "../../../integrations/utils"
1
+ const internal = require("./internal")
2
+ const external = require("./external")
3
+ const { isExternalTable } = require("../../../integrations/utils")
5
4
 
6
- function pickApi(tableId: any) {
5
+ function pickApi(tableId) {
7
6
  if (isExternalTable(tableId)) {
8
7
  return external
9
8
  }
10
9
  return internal
11
10
  }
12
11
 
13
- function getTableId(ctx: any) {
12
+ function getTableId(ctx) {
14
13
  if (ctx.request.body && ctx.request.body.tableId) {
15
14
  return ctx.request.body.tableId
16
15
  }
@@ -22,13 +21,13 @@ function getTableId(ctx: any) {
22
21
  }
23
22
  }
24
23
 
25
- export async function patch(ctx: any): Promise<any> {
24
+ exports.patch = async ctx => {
26
25
  const appId = ctx.appId
27
26
  const tableId = getTableId(ctx)
28
27
  const body = ctx.request.body
29
28
  // if it doesn't have an _id then its save
30
29
  if (body && !body._id) {
31
- return save(ctx)
30
+ return exports.save(ctx)
32
31
  }
33
32
  try {
34
33
  const { row, table } = await pickApi(tableId).patch(ctx)
@@ -42,13 +41,13 @@ export async function patch(ctx: any): Promise<any> {
42
41
  }
43
42
  }
44
43
 
45
- const saveRow = async (ctx: any) => {
44
+ exports.save = async function (ctx) {
46
45
  const appId = ctx.appId
47
46
  const tableId = getTableId(ctx)
48
47
  const body = ctx.request.body
49
48
  // if it has an ID already then its a patch
50
49
  if (body && body._id) {
51
- return patch(ctx)
50
+ return exports.patch(ctx)
52
51
  }
53
52
  try {
54
53
  const { row, table } = await pickApi(tableId).save(ctx)
@@ -61,11 +60,7 @@ const saveRow = async (ctx: any) => {
61
60
  }
62
61
  }
63
62
 
64
- export async function save(ctx: any) {
65
- await quotas.addRow(() => saveRow(ctx))
66
- }
67
-
68
- export async function fetchView(ctx: any) {
63
+ exports.fetchView = async function (ctx) {
69
64
  const tableId = getTableId(ctx)
70
65
  try {
71
66
  ctx.body = await pickApi(tableId).fetchView(ctx)
@@ -74,7 +69,7 @@ export async function fetchView(ctx: any) {
74
69
  }
75
70
  }
76
71
 
77
- export async function fetch(ctx: any) {
72
+ exports.fetch = async function (ctx) {
78
73
  const tableId = getTableId(ctx)
79
74
  try {
80
75
  ctx.body = await pickApi(tableId).fetch(ctx)
@@ -83,7 +78,7 @@ export async function fetch(ctx: any) {
83
78
  }
84
79
  }
85
80
 
86
- export async function find(ctx: any) {
81
+ exports.find = async function (ctx) {
87
82
  const tableId = getTableId(ctx)
88
83
  try {
89
84
  ctx.body = await pickApi(tableId).find(ctx)
@@ -92,21 +87,19 @@ export async function find(ctx: any) {
92
87
  }
93
88
  }
94
89
 
95
- export async function destroy(ctx: any) {
90
+ exports.destroy = async function (ctx) {
96
91
  const appId = ctx.appId
97
92
  const inputs = ctx.request.body
98
93
  const tableId = getTableId(ctx)
99
94
  let response, row
100
95
  if (inputs.rows) {
101
96
  let { rows } = await pickApi(tableId).bulkDestroy(ctx)
102
- await quotas.removeRows(rows.length)
103
97
  response = rows
104
98
  for (let row of rows) {
105
99
  ctx.eventEmitter && ctx.eventEmitter.emitRow(`row:delete`, appId, row)
106
100
  }
107
101
  } else {
108
102
  let resp = await pickApi(tableId).destroy(ctx)
109
- await quotas.removeRow()
110
103
  response = resp.response
111
104
  row = resp.row
112
105
  ctx.eventEmitter && ctx.eventEmitter.emitRow(`row:delete`, appId, row)
@@ -117,7 +110,7 @@ export async function destroy(ctx: any) {
117
110
  ctx.body = response
118
111
  }
119
112
 
120
- export async function search(ctx: any) {
113
+ exports.search = async ctx => {
121
114
  const tableId = getTableId(ctx)
122
115
  try {
123
116
  ctx.status = 200
@@ -127,7 +120,7 @@ export async function search(ctx: any) {
127
120
  }
128
121
  }
129
122
 
130
- export async function validate(ctx: any) {
123
+ exports.validate = async function (ctx) {
131
124
  const tableId = getTableId(ctx)
132
125
  try {
133
126
  ctx.body = await pickApi(tableId).validate(ctx)
@@ -136,7 +129,7 @@ export async function validate(ctx: any) {
136
129
  }
137
130
  }
138
131
 
139
- export async function fetchEnrichedRow(ctx: any) {
132
+ exports.fetchEnrichedRow = async function (ctx) {
140
133
  const tableId = getTableId(ctx)
141
134
  try {
142
135
  ctx.body = await pickApi(tableId).fetchEnrichedRow(ctx)
@@ -145,7 +138,7 @@ export async function fetchEnrichedRow(ctx: any) {
145
138
  }
146
139
  }
147
140
 
148
- export const exportRows = async (ctx: any) => {
141
+ exports.export = async function (ctx) {
149
142
  const tableId = getTableId(ctx)
150
143
  try {
151
144
  ctx.body = await pickApi(tableId).exportRows(ctx)
@@ -260,9 +260,8 @@ exports.find = async ctx => {
260
260
 
261
261
  exports.destroy = async function (ctx) {
262
262
  const db = getAppDB()
263
- const { _id } = ctx.request.body
263
+ const { _id, _rev } = ctx.request.body
264
264
  let row = await db.get(_id)
265
- let _rev = ctx.request.body._rev || row._rev
266
265
 
267
266
  if (row.tableId !== ctx.params.tableId) {
268
267
  throw "Supplied tableId doesn't match the row's tableId"
@@ -65,10 +65,7 @@ exports.validate = async ({ tableId, row, table }) => {
65
65
  if (type === FieldTypes.ARRAY && row[fieldName]) {
66
66
  if (row[fieldName].length) {
67
67
  row[fieldName].map(val => {
68
- if (
69
- !constraints.inclusion.includes(val) &&
70
- constraints.inclusion.length !== 0
71
- ) {
68
+ if (!constraints.inclusion.includes(val)) {
72
69
  errors[fieldName] = "Field not in list"
73
70
  }
74
71
  })
@@ -78,9 +78,6 @@
78
78
  app.
79
79
  </h2>
80
80
  </div>
81
- <script type="application/javascript">
82
- window.INIT_TIME = Date.now()
83
- </script>
84
81
  <script type="application/javascript" src={clientLibPath}>
85
82
  </script>
86
83
  <script type="application/javascript">
@@ -25,7 +25,7 @@ function getFormulaThatUseColumn(table, columnNames) {
25
25
  if (!isStaticFormula(column)) {
26
26
  continue
27
27
  }
28
- if (!doesContainStrings(column?.formula ?? "", columnNames)) {
28
+ if (!doesContainStrings(column.formula, columnNames)) {
29
29
  continue
30
30
  }
31
31
  formula.push(column.name)