@budibase/server 1.0.44-alpha.2 → 1.0.44-alpha.6

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 (171) hide show
  1. package/builder/assets/{index.295bdaa8.js → index.03b2f130.js} +68 -67
  2. package/builder/assets/{index.95f2c619.css → index.deca2e9d.css} +1 -1
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +2 -2
  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/hosting.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/index.html +1 -1
  17. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/metadata.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 +1 -1
  27. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  47. package/coverage/lcov-report/api/index.html +1 -1
  48. package/coverage/lcov-report/api/index.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/index.html +1 -1
  62. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  79. package/coverage/lcov-report/automations/actions.js.html +1 -1
  80. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  81. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  82. package/coverage/lcov-report/automations/index.html +1 -1
  83. package/coverage/lcov-report/automations/index.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/index.html +1 -1
  93. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  111. package/coverage/lcov-report/automations/utils.js.html +1 -1
  112. package/coverage/lcov-report/constants/index.html +1 -1
  113. package/coverage/lcov-report/constants/index.js.html +1 -1
  114. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  115. package/coverage/lcov-report/constants/screens.js.html +1 -1
  116. package/coverage/lcov-report/db/client.js.html +1 -1
  117. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  118. package/coverage/lcov-report/db/index.html +1 -1
  119. package/coverage/lcov-report/db/index.js.html +1 -1
  120. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  121. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  124. package/coverage/lcov-report/db/newid.js.html +1 -1
  125. package/coverage/lcov-report/db/utils.js.html +1 -1
  126. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  127. package/coverage/lcov-report/events/index.html +1 -1
  128. package/coverage/lcov-report/events/index.js.html +1 -1
  129. package/coverage/lcov-report/events/utils.js.html +1 -1
  130. package/coverage/lcov-report/index.html +1 -1
  131. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  132. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  133. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  134. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  135. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  136. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  137. package/coverage/lcov-report/middleware/index.html +1 -1
  138. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  139. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  140. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  141. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  142. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  143. package/coverage/lcov-report/threads/automation.js.html +1 -1
  144. package/coverage/lcov-report/threads/index.html +1 -1
  145. package/coverage/lcov-report/threads/index.js.html +1 -1
  146. package/coverage/lcov-report/threads/query.js.html +1 -1
  147. package/coverage/lcov-report/threads/utils.js.html +1 -1
  148. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  149. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  150. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  151. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  152. package/coverage/lcov-report/utilities/global.js.html +1 -1
  153. package/coverage/lcov-report/utilities/index.html +1 -1
  154. package/coverage/lcov-report/utilities/index.js.html +1 -1
  155. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  156. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  157. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  158. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  159. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  160. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  161. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  162. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  163. package/coverage/lcov-report/utilities/security.js.html +1 -1
  164. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  165. package/coverage/lcov-report/utilities/users.js.html +1 -1
  166. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  167. package/dist/integrations/utils.js +47 -7
  168. package/dist/package.json +4 -4
  169. package/dist/tsconfig.tsbuildinfo +1 -1
  170. package/package.json +5 -5
  171. package/src/integrations/utils.ts +50 -7
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.44-alpha.2",
4
+ "version": "1.0.44-alpha.6",
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.44-alpha.2",
74
- "@budibase/client": "^1.0.44-alpha.2",
75
- "@budibase/string-templates": "^1.0.44-alpha.2",
73
+ "@budibase/backend-core": "^1.0.44-alpha.6",
74
+ "@budibase/client": "^1.0.44-alpha.6",
75
+ "@budibase/string-templates": "^1.0.44-alpha.6",
76
76
  "@bull-board/api": "^3.7.0",
77
77
  "@bull-board/koa": "^3.7.0",
78
78
  "@elastic/elasticsearch": "7.10.0",
@@ -165,5 +165,5 @@
165
165
  "optionalDependencies": {
166
166
  "oracledb": "^5.3.0"
167
167
  },
168
- "gitHead": "f456fbd68f18fb3c3f859c60b11d4006f399b003"
168
+ "gitHead": "14535e53939ea89889e68f3fe66c0eca15d7c713"
169
169
  }
@@ -143,11 +143,46 @@ export function isIsoDateString(str: string) {
143
143
  return d.toISOString() === str
144
144
  }
145
145
 
146
- // add the existing relationships from the entities if they exist, to prevent them from being overridden
146
+ /**
147
+ * This function will determine whether a column is a relationship and whether it
148
+ * is currently valid. The reason for the validity check is that tables can be deleted
149
+ * outside of Budibase control and if this is the case it will break Budibase relationships.
150
+ * The tableIds is a list passed down from the main finalise tables function, which is
151
+ * based on the tables that have just been fetched. This will only really be used on subsequent
152
+ * fetches to the first one - if the user is periodically refreshing Budibase knowledge of tables.
153
+ * @param column The column to check, to see if it is a valid relationship.
154
+ * @param tableIds The IDs of the tables which currently exist.
155
+ */
156
+ function shouldCopyRelationship(column: { type: string, tableId?: string }, tableIds: [string]) {
157
+ return column.type === FieldTypes.LINK && column.tableId && tableIds.includes(column.tableId)
158
+ }
159
+
160
+ /**
161
+ * Similar function to the shouldCopyRelationship function, but instead this looks for options and boolean
162
+ * types. It is possible to switch a string -> options and a number -> boolean (and vice versus) need to make
163
+ * sure that these get copied over when tables are fetched. Also checks whether they are still valid, if a
164
+ * column has changed type in the external database then copying it over may not be possible.
165
+ * @param column The column to check for options or boolean type.
166
+ * @param fetchedColumn The fetched column to check for the type in the external database.
167
+ */
168
+ function shouldCopySpecialColumn(column: { type: string }, fetchedColumn: { type: string } | undefined) {
169
+ return column.type === FieldTypes.OPTIONS ||
170
+ ((!fetchedColumn || fetchedColumn.type === FieldTypes.NUMBER) && column.type === FieldTypes.BOOLEAN)
171
+ }
172
+
173
+ /**
174
+ * Looks for columns which need to be copied over into the new table definitions, like relationships
175
+ * and options types.
176
+ * @param tableName The name of the table which is being checked.
177
+ * @param table The specific table which is being checked.
178
+ * @param entities All the tables that existed before - the old table definitions.
179
+ * @param tableIds The IDs of the tables which exist now, to check if anything has been removed.
180
+ */
147
181
  function copyExistingPropsOver(
148
182
  tableName: string,
149
183
  table: Table,
150
- entities: { [key: string]: any }
184
+ entities: { [key: string]: any },
185
+ tableIds: [string]
151
186
  ) {
152
187
  if (entities && entities[tableName]) {
153
188
  if (entities[tableName].primaryDisplay) {
@@ -158,11 +193,10 @@ function copyExistingPropsOver(
158
193
  if (!existingTableSchema.hasOwnProperty(key)) {
159
194
  continue
160
195
  }
196
+ const column = existingTableSchema[key]
161
197
  if (
162
- existingTableSchema[key].type === FieldTypes.LINK ||
163
- existingTableSchema[key].type === FieldTypes.OPTIONS ||
164
- ((!table.schema[key] || table.schema[key].type === FieldTypes.NUMBER) &&
165
- existingTableSchema[key].type === FieldTypes.BOOLEAN)
198
+ shouldCopyRelationship(column, tableIds) ||
199
+ shouldCopySpecialColumn(column, table.schema[key])
166
200
  ) {
167
201
  table.schema[key] = existingTableSchema[key]
168
202
  }
@@ -171,6 +205,13 @@ function copyExistingPropsOver(
171
205
  return table
172
206
  }
173
207
 
208
+ /**
209
+ * Look through the final table definitions to see if anything needs to be
210
+ * copied over from the old and if any errors have occurred mark them so
211
+ * that the user can be made aware.
212
+ * @param tables The list of tables that have been retrieved from the external database.
213
+ * @param entities The old list of tables, if there was any to look for definitions in.
214
+ */
174
215
  export function finaliseExternalTables(
175
216
  tables: { [key: string]: any },
176
217
  entities: { [key: string]: any }
@@ -178,6 +219,8 @@ export function finaliseExternalTables(
178
219
  const invalidColumns = Object.values(InvalidColumns)
179
220
  let finalTables: { [key: string]: any } = {}
180
221
  const errors: { [key: string]: string } = {}
222
+ // @ts-ignore
223
+ const tableIds: [string] = Object.values(tables).map(table => table._id)
181
224
  for (let [name, table] of Object.entries(tables)) {
182
225
  const schemaFields = Object.keys(table.schema)
183
226
  // make sure every table has a key
@@ -189,7 +232,7 @@ export function finaliseExternalTables(
189
232
  continue
190
233
  }
191
234
  // make sure all previous props have been added back
192
- finalTables[name] = copyExistingPropsOver(name, table, entities)
235
+ finalTables[name] = copyExistingPropsOver(name, table, entities, tableIds)
193
236
  }
194
237
  // sort the tables by name
195
238
  finalTables = Object.entries(finalTables)