@budibase/server 1.2.58-alpha.4 → 1.2.58

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 (211) hide show
  1. package/__mocks__/mongodb.ts +0 -4
  2. package/__mocks__/node-fetch.ts +1 -8
  3. package/builder/assets/index.08dd0c5e.css +6 -0
  4. package/builder/assets/index.5cf58e77.js +975 -0
  5. package/builder/assets/{vendor.67dbd8fa.js → vendor.6bcafa60.js} +1 -1
  6. package/builder/index.html +3 -3
  7. package/coverage/clover.xml +524 -549
  8. package/coverage/coverage-final.json +20 -20
  9. package/coverage/lcov-report/api/controllers/apikeys.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 +1 -1
  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 +1 -1
  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 +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.html +25 -25
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +191 -317
  31. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +18 -27
  33. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +2 -2
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/user.js.html +19 -19
  41. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  47. package/coverage/lcov-report/api/index.html +1 -1
  48. package/coverage/lcov-report/api/index.js.html +5 -5
  49. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  74. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  77. package/coverage/lcov-report/automations/actions.js.html +1 -1
  78. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  79. package/coverage/lcov-report/automations/bullboard.js.html +6 -9
  80. package/coverage/lcov-report/automations/index.html +11 -11
  81. package/coverage/lcov-report/automations/index.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/index.html +1 -1
  89. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  108. package/coverage/lcov-report/constants/index.html +1 -1
  109. package/coverage/lcov-report/constants/index.js.html +30 -30
  110. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  111. package/coverage/lcov-report/constants/screens.js.html +1 -1
  112. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  113. package/coverage/lcov-report/db/index.html +1 -1
  114. package/coverage/lcov-report/db/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  118. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  119. package/coverage/lcov-report/db/newid.js.html +4 -4
  120. package/coverage/lcov-report/db/utils.js.html +73 -73
  121. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  122. package/coverage/lcov-report/events/index.html +1 -1
  123. package/coverage/lcov-report/events/index.js.html +1 -1
  124. package/coverage/lcov-report/events/utils.js.html +1 -1
  125. package/coverage/lcov-report/index.html +33 -33
  126. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  127. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  128. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  129. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  130. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  131. package/coverage/lcov-report/middleware/index.html +10 -10
  132. package/coverage/lcov-report/middleware/joi-validator.js.html +9 -18
  133. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  134. package/coverage/lcov-report/middleware/resourceId.js.html +12 -12
  135. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  136. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  137. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  138. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  139. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  140. package/coverage/lcov-report/utilities/global.js.html +31 -31
  141. package/coverage/lcov-report/utilities/index.html +1 -1
  142. package/coverage/lcov-report/utilities/index.js.html +24 -24
  143. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  144. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  146. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  150. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  151. package/coverage/lcov-report/utilities/security.js.html +2 -2
  152. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +20 -20
  155. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  156. package/coverage/lcov-report/utilities/users.js.html +7 -7
  157. package/coverage/lcov-report/utilities/workerRequests.js.html +13 -13
  158. package/coverage/lcov.info +844 -888
  159. package/dist/api/controllers/application.js +14 -80
  160. package/dist/api/controllers/row/internalSearch.js +4 -39
  161. package/dist/api/controllers/row/utils.js +1 -3
  162. package/dist/api/controllers/static/index.js +2 -26
  163. package/dist/api/controllers/table/external.js +1 -1
  164. package/dist/api/routes/static.js +0 -3
  165. package/dist/app.js +3 -4
  166. package/dist/automations/bullboard.js +0 -1
  167. package/dist/automations/logging/index.js +0 -3
  168. package/dist/integrations/base/sql.js +30 -62
  169. package/dist/integrations/base/utils.js +27 -13
  170. package/dist/integrations/microsoftSqlServer.js +2 -5
  171. package/dist/integrations/mongodb.js +8 -35
  172. package/dist/integrations/mysql.js +2 -2
  173. package/dist/integrations/postgres.js +2 -5
  174. package/dist/middleware/joi-validator.js +4 -7
  175. package/dist/package.json +7 -7
  176. package/dist/threads/index.js +0 -1
  177. package/dist/tsconfig.build.tsbuildinfo +1 -1
  178. package/dist/utilities/fileSystem/index.js +1 -2
  179. package/dist/utilities/redis.js +0 -1
  180. package/package.json +8 -8
  181. package/src/api/controllers/application.ts +15 -96
  182. package/src/api/controllers/row/internalSearch.js +3 -45
  183. package/src/api/controllers/row/utils.js +1 -4
  184. package/src/api/controllers/static/index.ts +1 -21
  185. package/src/api/controllers/table/external.js +1 -1
  186. package/src/api/routes/static.ts +0 -12
  187. package/src/api/routes/tests/application.spec.js +0 -26
  188. package/src/api/routes/tests/static.spec.js +7 -19
  189. package/src/app.ts +3 -5
  190. package/src/automations/bullboard.js +0 -1
  191. package/src/automations/logging/index.ts +0 -3
  192. package/src/integrations/base/sql.ts +30 -67
  193. package/src/integrations/base/utils.ts +18 -9
  194. package/src/integrations/microsoftSqlServer.ts +2 -3
  195. package/src/integrations/mongodb.ts +8 -35
  196. package/src/integrations/mysql.ts +1 -1
  197. package/src/integrations/postgres.ts +1 -2
  198. package/src/integrations/tests/mongo.spec.js +0 -218
  199. package/src/integrations/tests/sql.spec.js +11 -101
  200. package/src/middleware/joi-validator.js +4 -7
  201. package/src/threads/index.ts +0 -1
  202. package/src/utilities/fileSystem/index.js +0 -2
  203. package/src/utilities/redis.js +0 -1
  204. package/builder/assets/index.02b3fe06.js +0 -875
  205. package/builder/assets/index.fdb1647e.css +0 -6
  206. package/dist/api/controllers/static/templates/preview.hbs +0 -103
  207. package/dist/integrations/base/query.js +0 -27
  208. package/src/api/controllers/static/templates/preview.hbs +0 -103
  209. package/src/api/routes/tests/data/old-app.txt +0 -3
  210. package/src/api/routes/tests/internalSearch.spec.js +0 -176
  211. package/src/integrations/base/query.ts +0 -16
@@ -1,103 +0,0 @@
1
- <html lang="en">
2
- <head>
3
- <title>Budibase Builder Preview</title>
4
- <link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
5
- <link rel="preconnect" href="https://fonts.gstatic.com" />
6
- <link
7
- href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap"
8
- rel="stylesheet"
9
- />
10
- <link
11
- href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css"
12
- rel="stylesheet"
13
- />
14
- <style>
15
- html, body {
16
- padding: 0;
17
- margin: 0;
18
- }
19
- html {
20
- height: 100%;
21
- width: 100%;
22
- overflow: hidden;
23
- display: flex;
24
- flex-direction: column;
25
- justify-content: flex-start;
26
- align-items: stretch;
27
- }
28
- body {
29
- flex: 1 1 auto;
30
- overflow: hidden;
31
- }
32
-
33
- *,
34
- *:before,
35
- *:after {
36
- box-sizing: border-box;
37
- }
38
- </style>
39
- <script src='{{ clientLibPath }}'></script>
40
- <script>
41
- function receiveMessage(event) {
42
- if (!event.data) {
43
- return
44
- }
45
-
46
- // Parse received message
47
- // If parsing fails, just ignore and wait for the next message
48
- let parsed
49
- try {
50
- parsed = JSON.parse(event.data)
51
- } catch (error) {
52
- console.error("Client received invalid JSON")
53
- // Ignore
54
- }
55
- if (!parsed || !parsed.isBudibaseEvent) {
56
- return
57
- }
58
-
59
- // Extract data from message
60
- const {
61
- selectedComponentId,
62
- layout,
63
- screen,
64
- appId,
65
- theme,
66
- customTheme,
67
- previewDevice,
68
- navigation,
69
- hiddenComponentIds
70
- } = parsed
71
-
72
- // Set some flags so the app knows we're in the builder
73
- window["##BUDIBASE_IN_BUILDER##"] = true
74
- window["##BUDIBASE_APP_ID##"] = appId
75
- window["##BUDIBASE_PREVIEW_LAYOUT##"] = layout
76
- window["##BUDIBASE_PREVIEW_SCREEN##"] = screen
77
- window["##BUDIBASE_SELECTED_COMPONENT_ID##"] = selectedComponentId
78
- window["##BUDIBASE_PREVIEW_ID##"] = Math.random()
79
- window["##BUDIBASE_PREVIEW_THEME##"] = theme
80
- window["##BUDIBASE_PREVIEW_CUSTOM_THEME##"] = customTheme
81
- window["##BUDIBASE_PREVIEW_DEVICE##"] = previewDevice
82
- window["##BUDIBASE_PREVIEW_NAVIGATION##"] = navigation
83
- window["##BUDIBASE_HIDDEN_COMPONENT_IDS##"] = hiddenComponentIds
84
-
85
- // Initialise app
86
- try {
87
- if (window.loadBudibase) {
88
- window.loadBudibase()
89
- document.documentElement.classList.add("loaded")
90
- } else {
91
- throw "The client library couldn't be loaded"
92
- }
93
- } catch (error) {
94
- window.parent.postMessage({ type: "error", error })
95
- }
96
- }
97
-
98
- window.addEventListener("message", receiveMessage)
99
- window.parent.postMessage({ type: "ready" })
100
- </script>
101
- </head>
102
- <body></body>
103
- </html>
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.makeExternalQuery = void 0;
13
- const { integrations } = require("../index");
14
- function makeExternalQuery(datasource, json) {
15
- return __awaiter(this, void 0, void 0, function* () {
16
- const Integration = integrations[datasource.source];
17
- // query is the opinionated function
18
- if (Integration.prototype.query) {
19
- const integration = new Integration(datasource.config);
20
- return integration.query(json);
21
- }
22
- else {
23
- throw "Datasource does not support query.";
24
- }
25
- });
26
- }
27
- exports.makeExternalQuery = makeExternalQuery;
@@ -1,103 +0,0 @@
1
- <html lang="en">
2
- <head>
3
- <title>Budibase Builder Preview</title>
4
- <link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
5
- <link rel="preconnect" href="https://fonts.gstatic.com" />
6
- <link
7
- href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap"
8
- rel="stylesheet"
9
- />
10
- <link
11
- href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css"
12
- rel="stylesheet"
13
- />
14
- <style>
15
- html, body {
16
- padding: 0;
17
- margin: 0;
18
- }
19
- html {
20
- height: 100%;
21
- width: 100%;
22
- overflow: hidden;
23
- display: flex;
24
- flex-direction: column;
25
- justify-content: flex-start;
26
- align-items: stretch;
27
- }
28
- body {
29
- flex: 1 1 auto;
30
- overflow: hidden;
31
- }
32
-
33
- *,
34
- *:before,
35
- *:after {
36
- box-sizing: border-box;
37
- }
38
- </style>
39
- <script src='{{ clientLibPath }}'></script>
40
- <script>
41
- function receiveMessage(event) {
42
- if (!event.data) {
43
- return
44
- }
45
-
46
- // Parse received message
47
- // If parsing fails, just ignore and wait for the next message
48
- let parsed
49
- try {
50
- parsed = JSON.parse(event.data)
51
- } catch (error) {
52
- console.error("Client received invalid JSON")
53
- // Ignore
54
- }
55
- if (!parsed || !parsed.isBudibaseEvent) {
56
- return
57
- }
58
-
59
- // Extract data from message
60
- const {
61
- selectedComponentId,
62
- layout,
63
- screen,
64
- appId,
65
- theme,
66
- customTheme,
67
- previewDevice,
68
- navigation,
69
- hiddenComponentIds
70
- } = parsed
71
-
72
- // Set some flags so the app knows we're in the builder
73
- window["##BUDIBASE_IN_BUILDER##"] = true
74
- window["##BUDIBASE_APP_ID##"] = appId
75
- window["##BUDIBASE_PREVIEW_LAYOUT##"] = layout
76
- window["##BUDIBASE_PREVIEW_SCREEN##"] = screen
77
- window["##BUDIBASE_SELECTED_COMPONENT_ID##"] = selectedComponentId
78
- window["##BUDIBASE_PREVIEW_ID##"] = Math.random()
79
- window["##BUDIBASE_PREVIEW_THEME##"] = theme
80
- window["##BUDIBASE_PREVIEW_CUSTOM_THEME##"] = customTheme
81
- window["##BUDIBASE_PREVIEW_DEVICE##"] = previewDevice
82
- window["##BUDIBASE_PREVIEW_NAVIGATION##"] = navigation
83
- window["##BUDIBASE_HIDDEN_COMPONENT_IDS##"] = hiddenComponentIds
84
-
85
- // Initialise app
86
- try {
87
- if (window.loadBudibase) {
88
- window.loadBudibase()
89
- document.documentElement.classList.add("loaded")
90
- } else {
91
- throw "The client library couldn't be loaded"
92
- }
93
- } catch (error) {
94
- window.parent.postMessage({ type: "error", error })
95
- }
96
- }
97
-
98
- window.addEventListener("message", receiveMessage)
99
- window.parent.postMessage({ type: "ready" })
100
- </script>
101
- </head>
102
- <body></body>
103
- </html>
@@ -1,3 +0,0 @@
1
- {"version":"1.2.9","db_type":"http","start_time":"2022-08-31T13:18:50.740Z","db_info":{"db_name":"app_dev_default_c45f987cfa274060840878557ff2f547","purge_seq":"0-g1AAAABXeJzLYWBgYMpgTmEQTM4vTc5ISXIwNDLXMwBCwxyQVB4LkGRoAFL_gSArkQGP2kSGpHqIoiwAtOgYRA","update_seq":"28-g1AAAABXeJzLYWBgYMpgTmEQTM4vTc5ISXIwNDLXMwBCwxyQVB4LkGRoAFL_gSArkQ2P2kSGpHqwIrEsALX-GGA","sizes":{"file":233890,"external":5856,"active":19326},"props":{},"doc_del_count":0,"doc_count":7,"disk_format_version":8,"compact_running":false,"cluster":{"q":2,"n":1,"w":1,"r":1},"instance_start_time":"0","host":"http://localhost:10000/db/app_dev_default_c45f987cfa274060840878557ff2f547/","auto_compaction":false,"adapter":"http"}}
2
- {"docs":[{"_id":"_design/database","_rev":"4-afb0361e5ebb6b7e464c6c146ac3f559","views":{"by_link":{"map":"function (doc) {\n // everything in this must remain constant as its going to Pouch, no external variables\n if (doc.type === \"link\") {\n let doc1 = doc.doc1;\n let doc2 = doc.doc2;\n emit([doc1.tableId, doc1.rowId], {\n id: doc2.rowId,\n thisId: doc1.rowId,\n fieldName: doc1.fieldName,\n });\n // if linking to same table can't emit twice\n if (doc1.tableId !== doc2.tableId) {\n emit([doc2.tableId, doc2.rowId], {\n id: doc1.rowId,\n thisId: doc2.rowId,\n fieldName: doc2.fieldName,\n });\n }\n }\n }"},"screen_routes":{"map":"function(doc) {\n if (doc._id.startsWith(\"screen_\")) {\n emit(doc._id, {\n id: doc._id,\n routing: doc.routing,\n })\n }\n }"}},"indexes":{"rows":{"index":"function (doc) {\n function idx(input, prev) {\n for (let key of Object.keys(input)) {\n let idxKey = prev != null ? `${prev}.${key}` : key;\n idxKey = idxKey.replace(/ /g, \"_\");\n if (Array.isArray(input[key])) {\n for (let val of input[key]) {\n if (typeof val !== \"object\") {\n // eslint-disable-next-line no-undef\n index(idxKey, val, { store: true });\n }\n }\n }\n else if (key === \"_id\" || key === \"_rev\" || input[key] == null) {\n continue;\n }\n if (typeof input[key] === \"string\") {\n // eslint-disable-next-line no-undef\n index(idxKey, input[key].toLowerCase(), { store: true });\n }\n else if (typeof input[key] !== \"object\") {\n // eslint-disable-next-line no-undef\n index(idxKey, input[key], { store: true });\n }\n else {\n idx(input[key], idxKey);\n }\n }\n }\n if (doc._id.startsWith(\"ro_\")) {\n // eslint-disable-next-line no-undef\n index(\"default\", doc._id);\n idx(doc);\n }\n }","analyzer":"keyword"}},"_revisions":{"start":4,"ids":["afb0361e5ebb6b7e464c6c146ac3f559","d1eafe2832e6554b5d348e16d6a1b0d3","6e20795c5ba67179b478f0337a585b56","0b24e44a44af45e51e562fd124ce3007"]}},{"_id":"app_metadata","_rev":"8-9c8540f72e647e3ca7108978e862ff17","appId":"app_dev_default_c45f987cfa274060840878557ff2f547","type":"app","version":"1.0.79-alpha.7","componentLibraries":["@budibase/standard-components"],"name":"Old App","url":"/old%20app","instance":{"_id":"app_dev_default_c45f987cfa274060840878557ff2f547"},"tenantId":"default","updatedAt":"2022-08-31T13:18:05.273Z","createdAt":"2022-08-31T13:16:36.639Z","status":"development","customTheme":{"navBackground":"var(--spectrum-global-color-blue-600)","navTextColor":"var(--spectrum-global-color-gray-50)","buttonBorderRadius":"4px","primaryColor":"var(--spectrum-global-color-red-600)"},"_revisions":{"start":8,"ids":["9c8540f72e647e3ca7108978e862ff17","5c86ff8a96e1f3b4505e205f25a92656","75473d58cf92b61dbcdcd74157f9e2e1","ebc34a96a7ad678bae76d7d70880f4de","1c7397be4ef470d66bd0fd4b3fe4a002","89222c47e9d254b4885e1818cd0aac79","66bed1c391eabcea6ad3557d8ede5f27","0f1136445fd7c2cf73bb5cf41aaa19d2"]}},{"_id":"layout_private_master","_rev":"12-fa664c0538f1478b2a3695c8909a04e9","componentLibraries":["@budibase/standard-components"],"title":"Old App","favicon":"./_shared/favicon.png","stylesheets":[],"name":"Navigation Layout","props":{"_id":"4f569166-a4f3-47ea-a09e-6d218c75586f","_instanceName":"Navigation Layout","_component":"@budibase/standard-components/layout","_children":[{"_id":"7fcf11e4-6f5b-4085-8e0d-9f3d44c98967","_component":"@budibase/standard-components/screenslot","_instanceName":"Screen slot","_styles":{"normal":{"flex":"1 1 auto","display":"flex","flex-direction":"column","justify-content":"flex-start","align-items":"stretch"},"hover":{},"active":{},"selected":{}},"_children":[]}],"_styles":{"active":{},"hover":{},"normal":{},"selected":{}},"title":"Custom Title","navigation":"Left","width":"Small","links":[{"text":"Home","url":"/"}],"hideLogo":true,"hideTitle":false},"_revisions":{"start":12,"ids":["fa664c0538f1478b2a3695c8909a04e9","54b4084d5c10369ecd7a3b33d4cb7775","61e5d376e9f00d20d9905bf011680943","f222416fe5bcf0085ceb72bdc94327c1","b6d9abe1caa1a8ffec0b1e8cb7324c4b","85a347b8c8acb5ad4e31929384062e05","a7ce68d677f2fa7e9a0d54b2fb4275bb","83811e8befcdac752cdbe16cd8b33fa0","362cb9ad2c87ef9c92c58c0a41ed69d4","0a3bba6cdc98539abb3a4e98e13ef98a","d964020cc8907b37047bcd2bd1387735","156b45a34bbee17b6a4a97bfaaeb6f90"]}},{"_id":"layout_public_master","_rev":"1-c7d57c9c42e9e8f988d82f0e6cc7d32c","componentLibraries":["@budibase/standard-components"],"title":"Old App","favicon":"./_shared/favicon.png","stylesheets":[],"name":"Empty Layout","props":{"_id":"3723ffa1-f9e0-4c05-8013-98195c788ed6","_instanceName":"Empty Layout","_component":"@budibase/standard-components/layout","_children":[{"_id":"7fcf11e4-6f5b-4085-8e0d-9f3d44c98967","_component":"@budibase/standard-components/screenslot","_instanceName":"Screen slot","_styles":{"normal":{"flex":"1 1 auto","display":"flex","flex-direction":"column","justify-content":"flex-start","align-items":"stretch"},"hover":{},"active":{},"selected":{}},"_children":[]}],"_styles":{"active":{},"hover":{},"normal":{},"selected":{}},"navigation":"None","width":"Large","links":[{"text":"Home","url":"/"}]}},{"_id":"screen_c483ef802772479196a28c8a6eafe6a5","_rev":"1-db29ceb02c9c6c1ade847c8086d28a70","layoutId":"layout_private_master","props":{"_id":"cafd93b74e18b45a49a58c894d7ef29b4","_component":"@budibase/standard-components/container","_styles":{"normal":{},"hover":{},"active":{},"selected":{}},"_children":[],"_instanceName":"Home","direction":"column","hAlign":"stretch","vAlign":"top","size":"grow","gap":"M"},"routing":{"route":"/home","roleId":"BASIC"},"name":"cafd93b74e18b45a49a58c894d7ef29b4","template":"createFromScratch"},{"_id":"ta_users","_rev":"1-30a4344f056c24cf776d5736eb3c7ed5","type":"table","views":{},"name":"Users","schema":{"email":{"type":"string","constraints":{"type":"string","email":true,"length":{"maximum":""},"presence":true},"fieldName":"email","name":"email"},"firstName":{"name":"firstName","fieldName":"firstName","type":"string","constraints":{"type":"string","presence":false}},"lastName":{"name":"lastName","fieldName":"lastName","type":"string","constraints":{"type":"string","presence":false}},"roleId":{"fieldName":"roleId","name":"roleId","type":"options","constraints":{"type":"string","presence":false,"inclusion":["ADMIN","POWER","BASIC","PUBLIC"]}},"status":{"fieldName":"status","name":"status","type":"options","constraints":{"type":"string","presence":false,"inclusion":["active","inactive"]}}},"primaryDisplay":"email"}]}
3
- {"seq":"28-g1AAAACbeJzLYWBgYMpgTmEQTM4vTc5ISXIwNDLXMwBCwxyQVCJDUv3___-zMpgTxXKBAuxJiZYGxgZG2DTgMSaPBUgyNACp_1DT2MCmGRmZWBglG2PTlwUAEaUn-w"}
@@ -1,176 +0,0 @@
1
- const search = require("../../controllers/row/internalSearch")
2
- // this will be mocked out for _search endpoint
3
- const fetch = require("node-fetch")
4
- const PARAMS = {
5
- tableId: "ta_12345679abcdef",
6
- version: "1",
7
- bookmark: null,
8
- sort: null,
9
- sortOrder: "ascending",
10
- sortType: "string",
11
- }
12
-
13
- function checkLucene(resp, expected, params = PARAMS) {
14
- const query = resp.rows[0].query
15
- const json = JSON.parse(query)
16
- if (PARAMS.sort) {
17
- expect(json.sort).toBe(`${PARAMS.sort}<${PARAMS.sortType}>`)
18
- }
19
- if (PARAMS.bookmark) {
20
- expect(json.bookmark).toBe(PARAMS.bookmark)
21
- }
22
- expect(json.include_docs).toBe(true)
23
- expect(json.q).toBe(`(${expected}) AND tableId:"${params.tableId}"`)
24
- expect(json.limit).toBe(params.limit || 50)
25
- }
26
-
27
- describe("internal search", () => {
28
- it("default query", async () => {
29
- const response = await search.paginatedSearch({
30
- }, PARAMS)
31
- checkLucene(response, `*:*`)
32
- })
33
-
34
- it("test equal query", async () => {
35
- const response = await search.paginatedSearch({
36
- equal: {
37
- "column": "1",
38
- }
39
- }, PARAMS)
40
- checkLucene(response, `*:* AND column:"1"`)
41
- })
42
-
43
- it("test notEqual query", async () => {
44
- const response = await search.paginatedSearch({
45
- notEqual: {
46
- "column": "1",
47
- }
48
- }, PARAMS)
49
- checkLucene(response, `*:* AND !column:"1"`)
50
- })
51
-
52
- it("test OR query", async () => {
53
- const response = await search.paginatedSearch({
54
- allOr: true,
55
- equal: {
56
- "column": "2",
57
- },
58
- notEqual: {
59
- "column": "1",
60
- }
61
- }, PARAMS)
62
- checkLucene(response, `column:"2" OR !column:"1"`)
63
- })
64
-
65
- it("test AND query", async () => {
66
- const response = await search.paginatedSearch({
67
- equal: {
68
- "column": "2",
69
- },
70
- notEqual: {
71
- "column": "1",
72
- }
73
- }, PARAMS)
74
- checkLucene(response, `*:* AND column:"2" AND !column:"1"`)
75
- })
76
-
77
- it("test pagination query", async () => {
78
- const updatedParams = {
79
- ...PARAMS,
80
- limit: 100,
81
- bookmark: "awd",
82
- sort: "column",
83
- }
84
- const response = await search.paginatedSearch({
85
- string: {
86
- "column": "2",
87
- },
88
- }, updatedParams)
89
- checkLucene(response, `*:* AND column:2*`, updatedParams)
90
- })
91
-
92
- it("test range query", async () => {
93
- const response = await search.paginatedSearch({
94
- range: {
95
- "column": { low: 1, high: 2 },
96
- },
97
- }, PARAMS)
98
- checkLucene(response, `*:* AND column:[1 TO 2]`, PARAMS)
99
- })
100
-
101
- it("test empty query", async () => {
102
- const response = await search.paginatedSearch({
103
- empty: {
104
- "column": "",
105
- },
106
- }, PARAMS)
107
- checkLucene(response, `*:* AND !column:["" TO *]`, PARAMS)
108
- })
109
-
110
- it("test notEmpty query", async () => {
111
- const response = await search.paginatedSearch({
112
- notEmpty: {
113
- "column": "",
114
- },
115
- }, PARAMS)
116
- checkLucene(response, `*:* AND column:["" TO *]`, PARAMS)
117
- })
118
-
119
- it("test oneOf query", async () => {
120
- const response = await search.paginatedSearch({
121
- oneOf: {
122
- "column": ["a", "b"],
123
- },
124
- }, PARAMS)
125
- checkLucene(response, `*:* AND column:("a" OR "b")`, PARAMS)
126
- })
127
-
128
- it("test contains query", async () => {
129
- const response = await search.paginatedSearch({
130
- contains: {
131
- "column": "a",
132
- "colArr": [1, 2, 3],
133
- },
134
- }, PARAMS)
135
- checkLucene(response, `*:* AND column:a AND colArr:(1 AND 2 AND 3)`, PARAMS)
136
- })
137
-
138
- it("test multiple of same column", async () => {
139
- const response = await search.paginatedSearch({
140
- allOr: true,
141
- equal: {
142
- "1:column": "a",
143
- "2:column": "b",
144
- "3:column": "c",
145
- },
146
- }, PARAMS)
147
- checkLucene(response, `column:"a" OR column:"b" OR column:"c"`, PARAMS)
148
- })
149
-
150
- it("check a weird case for lucene building", async () => {
151
- const response = await search.paginatedSearch({
152
- equal: {
153
- "1:1:column": "a",
154
- },
155
- }, PARAMS)
156
- checkLucene(response, `*:* AND 1\\:column:"a"`, PARAMS)
157
- })
158
-
159
- it("test containsAny query", async () => {
160
- const response = await search.paginatedSearch({
161
- containsAny: {
162
- "column": ["a", "b", "c"]
163
- },
164
- }, PARAMS)
165
- checkLucene(response, `*:* AND column:(a OR b OR c)`, PARAMS)
166
- })
167
-
168
- it("test notContains query", async () => {
169
- const response = await search.paginatedSearch({
170
- notContains: {
171
- "column": ["a", "b", "c"]
172
- },
173
- }, PARAMS)
174
- checkLucene(response, `*:* AND NOT column:(a AND b AND c)`, PARAMS)
175
- })
176
- })
@@ -1,16 +0,0 @@
1
- import { QueryJson, Datasource } from "@budibase/types"
2
- const { integrations } = require("../index")
3
-
4
- export async function makeExternalQuery(
5
- datasource: Datasource,
6
- json: QueryJson
7
- ) {
8
- const Integration = integrations[datasource.source]
9
- // query is the opinionated function
10
- if (Integration.prototype.query) {
11
- const integration = new Integration(datasource.config)
12
- return integration.query(json)
13
- } else {
14
- throw "Datasource does not support query."
15
- }
16
- }