@budibase/server 0.9.190-alpha.0 → 0.9.190-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 (177) hide show
  1. package/builder/assets/{index.43f4c913.js → index.b5be8653.js} +127 -127
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +2 -2
  4. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  5. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/application.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/hosting.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/permission.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/utils.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/application.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/index.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  76. package/coverage/lcov-report/automations/actions.js.html +1 -1
  77. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  78. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  79. package/coverage/lcov-report/automations/index.html +1 -1
  80. package/coverage/lcov-report/automations/index.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/index.html +1 -1
  90. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  108. package/coverage/lcov-report/automations/utils.js.html +1 -1
  109. package/coverage/lcov-report/constants/index.html +1 -1
  110. package/coverage/lcov-report/constants/index.js.html +1 -1
  111. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  112. package/coverage/lcov-report/constants/screens.js.html +1 -1
  113. package/coverage/lcov-report/db/client.js.html +1 -1
  114. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  115. package/coverage/lcov-report/db/index.html +1 -1
  116. package/coverage/lcov-report/db/index.js.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  118. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  119. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  120. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  121. package/coverage/lcov-report/db/newid.js.html +1 -1
  122. package/coverage/lcov-report/db/utils.js.html +1 -1
  123. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  124. package/coverage/lcov-report/events/index.html +1 -1
  125. package/coverage/lcov-report/events/index.js.html +1 -1
  126. package/coverage/lcov-report/events/utils.js.html +1 -1
  127. package/coverage/lcov-report/index.html +1 -1
  128. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  129. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  130. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  131. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  132. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  133. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  134. package/coverage/lcov-report/middleware/index.html +1 -1
  135. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  136. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  137. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  138. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  139. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  140. package/coverage/lcov-report/threads/automation.js.html +1 -1
  141. package/coverage/lcov-report/threads/index.html +1 -1
  142. package/coverage/lcov-report/threads/index.js.html +1 -1
  143. package/coverage/lcov-report/threads/query.js.html +1 -1
  144. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  145. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  146. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  147. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  148. package/coverage/lcov-report/utilities/global.js.html +1 -1
  149. package/coverage/lcov-report/utilities/index.html +1 -1
  150. package/coverage/lcov-report/utilities/index.js.html +1 -1
  151. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  152. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  153. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  154. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  155. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  156. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  157. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  158. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  159. package/coverage/lcov-report/utilities/security.js.html +1 -1
  160. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  161. package/coverage/lcov-report/utilities/users.js.html +1 -1
  162. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  163. package/dist/api/controllers/row/ExternalRequest.js +41 -20
  164. package/dist/integrations/base/sql.js +29 -11
  165. package/dist/integrations/index.js +1 -1
  166. package/dist/integrations/mysql.js +2 -1
  167. package/dist/integrations/oracle.js +5 -3
  168. package/dist/integrations/utils.js +1 -1
  169. package/dist/package.json +4 -4
  170. package/dist/tsconfig.tsbuildinfo +1 -1
  171. package/package.json +5 -5
  172. package/src/api/controllers/row/ExternalRequest.ts +44 -20
  173. package/src/integrations/base/sql.ts +30 -11
  174. package/src/integrations/index.ts +2 -2
  175. package/src/integrations/mysql.ts +3 -1
  176. package/src/integrations/oracle.ts +21 -8
  177. package/src/integrations/utils.ts +6 -2
@@ -24,6 +24,9 @@ function parse(input) {
24
24
  if (Array.isArray(input)) {
25
25
  return JSON.stringify(input);
26
26
  }
27
+ if (input == undefined) {
28
+ return null;
29
+ }
27
30
  if (typeof input !== "string") {
28
31
  return input;
29
32
  }
@@ -45,6 +48,9 @@ function parseBody(body) {
45
48
  return body;
46
49
  }
47
50
  function parseFilters(filters) {
51
+ if (!filters) {
52
+ return {};
53
+ }
48
54
  for (let [key, value] of Object.entries(filters)) {
49
55
  let parsed;
50
56
  if (typeof value === "object") {
@@ -144,6 +150,23 @@ class InternalBuilder {
144
150
  }
145
151
  return query;
146
152
  }
153
+ addSorting(query, json) {
154
+ var _a;
155
+ let { sort, paginate } = json;
156
+ if (!sort) {
157
+ return query;
158
+ }
159
+ const table = (_a = json.meta) === null || _a === void 0 ? void 0 : _a.table;
160
+ for (let [key, value] of Object.entries(sort)) {
161
+ const direction = value === datasource_1.SortDirection.ASCENDING ? "asc" : "desc";
162
+ query = query.orderBy(`${table === null || table === void 0 ? void 0 : table.name}.${key}`, direction);
163
+ }
164
+ if (this.client === utils_1.SqlClients.MS_SQL && !sort && (paginate === null || paginate === void 0 ? void 0 : paginate.limit)) {
165
+ // @ts-ignore
166
+ query = query.orderBy(`${table === null || table === void 0 ? void 0 : table.name}.${table === null || table === void 0 ? void 0 : table.primary[0]}`);
167
+ }
168
+ return query;
169
+ }
147
170
  addRelationships(knex, query, fields, fromTable, relationships) {
148
171
  if (!relationships) {
149
172
  return query;
@@ -194,7 +217,6 @@ class InternalBuilder {
194
217
  return query.insert(parsedBody);
195
218
  }
196
219
  read(knex, json, limit) {
197
- var _a, _b;
198
220
  let { endpoint, resource, filters, sort, paginate, relationships } = json;
199
221
  const tableName = endpoint.entityId;
200
222
  // select all if not specified
@@ -226,22 +248,18 @@ class InternalBuilder {
226
248
  if (foundOffset) {
227
249
  query = query.offset(foundOffset);
228
250
  }
229
- if (sort) {
230
- for (let [key, value] of Object.entries(sort)) {
231
- const direction = value === datasource_1.SortDirection.ASCENDING ? "asc" : "desc";
232
- query = query.orderBy(key, direction);
233
- }
234
- }
235
- if (this.client === utils_1.SqlClients.MS_SQL && !sort && (paginate === null || paginate === void 0 ? void 0 : paginate.limit)) {
236
- // @ts-ignore
237
- query = query.orderBy((_b = (_a = json.meta) === null || _a === void 0 ? void 0 : _a.table) === null || _b === void 0 ? void 0 : _b.primary[0]);
238
- }
239
251
  query = this.addFilters(tableName, query, filters);
252
+ // add sorting to pre-query
253
+ query = this.addSorting(query, json);
240
254
  // @ts-ignore
241
255
  let preQuery = knex({
242
256
  // @ts-ignore
243
257
  [tableName]: query,
244
258
  }).select(selectStatement);
259
+ // have to add after as well (this breaks MS-SQL)
260
+ if (this.client !== utils_1.SqlClients.MS_SQL) {
261
+ preQuery = this.addSorting(preQuery, json);
262
+ }
245
263
  // handle joins
246
264
  return this.addRelationships(knex, preQuery, selectStatement, tableName, relationships);
247
265
  }
@@ -38,7 +38,7 @@ const INTEGRATIONS = {
38
38
  [SourceNames.REST]: rest.integration,
39
39
  };
40
40
  // optionally add oracle integration if the oracle binary can be installed
41
- if (!(process.arch === 'arm64' && process.platform === 'darwin')) {
41
+ if (!(process.arch === "arm64" && process.platform === "darwin")) {
42
42
  const oracle = require("./oracle");
43
43
  DEFINITIONS[SourceNames.ORACLE] = oracle.schema;
44
44
  INTEGRATIONS[SourceNames.ORACLE] = oracle.integration;
@@ -102,7 +102,8 @@ var MySQLModule;
102
102
  this.client.connect();
103
103
  // get the tables first
104
104
  const tablesResp = yield internalQuery(this.client, { sql: "SHOW TABLES;" }, false);
105
- const tableNames = tablesResp.map((obj) => obj[`Tables_in_${database.toLowerCase()}`]);
105
+ const tableNames = tablesResp.map((obj) => obj[`Tables_in_${database}`] ||
106
+ obj[`Tables_in_${database.toLowerCase()}`]);
106
107
  for (let tableName of tableNames) {
107
108
  const primaryKeys = [];
108
109
  const schema = {};
@@ -269,7 +269,8 @@ var OracleModule;
269
269
  addReturning(query, bindings, returnColumn) {
270
270
  if (bindings instanceof Array) {
271
271
  bindings.push({ dir: oracledb_1.default.BIND_OUT });
272
- query.sql = query.sql + ` returning \"${returnColumn}\" into :${bindings.length}`;
272
+ query.sql =
273
+ query.sql + ` returning \"${returnColumn}\" into :${bindings.length}`;
273
274
  }
274
275
  }
275
276
  internalQuery(query, returnColum, operation) {
@@ -279,7 +280,8 @@ var OracleModule;
279
280
  connection = yield this.getConnection();
280
281
  const options = { autoCommit: true };
281
282
  const bindings = query.bindings || [];
282
- if (returnColum && (operation === datasource_1.Operation.CREATE || operation === datasource_1.Operation.UPDATE)) {
283
+ if (returnColum &&
284
+ (operation === datasource_1.Operation.CREATE || operation === datasource_1.Operation.UPDATE)) {
283
285
  this.addReturning(query, bindings, returnColum);
284
286
  }
285
287
  const result = yield connection.execute(query.sql, bindings, options);
@@ -332,7 +334,7 @@ var OracleModule;
332
334
  const primaryKeys = json.meta.table.primary;
333
335
  const primaryKey = primaryKeys ? primaryKeys[0] : undefined;
334
336
  const queryFn = (query, operation) => this.internalQuery(query, primaryKey, operation);
335
- const processFn = (response) => response.rows ? response.rows : [];
337
+ const processFn = (response) => (response.rows ? response.rows : []);
336
338
  const output = yield this.queryWithReturning(json, queryFn, processFn);
337
339
  return output;
338
340
  });
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.finaliseExternalTables = exports.isIsoDateString = exports.isSQL = exports.getSqlQuery = exports.convertSqlType = exports.breakRowIdField = exports.convertRowId = exports.isRowId = exports.generateRowIdField = exports.breakExternalTableId = exports.buildExternalTableId = exports.isExternalTable = exports.SqlClients = void 0;
4
4
  const datasource_1 = require("../definitions/datasource");
5
5
  const { DocumentTypes, SEPARATOR } = require("../db/utils");
6
- const { FieldTypes, BuildSchemaErrors, InvalidColumns } = require("../constants");
6
+ const { FieldTypes, BuildSchemaErrors, InvalidColumns, } = require("../constants");
7
7
  const DOUBLE_SEPARATOR = `${SEPARATOR}${SEPARATOR}`;
8
8
  const ROW_ID_REGEX = /^\[.*]$/g;
9
9
  const SQL_TYPE_MAP = {
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "0.9.189",
4
+ "version": "0.9.190-alpha.0",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.js",
7
7
  "repository": {
@@ -68,11 +68,11 @@
68
68
  "author": "Budibase",
69
69
  "license": "GPL-3.0",
70
70
  "dependencies": {
71
+ "@budibase/auth": "^0.9.190-alpha.0",
72
+ "@budibase/client": "^0.9.190-alpha.0",
73
+ "@budibase/string-templates": "^0.9.190-alpha.0",
71
74
  "@bull-board/api": "^3.7.0",
72
75
  "@bull-board/koa": "^3.7.0",
73
- "@budibase/auth": "^0.9.189",
74
- "@budibase/client": "^0.9.189",
75
- "@budibase/string-templates": "^0.9.189",
76
76
  "@elastic/elasticsearch": "7.10.0",
77
77
  "@koa/router": "8.0.0",
78
78
  "@sendgrid/mail": "7.1.1",