@budibase/server 1.2.27 → 1.2.29

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 (167) hide show
  1. package/builder/assets/{index.5621c63d.js → index.e611cc38.js} +36 -36
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +1155 -1154
  4. package/coverage/coverage-final.json +119 -119
  5. package/coverage/lcov-report/api/controllers/apikeys.js.html +6 -6
  6. package/coverage/lcov-report/api/controllers/auth.js.html +7 -7
  7. package/coverage/lcov-report/api/controllers/automation.js.html +29 -29
  8. package/coverage/lcov-report/api/controllers/backup.js.html +5 -5
  9. package/coverage/lcov-report/api/controllers/cloud.js.html +11 -11
  10. package/coverage/lcov-report/api/controllers/component.js.html +5 -5
  11. package/coverage/lcov-report/api/controllers/datasource.js.html +17 -17
  12. package/coverage/lcov-report/api/controllers/dev.js.html +20 -20
  13. package/coverage/lcov-report/api/controllers/index.html +1 -1
  14. package/coverage/lcov-report/api/controllers/integration.js.html +8 -8
  15. package/coverage/lcov-report/api/controllers/layout.js.html +7 -7
  16. package/coverage/lcov-report/api/controllers/metadata.js.html +9 -9
  17. package/coverage/lcov-report/api/controllers/migrations.js.html +4 -4
  18. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  19. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/validation.js.html +10 -10
  21. package/coverage/lcov-report/api/controllers/role.js.html +10 -10
  22. package/coverage/lcov-report/api/controllers/routing.js.html +9 -9
  23. package/coverage/lcov-report/api/controllers/row/external.js.html +19 -19
  24. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/internal.js.html +30 -30
  26. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +9 -9
  27. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +10 -10
  28. package/coverage/lcov-report/api/controllers/row/utils.js.html +12 -12
  29. package/coverage/lcov-report/api/controllers/screen.js.html +8 -8
  30. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  31. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +9 -9
  32. package/coverage/lcov-report/api/controllers/table/external.js.html +13 -13
  33. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.js.html +15 -15
  35. package/coverage/lcov-report/api/controllers/templates.js.html +6 -6
  36. package/coverage/lcov-report/api/controllers/user.js.html +19 -19
  37. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  38. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.js.html +20 -20
  40. package/coverage/lcov-report/api/controllers/view/utils.js.html +13 -13
  41. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +8 -8
  42. package/coverage/lcov-report/api/controllers/webhook.js.html +15 -15
  43. package/coverage/lcov-report/api/index.html +1 -1
  44. package/coverage/lcov-report/api/index.js.html +30 -30
  45. package/coverage/lcov-report/api/routes/analytics.js.html +11 -8
  46. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -8
  47. package/coverage/lcov-report/api/routes/auth.js.html +6 -6
  48. package/coverage/lcov-report/api/routes/automation.js.html +11 -11
  49. package/coverage/lcov-report/api/routes/backup.js.html +8 -8
  50. package/coverage/lcov-report/api/routes/cloud.js.html +8 -8
  51. package/coverage/lcov-report/api/routes/component.js.html +8 -8
  52. package/coverage/lcov-report/api/routes/datasource.js.html +9 -9
  53. package/coverage/lcov-report/api/routes/deploy.js.html +8 -8
  54. package/coverage/lcov-report/api/routes/dev.js.html +13 -13
  55. package/coverage/lcov-report/api/routes/index.html +7 -7
  56. package/coverage/lcov-report/api/routes/integration.js.html +8 -8
  57. package/coverage/lcov-report/api/routes/layout.js.html +8 -8
  58. package/coverage/lcov-report/api/routes/metadata.js.html +9 -9
  59. package/coverage/lcov-report/api/routes/migrations.js.html +7 -7
  60. package/coverage/lcov-report/api/routes/permission.js.html +9 -9
  61. package/coverage/lcov-report/api/routes/query.js.html +10 -10
  62. package/coverage/lcov-report/api/routes/role.js.html +9 -9
  63. package/coverage/lcov-report/api/routes/routing.js.html +8 -8
  64. package/coverage/lcov-report/api/routes/screen.js.html +9 -9
  65. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/table.js.html +10 -10
  67. package/coverage/lcov-report/api/routes/templates.js.html +8 -8
  68. package/coverage/lcov-report/api/routes/user.js.html +8 -8
  69. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  70. package/coverage/lcov-report/api/routes/utils/validators.js.html +37 -37
  71. package/coverage/lcov-report/api/routes/view.js.html +10 -10
  72. package/coverage/lcov-report/api/routes/webhook.js.html +9 -9
  73. package/coverage/lcov-report/automations/actions.js.html +25 -25
  74. package/coverage/lcov-report/automations/automationUtils.js.html +8 -8
  75. package/coverage/lcov-report/automations/bullboard.js.html +17 -17
  76. package/coverage/lcov-report/automations/index.html +1 -1
  77. package/coverage/lcov-report/automations/index.js.html +12 -12
  78. package/coverage/lcov-report/automations/steps/bash.js.html +7 -7
  79. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  80. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  81. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  82. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  83. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  84. package/coverage/lcov-report/automations/steps/index.html +1 -1
  85. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  86. package/coverage/lcov-report/automations/steps/loop.js.html +2 -2
  87. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  88. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  89. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  90. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  91. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  92. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  93. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  94. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  95. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  96. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  97. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  99. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  100. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  101. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  102. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  103. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  104. package/coverage/lcov-report/constants/index.html +1 -1
  105. package/coverage/lcov-report/constants/index.js.html +30 -30
  106. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  107. package/coverage/lcov-report/constants/screens.js.html +4 -4
  108. package/coverage/lcov-report/db/inMemoryView.js.html +5 -5
  109. package/coverage/lcov-report/db/index.html +1 -1
  110. package/coverage/lcov-report/db/index.js.html +9 -9
  111. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +7 -7
  112. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/index.js.html +18 -18
  114. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +13 -13
  115. package/coverage/lcov-report/db/newid.js.html +4 -4
  116. package/coverage/lcov-report/db/utils.js.html +71 -71
  117. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  118. package/coverage/lcov-report/events/index.html +1 -1
  119. package/coverage/lcov-report/events/index.js.html +6 -6
  120. package/coverage/lcov-report/events/utils.js.html +3 -3
  121. package/coverage/lcov-report/index.html +9 -9
  122. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  123. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  124. package/coverage/lcov-report/middleware/appInfo.js.html +5 -5
  125. package/coverage/lcov-report/middleware/builder.js.html +9 -9
  126. package/coverage/lcov-report/middleware/currentapp.js.html +49 -49
  127. package/coverage/lcov-report/middleware/index.html +1 -1
  128. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  129. package/coverage/lcov-report/middleware/publicApi.js.html +5 -5
  130. package/coverage/lcov-report/middleware/resourceId.js.html +22 -22
  131. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  132. package/coverage/lcov-report/middleware/utils.js.html +3 -3
  133. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  134. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  135. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  136. package/coverage/lcov-report/utilities/global.js.html +31 -31
  137. package/coverage/lcov-report/utilities/index.html +1 -1
  138. package/coverage/lcov-report/utilities/index.js.html +25 -25
  139. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -9
  140. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  141. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  142. package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
  143. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  144. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +20 -20
  145. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +6 -6
  146. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  147. package/coverage/lcov-report/utilities/security.js.html +8 -8
  148. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  149. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  150. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +7 -7
  151. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  152. package/coverage/lcov-report/utilities/users.js.html +7 -7
  153. package/coverage/lcov-report/utilities/workerRequests.js.html +18 -18
  154. package/coverage/lcov.info +1275 -1274
  155. package/dist/api/controllers/analytics.js +27 -1
  156. package/dist/api/controllers/static/index.js +1 -11
  157. package/dist/api/routes/analytics.js +1 -0
  158. package/dist/package.json +6 -6
  159. package/dist/tests/utilities/TestConfiguration.js +8 -11
  160. package/dist/tsconfig.build.tsbuildinfo +1 -1
  161. package/package.json +7 -7
  162. package/src/api/controllers/analytics.ts +27 -0
  163. package/src/api/controllers/static/index.ts +1 -11
  164. package/src/api/routes/analytics.js +1 -0
  165. package/src/api/routes/tests/analytics.spec.js +59 -0
  166. package/src/api/routes/tests/static.spec.js +0 -10
  167. package/src/tests/utilities/TestConfiguration.js +10 -17
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.27",
4
+ "version": "1.2.29",
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.27",
81
- "@budibase/client": "^1.2.27",
82
- "@budibase/pro": "1.2.26",
83
- "@budibase/string-templates": "^1.2.27",
84
- "@budibase/types": "^1.2.27",
80
+ "@budibase/backend-core": "^1.2.29",
81
+ "@budibase/client": "^1.2.29",
82
+ "@budibase/pro": "1.2.28",
83
+ "@budibase/string-templates": "^1.2.29",
84
+ "@budibase/types": "^1.2.29",
85
85
  "@bull-board/api": "3.7.0",
86
86
  "@bull-board/koa": "3.9.4",
87
87
  "@elastic/elasticsearch": "7.10.0",
@@ -195,5 +195,5 @@
195
195
  "optionalDependencies": {
196
196
  "oracledb": "5.3.0"
197
197
  },
198
- "gitHead": "31442919481ce9baf475a9375aeeb0b12ff58eb2"
198
+ "gitHead": "5fb18037e6670ccee34105bef633fe841fab7acb"
199
199
  }
@@ -1,4 +1,7 @@
1
1
  import { events } from "@budibase/backend-core"
2
+ import { AnalyticsPingRequest, PingSource } from "@budibase/types"
3
+ import { DocumentTypes, isDevAppID } from "../../db/utils"
4
+ import { context } from "@budibase/backend-core"
2
5
 
3
6
  export const isEnabled = async (ctx: any) => {
4
7
  const enabled = await events.analytics.enabled()
@@ -6,3 +9,27 @@ export const isEnabled = async (ctx: any) => {
6
9
  enabled,
7
10
  }
8
11
  }
12
+
13
+ export const ping = async (ctx: any) => {
14
+ const body = ctx.request.body as AnalyticsPingRequest
15
+ switch (body.source) {
16
+ case PingSource.APP: {
17
+ const db = context.getAppDB({ skip_setup: true })
18
+ const appInfo = await db.get(DocumentTypes.APP_METADATA)
19
+ let appId = context.getAppId()
20
+
21
+ if (isDevAppID(appId)) {
22
+ await events.serve.servedAppPreview(appInfo, body.timezone)
23
+ } else {
24
+ await events.serve.servedApp(appInfo, body.timezone)
25
+ }
26
+ break
27
+ }
28
+ case PingSource.BUILDER: {
29
+ await events.serve.servedBuilder(body.timezone)
30
+ break
31
+ }
32
+ }
33
+
34
+ ctx.status = 200
35
+ }
@@ -14,11 +14,10 @@ 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, isDevAppID } = require("../../../db/utils")
17
+ const { DocumentTypes } = 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")
21
- import { events } from "@budibase/backend-core"
22
21
 
23
22
  const fs = require("fs")
24
23
  const {
@@ -75,9 +74,6 @@ export const toggleBetaUiFeature = async function (ctx: any) {
75
74
  export const serveBuilder = async function (ctx: any) {
76
75
  const builderPath = resolve(TOP_LEVEL_PATH, "builder")
77
76
  await send(ctx, ctx.file, { root: builderPath })
78
- if (ctx.file === "index.html") {
79
- await events.serve.servedBuilder()
80
- }
81
77
  }
82
78
 
83
79
  export const uploadFile = async function (ctx: any) {
@@ -126,12 +122,6 @@ export const serveApp = async function (ctx: any) {
126
122
  // just return the app info for jest to assert on
127
123
  ctx.body = appInfo
128
124
  }
129
-
130
- if (isDevAppID(appInfo.appId)) {
131
- await events.serve.servedAppPreview(appInfo)
132
- } else {
133
- await events.serve.servedApp(appInfo)
134
- }
135
125
  }
136
126
 
137
127
  export const serveClientLibrary = async function (ctx: any) {
@@ -4,5 +4,6 @@ const controller = require("../controllers/analytics")
4
4
  const router = Router()
5
5
 
6
6
  router.get("/api/bbtel", controller.isEnabled)
7
+ router.post("/api/bbtel/ping", controller.ping)
7
8
 
8
9
  module.exports = router
@@ -0,0 +1,59 @@
1
+ const setup = require("./utilities")
2
+ const { events, constants, db } = require("@budibase/backend-core")
3
+
4
+ describe("/static", () => {
5
+ let request = setup.getRequest()
6
+ let config = setup.getConfig()
7
+ let app
8
+
9
+ const timezone = "Europe/London"
10
+
11
+ afterAll(setup.afterAll)
12
+
13
+ beforeEach(async () => {
14
+ app = await config.init()
15
+ jest.clearAllMocks()
16
+ })
17
+
18
+ describe("/ping", () => {
19
+ it("should ping from builder", async () => {
20
+ await request
21
+ .post("/api/bbtel/ping")
22
+ .send({source: "builder", timezone})
23
+ .set(config.defaultHeaders())
24
+ .expect(200)
25
+
26
+ expect(events.serve.servedBuilder).toBeCalledTimes(1)
27
+ expect(events.serve.servedBuilder).toBeCalledWith(timezone)
28
+ expect(events.serve.servedApp).not.toBeCalled()
29
+ expect(events.serve.servedAppPreview).not.toBeCalled()
30
+ })
31
+
32
+ it("should ping from app preview", async () => {
33
+ await request
34
+ .post("/api/bbtel/ping")
35
+ .send({source: "app", timezone})
36
+ .set(config.defaultHeaders())
37
+ .expect(200)
38
+
39
+ expect(events.serve.servedAppPreview).toBeCalledTimes(1)
40
+ expect(events.serve.servedAppPreview).toBeCalledWith(config.getApp(), timezone)
41
+ expect(events.serve.servedApp).not.toBeCalled()
42
+ })
43
+
44
+ it("should ping from app", async () => {
45
+ const headers = config.defaultHeaders()
46
+ headers[constants.Headers.APP_ID] = config.prodAppId
47
+
48
+ await request
49
+ .post("/api/bbtel/ping")
50
+ .send({source: "app", timezone})
51
+ .set(headers)
52
+ .expect(200)
53
+
54
+ expect(events.serve.servedApp).toBeCalledTimes(1)
55
+ expect(events.serve.servedApp).toBeCalledWith(config.getProdApp(), timezone)
56
+ expect(events.serve.servedAppPreview).not.toBeCalled()
57
+ })
58
+ })
59
+ })
@@ -36,7 +36,6 @@ describe("/static", () => {
36
36
  .expect(200)
37
37
 
38
38
  expect(res.text).toContain("<title>Budibase</title>")
39
- expect(events.serve.servedBuilder).toBeCalledTimes(1)
40
39
  })
41
40
  })
42
41
 
@@ -56,9 +55,6 @@ describe("/static", () => {
56
55
  .expect(200)
57
56
 
58
57
  expect(res.body.appId).toBe(config.prodAppId)
59
- expect(events.serve.servedApp).toBeCalledTimes(1)
60
- expect(events.serve.servedApp).toBeCalledWith(res.body)
61
- expect(events.serve.servedAppPreview).not.toBeCalled()
62
58
  })
63
59
 
64
60
  it("should serve the app by url", async () => {
@@ -71,9 +67,6 @@ describe("/static", () => {
71
67
  .expect(200)
72
68
 
73
69
  expect(res.body.appId).toBe(config.prodAppId)
74
- expect(events.serve.servedApp).toBeCalledTimes(1)
75
- expect(events.serve.servedApp).toBeCalledWith(res.body)
76
- expect(events.serve.servedAppPreview).not.toBeCalled()
77
70
  })
78
71
 
79
72
  it("should serve the app preview by id", async () => {
@@ -83,9 +76,6 @@ describe("/static", () => {
83
76
  .expect(200)
84
77
 
85
78
  expect(res.body.appId).toBe(config.appId)
86
- expect(events.serve.servedAppPreview).toBeCalledTimes(1)
87
- expect(events.serve.servedAppPreview).toBeCalledWith(res.body)
88
- expect(events.serve.servedApp).not.toBeCalled()
89
79
  })
90
80
  })
91
81
 
@@ -25,6 +25,7 @@ const newid = require("../../db/newid")
25
25
  const context = require("@budibase/backend-core/context")
26
26
  const { generateDevInfoID, SEPARATOR } = require("@budibase/backend-core/db")
27
27
  const { encrypt } = require("@budibase/backend-core/encryption")
28
+ const { DocumentTypes } = require("../../db/utils")
28
29
 
29
30
  const GLOBAL_USER_ID = "us_uuid1"
30
31
  const EMAIL = "babs@babs.com"
@@ -53,6 +54,10 @@ class TestConfiguration {
53
54
  return this.app
54
55
  }
55
56
 
57
+ getProdApp() {
58
+ return this.prodApp
59
+ }
60
+
56
61
  getAppId() {
57
62
  return this.appId
58
63
  }
@@ -106,19 +111,11 @@ class TestConfiguration {
106
111
 
107
112
  // UTILS
108
113
 
109
- async _req(body, params, controlFunc, opts = { prodApp: false }) {
114
+ async _req(body, params, controlFunc) {
110
115
  // create a fake request ctx
111
116
  const request = {}
112
-
113
- // set the app id
114
- let appId
115
- if (opts.prodApp) {
116
- appId = this.prodAppId
117
- } else {
118
- appId = this.appId
119
- }
117
+ const appId = this.appId
120
118
  request.appId = appId
121
-
122
119
  // fake cookies, we don't need them
123
120
  request.cookies = { set: () => {}, get: () => {} }
124
121
  request.config = { jwtSecret: env.JWT_SECRET }
@@ -344,14 +341,10 @@ class TestConfiguration {
344
341
  await this._req(null, null, controllers.deploy.deployApp)
345
342
  const prodAppId = this.getAppId().replace("_dev", "")
346
343
  this.prodAppId = prodAppId
344
+
347
345
  return context.doInAppContext(prodAppId, async () => {
348
- const appPackage = await this._req(
349
- null,
350
- { appId: prodAppId },
351
- controllers.app.fetchAppPackage,
352
- { prodApp: true }
353
- )
354
- return appPackage.application
346
+ const db = context.getProdAppDB()
347
+ return await db.get(DocumentTypes.APP_METADATA)
355
348
  })
356
349
  }
357
350