@budibase/server 1.0.89 → 1.0.90

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 (187) hide show
  1. package/builder/assets/{index.7f34af34.js → index.5cea89f7.js} +2 -2
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +267 -239
  4. package/coverage/coverage-final.json +6 -5
  5. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +1 -1
  16. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/index.js.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 +44 -8
  27. package/coverage/lcov-report/api/controllers/row/index.html +17 -17
  28. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +34 -7
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  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 +1 -1
  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/table/internal.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  44. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  49. package/coverage/lcov-report/api/index.html +1 -1
  50. package/coverage/lcov-report/api/index.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/index.html +1 -1
  63. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  80. package/coverage/lcov-report/api/routes/utils/validators.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 +24 -24
  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 +24 -9
  142. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  143. package/coverage/lcov-report/middleware/publicApi.js.html +143 -0
  144. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  145. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  146. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  147. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  148. package/coverage/lcov-report/threads/automation.js.html +1 -1
  149. package/coverage/lcov-report/threads/index.html +1 -1
  150. package/coverage/lcov-report/threads/index.js.html +1 -1
  151. package/coverage/lcov-report/threads/query.js.html +1 -1
  152. package/coverage/lcov-report/threads/utils.js.html +1 -1
  153. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  154. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  155. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  156. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  157. package/coverage/lcov-report/utilities/global.js.html +1 -1
  158. package/coverage/lcov-report/utilities/index.html +1 -1
  159. package/coverage/lcov-report/utilities/index.js.html +1 -1
  160. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  161. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  163. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  164. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  166. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  167. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  168. package/coverage/lcov-report/utilities/security.js.html +1 -1
  169. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  170. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  171. package/coverage/lcov-report/utilities/usageQuota/index.js.html +1 -1
  172. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  173. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  174. package/coverage/lcov-report/utilities/users.js.html +1 -1
  175. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  176. package/coverage/lcov.info +417 -372
  177. package/dist/api/controllers/row/external.js +11 -2
  178. package/dist/api/controllers/row/internal.js +9 -1
  179. package/dist/api/routes/public/index.js +6 -0
  180. package/dist/middleware/publicApi.js +24 -0
  181. package/dist/package.json +4 -4
  182. package/dist/tsconfig.tsbuildinfo +1 -1
  183. package/package.json +5 -5
  184. package/src/api/controllers/row/external.js +14 -2
  185. package/src/api/controllers/row/internal.js +10 -1
  186. package/src/api/routes/public/index.ts +7 -0
  187. package/src/middleware/publicApi.js +21 -0
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.89",
4
+ "version": "1.0.90",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -71,9 +71,9 @@
71
71
  "license": "GPL-3.0",
72
72
  "dependencies": {
73
73
  "@apidevtools/swagger-parser": "^10.0.3",
74
- "@budibase/backend-core": "^1.0.89",
75
- "@budibase/client": "^1.0.89",
76
- "@budibase/string-templates": "^1.0.89",
74
+ "@budibase/backend-core": "^1.0.90",
75
+ "@budibase/client": "^1.0.90",
76
+ "@budibase/string-templates": "^1.0.90",
77
77
  "@bull-board/api": "^3.7.0",
78
78
  "@bull-board/koa": "^3.7.0",
79
79
  "@elastic/elasticsearch": "7.10.0",
@@ -175,5 +175,5 @@
175
175
  "optionalDependencies": {
176
176
  "oracledb": "^5.3.0"
177
177
  },
178
- "gitHead": "65ea8e4e4d146b2df9b6e1a9d1693e131053ffd3"
178
+ "gitHead": "b5c5488e8ac7c0390f5f066813eae13d08cccbf0"
179
179
  }
@@ -10,6 +10,8 @@ const {
10
10
  } = require("../../../integrations/utils")
11
11
  const ExternalRequest = require("./ExternalRequest")
12
12
  const { getAppDB } = require("@budibase/backend-core/context")
13
+ const exporters = require("../view/exporters")
14
+ const { apiFileReturn } = require("../../../utilities/fileSystem")
13
15
 
14
16
  async function handleRequest(operation, tableId, opts = {}) {
15
17
  // make sure the filters are cleaned up, no empty strings for equals, fuzzy or string
@@ -155,6 +157,7 @@ exports.validate = async () => {
155
157
  exports.exportRows = async ctx => {
156
158
  const { datasourceId, tableName } = breakExternalTableId(ctx.params.tableId)
157
159
  const db = getAppDB()
160
+ let format = ctx.query.format
158
161
  const datasource = await db.get(datasourceId)
159
162
  if (!datasource || !datasource.entities) {
160
163
  ctx.throw(400, "Datasource has not been configured for plus API.")
@@ -164,13 +167,22 @@ exports.exportRows = async ctx => {
164
167
  ctx.request.body = {
165
168
  query: {
166
169
  oneOf: {
167
- [table.primaryDisplay]: ctx.request.body.map(
170
+ [table.primaryDisplay]: ctx.request.body.rows.map(
168
171
  id => breakRowIdField(id)[0]
169
172
  ),
170
173
  },
171
174
  },
172
175
  }
173
- return exports.search(ctx)
176
+
177
+ let result = await exports.search(ctx)
178
+
179
+ let headers = Object.keys(result.rows[0])
180
+ const exporter = exporters[format]
181
+ const filename = `export.${format}`
182
+
183
+ // send down the file
184
+ ctx.attachment(filename)
185
+ return apiFileReturn(exporter(headers, result.rows))
174
186
  }
175
187
 
176
188
  exports.fetchEnrichedRow = async ctx => {
@@ -27,6 +27,8 @@ const {
27
27
  const { cloneDeep } = require("lodash/fp")
28
28
  const { getAppDB } = require("@budibase/backend-core/context")
29
29
  const { finaliseRow, updateRelatedFormula } = require("./staticFormula")
30
+ const exporters = require("../view/exporters")
31
+ const { apiFileReturn } = require("../../../utilities/fileSystem")
30
32
 
31
33
  const CALCULATION_TYPES = {
32
34
  SUM: "sum",
@@ -366,6 +368,7 @@ exports.exportRows = async ctx => {
366
368
  const db = getAppDB()
367
369
  const table = await db.get(ctx.params.tableId)
368
370
  const rowIds = ctx.request.body.rows
371
+ let format = ctx.query.format
369
372
  let response = (
370
373
  await db.allDocs({
371
374
  include_docs: true,
@@ -375,7 +378,13 @@ exports.exportRows = async ctx => {
375
378
 
376
379
  let rows = await outputProcessing(table, response)
377
380
 
378
- return rows
381
+ let headers = Object.keys(rows[0])
382
+ const exporter = exporters[format]
383
+ const filename = `export.${format}`
384
+
385
+ // send down the file
386
+ ctx.attachment(filename)
387
+ return apiFileReturn(exporter(headers, rows))
379
388
  }
380
389
 
381
390
  exports.fetchEnrichedRow = async ctx => {
@@ -5,6 +5,7 @@ import rowEndpoints from "./rows"
5
5
  import userEndpoints from "./users"
6
6
  import usage from "../../../middleware/usageQuota"
7
7
  import authorized from "../../../middleware/authorized"
8
+ import publicApi from "../../../middleware/publicApi"
8
9
  import { paramResource, paramSubResource } from "../../../middleware/resourceId"
9
10
  import { CtxFn } from "./utils/Endpoint"
10
11
  import mapperMiddleware from "./middleware/mapper"
@@ -101,6 +102,12 @@ function applyRoutes(
101
102
  const paramMiddleware = subResource
102
103
  ? paramSubResource(resource, subResource)
103
104
  : paramResource(resource)
105
+ const publicApiMiddleware = publicApi({
106
+ requiresAppId:
107
+ permType !== PermissionTypes.APP && permType !== PermissionTypes.USER,
108
+ })
109
+ addMiddleware(endpoints.read, publicApiMiddleware)
110
+ addMiddleware(endpoints.write, publicApiMiddleware)
104
111
  // add the parameter capture middleware
105
112
  addMiddleware(endpoints.read, paramMiddleware)
106
113
  addMiddleware(endpoints.write, paramMiddleware)
@@ -0,0 +1,21 @@
1
+ const { Headers } = require("@budibase/backend-core/constants")
2
+ const { getAppId } = require("@budibase/backend-core/utils")
3
+
4
+ module.exports = function ({ requiresAppId } = {}) {
5
+ return async (ctx, next) => {
6
+ const appId = getAppId(ctx)
7
+ if (requiresAppId && !appId) {
8
+ ctx.throw(
9
+ 400,
10
+ `Invalid app ID provided, please check the ${Headers.APP_ID} header.`
11
+ )
12
+ }
13
+ if (!ctx.headers[Headers.API_KEY]) {
14
+ ctx.throw(
15
+ 400,
16
+ `Invalid API key provided, please check the ${Headers.API_KEY} header.`
17
+ )
18
+ }
19
+ return next()
20
+ }
21
+ }