@budibase/server 1.0.212-alpha.1 → 1.0.212-alpha.12

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 (174) hide show
  1. package/builder/assets/{index.c6912819.css → index.969c2236.css} +1 -1
  2. package/builder/assets/{index.0da107e0.js → index.a895b27f.js} +157 -491
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +205 -177
  5. package/coverage/coverage-final.json +4 -4
  6. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/dev.js.html +63 -9
  14. package/coverage/lcov-report/api/controllers/index.html +16 -16
  15. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/index.html +19 -19
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +95 -11
  28. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  44. package/coverage/lcov-report/api/index.html +1 -1
  45. package/coverage/lcov-report/api/index.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/index.html +1 -1
  57. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  74. package/coverage/lcov-report/automations/actions.js.html +1 -1
  75. package/coverage/lcov-report/automations/automationUtils.js.html +57 -12
  76. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  77. package/coverage/lcov-report/automations/index.html +15 -15
  78. package/coverage/lcov-report/automations/index.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/index.html +1 -1
  86. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  105. package/coverage/lcov-report/constants/index.html +1 -1
  106. package/coverage/lcov-report/constants/index.js.html +1 -1
  107. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  108. package/coverage/lcov-report/constants/screens.js.html +1 -1
  109. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  110. package/coverage/lcov-report/db/index.html +1 -1
  111. package/coverage/lcov-report/db/index.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  116. package/coverage/lcov-report/db/newid.js.html +1 -1
  117. package/coverage/lcov-report/db/utils.js.html +1 -1
  118. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  119. package/coverage/lcov-report/events/index.html +1 -1
  120. package/coverage/lcov-report/events/index.js.html +1 -1
  121. package/coverage/lcov-report/events/utils.js.html +1 -1
  122. package/coverage/lcov-report/index.html +35 -35
  123. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  124. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  125. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  126. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  127. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  128. package/coverage/lcov-report/middleware/index.html +1 -1
  129. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  130. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  131. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  132. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  133. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  134. package/coverage/lcov-report/threads/automation.js.html +2 -2
  135. package/coverage/lcov-report/threads/index.html +1 -1
  136. package/coverage/lcov-report/threads/query.js.html +1 -1
  137. package/coverage/lcov-report/threads/utils.js.html +1 -1
  138. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  139. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  140. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  141. package/coverage/lcov-report/utilities/global.js.html +1 -1
  142. package/coverage/lcov-report/utilities/index.html +1 -1
  143. package/coverage/lcov-report/utilities/index.js.html +1 -1
  144. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  145. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  146. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  147. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  150. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  151. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  152. package/coverage/lcov-report/utilities/security.js.html +1 -1
  153. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  156. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  157. package/coverage/lcov-report/utilities/users.js.html +1 -1
  158. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  159. package/coverage/lcov.info +377 -329
  160. package/dist/api/controllers/application.js +16 -14
  161. package/dist/api/controllers/dev.js +15 -0
  162. package/dist/api/controllers/row/internalSearch.js +22 -1
  163. package/dist/automations/automationUtils.js +16 -4
  164. package/dist/environment.js +2 -1
  165. package/dist/package.json +6 -6
  166. package/dist/threads/automation.js +1 -1
  167. package/dist/tsconfig.build.tsbuildinfo +1 -1
  168. package/package.json +7 -7
  169. package/src/api/controllers/application.ts +16 -13
  170. package/src/api/controllers/dev.js +18 -0
  171. package/src/api/controllers/row/internalSearch.js +28 -0
  172. package/src/automations/automationUtils.js +19 -4
  173. package/src/environment.js +3 -1
  174. package/src/threads/automation.js +1 -1
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.212-alpha.1",
4
+ "version": "1.0.212-alpha.12",
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.0.212-alpha.1",
81
- "@budibase/client": "^1.0.212-alpha.1",
82
- "@budibase/pro": "1.0.212-alpha.0",
83
- "@budibase/string-templates": "^1.0.212-alpha.1",
84
- "@budibase/types": "^1.0.212-alpha.1",
80
+ "@budibase/backend-core": "^1.0.212-alpha.12",
81
+ "@budibase/client": "^1.0.212-alpha.12",
82
+ "@budibase/pro": "1.0.212-alpha.11",
83
+ "@budibase/string-templates": "^1.0.212-alpha.12",
84
+ "@budibase/types": "^1.0.212-alpha.12",
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": "3bad427a96f80004a7d5fa8f08669cc1d41ff57a"
198
+ "gitHead": "2a15345a18bfeb1764cc1cd15a67fa3f881f8d9d"
199
199
  }
@@ -49,6 +49,7 @@ const {
49
49
  getAppDB,
50
50
  getProdAppDB,
51
51
  updateAppId,
52
+ doInAppContext,
52
53
  } = require("@budibase/backend-core/context")
53
54
  import { getUniqueRows } from "../../utilities/usageQuota/rows"
54
55
  import { quotas } from "@budibase/pro"
@@ -548,22 +549,24 @@ export const sync = async (ctx: any, next: any) => {
548
549
  }
549
550
 
550
551
  const updateAppPackage = async (appPackage: any, appId: any) => {
551
- const db = getAppDB()
552
- const application = await db.get(DocumentTypes.APP_METADATA)
552
+ return doInAppContext(appId, async () => {
553
+ const db = getAppDB()
554
+ const application = await db.get(DocumentTypes.APP_METADATA)
553
555
 
554
- const newAppPackage = { ...application, ...appPackage }
555
- if (appPackage._rev !== application._rev) {
556
- newAppPackage._rev = application._rev
557
- }
556
+ const newAppPackage = { ...application, ...appPackage }
557
+ if (appPackage._rev !== application._rev) {
558
+ newAppPackage._rev = application._rev
559
+ }
558
560
 
559
- // the locked by property is attached by server but generated from
560
- // Redis, shouldn't ever store it
561
- delete newAppPackage.lockedBy
561
+ // the locked by property is attached by server but generated from
562
+ // Redis, shouldn't ever store it
563
+ delete newAppPackage.lockedBy
562
564
 
563
- await db.put(newAppPackage)
564
- // remove any cached metadata, so that it will be updated
565
- await appCache.invalidateAppMetadata(appId)
566
- return newAppPackage
565
+ await db.put(newAppPackage)
566
+ // remove any cached metadata, so that it will be updated
567
+ await appCache.invalidateAppMetadata(appId)
568
+ return newAppPackage
569
+ })
567
570
  }
568
571
 
569
572
  const createEmptyAppPackage = async (ctx: any, app: any) => {
@@ -140,6 +140,23 @@ exports.getBudibaseVersion = async ctx => {
140
140
 
141
141
  // TODO: remove as part of beta program
142
142
  exports.checkBetaAccess = async ctx => {
143
+ // go to the cloud platform if running self hosted
144
+ if (env.SELF_HOSTED || !env.MULTI_TENANCY) {
145
+ let baseUrl = ""
146
+ if (env.ACCOUNT_PORTAL_URL) {
147
+ baseUrl = env.ACCOUNT_PORTAL_URL.replace("account.", "")
148
+ } else {
149
+ baseUrl = "https://budibase.app"
150
+ }
151
+
152
+ const response = await fetch(
153
+ `${baseUrl}/api/beta/access?email=${ctx.query.email}`
154
+ )
155
+ const json = await response.json()
156
+ ctx.body = json
157
+ return
158
+ }
159
+
143
160
  const userToCheck = ctx.query.email
144
161
  const BETA_USERS_DB = "app_bb_f9b77d06b9db4e3ca185476ab87a2364"
145
162
  const BETA_USERS_TABLE = "ta_8c2c6df1c03f49cfb6340e85e066dd15"
@@ -163,6 +180,7 @@ exports.checkBetaAccess = async ctx => {
163
180
  }
164
181
  ctx.body = { access }
165
182
  } catch (err) {
183
+ console.error(err)
166
184
  ctx.body = { access: false }
167
185
  }
168
186
  }
@@ -17,6 +17,7 @@ class QueryBuilder {
17
17
  notEqual: {},
18
18
  empty: {},
19
19
  notEmpty: {},
20
+ oneOf: {},
20
21
  ...base,
21
22
  }
22
23
  this.limit = 50
@@ -112,6 +113,11 @@ class QueryBuilder {
112
113
  return this
113
114
  }
114
115
 
116
+ addOneOf(key, value) {
117
+ this.query.oneOf[key] = value
118
+ return this
119
+ }
120
+
115
121
  /**
116
122
  * Preprocesses a value before going into a lucene search.
117
123
  * Transforms strings to lowercase and wraps strings and bools in quotes.
@@ -220,6 +226,28 @@ class QueryBuilder {
220
226
  if (this.query.notEmpty) {
221
227
  build(this.query.notEmpty, key => `${key}:["" TO *]`)
222
228
  }
229
+ if (this.query.oneOf) {
230
+ build(this.query.oneOf, (key, value) => {
231
+ if (!Array.isArray(value)) {
232
+ if (typeof value === "string") {
233
+ value = value.split(",")
234
+ } else {
235
+ return ""
236
+ }
237
+ }
238
+ let orStatement = `${builder.preprocess(
239
+ value[0],
240
+ allPreProcessingOpts
241
+ )}`
242
+ for (let i = 1; i < value.length; i++) {
243
+ orStatement += ` OR ${builder.preprocess(
244
+ value[i],
245
+ allPreProcessingOpts
246
+ )}`
247
+ }
248
+ return `${key}:(${orStatement})`
249
+ })
250
+ }
223
251
  return query
224
252
  }
225
253
 
@@ -1,5 +1,10 @@
1
1
  const { getTable } = require("../api/controllers/table/utils")
2
- const { findHBSBlocks } = require("@budibase/string-templates")
2
+ const {
3
+ findHBSBlocks,
4
+ decodeJSBinding,
5
+ isJSBinding,
6
+ encodeJSBinding,
7
+ } = require("@budibase/string-templates")
3
8
 
4
9
  /**
5
10
  * When values are input to the system generally they will be of type string as this is required for template strings.
@@ -77,11 +82,21 @@ exports.getError = err => {
77
82
  }
78
83
 
79
84
  exports.substituteLoopStep = (hbsString, substitute) => {
80
- let blocks = findHBSBlocks(hbsString)
85
+ let blocks = []
86
+ let checkForJS = isJSBinding(hbsString)
87
+ if (checkForJS) {
88
+ hbsString = decodeJSBinding(hbsString)
89
+ blocks.push(hbsString)
90
+ } else {
91
+ blocks = findHBSBlocks(hbsString)
92
+ }
81
93
  for (let block of blocks) {
82
- let oldBlock = block
83
94
  block = block.replace(/loop/, substitute)
84
- hbsString = hbsString.replace(new RegExp(oldBlock, "g"), block)
95
+ if (checkForJS) {
96
+ hbsString = encodeJSBinding(block)
97
+ } else {
98
+ hbsString = block
99
+ }
85
100
  }
86
101
 
87
102
  return hbsString
@@ -67,7 +67,9 @@ module.exports = {
67
67
  SALT_ROUNDS: process.env.SALT_ROUNDS,
68
68
  LOGGER: process.env.LOGGER,
69
69
  LOG_LEVEL: process.env.LOG_LEVEL,
70
- AUTOMATION_MAX_ITERATIONS: process.env.AUTOMATION_MAX_ITERATIONS,
70
+ ACCOUNT_PORTAL_URL: process.env.ACCOUNT_PORTAL_URL,
71
+ AUTOMATION_MAX_ITERATIONS:
72
+ parseIntSafe(process.env.AUTOMATION_MAX_ITERATIONS) || 200,
71
73
  SENDGRID_API_KEY: process.env.SENDGRID_API_KEY,
72
74
  DYNAMO_ENDPOINT: process.env.DYNAMO_ENDPOINT,
73
75
  QUERY_THREAD_TIMEOUT: parseIntSafe(process.env.QUERY_THREAD_TIMEOUT),
@@ -218,7 +218,7 @@ class Orchestrator {
218
218
  }
219
219
  }
220
220
  if (
221
- index === parseInt(env.AUTOMATION_MAX_ITERATIONS) ||
221
+ index === env.AUTOMATION_MAX_ITERATION ||
222
222
  index === parseInt(loopStep.inputs.iterations)
223
223
  ) {
224
224
  this.updateContextAndOutput(loopStepNumber, step, tempOutput, {