@budibase/server 1.0.56 → 1.0.59

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 (198) hide show
  1. package/builder/assets/{index.e2695470.js → index.2f16a22b.js} +240 -239
  2. package/builder/assets/index.38a1fb0a.css +6 -0
  3. package/builder/assets/{vendor.5ad9695a.js → vendor.20f80cec.js} +215 -189
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +32 -32
  6. package/coverage/coverage-final.json +3 -3
  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 +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 +2 -5
  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/index.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  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 +1 -1
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  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 +1 -1
  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 +13 -4
  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 +1 -1
  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 +1 -1
  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/view.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  83. package/coverage/lcov-report/automations/actions.js.html +1 -1
  84. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  85. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  86. package/coverage/lcov-report/automations/index.html +1 -1
  87. package/coverage/lcov-report/automations/index.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/index.html +1 -1
  97. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  114. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  115. package/coverage/lcov-report/automations/utils.js.html +1 -1
  116. package/coverage/lcov-report/constants/index.html +1 -1
  117. package/coverage/lcov-report/constants/index.js.html +1 -1
  118. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  119. package/coverage/lcov-report/constants/screens.js.html +1 -1
  120. package/coverage/lcov-report/db/client.js.html +1 -1
  121. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  122. package/coverage/lcov-report/db/index.html +1 -1
  123. package/coverage/lcov-report/db/index.js.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  125. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  126. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  127. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  128. package/coverage/lcov-report/db/newid.js.html +1 -1
  129. package/coverage/lcov-report/db/utils.js.html +1 -1
  130. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  131. package/coverage/lcov-report/events/index.html +1 -1
  132. package/coverage/lcov-report/events/index.js.html +1 -1
  133. package/coverage/lcov-report/events/utils.js.html +1 -1
  134. package/coverage/lcov-report/index.html +1 -1
  135. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  136. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  137. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  138. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  139. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  140. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  141. package/coverage/lcov-report/middleware/index.html +1 -1
  142. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  143. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  144. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  145. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  146. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  147. package/coverage/lcov-report/threads/automation.js.html +1 -1
  148. package/coverage/lcov-report/threads/index.html +1 -1
  149. package/coverage/lcov-report/threads/index.js.html +1 -1
  150. package/coverage/lcov-report/threads/query.js.html +27 -6
  151. package/coverage/lcov-report/threads/utils.js.html +1 -1
  152. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  153. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  154. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  155. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  156. package/coverage/lcov-report/utilities/global.js.html +1 -1
  157. package/coverage/lcov-report/utilities/index.html +1 -1
  158. package/coverage/lcov-report/utilities/index.js.html +1 -1
  159. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  160. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  161. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  163. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  164. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  166. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  167. package/coverage/lcov-report/utilities/security.js.html +1 -1
  168. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  169. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  170. package/coverage/lcov-report/utilities/usageQuota/index.js.html +1 -1
  171. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  172. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  173. package/coverage/lcov-report/utilities/users.js.html +1 -1
  174. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  175. package/coverage/lcov.info +53 -53
  176. package/dist/api/controllers/integration.js +0 -1
  177. package/dist/api/controllers/row/ExternalRequest.js +2 -1
  178. package/dist/api/controllers/view/exporters.js +5 -2
  179. package/dist/integrations/base/sql.js +6 -6
  180. package/dist/integrations/dynamodb.js +4 -6
  181. package/dist/integrations/index.js +5 -2
  182. package/dist/package.json +4 -4
  183. package/dist/threads/query.js +3 -0
  184. package/dist/tsconfig.tsbuildinfo +1 -1
  185. package/package.json +5 -5
  186. package/scripts/dev/manage.js +6 -6
  187. package/scripts/integrations/mssql/data/setup.sql +2 -6
  188. package/scripts/integrations/mysql/init.sql +6 -0
  189. package/scripts/likeCypress.ts +1 -1
  190. package/src/api/controllers/integration.js +0 -1
  191. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  192. package/src/api/controllers/view/exporters.js +5 -2
  193. package/src/api/routes/tests/query.spec.js +0 -1
  194. package/src/integrations/base/sql.ts +28 -40
  195. package/src/integrations/dynamodb.ts +4 -6
  196. package/src/integrations/index.ts +6 -2
  197. package/src/threads/query.js +11 -4
  198. package/builder/assets/index.c0cc369d.css +0 -6
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.0.56",
4
+ "version": "1.0.59",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -70,9 +70,9 @@
70
70
  "license": "GPL-3.0",
71
71
  "dependencies": {
72
72
  "@apidevtools/swagger-parser": "^10.0.3",
73
- "@budibase/backend-core": "^1.0.56",
74
- "@budibase/client": "^1.0.56",
75
- "@budibase/string-templates": "^1.0.56",
73
+ "@budibase/backend-core": "^1.0.59",
74
+ "@budibase/client": "^1.0.59",
75
+ "@budibase/string-templates": "^1.0.59",
76
76
  "@bull-board/api": "^3.7.0",
77
77
  "@bull-board/koa": "^3.7.0",
78
78
  "@elastic/elasticsearch": "7.10.0",
@@ -168,5 +168,5 @@
168
168
  "optionalDependencies": {
169
169
  "oracledb": "^5.3.0"
170
170
  },
171
- "gitHead": "dc9d8b926198fc581281654cbb756fa58b17e3f8"
171
+ "gitHead": "ac163154169db8c04a6ed148091cf41d1135d668"
172
172
  }
@@ -22,21 +22,21 @@ const Commands = {
22
22
  }
23
23
 
24
24
  async function init() {
25
- // generate envoy file, always do this incase it has changed
25
+ // generate nginx file, always do this incase it has changed
26
26
  const hostingPath = path.join(process.cwd(), "..", "..", "hosting")
27
- const envoyHbsPath = path.join(hostingPath, "envoy.dev.yaml.hbs")
28
- const envoyOutputPath = path.join(hostingPath, ".generated-envoy.dev.yaml")
29
- const contents = fs.readFileSync(envoyHbsPath, "utf8")
27
+ const nginxHbsPath = path.join(hostingPath, "nginx.dev.conf.hbs")
28
+ const nginxOutputPath = path.join(hostingPath, ".generated-nginx.dev.conf")
29
+ const contents = fs.readFileSync(nginxHbsPath, "utf8")
30
30
  const config = {
31
31
  address: isLinux() ? "172.17.0.1" : "host.docker.internal",
32
32
  }
33
- fs.writeFileSync(envoyOutputPath, processStringSync(contents, config))
33
+ fs.writeFileSync(nginxOutputPath, processStringSync(contents, config))
34
34
 
35
35
  const envFilePath = path.join(process.cwd(), ".env")
36
36
  if (!fs.existsSync(envFilePath)) {
37
37
  const envFileJson = {
38
38
  PORT: 4001,
39
- MINIO_URL: "http://localhost:10000/",
39
+ MINIO_URL: "http://localhost:4004",
40
40
  COUCH_DB_URL: "http://budibase:budibase@localhost:10000/db/",
41
41
  REDIS_URL: "localhost:6379",
42
42
  WORKER_URL: "http://localhost:4002",
@@ -36,13 +36,9 @@ CREATE TABLE people
36
36
  INSERT products
37
37
  (name, description)
38
38
  VALUES
39
- ('Bananas', 'Fruit thing');
40
-
41
- INSERT products
42
- (name, description)
43
- VALUES
39
+ ('Bananas', 'Fruit thing'),
44
40
  ('Meat', 'Animal thing');
45
-
41
+
46
42
  INSERT tasks
47
43
  (taskname, productid)
48
44
  VALUES
@@ -19,6 +19,12 @@ CREATE TABLE Tasks (
19
19
  FOREIGN KEY(PersonID)
20
20
  REFERENCES Persons(PersonID)
21
21
  );
22
+ CREATE TABLE Products (
23
+ id serial primary key,
24
+ name text,
25
+ updated time
26
+ );
22
27
  INSERT INTO Persons (FirstName, LastName, Age, Address, City, CreatedAt) VALUES ('Mike', 'Hughes', 28.2, '123 Fake Street', 'Belfast', '2021-01-19 03:14:07');
23
28
  INSERT INTO Tasks (PersonID, TaskName) VALUES (1, 'assembling');
24
29
  INSERT INTO Tasks (PersonID, TaskName) VALUES (1, 'processing');
30
+ INSERT INTO Products (name, updated) VALUES ('Meat', '11:00:22'), ('Fruit', '10:00:00');
@@ -17,7 +17,7 @@ process.env.JWT_SECRET = "budibase"
17
17
  process.env.COUCH_URL = `leveldb://${tmpdir}/.data/`
18
18
  process.env.SELF_HOSTED = "1"
19
19
  process.env.WORKER_URL = `http://localhost:${WORKER_PORT}/`
20
- process.env.MINIO_URL = `http://localhost:${MAIN_PORT}/`
20
+ process.env.MINIO_URL = `http://localhost:4004`
21
21
  process.env.MINIO_ACCESS_KEY = "budibase"
22
22
  process.env.MINIO_SECRET_KEY = "budibase"
23
23
  process.env.COUCH_DB_USER = "budibase"
@@ -1,7 +1,6 @@
1
1
  const { definitions } = require("../../integrations")
2
2
 
3
3
  exports.fetch = async function (ctx) {
4
- // TODO: fetch these from a github repo etc
5
4
  ctx.status = 200
6
5
  ctx.body = definitions
7
6
  }
@@ -541,7 +541,7 @@ module External {
541
541
  if (!linkTable || !linkPrimary) {
542
542
  return
543
543
  }
544
- const rows = related[key].rows || []
544
+ const rows = related[key]?.rows || []
545
545
  const found = rows.find(
546
546
  (row: { [key: string]: any }) =>
547
547
  row[linkPrimary] === relationship.id ||
@@ -5,8 +5,11 @@ exports.csv = function (headers, rows) {
5
5
  csv = `${csv}\n${headers
6
6
  .map(header => {
7
7
  let val = row[header]
8
- val = typeof val === "object" ? JSON.stringify(val) : val
9
- return `"${val}"`.trim()
8
+ val =
9
+ typeof val === "object"
10
+ ? `"${JSON.stringify(val).replace(/"/g, "'")}"`
11
+ : `"${val}"`
12
+ return val.trim()
10
13
  })
11
14
  .join(",")}`
12
15
  }
@@ -230,7 +230,6 @@ describe("/queries", () => {
230
230
  })
231
231
 
232
232
  describe("variables", () => {
233
-
234
233
  async function preview(datasource, fields) {
235
234
  return config.previewQuery(request, config, datasource, fields)
236
235
  }
@@ -210,49 +210,37 @@ class InternalBuilder {
210
210
  const { toTable, throughTable } = JSON.parse(key)
211
211
  if (!throughTable) {
212
212
  // @ts-ignore
213
- query = query.join(
214
- toTable,
215
- function () {
216
- for (let relationship of relationships) {
217
- const from = relationship.from,
218
- to = relationship.to
219
- // @ts-ignore
220
- this.orOn(`${fromTable}.${from}`, "=", `${toTable}.${to}`)
221
- }
222
- },
223
- "left"
224
- )
213
+ query = query.leftJoin(toTable, function () {
214
+ for (let relationship of relationships) {
215
+ const from = relationship.from,
216
+ to = relationship.to
217
+ // @ts-ignore
218
+ this.orOn(`${fromTable}.${from}`, "=", `${toTable}.${to}`)
219
+ }
220
+ })
225
221
  } else {
226
222
  query = query
227
223
  // @ts-ignore
228
- .join(
229
- throughTable,
230
- function () {
231
- for (let relationship of relationships) {
232
- const fromPrimary = relationship.fromPrimary
233
- const from = relationship.from
234
- // @ts-ignore
235
- this.orOn(
236
- `${fromTable}.${fromPrimary}`,
237
- "=",
238
- `${throughTable}.${from}`
239
- )
240
- }
241
- },
242
- "left"
243
- )
244
- .join(
245
- toTable,
246
- function () {
247
- for (let relationship of relationships) {
248
- const toPrimary = relationship.toPrimary
249
- const to = relationship.to
250
- // @ts-ignore
251
- this.orOn(`${toTable}.${toPrimary}`, `${throughTable}.${to}`)
252
- }
253
- },
254
- "left"
255
- )
224
+ .leftJoin(throughTable, function () {
225
+ for (let relationship of relationships) {
226
+ const fromPrimary = relationship.fromPrimary
227
+ const from = relationship.from
228
+ // @ts-ignore
229
+ this.orOn(
230
+ `${fromTable}.${fromPrimary}`,
231
+ "=",
232
+ `${throughTable}.${from}`
233
+ )
234
+ }
235
+ })
236
+ .leftJoin(toTable, function () {
237
+ for (let relationship of relationships) {
238
+ const toPrimary = relationship.toPrimary
239
+ const to = relationship.to
240
+ // @ts-ignore
241
+ this.orOn(`${toTable}.${toPrimary}`, `${throughTable}.${to}`)
242
+ }
243
+ })
256
244
  }
257
245
  }
258
246
  return query.limit(BASE_LIMIT)
@@ -169,13 +169,11 @@ module DynamoModule {
169
169
  IndexName: query.index ? query.index : undefined,
170
170
  ...query.json,
171
171
  }
172
- if (query.index) {
173
- const response = await this.client.query(params).promise()
174
- if (response.Items) {
175
- return response.Items
176
- }
177
- return response
172
+ const response = await this.client.query(params).promise()
173
+ if (response.Items) {
174
+ return response.Items
178
175
  }
176
+ return response
179
177
  }
180
178
 
181
179
  async scan(query: { table: string; json: object; index: null | string }) {
@@ -11,6 +11,7 @@ const arangodb = require("./arangodb")
11
11
  const rest = require("./rest")
12
12
  const googlesheets = require("./googlesheets")
13
13
  const { SourceNames } = require("../definitions/datasource")
14
+ const environment = require("../environment")
14
15
 
15
16
  const DEFINITIONS = {
16
17
  [SourceNames.POSTGRES]: postgres.schema,
@@ -24,7 +25,6 @@ const DEFINITIONS = {
24
25
  [SourceNames.MYSQL]: mysql.schema,
25
26
  [SourceNames.ARANGODB]: arangodb.schema,
26
27
  [SourceNames.REST]: rest.schema,
27
- [SourceNames.GOOGLE_SHEETS]: googlesheets.schema,
28
28
  }
29
29
 
30
30
  const INTEGRATIONS = {
@@ -39,7 +39,6 @@ const INTEGRATIONS = {
39
39
  [SourceNames.MYSQL]: mysql.integration,
40
40
  [SourceNames.ARANGODB]: arangodb.integration,
41
41
  [SourceNames.REST]: rest.integration,
42
- [SourceNames.GOOGLE_SHEETS]: googlesheets.integration,
43
42
  }
44
43
 
45
44
  // optionally add oracle integration if the oracle binary can be installed
@@ -49,6 +48,11 @@ if (!(process.arch === "arm64" && process.platform === "darwin")) {
49
48
  INTEGRATIONS[SourceNames.ORACLE] = oracle.integration
50
49
  }
51
50
 
51
+ if (environment.SELF_HOSTED) {
52
+ DEFINITIONS[SourceNames.GOOGLE_SHEETS] = googlesheets.schema
53
+ INTEGRATIONS[SourceNames.GOOGLE_SHEETS] = googlesheets.integration
54
+ }
55
+
52
56
  module.exports = {
53
57
  definitions: DEFINITIONS,
54
58
  integrations: INTEGRATIONS,
@@ -161,10 +161,16 @@ class QueryRunner {
161
161
  const responses = await Promise.all(dynamics)
162
162
  for (let i = 0; i < foundVars.length; i++) {
163
163
  const variable = foundVars[i]
164
- parameters[variable.name] = processStringSync(variable.value, {
165
- data: responses[i].rows,
166
- info: responses[i].extra,
167
- })
164
+ parameters[variable.name] = processStringSync(
165
+ variable.value,
166
+ {
167
+ data: responses[i].rows,
168
+ info: responses[i].extra,
169
+ },
170
+ {
171
+ escapeNewlines: true,
172
+ }
173
+ )
168
174
  // make sure its known that this uses dynamic variables in case it fails
169
175
  this.hasDynamicVariables = true
170
176
  }
@@ -188,6 +194,7 @@ class QueryRunner {
188
194
  enrichedQuery[key] = processStringSync(fields[key], parameters, {
189
195
  noEscaping: true,
190
196
  noHelpers: true,
197
+ escapeNewlines: true,
191
198
  })
192
199
  } else {
193
200
  enrichedQuery[key] = fields[key]