@budibase/server 2.1.43-alpha.6 → 2.1.44

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 (809) hide show
  1. package/__mocks__/aws-sdk.ts +0 -14
  2. package/__mocks__/node-fetch.ts +1 -5
  3. package/builder/assets/index.2d05742a.js +1021 -0
  4. package/builder/assets/index.534f6c29.css +6 -0
  5. package/builder/index.html +2 -2
  6. package/coverage/clover.xml +3857 -10913
  7. package/coverage/coverage-final.json +118 -267
  8. package/coverage/lcov-report/{src/api/controllers/apikeys.ts.html → api/controllers/apikeys.js.html} +30 -30
  9. package/coverage/lcov-report/{src/api/controllers/automation.ts.html → api/controllers/automation.js.html} +99 -99
  10. package/coverage/lcov-report/{src/api/controllers/cloud.ts.html → api/controllers/cloud.js.html} +58 -58
  11. package/coverage/lcov-report/{src/api/controllers/datasource.ts.html → api/controllers/datasource.js.html} +107 -287
  12. package/coverage/lcov-report/{src/api/controllers/dev.ts.html → api/controllers/dev.js.html} +87 -69
  13. package/coverage/lcov-report/api/controllers/index.html +326 -0
  14. package/coverage/lcov-report/{src/middleware/selfhost.ts.html → api/controllers/integration.js.html} +28 -22
  15. package/coverage/lcov-report/{src/api/controllers/layout.ts.html → api/controllers/layout.js.html} +31 -31
  16. package/coverage/lcov-report/{src/api/controllers/metadata.ts.html → api/controllers/metadata.js.html} +30 -33
  17. package/coverage/lcov-report/{src/api/controllers/migrations.ts.html → api/controllers/migrations.js.html} +17 -20
  18. package/coverage/lcov-report/{src/api/controllers/permission.ts.html → api/controllers/permission.js.html} +79 -88
  19. package/coverage/lcov-report/{src/utilities/routing → api/controllers/query}/index.html +8 -8
  20. package/coverage/lcov-report/{src/api/controllers/query/validation.ts.html → api/controllers/query/validation.js.html} +25 -25
  21. package/coverage/lcov-report/{src/api/controllers/role.ts.html → api/controllers/role.js.html} +60 -48
  22. package/coverage/lcov-report/{src/api/controllers/routing.ts.html → api/controllers/routing.js.html} +58 -67
  23. package/coverage/lcov-report/{src/api/controllers/row/external.ts.html → api/controllers/row/external.js.html} +111 -162
  24. package/coverage/lcov-report/{src/api → api}/controllers/row/index.html +52 -82
  25. package/coverage/lcov-report/{src/api/controllers/row/internal.ts.html → api/controllers/row/internal.js.html} +121 -163
  26. package/coverage/lcov-report/{src/api/controllers/row/internalSearch.ts.html → api/controllers/row/internalSearch.js.html} +117 -189
  27. package/coverage/lcov-report/{src/api/controllers/row/staticFormula.ts.html → api/controllers/row/staticFormula.js.html} +58 -73
  28. package/coverage/lcov-report/{src/api/controllers/row/utils.ts.html → api/controllers/row/utils.js.html} +58 -88
  29. package/coverage/lcov-report/{src/api/controllers/script.ts.html → api/controllers/script.js.html} +16 -19
  30. package/coverage/lcov-report/{src/api/controllers/table/bulkFormula.ts.html → api/controllers/table/bulkFormula.js.html} +62 -104
  31. package/coverage/lcov-report/{src/api/controllers/table/external.ts.html → api/controllers/table/external.js.html} +111 -204
  32. package/coverage/lcov-report/{src/utilities/fileSystem → api/controllers/table}/index.html +44 -44
  33. package/coverage/lcov-report/{src/api/controllers/table/index.ts.html → api/controllers/table/index.js.html} +49 -58
  34. package/coverage/lcov-report/{src/api/controllers/templates.ts.html → api/controllers/templates.js.html} +29 -38
  35. package/coverage/lcov-report/{src/api/controllers/user.ts.html → api/controllers/user.js.html} +99 -93
  36. package/coverage/lcov-report/{src/api/controllers/view/exporters.ts.html → api/controllers/view/exporters.js.html} +16 -22
  37. package/coverage/lcov-report/{src/api → api}/controllers/view/index.html +36 -36
  38. package/coverage/lcov-report/{src/api/controllers/view/index.ts.html → api/controllers/view/index.js.html} +64 -91
  39. package/coverage/lcov-report/{src/api/controllers/view/utils.ts.html → api/controllers/view/utils.js.html} +54 -72
  40. package/coverage/lcov-report/{src/api/controllers/view/viewBuilder.ts.html → api/controllers/view/viewBuilder.js.html} +36 -78
  41. package/coverage/lcov-report/{src/api → api}/index.html +23 -23
  42. package/coverage/lcov-report/{src/api/index.ts.html → api/index.js.html} +76 -55
  43. package/coverage/lcov-report/{src/middleware/utils.ts.html → api/routes/analytics.js.html} +19 -19
  44. package/coverage/lcov-report/api/routes/apikeys.js.html +121 -0
  45. package/coverage/lcov-report/{src/api/routes/automation.ts.html → api/routes/automation.js.html} +47 -53
  46. package/coverage/lcov-report/{src/api/routes/backup.ts.html → api/routes/cloud.js.html} +28 -28
  47. package/coverage/lcov-report/{src/api/routes/component.ts.html → api/routes/component.js.html} +24 -24
  48. package/coverage/lcov-report/{src/definitions/datasource.ts.html → api/routes/datasource.js.html} +64 -61
  49. package/coverage/lcov-report/{src/api/routes/cloud.ts.html → api/routes/deploy.js.html} +28 -31
  50. package/coverage/lcov-report/{src/automations/index.ts.html → api/routes/dev.js.html} +46 -46
  51. package/coverage/lcov-report/{src/api → api}/routes/index.html +47 -167
  52. package/coverage/lcov-report/api/routes/integration.js.html +121 -0
  53. package/coverage/lcov-report/{src/db/index.ts.html → api/routes/layout.js.html} +28 -28
  54. package/coverage/lcov-report/{src/api/routes/metadata.ts.html → api/routes/metadata.js.html} +31 -31
  55. package/coverage/lcov-report/{src/sdk/index.ts.html → api/routes/migrations.js.html} +21 -24
  56. package/coverage/lcov-report/{src/api/routes/permission.ts.html → api/routes/permission.js.html} +31 -55
  57. package/coverage/lcov-report/{src/api/routes/query.ts.html → api/routes/query.js.html} +50 -41
  58. package/coverage/lcov-report/api/routes/role.js.html +130 -0
  59. package/coverage/lcov-report/{src/api/routes/routing.ts.html → api/routes/routing.js.html} +24 -24
  60. package/coverage/lcov-report/api/routes/screen.js.html +139 -0
  61. package/coverage/lcov-report/{src/api/routes/script.ts.html → api/routes/script.js.html} +17 -17
  62. package/coverage/lcov-report/{src/api/routes/table.ts.html → api/routes/table.js.html} +41 -32
  63. package/coverage/lcov-report/{src/api/routes/templates.ts.html → api/routes/templates.js.html} +25 -25
  64. package/coverage/lcov-report/{src/api/routes/user.ts.html → api/routes/user.js.html} +41 -35
  65. package/coverage/lcov-report/{src/api → api}/routes/utils/index.html +15 -15
  66. package/coverage/lcov-report/{src/api/routes/utils/validators.ts.html → api/routes/utils/validators.js.html} +98 -86
  67. package/coverage/lcov-report/{src/api/routes/view.ts.html → api/routes/view.js.html} +36 -45
  68. package/coverage/lcov-report/{src/automations/actions.ts.html → automations/actions.js.html} +60 -69
  69. package/coverage/lcov-report/{src/automations/automationUtils.ts.html → automations/automationUtils.js.html} +33 -36
  70. package/coverage/lcov-report/{src/automations/bullboard.ts.html → automations/bullboard.js.html} +42 -39
  71. package/coverage/lcov-report/{src/automations → automations}/index.html +48 -63
  72. package/coverage/lcov-report/{src/websocket.ts.html → automations/index.js.html} +50 -41
  73. package/coverage/lcov-report/{src/automations/steps/bash.ts.html → automations/steps/bash.js.html} +30 -45
  74. package/coverage/lcov-report/{src/automations/steps/delay.ts.html → automations/steps/delay.js.html} +19 -34
  75. package/coverage/lcov-report/{src/automations/steps/discord.ts.html → automations/steps/discord.js.html} +28 -43
  76. package/coverage/lcov-report/{src/automations/steps/executeQuery.ts.html → automations/steps/executeQuery.js.html} +30 -45
  77. package/coverage/lcov-report/{src/automations/steps/executeScript.ts.html → automations/steps/executeScript.js.html} +28 -58
  78. package/coverage/lcov-report/{src/automations/steps/filter.ts.html → automations/steps/filter.js.html} +30 -39
  79. package/coverage/lcov-report/automations/steps/index.html +341 -0
  80. package/coverage/lcov-report/{src/automations/steps/integromat.ts.html → automations/steps/integromat.js.html} +23 -38
  81. package/coverage/lcov-report/{src/automations/steps/loop.ts.html → automations/steps/loop.js.html} +15 -21
  82. package/coverage/lcov-report/{src/automations/steps/outgoingWebhook.ts.html → automations/steps/outgoingWebhook.js.html} +39 -54
  83. package/coverage/lcov-report/{src/automations/steps/queryRows.ts.html → automations/steps/queryRows.js.html} +66 -102
  84. package/coverage/lcov-report/{src/automations/steps/sendSmtpEmail.ts.html → automations/steps/sendSmtpEmail.js.html} +25 -40
  85. package/coverage/lcov-report/{src/automations/steps/serverLog.ts.html → automations/steps/serverLog.js.html} +22 -40
  86. package/coverage/lcov-report/{src/automations/steps/slack.ts.html → automations/steps/slack.js.html} +23 -38
  87. package/coverage/lcov-report/{src/automations/steps/updateRow.ts.html → automations/steps/updateRow.js.html} +25 -40
  88. package/coverage/lcov-report/{src/automations/steps/utils.ts.html → automations/steps/utils.js.html} +27 -45
  89. package/coverage/lcov-report/{src/automations/steps/zapier.ts.html → automations/steps/zapier.js.html} +23 -41
  90. package/coverage/lcov-report/{src/definitions/automations.ts.html → automations/triggerInfo/app.js.html} +42 -42
  91. package/coverage/lcov-report/{src/automations/triggerInfo/cron.ts.html → automations/triggerInfo/cron.js.html} +15 -30
  92. package/coverage/lcov-report/{src/automations → automations}/triggerInfo/index.html +31 -31
  93. package/coverage/lcov-report/{src/api/routes/layout.ts.html → automations/triggerInfo/index.js.html} +26 -29
  94. package/coverage/lcov-report/{src/automations/triggerInfo/rowDeleted.ts.html → automations/triggerInfo/rowDeleted.js.html} +15 -30
  95. package/coverage/lcov-report/{src/automations/triggerInfo/rowSaved.ts.html → automations/triggerInfo/rowSaved.js.html} +15 -30
  96. package/coverage/lcov-report/{src/automations/triggerInfo/rowUpdated.ts.html → automations/triggerInfo/rowUpdated.js.html} +15 -30
  97. package/coverage/lcov-report/{src/automations/triggerInfo/webhook.ts.html → automations/triggerInfo/webhook.js.html} +15 -30
  98. package/coverage/lcov-report/{src/automations/triggers.ts.html → automations/triggers.js.html} +66 -78
  99. package/coverage/lcov-report/{src/constants → constants}/index.html +26 -26
  100. package/coverage/lcov-report/{src/integrations/dynamodb.ts.html → constants/index.js.html} +227 -263
  101. package/coverage/lcov-report/{src/constants/layouts.ts.html → constants/layouts.js.html} +36 -18
  102. package/coverage/lcov-report/{src/constants/screens.ts.html → constants/screens.js.html} +58 -64
  103. package/coverage/lcov-report/{src/db/inMemoryView.ts.html → db/inMemoryView.js.html} +29 -47
  104. package/coverage/lcov-report/{src/db → db}/index.html +33 -48
  105. package/coverage/lcov-report/{src/api/routes/integration.ts.html → db/index.js.html} +33 -33
  106. package/coverage/lcov-report/{src/db/linkedRows/LinkController.ts.html → db/linkedRows/LinkController.js.html} +160 -97
  107. package/coverage/lcov-report/db/linkedRows/index.html +146 -0
  108. package/coverage/lcov-report/{src/db/linkedRows/index.ts.html → db/linkedRows/index.js.html} +78 -93
  109. package/coverage/lcov-report/{src/db/linkedRows/linkUtils.ts.html → db/linkedRows/linkUtils.js.html} +56 -83
  110. package/coverage/lcov-report/{src/db/newid.ts.html → db/newid.js.html} +14 -14
  111. package/coverage/lcov-report/{src/db/utils.ts.html → db/utils.js.html} +211 -163
  112. package/coverage/lcov-report/{src/events/AutomationEmitter.ts.html → events/AutomationEmitter.js.html} +25 -40
  113. package/coverage/lcov-report/{src/events → events}/index.html +33 -48
  114. package/coverage/lcov-report/{src/events/BudibaseEmitter.ts.html → events/index.js.html} +29 -26
  115. package/coverage/lcov-report/{src/api/routes/dev.ts.html → events/utils.js.html} +69 -69
  116. package/coverage/lcov-report/index.html +184 -679
  117. package/coverage/lcov-report/{src/integrations → integrations}/tests/TestConfiguration.js.html +10 -10
  118. package/coverage/lcov-report/{src/integrations → integrations}/tests/index.html +10 -10
  119. package/coverage/lcov-report/{src/middleware/appInfo.ts.html → middleware/appInfo.js.html} +30 -33
  120. package/coverage/lcov-report/{src/middleware/builder.ts.html → middleware/builder.js.html} +40 -46
  121. package/coverage/lcov-report/{src/middleware/currentapp.ts.html → middleware/currentapp.js.html} +72 -81
  122. package/coverage/lcov-report/{src/middleware → middleware}/index.html +63 -78
  123. package/coverage/lcov-report/{src/middleware/joi-validator.ts.html → middleware/joi-validator.js.html} +22 -25
  124. package/coverage/lcov-report/{src/middleware/publicApi.ts.html → middleware/publicApi.js.html} +27 -27
  125. package/coverage/lcov-report/{src/middleware/resourceId.ts.html → middleware/resourceId.js.html} +45 -60
  126. package/coverage/lcov-report/{src/tests/utilities/index.ts.html → middleware/selfhost.js.html} +30 -33
  127. package/coverage/lcov-report/{src/events/index.ts.html → middleware/utils.js.html} +24 -18
  128. package/coverage/lcov-report/{src/utilities/budibaseDir.ts.html → utilities/budibaseDir.js.html} +14 -14
  129. package/coverage/lcov-report/{src/utilities/centralPath.ts.html → utilities/centralPath.js.html} +16 -16
  130. package/coverage/lcov-report/{src/utilities/csvParser.ts.html → utilities/csvParser.js.html} +59 -107
  131. package/coverage/lcov-report/{src/utilities/global.ts.html → utilities/global.js.html} +82 -115
  132. package/coverage/lcov-report/{src/utilities → utilities}/index.html +77 -92
  133. package/coverage/lcov-report/{src/utilities/index.ts.html → utilities/index.js.html} +74 -98
  134. package/coverage/lcov-report/{src/utilities/plugins.ts.html → utilities/plugins.js.html} +22 -25
  135. package/coverage/lcov-report/{src/integrations/airtable.ts.html → utilities/queue/inMemoryQueue.js.html} +135 -213
  136. package/coverage/lcov-report/{src/migrations → utilities/queue}/index.html +23 -23
  137. package/coverage/lcov-report/{src/sdk → utilities/routing}/index.html +10 -10
  138. package/coverage/lcov-report/{src/api/controllers/public/mapping/tables.ts.html → utilities/routing/index.js.html} +43 -46
  139. package/coverage/lcov-report/{src/definitions → utilities/rowProcessor}/index.html +34 -34
  140. package/coverage/lcov-report/{src/utilities/rowProcessor/index.ts.html → utilities/rowProcessor/index.js.html} +359 -128
  141. package/coverage/lcov-report/{src/utilities/rowProcessor/utils.ts.html → utilities/rowProcessor/utils.js.html} +42 -54
  142. package/coverage/lcov-report/{src/utilities/scriptRunner.ts.html → utilities/scriptRunner.js.html} +19 -31
  143. package/coverage/lcov-report/{src/utilities/security.ts.html → utilities/security.js.html} +78 -60
  144. package/coverage/lcov-report/{src/utilities/statusCodes.ts.html → utilities/statusCodes.js.html} +11 -11
  145. package/coverage/lcov-report/{src/utilities → utilities}/usageQuota/index.html +28 -28
  146. package/coverage/lcov-report/{src/utilities/usageQuota/rows.ts.html → utilities/usageQuota/rows.js.html} +48 -36
  147. package/coverage/lcov-report/{src/utilities/usageQuota/usageQuoteReset.ts.html → utilities/usageQuota/usageQuoteReset.js.html} +13 -13
  148. package/coverage/lcov-report/{src/utilities/users.ts.html → utilities/users.js.html} +40 -34
  149. package/coverage/lcov-report/{src/utilities/workerRequests.ts.html → utilities/workerRequests.js.html} +112 -127
  150. package/coverage/lcov.info +7069 -19757
  151. package/dist/api/controllers/apikeys.js +9 -12
  152. package/dist/api/controllers/application.js +45 -48
  153. package/dist/api/controllers/automation.js +82 -122
  154. package/dist/api/controllers/cloud.js +71 -84
  155. package/dist/api/controllers/component.js +2 -4
  156. package/dist/api/controllers/datasource.js +94 -151
  157. package/dist/api/controllers/deploy/Deployment.js +6 -10
  158. package/dist/api/controllers/deploy/index.js +16 -13
  159. package/dist/api/controllers/dev.js +81 -96
  160. package/dist/api/controllers/integration.js +8 -11
  161. package/dist/api/controllers/layout.js +15 -18
  162. package/dist/api/controllers/metadata.js +37 -51
  163. package/dist/api/controllers/migrations.js +11 -19
  164. package/dist/api/controllers/permission.js +43 -52
  165. package/dist/api/controllers/plugin/index.js +7 -6
  166. package/dist/api/controllers/plugin/utils.js +1 -2
  167. package/dist/api/controllers/public/applications.js +9 -17
  168. package/dist/api/controllers/public/tables.js +9 -29
  169. package/dist/api/controllers/public/utils.js +2 -2
  170. package/dist/api/controllers/query/import/index.js +2 -1
  171. package/dist/api/controllers/query/index.js +13 -10
  172. package/dist/api/controllers/query/validation.js +33 -41
  173. package/dist/api/controllers/role.js +27 -29
  174. package/dist/api/controllers/routing.js +58 -71
  175. package/dist/api/controllers/row/ExternalRequest.js +542 -539
  176. package/dist/api/controllers/row/external.js +190 -258
  177. package/dist/api/controllers/row/index.js +14 -43
  178. package/dist/api/controllers/row/internal.js +295 -354
  179. package/dist/api/controllers/row/internalSearch.js +80 -95
  180. package/dist/api/controllers/row/staticFormula.js +112 -125
  181. package/dist/api/controllers/row/utils.js +84 -122
  182. package/dist/api/controllers/screen.js +66 -81
  183. package/dist/api/controllers/script.js +6 -13
  184. package/dist/api/controllers/static/index.js +14 -11
  185. package/dist/api/controllers/table/bulkFormula.js +35 -47
  186. package/dist/api/controllers/table/external.js +53 -89
  187. package/dist/api/controllers/table/index.js +31 -64
  188. package/dist/api/controllers/table/internal.js +6 -5
  189. package/dist/api/controllers/table/utils.js +35 -39
  190. package/dist/api/controllers/templates.js +10 -17
  191. package/dist/api/controllers/user.js +70 -82
  192. package/dist/api/controllers/view/exporters.js +4 -8
  193. package/dist/api/controllers/view/index.js +153 -201
  194. package/dist/api/controllers/view/utils.js +121 -151
  195. package/dist/api/controllers/view/viewBuilder.js +16 -4
  196. package/dist/api/controllers/webhook.js +2 -25
  197. package/dist/api/index.js +34 -38
  198. package/dist/api/routes/analytics.js +3 -29
  199. package/dist/api/routes/apikeys.js +7 -33
  200. package/dist/api/routes/application.js +9 -8
  201. package/dist/api/routes/auth.js +2 -1
  202. package/dist/api/routes/automation.js +20 -46
  203. package/dist/api/routes/backup.js +4 -3
  204. package/dist/api/routes/cloud.js +6 -32
  205. package/dist/api/routes/component.js +6 -32
  206. package/dist/api/routes/datasource.js +13 -39
  207. package/dist/api/routes/deploy.js +8 -34
  208. package/dist/api/routes/dev.js +10 -36
  209. package/dist/api/routes/integration.js +7 -33
  210. package/dist/api/routes/layout.js +7 -33
  211. package/dist/api/routes/metadata.js +10 -36
  212. package/dist/api/routes/migrations.js +6 -32
  213. package/dist/api/routes/permission.js +12 -38
  214. package/dist/api/routes/plugin.js +5 -5
  215. package/dist/api/routes/public/index.js +11 -11
  216. package/dist/api/routes/query.js +15 -42
  217. package/dist/api/routes/role.js +10 -36
  218. package/dist/api/routes/routing.js +6 -32
  219. package/dist/api/routes/row.js +11 -12
  220. package/dist/api/routes/screen.js +9 -35
  221. package/dist/api/routes/script.js +6 -32
  222. package/dist/api/routes/static.js +9 -9
  223. package/dist/api/routes/table.js +13 -40
  224. package/dist/api/routes/templates.js +7 -33
  225. package/dist/api/routes/tests/utilities/TestFunctions.js +8 -6
  226. package/dist/api/routes/tests/utilities/index.js +32 -69
  227. package/dist/api/routes/user.js +13 -40
  228. package/dist/api/routes/utils/validators.js +126 -142
  229. package/dist/api/routes/view.js +12 -38
  230. package/dist/api/routes/webhook.js +2 -1
  231. package/dist/app.js +22 -22
  232. package/dist/automations/actions.js +24 -53
  233. package/dist/automations/automationUtils.js +19 -31
  234. package/dist/automations/bullboard.js +29 -59
  235. package/dist/automations/index.js +18 -23
  236. package/dist/automations/steps/bash.js +10 -40
  237. package/dist/automations/steps/createRow.js +1 -2
  238. package/dist/automations/steps/delay.js +5 -9
  239. package/dist/automations/steps/deleteRow.js +1 -2
  240. package/dist/automations/steps/discord.js +7 -14
  241. package/dist/automations/steps/executeQuery.js +7 -34
  242. package/dist/automations/steps/executeScript.js +7 -34
  243. package/dist/automations/steps/filter.js +18 -20
  244. package/dist/automations/steps/integromat.js +7 -14
  245. package/dist/automations/steps/loop.js +1 -4
  246. package/dist/automations/steps/outgoingWebhook.js +14 -45
  247. package/dist/automations/steps/queryRows.js +38 -71
  248. package/dist/automations/steps/sendSmtpEmail.js +6 -33
  249. package/dist/automations/steps/serverLog.js +8 -12
  250. package/dist/automations/steps/slack.js +7 -14
  251. package/dist/automations/steps/updateRow.js +7 -34
  252. package/dist/automations/steps/utils.js +16 -22
  253. package/dist/automations/steps/zapier.js +7 -15
  254. package/dist/automations/tests/utilities/index.js +38 -62
  255. package/dist/automations/triggerInfo/app.js +1 -4
  256. package/dist/automations/triggerInfo/cron.js +1 -4
  257. package/dist/automations/triggerInfo/index.js +6 -31
  258. package/dist/automations/triggerInfo/rowDeleted.js +1 -4
  259. package/dist/automations/triggerInfo/rowSaved.js +1 -4
  260. package/dist/automations/triggerInfo/rowUpdated.js +1 -4
  261. package/dist/automations/triggerInfo/webhook.js +1 -4
  262. package/dist/automations/triggers.js +57 -90
  263. package/dist/automations/utils.js +8 -9
  264. package/dist/constants/index.js +104 -118
  265. package/dist/constants/layouts.js +10 -7
  266. package/dist/constants/screens.js +44 -49
  267. package/dist/db/dynamoClient.js +20 -20
  268. package/dist/db/inMemoryView.js +38 -47
  269. package/dist/db/index.js +4 -7
  270. package/dist/db/linkedRows/LinkController.js +70 -51
  271. package/dist/db/linkedRows/index.js +81 -93
  272. package/dist/db/linkedRows/linkUtils.js +32 -42
  273. package/dist/db/utils.js +119 -146
  274. package/dist/db/views/staticViews.js +74 -91
  275. package/dist/environment.js +6 -9
  276. package/dist/events/AutomationEmitter.js +10 -13
  277. package/dist/events/index.js +23 -5
  278. package/dist/events/utils.js +10 -18
  279. package/dist/integrations/elasticsearch.js +2 -26
  280. package/dist/integrations/googlesheets.js +6 -5
  281. package/dist/integrations/index.js +6 -15
  282. package/dist/integrations/microsoftSqlServer.js +3 -8
  283. package/dist/integrations/oracle.js +1 -8
  284. package/dist/integrations/postgres.js +3 -6
  285. package/dist/integrations/s3.js +1 -157
  286. package/dist/integrations/tests/TestConfiguration.js +1 -0
  287. package/dist/middleware/appInfo.js +9 -14
  288. package/dist/middleware/authorized.js +21 -22
  289. package/dist/middleware/builder.js +40 -41
  290. package/dist/middleware/currentapp.js +37 -39
  291. package/dist/middleware/joi-validator.js +10 -17
  292. package/dist/middleware/publicApi.js +6 -5
  293. package/dist/middleware/resourceId.js +9 -16
  294. package/dist/middleware/selfhost.js +4 -5
  295. package/dist/middleware/utils.js +2 -5
  296. package/dist/migrations/functions/appUrls.js +2 -2
  297. package/dist/migrations/functions/backfill/global.js +1 -1
  298. package/dist/migrations/functions/usageQuotas/syncApps.js +4 -3
  299. package/dist/migrations/functions/usageQuotas/syncRows.js +4 -3
  300. package/dist/migrations/functions/userEmailViewCasing.js +3 -3
  301. package/dist/migrations/index.js +0 -5
  302. package/dist/package.json +45 -11
  303. package/dist/sdk/app/backups/exports.js +2 -1
  304. package/dist/sdk/app/backups/imports.js +3 -2
  305. package/dist/sdk/app/tables/index.js +5 -5
  306. package/dist/startup.js +10 -10
  307. package/dist/tests/utilities/TestConfiguration.js +87 -111
  308. package/dist/tests/utilities/controllers.js +15 -38
  309. package/dist/tests/utilities/structures.js +53 -72
  310. package/dist/threads/automation.js +27 -49
  311. package/dist/threads/query.js +19 -17
  312. package/dist/threads/utils.js +8 -33
  313. package/dist/tsconfig.build.tsbuildinfo +1 -1
  314. package/dist/utilities/budibaseDir.js +2 -4
  315. package/dist/utilities/centralPath.js +7 -14
  316. package/dist/utilities/csvParser.js +21 -27
  317. package/dist/utilities/fileSystem/clientLibrary.js +73 -87
  318. package/dist/utilities/fileSystem/index.js +175 -203
  319. package/dist/utilities/fileSystem/processor.js +3 -8
  320. package/dist/utilities/fileSystem/utilities.js +22 -0
  321. package/dist/utilities/global.js +66 -87
  322. package/dist/utilities/index.js +75 -102
  323. package/dist/utilities/plugins.js +9 -15
  324. package/dist/utilities/queue/inMemoryQueue.js +126 -0
  325. package/dist/utilities/redis.js +65 -100
  326. package/dist/utilities/routing/index.js +23 -27
  327. package/dist/utilities/rowProcessor/index.js +191 -133
  328. package/dist/utilities/rowProcessor/utils.js +26 -35
  329. package/dist/utilities/scriptRunner.js +5 -8
  330. package/dist/utilities/security.js +35 -39
  331. package/dist/utilities/usageQuota/rows.js +49 -56
  332. package/dist/utilities/users.js +28 -31
  333. package/dist/utilities/workerRequests.js +82 -115
  334. package/dist/watch.js +2 -1
  335. package/package.json +46 -12
  336. package/scripts/exportAppTemplate.js +2 -2
  337. package/scripts/integrations/mssql/data/setup.sql +3 -3
  338. package/{src/tests/jestSetup.ts → scripts/jestSetup.js} +2 -11
  339. package/scripts/localdomain.js +6 -34
  340. package/src/api/controllers/{apikeys.ts → apikeys.js} +10 -10
  341. package/src/api/controllers/application.ts +42 -56
  342. package/src/api/controllers/auth.ts +3 -4
  343. package/src/api/controllers/{automation.ts → automation.js} +48 -48
  344. package/src/api/controllers/{cloud.ts → cloud.js} +24 -24
  345. package/src/api/controllers/component.ts +1 -2
  346. package/src/api/controllers/{datasource.ts → datasource.js} +49 -109
  347. package/src/api/controllers/deploy/{Deployment.ts → Deployment.js} +10 -13
  348. package/src/api/controllers/deploy/index.ts +25 -13
  349. package/src/api/controllers/{dev.ts → dev.js} +37 -31
  350. package/src/api/controllers/integration.js +14 -0
  351. package/src/api/controllers/{layout.ts → layout.js} +8 -8
  352. package/src/api/controllers/{metadata.ts → metadata.js} +10 -11
  353. package/src/api/controllers/migrations.js +13 -0
  354. package/src/api/controllers/{permission.ts → permission.js} +46 -49
  355. package/src/api/controllers/plugin/index.ts +5 -4
  356. package/src/api/controllers/plugin/utils.ts +5 -3
  357. package/src/api/controllers/public/applications.ts +9 -15
  358. package/src/api/controllers/public/rows.ts +1 -1
  359. package/src/api/controllers/public/tables.ts +2 -2
  360. package/src/api/controllers/public/utils.ts +2 -2
  361. package/src/api/controllers/query/import/index.ts +3 -2
  362. package/src/api/controllers/query/index.ts +14 -11
  363. package/src/api/controllers/query/{validation.ts → validation.js} +7 -7
  364. package/src/api/controllers/{role.ts → role.js} +25 -21
  365. package/src/api/controllers/{routing.ts → routing.js} +34 -37
  366. package/src/api/controllers/row/ExternalRequest.ts +624 -605
  367. package/src/api/controllers/row/{external.ts → external.js} +62 -79
  368. package/src/api/controllers/row/index.ts +11 -19
  369. package/src/api/controllers/row/{internal.ts → internal.js} +73 -87
  370. package/src/api/controllers/row/{internalSearch.ts → internalSearch.js} +68 -92
  371. package/src/api/controllers/row/{staticFormula.ts → staticFormula.js} +25 -30
  372. package/src/api/controllers/row/{utils.ts → utils.js} +22 -32
  373. package/src/api/controllers/screen.ts +6 -10
  374. package/src/api/controllers/script.js +11 -0
  375. package/src/api/controllers/static/index.ts +16 -14
  376. package/src/api/controllers/table/{bulkFormula.ts → bulkFormula.js} +25 -39
  377. package/src/api/controllers/table/{external.ts → external.js} +55 -86
  378. package/src/api/controllers/table/{index.ts → index.js} +18 -21
  379. package/src/api/controllers/table/internal.ts +6 -5
  380. package/src/api/controllers/table/utils.ts +21 -26
  381. package/src/api/controllers/{templates.ts → templates.js} +7 -10
  382. package/src/api/controllers/{user.ts → user.js} +49 -47
  383. package/src/api/controllers/view/{exporters.ts → exporters.js} +3 -5
  384. package/src/api/controllers/view/{index.ts → index.js} +27 -36
  385. package/src/api/controllers/view/{utils.ts → utils.js} +20 -26
  386. package/src/api/controllers/view/{viewBuilder.ts → viewBuilder.js} +11 -25
  387. package/src/api/controllers/webhook.ts +1 -1
  388. package/src/api/{index.ts → index.js} +22 -15
  389. package/src/api/routes/analytics.js +9 -0
  390. package/src/api/routes/apikeys.js +12 -0
  391. package/src/api/routes/application.ts +9 -17
  392. package/src/api/routes/auth.ts +2 -2
  393. package/src/api/routes/automation.js +85 -0
  394. package/src/api/routes/backup.ts +4 -8
  395. package/src/api/routes/cloud.js +14 -0
  396. package/src/api/routes/component.js +14 -0
  397. package/src/api/routes/datasource.js +51 -0
  398. package/src/api/routes/deploy.js +17 -0
  399. package/src/api/routes/dev.js +26 -0
  400. package/src/api/routes/integration.js +12 -0
  401. package/src/api/routes/layout.js +16 -0
  402. package/src/api/routes/{metadata.ts → metadata.js} +13 -13
  403. package/src/api/routes/migrations.js +14 -0
  404. package/src/api/routes/permission.js +33 -0
  405. package/src/api/routes/plugin.ts +6 -14
  406. package/src/api/routes/public/index.ts +14 -11
  407. package/src/api/routes/public/tests/compare.spec.js +1 -1
  408. package/src/api/routes/{query.ts → query.js} +22 -19
  409. package/src/api/routes/role.js +15 -0
  410. package/src/api/routes/routing.js +14 -0
  411. package/src/api/routes/row.ts +15 -13
  412. package/src/api/routes/screen.js +18 -0
  413. package/src/api/routes/script.js +10 -0
  414. package/src/api/routes/static.ts +10 -7
  415. package/src/api/routes/{table.ts → table.js} +13 -10
  416. package/src/api/routes/templates.js +16 -0
  417. package/src/api/routes/tests/analytics.spec.js +1 -1
  418. package/src/api/routes/tests/backup.spec.js +1 -9
  419. package/src/api/routes/tests/deployment.spec.ts +1 -1
  420. package/src/api/routes/tests/permissions.spec.js +1 -2
  421. package/src/api/routes/tests/query.spec.js +10 -15
  422. package/src/api/routes/tests/role.spec.js +9 -7
  423. package/src/api/routes/tests/routing.spec.js +1 -2
  424. package/src/api/routes/tests/row.spec.js +4 -3
  425. package/src/api/routes/tests/static.spec.js +2 -2
  426. package/src/api/routes/tests/table.spec.js +36 -40
  427. package/src/api/routes/tests/user.spec.js +1 -2
  428. package/src/api/routes/tests/utilities/TestFunctions.ts +8 -6
  429. package/src/api/routes/tests/utilities/{index.ts → index.js} +12 -12
  430. package/src/api/routes/tests/view.spec.js +3 -3
  431. package/src/api/routes/user.js +53 -0
  432. package/src/api/routes/utils/{validators.ts → validators.js} +37 -33
  433. package/src/api/routes/view.js +31 -0
  434. package/src/api/routes/webhook.ts +2 -2
  435. package/src/app.ts +14 -15
  436. package/src/automations/{actions.ts → actions.js} +23 -26
  437. package/src/automations/{automationUtils.ts → automationUtils.js} +12 -13
  438. package/src/automations/bullboard.js +39 -0
  439. package/src/automations/index.js +29 -0
  440. package/src/automations/steps/{bash.ts → bash.js} +8 -13
  441. package/src/automations/steps/createRow.ts +3 -8
  442. package/src/automations/steps/{delay.ts → delay.js} +4 -9
  443. package/src/automations/steps/deleteRow.ts +3 -8
  444. package/src/automations/steps/{discord.ts → discord.js} +5 -10
  445. package/src/automations/steps/{executeQuery.ts → executeQuery.js} +7 -12
  446. package/src/automations/steps/{executeScript.ts → executeScript.js} +7 -17
  447. package/src/automations/steps/{filter.ts → filter.js} +9 -12
  448. package/src/automations/steps/{integromat.ts → integromat.js} +5 -10
  449. package/src/automations/steps/{loop.ts → loop.js} +2 -4
  450. package/src/automations/steps/{outgoingWebhook.ts → outgoingWebhook.js} +13 -18
  451. package/src/automations/steps/{queryRows.ts → queryRows.js} +36 -48
  452. package/src/automations/steps/{sendSmtpEmail.ts → sendSmtpEmail.js} +5 -10
  453. package/src/automations/steps/{serverLog.ts → serverLog.js} +3 -9
  454. package/src/automations/steps/{slack.ts → slack.js} +5 -10
  455. package/src/automations/steps/{updateRow.ts → updateRow.js} +7 -12
  456. package/src/automations/steps/{utils.ts → utils.js} +4 -10
  457. package/src/automations/steps/{zapier.ts → zapier.js} +5 -11
  458. package/src/automations/tests/updateRow.spec.js +1 -0
  459. package/src/automations/tests/utilities/index.js +51 -0
  460. package/src/automations/triggerInfo/{app.ts → app.js} +2 -7
  461. package/src/automations/triggerInfo/{cron.ts → cron.js} +2 -7
  462. package/src/automations/triggerInfo/index.js +15 -0
  463. package/src/automations/triggerInfo/{rowDeleted.ts → rowDeleted.js} +2 -7
  464. package/src/automations/triggerInfo/{rowSaved.ts → rowSaved.js} +2 -7
  465. package/src/automations/triggerInfo/{rowUpdated.ts → rowUpdated.js} +2 -7
  466. package/src/automations/triggerInfo/{webhook.ts → webhook.js} +2 -7
  467. package/src/automations/{triggers.ts → triggers.js} +26 -30
  468. package/src/automations/utils.ts +12 -9
  469. package/src/constants/index.js +208 -0
  470. package/src/constants/{layouts.ts → layouts.js} +9 -3
  471. package/src/constants/screens.js +46 -0
  472. package/src/db/{dynamoClient.ts → dynamoClient.js} +19 -39
  473. package/src/db/{inMemoryView.ts → inMemoryView.js} +9 -15
  474. package/src/db/index.js +16 -0
  475. package/src/db/linkedRows/{LinkController.ts → LinkController.js} +85 -64
  476. package/src/db/linkedRows/{index.ts → index.js} +38 -43
  477. package/src/db/linkedRows/{linkUtils.ts → linkUtils.js} +24 -33
  478. package/src/db/{newid.ts → newid.js} +1 -1
  479. package/src/db/tests/linkController.spec.js +57 -73
  480. package/src/db/tests/linkTests.spec.js +14 -17
  481. package/src/db/{utils.ts → utils.js} +93 -77
  482. package/src/db/views/{staticViews.ts → staticViews.js} +13 -20
  483. package/src/{environment.ts → environment.js} +7 -11
  484. package/src/events/{AutomationEmitter.ts → AutomationEmitter.js} +7 -12
  485. package/src/events/{BudibaseEmitter.ts → index.js} +8 -7
  486. package/src/events/utils.js +38 -0
  487. package/src/integrations/base/sql.ts +1 -1
  488. package/src/integrations/base/sqlTable.ts +1 -1
  489. package/src/integrations/elasticsearch.ts +2 -32
  490. package/src/integrations/googlesheets.ts +7 -5
  491. package/src/integrations/index.ts +41 -45
  492. package/src/integrations/microsoftSqlServer.ts +12 -14
  493. package/src/integrations/mysql.ts +3 -4
  494. package/src/integrations/oracle.ts +46 -17
  495. package/src/integrations/postgres.ts +2 -8
  496. package/src/integrations/s3.ts +3 -179
  497. package/src/integrations/tests/s3.spec.ts +1 -85
  498. package/src/integrations/utils.ts +2 -6
  499. package/src/middleware/appInfo.js +19 -0
  500. package/src/middleware/authorized.ts +28 -21
  501. package/src/middleware/{builder.ts → builder.js} +15 -17
  502. package/src/middleware/{currentapp.ts → currentapp.js} +39 -42
  503. package/src/middleware/{joi-validator.ts → joi-validator.js} +8 -9
  504. package/src/middleware/publicApi.js +21 -0
  505. package/src/middleware/{resourceId.ts → resourceId.js} +11 -16
  506. package/src/middleware/{selfhost.ts → selfhost.js} +2 -4
  507. package/src/middleware/tests/authorized.spec.js +6 -5
  508. package/src/middleware/tests/currentapp.spec.js +63 -118
  509. package/src/middleware/{utils.ts → utils.js} +1 -3
  510. package/src/migrations/functions/appUrls.ts +2 -2
  511. package/src/migrations/functions/backfill/app/tables.ts +5 -2
  512. package/src/migrations/functions/backfill/global.ts +1 -1
  513. package/src/migrations/functions/tests/appUrls.spec.js +4 -4
  514. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +9 -14
  515. package/src/migrations/functions/usageQuotas/syncApps.ts +4 -3
  516. package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
  517. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +7 -7
  518. package/src/migrations/functions/userEmailViewCasing.ts +3 -3
  519. package/src/migrations/index.ts +0 -9
  520. package/src/migrations/tests/index.spec.ts +1 -1
  521. package/src/module.d.ts +14 -0
  522. package/src/sdk/app/backups/exports.ts +3 -5
  523. package/src/sdk/app/backups/imports.ts +14 -7
  524. package/src/sdk/app/backups/statistics.ts +18 -9
  525. package/src/sdk/app/tables/index.ts +8 -7
  526. package/src/startup.ts +5 -5
  527. package/src/tests/utilities/{TestConfiguration.ts → TestConfiguration.js} +78 -111
  528. package/src/tests/utilities/controllers.js +16 -0
  529. package/src/tests/utilities/{index.ts → index.js} +2 -2
  530. package/src/tests/utilities/{structures.ts → structures.js} +36 -41
  531. package/src/threads/automation.ts +19 -18
  532. package/src/threads/query.ts +16 -11
  533. package/src/threads/utils.ts +5 -4
  534. package/src/utilities/budibaseDir.js +3 -0
  535. package/src/utilities/{centralPath.ts → centralPath.js} +3 -3
  536. package/src/utilities/{csvParser.ts → csvParser.js} +26 -42
  537. package/src/utilities/fileSystem/{clientLibrary.ts → clientLibrary.js} +20 -20
  538. package/src/utilities/fileSystem/{index.ts → index.js} +65 -61
  539. package/src/utilities/fileSystem/{processor.ts → processor.js} +5 -3
  540. package/src/utilities/fileSystem/utilities.js +36 -0
  541. package/src/utilities/global.js +127 -0
  542. package/src/utilities/{index.ts → index.js} +32 -40
  543. package/src/utilities/{plugins.ts → plugins.js} +4 -5
  544. package/src/utilities/queue/inMemoryQueue.js +122 -0
  545. package/src/utilities/{redis.ts → redis.js} +20 -21
  546. package/src/utilities/routing/index.js +25 -0
  547. package/src/utilities/rowProcessor/{index.ts → index.js} +144 -67
  548. package/src/utilities/rowProcessor/{utils.ts → utils.js} +15 -19
  549. package/src/utilities/{scriptRunner.ts → scriptRunner.js} +4 -8
  550. package/src/utilities/security.js +71 -0
  551. package/src/utilities/{statusCodes.ts → statusCodes.js} +1 -1
  552. package/src/utilities/usageQuota/{rows.ts → rows.js} +18 -14
  553. package/src/utilities/usageQuota/{usageQuoteReset.ts → usageQuoteReset.js} +1 -1
  554. package/src/utilities/{users.ts → users.js} +13 -11
  555. package/src/utilities/{workerRequests.ts → workerRequests.js} +38 -43
  556. package/src/watch.ts +3 -2
  557. package/tsconfig.build.json +2 -1
  558. package/tsconfig.json +1 -3
  559. package/builder/assets/index.0c44dac3.css +0 -6
  560. package/builder/assets/index.e19dcc8e.js +0 -1021
  561. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
  562. package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -2038
  563. package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
  564. package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
  565. package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
  566. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -259
  567. package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
  568. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -730
  569. package/coverage/lcov-report/src/api/controllers/index.html +0 -431
  570. package/coverage/lcov-report/src/api/controllers/integration.ts.html +0 -124
  571. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
  572. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
  573. package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
  574. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -484
  575. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
  576. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
  577. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
  578. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -136
  579. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -334
  580. package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
  581. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
  582. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
  583. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
  584. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
  585. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
  586. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
  587. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
  588. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
  589. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
  590. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -268
  591. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
  592. package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
  593. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
  594. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
  595. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
  596. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
  597. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
  598. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
  599. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
  600. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
  601. package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
  602. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -976
  603. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2269
  604. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
  605. package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
  606. package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
  607. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -694
  608. package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
  609. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -661
  610. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1255
  611. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -379
  612. package/coverage/lcov-report/src/api/routes/analytics.ts.html +0 -112
  613. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +0 -121
  614. package/coverage/lcov-report/src/api/routes/application.ts.html +0 -223
  615. package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
  616. package/coverage/lcov-report/src/api/routes/datasource.ts.html +0 -265
  617. package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -148
  618. package/coverage/lcov-report/src/api/routes/index.ts.html +0 -289
  619. package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
  620. package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
  621. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -541
  622. package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
  623. package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -493
  624. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
  625. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -328
  626. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
  627. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
  628. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
  629. package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
  630. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
  631. package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
  632. package/coverage/lcov-report/src/api/routes/role.ts.html +0 -157
  633. package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
  634. package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
  635. package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
  636. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
  637. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
  638. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +0 -367
  639. package/coverage/lcov-report/src/api/routes/webhook.ts.html +0 -166
  640. package/coverage/lcov-report/src/app.ts.html +0 -406
  641. package/coverage/lcov-report/src/automations/logging/index.html +0 -116
  642. package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
  643. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -382
  644. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -349
  645. package/coverage/lcov-report/src/automations/steps/index.html +0 -371
  646. package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
  647. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +0 -265
  648. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +0 -196
  649. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +0 -130
  650. package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
  651. package/coverage/lcov-report/src/constants/index.ts.html +0 -697
  652. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +0 -2059
  653. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +0 -541
  654. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +0 -427
  655. package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
  656. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +0 -403
  657. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +0 -559
  658. package/coverage/lcov-report/src/db/dynamoClient.ts.html +0 -526
  659. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +0 -265
  660. package/coverage/lcov-report/src/db/linkedRows/index.html +0 -161
  661. package/coverage/lcov-report/src/environment.ts.html +0 -457
  662. package/coverage/lcov-report/src/events/utils.ts.html +0 -319
  663. package/coverage/lcov-report/src/index.html +0 -191
  664. package/coverage/lcov-report/src/index.ts.html +0 -133
  665. package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
  666. package/coverage/lcov-report/src/integrations/base/index.html +0 -161
  667. package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -133
  668. package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -1951
  669. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
  670. package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
  671. package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -406
  672. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -634
  673. package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
  674. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1315
  675. package/coverage/lcov-report/src/integrations/index.html +0 -371
  676. package/coverage/lcov-report/src/integrations/index.ts.html +0 -445
  677. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1012
  678. package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1867
  679. package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -967
  680. package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1387
  681. package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1087
  682. package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
  683. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -463
  684. package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
  685. package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1381
  686. package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
  687. package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
  688. package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1018
  689. package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -460
  690. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -187
  691. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
  692. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
  693. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
  694. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
  695. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
  696. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
  697. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
  698. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
  699. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
  700. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -283
  701. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
  702. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
  703. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
  704. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
  705. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
  706. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
  707. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
  708. package/coverage/lcov-report/src/migrations/functions/index.html +0 -161
  709. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
  710. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +0 -520
  711. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
  712. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
  713. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
  714. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
  715. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
  716. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
  717. package/coverage/lcov-report/src/migrations/index.ts.html +0 -430
  718. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
  719. package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
  720. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
  721. package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
  722. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
  723. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
  724. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
  725. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
  726. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -682
  727. package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
  728. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
  729. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
  730. package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
  731. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -265
  732. package/coverage/lcov-report/src/startup.ts.html +0 -499
  733. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +0 -1966
  734. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +0 -127
  735. package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
  736. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +0 -667
  737. package/coverage/lcov-report/src/threads/automation.ts.html +0 -1594
  738. package/coverage/lcov-report/src/threads/index.html +0 -161
  739. package/coverage/lcov-report/src/threads/index.ts.html +0 -418
  740. package/coverage/lcov-report/src/threads/query.ts.html +0 -961
  741. package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
  742. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +0 -547
  743. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +0 -1129
  744. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +0 -142
  745. package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
  746. package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
  747. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
  748. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +0 -373
  749. package/coverage/lcov-report/src/watch.ts.html +0 -196
  750. package/dist/db/defaultData/datasource_bb_default.js +0 -573
  751. package/dist/db/defaultData/employeeImport.js +0 -155
  752. package/dist/db/defaultData/expensesImport.js +0 -117
  753. package/dist/db/defaultData/inventoryImport.js +0 -109
  754. package/dist/db/defaultData/jobsImport.js +0 -152
  755. package/dist/db/linkedRows/LinkDocument.js +0 -32
  756. package/dist/events/BudibaseEmitter.js +0 -24
  757. package/dist/integrations/base/types.js +0 -2
  758. package/dist/migrations/functions/tableSettings.js +0 -130
  759. package/dist/utilities/rowProcessor/map.js +0 -99
  760. package/jest.config.ts +0 -33
  761. package/scripts/integrations/postgres/emp-skill.sql +0 -46
  762. package/src/api/controllers/integration.ts +0 -13
  763. package/src/api/controllers/migrations.ts +0 -14
  764. package/src/api/controllers/script.ts +0 -12
  765. package/src/api/routes/analytics.ts +0 -9
  766. package/src/api/routes/apikeys.ts +0 -12
  767. package/src/api/routes/automation.ts +0 -87
  768. package/src/api/routes/cloud.ts +0 -18
  769. package/src/api/routes/component.ts +0 -14
  770. package/src/api/routes/datasource.ts +0 -60
  771. package/src/api/routes/deploy.ts +0 -21
  772. package/src/api/routes/dev.ts +0 -38
  773. package/src/api/routes/integration.ts +0 -16
  774. package/src/api/routes/layout.ts +0 -16
  775. package/src/api/routes/migrations.ts +0 -14
  776. package/src/api/routes/permission.ts +0 -41
  777. package/src/api/routes/role.ts +0 -24
  778. package/src/api/routes/routing.ts +0 -14
  779. package/src/api/routes/screen.ts +0 -23
  780. package/src/api/routes/script.ts +0 -10
  781. package/src/api/routes/templates.ts +0 -16
  782. package/src/api/routes/user.ts +0 -51
  783. package/src/api/routes/view.ts +0 -34
  784. package/src/automations/bullboard.ts +0 -38
  785. package/src/automations/index.ts +0 -26
  786. package/src/automations/tests/utilities/index.ts +0 -60
  787. package/src/automations/triggerInfo/index.ts +0 -15
  788. package/src/constants/index.ts +0 -204
  789. package/src/constants/screens.ts +0 -48
  790. package/src/db/defaultData/datasource_bb_default.ts +0 -658
  791. package/src/db/defaultData/employeeImport.ts +0 -152
  792. package/src/db/defaultData/expensesImport.ts +0 -114
  793. package/src/db/defaultData/inventoryImport.ts +0 -106
  794. package/src/db/defaultData/jobsImport.ts +0 -158
  795. package/src/db/index.ts +0 -16
  796. package/src/db/linkedRows/LinkDocument.ts +0 -60
  797. package/src/events/index.ts +0 -5
  798. package/src/events/utils.ts +0 -78
  799. package/src/integrations/base/types.ts +0 -134
  800. package/src/middleware/appInfo.ts +0 -20
  801. package/src/middleware/publicApi.ts +0 -21
  802. package/src/migrations/functions/tableSettings.ts +0 -145
  803. package/src/migrations/functions/tests/tableSettings.spec.ts +0 -144
  804. package/src/tests/utilities/controllers.ts +0 -14
  805. package/src/utilities/budibaseDir.ts +0 -3
  806. package/src/utilities/global.ts +0 -138
  807. package/src/utilities/routing/index.ts +0 -32
  808. package/src/utilities/rowProcessor/map.ts +0 -96
  809. package/src/utilities/security.ts +0 -65
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -42,27 +19,23 @@ var __rest = (this && this.__rest) || function (s, e) {
42
19
  }
43
20
  return t;
44
21
  };
45
- var __importDefault = (this && this.__importDefault) || function (mod) {
46
- return (mod && mod.__esModule) ? mod : { "default": mod };
47
- };
48
- Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.fetchEnrichedRow = exports.exportRows = exports.validate = exports.search = exports.bulkDestroy = exports.destroy = exports.find = exports.fetch = exports.fetchView = exports.save = exports.patch = void 0;
50
- const linkRows = __importStar(require("../../../db/linkedRows"));
51
- const utils_1 = require("../../../db/utils");
52
- const userController = __importStar(require("../user"));
53
- const rowProcessor_1 = require("../../../utilities/rowProcessor");
54
- const constants_1 = require("../../../constants");
55
- const utils_2 = require("./utils");
56
- const internalSearch_1 = require("./internalSearch");
57
- const global_1 = require("../../../utilities/global");
58
- const inMemoryViews = __importStar(require("../../../db/inMemoryView"));
59
- const environment_1 = __importDefault(require("../../../environment"));
60
- const utils_3 = require("../view/utils");
61
- const fp_1 = require("lodash/fp");
62
- const backend_core_1 = require("@budibase/backend-core");
63
- const staticFormula_1 = require("./staticFormula");
64
- const exporters = __importStar(require("../view/exporters"));
65
- const fileSystem_1 = require("../../../utilities/fileSystem");
22
+ const linkRows = require("../../../db/linkedRows");
23
+ const { generateRowID, getRowParams, getTableIDFromRowID, DocumentType, InternalTables, } = require("../../../db/utils");
24
+ const { dangerousGetDB } = require("@budibase/backend-core/db");
25
+ const userController = require("../user");
26
+ const { inputProcessing, outputProcessing, cleanupAttachments, } = require("../../../utilities/rowProcessor");
27
+ const { FieldTypes } = require("../../../constants");
28
+ const { validate, findRow } = require("./utils");
29
+ const { fullSearch, paginatedSearch } = require("./internalSearch");
30
+ const { getGlobalUsersFromMetadata } = require("../../../utilities/global");
31
+ const inMemoryViews = require("../../../db/inMemoryView");
32
+ const env = require("../../../environment");
33
+ const { migrateToInMemoryView, migrateToDesignView, getFromDesignDoc, getFromMemoryDoc, } = require("../view/utils");
34
+ const { cloneDeep } = require("lodash/fp");
35
+ const { getAppDB } = require("@budibase/backend-core/context");
36
+ const { finaliseRow, updateRelatedFormula } = require("./staticFormula");
37
+ const exporters = require("../view/exporters");
38
+ const { apiFileReturn } = require("../../../utilities/fileSystem");
66
39
  const CALCULATION_TYPES = {
67
40
  SUM: "sum",
68
41
  COUNT: "count",
@@ -70,9 +43,9 @@ const CALCULATION_TYPES = {
70
43
  };
71
44
  function getView(db, viewName) {
72
45
  return __awaiter(this, void 0, void 0, function* () {
73
- let mainGetter = environment_1.default.SELF_HOSTED ? utils_3.getFromDesignDoc : utils_3.getFromMemoryDoc;
74
- let secondaryGetter = environment_1.default.SELF_HOSTED ? utils_3.getFromMemoryDoc : utils_3.getFromDesignDoc;
75
- let migration = environment_1.default.SELF_HOSTED ? utils_3.migrateToDesignView : utils_3.migrateToInMemoryView;
46
+ let mainGetter = env.SELF_HOSTED ? getFromDesignDoc : getFromMemoryDoc;
47
+ let secondaryGetter = env.SELF_HOSTED ? getFromMemoryDoc : getFromDesignDoc;
48
+ let migration = env.SELF_HOSTED ? migrateToDesignView : migrateToInMemoryView;
76
49
  let viewInfo, migrate = false;
77
50
  try {
78
51
  viewInfo = yield mainGetter(db, viewName);
@@ -99,12 +72,12 @@ function getView(db, viewName) {
99
72
  function getRawTableData(ctx, db, tableId) {
100
73
  return __awaiter(this, void 0, void 0, function* () {
101
74
  let rows;
102
- if (tableId === utils_1.InternalTables.USER_METADATA) {
75
+ if (tableId === InternalTables.USER_METADATA) {
103
76
  yield userController.fetchMetadata(ctx);
104
77
  rows = ctx.body;
105
78
  }
106
79
  else {
107
- const response = yield db.allDocs((0, utils_1.getRowParams)(tableId, null, {
80
+ const response = yield db.allDocs(getRowParams(tableId, null, {
108
81
  include_docs: true,
109
82
  }));
110
83
  rows = response.rows.map(row => row.doc);
@@ -112,80 +85,77 @@ function getRawTableData(ctx, db, tableId) {
112
85
  return rows;
113
86
  });
114
87
  }
115
- function patch(ctx) {
116
- return __awaiter(this, void 0, void 0, function* () {
117
- const db = backend_core_1.context.getAppDB();
118
- const inputs = ctx.request.body;
119
- const tableId = inputs.tableId;
120
- const isUserTable = tableId === utils_1.InternalTables.USER_METADATA;
121
- let oldRow;
122
- try {
123
- let dbTable = yield db.get(tableId);
124
- oldRow = yield (0, rowProcessor_1.outputProcessing)(dbTable, yield (0, utils_2.findRow)(ctx, tableId, inputs._id));
125
- }
126
- catch (err) {
127
- if (isUserTable) {
128
- // don't include the rev, it'll be the global rev
129
- // this time
130
- oldRow = {
131
- _id: inputs._id,
132
- };
133
- }
134
- else {
135
- throw "Row does not exist";
136
- }
137
- }
88
+ exports.patch = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
89
+ const db = getAppDB();
90
+ const inputs = ctx.request.body;
91
+ const tableId = inputs.tableId;
92
+ const isUserTable = tableId === InternalTables.USER_METADATA;
93
+ let oldRow;
94
+ try {
138
95
  let dbTable = yield db.get(tableId);
139
- // need to build up full patch fields before coerce
140
- let combinedRow = (0, fp_1.cloneDeep)(oldRow);
141
- for (let key of Object.keys(inputs)) {
142
- if (!dbTable.schema[key])
143
- continue;
144
- combinedRow[key] = inputs[key];
145
- }
146
- // this returns the table and row incase they have been updated
147
- let { table, row } = (0, rowProcessor_1.inputProcessing)(ctx.user, dbTable, combinedRow);
148
- const validateResult = yield (0, utils_2.validate)({
149
- row,
150
- table,
151
- });
152
- if (!validateResult.valid) {
153
- ctx.throw(400, { validation: validateResult.errors });
154
- }
155
- // returned row is cleaned and prepared for writing to DB
156
- row = (yield linkRows.updateLinks({
157
- eventType: linkRows.EventType.ROW_UPDATE,
158
- row,
159
- tableId: row.tableId,
160
- table,
161
- }));
162
- // check if any attachments removed
163
- yield (0, rowProcessor_1.cleanupAttachments)(table, { oldRow, row });
96
+ oldRow = yield outputProcessing(dbTable, yield findRow(ctx, tableId, inputs._id));
97
+ }
98
+ catch (err) {
164
99
  if (isUserTable) {
165
- // the row has been updated, need to put it into the ctx
166
- ctx.request.body = row;
167
- yield userController.updateMetadata(ctx);
168
- return { row: ctx.body, table };
100
+ // don't include the rev, it'll be the global rev
101
+ // this time
102
+ oldRow = {
103
+ _id: inputs._id,
104
+ };
169
105
  }
170
- return (0, staticFormula_1.finaliseRow)(table, row, {
171
- oldTable: dbTable,
172
- updateFormula: true,
173
- });
106
+ else {
107
+ throw "Row does not exist";
108
+ }
109
+ }
110
+ let dbTable = yield db.get(tableId);
111
+ // need to build up full patch fields before coerce
112
+ let combinedRow = cloneDeep(oldRow);
113
+ for (let key of Object.keys(inputs)) {
114
+ if (!dbTable.schema[key])
115
+ continue;
116
+ combinedRow[key] = inputs[key];
117
+ }
118
+ // this returns the table and row incase they have been updated
119
+ let { table, row } = inputProcessing(ctx.user, dbTable, combinedRow);
120
+ const validateResult = yield validate({
121
+ row,
122
+ table,
174
123
  });
175
- }
176
- exports.patch = patch;
177
- function save(ctx) {
124
+ if (!validateResult.valid) {
125
+ ctx.throw(400, { validation: validateResult.errors });
126
+ }
127
+ // returned row is cleaned and prepared for writing to DB
128
+ row = yield linkRows.updateLinks({
129
+ eventType: linkRows.EventType.ROW_UPDATE,
130
+ row,
131
+ tableId: row.tableId,
132
+ table,
133
+ });
134
+ // check if any attachments removed
135
+ yield cleanupAttachments(table, { oldRow, row });
136
+ if (isUserTable) {
137
+ // the row has been updated, need to put it into the ctx
138
+ ctx.request.body = row;
139
+ yield userController.updateMetadata(ctx);
140
+ return { row: ctx.body, table };
141
+ }
142
+ return finaliseRow(table, row, {
143
+ oldTable: dbTable,
144
+ updateFormula: true,
145
+ });
146
+ });
147
+ exports.save = function (ctx) {
178
148
  return __awaiter(this, void 0, void 0, function* () {
179
- const db = backend_core_1.context.getAppDB();
149
+ const db = getAppDB();
180
150
  let inputs = ctx.request.body;
181
151
  inputs.tableId = ctx.params.tableId;
182
152
  if (!inputs._rev && !inputs._id) {
183
- inputs._id = (0, utils_1.generateRowID)(inputs.tableId);
153
+ inputs._id = generateRowID(inputs.tableId);
184
154
  }
185
155
  // this returns the table and row incase they have been updated
186
156
  const dbTable = yield db.get(inputs.tableId);
187
- let { table, row } = (0, rowProcessor_1.inputProcessing)(ctx.user, dbTable, inputs);
188
- const validateResult = yield (0, utils_2.validate)({
157
+ let { table, row } = inputProcessing(ctx.user, dbTable, inputs);
158
+ const validateResult = yield validate({
189
159
  row,
190
160
  table,
191
161
  });
@@ -193,96 +163,86 @@ function save(ctx) {
193
163
  throw { validation: validateResult.errors };
194
164
  }
195
165
  // make sure link rows are up to date
196
- row = (yield linkRows.updateLinks({
166
+ row = yield linkRows.updateLinks({
197
167
  eventType: linkRows.EventType.ROW_SAVE,
198
168
  row,
199
169
  tableId: row.tableId,
200
170
  table,
201
- }));
202
- return (0, staticFormula_1.finaliseRow)(table, row, {
171
+ });
172
+ return finaliseRow(table, row, {
203
173
  oldTable: dbTable,
204
174
  updateFormula: true,
205
175
  });
206
176
  });
207
- }
208
- exports.save = save;
209
- function fetchView(ctx) {
210
- return __awaiter(this, void 0, void 0, function* () {
211
- const viewName = ctx.params.viewName;
212
- // if this is a table view being looked for just transfer to that
213
- if (viewName.startsWith(utils_1.DocumentType.TABLE)) {
214
- ctx.params.tableId = viewName;
215
- return fetch(ctx);
216
- }
217
- const db = backend_core_1.context.getAppDB();
218
- const { calculation, group, field } = ctx.query;
219
- const viewInfo = yield getView(db, viewName);
220
- let response;
221
- if (environment_1.default.SELF_HOSTED) {
222
- response = yield db.query(`database/${viewName}`, {
223
- include_docs: !calculation,
224
- group: !!group,
225
- });
226
- }
227
- else {
228
- const tableId = viewInfo.meta.tableId;
229
- const data = yield getRawTableData(ctx, db, tableId);
230
- response = yield inMemoryViews.runView(viewInfo, calculation, !!group, data);
231
- }
232
- let rows;
233
- if (!calculation) {
234
- response.rows = response.rows.map(row => row.doc);
235
- let table;
236
- try {
237
- table = yield db.get(viewInfo.meta.tableId);
238
- }
239
- catch (err) {
240
- /* istanbul ignore next */
241
- table = {
242
- schema: {},
243
- };
244
- }
245
- rows = yield (0, rowProcessor_1.outputProcessing)(table, response.rows);
246
- }
247
- if (calculation === CALCULATION_TYPES.STATS) {
248
- response.rows = response.rows.map(row => (Object.assign(Object.assign({ group: row.key, field }, row.value), { avg: row.value.sum / row.value.count })));
249
- rows = response.rows;
177
+ };
178
+ exports.fetchView = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
179
+ const viewName = ctx.params.viewName;
180
+ // if this is a table view being looked for just transfer to that
181
+ if (viewName.startsWith(DocumentType.TABLE)) {
182
+ ctx.params.tableId = viewName;
183
+ return exports.fetch(ctx);
184
+ }
185
+ const db = getAppDB();
186
+ const { calculation, group, field } = ctx.query;
187
+ const viewInfo = yield getView(db, viewName);
188
+ let response;
189
+ if (env.SELF_HOSTED) {
190
+ response = yield db.query(`database/${viewName}`, {
191
+ include_docs: !calculation,
192
+ group: !!group,
193
+ });
194
+ }
195
+ else {
196
+ const tableId = viewInfo.meta.tableId;
197
+ const data = yield getRawTableData(ctx, db, tableId);
198
+ response = yield inMemoryViews.runView(viewInfo, calculation, group, data);
199
+ }
200
+ let rows;
201
+ if (!calculation) {
202
+ response.rows = response.rows.map(row => row.doc);
203
+ let table;
204
+ try {
205
+ table = yield db.get(viewInfo.meta.tableId);
250
206
  }
251
- if (calculation === CALCULATION_TYPES.COUNT ||
252
- calculation === CALCULATION_TYPES.SUM) {
253
- rows = response.rows.map(row => ({
254
- group: row.key,
255
- field,
256
- value: row.value,
257
- }));
207
+ catch (err) {
208
+ /* istanbul ignore next */
209
+ table = {
210
+ schema: {},
211
+ };
258
212
  }
259
- return rows;
260
- });
261
- }
262
- exports.fetchView = fetchView;
263
- function fetch(ctx) {
264
- return __awaiter(this, void 0, void 0, function* () {
265
- const db = backend_core_1.context.getAppDB();
266
- const tableId = ctx.params.tableId;
267
- let table = yield db.get(tableId);
268
- let rows = yield getRawTableData(ctx, db, tableId);
269
- return (0, rowProcessor_1.outputProcessing)(table, rows);
270
- });
271
- }
272
- exports.fetch = fetch;
273
- function find(ctx) {
274
- return __awaiter(this, void 0, void 0, function* () {
275
- const db = backend_core_1.db.getDB(ctx.appId);
276
- const table = yield db.get(ctx.params.tableId);
277
- let row = yield (0, utils_2.findRow)(ctx, ctx.params.tableId, ctx.params.rowId);
278
- row = yield (0, rowProcessor_1.outputProcessing)(table, row);
279
- return row;
280
- });
281
- }
282
- exports.find = find;
283
- function destroy(ctx) {
213
+ rows = yield outputProcessing(table, response.rows);
214
+ }
215
+ if (calculation === CALCULATION_TYPES.STATS) {
216
+ response.rows = response.rows.map(row => (Object.assign(Object.assign({ group: row.key, field }, row.value), { avg: row.value.sum / row.value.count })));
217
+ rows = response.rows;
218
+ }
219
+ if (calculation === CALCULATION_TYPES.COUNT ||
220
+ calculation === CALCULATION_TYPES.SUM) {
221
+ rows = response.rows.map(row => ({
222
+ group: row.key,
223
+ field,
224
+ value: row.value,
225
+ }));
226
+ }
227
+ return rows;
228
+ });
229
+ exports.fetch = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
230
+ const db = getAppDB();
231
+ const tableId = ctx.params.tableId;
232
+ let table = yield db.get(tableId);
233
+ let rows = yield getRawTableData(ctx, db, tableId);
234
+ return outputProcessing(table, rows);
235
+ });
236
+ exports.find = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
237
+ const db = dangerousGetDB(ctx.appId);
238
+ const table = yield db.get(ctx.params.tableId);
239
+ let row = yield findRow(ctx, ctx.params.tableId, ctx.params.rowId);
240
+ row = yield outputProcessing(table, row);
241
+ return row;
242
+ });
243
+ exports.destroy = function (ctx) {
284
244
  return __awaiter(this, void 0, void 0, function* () {
285
- const db = backend_core_1.context.getAppDB();
245
+ const db = getAppDB();
286
246
  const { _id } = ctx.request.body;
287
247
  let row = yield db.get(_id);
288
248
  let _rev = ctx.request.body._rev || row._rev;
@@ -291,7 +251,7 @@ function destroy(ctx) {
291
251
  }
292
252
  const table = yield db.get(row.tableId);
293
253
  // update the row to include full relationships before deleting them
294
- row = yield (0, rowProcessor_1.outputProcessing)(table, row, { squash: false });
254
+ row = yield outputProcessing(table, row, { squash: false });
295
255
  // now remove the relationships
296
256
  yield linkRows.updateLinks({
297
257
  eventType: linkRows.EventType.ROW_DELETE,
@@ -299,11 +259,11 @@ function destroy(ctx) {
299
259
  tableId: row.tableId,
300
260
  });
301
261
  // remove any attachments that were on the row from object storage
302
- yield (0, rowProcessor_1.cleanupAttachments)(table, { row });
262
+ yield cleanupAttachments(table, { row });
303
263
  // remove any static formula
304
- yield (0, staticFormula_1.updateRelatedFormula)(table, row);
264
+ yield updateRelatedFormula(table, row);
305
265
  let response;
306
- if (ctx.params.tableId === utils_1.InternalTables.USER_METADATA) {
266
+ if (ctx.params.tableId === InternalTables.USER_METADATA) {
307
267
  ctx.params = {
308
268
  id: _id,
309
269
  };
@@ -315,172 +275,153 @@ function destroy(ctx) {
315
275
  }
316
276
  return { response, row };
317
277
  });
318
- }
319
- exports.destroy = destroy;
320
- function bulkDestroy(ctx) {
321
- return __awaiter(this, void 0, void 0, function* () {
322
- const db = backend_core_1.context.getAppDB();
323
- const tableId = ctx.params.tableId;
324
- const table = yield db.get(tableId);
325
- let { rows } = ctx.request.body;
326
- // before carrying out any updates, make sure the rows are ready to be returned
327
- // they need to be the full rows (including previous relationships) for automations
328
- const processedRows = (yield (0, rowProcessor_1.outputProcessing)(table, rows, {
329
- squash: false,
330
- }));
331
- // remove the relationships first
332
- let updates = processedRows.map(row => linkRows.updateLinks({
333
- eventType: linkRows.EventType.ROW_DELETE,
334
- row,
335
- tableId: row.tableId,
278
+ };
279
+ exports.bulkDestroy = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
280
+ const db = getAppDB();
281
+ const tableId = ctx.params.tableId;
282
+ const table = yield db.get(tableId);
283
+ let { rows } = ctx.request.body;
284
+ // before carrying out any updates, make sure the rows are ready to be returned
285
+ // they need to be the full rows (including previous relationships) for automations
286
+ rows = yield outputProcessing(table, rows, { squash: false });
287
+ // remove the relationships first
288
+ let updates = rows.map(row => linkRows.updateLinks({
289
+ eventType: linkRows.EventType.ROW_DELETE,
290
+ row,
291
+ tableId: row.tableId,
292
+ }));
293
+ if (tableId === InternalTables.USER_METADATA) {
294
+ updates = updates.concat(rows.map(row => {
295
+ ctx.params = {
296
+ id: row._id,
297
+ };
298
+ return userController.destroyMetadata(ctx);
336
299
  }));
337
- if (tableId === utils_1.InternalTables.USER_METADATA) {
338
- updates = updates.concat(processedRows.map(row => {
339
- ctx.params = {
340
- id: row._id,
341
- };
342
- return userController.destroyMetadata(ctx);
343
- }));
344
- }
345
- else {
346
- yield db.bulkDocs(processedRows.map(row => (Object.assign(Object.assign({}, row), { _deleted: true }))));
300
+ }
301
+ else {
302
+ yield db.bulkDocs(rows.map(row => (Object.assign(Object.assign({}, row), { _deleted: true }))));
303
+ }
304
+ // remove any attachments that were on the rows from object storage
305
+ yield cleanupAttachments(table, { rows });
306
+ yield updateRelatedFormula(table, rows);
307
+ yield Promise.all(updates);
308
+ return { response: { ok: true }, rows };
309
+ });
310
+ exports.search = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
311
+ // Fetch the whole table when running in cypress, as search doesn't work
312
+ if (!env.COUCH_DB_URL && env.isCypress()) {
313
+ return { rows: yield exports.fetch(ctx) };
314
+ }
315
+ const { tableId } = ctx.params;
316
+ const db = getAppDB();
317
+ const _a = ctx.request.body, { paginate, query } = _a, params = __rest(_a, ["paginate", "query"]);
318
+ params.version = ctx.version;
319
+ params.tableId = tableId;
320
+ let response;
321
+ if (paginate) {
322
+ response = yield paginatedSearch(query, params);
323
+ }
324
+ else {
325
+ response = yield fullSearch(query, params);
326
+ }
327
+ // Enrich search results with relationships
328
+ if (response.rows && response.rows.length) {
329
+ // enrich with global users if from users table
330
+ if (tableId === InternalTables.USER_METADATA) {
331
+ response.rows = yield getGlobalUsersFromMetadata(response.rows);
347
332
  }
348
- // remove any attachments that were on the rows from object storage
349
- yield (0, rowProcessor_1.cleanupAttachments)(table, { rows: processedRows });
350
- yield (0, staticFormula_1.updateRelatedFormula)(table, processedRows);
351
- yield Promise.all(updates);
352
- return { response: { ok: true }, rows: processedRows };
333
+ const table = yield db.get(tableId);
334
+ response.rows = yield outputProcessing(table, response.rows);
335
+ }
336
+ return response;
337
+ });
338
+ exports.validate = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
339
+ return validate({
340
+ tableId: ctx.params.tableId,
341
+ row: ctx.request.body,
353
342
  });
354
- }
355
- exports.bulkDestroy = bulkDestroy;
356
- function search(ctx) {
357
- return __awaiter(this, void 0, void 0, function* () {
358
- // Fetch the whole table when running in cypress, as search doesn't work
359
- if (!environment_1.default.COUCH_DB_URL && environment_1.default.isCypress()) {
360
- return { rows: yield fetch(ctx) };
361
- }
362
- const { tableId } = ctx.params;
363
- const db = backend_core_1.context.getAppDB();
364
- const _a = ctx.request.body, { paginate, query } = _a, params = __rest(_a, ["paginate", "query"]);
365
- params.version = ctx.version;
366
- params.tableId = tableId;
367
- let response;
368
- if (paginate) {
369
- response = yield (0, internalSearch_1.paginatedSearch)(query, params);
370
- }
371
- else {
372
- response = yield (0, internalSearch_1.fullSearch)(query, params);
373
- }
374
- // Enrich search results with relationships
375
- if (response.rows && response.rows.length) {
376
- // enrich with global users if from users table
377
- if (tableId === utils_1.InternalTables.USER_METADATA) {
378
- response.rows = yield (0, global_1.getGlobalUsersFromMetadata)(response.rows);
343
+ });
344
+ exports.exportRows = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
345
+ const db = getAppDB();
346
+ const table = yield db.get(ctx.params.tableId);
347
+ const rowIds = ctx.request.body.rows;
348
+ let format = ctx.query.format;
349
+ const { columns } = ctx.request.body;
350
+ let response = (yield db.allDocs({
351
+ include_docs: true,
352
+ keys: rowIds,
353
+ })).rows.map(row => row.doc);
354
+ let result = yield outputProcessing(table, response);
355
+ let rows = [];
356
+ // Filter data to only specified columns if required
357
+ if (columns && columns.length) {
358
+ for (let i = 0; i < result.length; i++) {
359
+ rows[i] = {};
360
+ for (let column of columns) {
361
+ rows[i][column] = result[i][column];
379
362
  }
380
- const table = yield db.get(tableId);
381
- response.rows = yield (0, rowProcessor_1.outputProcessing)(table, response.rows);
382
363
  }
383
- return response;
384
- });
385
- }
386
- exports.search = search;
387
- function validate(ctx) {
388
- return __awaiter(this, void 0, void 0, function* () {
389
- return (0, utils_2.validate)({
390
- tableId: ctx.params.tableId,
391
- row: ctx.request.body,
392
- });
364
+ }
365
+ else {
366
+ rows = result;
367
+ }
368
+ let headers = Object.keys(rows[0]);
369
+ const exporter = exporters[format];
370
+ const filename = `export.${format}`;
371
+ // send down the file
372
+ ctx.attachment(filename);
373
+ return apiFileReturn(exporter(headers, rows));
374
+ });
375
+ exports.fetchEnrichedRow = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
376
+ const db = getAppDB();
377
+ const tableId = ctx.params.tableId;
378
+ const rowId = ctx.params.rowId;
379
+ // need table to work out where links go in row
380
+ let [table, row] = yield Promise.all([
381
+ db.get(tableId),
382
+ findRow(ctx, tableId, rowId),
383
+ ]);
384
+ // get the link docs
385
+ const linkVals = yield linkRows.getLinkDocuments({
386
+ tableId,
387
+ rowId,
393
388
  });
394
- }
395
- exports.validate = validate;
396
- function exportRows(ctx) {
397
- return __awaiter(this, void 0, void 0, function* () {
398
- const db = backend_core_1.context.getAppDB();
399
- const table = yield db.get(ctx.params.tableId);
400
- const rowIds = ctx.request.body.rows;
401
- let format = ctx.query.format;
402
- const { columns } = ctx.request.body;
403
- let response = (yield db.allDocs({
404
- include_docs: true,
405
- keys: rowIds,
406
- })).rows.map(row => row.doc);
407
- let result = (yield (0, rowProcessor_1.outputProcessing)(table, response));
408
- let rows = [];
409
- // Filter data to only specified columns if required
410
- if (columns && columns.length) {
411
- for (let i = 0; i < result.length; i++) {
412
- rows[i] = {};
413
- for (let column of columns) {
414
- rows[i][column] = result[i][column];
415
- }
416
- }
389
+ // look up the actual rows based on the ids
390
+ let response = (yield db.allDocs({
391
+ include_docs: true,
392
+ keys: linkVals.map(linkVal => linkVal.id),
393
+ })).rows.map(row => row.doc);
394
+ // group responses by table
395
+ let groups = {}, tables = {};
396
+ for (let row of response) {
397
+ if (!row.tableId) {
398
+ row.tableId = getTableIDFromRowID(row._id);
399
+ }
400
+ const linkedTableId = row.tableId;
401
+ if (groups[linkedTableId] == null) {
402
+ groups[linkedTableId] = [row];
403
+ tables[linkedTableId] = yield db.get(linkedTableId);
417
404
  }
418
405
  else {
419
- rows = result;
406
+ groups[linkedTableId].push(row);
420
407
  }
421
- let headers = Object.keys(rows[0]);
422
- // @ts-ignore
423
- const exporter = exporters[format];
424
- const filename = `export.${format}`;
425
- // send down the file
426
- ctx.attachment(filename);
427
- return (0, fileSystem_1.apiFileReturn)(exporter(headers, rows));
428
- });
429
- }
430
- exports.exportRows = exportRows;
431
- function fetchEnrichedRow(ctx) {
432
- return __awaiter(this, void 0, void 0, function* () {
433
- const db = backend_core_1.context.getAppDB();
434
- const tableId = ctx.params.tableId;
435
- const rowId = ctx.params.rowId;
436
- // need table to work out where links go in row
437
- let [table, row] = yield Promise.all([
438
- db.get(tableId),
439
- (0, utils_2.findRow)(ctx, tableId, rowId),
440
- ]);
441
- // get the link docs
442
- const linkVals = (yield linkRows.getLinkDocuments({
443
- tableId,
444
- rowId,
445
- }));
446
- // look up the actual rows based on the ids
447
- let response = (yield db.allDocs({
448
- include_docs: true,
449
- keys: linkVals.map(linkVal => linkVal.id),
450
- })).rows.map(row => row.doc);
451
- // group responses by table
452
- let groups = {}, tables = {};
453
- for (let row of response) {
454
- if (!row.tableId) {
455
- row.tableId = (0, utils_1.getTableIDFromRowID)(row._id);
456
- }
457
- const linkedTableId = row.tableId;
458
- if (groups[linkedTableId] == null) {
459
- groups[linkedTableId] = [row];
460
- tables[linkedTableId] = yield db.get(linkedTableId);
461
- }
462
- else {
463
- groups[linkedTableId].push(row);
464
- }
465
- }
466
- let linkedRows = [];
467
- for (let [tableId, rows] of Object.entries(groups)) {
468
- // need to include the IDs in these rows for any links they may have
469
- linkedRows = linkedRows.concat(yield (0, rowProcessor_1.outputProcessing)(tables[tableId], rows));
470
- }
471
- // insert the link rows in the correct place throughout the main row
472
- for (let fieldName of Object.keys(table.schema)) {
473
- let field = table.schema[fieldName];
474
- if (field.type === constants_1.FieldTypes.LINK) {
475
- // find the links that pertain to this field, get their indexes
476
- const linkIndexes = linkVals
477
- .filter(link => link.fieldName === fieldName)
478
- .map(link => linkVals.indexOf(link));
479
- // find the rows that the links state are linked to this field
480
- row[fieldName] = linkedRows.filter((linkRow, index) => linkIndexes.includes(index));
481
- }
408
+ }
409
+ let linkedRows = [];
410
+ for (let [tableId, rows] of Object.entries(groups)) {
411
+ // need to include the IDs in these rows for any links they may have
412
+ linkedRows = linkedRows.concat(yield outputProcessing(tables[tableId], rows));
413
+ }
414
+ // insert the link rows in the correct place throughout the main row
415
+ for (let fieldName of Object.keys(table.schema)) {
416
+ let field = table.schema[fieldName];
417
+ if (field.type === FieldTypes.LINK) {
418
+ // find the links that pertain to this field, get their indexes
419
+ const linkIndexes = linkVals
420
+ .filter(link => link.fieldName === fieldName)
421
+ .map(link => linkVals.indexOf(link));
422
+ // find the rows that the links state are linked to this field
423
+ row[fieldName] = linkedRows.filter((linkRow, index) => linkIndexes.includes(index));
482
424
  }
483
- return row;
484
- });
485
- }
486
- exports.fetchEnrichedRow = fetchEnrichedRow;
425
+ }
426
+ return row;
427
+ });