@budibase/server 1.0.98-alpha.3 → 1.0.99

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 (227) hide show
  1. package/builder/assets/index.44b5c19a.js +1291 -0
  2. package/builder/assets/{index.64ecb83d.css → index.7c8961b4.css} +1 -1
  3. package/builder/assets/{vendor.8e34a169.js → vendor.a7c6ad0a.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +282 -277
  6. package/coverage/coverage-final.json +13 -13
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +5 -5
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +7 -7
  23. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/index.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +2 -2
  26. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/index.html +10 -10
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +7 -19
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/row/utils.js.html +6 -6
  35. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  40. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  49. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  50. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  51. package/coverage/lcov-report/api/index.html +1 -1
  52. package/coverage/lcov-report/api/index.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/analytics.js.html +3 -3
  54. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/index.html +1 -1
  65. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  79. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  82. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  85. package/coverage/lcov-report/automations/actions.js.html +1 -1
  86. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  87. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  88. package/coverage/lcov-report/automations/index.html +1 -1
  89. package/coverage/lcov-report/automations/index.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/index.html +1 -1
  99. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  106. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  107. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  114. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  115. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  116. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  117. package/coverage/lcov-report/automations/utils.js.html +1 -1
  118. package/coverage/lcov-report/constants/index.html +1 -1
  119. package/coverage/lcov-report/constants/index.js.html +1 -1
  120. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  121. package/coverage/lcov-report/constants/screens.js.html +1 -1
  122. package/coverage/lcov-report/db/client.js.html +1 -1
  123. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  124. package/coverage/lcov-report/db/index.html +1 -1
  125. package/coverage/lcov-report/db/index.js.html +1 -1
  126. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  127. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  128. package/coverage/lcov-report/db/linkedRows/index.js.html +10 -10
  129. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +7 -7
  130. package/coverage/lcov-report/db/newid.js.html +2 -2
  131. package/coverage/lcov-report/db/utils.js.html +2 -2
  132. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  133. package/coverage/lcov-report/events/index.html +1 -1
  134. package/coverage/lcov-report/events/index.js.html +1 -1
  135. package/coverage/lcov-report/events/utils.js.html +1 -1
  136. package/coverage/lcov-report/index.html +21 -21
  137. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  138. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  139. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  140. package/coverage/lcov-report/middleware/authorized.js.html +75 -15
  141. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  142. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  143. package/coverage/lcov-report/middleware/index.html +15 -15
  144. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  145. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  146. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  147. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  148. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  149. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  150. package/coverage/lcov-report/threads/automation.js.html +1 -1
  151. package/coverage/lcov-report/threads/index.html +1 -1
  152. package/coverage/lcov-report/threads/index.js.html +1 -1
  153. package/coverage/lcov-report/threads/query.js.html +1 -1
  154. package/coverage/lcov-report/threads/utils.js.html +1 -1
  155. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  156. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  157. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  158. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  159. package/coverage/lcov-report/utilities/global.js.html +1 -1
  160. package/coverage/lcov-report/utilities/index.html +1 -1
  161. package/coverage/lcov-report/utilities/index.js.html +1 -1
  162. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  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 +1 -1
  166. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  167. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +12 -12
  168. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +8 -8
  169. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  170. package/coverage/lcov-report/utilities/security.js.html +1 -1
  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 +1 -1
  174. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  175. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  176. package/coverage/lcov-report/utilities/users.js.html +1 -1
  177. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  178. package/coverage/lcov.info +459 -440
  179. package/dist/api/controllers/permission.js +3 -4
  180. package/dist/api/controllers/query/import/index.js +1 -2
  181. package/dist/api/controllers/query/import/sources/base/index.js +1 -12
  182. package/dist/api/controllers/query/import/sources/curl.js +2 -2
  183. package/dist/api/controllers/row/internal.js +1 -2
  184. package/dist/api/routes/analytics.js +2 -2
  185. package/dist/api/routes/table.js +1 -1
  186. package/dist/definitions/datasource.js +0 -1
  187. package/dist/integrations/base/sql.js +9 -16
  188. package/dist/integrations/dynamodb.js +1 -3
  189. package/dist/integrations/index.js +0 -3
  190. package/dist/integrations/rest.js +1 -2
  191. package/dist/middleware/authorized.js +24 -7
  192. package/dist/package.json +4 -7
  193. package/dist/tsconfig.tsbuildinfo +1 -1
  194. package/package.json +5 -8
  195. package/scripts/dev/manage.js +1 -2
  196. package/specs/openapi.json +23 -3
  197. package/specs/openapi.yaml +20 -4
  198. package/specs/resources/query.js +27 -5
  199. package/src/api/controllers/permission.js +3 -3
  200. package/src/api/controllers/query/import/index.ts +1 -2
  201. package/src/api/controllers/query/import/sources/base/index.ts +2 -12
  202. package/src/api/controllers/query/import/sources/curl.ts +2 -2
  203. package/src/api/controllers/query/import/tests/index.spec.js +0 -43
  204. package/src/api/controllers/row/internal.js +1 -5
  205. package/src/api/routes/analytics.js +2 -2
  206. package/src/api/routes/table.js +1 -1
  207. package/src/api/routes/tests/misc.spec.js +2 -2
  208. package/src/definitions/datasource.ts +0 -1
  209. package/src/definitions/openapi.ts +483 -473
  210. package/src/integrations/base/sql.ts +9 -14
  211. package/src/integrations/dynamodb.ts +1 -3
  212. package/src/integrations/index.ts +0 -3
  213. package/src/integrations/rest.ts +1 -2
  214. package/src/integrations/tests/sql.spec.js +0 -51
  215. package/src/middleware/authorized.js +26 -6
  216. package/builder/assets/index.47d835a9.js +0 -1292
  217. package/dist/api/controllers/query/import/sources/openapi3.js +0 -174
  218. package/dist/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json +0 -253
  219. package/dist/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json +0 -1225
  220. package/dist/integrations/firebase.js +0 -192
  221. package/src/api/controllers/query/import/sources/openapi3.ts +0 -205
  222. package/src/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json +0 -253
  223. package/src/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.yaml +0 -153
  224. package/src/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json +0 -1225
  225. package/src/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.yaml +0 -804
  226. package/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js +0 -240
  227. package/src/integrations/firebase.ts +0 -205
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  const { getBuiltinPermissions } = require("@budibase/backend-core/permissions");
12
- const { isBuiltin, getDBRoleID, getExternalRoleID, getBuiltinRoles, } = require("@budibase/backend-core/roles");
12
+ const { isBuiltin, getDBRoleID, getExternalRoleID, getBuiltinRoles, checkForRoleResourceArray, } = require("@budibase/backend-core/roles");
13
13
  const { getRoleParams } = require("../../db/utils");
14
14
  const { CURRENTLY_SUPPORTED_LEVELS, getBasePermissions, } = require("../../utilities/security");
15
15
  const { removeFromArray } = require("../../utilities");
@@ -130,11 +130,10 @@ exports.getResourcePerms = function (ctx) {
130
130
  for (let level of SUPPORTED_LEVELS) {
131
131
  // update the various roleIds in the resource permissions
132
132
  for (let role of roles) {
133
- const rolePerms = role.permissions;
133
+ const rolePerms = checkForRoleResourceArray(role.permissions, resourceId);
134
134
  if (rolePerms &&
135
135
  rolePerms[resourceId] &&
136
- (rolePerms[resourceId] === level ||
137
- rolePerms[resourceId].indexOf(level) !== -1)) {
136
+ rolePerms[resourceId].indexOf(level) !== -1) {
138
137
  permissions[level] = getExternalRoleID(role._id);
139
138
  }
140
139
  }
@@ -13,7 +13,6 @@ exports.RestImporter = void 0;
13
13
  const validation_1 = require("../validation");
14
14
  const utils_1 = require("../../../../db/utils");
15
15
  const openapi2_1 = require("./sources/openapi2");
16
- const openapi3_1 = require("./sources/openapi3");
17
16
  const curl_1 = require("./sources/curl");
18
17
  // @ts-ignore
19
18
  const context_1 = require("@budibase/backend-core/context");
@@ -72,7 +71,7 @@ class RestImporter {
72
71
  };
73
72
  });
74
73
  this.data = data;
75
- this.sources = [new openapi2_1.OpenAPI2(), new openapi3_1.OpenAPI3(), new curl_1.Curl()];
74
+ this.sources = [new openapi2_1.OpenAPI2(), new curl_1.Curl()];
76
75
  }
77
76
  }
78
77
  exports.RestImporter = RestImporter;
@@ -17,18 +17,7 @@ class ImportSource {
17
17
  const transformer = "return data";
18
18
  const schema = {};
19
19
  path = this.processPath(path);
20
- if (url) {
21
- if (typeof url === "string") {
22
- path = `${url}/${path}`;
23
- }
24
- else {
25
- let href = url.href;
26
- if (href.endsWith("/")) {
27
- href = href.slice(0, -1);
28
- }
29
- path = `${href}/${path}`;
30
- }
31
- }
20
+ path = `${url.origin}/${path}`;
32
21
  queryString = this.processQuery(queryString);
33
22
  const requestBody = JSON.stringify(body, null, 2);
34
23
  const query = {
@@ -79,7 +79,7 @@ class Curl extends base_1.ImportSource {
79
79
  this.getQueries = (datasourceId) => __awaiter(this, void 0, void 0, function* () {
80
80
  const url = this.getUrl();
81
81
  const name = url.pathname;
82
- const path = url.origin + url.pathname;
82
+ const path = url.pathname;
83
83
  const method = this.curl.method;
84
84
  const queryString = url.search;
85
85
  const headers = this.curl.headers;
@@ -88,7 +88,7 @@ class Curl extends base_1.ImportSource {
88
88
  if (cookieHeader) {
89
89
  headers["Cookie"] = cookieHeader;
90
90
  }
91
- const query = this.constructQuery(datasourceId, name, method, path, undefined, queryString, headers, [], requestBody);
91
+ const query = this.constructQuery(datasourceId, name, method, path, url, queryString, headers, [], requestBody);
92
92
  return [query];
93
93
  });
94
94
  }
@@ -91,8 +91,7 @@ exports.patch = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
91
91
  const isUserTable = tableId === InternalTables.USER_METADATA;
92
92
  let oldRow;
93
93
  try {
94
- let dbTable = yield db.get(tableId);
95
- oldRow = yield outputProcessing(dbTable, yield findRow(ctx, tableId, inputs._id));
94
+ oldRow = yield db.get(inputs._id);
96
95
  }
97
96
  catch (err) {
98
97
  if (isUserTable) {
@@ -3,6 +3,6 @@ const Router = require("@koa/router");
3
3
  const controller = require("../controllers/analytics");
4
4
  const router = Router();
5
5
  router
6
- .get("/api/bbtel", controller.isEnabled)
7
- .post("/api/bbtel/ping", controller.endUserPing);
6
+ .get("/api/analytics", controller.isEnabled)
7
+ .post("/api/analytics/ping", controller.endUserPing);
8
8
  module.exports = router;
@@ -32,7 +32,7 @@ router
32
32
  *
33
33
  * @apiSuccess {object[]} body The response body will be the table that was found.
34
34
  */
35
- .get("/api/tables/:tableId", paramResource("tableId"), authorized(PermissionTypes.TABLE, PermissionLevels.READ), tableController.find)
35
+ .get("/api/tables/:tableId", paramResource("tableId"), authorized(PermissionTypes.TABLE, PermissionLevels.READ, { schema: true }), tableController.find)
36
36
  /**
37
37
  * @api {post} /api/tables Save a table
38
38
  * @apiName Save a table
@@ -50,7 +50,6 @@ var SourceNames;
50
50
  SourceNames["REST"] = "REST";
51
51
  SourceNames["ORACLE"] = "ORACLE";
52
52
  SourceNames["GOOGLE_SHEETS"] = "GOOGLE_SHEETS";
53
- SourceNames["FIREBASE"] = "FIREBASE";
54
53
  })(SourceNames = exports.SourceNames || (exports.SourceNames = {}));
55
54
  var IncludeRelationships;
56
55
  (function (IncludeRelationships) {
@@ -34,8 +34,11 @@ function parse(input) {
34
34
  if (typeof input !== "string") {
35
35
  return input;
36
36
  }
37
- if (input === MAX_ISO_DATE || input === MIN_ISO_DATE) {
38
- return null;
37
+ if (input === MAX_ISO_DATE) {
38
+ return new Date(8640000000000000);
39
+ }
40
+ if (input === MIN_ISO_DATE) {
41
+ return new Date(-8640000000000000);
39
42
  }
40
43
  if (utils_1.isIsoDateString(input)) {
41
44
  return new Date(input);
@@ -124,21 +127,11 @@ class InternalBuilder {
124
127
  }
125
128
  if (filters.range) {
126
129
  iterate(filters.range, (key, value) => {
127
- if (value.low && value.high) {
128
- // Use a between operator if we have 2 valid range values
129
- const fnc = allOr ? "orWhereBetween" : "whereBetween";
130
- query = query[fnc](key, [value.low, value.high]);
131
- }
132
- else if (value.low) {
133
- // Use just a single greater than operator if we only have a low
134
- const fnc = allOr ? "orWhere" : "where";
135
- query = query[fnc](key, ">", value.low);
136
- }
137
- else if (value.high) {
138
- // Use just a single less than operator if we only have a high
139
- const fnc = allOr ? "orWhere" : "where";
140
- query = query[fnc](key, "<", value.high);
130
+ if (!value.high || !value.low) {
131
+ return;
141
132
  }
133
+ const fnc = allOr ? "orWhereBetween" : "whereBetween";
134
+ query = query[fnc](key, [value.low, value.high]);
142
135
  });
143
136
  }
144
137
  if (filters.equal) {
@@ -124,9 +124,7 @@ var DynamoModule;
124
124
  class DynamoDBIntegration {
125
125
  constructor(config) {
126
126
  this.config = config;
127
- if (!this.config.endpoint) {
128
- this.connect();
129
- }
127
+ this.connect();
130
128
  let options = {
131
129
  correctClockSkew: true,
132
130
  endpoint: config.endpoint ? config.endpoint : undefined,
@@ -11,7 +11,6 @@ const mysql = require("./mysql");
11
11
  const arangodb = require("./arangodb");
12
12
  const rest = require("./rest");
13
13
  const googlesheets = require("./googlesheets");
14
- const firebase = require("./firebase");
15
14
  const { SourceNames } = require("../definitions/datasource");
16
15
  const environment = require("../environment");
17
16
  const DEFINITIONS = {
@@ -26,7 +25,6 @@ const DEFINITIONS = {
26
25
  [SourceNames.MYSQL]: mysql.schema,
27
26
  [SourceNames.ARANGODB]: arangodb.schema,
28
27
  [SourceNames.REST]: rest.schema,
29
- [SourceNames.FIREBASE]: firebase.schema,
30
28
  };
31
29
  const INTEGRATIONS = {
32
30
  [SourceNames.POSTGRES]: postgres.integration,
@@ -40,7 +38,6 @@ const INTEGRATIONS = {
40
38
  [SourceNames.MYSQL]: mysql.integration,
41
39
  [SourceNames.ARANGODB]: arangodb.integration,
42
40
  [SourceNames.REST]: rest.integration,
43
- [SourceNames.FIREBASE]: firebase.integration,
44
41
  };
45
42
  // optionally add oracle integration if the oracle binary can be installed
46
43
  if (!(process.arch === "arm64" && process.platform === "darwin")) {
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const datasource_1 = require("../definitions/datasource");
13
- const lodash_1 = require("lodash");
14
13
  const BodyTypes = {
15
14
  NONE: "none",
16
15
  FORM_DATA: "form",
@@ -149,7 +148,7 @@ var RestModule;
149
148
  // Check if a pagination cursor exists in the response
150
149
  let nextCursor = null;
151
150
  if (pagination === null || pagination === void 0 ? void 0 : pagination.responseParam) {
152
- nextCursor = lodash_1.get(data, pagination.responseParam);
151
+ nextCursor = data === null || data === void 0 ? void 0 : data[pagination.responseParam];
153
152
  }
154
153
  return {
155
154
  data,
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  const { getUserRoleHierarchy, getRequiredResourceRole, BUILTIN_ROLE_IDS, } = require("@budibase/backend-core/roles");
12
- const { PermissionTypes, doesHaveBasePermission, } = require("@budibase/backend-core/permissions");
12
+ const { PermissionTypes, PermissionLevels, doesHaveBasePermission, } = require("@budibase/backend-core/permissions");
13
13
  const builderMiddleware = require("./builder");
14
14
  const { isWebhookEndpoint } = require("./utils");
15
15
  const { buildCsrfMiddleware } = require("@budibase/backend-core/auth");
@@ -57,7 +57,7 @@ const checkAuthorizedResource = (ctx, resourceRoles, permType, permLevel) => __a
57
57
  }
58
58
  });
59
59
  module.exports =
60
- (permType, permLevel = null) => (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
60
+ (permType, permLevel = null, opts = { schema: false }) => (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
61
61
  // webhooks don't need authentication, each webhook unique
62
62
  // also internal requests (between services) don't need authorized
63
63
  if (isWebhookEndpoint(ctx) || ctx.internal) {
@@ -70,22 +70,39 @@ module.exports =
70
70
  // to find API endpoints which are builder focused
71
71
  yield builderMiddleware(ctx, permType);
72
72
  // get the resource roles
73
- let resourceRoles = [];
73
+ let resourceRoles = [], otherLevelRoles;
74
+ const otherLevel = permLevel === PermissionLevels.READ
75
+ ? PermissionLevels.WRITE
76
+ : PermissionLevels.READ;
74
77
  const appId = getAppId();
75
78
  if (appId && hasResource(ctx)) {
76
79
  resourceRoles = yield getRequiredResourceRole(permLevel, ctx);
80
+ if (opts && opts.schema) {
81
+ otherLevelRoles = yield getRequiredResourceRole(otherLevel, ctx);
82
+ }
77
83
  }
78
84
  // if the resource is public, proceed
79
- const isPublicResource = resourceRoles.includes(BUILTIN_ROLE_IDS.PUBLIC);
80
- if (isPublicResource) {
85
+ if (resourceRoles.includes(BUILTIN_ROLE_IDS.PUBLIC) ||
86
+ (otherLevelRoles && otherLevelRoles.includes(BUILTIN_ROLE_IDS.PUBLIC))) {
81
87
  return next();
82
88
  }
83
89
  // check authenticated
84
90
  if (!ctx.isAuthenticated) {
85
91
  return ctx.throw(403, "Session not authenticated");
86
92
  }
87
- // check authorized
88
- yield checkAuthorized(ctx, resourceRoles, permType, permLevel);
93
+ try {
94
+ // check authorized
95
+ yield checkAuthorized(ctx, resourceRoles, permType, permLevel);
96
+ }
97
+ catch (err) {
98
+ // this is a schema, check if
99
+ if (opts && opts.schema && permLevel) {
100
+ yield checkAuthorized(ctx, otherLevelRoles, permType, otherLevel);
101
+ }
102
+ else {
103
+ throw err;
104
+ }
105
+ }
89
106
  // csrf protection
90
107
  return csrf(ctx, next);
91
108
  });
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.0.98-alpha.2",
4
+ "version": "1.0.98",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -68,13 +68,12 @@
68
68
  "license": "GPL-3.0",
69
69
  "dependencies": {
70
70
  "@apidevtools/swagger-parser": "^10.0.3",
71
- "@budibase/backend-core": "^1.0.98-alpha.2",
72
- "@budibase/client": "^1.0.98-alpha.2",
73
- "@budibase/string-templates": "^1.0.98-alpha.2",
71
+ "@budibase/backend-core": "^1.0.98",
72
+ "@budibase/client": "^1.0.98",
73
+ "@budibase/string-templates": "^1.0.98",
74
74
  "@bull-board/api": "^3.7.0",
75
75
  "@bull-board/koa": "^3.7.0",
76
76
  "@elastic/elasticsearch": "7.10.0",
77
- "@google-cloud/firestore": "^5.0.2",
78
77
  "@koa/router": "8.0.0",
79
78
  "@sendgrid/mail": "7.1.1",
80
79
  "@sentry/node": "^6.0.0",
@@ -146,7 +145,6 @@
146
145
  "@types/jest": "^26.0.23",
147
146
  "@types/koa": "^2.13.3",
148
147
  "@types/koa-router": "^7.4.2",
149
- "@types/lodash": "4.14.180",
150
148
  "@types/node": "^15.12.4",
151
149
  "@types/oracledb": "^5.2.1",
152
150
  "@types/redis": "^4.0.11",
@@ -155,7 +153,6 @@
155
153
  "copyfiles": "^2.4.1",
156
154
  "docker-compose": "^0.23.6",
157
155
  "eslint": "^6.8.0",
158
- "is-wsl": "^2.2.0",
159
156
  "jest": "^27.0.5",
160
157
  "jest-openapi": "^0.14.2",
161
158
  "nodemon": "^2.0.4",