@budibase/server 1.2.37 → 1.2.39-alpha.1

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 (286) hide show
  1. package/__mocks__/mongodb.ts +4 -0
  2. package/__mocks__/node-fetch.ts +8 -1
  3. package/builder/assets/index.a1c0a62f.js +977 -0
  4. package/builder/assets/{index.08dd0c5e.css → index.f1c7e247.css} +1 -1
  5. package/builder/index.html +2 -2
  6. package/coverage/clover.xml +385 -380
  7. package/coverage/coverage-final.json +21 -21
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/automation.js.html +3 -3
  11. package/coverage/lcov-report/api/controllers/backup.js.html +3 -3
  12. package/coverage/lcov-report/api/controllers/cloud.js.html +4 -4
  13. package/coverage/lcov-report/api/controllers/component.js.html +3 -3
  14. package/coverage/lcov-report/api/controllers/datasource.js.html +3 -3
  15. package/coverage/lcov-report/api/controllers/dev.js.html +4 -4
  16. package/coverage/lcov-report/api/controllers/index.html +1 -1
  17. package/coverage/lcov-report/api/controllers/integration.js.html +3 -3
  18. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/index.html +25 -25
  28. package/coverage/lcov-report/api/controllers/row/internal.js.html +3 -3
  29. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +209 -191
  30. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/utils.js.html +27 -18
  32. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/external.js.html +2 -2
  36. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/user.js.html +19 -19
  40. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.js.html +3 -3
  43. package/coverage/lcov-report/api/controllers/view/utils.js.html +5 -5
  44. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  46. package/coverage/lcov-report/api/index.html +1 -1
  47. package/coverage/lcov-report/api/index.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/index.html +1 -1
  59. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  76. package/coverage/lcov-report/automations/actions.js.html +1 -1
  77. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  78. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  79. package/coverage/lcov-report/automations/index.html +1 -1
  80. package/coverage/lcov-report/automations/index.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/index.html +1 -1
  88. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  107. package/coverage/lcov-report/constants/index.html +1 -1
  108. package/coverage/lcov-report/constants/index.js.html +30 -30
  109. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  110. package/coverage/lcov-report/constants/screens.js.html +1 -1
  111. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  112. package/coverage/lcov-report/db/index.html +1 -1
  113. package/coverage/lcov-report/db/index.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +3 -3
  118. package/coverage/lcov-report/db/newid.js.html +3 -3
  119. package/coverage/lcov-report/db/utils.js.html +99 -99
  120. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  121. package/coverage/lcov-report/events/index.html +1 -1
  122. package/coverage/lcov-report/events/index.js.html +1 -1
  123. package/coverage/lcov-report/events/utils.js.html +1 -1
  124. package/coverage/lcov-report/index.html +19 -19
  125. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  126. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  127. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  128. package/coverage/lcov-report/middleware/builder.js.html +3 -3
  129. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  130. package/coverage/lcov-report/middleware/index.html +1 -1
  131. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  132. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  133. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  134. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  135. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  136. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  137. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  138. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  139. package/coverage/lcov-report/utilities/global.js.html +16 -16
  140. package/coverage/lcov-report/utilities/index.html +1 -1
  141. package/coverage/lcov-report/utilities/index.js.html +23 -23
  142. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  143. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  144. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.js.html +3 -3
  146. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  149. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  150. package/coverage/lcov-report/utilities/security.js.html +9 -9
  151. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  152. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  155. package/coverage/lcov-report/utilities/users.js.html +7 -7
  156. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  157. package/coverage/lcov.info +598 -593
  158. package/dist/api/controllers/analytics.js +1 -1
  159. package/dist/api/controllers/application.js +8 -8
  160. package/dist/api/controllers/automation.js +2 -2
  161. package/dist/api/controllers/backup.js +2 -2
  162. package/dist/api/controllers/cloud.js +3 -3
  163. package/dist/api/controllers/component.js +2 -2
  164. package/dist/api/controllers/datasource.js +2 -2
  165. package/dist/api/controllers/deploy/index.js +6 -6
  166. package/dist/api/controllers/dev.js +3 -3
  167. package/dist/api/controllers/integration.js +2 -2
  168. package/dist/api/controllers/public/utils.js +1 -1
  169. package/dist/api/controllers/row/ExternalRequest.js +3 -3
  170. package/dist/api/controllers/row/internal.js +2 -2
  171. package/dist/api/controllers/row/internalSearch.js +5 -0
  172. package/dist/api/controllers/row/utils.js +3 -1
  173. package/dist/api/controllers/static/index.js +2 -2
  174. package/dist/api/controllers/table/external.js +1 -1
  175. package/dist/api/controllers/view/index.js +2 -2
  176. package/dist/api/controllers/view/utils.js +3 -3
  177. package/dist/automations/logging/index.js +3 -0
  178. package/dist/db/linkedRows/linkUtils.js +2 -2
  179. package/dist/db/utils.js +37 -37
  180. package/dist/db/views/staticViews.js +4 -4
  181. package/dist/definitions/automations.js +6 -6
  182. package/dist/definitions/datasource.js +6 -70
  183. package/dist/integrations/airtable.js +13 -13
  184. package/dist/integrations/arangodb.js +8 -8
  185. package/dist/integrations/base/query.js +27 -0
  186. package/dist/integrations/base/sql.js +33 -32
  187. package/dist/integrations/base/sqlTable.js +4 -4
  188. package/dist/integrations/base/utils.js +13 -27
  189. package/dist/integrations/couchdb.js +8 -8
  190. package/dist/integrations/dynamodb.js +21 -21
  191. package/dist/integrations/elasticsearch.js +12 -12
  192. package/dist/integrations/firebase.js +12 -12
  193. package/dist/integrations/googlesheets.js +14 -14
  194. package/dist/integrations/index.js +34 -34
  195. package/dist/integrations/microsoftSqlServer.js +19 -16
  196. package/dist/integrations/mongodb.js +44 -17
  197. package/dist/integrations/mysql.js +15 -15
  198. package/dist/integrations/oracle.js +13 -13
  199. package/dist/integrations/postgres.js +20 -17
  200. package/dist/integrations/redis.js +10 -10
  201. package/dist/integrations/rest.js +15 -14
  202. package/dist/integrations/s3.js +2 -2
  203. package/dist/integrations/snowflake.js +5 -5
  204. package/dist/integrations/utils.js +14 -14
  205. package/dist/middleware/builder.js +2 -2
  206. package/dist/migrations/functions/appUrls.js +2 -2
  207. package/dist/migrations/functions/backfill/app/queries.js +3 -1
  208. package/dist/migrations/functions/backfill/app.js +1 -1
  209. package/dist/migrations/functions/backfill/global/users.js +1 -1
  210. package/dist/package.json +7 -7
  211. package/dist/tests/utilities/TestConfiguration.js +2 -2
  212. package/dist/threads/automation.js +2 -2
  213. package/dist/tsconfig.build.tsbuildinfo +1 -1
  214. package/dist/utilities/routing/index.js +2 -2
  215. package/dist/utilities/security.js +8 -8
  216. package/package.json +8 -8
  217. package/src/api/controllers/analytics.ts +2 -2
  218. package/src/api/controllers/application.ts +9 -9
  219. package/src/api/controllers/automation.js +2 -2
  220. package/src/api/controllers/backup.js +2 -2
  221. package/src/api/controllers/cloud.js +3 -3
  222. package/src/api/controllers/component.js +2 -2
  223. package/src/api/controllers/datasource.js +2 -2
  224. package/src/api/controllers/deploy/index.ts +7 -7
  225. package/src/api/controllers/dev.js +3 -3
  226. package/src/api/controllers/integration.js +2 -2
  227. package/src/api/controllers/public/utils.ts +2 -2
  228. package/src/api/controllers/query/import/sources/openapi2.ts +1 -1
  229. package/src/api/controllers/query/import/sources/openapi3.ts +1 -1
  230. package/src/api/controllers/row/ExternalRequest.ts +5 -7
  231. package/src/api/controllers/row/internal.js +2 -2
  232. package/src/api/controllers/row/internalSearch.js +6 -0
  233. package/src/api/controllers/row/utils.js +4 -1
  234. package/src/api/controllers/static/index.ts +2 -2
  235. package/src/api/controllers/table/external.js +1 -1
  236. package/src/api/controllers/view/index.js +2 -2
  237. package/src/api/controllers/view/utils.js +4 -4
  238. package/src/api/routes/tests/internalSearch.spec.js +157 -0
  239. package/src/automations/logging/index.ts +3 -0
  240. package/src/db/linkedRows/linkUtils.js +2 -2
  241. package/src/db/utils.js +38 -38
  242. package/src/db/views/staticViews.js +4 -9
  243. package/src/definitions/automations.ts +2 -2
  244. package/src/definitions/common.ts +14 -65
  245. package/src/definitions/datasource.ts +5 -250
  246. package/src/integrations/airtable.ts +16 -16
  247. package/src/integrations/arangodb.ts +11 -11
  248. package/src/integrations/base/query.ts +16 -0
  249. package/src/integrations/base/sql.ts +21 -20
  250. package/src/integrations/base/sqlTable.ts +1 -6
  251. package/src/integrations/base/utils.ts +9 -19
  252. package/src/integrations/couchdb.ts +11 -11
  253. package/src/integrations/dynamodb.ts +24 -24
  254. package/src/integrations/elasticsearch.ts +15 -15
  255. package/src/integrations/firebase.ts +15 -15
  256. package/src/integrations/googlesheets.ts +19 -18
  257. package/src/integrations/index.ts +34 -34
  258. package/src/integrations/microsoftSqlServer.ts +22 -20
  259. package/src/integrations/mongodb.ts +47 -20
  260. package/src/integrations/mysql.ts +20 -19
  261. package/src/integrations/oracle.ts +16 -16
  262. package/src/integrations/postgres.ts +22 -21
  263. package/src/integrations/queries/sql.ts +1 -2
  264. package/src/integrations/redis.ts +10 -14
  265. package/src/integrations/rest.ts +22 -20
  266. package/src/integrations/s3.ts +2 -3
  267. package/src/integrations/snowflake.ts +5 -5
  268. package/src/integrations/tests/mongo.spec.js +218 -0
  269. package/src/integrations/tests/sql.spec.js +8 -8
  270. package/src/integrations/utils.ts +8 -9
  271. package/src/middleware/builder.js +2 -2
  272. package/src/migrations/functions/appUrls.ts +2 -2
  273. package/src/migrations/functions/backfill/app/queries.ts +3 -2
  274. package/src/migrations/functions/backfill/app.ts +1 -1
  275. package/src/migrations/functions/backfill/global/users.ts +1 -1
  276. package/src/migrations/functions/tests/appUrls.spec.js +3 -3
  277. package/src/migrations/tests/index.spec.ts +2 -2
  278. package/src/tests/utilities/TestConfiguration.js +2 -2
  279. package/src/threads/automation.ts +3 -3
  280. package/src/utilities/routing/index.js +2 -2
  281. package/src/utilities/security.js +8 -8
  282. package/builder/assets/index.3ce7fa08.js +0 -975
  283. package/dist/integrations/base/IntegrationBase.js +0 -2
  284. package/dist/integrations/base/datasourcePlus.js +0 -2
  285. package/src/integrations/base/IntegrationBase.ts +0 -6
  286. package/src/integrations/base/datasourcePlus.ts +0 -13
@@ -9,12 +9,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  const { createRoutingView } = require("../../db/views/staticViews");
12
- const { ViewNames, getQueryIndex, UNICODE_MAX } = require("../../db/utils");
12
+ const { ViewName, getQueryIndex, UNICODE_MAX } = require("../../db/utils");
13
13
  const { getAppDB } = require("@budibase/backend-core/context");
14
14
  exports.getRoutingInfo = () => __awaiter(void 0, void 0, void 0, function* () {
15
15
  const db = getAppDB();
16
16
  try {
17
- const allRouting = yield db.query(getQueryIndex(ViewNames.ROUTING), {
17
+ const allRouting = yield db.query(getQueryIndex(ViewName.ROUTING), {
18
18
  startKey: "",
19
19
  endKey: UNICODE_MAX,
20
20
  });
@@ -1,24 +1,24 @@
1
1
  "use strict";
2
2
  const { PermissionLevels, PermissionTypes, getBuiltinPermissionByID, isPermissionLevelHigherThanRead, } = require("@budibase/backend-core/permissions");
3
3
  const { lowerBuiltinRoleID, getBuiltinRoles, } = require("@budibase/backend-core/roles");
4
- const { DocumentTypes } = require("../db/utils");
4
+ const { DocumentType } = require("../db/utils");
5
5
  const CURRENTLY_SUPPORTED_LEVELS = [
6
6
  PermissionLevels.WRITE,
7
7
  PermissionLevels.READ,
8
8
  PermissionLevels.EXECUTE,
9
9
  ];
10
10
  exports.getPermissionType = resourceId => {
11
- const docType = Object.values(DocumentTypes).filter(docType => resourceId.startsWith(docType))[0];
11
+ const docType = Object.values(DocumentType).filter(docType => resourceId.startsWith(docType))[0];
12
12
  switch (docType) {
13
- case DocumentTypes.TABLE:
14
- case DocumentTypes.ROW:
13
+ case DocumentType.TABLE:
14
+ case DocumentType.ROW:
15
15
  return PermissionTypes.TABLE;
16
- case DocumentTypes.AUTOMATION:
16
+ case DocumentType.AUTOMATION:
17
17
  return PermissionTypes.AUTOMATION;
18
- case DocumentTypes.WEBHOOK:
18
+ case DocumentType.WEBHOOK:
19
19
  return PermissionTypes.WEBHOOK;
20
- case DocumentTypes.QUERY:
21
- case DocumentTypes.DATASOURCE:
20
+ case DocumentType.QUERY:
21
+ case DocumentType.DATASOURCE:
22
22
  return PermissionTypes.QUERY;
23
23
  default:
24
24
  // views don't have an ID, will end up here
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.2.37",
4
+ "version": "1.2.39-alpha.1",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -77,11 +77,11 @@
77
77
  "license": "GPL-3.0",
78
78
  "dependencies": {
79
79
  "@apidevtools/swagger-parser": "10.0.3",
80
- "@budibase/backend-core": "^1.2.37",
81
- "@budibase/client": "^1.2.37",
82
- "@budibase/pro": "1.2.36",
83
- "@budibase/string-templates": "^1.2.37",
84
- "@budibase/types": "^1.2.37",
80
+ "@budibase/backend-core": "1.2.39-alpha.1",
81
+ "@budibase/client": "1.2.39-alpha.1",
82
+ "@budibase/pro": "1.2.39-alpha.0",
83
+ "@budibase/string-templates": "1.2.39-alpha.1",
84
+ "@budibase/types": "1.2.39-alpha.1",
85
85
  "@bull-board/api": "3.7.0",
86
86
  "@bull-board/koa": "3.9.4",
87
87
  "@elastic/elasticsearch": "7.10.0",
@@ -106,7 +106,7 @@
106
106
  "google-auth-library": "7.12.0",
107
107
  "google-spreadsheet": "3.2.0",
108
108
  "jimp": "0.16.1",
109
- "joi": "17.2.1",
109
+ "joi": "17.6.0",
110
110
  "js-yaml": "4.1.0",
111
111
  "jsonschema": "1.4.0",
112
112
  "knex": "0.95.15",
@@ -195,5 +195,5 @@
195
195
  "optionalDependencies": {
196
196
  "oracledb": "5.3.0"
197
197
  },
198
- "gitHead": "3ba01b0a74974a3bb48adbad91a4221a112e0d6c"
198
+ "gitHead": "c113a7b63298fd8f19fd44932657ab4b80caf6a0"
199
199
  }
@@ -1,6 +1,6 @@
1
1
  import { events } from "@budibase/backend-core"
2
2
  import { AnalyticsPingRequest, PingSource } from "@budibase/types"
3
- import { DocumentTypes, isDevAppID } from "../../db/utils"
3
+ import { DocumentType, isDevAppID } from "../../db/utils"
4
4
  import { context } from "@budibase/backend-core"
5
5
 
6
6
  export const isEnabled = async (ctx: any) => {
@@ -15,7 +15,7 @@ export const ping = async (ctx: any) => {
15
15
  switch (body.source) {
16
16
  case PingSource.APP: {
17
17
  const db = context.getAppDB({ skip_setup: true })
18
- const appInfo = await db.get(DocumentTypes.APP_METADATA)
18
+ const appInfo = await db.get(DocumentType.APP_METADATA)
19
19
  let appId = context.getAppId()
20
20
 
21
21
  if (isDevAppID(appId)) {
@@ -15,7 +15,7 @@ import {
15
15
  getLayoutParams,
16
16
  getScreenParams,
17
17
  generateDevAppID,
18
- DocumentTypes,
18
+ DocumentType,
19
19
  AppStatus,
20
20
  } from "../../db/utils"
21
21
  const {
@@ -206,7 +206,7 @@ export const fetchAppDefinition = async (ctx: any) => {
206
206
 
207
207
  export const fetchAppPackage = async (ctx: any) => {
208
208
  const db = context.getAppDB()
209
- const application = await db.get(DocumentTypes.APP_METADATA)
209
+ const application = await db.get(DocumentType.APP_METADATA)
210
210
  const layouts = await getLayouts()
211
211
  let screens = await getScreens()
212
212
 
@@ -248,13 +248,13 @@ const performAppCreate = async (ctx: any) => {
248
248
  let _rev
249
249
  try {
250
250
  // if template there will be an existing doc
251
- const existing = await db.get(DocumentTypes.APP_METADATA)
251
+ const existing = await db.get(DocumentType.APP_METADATA)
252
252
  _rev = existing._rev
253
253
  } catch (err) {
254
254
  // nothing to do
255
255
  }
256
256
  const newApplication: App = {
257
- _id: DocumentTypes.APP_METADATA,
257
+ _id: DocumentType.APP_METADATA,
258
258
  _rev,
259
259
  appId: instance._id,
260
260
  type: "app",
@@ -383,7 +383,7 @@ export const update = async (ctx: any) => {
383
383
  export const updateClient = async (ctx: any) => {
384
384
  // Get current app version
385
385
  const db = context.getAppDB()
386
- const application = await db.get(DocumentTypes.APP_METADATA)
386
+ const application = await db.get(DocumentType.APP_METADATA)
387
387
  const currentVersion = application.version
388
388
 
389
389
  // Update client library and manifest
@@ -407,7 +407,7 @@ export const updateClient = async (ctx: any) => {
407
407
  export const revertClient = async (ctx: any) => {
408
408
  // Check app can be reverted
409
409
  const db = context.getAppDB()
410
- const application = await db.get(DocumentTypes.APP_METADATA)
410
+ const application = await db.get(DocumentType.APP_METADATA)
411
411
  if (!application.revertableVersion) {
412
412
  ctx.throw(400, "There is no version to revert to")
413
413
  }
@@ -439,7 +439,7 @@ const destroyApp = async (ctx: any) => {
439
439
  }
440
440
 
441
441
  const db = isUnpublish ? context.getProdAppDB() : context.getAppDB()
442
- const app = await db.get(DocumentTypes.APP_METADATA)
442
+ const app = await db.get(DocumentType.APP_METADATA)
443
443
  const result = await db.destroy()
444
444
 
445
445
  if (isUnpublish) {
@@ -526,7 +526,7 @@ export const sync = async (ctx: any, next: any) => {
526
526
  try {
527
527
  await replication.replicate({
528
528
  filter: function (doc: any) {
529
- return doc._id !== DocumentTypes.APP_METADATA
529
+ return doc._id !== DocumentType.APP_METADATA
530
530
  },
531
531
  })
532
532
  } catch (err) {
@@ -550,7 +550,7 @@ export const sync = async (ctx: any, next: any) => {
550
550
  const updateAppPackage = async (appPackage: any, appId: any) => {
551
551
  return context.doInAppContext(appId, async () => {
552
552
  const db = context.getAppDB()
553
- const application = await db.get(DocumentTypes.APP_METADATA)
553
+ const application = await db.get(DocumentType.APP_METADATA)
554
554
 
555
555
  const newAppPackage = { ...application, ...appPackage }
556
556
  if (appPackage._rev !== application._rev) {
@@ -3,7 +3,7 @@ const triggers = require("../../automations/triggers")
3
3
  const {
4
4
  getAutomationParams,
5
5
  generateAutomationID,
6
- DocumentTypes,
6
+ DocumentType,
7
7
  } = require("../../db/utils")
8
8
  const {
9
9
  checkForWebhooks,
@@ -201,7 +201,7 @@ exports.clearLogError = async function (ctx) {
201
201
  const { automationId, appId } = ctx.request.body
202
202
  await doInAppContext(appId, async () => {
203
203
  const db = getProdAppDB()
204
- const metadata = await db.get(DocumentTypes.APP_METADATA)
204
+ const metadata = await db.get(DocumentType.APP_METADATA)
205
205
  if (!automationId) {
206
206
  delete metadata.automationErrors
207
207
  } else if (
@@ -1,6 +1,6 @@
1
1
  const { streamBackup } = require("../../utilities/fileSystem")
2
2
  const { events, context } = require("@budibase/backend-core")
3
- const { DocumentTypes } = require("../../db/utils")
3
+ const { DocumentType } = require("../../db/utils")
4
4
 
5
5
  exports.exportAppDump = async function (ctx) {
6
6
  let { appId, excludeRows } = ctx.query
@@ -12,7 +12,7 @@ exports.exportAppDump = async function (ctx) {
12
12
 
13
13
  await context.doInAppContext(appId, async () => {
14
14
  const appDb = context.getAppDB()
15
- const app = await appDb.get(DocumentTypes.APP_METADATA)
15
+ const app = await appDb.get(DocumentType.APP_METADATA)
16
16
  await events.app.exported(app)
17
17
  })
18
18
  }
@@ -11,7 +11,7 @@ const {
11
11
  getGlobalDB,
12
12
  } = require("@budibase/backend-core/tenancy")
13
13
  const { create } = require("./application")
14
- const { getDocParams, DocumentTypes, isDevAppID } = require("../../db/utils")
14
+ const { getDocParams, DocumentType, isDevAppID } = require("../../db/utils")
15
15
 
16
16
  async function createApp(appName, appImport) {
17
17
  const ctx = {
@@ -31,7 +31,7 @@ exports.exportApps = async ctx => {
31
31
  }
32
32
  const apps = await getAllApps({ all: true })
33
33
  const globalDBString = await exportDB(getGlobalDBName(), {
34
- filter: doc => !doc._id.startsWith(DocumentTypes.USER),
34
+ filter: doc => !doc._id.startsWith(DocumentType.USER),
35
35
  })
36
36
  let allDBs = {
37
37
  global: globalDBString,
@@ -97,7 +97,7 @@ exports.importApps = async ctx => {
97
97
  }
98
98
 
99
99
  // if there are any users make sure to remove them
100
- let users = await getAllDocType(globalDb, DocumentTypes.USER)
100
+ let users = await getAllDocType(globalDb, DocumentType.USER)
101
101
  let userDeletionPromises = []
102
102
  for (let user of users) {
103
103
  userDeletionPromises.push(globalDb.remove(user._id, user._rev))
@@ -1,10 +1,10 @@
1
- const { DocumentTypes } = require("../../db/utils")
1
+ const { DocumentType } = require("../../db/utils")
2
2
  const { getComponentLibraryManifest } = require("../../utilities/fileSystem")
3
3
  const { getAppDB } = require("@budibase/backend-core/context")
4
4
 
5
5
  exports.fetchAppComponentDefinitions = async function (ctx) {
6
6
  const db = getAppDB()
7
- const app = await db.get(DocumentTypes.APP_METADATA)
7
+ const app = await db.get(DocumentType.APP_METADATA)
8
8
 
9
9
  let componentManifests = await Promise.all(
10
10
  app.componentLibraries.map(async library => {
@@ -2,7 +2,7 @@ const {
2
2
  generateDatasourceID,
3
3
  getDatasourceParams,
4
4
  getQueryParams,
5
- DocumentTypes,
5
+ DocumentType,
6
6
  BudibaseInternalDB,
7
7
  getTableParams,
8
8
  } = require("../../db/utils")
@@ -132,7 +132,7 @@ exports.save = async function (ctx) {
132
132
 
133
133
  const datasource = {
134
134
  _id: generateDatasourceID({ plus }),
135
- type: plus ? DocumentTypes.DATASOURCE_PLUS : DocumentTypes.DATASOURCE,
135
+ type: plus ? DocumentType.DATASOURCE_PLUS : DocumentType.DATASOURCE,
136
136
  ...ctx.request.body.datasource,
137
137
  }
138
138
 
@@ -4,7 +4,7 @@ import {
4
4
  getProdAppID,
5
5
  getDevelopmentAppID,
6
6
  } from "@budibase/backend-core/db"
7
- import { DocumentTypes, getAutomationParams } from "../../../db/utils"
7
+ import { DocumentType, getAutomationParams } from "../../../db/utils"
8
8
  import {
9
9
  disableAllCrons,
10
10
  enableCronTrigger,
@@ -52,9 +52,9 @@ async function storeDeploymentHistory(deployment: any) {
52
52
  let deploymentDoc
53
53
  try {
54
54
  // theres only one deployment doc per app database
55
- deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
55
+ deploymentDoc = await db.get(DocumentType.DEPLOYMENTS)
56
56
  } catch (err) {
57
- deploymentDoc = { _id: DocumentTypes.DEPLOYMENTS, history: {} }
57
+ deploymentDoc = { _id: DocumentType.DEPLOYMENTS, history: {} }
58
58
  }
59
59
 
60
60
  const deploymentId = deploymentJSON._id
@@ -115,7 +115,7 @@ async function deployApp(deployment: any) {
115
115
  await replication.replicate()
116
116
  console.log("replication complete.. replacing app meta doc")
117
117
  const db = getProdAppDB()
118
- const appDoc = await db.get(DocumentTypes.APP_METADATA)
118
+ const appDoc = await db.get(DocumentType.APP_METADATA)
119
119
 
120
120
  deployment.appUrl = appDoc.url
121
121
 
@@ -146,7 +146,7 @@ async function deployApp(deployment: any) {
146
146
  export async function fetchDeployments(ctx: any) {
147
147
  try {
148
148
  const db = getAppDB()
149
- const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
149
+ const deploymentDoc = await db.get(DocumentType.DEPLOYMENTS)
150
150
  const { updated, deployments } = await checkAllDeployments(deploymentDoc)
151
151
  if (updated) {
152
152
  await db.put(deployments)
@@ -160,7 +160,7 @@ export async function fetchDeployments(ctx: any) {
160
160
  export async function deploymentProgress(ctx: any) {
161
161
  try {
162
162
  const db = getAppDB()
163
- const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
163
+ const deploymentDoc = await db.get(DocumentType.DEPLOYMENTS)
164
164
  ctx.body = deploymentDoc[ctx.params.deploymentId]
165
165
  } catch (err) {
166
166
  ctx.throw(
@@ -173,7 +173,7 @@ export async function deploymentProgress(ctx: any) {
173
173
  const isFirstDeploy = async () => {
174
174
  try {
175
175
  const db = getProdAppDB()
176
- await db.get(DocumentTypes.APP_METADATA)
176
+ await db.get(DocumentType.APP_METADATA)
177
177
  } catch (e: any) {
178
178
  if (e.status === 404) {
179
179
  return true
@@ -4,7 +4,7 @@ const { checkSlashesInUrl } = require("../../utilities")
4
4
  const { request } = require("../../utilities/workerRequests")
5
5
  const { clearLock } = require("../../utilities/redis")
6
6
  const { Replication, getProdAppID } = require("@budibase/backend-core/db")
7
- const { DocumentTypes } = require("../../db/utils")
7
+ const { DocumentType } = require("../../db/utils")
8
8
  const { app: appCache } = require("@budibase/backend-core/cache")
9
9
  const { getProdAppDB, getAppDB } = require("@budibase/backend-core/context")
10
10
  const { events } = require("@budibase/backend-core")
@@ -87,7 +87,7 @@ exports.revert = async ctx => {
87
87
  if (info.error) {
88
88
  throw info.error
89
89
  }
90
- const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
90
+ const deploymentDoc = await db.get(DocumentType.DEPLOYMENTS)
91
91
  if (
92
92
  !deploymentDoc.history ||
93
93
  Object.keys(deploymentDoc.history).length === 0
@@ -110,7 +110,7 @@ exports.revert = async ctx => {
110
110
 
111
111
  // update appID in reverted app to be dev version again
112
112
  const db = getAppDB()
113
- const appDoc = await db.get(DocumentTypes.APP_METADATA)
113
+ const appDoc = await db.get(DocumentType.APP_METADATA)
114
114
  appDoc.appId = appId
115
115
  appDoc.instance._id = appId
116
116
  await db.put(appDoc)
@@ -1,6 +1,6 @@
1
1
  const { cloneDeep } = require("lodash")
2
2
  const { definitions } = require("../../integrations")
3
- const { SourceNames } = require("../../definitions/datasource")
3
+ const { SourceName } = require("@budibase/types")
4
4
  const googlesheets = require("../../integrations/googlesheets")
5
5
  const { featureFlags } = require("@budibase/backend-core")
6
6
 
@@ -10,7 +10,7 @@ exports.fetch = async function (ctx) {
10
10
 
11
11
  // for google sheets integration google verification
12
12
  if (featureFlags.isEnabled(featureFlags.FeatureFlag.GOOGLE_SHEETS)) {
13
- defs[SourceNames.GOOGLE_SHEETS] = googlesheets.schema
13
+ defs[SourceName.GOOGLE_SHEETS] = googlesheets.schema
14
14
  }
15
15
 
16
16
  ctx.body = defs
@@ -1,6 +1,6 @@
1
1
  const { getAppDB } = require("@budibase/backend-core/context")
2
2
  import { isExternalTable } from "../../../integrations/utils"
3
- import { APP_PREFIX, DocumentTypes } from "../../../db/utils"
3
+ import { APP_PREFIX, DocumentType } from "../../../db/utils"
4
4
 
5
5
  export async function addRev(
6
6
  body: { _id?: string; _rev?: string },
@@ -11,7 +11,7 @@ export async function addRev(
11
11
  }
12
12
  let id = body._id
13
13
  if (body._id.startsWith(APP_PREFIX)) {
14
- id = DocumentTypes.APP_METADATA
14
+ id = DocumentType.APP_METADATA
15
15
  }
16
16
  const db = getAppDB()
17
17
  const dbDoc = await db.get(id)
@@ -1,5 +1,5 @@
1
1
  import { ImportInfo } from "./base"
2
- import { Query, QueryParameter } from "../../../../../definitions/datasource"
2
+ import { Query, QueryParameter } from "@budibase/types"
3
3
  import { OpenAPIV2 } from "openapi-types"
4
4
  import { OpenAPISource } from "./base/openapi"
5
5
  import { URL } from "url"
@@ -1,5 +1,5 @@
1
1
  import { ImportInfo } from "./base"
2
- import { Query, QueryParameter } from "../../../../../definitions/datasource"
2
+ import { Query, QueryParameter } from "@budibase/types"
3
3
  import { OpenAPIV3 } from "openapi-types"
4
4
  import { OpenAPISource } from "./base/openapi"
5
5
  import { URL } from "url"
@@ -1,18 +1,16 @@
1
1
  import {
2
- FilterTypes,
3
- IncludeRelationships,
2
+ FilterType,
3
+ IncludeRelationship,
4
4
  Operation,
5
5
  PaginationJson,
6
6
  RelationshipsJson,
7
7
  SearchFilters,
8
8
  SortJson,
9
- } from "../../../definitions/datasource"
10
- import {
11
9
  Datasource,
12
10
  FieldSchema,
13
11
  Row,
14
12
  Table,
15
- } from "../../../definitions/common"
13
+ } from "@budibase/types"
16
14
  import {
17
15
  breakRowIdField,
18
16
  generateRowIdField,
@@ -128,7 +126,7 @@ module External {
128
126
  if (
129
127
  typeof filter !== "object" ||
130
128
  Object.keys(filter).length === 0 ||
131
- key === FilterTypes.ONE_OF
129
+ key === FilterType.ONE_OF
132
130
  ) {
133
131
  continue
134
132
  }
@@ -634,7 +632,7 @@ module External {
634
632
  */
635
633
  buildFields(
636
634
  table: Table,
637
- includeRelations: IncludeRelationships = IncludeRelationships.INCLUDE
635
+ includeRelations: IncludeRelationship = IncludeRelationship.INCLUDE
638
636
  ) {
639
637
  function extractRealFields(table: Table, existing: string[] = []) {
640
638
  return Object.entries(table.schema)
@@ -3,7 +3,7 @@ const {
3
3
  generateRowID,
4
4
  getRowParams,
5
5
  getTableIDFromRowID,
6
- DocumentTypes,
6
+ DocumentType,
7
7
  InternalTables,
8
8
  } = require("../../../db/utils")
9
9
  const { dangerousGetDB } = require("@budibase/backend-core/db")
@@ -183,7 +183,7 @@ exports.fetchView = async ctx => {
183
183
  const viewName = ctx.params.viewName
184
184
 
185
185
  // if this is a table view being looked for just transfer to that
186
- if (viewName.startsWith(DocumentTypes.TABLE)) {
186
+ if (viewName.startsWith(DocumentType.TABLE)) {
187
187
  ctx.params.tableId = viewName
188
188
  return exports.fetch(ctx)
189
189
  }
@@ -1,4 +1,5 @@
1
1
  const { SearchIndexes } = require("../../../db/utils")
2
+ const { removeKeyNumbering } = require("./utils")
2
3
  const fetch = require("node-fetch")
3
4
  const { getCouchInfo } = require("@budibase/backend-core/db")
4
5
  const { getAppId } = require("@budibase/backend-core/context")
@@ -197,6 +198,8 @@ class QueryBuilder {
197
198
 
198
199
  function build(structure, queryFn) {
199
200
  for (let [key, value] of Object.entries(structure)) {
201
+ // check for new format - remove numbering if needed
202
+ key = removeKeyNumbering(key)
200
203
  key = builder.preprocess(key.replace(/ /g, "_"), {
201
204
  escape: true,
202
205
  })
@@ -310,6 +313,9 @@ class QueryBuilder {
310
313
  }
311
314
  }
312
315
 
316
+ // exported for unit testing
317
+ exports.QueryBuilder = QueryBuilder
318
+
313
319
  /**
314
320
  * Executes a lucene search query.
315
321
  * @param url The query URL
@@ -3,8 +3,9 @@ const { cloneDeep } = require("lodash/fp")
3
3
  const { InternalTables } = require("../../../db/utils")
4
4
  const userController = require("../user")
5
5
  const { FieldTypes } = require("../../../constants")
6
- const { makeExternalQuery } = require("../../../integrations/base/utils")
7
6
  const { getAppDB } = require("@budibase/backend-core/context")
7
+ const { makeExternalQuery } = require("../../../integrations/base/query")
8
+ const { removeKeyNumbering } = require("../../../integrations/base/utils")
8
9
 
9
10
  validateJs.extend(validateJs.validators.datetime, {
10
11
  parse: function (value) {
@@ -16,6 +17,8 @@ validateJs.extend(validateJs.validators.datetime, {
16
17
  },
17
18
  })
18
19
 
20
+ exports.removeKeyNumbering = removeKeyNumbering
21
+
19
22
  exports.getDatasourceAndQuery = async json => {
20
23
  const datasourceId = json.endpoint.datasourceId
21
24
  const db = getAppDB()
@@ -14,7 +14,7 @@ const env = require("../../../environment")
14
14
  const { clientLibraryPath } = require("../../../utilities")
15
15
  const { upload } = require("../../../utilities/fileSystem")
16
16
  const { attachmentsRelativeURL } = require("../../../utilities")
17
- const { DocumentTypes } = require("../../../db/utils")
17
+ const { DocumentType } = require("../../../db/utils")
18
18
  const { getAppDB, getAppId } = require("@budibase/backend-core/context")
19
19
  const { setCookie, clearCookie } = require("@budibase/backend-core/utils")
20
20
  const AWS = require("aws-sdk")
@@ -99,7 +99,7 @@ export const uploadFile = async function (ctx: any) {
99
99
 
100
100
  export const serveApp = async function (ctx: any) {
101
101
  const db = getAppDB({ skip_setup: true })
102
- const appInfo = await db.get(DocumentTypes.APP_METADATA)
102
+ const appInfo = await db.get(DocumentType.APP_METADATA)
103
103
  let appId = getAppId()
104
104
 
105
105
  if (!env.isJest()) {
@@ -14,7 +14,7 @@ const {
14
14
  FieldTypes,
15
15
  RelationshipTypes,
16
16
  } = require("../../../constants")
17
- const { makeExternalQuery } = require("../../../integrations/base/utils")
17
+ const { makeExternalQuery } = require("../../../integrations/base/query")
18
18
  const { cloneDeep } = require("lodash/fp")
19
19
  const csvParser = require("../../../utilities/csvParser")
20
20
  const { handleRequest } = require("../row/external")
@@ -7,7 +7,7 @@ const { getTable } = require("../table/utils")
7
7
  const { FieldTypes } = require("../../../constants")
8
8
  const { getAppDB } = require("@budibase/backend-core/context")
9
9
  const { events } = require("@budibase/backend-core")
10
- const { DocumentTypes } = require("../../../db/utils")
10
+ const { DocumentType } = require("../../../db/utils")
11
11
  const { cloneDeep, isEqual } = require("lodash")
12
12
 
13
13
  exports.fetch = async ctx => {
@@ -181,7 +181,7 @@ exports.exportView = async ctx => {
181
181
  ctx.attachment(filename)
182
182
  ctx.body = apiFileReturn(exporter(headers, rows))
183
183
 
184
- if (viewName.startsWith(DocumentTypes.TABLE)) {
184
+ if (viewName.startsWith(DocumentType.TABLE)) {
185
185
  await events.table.exported(table, format)
186
186
  } else {
187
187
  await events.view.exported(table, format)
@@ -1,8 +1,8 @@
1
1
  const {
2
- ViewNames,
2
+ ViewName,
3
3
  generateMemoryViewID,
4
4
  getMemoryViewParams,
5
- DocumentTypes,
5
+ DocumentType,
6
6
  SEPARATOR,
7
7
  } = require("../../../db/utils")
8
8
  const env = require("../../../environment")
@@ -16,7 +16,7 @@ exports.getView = async viewName => {
16
16
  return designDoc.views[viewName]
17
17
  } else {
18
18
  // This is a table view, don't read the view from the DB
19
- if (viewName.startsWith(DocumentTypes.TABLE + SEPARATOR)) {
19
+ if (viewName.startsWith(DocumentType.TABLE + SEPARATOR)) {
20
20
  return null
21
21
  }
22
22
 
@@ -32,7 +32,7 @@ exports.getViews = async () => {
32
32
  const designDoc = await db.get("_design/database")
33
33
  for (let name of Object.keys(designDoc.views)) {
34
34
  // Only return custom views, not built ins
35
- if (Object.values(ViewNames).indexOf(name) !== -1) {
35
+ if (Object.values(ViewName).indexOf(name) !== -1) {
36
36
  continue
37
37
  }
38
38
  response.push({