@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
@@ -1,144 +0,0 @@
1
- import controller from "../../controllers/public/users"
2
- import Endpoint from "./utils/Endpoint"
3
- import { nameValidator } from "../utils/validators"
4
-
5
- const read = [],
6
- write = []
7
-
8
- /**
9
- * @openapi
10
- * /users:
11
- * post:
12
- * summary: Create a user
13
- * tags:
14
- * - users
15
- * requestBody:
16
- * required: true
17
- * content:
18
- * application/json:
19
- * schema:
20
- * $ref: '#/components/schemas/user'
21
- * responses:
22
- * 200:
23
- * description: Returns the created user.
24
- * content:
25
- * application/json:
26
- * schema:
27
- * $ref: '#/components/schemas/userOutput'
28
- * examples:
29
- * user:
30
- * $ref: '#/components/examples/user'
31
- */
32
- write.push(new Endpoint("post", "/users", controller.create))
33
-
34
- /**
35
- * @openapi
36
- * /users/{userId}:
37
- * put:
38
- * summary: Update a user
39
- * tags:
40
- * - users
41
- * parameters:
42
- * - $ref: '#/components/parameters/userId'
43
- * requestBody:
44
- * required: true
45
- * content:
46
- * application/json:
47
- * schema:
48
- * $ref: '#/components/schemas/user'
49
- * responses:
50
- * 200:
51
- * description: Returns the updated user.
52
- * content:
53
- * application/json:
54
- * schema:
55
- * $ref: '#/components/schemas/userOutput'
56
- * examples:
57
- * user:
58
- * $ref: '#/components/examples/user'
59
- */
60
- write.push(new Endpoint("put", "/users/:userId", controller.update))
61
-
62
- /**
63
- * @openapi
64
- * /users/{userId}:
65
- * delete:
66
- * summary: Delete a user
67
- * tags:
68
- * - users
69
- * parameters:
70
- * - $ref: '#/components/parameters/userId'
71
- * responses:
72
- * 200:
73
- * description: Returns the deleted user.
74
- * content:
75
- * application/json:
76
- * schema:
77
- * $ref: '#/components/schemas/userOutput'
78
- * examples:
79
- * user:
80
- * $ref: '#/components/examples/user'
81
- */
82
- write.push(new Endpoint("delete", "/users/:userId", controller.destroy))
83
-
84
- /**
85
- * @openapi
86
- * /users/{userId}:
87
- * get:
88
- * summary: Retrieve a user
89
- * tags:
90
- * - users
91
- * parameters:
92
- * - $ref: '#/components/parameters/userId'
93
- * responses:
94
- * 200:
95
- * description: Returns the retrieved user.
96
- * content:
97
- * application/json:
98
- * schema:
99
- * $ref: '#/components/schemas/userOutput'
100
- * examples:
101
- * user:
102
- * $ref: '#/components/examples/user'
103
- */
104
- read.push(new Endpoint("get", "/users/:userId", controller.read))
105
-
106
- /**
107
- * @openapi
108
- * /users/search:
109
- * post:
110
- * summary: Search for users
111
- * description: Based on user properties (currently only name) search for users.
112
- * tags:
113
- * - users
114
- * requestBody:
115
- * required: true
116
- * content:
117
- * application/json:
118
- * schema:
119
- * $ref: '#/components/schemas/nameSearch'
120
- * responses:
121
- * 200:
122
- * description: Returns the found users based on search parameters.
123
- * content:
124
- * application/json:
125
- * schema:
126
- * type: object
127
- * required:
128
- * - data
129
- * properties:
130
- * data:
131
- * type: array
132
- * items:
133
- * $ref: '#/components/schemas/user'
134
- * examples:
135
- * users:
136
- * $ref: '#/components/examples/users'
137
- */
138
- read.push(
139
- new Endpoint("post", "/users/search", controller.search).addMiddleware(
140
- nameValidator()
141
- )
142
- )
143
-
144
- export default { read, write }
@@ -1,51 +0,0 @@
1
- import Router from "koa-router"
2
-
3
- export type CtxFn = (ctx: any, next?: any) => void | Promise<any>
4
-
5
- class Endpoint {
6
- method: string
7
- url: string
8
- controller: CtxFn
9
- middlewares: CtxFn[]
10
- outputMiddlewares: CtxFn[]
11
-
12
- constructor(method: string, url: string, controller: CtxFn) {
13
- this.method = method
14
- this.url = url
15
- this.controller = controller
16
- this.middlewares = []
17
- this.outputMiddlewares = []
18
- }
19
-
20
- addMiddleware(middleware: CtxFn) {
21
- this.middlewares.push(middleware)
22
- return this
23
- }
24
-
25
- addOutputMiddleware(middleware: CtxFn) {
26
- this.outputMiddlewares.push(middleware)
27
- return this
28
- }
29
-
30
- apply(router: Router) {
31
- const method = this.method,
32
- url = this.url
33
- const middlewares = this.middlewares,
34
- controller = this.controller,
35
- outputMiddlewares = this.outputMiddlewares
36
- // need a function to do nothing to stop the execution at the end
37
- // middlewares are circular so if they always keep calling next, it'll just keep looping
38
- const complete = () => {}
39
- const params = [
40
- url,
41
- ...middlewares,
42
- controller,
43
- ...outputMiddlewares,
44
- complete,
45
- ]
46
- // @ts-ignore
47
- router[method](...params)
48
- }
49
- }
50
-
51
- export default Endpoint
@@ -1,219 +0,0 @@
1
- const joiValidator = require("../../../middleware/joi-validator")
2
- const { DataSourceOperation } = require("../../../constants")
3
- const { WebhookType } = require("../../../constants")
4
- const {
5
- BUILTIN_PERMISSION_IDS,
6
- PermissionLevels,
7
- } = require("@budibase/backend-core/permissions")
8
- const Joi = require("joi")
9
-
10
- const OPTIONAL_STRING = Joi.string().optional().allow(null).allow("")
11
- const OPTIONAL_NUMBER = Joi.number().optional().allow(null)
12
-
13
- exports.tableValidator = () => {
14
- // prettier-ignore
15
- return joiValidator.body(Joi.object({
16
- _id: OPTIONAL_STRING,
17
- _rev: OPTIONAL_STRING,
18
- type: OPTIONAL_STRING.valid("table", "internal", "external"),
19
- primaryDisplay: OPTIONAL_STRING,
20
- schema: Joi.object().required(),
21
- name: Joi.string().required(),
22
- views: Joi.object(),
23
- dataImport: Joi.object(),
24
- }).unknown(true))
25
- }
26
-
27
- exports.nameValidator = () => {
28
- // prettier-ignore
29
- return joiValidator.body(Joi.object({
30
- name: OPTIONAL_STRING,
31
- }))
32
- }
33
-
34
- exports.datasourceValidator = () => {
35
- // prettier-ignore
36
- return joiValidator.body(Joi.object({
37
- _id: Joi.string(),
38
- _rev: Joi.string(),
39
- type: OPTIONAL_STRING.allow("datasource_plus"),
40
- relationships: Joi.array().items(Joi.object({
41
- from: Joi.string().required(),
42
- to: Joi.string().required(),
43
- cardinality: Joi.valid("1:N", "1:1", "N:N").required()
44
- })),
45
- }).unknown(true))
46
- }
47
-
48
- function filterObject() {
49
- // prettier-ignore
50
- return Joi.object({
51
- string: Joi.object().optional(),
52
- fuzzy: Joi.object().optional(),
53
- range: Joi.object().optional(),
54
- equal: Joi.object().optional(),
55
- notEqual: Joi.object().optional(),
56
- empty: Joi.object().optional(),
57
- notEmpty: Joi.object().optional(),
58
- oneOf: Joi.object().optional(),
59
- contains: Joi.object().optional(),
60
- notContains: Joi.object().optional(),
61
- }).unknown(true)
62
- }
63
-
64
- exports.internalSearchValidator = () => {
65
- // prettier-ignore
66
- return joiValidator.body(Joi.object({
67
- tableId: OPTIONAL_STRING,
68
- query: filterObject(),
69
- limit: OPTIONAL_NUMBER,
70
- sort: OPTIONAL_STRING,
71
- sortOrder: OPTIONAL_STRING,
72
- sortType: OPTIONAL_STRING,
73
- paginate: Joi.boolean(),
74
- bookmark: Joi.alternatives().try(OPTIONAL_STRING, OPTIONAL_NUMBER).optional(),
75
- }))
76
- }
77
-
78
- exports.externalSearchValidator = () => {
79
- return joiValidator.body(
80
- Joi.object({
81
- query: filterObject(),
82
- paginate: Joi.boolean().optional(),
83
- bookmark: Joi.alternatives()
84
- .try(OPTIONAL_STRING, OPTIONAL_NUMBER)
85
- .optional(),
86
- limit: OPTIONAL_NUMBER,
87
- sort: Joi.object({
88
- column: Joi.string(),
89
- order: OPTIONAL_STRING.valid("ascending", "descending"),
90
- type: OPTIONAL_STRING.valid("string", "number"),
91
- }).optional(),
92
- })
93
- )
94
- }
95
-
96
- exports.datasourceQueryValidator = () => {
97
- // prettier-ignore
98
- return joiValidator.body(Joi.object({
99
- endpoint: Joi.object({
100
- datasourceId: Joi.string().required(),
101
- operation: Joi.string().required().valid(...Object.values(DataSourceOperation)),
102
- entityId: Joi.string().required(),
103
- }).required(),
104
- resource: Joi.object({
105
- fields: Joi.array().items(Joi.string()).optional(),
106
- }).optional(),
107
- body: Joi.object().optional(),
108
- sort: Joi.object().optional(),
109
- filters: filterObject().optional(),
110
- paginate: Joi.object({
111
- page: Joi.string().alphanum().optional(),
112
- limit: Joi.number().optional(),
113
- }).optional(),
114
- }))
115
- }
116
-
117
- exports.webhookValidator = () => {
118
- // prettier-ignore
119
- return joiValidator.body(Joi.object({
120
- live: Joi.bool(),
121
- _id: OPTIONAL_STRING,
122
- _rev: OPTIONAL_STRING,
123
- name: Joi.string().required(),
124
- bodySchema: Joi.object().optional(),
125
- action: Joi.object({
126
- type: Joi.string().required().valid(WebhookType.AUTOMATION),
127
- target: Joi.string().required(),
128
- }).required(),
129
- }).unknown(true))
130
- }
131
-
132
- exports.roleValidator = () => {
133
- const permLevelArray = Object.values(PermissionLevels)
134
- // prettier-ignore
135
- return joiValidator.body(Joi.object({
136
- _id: OPTIONAL_STRING,
137
- _rev: OPTIONAL_STRING,
138
- name: Joi.string().required(),
139
- // this is the base permission ID (for now a built in)
140
- permissionId: Joi.string().valid(...Object.values(BUILTIN_PERMISSION_IDS)).required(),
141
- permissions: Joi.object()
142
- .pattern(/.*/, [Joi.string().valid(...permLevelArray)])
143
- .optional(),
144
- inherits: OPTIONAL_STRING,
145
- }).unknown(true))
146
- }
147
-
148
- exports.permissionValidator = () => {
149
- const permLevelArray = Object.values(PermissionLevels)
150
- // prettier-ignore
151
- return joiValidator.params(Joi.object({
152
- level: Joi.string().valid(...permLevelArray).required(),
153
- resourceId: Joi.string(),
154
- roleId: Joi.string(),
155
- }).unknown(true))
156
- }
157
-
158
- exports.screenValidator = () => {
159
- // prettier-ignore
160
- return joiValidator.body(Joi.object({
161
- name: Joi.string().required(),
162
- routing: Joi.object({
163
- route: Joi.string().required(),
164
- roleId: Joi.string().required().allow(""),
165
- }).required().unknown(true),
166
- props: Joi.object({
167
- _id: Joi.string().required(),
168
- _component: Joi.string().required(),
169
- _children: Joi.array().required(),
170
- _instanceName: Joi.string().required(),
171
- _styles: Joi.object().required(),
172
- type: OPTIONAL_STRING,
173
- table: OPTIONAL_STRING,
174
- layoutId: OPTIONAL_STRING,
175
- }).required().unknown(true),
176
- }).unknown(true))
177
- }
178
-
179
- function generateStepSchema(allowStepTypes) {
180
- // prettier-ignore
181
- return Joi.object({
182
- stepId: Joi.string().required(),
183
- id: Joi.string().required(),
184
- description: Joi.string().required(),
185
- name: Joi.string().required(),
186
- tagline: Joi.string().required(),
187
- icon: Joi.string().required(),
188
- params: Joi.object(),
189
- args: Joi.object(),
190
- type: Joi.string().required().valid(...allowStepTypes),
191
- }).unknown(true)
192
- }
193
-
194
- exports.automationValidator = (existing = false) => {
195
- // prettier-ignore
196
- return joiValidator.body(Joi.object({
197
- _id: existing ? Joi.string().required() : OPTIONAL_STRING,
198
- _rev: existing ? Joi.string().required() : OPTIONAL_STRING,
199
- name: Joi.string().required(),
200
- type: Joi.string().valid("automation").required(),
201
- definition: Joi.object({
202
- steps: Joi.array().required().items(generateStepSchema(["ACTION", "LOGIC"])),
203
- trigger: generateStepSchema(["TRIGGER"]).allow(null),
204
- }).required().unknown(true),
205
- }).unknown(true))
206
- }
207
-
208
- exports.applicationValidator = () => {
209
- // prettier-ignore
210
- return joiValidator.body(Joi.object({
211
- _id: OPTIONAL_STRING,
212
- _rev: OPTIONAL_STRING,
213
- name: Joi.string().required(),
214
- url: OPTIONAL_STRING,
215
- template: Joi.object({
216
- templateString: OPTIONAL_STRING,
217
- }).unknown(true),
218
- }).unknown(true))
219
- }