@budibase/server 1.0.80-alpha.1 → 1.0.80

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 (308) hide show
  1. package/__mocks__/node-fetch.ts +0 -1
  2. package/builder/assets/index.22a39cc9.js +1352 -0
  3. package/builder/assets/{index.c57242d4.css → index.c8d1e8f0.css} +2 -2
  4. package/builder/assets/{vendor.a7c6ad0a.js → vendor.20f80cec.js} +216 -190
  5. package/builder/index.html +3 -3
  6. package/coverage/clover.xml +2327 -2390
  7. package/coverage/coverage-final.json +137 -138
  8. package/coverage/lcov-report/api/controllers/analytics.js.html +6 -6
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +6 -6
  10. package/coverage/lcov-report/api/controllers/application.js.html +149 -152
  11. package/coverage/lcov-report/api/controllers/auth.js.html +7 -7
  12. package/coverage/lcov-report/api/controllers/automation.js.html +21 -21
  13. package/coverage/lcov-report/api/controllers/backup.js.html +3 -3
  14. package/coverage/lcov-report/api/controllers/cloud.js.html +11 -11
  15. package/coverage/lcov-report/api/controllers/component.js.html +5 -5
  16. package/coverage/lcov-report/api/controllers/datasource.js.html +16 -16
  17. package/coverage/lcov-report/api/controllers/dev.js.html +19 -19
  18. package/coverage/lcov-report/api/controllers/index.html +16 -16
  19. package/coverage/lcov-report/api/controllers/integration.js.html +4 -4
  20. package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
  21. package/coverage/lcov-report/api/controllers/metadata.js.html +9 -9
  22. package/coverage/lcov-report/api/controllers/migrations.js.html +4 -4
  23. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  24. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  25. package/coverage/lcov-report/api/controllers/query/index.js.html +26 -26
  26. package/coverage/lcov-report/api/controllers/query/validation.js.html +10 -10
  27. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  28. package/coverage/lcov-report/api/controllers/routing.js.html +9 -9
  29. package/coverage/lcov-report/api/controllers/row/external.js.html +16 -16
  30. package/coverage/lcov-report/api/controllers/row/index.html +27 -27
  31. package/coverage/lcov-report/api/controllers/row/index.js.html +46 -46
  32. package/coverage/lcov-report/api/controllers/row/internal.js.html +82 -94
  33. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +204 -204
  34. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +24 -24
  35. package/coverage/lcov-report/api/controllers/row/utils.js.html +29 -29
  36. package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
  37. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  38. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +49 -49
  39. package/coverage/lcov-report/api/controllers/table/external.js.html +12 -12
  40. package/coverage/lcov-report/api/controllers/table/index.html +11 -11
  41. package/coverage/lcov-report/api/controllers/table/index.js.html +44 -47
  42. package/coverage/lcov-report/api/controllers/table/internal.js.html +50 -50
  43. package/coverage/lcov-report/api/controllers/table/utils.js.html +80 -80
  44. package/coverage/lcov-report/api/controllers/templates.js.html +5 -5
  45. package/coverage/lcov-report/api/controllers/user.js.html +19 -19
  46. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  47. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  48. package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
  49. package/coverage/lcov-report/api/controllers/view/utils.js.html +12 -12
  50. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  51. package/coverage/lcov-report/api/controllers/webhook.js.html +27 -18
  52. package/coverage/lcov-report/api/index.html +10 -10
  53. package/coverage/lcov-report/api/index.js.html +28 -37
  54. package/coverage/lcov-report/api/routes/analytics.js.html +6 -6
  55. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -8
  56. package/coverage/lcov-report/api/routes/application.js.html +9 -9
  57. package/coverage/lcov-report/api/routes/auth.js.html +6 -6
  58. package/coverage/lcov-report/api/routes/automation.js.html +109 -19
  59. package/coverage/lcov-report/api/routes/backup.js.html +8 -8
  60. package/coverage/lcov-report/api/routes/cloud.js.html +8 -8
  61. package/coverage/lcov-report/api/routes/component.js.html +8 -8
  62. package/coverage/lcov-report/api/routes/datasource.js.html +156 -18
  63. package/coverage/lcov-report/api/routes/deploy.js.html +8 -8
  64. package/coverage/lcov-report/api/routes/dev.js.html +13 -13
  65. package/coverage/lcov-report/api/routes/index.html +35 -35
  66. package/coverage/lcov-report/api/routes/index.js.html +32 -38
  67. package/coverage/lcov-report/api/routes/integration.js.html +8 -8
  68. package/coverage/lcov-report/api/routes/layout.js.html +8 -8
  69. package/coverage/lcov-report/api/routes/metadata.js.html +9 -9
  70. package/coverage/lcov-report/api/routes/migrations.js.html +7 -7
  71. package/coverage/lcov-report/api/routes/permission.js.html +58 -16
  72. package/coverage/lcov-report/api/routes/query.js.html +10 -10
  73. package/coverage/lcov-report/api/routes/role.js.html +78 -15
  74. package/coverage/lcov-report/api/routes/routing.js.html +8 -8
  75. package/coverage/lcov-report/api/routes/row.js.html +14 -17
  76. package/coverage/lcov-report/api/routes/screen.js.html +95 -14
  77. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/static.js.html +13 -13
  79. package/coverage/lcov-report/api/routes/table.js.html +62 -17
  80. package/coverage/lcov-report/api/routes/templates.js.html +8 -8
  81. package/coverage/lcov-report/api/routes/user.js.html +8 -8
  82. package/coverage/lcov-report/api/routes/view.js.html +10 -10
  83. package/coverage/lcov-report/api/routes/webhook.js.html +62 -14
  84. package/coverage/lcov-report/automations/actions.js.html +24 -24
  85. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  86. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  87. package/coverage/lcov-report/automations/index.html +1 -1
  88. package/coverage/lcov-report/automations/index.js.html +7 -7
  89. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  90. package/coverage/lcov-report/automations/steps/createRow.js.html +7 -7
  91. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  92. package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
  93. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  94. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  95. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  96. package/coverage/lcov-report/automations/steps/filter.js.html +9 -12
  97. package/coverage/lcov-report/automations/steps/index.html +1 -1
  98. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  99. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  100. package/coverage/lcov-report/automations/steps/queryRows.js.html +11 -11
  101. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  102. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  103. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  104. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  105. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  106. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  107. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  108. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  109. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  111. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  115. package/coverage/lcov-report/automations/triggers.js.html +26 -26
  116. package/coverage/lcov-report/automations/utils.js.html +35 -35
  117. package/coverage/lcov-report/constants/index.html +5 -5
  118. package/coverage/lcov-report/constants/index.js.html +28 -40
  119. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  120. package/coverage/lcov-report/constants/screens.js.html +4 -4
  121. package/coverage/lcov-report/db/client.js.html +18 -18
  122. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  123. package/coverage/lcov-report/db/index.html +15 -15
  124. package/coverage/lcov-report/db/index.js.html +3 -3
  125. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +21 -21
  126. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  127. package/coverage/lcov-report/db/linkedRows/index.js.html +36 -36
  128. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +30 -30
  129. package/coverage/lcov-report/db/newid.js.html +4 -4
  130. package/coverage/lcov-report/db/utils.js.html +87 -123
  131. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  132. package/coverage/lcov-report/events/index.html +1 -1
  133. package/coverage/lcov-report/events/index.js.html +8 -8
  134. package/coverage/lcov-report/events/utils.js.html +18 -18
  135. package/coverage/lcov-report/index.html +74 -89
  136. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  137. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  138. package/coverage/lcov-report/middleware/appInfo.js.html +5 -5
  139. package/coverage/lcov-report/middleware/authorized.js.html +29 -29
  140. package/coverage/lcov-report/middleware/builder.js.html +16 -16
  141. package/coverage/lcov-report/middleware/currentapp.js.html +44 -44
  142. package/coverage/lcov-report/middleware/index.html +1 -1
  143. package/coverage/lcov-report/middleware/joi-validator.js.html +14 -14
  144. package/coverage/lcov-report/middleware/resourceId.js.html +29 -29
  145. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  146. package/coverage/lcov-report/middleware/usageQuota.js.html +17 -17
  147. package/coverage/lcov-report/middleware/utils.js.html +4 -4
  148. package/coverage/lcov-report/threads/automation.js.html +1 -1
  149. package/coverage/lcov-report/threads/index.html +19 -19
  150. package/coverage/lcov-report/threads/index.js.html +10 -10
  151. package/coverage/lcov-report/threads/query.js.html +39 -123
  152. package/coverage/lcov-report/threads/utils.js.html +14 -14
  153. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  154. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  155. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  156. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  157. package/coverage/lcov-report/utilities/global.js.html +28 -28
  158. package/coverage/lcov-report/utilities/index.html +18 -18
  159. package/coverage/lcov-report/utilities/index.js.html +24 -24
  160. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -9
  161. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  163. package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
  164. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +60 -60
  166. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +13 -13
  167. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  168. package/coverage/lcov-report/utilities/security.js.html +8 -8
  169. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  170. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  171. package/coverage/lcov-report/utilities/usageQuota/index.js.html +12 -12
  172. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +8 -8
  173. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  174. package/coverage/lcov-report/utilities/users.js.html +5 -5
  175. package/coverage/lcov-report/utilities/workerRequests.js.html +53 -200
  176. package/coverage/lcov.info +3233 -3332
  177. package/dist/api/controllers/application.js +0 -1
  178. package/dist/api/controllers/row/internal.js +1 -4
  179. package/dist/api/controllers/table/index.js +1 -2
  180. package/dist/api/controllers/webhook.js +5 -3
  181. package/dist/api/index.js +1 -3
  182. package/dist/api/routes/automation.js +31 -3
  183. package/dist/api/routes/datasource.js +50 -3
  184. package/dist/api/routes/index.js +0 -2
  185. package/dist/api/routes/permission.js +14 -4
  186. package/dist/api/routes/role.js +19 -3
  187. package/dist/api/routes/row.js +4 -3
  188. package/dist/api/routes/screen.js +23 -2
  189. package/dist/api/routes/table.js +17 -3
  190. package/dist/api/routes/tests/utilities/index.js +0 -23
  191. package/dist/api/routes/webhook.js +17 -2
  192. package/dist/automations/steps/filter.js +2 -2
  193. package/dist/automations/steps/queryRows.js +1 -1
  194. package/dist/automations/utils.js +2 -2
  195. package/dist/constants/index.js +0 -3
  196. package/dist/db/utils.js +0 -11
  197. package/dist/environment.js +0 -1
  198. package/dist/integrations/googlesheets.js +0 -3
  199. package/dist/integrations/microsoftSqlServer.js +29 -35
  200. package/dist/integrations/mysql.js +0 -3
  201. package/dist/integrations/oracle.js +19 -14
  202. package/dist/integrations/postgres.js +28 -34
  203. package/dist/package.json +7 -11
  204. package/dist/tests/utilities/TestConfiguration.js +8 -25
  205. package/dist/threads/query.js +8 -33
  206. package/dist/tsconfig.tsbuildinfo +1 -1
  207. package/dist/utilities/workerRequests.js +15 -50
  208. package/package.json +8 -12
  209. package/scripts/integrations/oracle/oracle.md +2 -2
  210. package/scripts/integrations/postgres/init.sql +3 -5
  211. package/scripts/likeCypress.ts +6 -9
  212. package/scripts/proxy/generateProxyConfig.js +70 -0
  213. package/src/api/controllers/application.js +0 -1
  214. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  215. package/src/api/controllers/row/internal.js +0 -4
  216. package/src/api/controllers/table/index.js +1 -2
  217. package/src/api/controllers/webhook.js +6 -3
  218. package/src/api/index.js +1 -4
  219. package/src/api/routes/automation.js +33 -3
  220. package/src/api/routes/datasource.js +52 -6
  221. package/src/api/routes/index.js +0 -2
  222. package/src/api/routes/permission.js +18 -4
  223. package/src/api/routes/role.js +24 -3
  224. package/src/api/routes/row.js +2 -3
  225. package/src/api/routes/screen.js +29 -2
  226. package/src/api/routes/table.js +19 -4
  227. package/src/api/routes/tests/utilities/index.js +0 -24
  228. package/src/api/routes/webhook.js +18 -2
  229. package/src/automations/steps/filter.js +2 -3
  230. package/src/automations/steps/queryRows.js +1 -1
  231. package/src/automations/utils.js +2 -2
  232. package/src/constants/index.js +0 -4
  233. package/src/db/utils.js +0 -12
  234. package/src/definitions/common.ts +0 -4
  235. package/src/environment.js +0 -1
  236. package/src/integrations/base/datasourcePlus.ts +0 -3
  237. package/src/integrations/googlesheets.ts +2 -5
  238. package/src/integrations/microsoftSqlServer.ts +33 -38
  239. package/src/integrations/mysql.ts +0 -4
  240. package/src/integrations/oracle.ts +35 -27
  241. package/src/integrations/postgres.ts +26 -33
  242. package/src/tests/utilities/TestConfiguration.js +2 -23
  243. package/src/threads/query.js +9 -37
  244. package/src/utilities/workerRequests.js +16 -65
  245. package/builder/assets/index.c0b657be.js +0 -1288
  246. package/coverage/lcov-report/api/routes/utils/index.html +0 -111
  247. package/coverage/lcov-report/api/routes/utils/validators.js.html +0 -737
  248. package/dist/api/controllers/public/applications.js +0 -94
  249. package/dist/api/controllers/public/mapping/applications.js +0 -29
  250. package/dist/api/controllers/public/mapping/index.js +0 -11
  251. package/dist/api/controllers/public/mapping/queries.js +0 -36
  252. package/dist/api/controllers/public/mapping/rows.js +0 -24
  253. package/dist/api/controllers/public/mapping/tables.js +0 -23
  254. package/dist/api/controllers/public/mapping/types.js +0 -2
  255. package/dist/api/controllers/public/mapping/users.js +0 -29
  256. package/dist/api/controllers/public/queries.js +0 -38
  257. package/dist/api/controllers/public/rows.js +0 -97
  258. package/dist/api/controllers/public/tables.js +0 -75
  259. package/dist/api/controllers/public/users.js +0 -95
  260. package/dist/api/controllers/public/utils.js +0 -49
  261. package/dist/api/routes/public/applications.js +0 -141
  262. package/dist/api/routes/public/index.js +0 -101
  263. package/dist/api/routes/public/middleware/mapper.js +0 -94
  264. package/dist/api/routes/public/queries.js +0 -77
  265. package/dist/api/routes/public/rows.js +0 -229
  266. package/dist/api/routes/public/tables.js +0 -154
  267. package/dist/api/routes/public/users.js +0 -137
  268. package/dist/api/routes/public/utils/Endpoint.js +0 -36
  269. package/dist/api/routes/utils/validators.js +0 -200
  270. package/dist/definitions/openapi.js +0 -6
  271. package/specs/generate.js +0 -83
  272. package/specs/openapi.json +0 -2222
  273. package/specs/openapi.yaml +0 -1530
  274. package/specs/parameters.js +0 -59
  275. package/specs/resources/application.js +0 -101
  276. package/specs/resources/index.js +0 -24
  277. package/specs/resources/misc.js +0 -12
  278. package/specs/resources/query.js +0 -189
  279. package/specs/resources/row.js +0 -125
  280. package/specs/resources/table.js +0 -191
  281. package/specs/resources/user.js +0 -126
  282. package/specs/resources/utils/Resource.js +0 -26
  283. package/specs/resources/utils/index.js +0 -11
  284. package/specs/security.js +0 -7
  285. package/src/api/controllers/public/applications.ts +0 -74
  286. package/src/api/controllers/public/mapping/applications.ts +0 -32
  287. package/src/api/controllers/public/mapping/index.ts +0 -13
  288. package/src/api/controllers/public/mapping/queries.ts +0 -39
  289. package/src/api/controllers/public/mapping/rows.ts +0 -31
  290. package/src/api/controllers/public/mapping/tables.ts +0 -26
  291. package/src/api/controllers/public/mapping/types.ts +0 -13
  292. package/src/api/controllers/public/mapping/users.ts +0 -32
  293. package/src/api/controllers/public/queries.ts +0 -20
  294. package/src/api/controllers/public/rows.ts +0 -77
  295. package/src/api/controllers/public/tables.ts +0 -56
  296. package/src/api/controllers/public/users.ts +0 -82
  297. package/src/api/controllers/public/utils.ts +0 -38
  298. package/src/api/routes/public/applications.ts +0 -156
  299. package/src/api/routes/public/index.ts +0 -118
  300. package/src/api/routes/public/middleware/mapper.ts +0 -81
  301. package/src/api/routes/public/queries.ts +0 -81
  302. package/src/api/routes/public/rows.ts +0 -242
  303. package/src/api/routes/public/tables.ts +0 -169
  304. package/src/api/routes/public/tests/compare.spec.js +0 -184
  305. package/src/api/routes/public/users.ts +0 -144
  306. package/src/api/routes/public/utils/Endpoint.ts +0 -51
  307. package/src/api/routes/utils/validators.js +0 -219
  308. package/src/definitions/openapi.ts +0 -943
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>8/8</span>
28
+ <span class='fraction'>11/11</span>
29
29
  </div>
30
30
 
31
31
 
@@ -39,14 +39,14 @@
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/0</span>
42
+ <span class='fraction'>1/1</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>8/8</span>
49
+ <span class='fraction'>11/11</span>
50
50
  </div>
51
51
 
52
52
 
@@ -90,20 +90,43 @@
90
90
  <a name='L31'></a><a href='#L31'>31</a>
91
91
  <a name='L32'></a><a href='#L32'>32</a>
92
92
  <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
94
- <span class="cline-any cline-yes">24x</span>
95
- <span class="cline-any cline-yes">24x</span>
96
- <span class="cline-any cline-yes">24x</span>
97
- <span class="cline-any cline-yes">24x</span>
93
+ <a name='L34'></a><a href='#L34'>34</a>
94
+ <a name='L35'></a><a href='#L35'>35</a>
95
+ <a name='L36'></a><a href='#L36'>36</a>
96
+ <a name='L37'></a><a href='#L37'>37</a>
97
+ <a name='L38'></a><a href='#L38'>38</a>
98
+ <a name='L39'></a><a href='#L39'>39</a>
99
+ <a name='L40'></a><a href='#L40'>40</a>
100
+ <a name='L41'></a><a href='#L41'>41</a>
101
+ <a name='L42'></a><a href='#L42'>42</a>
102
+ <a name='L43'></a><a href='#L43'>43</a>
103
+ <a name='L44'></a><a href='#L44'>44</a>
104
+ <a name='L45'></a><a href='#L45'>45</a>
105
+ <a name='L46'></a><a href='#L46'>46</a>
106
+ <a name='L47'></a><a href='#L47'>47</a>
107
+ <a name='L48'></a><a href='#L48'>48</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
108
+ <span class="cline-any cline-yes">23x</span>
109
+ <span class="cline-any cline-yes">23x</span>
110
+ <span class="cline-any cline-neutral">&nbsp;</span>
111
+ <span class="cline-any cline-neutral">&nbsp;</span>
112
+ <span class="cline-any cline-neutral">&nbsp;</span>
113
+ <span class="cline-any cline-yes">23x</span>
114
+ <span class="cline-any cline-yes">23x</span>
115
+ <span class="cline-any cline-yes">23x</span>
116
+ <span class="cline-any cline-neutral">&nbsp;</span>
117
+ <span class="cline-any cline-yes">23x</span>
118
+ <span class="cline-any cline-neutral">&nbsp;</span>
119
+ <span class="cline-any cline-neutral">&nbsp;</span>
120
+ <span class="cline-any cline-yes">46x</span>
98
121
  <span class="cline-any cline-neutral">&nbsp;</span>
99
- <span class="cline-any cline-yes">24x</span>
122
+ <span class="cline-any cline-yes">46x</span>
100
123
  <span class="cline-any cline-neutral">&nbsp;</span>
101
- <span class="cline-any cline-yes">24x</span>
102
124
  <span class="cline-any cline-neutral">&nbsp;</span>
103
125
  <span class="cline-any cline-neutral">&nbsp;</span>
104
126
  <span class="cline-any cline-neutral">&nbsp;</span>
105
127
  <span class="cline-any cline-neutral">&nbsp;</span>
106
128
  <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-yes">23x</span>
107
130
  <span class="cline-any cline-neutral">&nbsp;</span>
108
131
  <span class="cline-any cline-neutral">&nbsp;</span>
109
132
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -122,15 +145,34 @@
122
145
  <span class="cline-any cline-neutral">&nbsp;</span>
123
146
  <span class="cline-any cline-neutral">&nbsp;</span>
124
147
  <span class="cline-any cline-neutral">&nbsp;</span>
125
- <span class="cline-any cline-yes">24x</span>
148
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span>
153
+ <span class="cline-any cline-yes">23x</span>
126
154
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
127
155
  const controller = require("../controllers/permission")
128
156
  const authorized = require("../../middleware/authorized")
129
- const { BUILDER } = require("@budibase/backend-core/permissions")
130
- const { permissionValidator } = require("./utils/validators")
157
+ const {
158
+ BUILDER,
159
+ PermissionLevels,
160
+ } = require("@budibase/backend-core/permissions")
161
+ const Joi = require("joi")
162
+ const joiValidator = require("../../middleware/joi-validator")
131
163
  &nbsp;
132
164
  const router = Router()
133
165
  &nbsp;
166
+ function generateValidator() {
167
+ const permLevelArray = Object.values(PermissionLevels)
168
+ // prettier-ignore
169
+ return joiValidator.params(Joi.object({
170
+ level: Joi.string().valid(...permLevelArray).required(),
171
+ resourceId: Joi.string(),
172
+ roleId: Joi.string(),
173
+ }).unknown(true))
174
+ }
175
+ &nbsp;
134
176
  router
135
177
  .get("/api/permission/builtin", authorized(BUILDER), controller.fetchBuiltin)
136
178
  .get("/api/permission/levels", authorized(BUILDER), controller.fetchLevels)
@@ -144,14 +186,14 @@ router
144
186
  .post(
145
187
  "/api/permission/:roleId/:resourceId/:level",
146
188
  authorized(BUILDER),
147
- permissionValidator(),
189
+ generateValidator(),
148
190
  controller.addPermission
149
191
  )
150
192
  // deleting the level defaults it back the underlying access control for the resource
151
193
  .delete(
152
194
  "/api/permission/:roleId/:resourceId/:level",
153
195
  authorized(BUILDER),
154
- permissionValidator(),
196
+ generateValidator(),
155
197
  controller.removePermission
156
198
  )
157
199
  &nbsp;
@@ -163,7 +205,7 @@ module.exports = router
163
205
  <div class='footer quiet pad2 space-top1 center small'>
164
206
  Code coverage generated by
165
207
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
166
- at Sun Mar 06 2022 21:05:04 GMT+0000 (Coordinated Universal Time)
208
+ at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
167
209
  </div>
168
210
  </div>
169
211
  <script src="../../prettify.js"></script>
@@ -121,27 +121,27 @@
121
121
  <a name='L62'></a><a href='#L62'>62</a>
122
122
  <a name='L63'></a><a href='#L63'>63</a>
123
123
  <a name='L64'></a><a href='#L64'>64</a>
124
- <a name='L65'></a><a href='#L65'>65</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
125
- <span class="cline-any cline-yes">24x</span>
126
- <span class="cline-any cline-yes">24x</span>
124
+ <a name='L65'></a><a href='#L65'>65</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
125
+ <span class="cline-any cline-yes">23x</span>
126
+ <span class="cline-any cline-yes">23x</span>
127
127
  <span class="cline-any cline-neutral">&nbsp;</span>
128
128
  <span class="cline-any cline-neutral">&nbsp;</span>
129
129
  <span class="cline-any cline-neutral">&nbsp;</span>
130
130
  <span class="cline-any cline-neutral">&nbsp;</span>
131
- <span class="cline-any cline-yes">24x</span>
131
+ <span class="cline-any cline-yes">23x</span>
132
132
  <span class="cline-any cline-neutral">&nbsp;</span>
133
133
  <span class="cline-any cline-neutral">&nbsp;</span>
134
134
  <span class="cline-any cline-neutral">&nbsp;</span>
135
135
  <span class="cline-any cline-neutral">&nbsp;</span>
136
- <span class="cline-any cline-yes">24x</span>
136
+ <span class="cline-any cline-yes">23x</span>
137
137
  <span class="cline-any cline-neutral">&nbsp;</span>
138
138
  <span class="cline-any cline-neutral">&nbsp;</span>
139
139
  <span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-yes">24x</span>
140
+ <span class="cline-any cline-yes">23x</span>
141
141
  <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-yes">24x</span>
142
+ <span class="cline-any cline-yes">23x</span>
143
143
  <span class="cline-any cline-neutral">&nbsp;</span>
144
- <span class="cline-any cline-yes">24x</span>
144
+ <span class="cline-any cline-yes">23x</span>
145
145
  <span class="cline-any cline-neutral">&nbsp;</span>
146
146
  <span class="cline-any cline-neutral">&nbsp;</span>
147
147
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -184,7 +184,7 @@
184
184
  <span class="cline-any cline-neutral">&nbsp;</span>
185
185
  <span class="cline-any cline-neutral">&nbsp;</span>
186
186
  <span class="cline-any cline-neutral">&nbsp;</span>
187
- <span class="cline-any cline-yes">24x</span>
187
+ <span class="cline-any cline-yes">23x</span>
188
188
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
189
189
  const queryController = require("../controllers/query")
190
190
  const authorized = require("../../middleware/authorized")
@@ -256,7 +256,7 @@ module.exports = router
256
256
  <div class='footer quiet pad2 space-top1 center small'>
257
257
  Code coverage generated by
258
258
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
259
- at Sun Mar 06 2022 21:05:04 GMT+0000 (Coordinated Universal Time)
259
+ at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
260
260
  </div>
261
261
  </div>
262
262
  <script src="../../prettify.js"></script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>8/8</span>
28
+ <span class='fraction'>11/11</span>
29
29
  </div>
30
30
 
31
31
 
@@ -39,14 +39,14 @@
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/0</span>
42
+ <span class='fraction'>1/1</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>8/8</span>
49
+ <span class='fraction'>11/11</span>
50
50
  </div>
51
51
 
52
52
 
@@ -72,31 +72,94 @@
72
72
  <a name='L13'></a><a href='#L13'>13</a>
73
73
  <a name='L14'></a><a href='#L14'>14</a>
74
74
  <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
76
- <span class="cline-any cline-yes">24x</span>
77
- <span class="cline-any cline-yes">24x</span>
78
- <span class="cline-any cline-yes">24x</span>
79
- <span class="cline-any cline-yes">24x</span>
75
+ <a name='L16'></a><a href='#L16'>16</a>
76
+ <a name='L17'></a><a href='#L17'>17</a>
77
+ <a name='L18'></a><a href='#L18'>18</a>
78
+ <a name='L19'></a><a href='#L19'>19</a>
79
+ <a name='L20'></a><a href='#L20'>20</a>
80
+ <a name='L21'></a><a href='#L21'>21</a>
81
+ <a name='L22'></a><a href='#L22'>22</a>
82
+ <a name='L23'></a><a href='#L23'>23</a>
83
+ <a name='L24'></a><a href='#L24'>24</a>
84
+ <a name='L25'></a><a href='#L25'>25</a>
85
+ <a name='L26'></a><a href='#L26'>26</a>
86
+ <a name='L27'></a><a href='#L27'>27</a>
87
+ <a name='L28'></a><a href='#L28'>28</a>
88
+ <a name='L29'></a><a href='#L29'>29</a>
89
+ <a name='L30'></a><a href='#L30'>30</a>
90
+ <a name='L31'></a><a href='#L31'>31</a>
91
+ <a name='L32'></a><a href='#L32'>32</a>
92
+ <a name='L33'></a><a href='#L33'>33</a>
93
+ <a name='L34'></a><a href='#L34'>34</a>
94
+ <a name='L35'></a><a href='#L35'>35</a>
95
+ <a name='L36'></a><a href='#L36'>36</a>
96
+ <a name='L37'></a><a href='#L37'>37</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
97
+ <span class="cline-any cline-yes">23x</span>
98
+ <span class="cline-any cline-yes">23x</span>
99
+ <span class="cline-any cline-yes">23x</span>
100
+ <span class="cline-any cline-yes">23x</span>
101
+ <span class="cline-any cline-neutral">&nbsp;</span>
102
+ <span class="cline-any cline-neutral">&nbsp;</span>
103
+ <span class="cline-any cline-neutral">&nbsp;</span>
104
+ <span class="cline-any cline-neutral">&nbsp;</span>
105
+ <span class="cline-any cline-yes">23x</span>
106
+ <span class="cline-any cline-neutral">&nbsp;</span>
107
+ <span class="cline-any cline-yes">23x</span>
108
+ <span class="cline-any cline-neutral">&nbsp;</span>
109
+ <span class="cline-any cline-neutral">&nbsp;</span>
110
+ <span class="cline-any cline-yes">23x</span>
111
+ <span class="cline-any cline-neutral">&nbsp;</span>
112
+ <span class="cline-any cline-yes">23x</span>
113
+ <span class="cline-any cline-neutral">&nbsp;</span>
80
114
  <span class="cline-any cline-neutral">&nbsp;</span>
81
- <span class="cline-any cline-yes">24x</span>
82
115
  <span class="cline-any cline-neutral">&nbsp;</span>
83
- <span class="cline-any cline-yes">24x</span>
84
116
  <span class="cline-any cline-neutral">&nbsp;</span>
85
117
  <span class="cline-any cline-neutral">&nbsp;</span>
86
118
  <span class="cline-any cline-neutral">&nbsp;</span>
87
119
  <span class="cline-any cline-neutral">&nbsp;</span>
88
120
  <span class="cline-any cline-neutral">&nbsp;</span>
89
- <span class="cline-any cline-yes">24x</span>
121
+ <span class="cline-any cline-neutral">&nbsp;</span>
122
+ <span class="cline-any cline-neutral">&nbsp;</span>
123
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
+ <span class="cline-any cline-neutral">&nbsp;</span>
125
+ <span class="cline-any cline-yes">23x</span>
126
+ <span class="cline-any cline-neutral">&nbsp;</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-yes">23x</span>
90
132
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
91
133
  const controller = require("../controllers/role")
92
134
  const authorized = require("../../middleware/authorized")
93
- const { BUILDER } = require("@budibase/backend-core/permissions")
94
- const { roleValidator } = require("./utils/validators")
135
+ const Joi = require("joi")
136
+ const joiValidator = require("../../middleware/joi-validator")
137
+ const {
138
+ BUILTIN_PERMISSION_IDS,
139
+ BUILDER,
140
+ PermissionLevels,
141
+ } = require("@budibase/backend-core/permissions")
95
142
  &nbsp;
96
143
  const router = Router()
97
144
  &nbsp;
145
+ function generateValidator() {
146
+ const permLevelArray = Object.values(PermissionLevels)
147
+ // prettier-ignore
148
+ return joiValidator.body(Joi.object({
149
+ _id: Joi.string().optional(),
150
+ _rev: Joi.string().optional(),
151
+ name: Joi.string().required(),
152
+ // this is the base permission ID (for now a built in)
153
+ permissionId: Joi.string().valid(...Object.values(BUILTIN_PERMISSION_IDS)).required(),
154
+ permissions: Joi.object()
155
+ .pattern(/.*/, [Joi.string().valid(...permLevelArray)])
156
+ .optional(),
157
+ inherits: Joi.string().optional(),
158
+ }).unknown(true))
159
+ }
160
+ &nbsp;
98
161
  router
99
- .post("/api/roles", authorized(BUILDER), roleValidator(), controller.save)
162
+ .post("/api/roles", authorized(BUILDER), generateValidator(), controller.save)
100
163
  .get("/api/roles", authorized(BUILDER), controller.fetch)
101
164
  .get("/api/roles/:roleId", authorized(BUILDER), controller.find)
102
165
  .delete("/api/roles/:roleId/:rev", authorized(BUILDER), controller.destroy)
@@ -109,7 +172,7 @@ module.exports = router
109
172
  <div class='footer quiet pad2 space-top1 center small'>
110
173
  Code coverage generated by
111
174
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
112
- at Sun Mar 06 2022 21:05:04 GMT+0000 (Coordinated Universal Time)
175
+ at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
113
176
  </div>
114
177
  </div>
115
178
  <script src="../../prettify.js"></script>
@@ -71,20 +71,20 @@
71
71
  <a name='L12'></a><a href='#L12'>12</a>
72
72
  <a name='L13'></a><a href='#L13'>13</a>
73
73
  <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
75
- <span class="cline-any cline-yes">24x</span>
76
- <span class="cline-any cline-yes">24x</span>
77
- <span class="cline-any cline-yes">24x</span>
74
+ <a name='L15'></a><a href='#L15'>15</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
75
+ <span class="cline-any cline-yes">23x</span>
76
+ <span class="cline-any cline-yes">23x</span>
77
+ <span class="cline-any cline-yes">23x</span>
78
78
  <span class="cline-any cline-neutral">&nbsp;</span>
79
- <span class="cline-any cline-yes">24x</span>
79
+ <span class="cline-any cline-yes">23x</span>
80
80
  <span class="cline-any cline-neutral">&nbsp;</span>
81
- <span class="cline-any cline-yes">24x</span>
81
+ <span class="cline-any cline-yes">23x</span>
82
82
  <span class="cline-any cline-neutral">&nbsp;</span>
83
83
  <span class="cline-any cline-neutral">&nbsp;</span>
84
84
  <span class="cline-any cline-neutral">&nbsp;</span>
85
85
  <span class="cline-any cline-neutral">&nbsp;</span>
86
86
  <span class="cline-any cline-neutral">&nbsp;</span>
87
- <span class="cline-any cline-yes">24x</span>
87
+ <span class="cline-any cline-yes">23x</span>
88
88
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
89
89
  const authorized = require("../../middleware/authorized")
90
90
  const { BUILDER } = require("@budibase/backend-core/permissions")
@@ -106,7 +106,7 @@ module.exports = router
106
106
  <div class='footer quiet pad2 space-top1 center small'>
107
107
  Code coverage generated by
108
108
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
109
- at Sun Mar 06 2022 21:05:04 GMT+0000 (Coordinated Universal Time)
109
+ at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
110
110
  </div>
111
111
  </div>
112
112
  <script src="../../prettify.js"></script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>10/10</span>
28
+ <span class='fraction'>9/9</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>10/10</span>
49
+ <span class='fraction'>9/9</span>
50
50
  </div>
51
51
 
52
52
 
@@ -311,24 +311,22 @@
311
311
  <a name='L252'></a><a href='#L252'>252</a>
312
312
  <a name='L253'></a><a href='#L253'>253</a>
313
313
  <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a>
315
- <a name='L256'></a><a href='#L256'>256</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
316
- <span class="cline-any cline-yes">24x</span>
317
- <span class="cline-any cline-yes">24x</span>
318
- <span class="cline-any cline-yes">24x</span>
314
+ <a name='L255'></a><a href='#L255'>255</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
315
+ <span class="cline-any cline-yes">23x</span>
316
+ <span class="cline-any cline-yes">23x</span>
317
+ <span class="cline-any cline-yes">23x</span>
319
318
  <span class="cline-any cline-neutral">&nbsp;</span>
320
319
  <span class="cline-any cline-neutral">&nbsp;</span>
321
320
  <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-yes">24x</span>
321
+ <span class="cline-any cline-yes">23x</span>
323
322
  <span class="cline-any cline-neutral">&nbsp;</span>
324
323
  <span class="cline-any cline-neutral">&nbsp;</span>
325
324
  <span class="cline-any cline-neutral">&nbsp;</span>
326
- <span class="cline-any cline-yes">24x</span>
327
- <span class="cline-any cline-yes">24x</span>
325
+ <span class="cline-any cline-yes">23x</span>
328
326
  <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-yes">24x</span>
327
+ <span class="cline-any cline-yes">23x</span>
330
328
  <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-yes">24x</span>
329
+ <span class="cline-any cline-yes">23x</span>
332
330
  <span class="cline-any cline-neutral">&nbsp;</span>
333
331
  <span class="cline-any cline-neutral">&nbsp;</span>
334
332
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -566,7 +564,7 @@
566
564
  <span class="cline-any cline-neutral">&nbsp;</span>
567
565
  <span class="cline-any cline-neutral">&nbsp;</span>
568
566
  <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-yes">24x</span>
567
+ <span class="cline-any cline-yes">23x</span>
570
568
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
571
569
  const rowController = require("../controllers/row")
572
570
  const authorized = require("../../middleware/authorized")
@@ -579,7 +577,6 @@ const {
579
577
  PermissionLevels,
580
578
  PermissionTypes,
581
579
  } = require("@budibase/backend-core/permissions")
582
- const { internalSearchValidator } = require("./utils/validators")
583
580
  &nbsp;
584
581
  const router = Router()
585
582
  &nbsp;
@@ -689,6 +686,8 @@ router
689
686
  * "notEqual": {},
690
687
  * "empty": {},
691
688
  * "notEmpty": {},
689
+ * "contains": {},
690
+ * "notContains": {}
692
691
  * "oneOf": {
693
692
  * "columnName": ["value"]
694
693
  * }
@@ -708,7 +707,6 @@ router
708
707
  */
709
708
  .post(
710
709
  "/api/:tableId/search",
711
- internalSearchValidator(),
712
710
  paramResource("tableId"),
713
711
  authorized(PermissionTypes.TABLE, PermissionLevels.READ),
714
712
  rowController.search
@@ -764,7 +762,6 @@ router
764
762
  "/api/:tableId/rows",
765
763
  paramResource("tableId"),
766
764
  authorized(PermissionTypes.TABLE, PermissionLevels.WRITE),
767
- usage,
768
765
  rowController.patch
769
766
  )
770
767
  /**
@@ -829,7 +826,7 @@ module.exports = router
829
826
  <div class='footer quiet pad2 space-top1 center small'>
830
827
  Code coverage generated by
831
828
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
832
- at Sun Mar 06 2022 21:05:04 GMT+0000 (Coordinated Universal Time)
829
+ at Tue Mar 08 2022 08:50:56 GMT+0000 (Coordinated Universal Time)
833
830
  </div>
834
831
  </div>
835
832
  <script src="../../prettify.js"></script>