@budibase/server 2.1.32-alpha.8 → 2.1.32

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 (663) hide show
  1. package/__mocks__/aws-sdk.ts +0 -14
  2. package/__mocks__/node-fetch.ts +1 -5
  3. package/builder/assets/{index.7176fd99.css → index.534f6c29.css} +1 -1
  4. package/builder/assets/{index.3efa93e2.js → index.968304ca.js} +316 -316
  5. package/builder/index.html +2 -2
  6. package/coverage/clover.xml +3681 -10588
  7. package/coverage/coverage-final.json +77 -225
  8. package/coverage/lcov-report/{src/api/controllers/apikeys.ts.html → api/controllers/apikeys.js.html} +26 -26
  9. package/coverage/lcov-report/{src/api/controllers/automation.ts.html → api/controllers/automation.js.html} +75 -75
  10. package/coverage/lcov-report/{src/api/controllers/cloud.ts.html → api/controllers/cloud.js.html} +47 -47
  11. package/coverage/lcov-report/{src/api/controllers/datasource.ts.html → api/controllers/datasource.js.html} +87 -246
  12. package/coverage/lcov-report/{src/api/controllers/dev.ts.html → api/controllers/dev.js.html} +71 -53
  13. package/coverage/lcov-report/api/controllers/index.html +326 -0
  14. package/coverage/lcov-report/{src/api → api}/controllers/integration.js.html +10 -10
  15. package/coverage/lcov-report/{src/api/controllers/layout.ts.html → api/controllers/layout.js.html} +26 -26
  16. package/coverage/lcov-report/{src/api/controllers/metadata.ts.html → api/controllers/metadata.js.html} +23 -26
  17. package/coverage/lcov-report/{src/api → api}/controllers/migrations.js.html +10 -10
  18. package/coverage/lcov-report/{src/api/controllers/permission.ts.html → api/controllers/permission.js.html} +71 -80
  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} +17 -17
  21. package/coverage/lcov-report/{src/api/controllers/role.ts.html → api/controllers/role.js.html} +56 -44
  22. package/coverage/lcov-report/{src/api/controllers/routing.ts.html → api/controllers/routing.js.html} +56 -65
  23. package/coverage/lcov-report/{src/api → api}/controllers/row/external.js.html +13 -13
  24. package/coverage/lcov-report/{src/api → api}/controllers/row/index.html +46 -76
  25. package/coverage/lcov-report/{src/api → api}/controllers/row/internal.js.html +29 -26
  26. package/coverage/lcov-report/{src/api/controllers/row/internalSearch.ts.html → api/controllers/row/internalSearch.js.html} +110 -182
  27. package/coverage/lcov-report/{src/api/controllers/row/staticFormula.ts.html → api/controllers/row/staticFormula.js.html} +54 -69
  28. package/coverage/lcov-report/{src/api/controllers/row/utils.ts.html → api/controllers/row/utils.js.html} +43 -64
  29. package/coverage/lcov-report/{src/api/controllers/script.ts.html → api/controllers/script.js.html} +14 -17
  30. package/coverage/lcov-report/{src/api/controllers/table/bulkFormula.ts.html → api/controllers/table/bulkFormula.js.html} +54 -96
  31. package/coverage/lcov-report/{src/api/controllers/table/external.ts.html → api/controllers/table/external.js.html} +100 -196
  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} +35 -35
  34. package/coverage/lcov-report/{src/api/controllers/templates.ts.html → api/controllers/templates.js.html} +25 -34
  35. package/coverage/lcov-report/{src/api/controllers/user.ts.html → api/controllers/user.js.html} +85 -79
  36. package/coverage/lcov-report/{src/api/controllers/view/exporters.ts.html → api/controllers/view/exporters.js.html} +14 -20
  37. package/coverage/lcov-report/{src/api → api}/controllers/view/index.html +30 -30
  38. package/coverage/lcov-report/{src/api/controllers/view/index.ts.html → api/controllers/view/index.js.html} +48 -75
  39. package/coverage/lcov-report/{src/api/controllers/view/utils.ts.html → api/controllers/view/utils.js.html} +43 -61
  40. package/coverage/lcov-report/{src/api → api}/controllers/view/viewBuilder.js.html +10 -10
  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} +56 -35
  43. package/coverage/lcov-report/{src/api/routes/analytics.ts.html → api/routes/analytics.js.html} +14 -14
  44. package/coverage/lcov-report/{src/middleware/selfhost.ts.html → api/routes/apikeys.js.html} +27 -27
  45. package/coverage/lcov-report/{src/api/routes/automation.ts.html → api/routes/automation.js.html} +42 -48
  46. package/coverage/lcov-report/{src/api/routes/backup.ts.html → api/routes/cloud.js.html} +21 -21
  47. package/coverage/lcov-report/{src/api/routes/component.ts.html → api/routes/component.js.html} +17 -17
  48. package/coverage/lcov-report/{src/api/routes/datasource.ts.html → api/routes/datasource.js.html} +33 -60
  49. package/coverage/lcov-report/{src/api/routes/cloud.ts.html → api/routes/deploy.js.html} +22 -25
  50. package/coverage/lcov-report/{src/api/routes/webhook.ts.html → api/routes/dev.js.html} +43 -46
  51. package/coverage/lcov-report/{src/api → api}/routes/index.html +47 -167
  52. package/coverage/lcov-report/{src/api/routes/apikeys.ts.html → api/routes/integration.js.html} +18 -18
  53. package/coverage/lcov-report/{src/api/routes/layout.ts.html → api/routes/layout.js.html} +18 -18
  54. package/coverage/lcov-report/{src/api/routes/metadata.ts.html → api/routes/metadata.js.html} +24 -24
  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/view.ts.html → api/routes/permission.js.html} +37 -40
  57. package/coverage/lcov-report/{src/api/routes/query.ts.html → api/routes/query.js.html} +42 -33
  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} +17 -17
  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} +33 -24
  63. package/coverage/lcov-report/{src/api/routes/templates.ts.html → api/routes/templates.js.html} +18 -18
  64. package/coverage/lcov-report/{src/api/routes/user.ts.html → api/routes/user.js.html} +35 -29
  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} +58 -46
  67. package/coverage/lcov-report/{src/definitions/automations.ts.html → api/routes/view.js.html} +41 -44
  68. package/coverage/lcov-report/{src/automations → automations}/actions.js.html +10 -10
  69. package/coverage/lcov-report/{src/automations → automations}/automationUtils.js.html +10 -10
  70. package/coverage/lcov-report/{src/automations → automations}/bullboard.js.html +10 -10
  71. package/coverage/lcov-report/{src/automations → automations}/index.html +24 -39
  72. package/coverage/lcov-report/{src/automations → automations}/index.js.html +10 -10
  73. package/coverage/lcov-report/{src/automations → automations}/steps/bash.js.html +10 -10
  74. package/coverage/lcov-report/{src/automations → automations}/steps/delay.js.html +10 -10
  75. package/coverage/lcov-report/{src/automations → automations}/steps/discord.js.html +10 -10
  76. package/coverage/lcov-report/{src/automations → automations}/steps/executeQuery.js.html +10 -10
  77. package/coverage/lcov-report/{src/automations → automations}/steps/executeScript.js.html +10 -10
  78. package/coverage/lcov-report/{src/automations → automations}/steps/filter.js.html +10 -10
  79. package/coverage/lcov-report/{src/automations → automations}/steps/index.html +26 -56
  80. package/coverage/lcov-report/{src/automations → automations}/steps/integromat.js.html +10 -10
  81. package/coverage/lcov-report/{src/automations → automations}/steps/loop.js.html +10 -10
  82. package/coverage/lcov-report/{src/automations → automations}/steps/outgoingWebhook.js.html +10 -10
  83. package/coverage/lcov-report/{src/automations → automations}/steps/queryRows.js.html +10 -10
  84. package/coverage/lcov-report/{src/automations → automations}/steps/sendSmtpEmail.js.html +10 -10
  85. package/coverage/lcov-report/{src/automations → automations}/steps/serverLog.js.html +10 -10
  86. package/coverage/lcov-report/{src/automations → automations}/steps/slack.js.html +10 -10
  87. package/coverage/lcov-report/{src/automations → automations}/steps/updateRow.js.html +10 -10
  88. package/coverage/lcov-report/{src/automations → automations}/steps/utils.js.html +19 -19
  89. package/coverage/lcov-report/{src/automations → automations}/steps/zapier.js.html +10 -10
  90. package/coverage/lcov-report/{src/automations → automations}/triggerInfo/app.js.html +10 -10
  91. package/coverage/lcov-report/{src/automations → automations}/triggerInfo/cron.js.html +10 -10
  92. package/coverage/lcov-report/{src/automations → automations}/triggerInfo/index.html +10 -10
  93. package/coverage/lcov-report/{src/automations → automations}/triggerInfo/index.js.html +10 -10
  94. package/coverage/lcov-report/{src/automations → automations}/triggerInfo/rowDeleted.js.html +10 -10
  95. package/coverage/lcov-report/{src/automations → automations}/triggerInfo/rowSaved.js.html +10 -10
  96. package/coverage/lcov-report/{src/automations → automations}/triggerInfo/rowUpdated.js.html +10 -10
  97. package/coverage/lcov-report/{src/automations → automations}/triggerInfo/webhook.js.html +10 -10
  98. package/coverage/lcov-report/{src/automations → automations}/triggers.js.html +23 -20
  99. package/coverage/lcov-report/{src/constants → constants}/index.html +14 -14
  100. package/coverage/lcov-report/{src/constants → constants}/index.js.html +22 -16
  101. package/coverage/lcov-report/{src/constants → constants}/layouts.js.html +10 -10
  102. package/coverage/lcov-report/{src/constants → constants}/screens.js.html +12 -12
  103. package/coverage/lcov-report/{src/db → db}/inMemoryView.js.html +13 -13
  104. package/coverage/lcov-report/{src/db → db}/index.html +27 -42
  105. package/coverage/lcov-report/{src/db → db}/index.js.html +18 -18
  106. package/coverage/lcov-report/{src/db → db}/linkedRows/LinkController.js.html +160 -22
  107. package/coverage/lcov-report/{src/db → db}/linkedRows/index.html +22 -37
  108. package/coverage/lcov-report/{src/db → db}/linkedRows/index.js.html +12 -12
  109. package/coverage/lcov-report/{src/db → db}/linkedRows/linkUtils.js.html +13 -13
  110. package/coverage/lcov-report/{src/db → db}/newid.js.html +10 -10
  111. package/coverage/lcov-report/{src/db/utils.ts.html → db/utils.js.html} +153 -105
  112. package/coverage/lcov-report/{src/events → events}/AutomationEmitter.js.html +10 -10
  113. package/coverage/lcov-report/{src/events → events}/index.html +10 -10
  114. package/coverage/lcov-report/{src/events → events}/index.js.html +10 -10
  115. package/coverage/lcov-report/{src/events → events}/utils.js.html +10 -10
  116. package/coverage/lcov-report/index.html +161 -671
  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} +28 -31
  120. package/coverage/lcov-report/{src/middleware/builder.ts.html → middleware/builder.js.html} +37 -43
  121. package/coverage/lcov-report/{src/middleware/currentapp.ts.html → middleware/currentapp.js.html} +68 -77
  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} +24 -24
  125. package/coverage/lcov-report/{src/middleware/resourceId.ts.html → middleware/resourceId.js.html} +25 -40
  126. package/coverage/lcov-report/{src/tests/utilities/index.js.html → middleware/selfhost.js.html} +30 -33
  127. package/coverage/lcov-report/{src/middleware/utils.ts.html → middleware/utils.js.html} +13 -19
  128. package/coverage/lcov-report/{src/utilities/budibaseDir.ts.html → utilities/budibaseDir.js.html} +12 -12
  129. package/coverage/lcov-report/{src/utilities → utilities}/centralPath.js.html +10 -10
  130. package/coverage/lcov-report/{src/utilities → utilities}/csvParser.js.html +10 -10
  131. package/coverage/lcov-report/{src/utilities/global.ts.html → utilities/global.js.html} +74 -107
  132. package/coverage/lcov-report/{src/utilities → utilities}/index.html +61 -76
  133. package/coverage/lcov-report/{src/utilities/index.ts.html → utilities/index.js.html} +53 -77
  134. package/coverage/lcov-report/{src/utilities → utilities}/plugins.js.html +10 -10
  135. package/coverage/lcov-report/{src/utilities → utilities}/queue/inMemoryQueue.js.html +10 -10
  136. package/coverage/lcov-report/{src/utilities → utilities}/queue/index.html +10 -10
  137. package/coverage/lcov-report/{src/sdk → utilities/routing}/index.html +10 -10
  138. package/coverage/lcov-report/{src/api/routes/role.ts.html → utilities/routing/index.js.html} +42 -39
  139. package/coverage/lcov-report/{src/migrations → utilities/rowProcessor}/index.html +37 -22
  140. package/coverage/lcov-report/{src/utilities/rowProcessor/index.ts.html → utilities/rowProcessor/index.js.html} +344 -113
  141. package/coverage/lcov-report/{src/utilities/rowProcessor/utils.ts.html → utilities/rowProcessor/utils.js.html} +38 -50
  142. package/coverage/lcov-report/{src/utilities → utilities}/scriptRunner.js.html +10 -10
  143. package/coverage/lcov-report/{src/utilities/security.ts.html → utilities/security.js.html} +74 -56
  144. package/coverage/lcov-report/{src/utilities → utilities}/statusCodes.js.html +10 -10
  145. package/coverage/lcov-report/{src/utilities → utilities}/usageQuota/index.html +27 -27
  146. package/coverage/lcov-report/{src/utilities/usageQuota/rows.ts.html → utilities/usageQuota/rows.js.html} +46 -34
  147. package/coverage/lcov-report/{src/utilities → utilities}/usageQuota/usageQuoteReset.js.html +10 -10
  148. package/coverage/lcov-report/{src/utilities/users.ts.html → utilities/users.js.html} +35 -29
  149. package/coverage/lcov-report/{src/utilities/workerRequests.ts.html → utilities/workerRequests.js.html} +61 -76
  150. package/coverage/lcov.info +6772 -19273
  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 +84 -104
  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 +92 -144
  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/layout.js +15 -18
  161. package/dist/api/controllers/metadata.js +37 -51
  162. package/dist/api/controllers/permission.js +43 -52
  163. package/dist/api/controllers/plugin/index.js +7 -6
  164. package/dist/api/controllers/public/applications.js +9 -17
  165. package/dist/api/controllers/public/tables.js +9 -29
  166. package/dist/api/controllers/query/import/index.js +2 -1
  167. package/dist/api/controllers/query/index.js +13 -10
  168. package/dist/api/controllers/query/validation.js +33 -41
  169. package/dist/api/controllers/role.js +27 -29
  170. package/dist/api/controllers/routing.js +58 -71
  171. package/dist/api/controllers/row/ExternalRequest.js +8 -12
  172. package/dist/api/controllers/row/external.js +3 -3
  173. package/dist/api/controllers/row/index.js +7 -16
  174. package/dist/api/controllers/row/internal.js +12 -11
  175. package/dist/api/controllers/row/internalSearch.js +80 -95
  176. package/dist/api/controllers/row/staticFormula.js +75 -85
  177. package/dist/api/controllers/row/utils.js +84 -118
  178. package/dist/api/controllers/screen.js +66 -81
  179. package/dist/api/controllers/script.js +6 -13
  180. package/dist/api/controllers/static/index.js +11 -9
  181. package/dist/api/controllers/table/bulkFormula.js +35 -47
  182. package/dist/api/controllers/table/external.js +57 -67
  183. package/dist/api/controllers/table/index.js +33 -66
  184. package/dist/api/controllers/table/internal.js +6 -5
  185. package/dist/api/controllers/table/utils.js +35 -39
  186. package/dist/api/controllers/templates.js +10 -17
  187. package/dist/api/controllers/user.js +70 -82
  188. package/dist/api/controllers/view/exporters.js +4 -8
  189. package/dist/api/controllers/view/index.js +153 -201
  190. package/dist/api/controllers/view/utils.js +121 -151
  191. package/dist/api/index.js +34 -38
  192. package/dist/api/routes/analytics.js +3 -29
  193. package/dist/api/routes/apikeys.js +7 -33
  194. package/dist/api/routes/application.js +9 -8
  195. package/dist/api/routes/auth.js +2 -1
  196. package/dist/api/routes/automation.js +20 -46
  197. package/dist/api/routes/backup.js +4 -3
  198. package/dist/api/routes/cloud.js +6 -32
  199. package/dist/api/routes/component.js +6 -32
  200. package/dist/api/routes/datasource.js +13 -39
  201. package/dist/api/routes/deploy.js +8 -34
  202. package/dist/api/routes/dev.js +10 -36
  203. package/dist/api/routes/integration.js +7 -10
  204. package/dist/api/routes/layout.js +7 -33
  205. package/dist/api/routes/metadata.js +10 -36
  206. package/dist/api/routes/migrations.js +6 -32
  207. package/dist/api/routes/permission.js +12 -38
  208. package/dist/api/routes/plugin.js +5 -5
  209. package/dist/api/routes/public/index.js +9 -9
  210. package/dist/api/routes/query.js +15 -42
  211. package/dist/api/routes/role.js +10 -36
  212. package/dist/api/routes/routing.js +6 -32
  213. package/dist/api/routes/row.js +11 -12
  214. package/dist/api/routes/screen.js +9 -35
  215. package/dist/api/routes/script.js +6 -32
  216. package/dist/api/routes/static.js +9 -9
  217. package/dist/api/routes/table.js +13 -40
  218. package/dist/api/routes/templates.js +7 -33
  219. package/dist/api/routes/tests/utilities/TestFunctions.js +8 -6
  220. package/dist/api/routes/user.js +13 -40
  221. package/dist/api/routes/utils/validators.js +126 -142
  222. package/dist/api/routes/view.js +12 -38
  223. package/dist/api/routes/webhook.js +2 -1
  224. package/dist/app.js +4 -3
  225. package/dist/automations/tests/utilities/index.js +12 -21
  226. package/dist/automations/triggers.js +6 -5
  227. package/dist/automations/utils.js +8 -9
  228. package/dist/constants/index.js +5 -3
  229. package/dist/constants/screens.js +2 -2
  230. package/dist/db/inMemoryView.js +3 -3
  231. package/dist/db/linkedRows/LinkController.js +31 -4
  232. package/dist/db/linkedRows/index.js +2 -2
  233. package/dist/db/linkedRows/linkUtils.js +3 -3
  234. package/dist/db/utils.js +119 -146
  235. package/dist/db/views/staticViews.js +4 -4
  236. package/dist/integrations/elasticsearch.js +2 -26
  237. package/dist/integrations/googlesheets.js +6 -4
  238. package/dist/integrations/index.js +6 -15
  239. package/dist/integrations/s3.js +1 -157
  240. package/dist/middleware/appInfo.js +9 -14
  241. package/dist/middleware/authorized.js +21 -22
  242. package/dist/middleware/builder.js +40 -41
  243. package/dist/middleware/currentapp.js +37 -39
  244. package/dist/middleware/joi-validator.js +10 -17
  245. package/dist/middleware/publicApi.js +6 -5
  246. package/dist/middleware/resourceId.js +9 -16
  247. package/dist/middleware/selfhost.js +4 -5
  248. package/dist/middleware/utils.js +2 -5
  249. package/dist/migrations/functions/appUrls.js +2 -2
  250. package/dist/migrations/functions/backfill/global.js +1 -1
  251. package/dist/migrations/functions/usageQuotas/syncApps.js +4 -3
  252. package/dist/migrations/functions/usageQuotas/syncRows.js +4 -3
  253. package/dist/migrations/functions/userEmailViewCasing.js +3 -3
  254. package/dist/package.json +44 -10
  255. package/dist/sdk/app/backups/exports.js +2 -1
  256. package/dist/sdk/app/backups/imports.js +3 -2
  257. package/dist/sdk/app/tables/index.js +5 -5
  258. package/dist/startup.js +4 -4
  259. package/dist/tests/utilities/TestConfiguration.js +36 -30
  260. package/dist/tests/utilities/structures.js +4 -3
  261. package/dist/threads/automation.js +16 -15
  262. package/dist/threads/query.js +19 -17
  263. package/dist/threads/utils.js +9 -11
  264. package/dist/tsconfig.build.tsbuildinfo +1 -1
  265. package/dist/utilities/budibaseDir.js +2 -4
  266. package/dist/utilities/fileSystem/clientLibrary.js +12 -12
  267. package/dist/utilities/fileSystem/index.js +3 -3
  268. package/dist/utilities/fileSystem/utilities.js +22 -0
  269. package/dist/utilities/global.js +66 -87
  270. package/dist/utilities/index.js +75 -102
  271. package/dist/utilities/redis.js +65 -100
  272. package/dist/utilities/routing/index.js +23 -27
  273. package/dist/utilities/rowProcessor/index.js +191 -124
  274. package/dist/utilities/rowProcessor/utils.js +26 -35
  275. package/dist/utilities/security.js +35 -39
  276. package/dist/utilities/usageQuota/rows.js +49 -56
  277. package/dist/utilities/users.js +28 -31
  278. package/dist/utilities/workerRequests.js +82 -115
  279. package/dist/watch.js +2 -1
  280. package/package.json +45 -11
  281. package/scripts/exportAppTemplate.js +2 -2
  282. package/{src/tests/jestSetup.ts → scripts/jestSetup.js} +2 -11
  283. package/scripts/localdomain.js +6 -34
  284. package/src/api/controllers/{apikeys.ts → apikeys.js} +10 -10
  285. package/src/api/controllers/application.ts +42 -56
  286. package/src/api/controllers/auth.ts +3 -4
  287. package/src/api/controllers/{automation.ts → automation.js} +48 -48
  288. package/src/api/controllers/{cloud.ts → cloud.js} +24 -24
  289. package/src/api/controllers/component.ts +1 -2
  290. package/src/api/controllers/{datasource.ts → datasource.js} +47 -100
  291. package/src/api/controllers/deploy/{Deployment.ts → Deployment.js} +10 -13
  292. package/src/api/controllers/deploy/index.ts +25 -13
  293. package/src/api/controllers/{dev.ts → dev.js} +37 -31
  294. package/src/api/controllers/{layout.ts → layout.js} +8 -8
  295. package/src/api/controllers/{metadata.ts → metadata.js} +10 -11
  296. package/src/api/controllers/{permission.ts → permission.js} +46 -49
  297. package/src/api/controllers/plugin/index.ts +5 -4
  298. package/src/api/controllers/public/applications.ts +9 -15
  299. package/src/api/controllers/public/tables.ts +2 -2
  300. package/src/api/controllers/query/import/index.ts +3 -2
  301. package/src/api/controllers/query/index.ts +14 -11
  302. package/src/api/controllers/query/{validation.ts → validation.js} +7 -7
  303. package/src/api/controllers/{role.ts → role.js} +25 -21
  304. package/src/api/controllers/{routing.ts → routing.js} +34 -37
  305. package/src/api/controllers/row/ExternalRequest.ts +11 -9
  306. package/src/api/controllers/row/external.js +3 -3
  307. package/src/api/controllers/row/index.ts +9 -17
  308. package/src/api/controllers/row/internal.js +12 -11
  309. package/src/api/controllers/row/{internalSearch.ts → internalSearch.js} +68 -92
  310. package/src/api/controllers/row/{staticFormula.ts → staticFormula.js} +23 -28
  311. package/src/api/controllers/row/{utils.ts → utils.js} +18 -25
  312. package/src/api/controllers/screen.ts +6 -10
  313. package/src/api/controllers/script.js +11 -0
  314. package/src/api/controllers/static/index.ts +13 -9
  315. package/src/api/controllers/table/{bulkFormula.ts → bulkFormula.js} +25 -39
  316. package/src/api/controllers/table/{external.ts → external.js} +54 -86
  317. package/src/api/controllers/table/{index.ts → index.js} +17 -17
  318. package/src/api/controllers/table/internal.ts +6 -5
  319. package/src/api/controllers/table/utils.ts +21 -26
  320. package/src/api/controllers/{templates.ts → templates.js} +7 -10
  321. package/src/api/controllers/{user.ts → user.js} +49 -47
  322. package/src/api/controllers/view/{exporters.ts → exporters.js} +3 -5
  323. package/src/api/controllers/view/{index.ts → index.js} +27 -36
  324. package/src/api/controllers/view/{utils.ts → utils.js} +20 -26
  325. package/src/api/{index.ts → index.js} +22 -15
  326. package/src/api/routes/analytics.js +9 -0
  327. package/src/api/routes/apikeys.js +12 -0
  328. package/src/api/routes/application.ts +9 -17
  329. package/src/api/routes/auth.ts +2 -2
  330. package/src/api/routes/automation.js +85 -0
  331. package/src/api/routes/backup.ts +4 -8
  332. package/src/api/routes/cloud.js +14 -0
  333. package/src/api/routes/component.js +14 -0
  334. package/src/api/routes/datasource.js +51 -0
  335. package/src/api/routes/deploy.js +17 -0
  336. package/src/api/routes/dev.js +26 -0
  337. package/src/api/routes/integration.js +12 -0
  338. package/src/api/routes/layout.js +16 -0
  339. package/src/api/routes/{metadata.ts → metadata.js} +13 -13
  340. package/src/api/routes/migrations.js +14 -0
  341. package/src/api/routes/permission.js +33 -0
  342. package/src/api/routes/plugin.ts +6 -14
  343. package/src/api/routes/public/index.ts +10 -10
  344. package/src/api/routes/public/tests/compare.spec.js +1 -1
  345. package/src/api/routes/{query.ts → query.js} +22 -19
  346. package/src/api/routes/role.js +15 -0
  347. package/src/api/routes/routing.js +14 -0
  348. package/src/api/routes/row.ts +15 -13
  349. package/src/api/routes/screen.js +18 -0
  350. package/src/api/routes/script.js +10 -0
  351. package/src/api/routes/static.ts +10 -7
  352. package/src/api/routes/{table.ts → table.js} +13 -10
  353. package/src/api/routes/templates.js +16 -0
  354. package/src/api/routes/tests/analytics.spec.js +1 -1
  355. package/src/api/routes/tests/backup.spec.js +1 -9
  356. package/src/api/routes/tests/permissions.spec.js +1 -2
  357. package/src/api/routes/tests/query.spec.js +10 -15
  358. package/src/api/routes/tests/role.spec.js +9 -7
  359. package/src/api/routes/tests/routing.spec.js +1 -2
  360. package/src/api/routes/tests/row.spec.js +4 -3
  361. package/src/api/routes/tests/static.spec.js +2 -2
  362. package/src/api/routes/tests/table.spec.js +35 -38
  363. package/src/api/routes/tests/user.spec.js +1 -2
  364. package/src/api/routes/tests/utilities/TestFunctions.ts +8 -6
  365. package/src/api/routes/user.js +53 -0
  366. package/src/api/routes/utils/{validators.ts → validators.js} +37 -33
  367. package/src/api/routes/view.js +31 -0
  368. package/src/api/routes/webhook.ts +2 -2
  369. package/src/app.ts +4 -3
  370. package/src/automations/tests/updateRow.spec.js +1 -0
  371. package/src/automations/tests/utilities/index.js +4 -10
  372. package/src/automations/triggers.js +6 -5
  373. package/src/automations/utils.ts +12 -9
  374. package/src/constants/index.js +5 -3
  375. package/src/constants/screens.js +2 -2
  376. package/src/db/inMemoryView.js +3 -3
  377. package/src/db/linkedRows/LinkController.js +50 -4
  378. package/src/db/linkedRows/index.js +2 -2
  379. package/src/db/linkedRows/linkUtils.js +3 -3
  380. package/src/db/tests/linkController.spec.js +57 -73
  381. package/src/db/tests/linkTests.spec.js +14 -17
  382. package/src/db/{utils.ts → utils.js} +93 -77
  383. package/src/db/views/staticViews.js +4 -4
  384. package/src/integrations/base/sql.ts +1 -1
  385. package/src/integrations/base/sqlTable.ts +1 -1
  386. package/src/integrations/elasticsearch.ts +2 -32
  387. package/src/integrations/googlesheets.ts +7 -4
  388. package/src/integrations/index.ts +41 -45
  389. package/src/integrations/s3.ts +3 -179
  390. package/src/integrations/tests/s3.spec.ts +1 -85
  391. package/src/middleware/appInfo.js +19 -0
  392. package/src/middleware/authorized.ts +28 -21
  393. package/src/middleware/{builder.ts → builder.js} +15 -17
  394. package/src/middleware/{currentapp.ts → currentapp.js} +39 -42
  395. package/src/middleware/{joi-validator.ts → joi-validator.js} +8 -9
  396. package/src/middleware/publicApi.js +21 -0
  397. package/src/middleware/{resourceId.ts → resourceId.js} +11 -16
  398. package/src/middleware/{selfhost.ts → selfhost.js} +2 -4
  399. package/src/middleware/tests/authorized.spec.js +6 -5
  400. package/src/middleware/tests/currentapp.spec.js +63 -118
  401. package/src/middleware/{utils.ts → utils.js} +1 -3
  402. package/src/migrations/functions/appUrls.ts +2 -2
  403. package/src/migrations/functions/backfill/app/tables.ts +5 -2
  404. package/src/migrations/functions/backfill/global.ts +1 -1
  405. package/src/migrations/functions/tests/appUrls.spec.js +4 -4
  406. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +9 -14
  407. package/src/migrations/functions/usageQuotas/syncApps.ts +4 -3
  408. package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
  409. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +7 -7
  410. package/src/migrations/functions/userEmailViewCasing.ts +3 -3
  411. package/src/module.d.ts +14 -0
  412. package/src/sdk/app/backups/exports.ts +3 -5
  413. package/src/sdk/app/backups/imports.ts +14 -7
  414. package/src/sdk/app/backups/statistics.ts +18 -9
  415. package/src/sdk/app/tables/index.ts +8 -7
  416. package/src/startup.ts +2 -2
  417. package/src/tests/utilities/TestConfiguration.js +36 -42
  418. package/src/tests/utilities/structures.js +4 -3
  419. package/src/threads/automation.ts +16 -15
  420. package/src/threads/query.ts +16 -11
  421. package/src/threads/utils.ts +5 -4
  422. package/src/utilities/budibaseDir.js +3 -0
  423. package/src/utilities/fileSystem/clientLibrary.js +12 -12
  424. package/src/utilities/fileSystem/index.js +8 -8
  425. package/src/utilities/fileSystem/utilities.js +36 -0
  426. package/src/utilities/global.js +127 -0
  427. package/src/utilities/{index.ts → index.js} +32 -40
  428. package/src/utilities/{redis.ts → redis.js} +20 -21
  429. package/src/utilities/routing/index.js +25 -0
  430. package/src/utilities/rowProcessor/{index.ts → index.js} +142 -65
  431. package/src/utilities/rowProcessor/{utils.ts → utils.js} +15 -19
  432. package/src/utilities/security.js +71 -0
  433. package/src/utilities/usageQuota/{rows.ts → rows.js} +18 -14
  434. package/src/utilities/{users.ts → users.js} +13 -11
  435. package/src/utilities/{workerRequests.ts → workerRequests.js} +38 -43
  436. package/src/watch.ts +3 -2
  437. package/tsconfig.json +1 -3
  438. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
  439. package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -2038
  440. package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
  441. package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
  442. package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
  443. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -259
  444. package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
  445. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -730
  446. package/coverage/lcov-report/src/api/controllers/index.html +0 -431
  447. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
  448. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
  449. package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
  450. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -484
  451. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
  452. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
  453. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
  454. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -142
  455. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -334
  456. package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
  457. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
  458. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
  459. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
  460. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
  461. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
  462. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +0 -163
  463. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
  464. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
  465. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
  466. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
  467. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -268
  468. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
  469. package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
  470. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
  471. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
  472. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
  473. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
  474. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
  475. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
  476. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
  477. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
  478. package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
  479. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -976
  480. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2320
  481. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
  482. package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
  483. package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
  484. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -688
  485. package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
  486. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -661
  487. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1255
  488. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -379
  489. package/coverage/lcov-report/src/api/routes/application.ts.html +0 -223
  490. package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
  491. package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -148
  492. package/coverage/lcov-report/src/api/routes/dev.ts.html +0 -199
  493. package/coverage/lcov-report/src/api/routes/index.ts.html +0 -289
  494. package/coverage/lcov-report/src/api/routes/integration.ts.html +0 -133
  495. package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
  496. package/coverage/lcov-report/src/api/routes/permission.ts.html +0 -208
  497. package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
  498. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -541
  499. package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
  500. package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -502
  501. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
  502. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -328
  503. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
  504. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
  505. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
  506. package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
  507. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
  508. package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
  509. package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
  510. package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
  511. package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
  512. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
  513. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
  514. package/coverage/lcov-report/src/api/routes/tests/utilities/index.js.html +0 -367
  515. package/coverage/lcov-report/src/app.ts.html +0 -400
  516. package/coverage/lcov-report/src/automations/logging/index.html +0 -116
  517. package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
  518. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -367
  519. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -334
  520. package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
  521. package/coverage/lcov-report/src/automations/tests/utilities/index.js.html +0 -256
  522. package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
  523. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.js.html +0 -2023
  524. package/coverage/lcov-report/src/db/defaultData/employeeImport.js.html +0 -541
  525. package/coverage/lcov-report/src/db/defaultData/expensesImport.js.html +0 -427
  526. package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
  527. package/coverage/lcov-report/src/db/defaultData/inventoryImport.js.html +0 -403
  528. package/coverage/lcov-report/src/db/defaultData/jobsImport.js.html +0 -559
  529. package/coverage/lcov-report/src/db/dynamoClient.js.html +0 -466
  530. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.js.html +0 -226
  531. package/coverage/lcov-report/src/definitions/datasource.ts.html +0 -235
  532. package/coverage/lcov-report/src/definitions/index.html +0 -131
  533. package/coverage/lcov-report/src/environment.js.html +0 -445
  534. package/coverage/lcov-report/src/index.html +0 -191
  535. package/coverage/lcov-report/src/index.ts.html +0 -133
  536. package/coverage/lcov-report/src/integrations/airtable.ts.html +0 -529
  537. package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
  538. package/coverage/lcov-report/src/integrations/base/index.html +0 -161
  539. package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -133
  540. package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -1951
  541. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
  542. package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
  543. package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -406
  544. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +0 -745
  545. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -634
  546. package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
  547. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1312
  548. package/coverage/lcov-report/src/integrations/index.html +0 -371
  549. package/coverage/lcov-report/src/integrations/index.ts.html +0 -445
  550. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1006
  551. package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1867
  552. package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -952
  553. package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1474
  554. package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1069
  555. package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
  556. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -463
  557. package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
  558. package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1381
  559. package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
  560. package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
  561. package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1006
  562. package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -460
  563. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -187
  564. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
  565. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
  566. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
  567. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
  568. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
  569. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
  570. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
  571. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
  572. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
  573. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -283
  574. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
  575. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
  576. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
  577. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
  578. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
  579. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
  580. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
  581. package/coverage/lcov-report/src/migrations/functions/index.html +0 -146
  582. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
  583. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
  584. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
  585. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
  586. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
  587. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
  588. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
  589. package/coverage/lcov-report/src/migrations/index.ts.html +0 -403
  590. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
  591. package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
  592. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
  593. package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
  594. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
  595. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
  596. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
  597. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
  598. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -682
  599. package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
  600. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
  601. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
  602. package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
  603. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -265
  604. package/coverage/lcov-report/src/startup.ts.html +0 -499
  605. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.js.html +0 -1885
  606. package/coverage/lcov-report/src/tests/utilities/controllers.js.html +0 -133
  607. package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
  608. package/coverage/lcov-report/src/tests/utilities/structures.js.html +0 -649
  609. package/coverage/lcov-report/src/threads/automation.ts.html +0 -1594
  610. package/coverage/lcov-report/src/threads/index.html +0 -161
  611. package/coverage/lcov-report/src/threads/index.ts.html +0 -418
  612. package/coverage/lcov-report/src/threads/query.ts.html +0 -961
  613. package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
  614. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.js.html +0 -547
  615. package/coverage/lcov-report/src/utilities/fileSystem/index.js.html +0 -1141
  616. package/coverage/lcov-report/src/utilities/fileSystem/processor.js.html +0 -148
  617. package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
  618. package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
  619. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
  620. package/coverage/lcov-report/src/utilities/rowProcessor/map.js.html +0 -370
  621. package/coverage/lcov-report/src/watch.ts.html +0 -196
  622. package/coverage/lcov-report/src/websocket.ts.html +0 -163
  623. package/dist/db/defaultData/datasource_bb_default.js +0 -565
  624. package/dist/db/defaultData/employeeImport.js +0 -153
  625. package/dist/db/defaultData/expensesImport.js +0 -115
  626. package/dist/db/defaultData/inventoryImport.js +0 -107
  627. package/dist/db/defaultData/jobsImport.js +0 -150
  628. package/dist/db/linkedRows/LinkDocument.js +0 -32
  629. package/dist/utilities/rowProcessor/map.js +0 -96
  630. package/jest.config.ts +0 -33
  631. package/src/api/controllers/script.ts +0 -12
  632. package/src/api/routes/analytics.ts +0 -9
  633. package/src/api/routes/apikeys.ts +0 -12
  634. package/src/api/routes/automation.ts +0 -87
  635. package/src/api/routes/cloud.ts +0 -18
  636. package/src/api/routes/component.ts +0 -14
  637. package/src/api/routes/datasource.ts +0 -60
  638. package/src/api/routes/deploy.ts +0 -21
  639. package/src/api/routes/dev.ts +0 -38
  640. package/src/api/routes/integration.ts +0 -16
  641. package/src/api/routes/layout.ts +0 -16
  642. package/src/api/routes/migrations.ts +0 -14
  643. package/src/api/routes/permission.ts +0 -41
  644. package/src/api/routes/role.ts +0 -24
  645. package/src/api/routes/routing.ts +0 -14
  646. package/src/api/routes/screen.ts +0 -23
  647. package/src/api/routes/script.ts +0 -10
  648. package/src/api/routes/templates.ts +0 -16
  649. package/src/api/routes/user.ts +0 -51
  650. package/src/api/routes/view.ts +0 -34
  651. package/src/db/defaultData/datasource_bb_default.js +0 -646
  652. package/src/db/defaultData/employeeImport.js +0 -152
  653. package/src/db/defaultData/expensesImport.js +0 -114
  654. package/src/db/defaultData/inventoryImport.js +0 -106
  655. package/src/db/defaultData/jobsImport.js +0 -158
  656. package/src/db/linkedRows/LinkDocument.js +0 -47
  657. package/src/middleware/appInfo.ts +0 -20
  658. package/src/middleware/publicApi.ts +0 -21
  659. package/src/utilities/budibaseDir.ts +0 -3
  660. package/src/utilities/global.ts +0 -138
  661. package/src/utilities/routing/index.ts +0 -32
  662. package/src/utilities/rowProcessor/map.js +0 -95
  663. package/src/utilities/security.ts +0 -65
@@ -1,32 +1,33 @@
1
- import { InternalTables } from "../../../db/utils"
2
- import * as userController from "../user"
3
- import { FieldTypes } from "../../../constants"
4
- import { context } from "@budibase/backend-core"
5
- import { makeExternalQuery } from "../../../integrations/base/query"
6
- import { BBContext, Row, Table } from "@budibase/types"
7
- export { removeKeyNumbering } from "../../../integrations/base/utils"
8
1
  const validateJs = require("validate.js")
9
2
  const { cloneDeep } = require("lodash/fp")
3
+ const { InternalTables } = require("../../../db/utils")
4
+ const userController = require("../user")
5
+ const { FieldTypes } = require("../../../constants")
6
+ const { getAppDB } = require("@budibase/backend-core/context")
7
+ const { makeExternalQuery } = require("../../../integrations/base/query")
8
+ const { removeKeyNumbering } = require("../../../integrations/base/utils")
10
9
 
11
10
  validateJs.extend(validateJs.validators.datetime, {
12
- parse: function (value: string) {
11
+ parse: function (value) {
13
12
  return new Date(value).getTime()
14
13
  },
15
14
  // Input is a unix timestamp
16
- format: function (value: string) {
15
+ format: function (value) {
17
16
  return new Date(value).toISOString()
18
17
  },
19
18
  })
20
19
 
21
- export async function getDatasourceAndQuery(json: any) {
20
+ exports.removeKeyNumbering = removeKeyNumbering
21
+
22
+ exports.getDatasourceAndQuery = async json => {
22
23
  const datasourceId = json.endpoint.datasourceId
23
- const db = context.getAppDB()
24
+ const db = getAppDB()
24
25
  const datasource = await db.get(datasourceId)
25
26
  return makeExternalQuery(datasource, json)
26
27
  }
27
28
 
28
- export async function findRow(ctx: BBContext, tableId: string, rowId: string) {
29
- const db = context.getAppDB()
29
+ exports.findRow = async (ctx, tableId, rowId) => {
30
+ const db = getAppDB()
30
31
  let row
31
32
  // TODO remove special user case in future
32
33
  if (tableId === InternalTables.USER_METADATA) {
@@ -44,20 +45,12 @@ export async function findRow(ctx: BBContext, tableId: string, rowId: string) {
44
45
  return row
45
46
  }
46
47
 
47
- export async function validate({
48
- tableId,
49
- row,
50
- table,
51
- }: {
52
- tableId?: string
53
- row: Row
54
- table: Table
55
- }) {
48
+ exports.validate = async ({ tableId, row, table }) => {
56
49
  if (!table) {
57
- const db = context.getAppDB()
50
+ const db = getAppDB()
58
51
  table = await db.get(tableId)
59
52
  }
60
- const errors: any = {}
53
+ const errors = {}
61
54
  for (let fieldName of Object.keys(table.schema)) {
62
55
  const constraints = cloneDeep(table.schema[fieldName].constraints)
63
56
  const type = table.schema[fieldName].type
@@ -77,7 +70,7 @@ export async function validate({
77
70
  if (!Array.isArray(row[fieldName])) {
78
71
  row[fieldName] = row[fieldName].split(",")
79
72
  }
80
- row[fieldName].map((val: any) => {
73
+ row[fieldName].map(val => {
81
74
  if (
82
75
  !constraints.inclusion.includes(val) &&
83
76
  constraints.inclusion.length !== 0
@@ -7,9 +7,9 @@ import {
7
7
  roles,
8
8
  } from "@budibase/backend-core"
9
9
  import { updateAppPackage } from "./application"
10
- import { Plugin, ScreenProps, BBContext } from "@budibase/types"
10
+ import { Plugin, ScreenProps } from "@budibase/types"
11
11
 
12
- export async function fetch(ctx: BBContext) {
12
+ exports.fetch = async (ctx: any) => {
13
13
  const db = context.getAppDB()
14
14
 
15
15
  const screens = (
@@ -20,17 +20,13 @@ export async function fetch(ctx: BBContext) {
20
20
  )
21
21
  ).rows.map((el: any) => el.doc)
22
22
 
23
- const roleId = ctx.user?.role?._id as string
24
- if (!roleId) {
25
- ctx.throw("Unable to retrieve users role ID.")
26
- }
27
23
  ctx.body = await new roles.AccessController().checkScreensAccess(
28
24
  screens,
29
- roleId
25
+ ctx.user.role._id
30
26
  )
31
27
  }
32
28
 
33
- export async function save(ctx: BBContext) {
29
+ exports.save = async (ctx: any) => {
34
30
  const db = context.getAppDB()
35
31
  let screen = ctx.request.body
36
32
 
@@ -96,7 +92,7 @@ export async function save(ctx: BBContext) {
96
92
  }
97
93
  }
98
94
 
99
- export async function destroy(ctx: BBContext) {
95
+ exports.destroy = async (ctx: any) => {
100
96
  const db = context.getAppDB()
101
97
  const id = ctx.params.screenId
102
98
  const screen = await db.get(id)
@@ -110,7 +106,7 @@ export async function destroy(ctx: BBContext) {
110
106
  ctx.status = 200
111
107
  }
112
108
 
113
- function findPlugins(component: ScreenProps, foundPlugins: string[]) {
109
+ const findPlugins = (component: ScreenProps, foundPlugins: string[]) => {
114
110
  if (!component) {
115
111
  return
116
112
  }
@@ -0,0 +1,11 @@
1
+ const ScriptRunner = require("../../utilities/scriptRunner")
2
+
3
+ exports.execute = async function (ctx) {
4
+ const { script, context } = ctx.request.body
5
+ const runner = new ScriptRunner(script, context)
6
+ ctx.body = runner.execute()
7
+ }
8
+
9
+ exports.save = async function (ctx) {
10
+ ctx.throw(501, "Not currently implemented")
11
+ }
@@ -17,9 +17,13 @@ const { clientLibraryPath } = require("../../../utilities")
17
17
  const { upload, deleteFiles } = require("../../../utilities/fileSystem")
18
18
  const { attachmentsRelativeURL } = require("../../../utilities")
19
19
  const { DocumentType } = require("../../../db/utils")
20
- const { context, objectStore, utils } = require("@budibase/backend-core")
20
+ const { getAppDB, getAppId } = require("@budibase/backend-core/context")
21
+ const { setCookie, clearCookie } = require("@budibase/backend-core/utils")
21
22
  const AWS = require("aws-sdk")
22
23
  const fs = require("fs")
24
+ const {
25
+ downloadTarballDirect,
26
+ } = require("../../../utilities/fileSystem/utilities")
23
27
 
24
28
  async function prepareUpload({ s3Key, bucket, metadata, file }: any) {
25
29
  const response = await upload({
@@ -44,7 +48,7 @@ export const toggleBetaUiFeature = async function (ctx: any) {
44
48
  const cookieName = `beta:${ctx.params.feature}`
45
49
 
46
50
  if (ctx.cookies.get(cookieName)) {
47
- utils.clearCookie(ctx, cookieName)
51
+ clearCookie(ctx, cookieName)
48
52
  ctx.body = {
49
53
  message: `${ctx.params.feature} disabled`,
50
54
  }
@@ -57,11 +61,11 @@ export const toggleBetaUiFeature = async function (ctx: any) {
57
61
  if (!fs.existsSync(builderPath)) {
58
62
  fs.mkdirSync(builderPath)
59
63
  }
60
- await objectStore.downloadTarballDirect(
64
+ await downloadTarballDirect(
61
65
  "https://cdn.budi.live/beta:design_ui/new_ui.tar.gz",
62
66
  builderPath
63
67
  )
64
- utils.setCookie(ctx, {}, cookieName)
68
+ setCookie(ctx, {}, cookieName)
65
69
 
66
70
  ctx.body = {
67
71
  message: `${ctx.params.feature} enabled`,
@@ -99,9 +103,9 @@ export const deleteObjects = async function (ctx: any) {
99
103
  }
100
104
 
101
105
  export const serveApp = async function (ctx: any) {
102
- const db = context.getAppDB({ skip_setup: true })
106
+ const db = getAppDB({ skip_setup: true })
103
107
  const appInfo = await db.get(DocumentType.APP_METADATA)
104
- let appId = context.getAppId()
108
+ let appId = getAppId()
105
109
 
106
110
  if (!env.isJest()) {
107
111
  const App = require("./templates/BudibaseApp.svelte").default
@@ -130,11 +134,11 @@ export const serveApp = async function (ctx: any) {
130
134
  }
131
135
 
132
136
  export const serveBuilderPreview = async function (ctx: any) {
133
- const db = context.getAppDB({ skip_setup: true })
137
+ const db = getAppDB({ skip_setup: true })
134
138
  const appInfo = await db.get(DocumentType.APP_METADATA)
135
139
 
136
140
  if (!env.isJest()) {
137
- let appId = context.getAppId()
141
+ let appId = getAppId()
138
142
  const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`)
139
143
  ctx.body = await processString(previewHbs, {
140
144
  clientLibPath: clientLibraryPath(appId, appInfo.version, ctx),
@@ -152,7 +156,7 @@ export const serveClientLibrary = async function (ctx: any) {
152
156
  }
153
157
 
154
158
  export const getSignedUploadURL = async function (ctx: any) {
155
- const database = context.getAppDB()
159
+ const database = getAppDB()
156
160
 
157
161
  // Ensure datasource is valid
158
162
  let datasource
@@ -1,14 +1,13 @@
1
- import { FieldTypes, FormulaTypes } from "../../../constants"
2
- import { clearColumns } from "./utils"
3
- import { doesContainStrings } from "@budibase/string-templates"
4
- import { cloneDeep } from "lodash/fp"
5
- import { isEqual, uniq } from "lodash"
6
- import { updateAllFormulasInTable } from "../row/staticFormula"
7
- import { context } from "@budibase/backend-core"
8
- import { FieldSchema, Table } from "@budibase/types"
9
- import sdk from "../../../sdk"
1
+ const { FieldTypes, FormulaTypes } = require("../../../constants")
2
+ const { clearColumns } = require("./utils")
3
+ const { doesContainStrings } = require("@budibase/string-templates")
4
+ const { cloneDeep } = require("lodash/fp")
5
+ const { isEqual, uniq } = require("lodash")
6
+ const { updateAllFormulasInTable } = require("../row/staticFormula")
7
+ const { getAppDB } = require("@budibase/backend-core/context")
8
+ const sdk = require("../../../sdk")
10
9
 
11
- function isStaticFormula(column: FieldSchema) {
10
+ function isStaticFormula(column) {
12
11
  return (
13
12
  column.type === FieldTypes.FORMULA &&
14
13
  column.formulaType === FormulaTypes.STATIC
@@ -19,8 +18,8 @@ function isStaticFormula(column: FieldSchema) {
19
18
  * This retrieves the formula columns from a table schema that use a specified column name
20
19
  * in the formula.
21
20
  */
22
- function getFormulaThatUseColumn(table: Table, columnNames: string[] | string) {
23
- let formula: string[] = []
21
+ function getFormulaThatUseColumn(table, columnNames) {
22
+ let formula = []
24
23
  columnNames = Array.isArray(columnNames) ? columnNames : [columnNames]
25
24
  for (let column of Object.values(table.schema)) {
26
25
  // not a static formula, or doesn't contain a relationship
@@ -39,10 +38,7 @@ function getFormulaThatUseColumn(table: Table, columnNames: string[] | string) {
39
38
  * This functions checks for when a related table, column or related column is deleted, if any
40
39
  * tables need to have the formula column removed.
41
40
  */
42
- async function checkIfFormulaNeedsCleared(
43
- table: Table,
44
- { oldTable, deletion }: { oldTable?: Table; deletion?: boolean }
45
- ) {
41
+ async function checkIfFormulaNeedsCleared(table, { oldTable, deletion }) {
46
42
  // start by retrieving all tables, remove the current table from the list
47
43
  const tables = (await sdk.tables.getAllInternalTables()).filter(
48
44
  tbl => tbl._id !== table._id
@@ -53,14 +49,11 @@ async function checkIfFormulaNeedsCleared(
53
49
  )
54
50
  // remove any formula columns that used related columns
55
51
  for (let removed of removedColumns) {
56
- let tableToUse: Table | undefined = table
52
+ let tableToUse = table
57
53
  // if relationship, get the related table
58
54
  if (removed.type === FieldTypes.LINK) {
59
55
  tableToUse = tables.find(table => table._id === removed.tableId)
60
56
  }
61
- if (!tableToUse) {
62
- continue
63
- }
64
57
  const columnsToDelete = getFormulaThatUseColumn(tableToUse, removed.name)
65
58
  if (columnsToDelete.length > 0) {
66
59
  await clearColumns(table, columnsToDelete)
@@ -78,11 +71,11 @@ async function checkIfFormulaNeedsCleared(
78
71
  // look to see if the column was used in a relationship formula,
79
72
  // relationships won't be used for this
80
73
  if (relatedTable && relatedColumns && removed.type !== FieldTypes.LINK) {
81
- let relatedFormulaToRemove: string[] = []
74
+ let relatedFormulaToRemove = []
82
75
  for (let column of relatedColumns) {
83
76
  relatedFormulaToRemove = relatedFormulaToRemove.concat(
84
77
  getFormulaThatUseColumn(relatedTable, [
85
- column.fieldName!,
78
+ column.fieldName,
86
79
  removed.name,
87
80
  ])
88
81
  )
@@ -102,14 +95,13 @@ async function checkIfFormulaNeedsCleared(
102
95
  * specifically only for static formula.
103
96
  */
104
97
  async function updateRelatedFormulaLinksOnTables(
105
- table: Table,
106
- { deletion }: { deletion?: boolean } = {}
98
+ table,
99
+ { deletion } = { deletion: false }
107
100
  ) {
108
- const tableId: string = table._id!
109
- const db = context.getAppDB()
101
+ const db = getAppDB()
110
102
  // start by retrieving all tables, remove the current table from the list
111
103
  const tables = (await sdk.tables.getAllInternalTables()).filter(
112
- tbl => tbl._id !== tableId
104
+ tbl => tbl._id !== table._id
113
105
  )
114
106
  // clone the tables, so we can compare at end
115
107
  const initialTables = cloneDeep(tables)
@@ -122,7 +114,7 @@ async function updateRelatedFormulaLinksOnTables(
122
114
  if (!otherTable.relatedFormula) {
123
115
  continue
124
116
  }
125
- const index = otherTable.relatedFormula.indexOf(tableId)
117
+ const index = otherTable.relatedFormula.indexOf(table._id)
126
118
  if (index !== -1) {
127
119
  otherTable.relatedFormula.splice(index, 1)
128
120
  }
@@ -141,11 +133,11 @@ async function updateRelatedFormulaLinksOnTables(
141
133
  if (
142
134
  relatedTable &&
143
135
  (!relatedTable.relatedFormula ||
144
- !relatedTable.relatedFormula.includes(tableId))
136
+ !relatedTable.relatedFormula.includes(table._id))
145
137
  ) {
146
138
  relatedTable.relatedFormula = relatedTable.relatedFormula
147
- ? [...relatedTable.relatedFormula, tableId]
148
- : [tableId]
139
+ ? [...relatedTable.relatedFormula, table._id]
140
+ : [table._id]
149
141
  }
150
142
  }
151
143
  }
@@ -158,10 +150,7 @@ async function updateRelatedFormulaLinksOnTables(
158
150
  }
159
151
  }
160
152
 
161
- async function checkIfFormulaUpdated(
162
- table: Table,
163
- { oldTable }: { oldTable?: Table }
164
- ) {
153
+ async function checkIfFormulaUpdated(table, { oldTable }) {
165
154
  // look to see if any formula values have changed
166
155
  const shouldUpdate = Object.values(table.schema).find(
167
156
  column =>
@@ -176,10 +165,7 @@ async function checkIfFormulaUpdated(
176
165
  }
177
166
  }
178
167
 
179
- export async function runStaticFormulaChecks(
180
- table: Table,
181
- { oldTable, deletion }: { oldTable?: Table; deletion?: boolean }
182
- ) {
168
+ exports.runStaticFormulaChecks = async (table, { oldTable, deletion }) => {
183
169
  await updateRelatedFormulaLinksOnTables(table, { deletion })
184
170
  await checkIfFormulaNeedsCleared(table, { oldTable, deletion })
185
171
  if (!deletion) {
@@ -1,47 +1,38 @@
1
- import {
1
+ const {
2
2
  buildExternalTableId,
3
3
  breakExternalTableId,
4
- } from "../../../integrations/utils"
5
- import {
4
+ } = require("../../../integrations/utils")
5
+ const {
6
6
  generateForeignKey,
7
7
  generateJunctionTableName,
8
8
  foreignKeyStructure,
9
9
  hasTypeChanged,
10
- } from "./utils"
11
- import {
10
+ } = require("./utils")
11
+ const {
12
12
  DataSourceOperation,
13
13
  FieldTypes,
14
14
  RelationshipTypes,
15
- } from "../../../constants"
16
- import { makeExternalQuery } from "../../../integrations/base/query"
17
- import csvParser from "../../../utilities/csvParser"
18
- import { handleRequest } from "../row/external"
19
- import { events, context } from "@budibase/backend-core"
20
- import {
21
- Datasource,
22
- Table,
23
- QueryJson,
24
- Operation,
25
- RenameColumn,
26
- FieldSchema,
27
- BBContext,
28
- TableRequest,
29
- } from "@budibase/types"
30
- import sdk from "../../../sdk"
15
+ } = require("../../../constants")
16
+ const { makeExternalQuery } = require("../../../integrations/base/query")
31
17
  const { cloneDeep } = require("lodash/fp")
18
+ const csvParser = require("../../../utilities/csvParser")
19
+ const { handleRequest } = require("../row/external")
20
+ const { getAppDB } = require("@budibase/backend-core/context")
21
+ const { events } = require("@budibase/backend-core")
22
+ const sdk = require("../../../sdk")
32
23
 
33
24
  async function makeTableRequest(
34
- datasource: Datasource,
35
- operation: Operation,
36
- table: Table,
37
- tables: Record<string, Table>,
38
- oldTable?: Table,
39
- renamed?: RenameColumn
25
+ datasource,
26
+ operation,
27
+ table,
28
+ tables,
29
+ oldTable = null,
30
+ renamed = null
40
31
  ) {
41
- const json: QueryJson = {
32
+ const json = {
42
33
  endpoint: {
43
- datasourceId: datasource._id!,
44
- entityId: table._id!,
34
+ datasourceId: datasource._id,
35
+ entityId: table._id,
45
36
  operation,
46
37
  },
47
38
  meta: {
@@ -50,19 +41,15 @@ async function makeTableRequest(
50
41
  table,
51
42
  }
52
43
  if (oldTable) {
53
- json.meta!.table = oldTable
44
+ json.meta.table = oldTable
54
45
  }
55
46
  if (renamed) {
56
- json.meta!.renamed = renamed
47
+ json.meta.renamed = renamed
57
48
  }
58
49
  return makeExternalQuery(datasource, json)
59
50
  }
60
51
 
61
- function cleanupRelationships(
62
- table: Table,
63
- tables: Record<string, Table>,
64
- oldTable?: Table
65
- ) {
52
+ function cleanupRelationships(table, tables, oldTable = null) {
66
53
  const tableToIterate = oldTable ? oldTable : table
67
54
  // clean up relationships in couch table schemas
68
55
  for (let [key, schema] of Object.entries(tableToIterate.schema)) {
@@ -91,7 +78,7 @@ function cleanupRelationships(
91
78
  }
92
79
  }
93
80
 
94
- function getDatasourceId(table: Table) {
81
+ function getDatasourceId(table) {
95
82
  if (!table) {
96
83
  throw "No table supplied"
97
84
  }
@@ -101,7 +88,7 @@ function getDatasourceId(table: Table) {
101
88
  return breakExternalTableId(table._id).datasourceId
102
89
  }
103
90
 
104
- function otherRelationshipType(type?: string) {
91
+ function otherRelationshipType(type) {
105
92
  if (type === RelationshipTypes.MANY_TO_MANY) {
106
93
  return RelationshipTypes.MANY_TO_MANY
107
94
  }
@@ -110,21 +97,13 @@ function otherRelationshipType(type?: string) {
110
97
  : RelationshipTypes.ONE_TO_MANY
111
98
  }
112
99
 
113
- function generateManyLinkSchema(
114
- datasource: Datasource,
115
- column: FieldSchema,
116
- table: Table,
117
- relatedTable: Table
118
- ): Table {
119
- if (!table.primary || !relatedTable.primary) {
120
- throw new Error("Unable to generate many link schema, no primary keys")
121
- }
100
+ function generateManyLinkSchema(datasource, column, table, relatedTable) {
122
101
  const primary = table.name + table.primary[0]
123
102
  const relatedPrimary = relatedTable.name + relatedTable.primary[0]
124
103
  const jcTblName = generateJunctionTableName(column, table, relatedTable)
125
104
  // first create the new table
126
105
  const junctionTable = {
127
- _id: buildExternalTableId(datasource._id!, jcTblName),
106
+ _id: buildExternalTableId(datasource._id, jcTblName),
128
107
  name: jcTblName,
129
108
  primary: [primary, relatedPrimary],
130
109
  constrained: [primary, relatedPrimary],
@@ -146,15 +125,7 @@ function generateManyLinkSchema(
146
125
  return junctionTable
147
126
  }
148
127
 
149
- function generateLinkSchema(
150
- column: FieldSchema,
151
- table: Table,
152
- relatedTable: Table,
153
- type: string
154
- ) {
155
- if (!table.primary || !relatedTable.primary) {
156
- throw new Error("Unable to generate link schema, no primary keys")
157
- }
128
+ function generateLinkSchema(column, table, relatedTable, type) {
158
129
  const isOneSide = type === RelationshipTypes.ONE_TO_MANY
159
130
  const primary = isOneSide ? relatedTable.primary[0] : table.primary[0]
160
131
  // generate a foreign key
@@ -165,12 +136,7 @@ function generateLinkSchema(
165
136
  return foreignKey
166
137
  }
167
138
 
168
- function generateRelatedSchema(
169
- linkColumn: FieldSchema,
170
- table: Table,
171
- relatedTable: Table,
172
- columnName: string
173
- ) {
139
+ function generateRelatedSchema(linkColumn, table, relatedTable, columnName) {
174
140
  // generate column for other table
175
141
  const relatedSchema = cloneDeep(linkColumn)
176
142
  // swap them from the main link
@@ -193,21 +159,21 @@ function generateRelatedSchema(
193
159
  table.schema[columnName] = relatedSchema
194
160
  }
195
161
 
196
- function isRelationshipSetup(column: FieldSchema) {
162
+ function isRelationshipSetup(column) {
197
163
  return column.foreignKey || column.through
198
164
  }
199
165
 
200
- export async function save(ctx: BBContext) {
201
- const table: TableRequest = ctx.request.body
202
- const renamed = table?._rename
166
+ exports.save = async function (ctx) {
167
+ const table = ctx.request.body
168
+ const { _rename: renamed } = table
203
169
  // can't do this right now
204
170
  delete table.dataImport
205
- const datasourceId = getDatasourceId(ctx.request.body)!
171
+ const datasourceId = getDatasourceId(ctx.request.body)
206
172
  // table doesn't exist already, note that it is created
207
173
  if (!table._id) {
208
174
  table.created = true
209
175
  }
210
- let tableToSave: TableRequest = {
176
+ let tableToSave = {
211
177
  type: "table",
212
178
  _id: buildExternalTableId(datasourceId, table.name),
213
179
  ...table,
@@ -222,10 +188,13 @@ export async function save(ctx: BBContext) {
222
188
  ctx.throw(400, "A column type has changed.")
223
189
  }
224
190
 
225
- const db = context.getAppDB()
191
+ const db = getAppDB()
226
192
  const datasource = await db.get(datasourceId)
193
+ if (!datasource.entities) {
194
+ datasource.entities = {}
195
+ }
227
196
  const oldTables = cloneDeep(datasource.entities)
228
- const tables: Record<string, Table> = datasource.entities
197
+ const tables = datasource.entities
229
198
 
230
199
  const extraTablesToUpdate = []
231
200
 
@@ -237,11 +206,8 @@ export async function save(ctx: BBContext) {
237
206
  const relatedTable = Object.values(tables).find(
238
207
  table => table._id === schema.tableId
239
208
  )
240
- if (!relatedTable) {
241
- continue
242
- }
243
- const relatedColumnName = schema.fieldName!
244
- const relationType = schema.relationshipType!
209
+ const relatedColumnName = schema.fieldName
210
+ const relationType = schema.relationshipType
245
211
  if (relationType === RelationshipTypes.MANY_TO_MANY) {
246
212
  const junctionTable = generateManyLinkSchema(
247
213
  datasource,
@@ -281,7 +247,9 @@ export async function save(ctx: BBContext) {
281
247
 
282
248
  cleanupRelationships(tableToSave, tables, oldTable)
283
249
 
284
- const operation = oldTable ? Operation.UPDATE_TABLE : Operation.CREATE_TABLE
250
+ const operation = oldTable
251
+ ? DataSourceOperation.UPDATE_TABLE
252
+ : DataSourceOperation.CREATE_TABLE
285
253
  await makeTableRequest(
286
254
  datasource,
287
255
  operation,
@@ -293,7 +261,9 @@ export async function save(ctx: BBContext) {
293
261
  // update any extra tables (like foreign keys in other tables)
294
262
  for (let extraTable of extraTablesToUpdate) {
295
263
  const oldExtraTable = oldTables[extraTable.name]
296
- let op = oldExtraTable ? Operation.UPDATE_TABLE : Operation.CREATE_TABLE
264
+ let op = oldExtraTable
265
+ ? DataSourceOperation.UPDATE_TABLE
266
+ : DataSourceOperation.CREATE_TABLE
297
267
  await makeTableRequest(datasource, op, extraTable, tables, oldExtraTable)
298
268
  }
299
269
 
@@ -313,20 +283,18 @@ export async function save(ctx: BBContext) {
313
283
  return tableToSave
314
284
  }
315
285
 
316
- export async function destroy(ctx: BBContext) {
317
- const tableToDelete: TableRequest = await sdk.tables.getTable(
318
- ctx.params.tableId
319
- )
286
+ exports.destroy = async function (ctx) {
287
+ const tableToDelete = await sdk.tables.getTable(ctx.params.tableId)
320
288
  if (!tableToDelete || !tableToDelete.created) {
321
289
  ctx.throw(400, "Cannot delete tables which weren't created in Budibase.")
322
290
  }
323
291
  const datasourceId = getDatasourceId(tableToDelete)
324
292
 
325
- const db = context.getAppDB()
293
+ const db = getAppDB()
326
294
  const datasource = await db.get(datasourceId)
327
295
  const tables = datasource.entities
328
296
 
329
- const operation = Operation.DELETE_TABLE
297
+ const operation = DataSourceOperation.DELETE_TABLE
330
298
  await makeTableRequest(datasource, operation, tableToDelete, tables)
331
299
 
332
300
  cleanupRelationships(tableToDelete, tables)
@@ -337,7 +305,7 @@ export async function destroy(ctx: BBContext) {
337
305
  return tableToDelete
338
306
  }
339
307
 
340
- export async function bulkImport(ctx: BBContext) {
308
+ exports.bulkImport = async function (ctx) {
341
309
  const table = await sdk.tables.getTable(ctx.params.tableId)
342
310
  const { dataImport } = ctx.request.body
343
311
  if (!dataImport || !dataImport.schema || !dataImport.csvString) {