@budibase/server 1.0.219-alpha.9 → 1.0.220-alpha.1

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 (191) hide show
  1. package/.yarnrc +1 -0
  2. package/builder/assets/{index.40715052.js → index.b4622e74.js} +153 -152
  3. package/builder/index.html +1 -1
  4. package/coverage/clover.xml +283 -262
  5. package/coverage/coverage-final.json +5 -5
  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 +1 -1
  14. package/coverage/lcov-report/api/controllers/index.html +1 -1
  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 +15 -15
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +78 -24
  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 +5 -2
  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 +1 -1
  76. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  77. package/coverage/lcov-report/automations/index.html +1 -1
  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 +2 -2
  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 +30 -30
  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 +1 -1
  135. package/coverage/lcov-report/threads/index.html +14 -14
  136. package/coverage/lcov-report/threads/query.js.html +40 -25
  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 +16 -16
  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 +57 -9
  159. package/coverage/lcov.info +501 -462
  160. package/dist/api/controllers/public/applications.js +1 -1
  161. package/dist/api/controllers/public/utils.js +8 -1
  162. package/dist/api/controllers/query/index.js +7 -4
  163. package/dist/api/controllers/row/internalSearch.js +26 -10
  164. package/dist/api/routes/public/rows.js +7 -2
  165. package/dist/api/routes/utils/validators.js +1 -0
  166. package/dist/app.js +20 -0
  167. package/dist/automations/steps/executeQuery.js +1 -1
  168. package/dist/environment.js +2 -0
  169. package/dist/integrations/base/sql.js +4 -2
  170. package/dist/package.json +6 -6
  171. package/dist/threads/query.js +20 -13
  172. package/dist/tsconfig.build.tsbuildinfo +1 -1
  173. package/dist/utilities/workerRequests.js +8 -0
  174. package/package.json +7 -7
  175. package/scripts/dev/manage.js +2 -0
  176. package/specs/openapi.json +9 -5
  177. package/specs/openapi.yaml +10 -4
  178. package/src/api/controllers/public/applications.ts +2 -2
  179. package/src/api/controllers/public/utils.ts +8 -1
  180. package/src/api/controllers/query/index.ts +13 -5
  181. package/src/api/controllers/row/internalSearch.js +27 -9
  182. package/src/api/routes/public/rows.ts +7 -2
  183. package/src/api/routes/tests/query.spec.js +0 -1
  184. package/src/api/routes/utils/validators.js +1 -0
  185. package/src/app.ts +30 -1
  186. package/src/automations/steps/executeQuery.js +1 -1
  187. package/src/definitions/openapi.ts +471 -469
  188. package/src/environment.js +2 -0
  189. package/src/integrations/base/sql.ts +6 -2
  190. package/src/threads/query.js +20 -15
  191. package/src/utilities/workerRequests.js +16 -0
@@ -74,6 +74,8 @@ module.exports = {
74
74
  DYNAMO_ENDPOINT: process.env.DYNAMO_ENDPOINT,
75
75
  QUERY_THREAD_TIMEOUT: parseIntSafe(process.env.QUERY_THREAD_TIMEOUT),
76
76
  SQL_MAX_ROWS: process.env.SQL_MAX_ROWS,
77
+ BB_ADMIN_USER_EMAIL: process.env.BB_ADMIN_USER_EMAIL,
78
+ BB_ADMIN_USER_PASSWORD: process.env.BB_ADMIN_USER_PASSWORD,
77
79
  // flags
78
80
  ALLOW_DEV_AUTOMATIONS: process.env.ALLOW_DEV_AUTOMATIONS,
79
81
  DISABLE_THREADING: process.env.DISABLE_THREADING,
@@ -99,8 +99,12 @@ function generateSelectStatement(
99
99
  const fieldNames = field.split(/\./g)
100
100
  const tableName = fieldNames[0]
101
101
  const columnName = fieldNames[1]
102
- if (columnName && knex.client.config.client === SqlClients.POSTGRES) {
103
- const externalType = schema?.[columnName].externalType
102
+ if (
103
+ columnName &&
104
+ schema?.[columnName] &&
105
+ knex.client.config.client === SqlClients.POSTGRES
106
+ ) {
107
+ const externalType = schema[columnName].externalType
104
108
  if (externalType?.includes("money")) {
105
109
  return knex.raw(
106
110
  `"${tableName}"."${columnName}"::money::numeric as "${field}"`
@@ -10,6 +10,7 @@ const {
10
10
  } = require("@budibase/backend-core/auth")
11
11
  const { user: userCache } = require("@budibase/backend-core/cache")
12
12
  const { getGlobalIDFromUserMetadataID } = require("../db/utils")
13
+ const { cloneDeep } = require("lodash/fp")
13
14
 
14
15
  const { isSQL } = require("../integrations/utils")
15
16
  const {
@@ -41,20 +42,22 @@ class QueryRunner {
41
42
  async execute() {
42
43
  let { datasource, fields, queryVerb, transformer } = this
43
44
 
44
- const Integration = integrations[datasource.source]
45
+ let datasourceClone = cloneDeep(datasource)
46
+ let fieldsClone = cloneDeep(fields)
47
+
48
+ const Integration = integrations[datasourceClone.source]
45
49
  if (!Integration) {
46
50
  throw "Integration type does not exist."
47
51
  }
48
52
 
49
- if (datasource.config.authConfigs) {
50
- datasource.config.authConfigs = datasource.config.authConfigs.map(
51
- config => {
53
+ if (datasourceClone.config.authConfigs) {
54
+ datasourceClone.config.authConfigs =
55
+ datasourceClone.config.authConfigs.map(config => {
52
56
  return enrichQueryFields(config, this.ctx)
53
- }
54
- )
57
+ })
55
58
  }
56
59
 
57
- const integration = new Integration(datasource.config)
60
+ const integration = new Integration(datasourceClone.config)
58
61
 
59
62
  // pre-query, make sure datasource variables are added to parameters
60
63
  const parameters = await this.addDatasourceVariables()
@@ -65,19 +68,19 @@ class QueryRunner {
65
68
  const enrichedContext = { ...enrichedParameters, ...this.ctx }
66
69
 
67
70
  // Parse global headers
68
- if (datasource.config.defaultHeaders) {
69
- datasource.config.defaultHeaders = enrichQueryFields(
70
- datasource.config.defaultHeaders,
71
+ if (datasourceClone.config.defaultHeaders) {
72
+ datasourceClone.config.defaultHeaders = enrichQueryFields(
73
+ datasourceClone.config.defaultHeaders,
71
74
  enrichedContext
72
75
  )
73
76
  }
74
77
 
75
78
  let query
76
79
  // handle SQL injections by interpolating the variables
77
- if (isSQL(datasource)) {
78
- query = interpolateSQL(fields, enrichedParameters, integration)
80
+ if (isSQL(datasourceClone)) {
81
+ query = interpolateSQL(fieldsClone, enrichedParameters, integration)
79
82
  } else {
80
- query = enrichQueryFields(fields, enrichedContext)
83
+ query = enrichQueryFields(fieldsClone, enrichedContext)
81
84
  }
82
85
 
83
86
  // Add pagination values for REST queries
@@ -116,9 +119,10 @@ class QueryRunner {
116
119
  await this.refreshOAuth2(this.ctx)
117
120
  // Attempt to refresh the access token from the provider
118
121
  this.hasRefreshedOAuth = true
122
+ } else {
123
+ this.hasRerun = true
119
124
  }
120
125
 
121
- this.hasRerun = true
122
126
  await threadUtils.invalidateDynamicVariables(this.cachedVariables)
123
127
  return this.execute()
124
128
  }
@@ -187,8 +191,9 @@ class QueryRunner {
187
191
  } else {
188
192
  // In this event the user may have oAuth issues that
189
193
  // could require re-authenticating with their provider.
194
+ let errorMessage = resp.err.data ? resp.err.data : resp.err.toString()
190
195
  throw new Error(
191
- "OAuth2 access token could not be refreshed: " + resp.err.toString()
196
+ "OAuth2 access token could not be refreshed: " + errorMessage
192
197
  )
193
198
  }
194
199
 
@@ -137,3 +137,19 @@ exports.readGlobalUser = async ctx => {
137
137
  )
138
138
  return checkResponse(response, "get user", { ctx })
139
139
  }
140
+
141
+ exports.createAdminUser = async (email, password, tenantId) => {
142
+ const response = await fetch(
143
+ checkSlashesInUrl(env.WORKER_URL + "/api/global/users/init"),
144
+ request(null, { method: "POST", body: { email, password, tenantId } })
145
+ )
146
+ return checkResponse(response, "create admin user")
147
+ }
148
+
149
+ exports.getChecklist = async () => {
150
+ const response = await fetch(
151
+ checkSlashesInUrl(env.WORKER_URL + "/api/global/configs/checklist"),
152
+ request(null, { method: "GET" })
153
+ )
154
+ return checkResponse(response, "get checklist")
155
+ }