@budibase/server 1.0.78 → 1.0.79-alpha.10

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 (305) hide show
  1. package/__mocks__/node-fetch.ts +1 -0
  2. package/builder/assets/index.1a081633.js +1288 -0
  3. package/builder/assets/{index.c8d1e8f0.css → index.c57242d4.css} +2 -2
  4. package/builder/assets/{vendor.20f80cec.js → vendor.a7c6ad0a.js} +190 -216
  5. package/builder/index.html +3 -3
  6. package/coverage/clover.xml +2399 -2336
  7. package/coverage/coverage-final.json +138 -137
  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 +152 -149
  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 +94 -82
  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 +47 -44
  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 +18 -27
  52. package/coverage/lcov-report/api/index.html +10 -10
  53. package/coverage/lcov-report/api/index.js.html +37 -28
  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 +19 -109
  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 +18 -156
  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 +38 -32
  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 +16 -58
  72. package/coverage/lcov-report/api/routes/query.js.html +10 -10
  73. package/coverage/lcov-report/api/routes/role.js.html +15 -78
  74. package/coverage/lcov-report/api/routes/routing.js.html +8 -8
  75. package/coverage/lcov-report/api/routes/row.js.html +17 -14
  76. package/coverage/lcov-report/api/routes/screen.js.html +14 -95
  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 +17 -62
  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/utils/index.html +111 -0
  83. package/coverage/lcov-report/api/routes/utils/validators.js.html +737 -0
  84. package/coverage/lcov-report/api/routes/view.js.html +10 -10
  85. package/coverage/lcov-report/api/routes/webhook.js.html +14 -62
  86. package/coverage/lcov-report/automations/actions.js.html +24 -24
  87. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  88. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  89. package/coverage/lcov-report/automations/index.html +1 -1
  90. package/coverage/lcov-report/automations/index.js.html +7 -7
  91. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  92. package/coverage/lcov-report/automations/steps/createRow.js.html +7 -7
  93. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  94. package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
  95. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  96. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  97. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  98. package/coverage/lcov-report/automations/steps/filter.js.html +12 -9
  99. package/coverage/lcov-report/automations/steps/index.html +1 -1
  100. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  101. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  102. package/coverage/lcov-report/automations/steps/queryRows.js.html +11 -11
  103. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  104. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  105. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  106. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  107. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  108. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  109. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  110. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  113. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  115. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  116. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggers.js.html +26 -26
  118. package/coverage/lcov-report/automations/utils.js.html +35 -35
  119. package/coverage/lcov-report/constants/index.html +5 -5
  120. package/coverage/lcov-report/constants/index.js.html +40 -28
  121. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  122. package/coverage/lcov-report/constants/screens.js.html +4 -4
  123. package/coverage/lcov-report/db/client.js.html +18 -18
  124. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  125. package/coverage/lcov-report/db/index.html +15 -15
  126. package/coverage/lcov-report/db/index.js.html +3 -3
  127. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +21 -21
  128. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  129. package/coverage/lcov-report/db/linkedRows/index.js.html +36 -36
  130. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +30 -30
  131. package/coverage/lcov-report/db/newid.js.html +4 -4
  132. package/coverage/lcov-report/db/utils.js.html +123 -87
  133. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  134. package/coverage/lcov-report/events/index.html +1 -1
  135. package/coverage/lcov-report/events/index.js.html +8 -8
  136. package/coverage/lcov-report/events/utils.js.html +18 -18
  137. package/coverage/lcov-report/index.html +89 -74
  138. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  139. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  140. package/coverage/lcov-report/middleware/appInfo.js.html +5 -5
  141. package/coverage/lcov-report/middleware/authorized.js.html +29 -29
  142. package/coverage/lcov-report/middleware/builder.js.html +16 -16
  143. package/coverage/lcov-report/middleware/currentapp.js.html +44 -44
  144. package/coverage/lcov-report/middleware/index.html +1 -1
  145. package/coverage/lcov-report/middleware/joi-validator.js.html +14 -14
  146. package/coverage/lcov-report/middleware/resourceId.js.html +29 -29
  147. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  148. package/coverage/lcov-report/middleware/usageQuota.js.html +17 -17
  149. package/coverage/lcov-report/middleware/utils.js.html +4 -4
  150. package/coverage/lcov-report/threads/automation.js.html +1 -1
  151. package/coverage/lcov-report/threads/index.html +19 -19
  152. package/coverage/lcov-report/threads/index.js.html +10 -10
  153. package/coverage/lcov-report/threads/query.js.html +123 -39
  154. package/coverage/lcov-report/threads/utils.js.html +14 -14
  155. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  156. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  157. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  158. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  159. package/coverage/lcov-report/utilities/global.js.html +28 -28
  160. package/coverage/lcov-report/utilities/index.html +18 -18
  161. package/coverage/lcov-report/utilities/index.js.html +24 -24
  162. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -9
  163. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  164. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  165. package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
  166. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  167. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +60 -60
  168. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +13 -13
  169. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  170. package/coverage/lcov-report/utilities/security.js.html +8 -8
  171. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  172. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  173. package/coverage/lcov-report/utilities/usageQuota/index.js.html +12 -12
  174. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +8 -8
  175. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  176. package/coverage/lcov-report/utilities/users.js.html +5 -5
  177. package/coverage/lcov-report/utilities/workerRequests.js.html +200 -53
  178. package/coverage/lcov.info +3323 -3224
  179. package/dist/api/controllers/application.js +1 -0
  180. package/dist/api/controllers/public/applications.js +94 -0
  181. package/dist/api/controllers/public/mapping/applications.js +29 -0
  182. package/dist/api/controllers/public/mapping/index.js +11 -0
  183. package/dist/api/controllers/public/mapping/queries.js +36 -0
  184. package/dist/api/controllers/public/mapping/rows.js +24 -0
  185. package/dist/api/controllers/public/mapping/tables.js +23 -0
  186. package/dist/api/controllers/public/mapping/types.js +2 -0
  187. package/dist/api/controllers/public/mapping/users.js +29 -0
  188. package/dist/api/controllers/public/queries.js +38 -0
  189. package/dist/api/controllers/public/rows.js +97 -0
  190. package/dist/api/controllers/public/tables.js +75 -0
  191. package/dist/api/controllers/public/users.js +95 -0
  192. package/dist/api/controllers/public/utils.js +49 -0
  193. package/dist/api/controllers/row/internal.js +4 -1
  194. package/dist/api/controllers/table/index.js +2 -1
  195. package/dist/api/controllers/webhook.js +3 -5
  196. package/dist/api/index.js +3 -1
  197. package/dist/api/routes/automation.js +3 -31
  198. package/dist/api/routes/datasource.js +3 -50
  199. package/dist/api/routes/index.js +2 -0
  200. package/dist/api/routes/permission.js +4 -14
  201. package/dist/api/routes/public/applications.js +141 -0
  202. package/dist/api/routes/public/index.js +68 -0
  203. package/dist/api/routes/public/middleware/mapper.js +94 -0
  204. package/dist/api/routes/public/queries.js +77 -0
  205. package/dist/api/routes/public/rows.js +229 -0
  206. package/dist/api/routes/public/tables.js +154 -0
  207. package/dist/api/routes/public/users.js +137 -0
  208. package/dist/api/routes/public/utils/Endpoint.js +36 -0
  209. package/dist/api/routes/role.js +3 -19
  210. package/dist/api/routes/row.js +3 -4
  211. package/dist/api/routes/screen.js +2 -23
  212. package/dist/api/routes/table.js +3 -17
  213. package/dist/api/routes/tests/utilities/index.js +23 -0
  214. package/dist/api/routes/utils/validators.js +200 -0
  215. package/dist/api/routes/webhook.js +2 -17
  216. package/dist/automations/steps/filter.js +2 -2
  217. package/dist/automations/steps/queryRows.js +1 -1
  218. package/dist/automations/utils.js +2 -2
  219. package/dist/constants/index.js +3 -0
  220. package/dist/db/utils.js +11 -0
  221. package/dist/definitions/openapi.js +6 -0
  222. package/dist/integrations/googlesheets.js +3 -0
  223. package/dist/integrations/microsoftSqlServer.js +35 -29
  224. package/dist/integrations/mysql.js +30 -26
  225. package/dist/integrations/oracle.js +14 -19
  226. package/dist/integrations/postgres.js +34 -28
  227. package/dist/package.json +8 -7
  228. package/dist/tests/utilities/TestConfiguration.js +25 -8
  229. package/dist/threads/query.js +33 -8
  230. package/dist/tsconfig.tsbuildinfo +1 -1
  231. package/dist/utilities/workerRequests.js +50 -15
  232. package/package.json +9 -8
  233. package/scripts/integrations/oracle/oracle.md +2 -2
  234. package/scripts/integrations/postgres/init.sql +5 -3
  235. package/scripts/likeCypress.ts +9 -6
  236. package/specs/generate.js +83 -0
  237. package/specs/openapi.json +2222 -0
  238. package/specs/openapi.yaml +1530 -0
  239. package/specs/parameters.js +59 -0
  240. package/specs/resources/application.js +101 -0
  241. package/specs/resources/index.js +24 -0
  242. package/specs/resources/misc.js +12 -0
  243. package/specs/resources/query.js +189 -0
  244. package/specs/resources/row.js +125 -0
  245. package/specs/resources/table.js +191 -0
  246. package/specs/resources/user.js +126 -0
  247. package/specs/resources/utils/Resource.js +26 -0
  248. package/specs/resources/utils/index.js +11 -0
  249. package/specs/security.js +7 -0
  250. package/src/api/controllers/application.js +1 -0
  251. package/src/api/controllers/public/applications.ts +74 -0
  252. package/src/api/controllers/public/mapping/applications.ts +32 -0
  253. package/src/api/controllers/public/mapping/index.ts +13 -0
  254. package/src/api/controllers/public/mapping/queries.ts +39 -0
  255. package/src/api/controllers/public/mapping/rows.ts +31 -0
  256. package/src/api/controllers/public/mapping/tables.ts +26 -0
  257. package/src/api/controllers/public/mapping/types.ts +13 -0
  258. package/src/api/controllers/public/mapping/users.ts +32 -0
  259. package/src/api/controllers/public/queries.ts +20 -0
  260. package/src/api/controllers/public/rows.ts +77 -0
  261. package/src/api/controllers/public/tables.ts +56 -0
  262. package/src/api/controllers/public/users.ts +82 -0
  263. package/src/api/controllers/public/utils.ts +38 -0
  264. package/src/api/controllers/row/internal.js +4 -0
  265. package/src/api/controllers/table/index.js +2 -1
  266. package/src/api/controllers/webhook.js +3 -6
  267. package/src/api/index.js +4 -1
  268. package/src/api/routes/automation.js +3 -33
  269. package/src/api/routes/datasource.js +6 -52
  270. package/src/api/routes/index.js +2 -0
  271. package/src/api/routes/permission.js +4 -18
  272. package/src/api/routes/public/applications.ts +156 -0
  273. package/src/api/routes/public/index.ts +82 -0
  274. package/src/api/routes/public/middleware/mapper.ts +81 -0
  275. package/src/api/routes/public/queries.ts +81 -0
  276. package/src/api/routes/public/rows.ts +242 -0
  277. package/src/api/routes/public/tables.ts +169 -0
  278. package/src/api/routes/public/tests/compare.spec.js +184 -0
  279. package/src/api/routes/public/users.ts +144 -0
  280. package/src/api/routes/public/utils/Endpoint.ts +51 -0
  281. package/src/api/routes/role.js +3 -24
  282. package/src/api/routes/row.js +3 -2
  283. package/src/api/routes/screen.js +2 -29
  284. package/src/api/routes/table.js +4 -19
  285. package/src/api/routes/tests/utilities/index.js +24 -0
  286. package/src/api/routes/utils/validators.js +219 -0
  287. package/src/api/routes/webhook.js +2 -18
  288. package/src/automations/steps/filter.js +3 -2
  289. package/src/automations/steps/queryRows.js +1 -1
  290. package/src/automations/utils.js +2 -2
  291. package/src/constants/index.js +4 -0
  292. package/src/db/utils.js +12 -0
  293. package/src/definitions/common.ts +4 -0
  294. package/src/definitions/openapi.ts +943 -0
  295. package/src/integrations/base/datasourcePlus.ts +3 -0
  296. package/src/integrations/googlesheets.ts +5 -2
  297. package/src/integrations/microsoftSqlServer.ts +38 -33
  298. package/src/integrations/mysql.ts +38 -36
  299. package/src/integrations/oracle.ts +27 -35
  300. package/src/integrations/postgres.ts +33 -26
  301. package/src/tests/utilities/TestConfiguration.js +23 -2
  302. package/src/threads/query.js +37 -9
  303. package/src/utilities/workerRequests.js +65 -16
  304. package/builder/assets/index.ab059cf2.js +0 -1352
  305. package/scripts/proxy/generateProxyConfig.js +0 -70
@@ -36,10 +36,31 @@ function request(ctx, request) {
36
36
  delete request.body;
37
37
  }
38
38
  if (ctx && ctx.headers) {
39
- request.headers.cookie = ctx.headers.cookie;
39
+ request.headers = ctx.headers;
40
40
  }
41
41
  return request;
42
42
  }
43
+ function checkResponse(response, errorMsg, { ctx } = {}) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ if (response.status !== 200) {
46
+ let error;
47
+ try {
48
+ error = yield response.json();
49
+ }
50
+ catch (err) {
51
+ error = yield response.text();
52
+ }
53
+ const msg = `Unable to ${errorMsg} - ${error.message ? error.message : error}`;
54
+ if (ctx) {
55
+ ctx.throw(400, msg);
56
+ }
57
+ else {
58
+ throw msg;
59
+ }
60
+ }
61
+ return response.json();
62
+ });
63
+ }
43
64
  exports.request = request;
44
65
  // have to pass in the tenant ID as this could be coming from an automation
45
66
  exports.sendSmtpEmail = (to, from, subject, contents, automation) => __awaiter(void 0, void 0, void 0, function* () {
@@ -55,21 +76,14 @@ exports.sendSmtpEmail = (to, from, subject, contents, automation) => __awaiter(v
55
76
  automation,
56
77
  },
57
78
  }));
58
- if (response.status !== 200) {
59
- const error = yield response.text();
60
- throw `Unable to send email - ${error}`;
61
- }
62
- return response.json();
79
+ return checkResponse(response, "send email");
63
80
  });
64
81
  exports.getGlobalSelf = (ctx, appId = null) => __awaiter(void 0, void 0, void 0, function* () {
65
- const endpoint = `/api/global/users/self`;
82
+ const endpoint = `/api/global/self`;
66
83
  const response = yield fetch(checkSlashesInUrl(env.WORKER_URL + endpoint),
67
84
  // we don't want to use API key when getting self
68
85
  request(ctx, { method: "GET" }));
69
- if (response.status !== 200) {
70
- ctx.throw(400, "Unable to get self globally.");
71
- }
72
- let json = yield response.json();
86
+ let json = yield checkResponse(response, "get self globally", { ctx });
73
87
  if (appId) {
74
88
  json = updateAppRole(json);
75
89
  }
@@ -80,8 +94,29 @@ exports.removeAppFromUserRoles = (ctx, appId) => __awaiter(void 0, void 0, void
80
94
  const response = yield fetch(checkSlashesInUrl(env.WORKER_URL + `/api/global/roles/${prodAppId}`), request(ctx, {
81
95
  method: "DELETE",
82
96
  }));
83
- if (response.status !== 200) {
84
- throw "Unable to remove app role";
85
- }
86
- return response.json();
97
+ return checkResponse(response, "remove app role");
98
+ });
99
+ exports.allGlobalUsers = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
100
+ const response = yield fetch(checkSlashesInUrl(env.WORKER_URL + "/api/global/users"),
101
+ // we don't want to use API key when getting self
102
+ request(ctx, { method: "GET" }));
103
+ return checkResponse(response, "get users", { ctx });
104
+ });
105
+ exports.saveGlobalUser = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
106
+ const response = yield fetch(checkSlashesInUrl(env.WORKER_URL + "/api/global/users"),
107
+ // we don't want to use API key when getting self
108
+ request(ctx, { method: "POST", body: ctx.request.body }));
109
+ return checkResponse(response, "save user", { ctx });
110
+ });
111
+ exports.deleteGlobalUser = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
112
+ const response = yield fetch(checkSlashesInUrl(env.WORKER_URL + `/api/global/users/${ctx.params.userId}`),
113
+ // we don't want to use API key when getting self
114
+ request(ctx, { method: "DELETE" }));
115
+ return checkResponse(response, "delete user", { ctx, body: ctx.request.body });
116
+ });
117
+ exports.readGlobalUser = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
118
+ const response = yield fetch(checkSlashesInUrl(env.WORKER_URL + `/api/global/users/${ctx.params.userId}`),
119
+ // we don't want to use API key when getting self
120
+ request(ctx, { method: "GET" }));
121
+ return checkResponse(response, "get user", { ctx });
87
122
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.0.78",
4
+ "version": "1.0.79-alpha.10",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -21,10 +21,8 @@
21
21
  "dev:stack:down": "node scripts/dev/manage.js down",
22
22
  "dev:stack:nuke": "node scripts/dev/manage.js nuke",
23
23
  "dev:builder": "yarn run dev:stack:up && nodemon",
24
- "generate:proxy:compose": "node scripts/proxy/generateProxyConfig compose",
25
- "generate:proxy:preprod": "node scripts/proxy/generateProxyConfig preprod",
26
- "generate:proxy:prod": "node scripts/proxy/generateProxyConfig prod",
27
24
  "format": "prettier --config ../../.prettierrc.json 'src/**/*.ts' --write",
25
+ "specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts",
28
26
  "lint": "eslint --fix src/",
29
27
  "lint:fix": "yarn run format && yarn run lint",
30
28
  "initialise": "node scripts/initialise.js",
@@ -73,9 +71,9 @@
73
71
  "license": "GPL-3.0",
74
72
  "dependencies": {
75
73
  "@apidevtools/swagger-parser": "^10.0.3",
76
- "@budibase/backend-core": "^1.0.78",
77
- "@budibase/client": "^1.0.78",
78
- "@budibase/string-templates": "^1.0.78",
74
+ "@budibase/backend-core": "^1.0.79-alpha.10",
75
+ "@budibase/client": "^1.0.79-alpha.10",
76
+ "@budibase/string-templates": "^1.0.79-alpha.10",
79
77
  "@bull-board/api": "^3.7.0",
80
78
  "@bull-board/koa": "^3.7.0",
81
79
  "@elastic/elasticsearch": "7.10.0",
@@ -157,12 +155,15 @@
157
155
  "docker-compose": "^0.23.6",
158
156
  "eslint": "^6.8.0",
159
157
  "jest": "^27.0.5",
158
+ "jest-openapi": "^0.14.2",
160
159
  "nodemon": "^2.0.4",
161
160
  "openapi-types": "^9.3.1",
161
+ "openapi-typescript": "^5.2.0",
162
162
  "path-to-regexp": "^6.2.0",
163
163
  "prettier": "^2.3.1",
164
164
  "rimraf": "^3.0.2",
165
165
  "supertest": "^4.0.2",
166
+ "swagger-jsdoc": "^6.1.0",
166
167
  "ts-jest": "^27.0.3",
167
168
  "ts-node": "^10.0.0",
168
169
  "typescript": "^4.3.5",
@@ -171,5 +172,5 @@
171
172
  "optionalDependencies": {
172
173
  "oracledb": "^5.3.0"
173
174
  },
174
- "gitHead": "457fb4fae186f9257b73e096ade8d4ecfbb5e9de"
175
+ "gitHead": "ecc99a3eac5f1a501824ff755dfec6e25fec4aa9"
175
176
  }
@@ -8,9 +8,9 @@
8
8
 
9
9
  To install oracle express edition simply run `docker-compose up`
10
10
 
11
- - A single instance pluggable database (PDB) will be created named `xepdb`
11
+ - A single instance pluggable database (PDB) will be created named `xepdb1`
12
12
  - The default password is configured in the compose file as `oracle`
13
- - The `system`, `sys` and `pdbadmin` users all share this password
13
+ - The `system` and `pdbadmin` users share this password
14
14
 
15
15
  ## Instant Client
16
16
 
@@ -1,11 +1,13 @@
1
1
  SELECT 'CREATE DATABASE main'
2
2
  WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'main')\gexec
3
+ CREATE TYPE person_job AS ENUM ('qa', 'programmer', 'designer');
3
4
  CREATE TABLE Persons (
4
5
  PersonID SERIAL PRIMARY KEY,
5
6
  LastName varchar(255),
6
7
  FirstName varchar(255),
7
8
  Address varchar(255),
8
- City varchar(255) DEFAULT 'Belfast'
9
+ City varchar(255) DEFAULT 'Belfast',
10
+ Type person_job
9
11
  );
10
12
  CREATE TABLE Tasks (
11
13
  TaskID SERIAL PRIMARY KEY,
@@ -35,8 +37,8 @@ CREATE TABLE Products_Tasks (
35
37
  REFERENCES Tasks(TaskID),
36
38
  PRIMARY KEY (ProductID, TaskID)
37
39
  );
38
- INSERT INTO Persons (FirstName, LastName, Address, City) VALUES ('Mike', 'Hughes', '123 Fake Street', 'Belfast');
39
- INSERT INTO Persons (FirstName, LastName, Address, City) Values ('John', 'Smith', '64 Updown Road', 'Dublin');
40
+ INSERT INTO Persons (FirstName, LastName, Address, City, Type) VALUES ('Mike', 'Hughes', '123 Fake Street', 'Belfast', 'qa');
41
+ INSERT INTO Persons (FirstName, LastName, Address, City, Type) VALUES ('John', 'Smith', '64 Updown Road', 'Dublin', 'programmer');
40
42
  INSERT INTO Tasks (ExecutorID, QaID, TaskName, Completed) VALUES (1, 2, 'assembling', TRUE);
41
43
  INSERT INTO Tasks (ExecutorID, QaID, TaskName, Completed) VALUES (2, 1, 'processing', FALSE);
42
44
  INSERT INTO Products (ProductName) VALUES ('Computers');
@@ -2,14 +2,13 @@
2
2
  * This script just makes it easy to re-create *
3
3
  * a cypress like environment for testing the backend *
4
4
  ******************************************************/
5
- const path = require("path")
5
+ import path from "path"
6
6
  const tmpdir = path.join(require("os").tmpdir(), ".budibase")
7
7
 
8
- const MAIN_PORT = "10001"
9
- const WORKER_PORT = "10002"
8
+ const SERVER_PORT = "4100"
9
+ const WORKER_PORT = "4200"
10
10
 
11
11
  // @ts-ignore
12
- process.env.PORT = MAIN_PORT
13
12
  process.env.BUDIBASE_API_KEY = "6BE826CB-6B30-4AEC-8777-2E90464633DE"
14
13
  process.env.NODE_ENV = "cypress"
15
14
  process.env.ENABLE_ANALYTICS = "false"
@@ -27,7 +26,11 @@ process.env.ALLOW_DEV_AUTOMATIONS = "1"
27
26
 
28
27
  // don't make this a variable or top level require
29
28
  // it will cause environment module to be loaded prematurely
30
- const server = require("../src/app")
29
+
30
+ // override the port with the worker port temporarily
31
31
  process.env.PORT = WORKER_PORT
32
32
  const worker = require("../../worker/src/index")
33
- process.env.PORT = MAIN_PORT
33
+
34
+ // override the port with the server port
35
+ process.env.PORT = SERVER_PORT
36
+ const server = require("../src/app")
@@ -0,0 +1,83 @@
1
+ const swaggerJsdoc = require("swagger-jsdoc")
2
+ const { join } = require("path")
3
+ const { writeFileSync } = require("fs")
4
+ const { examples, schemas } = require("./resources")
5
+ const parameters = require("./parameters")
6
+ const security = require("./security")
7
+
8
+ const VARIABLES = {}
9
+
10
+ const options = {
11
+ definition: {
12
+ openapi: "3.0.0",
13
+ info: {
14
+ title: "Budibase API",
15
+ description: "The public API for Budibase apps and its services.",
16
+ version: "1.0.0",
17
+ },
18
+ servers: [
19
+ {
20
+ url: "http://budibase.app/api/public/v1",
21
+ description: "Budibase Cloud API",
22
+ },
23
+ {
24
+ url: "{protocol}://{hostname}:10000/api/public/v1",
25
+ description: "Budibase self hosted API",
26
+ },
27
+ ],
28
+ components: {
29
+ parameters: {
30
+ ...parameters,
31
+ },
32
+ examples: {
33
+ ...examples,
34
+ },
35
+ securitySchemes: {
36
+ ...security,
37
+ },
38
+ schemas: {
39
+ ...schemas,
40
+ },
41
+ },
42
+ security: [
43
+ {
44
+ ApiKeyAuth: [],
45
+ },
46
+ ],
47
+ },
48
+ format: ".json",
49
+ apis: [join(__dirname, "..", "src", "api", "routes", "public", "*.ts")],
50
+ }
51
+
52
+ function writeFile(output, filename) {
53
+ try {
54
+ const path = join(__dirname, filename)
55
+ let spec = output
56
+ if (filename.endsWith("json")) {
57
+ spec = JSON.stringify(output, null, 2)
58
+ }
59
+ // input the static variables
60
+ for (let [key, replacement] of Object.entries(VARIABLES)) {
61
+ spec = spec.replace(new RegExp(`{${key}}`, "g"), replacement)
62
+ }
63
+ writeFileSync(path, spec)
64
+ console.log(`Wrote spec to ${path}`)
65
+ return path
66
+ } catch (err) {
67
+ console.error(err)
68
+ }
69
+ }
70
+
71
+ function run() {
72
+ const outputJSON = swaggerJsdoc(options)
73
+ options.format = ".yaml"
74
+ const outputYAML = swaggerJsdoc(options)
75
+ writeFile(outputJSON, "openapi.json")
76
+ return writeFile(outputYAML, "openapi.yaml")
77
+ }
78
+
79
+ if (require.main === module) {
80
+ run()
81
+ }
82
+
83
+ module.exports = run