@budibase/server 1.0.80-alpha.3 → 1.0.80
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.
- package/__mocks__/node-fetch.ts +0 -1
- package/builder/assets/index.22a39cc9.js +1352 -0
- package/builder/assets/{index.c57242d4.css → index.c8d1e8f0.css} +2 -2
- package/builder/assets/{vendor.a7c6ad0a.js → vendor.20f80cec.js} +216 -190
- package/builder/index.html +3 -3
- package/coverage/clover.xml +2327 -2390
- package/coverage/coverage-final.json +137 -138
- package/coverage/lcov-report/api/controllers/analytics.js.html +6 -6
- package/coverage/lcov-report/api/controllers/apikeys.js.html +6 -6
- package/coverage/lcov-report/api/controllers/application.js.html +149 -152
- package/coverage/lcov-report/api/controllers/auth.js.html +7 -7
- package/coverage/lcov-report/api/controllers/automation.js.html +21 -21
- package/coverage/lcov-report/api/controllers/backup.js.html +3 -3
- package/coverage/lcov-report/api/controllers/cloud.js.html +11 -11
- package/coverage/lcov-report/api/controllers/component.js.html +5 -5
- package/coverage/lcov-report/api/controllers/datasource.js.html +16 -16
- package/coverage/lcov-report/api/controllers/dev.js.html +19 -19
- package/coverage/lcov-report/api/controllers/index.html +16 -16
- package/coverage/lcov-report/api/controllers/integration.js.html +4 -4
- package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
- package/coverage/lcov-report/api/controllers/metadata.js.html +9 -9
- package/coverage/lcov-report/api/controllers/migrations.js.html +4 -4
- package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.js.html +26 -26
- package/coverage/lcov-report/api/controllers/query/validation.js.html +10 -10
- package/coverage/lcov-report/api/controllers/role.js.html +9 -9
- package/coverage/lcov-report/api/controllers/routing.js.html +9 -9
- package/coverage/lcov-report/api/controllers/row/external.js.html +16 -16
- package/coverage/lcov-report/api/controllers/row/index.html +27 -27
- package/coverage/lcov-report/api/controllers/row/index.js.html +46 -46
- package/coverage/lcov-report/api/controllers/row/internal.js.html +82 -94
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +204 -204
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +24 -24
- package/coverage/lcov-report/api/controllers/row/utils.js.html +29 -29
- package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
- package/coverage/lcov-report/api/controllers/script.js.html +4 -4
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +49 -49
- package/coverage/lcov-report/api/controllers/table/external.js.html +12 -12
- package/coverage/lcov-report/api/controllers/table/index.html +11 -11
- package/coverage/lcov-report/api/controllers/table/index.js.html +44 -47
- package/coverage/lcov-report/api/controllers/table/internal.js.html +50 -50
- package/coverage/lcov-report/api/controllers/table/utils.js.html +80 -80
- package/coverage/lcov-report/api/controllers/templates.js.html +5 -5
- package/coverage/lcov-report/api/controllers/user.js.html +19 -19
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
- package/coverage/lcov-report/api/controllers/view/utils.js.html +12 -12
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
- package/coverage/lcov-report/api/controllers/webhook.js.html +27 -18
- package/coverage/lcov-report/api/index.html +10 -10
- package/coverage/lcov-report/api/index.js.html +28 -37
- package/coverage/lcov-report/api/routes/analytics.js.html +6 -6
- package/coverage/lcov-report/api/routes/apikeys.js.html +8 -8
- package/coverage/lcov-report/api/routes/application.js.html +9 -9
- package/coverage/lcov-report/api/routes/auth.js.html +6 -6
- package/coverage/lcov-report/api/routes/automation.js.html +109 -19
- package/coverage/lcov-report/api/routes/backup.js.html +8 -8
- package/coverage/lcov-report/api/routes/cloud.js.html +8 -8
- package/coverage/lcov-report/api/routes/component.js.html +8 -8
- package/coverage/lcov-report/api/routes/datasource.js.html +156 -18
- package/coverage/lcov-report/api/routes/deploy.js.html +8 -8
- package/coverage/lcov-report/api/routes/dev.js.html +13 -13
- package/coverage/lcov-report/api/routes/index.html +35 -35
- package/coverage/lcov-report/api/routes/index.js.html +32 -38
- package/coverage/lcov-report/api/routes/integration.js.html +8 -8
- package/coverage/lcov-report/api/routes/layout.js.html +8 -8
- package/coverage/lcov-report/api/routes/metadata.js.html +9 -9
- package/coverage/lcov-report/api/routes/migrations.js.html +7 -7
- package/coverage/lcov-report/api/routes/permission.js.html +58 -16
- package/coverage/lcov-report/api/routes/query.js.html +10 -10
- package/coverage/lcov-report/api/routes/role.js.html +78 -15
- package/coverage/lcov-report/api/routes/routing.js.html +8 -8
- package/coverage/lcov-report/api/routes/row.js.html +14 -17
- package/coverage/lcov-report/api/routes/screen.js.html +95 -14
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +13 -13
- package/coverage/lcov-report/api/routes/table.js.html +62 -17
- package/coverage/lcov-report/api/routes/templates.js.html +8 -8
- package/coverage/lcov-report/api/routes/user.js.html +8 -8
- package/coverage/lcov-report/api/routes/view.js.html +10 -10
- package/coverage/lcov-report/api/routes/webhook.js.html +62 -14
- package/coverage/lcov-report/automations/actions.js.html +24 -24
- package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
- package/coverage/lcov-report/automations/bullboard.js.html +16 -16
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +7 -7
- package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
- package/coverage/lcov-report/automations/steps/createRow.js.html +7 -7
- package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
- package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
- package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
- package/coverage/lcov-report/automations/steps/filter.js.html +9 -12
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
- package/coverage/lcov-report/automations/steps/queryRows.js.html +11 -11
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
- package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
- package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
- package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
- package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
- package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
- package/coverage/lcov-report/automations/triggers.js.html +26 -26
- package/coverage/lcov-report/automations/utils.js.html +35 -35
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +28 -40
- package/coverage/lcov-report/constants/layouts.js.html +5 -5
- package/coverage/lcov-report/constants/screens.js.html +4 -4
- package/coverage/lcov-report/db/client.js.html +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
- package/coverage/lcov-report/db/index.html +15 -15
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +21 -21
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +36 -36
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +30 -30
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +87 -123
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +8 -8
- package/coverage/lcov-report/events/utils.js.html +18 -18
- package/coverage/lcov-report/index.html +74 -89
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +5 -5
- package/coverage/lcov-report/middleware/authorized.js.html +29 -29
- package/coverage/lcov-report/middleware/builder.js.html +16 -16
- package/coverage/lcov-report/middleware/currentapp.js.html +44 -44
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +14 -14
- package/coverage/lcov-report/middleware/resourceId.js.html +29 -29
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +17 -17
- package/coverage/lcov-report/middleware/utils.js.html +4 -4
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +19 -19
- package/coverage/lcov-report/threads/index.js.html +10 -10
- package/coverage/lcov-report/threads/query.js.html +39 -123
- package/coverage/lcov-report/threads/utils.js.html +14 -14
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
- package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
- package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
- package/coverage/lcov-report/utilities/global.js.html +28 -28
- package/coverage/lcov-report/utilities/index.html +18 -18
- package/coverage/lcov-report/utilities/index.js.html +24 -24
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -9
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +60 -60
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +13 -13
- package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
- package/coverage/lcov-report/utilities/security.js.html +8 -8
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +12 -12
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +8 -8
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +5 -5
- package/coverage/lcov-report/utilities/workerRequests.js.html +53 -200
- package/coverage/lcov.info +3233 -3332
- package/dist/api/controllers/application.js +0 -1
- package/dist/api/controllers/row/internal.js +1 -4
- package/dist/api/controllers/table/index.js +1 -2
- package/dist/api/controllers/webhook.js +5 -3
- package/dist/api/index.js +1 -3
- package/dist/api/routes/automation.js +31 -3
- package/dist/api/routes/datasource.js +50 -3
- package/dist/api/routes/index.js +0 -2
- package/dist/api/routes/permission.js +14 -4
- package/dist/api/routes/role.js +19 -3
- package/dist/api/routes/row.js +4 -3
- package/dist/api/routes/screen.js +23 -2
- package/dist/api/routes/table.js +17 -3
- package/dist/api/routes/tests/utilities/index.js +0 -23
- package/dist/api/routes/webhook.js +17 -2
- package/dist/automations/steps/filter.js +2 -2
- package/dist/automations/steps/queryRows.js +1 -1
- package/dist/automations/utils.js +2 -2
- package/dist/constants/index.js +0 -3
- package/dist/db/utils.js +0 -11
- package/dist/environment.js +0 -1
- package/dist/integrations/base/sql.js +1 -16
- package/dist/integrations/base/sqlTable.js +4 -8
- package/dist/integrations/googlesheets.js +0 -3
- package/dist/integrations/microsoftSqlServer.js +43 -60
- package/dist/integrations/mysql.js +0 -3
- package/dist/integrations/oracle.js +19 -14
- package/dist/integrations/postgres.js +28 -34
- package/dist/integrations/utils.js +15 -32
- package/dist/package.json +7 -11
- package/dist/tests/utilities/TestConfiguration.js +8 -25
- package/dist/threads/query.js +8 -33
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/workerRequests.js +15 -50
- package/package.json +8 -12
- package/scripts/integrations/mssql/data/setup.sql +1 -18
- package/scripts/integrations/oracle/oracle.md +2 -2
- package/scripts/integrations/postgres/init.sql +3 -11
- package/scripts/likeCypress.ts +6 -9
- package/scripts/proxy/generateProxyConfig.js +70 -0
- package/src/api/controllers/application.js +0 -1
- package/src/api/controllers/row/ExternalRequest.ts +1 -1
- package/src/api/controllers/row/internal.js +0 -4
- package/src/api/controllers/table/index.js +1 -2
- package/src/api/controllers/webhook.js +6 -3
- package/src/api/index.js +1 -4
- package/src/api/routes/automation.js +33 -3
- package/src/api/routes/datasource.js +52 -6
- package/src/api/routes/index.js +0 -2
- package/src/api/routes/permission.js +18 -4
- package/src/api/routes/role.js +24 -3
- package/src/api/routes/row.js +2 -3
- package/src/api/routes/screen.js +29 -2
- package/src/api/routes/table.js +19 -4
- package/src/api/routes/tests/utilities/index.js +0 -24
- package/src/api/routes/webhook.js +18 -2
- package/src/automations/steps/filter.js +2 -3
- package/src/automations/steps/queryRows.js +1 -1
- package/src/automations/utils.js +2 -2
- package/src/constants/index.js +0 -4
- package/src/db/utils.js +0 -12
- package/src/definitions/common.ts +0 -4
- package/src/definitions/datasource.ts +0 -1
- package/src/environment.js +0 -1
- package/src/integrations/base/datasourcePlus.ts +0 -3
- package/src/integrations/base/sql.ts +1 -16
- package/src/integrations/base/sqlTable.ts +7 -11
- package/src/integrations/googlesheets.ts +2 -5
- package/src/integrations/microsoftSqlServer.ts +61 -86
- package/src/integrations/mysql.ts +0 -4
- package/src/integrations/oracle.ts +35 -27
- package/src/integrations/postgres.ts +26 -33
- package/src/integrations/utils.ts +15 -43
- package/src/tests/utilities/TestConfiguration.js +2 -23
- package/src/threads/query.js +9 -37
- package/src/utilities/workerRequests.js +16 -65
- package/builder/assets/index.f8c92447.js +0 -1288
- package/coverage/lcov-report/api/routes/utils/index.html +0 -111
- package/coverage/lcov-report/api/routes/utils/validators.js.html +0 -737
- package/dist/api/controllers/public/applications.js +0 -94
- package/dist/api/controllers/public/mapping/applications.js +0 -29
- package/dist/api/controllers/public/mapping/index.js +0 -11
- package/dist/api/controllers/public/mapping/queries.js +0 -36
- package/dist/api/controllers/public/mapping/rows.js +0 -24
- package/dist/api/controllers/public/mapping/tables.js +0 -23
- package/dist/api/controllers/public/mapping/types.js +0 -2
- package/dist/api/controllers/public/mapping/users.js +0 -29
- package/dist/api/controllers/public/queries.js +0 -38
- package/dist/api/controllers/public/rows.js +0 -97
- package/dist/api/controllers/public/tables.js +0 -75
- package/dist/api/controllers/public/users.js +0 -95
- package/dist/api/controllers/public/utils.js +0 -49
- package/dist/api/routes/public/applications.js +0 -141
- package/dist/api/routes/public/index.js +0 -101
- package/dist/api/routes/public/middleware/mapper.js +0 -94
- package/dist/api/routes/public/queries.js +0 -77
- package/dist/api/routes/public/rows.js +0 -229
- package/dist/api/routes/public/tables.js +0 -154
- package/dist/api/routes/public/users.js +0 -137
- package/dist/api/routes/public/utils/Endpoint.js +0 -36
- package/dist/api/routes/utils/validators.js +0 -200
- package/dist/definitions/openapi.js +0 -6
- package/specs/generate.js +0 -94
- package/specs/openapi.json +0 -2232
- package/specs/openapi.yaml +0 -1538
- package/specs/parameters.js +0 -59
- package/specs/resources/application.js +0 -101
- package/specs/resources/index.js +0 -24
- package/specs/resources/misc.js +0 -12
- package/specs/resources/query.js +0 -189
- package/specs/resources/row.js +0 -125
- package/specs/resources/table.js +0 -191
- package/specs/resources/user.js +0 -126
- package/specs/resources/utils/Resource.js +0 -26
- package/specs/resources/utils/index.js +0 -11
- package/specs/security.js +0 -7
- package/src/api/controllers/public/applications.ts +0 -74
- package/src/api/controllers/public/mapping/applications.ts +0 -32
- package/src/api/controllers/public/mapping/index.ts +0 -13
- package/src/api/controllers/public/mapping/queries.ts +0 -39
- package/src/api/controllers/public/mapping/rows.ts +0 -31
- package/src/api/controllers/public/mapping/tables.ts +0 -26
- package/src/api/controllers/public/mapping/types.ts +0 -13
- package/src/api/controllers/public/mapping/users.ts +0 -32
- package/src/api/controllers/public/queries.ts +0 -20
- package/src/api/controllers/public/rows.ts +0 -77
- package/src/api/controllers/public/tables.ts +0 -56
- package/src/api/controllers/public/users.ts +0 -82
- package/src/api/controllers/public/utils.ts +0 -38
- package/src/api/routes/public/applications.ts +0 -156
- package/src/api/routes/public/index.ts +0 -118
- package/src/api/routes/public/middleware/mapper.ts +0 -81
- package/src/api/routes/public/queries.ts +0 -81
- package/src/api/routes/public/rows.ts +0 -242
- package/src/api/routes/public/tables.ts +0 -169
- package/src/api/routes/public/tests/compare.spec.js +0 -184
- package/src/api/routes/public/users.ts +0 -144
- package/src/api/routes/public/utils/Endpoint.ts +0 -51
- package/src/api/routes/utils/validators.js +0 -219
- package/src/definitions/openapi.ts +0 -943
|
@@ -87,17 +87,17 @@ function generateSchema(schema, table, tables, oldTable = null) {
|
|
|
87
87
|
return schema;
|
|
88
88
|
}
|
|
89
89
|
function buildCreateTable(knex, table, tables) {
|
|
90
|
-
return knex.createTable(table.name, schema => {
|
|
90
|
+
return knex.schema.createTable(table.name, schema => {
|
|
91
91
|
generateSchema(schema, table, tables);
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
function buildUpdateTable(knex, table, tables, oldTable) {
|
|
95
|
-
return knex.alterTable(table.name, schema => {
|
|
95
|
+
return knex.schema.alterTable(table.name, schema => {
|
|
96
96
|
generateSchema(schema, table, tables, oldTable);
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
function buildDeleteTable(knex, table) {
|
|
100
|
-
return knex.dropTable(table.name);
|
|
100
|
+
return knex.schema.dropTable(table.name);
|
|
101
101
|
}
|
|
102
102
|
class SqlTableQueryBuilder {
|
|
103
103
|
// pass through client to get flavour of SQL
|
|
@@ -115,11 +115,7 @@ class SqlTableQueryBuilder {
|
|
|
115
115
|
return json.endpoint.operation;
|
|
116
116
|
}
|
|
117
117
|
_tableQuery(json) {
|
|
118
|
-
|
|
119
|
-
let client = knex_1.knex({ client: this.sqlClient }).schema;
|
|
120
|
-
if ((_a = json === null || json === void 0 ? void 0 : json.endpoint) === null || _a === void 0 ? void 0 : _a.schema) {
|
|
121
|
-
client = client.withSchema(json.endpoint.schema);
|
|
122
|
-
}
|
|
118
|
+
const client = knex_1.knex({ client: this.sqlClient });
|
|
123
119
|
let query;
|
|
124
120
|
if (!json.table || !json.meta || !json.meta.tables) {
|
|
125
121
|
throw "Cannot execute without table being specified";
|
|
@@ -97,9 +97,6 @@ var GoogleSheetsModule;
|
|
|
97
97
|
const spreadsheetId = this.cleanSpreadsheetUrl(this.config.spreadsheetId);
|
|
98
98
|
this.client = new google_spreadsheet_1.GoogleSpreadsheet(spreadsheetId);
|
|
99
99
|
}
|
|
100
|
-
getBindingIdentifier() {
|
|
101
|
-
return "";
|
|
102
|
-
}
|
|
103
100
|
/**
|
|
104
101
|
* Pull the spreadsheet ID out from a valid google sheets URL
|
|
105
102
|
* @param spreadsheetId - the URL or standard spreadsheetId of the google sheet
|
|
@@ -15,7 +15,6 @@ var MSSQLModule;
|
|
|
15
15
|
(function (MSSQLModule) {
|
|
16
16
|
const sqlServer = require("mssql");
|
|
17
17
|
const Sql = require("./base/sql");
|
|
18
|
-
const DEFAULT_SCHEMA = "dbo";
|
|
19
18
|
const SCHEMA = {
|
|
20
19
|
docs: "https://github.com/tediousjs/node-mssql",
|
|
21
20
|
plus: true,
|
|
@@ -44,10 +43,6 @@ var MSSQLModule;
|
|
|
44
43
|
type: datasource_1.DatasourceFieldTypes.STRING,
|
|
45
44
|
default: "root",
|
|
46
45
|
},
|
|
47
|
-
schema: {
|
|
48
|
-
type: datasource_1.DatasourceFieldTypes.STRING,
|
|
49
|
-
default: DEFAULT_SCHEMA,
|
|
50
|
-
},
|
|
51
46
|
encrypt: {
|
|
52
47
|
type: datasource_1.DatasourceFieldTypes.BOOLEAN,
|
|
53
48
|
default: true,
|
|
@@ -68,10 +63,32 @@ var MSSQLModule;
|
|
|
68
63
|
},
|
|
69
64
|
},
|
|
70
65
|
};
|
|
66
|
+
function internalQuery(client, query, operation = undefined) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
const request = client.request();
|
|
69
|
+
try {
|
|
70
|
+
if (Array.isArray(query.bindings)) {
|
|
71
|
+
let count = 0;
|
|
72
|
+
for (let binding of query.bindings) {
|
|
73
|
+
request.input(`p${count++}`, binding);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// this is a hack to get the inserted ID back,
|
|
77
|
+
// no way to do this with Knex nicely
|
|
78
|
+
const sql = operation === datasource_1.Operation.CREATE
|
|
79
|
+
? `${query.sql}; SELECT SCOPE_IDENTITY() AS id;`
|
|
80
|
+
: query.sql;
|
|
81
|
+
return yield request.query(sql);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
// @ts-ignore
|
|
85
|
+
throw new Error(err);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
71
89
|
class SqlServerIntegration extends Sql {
|
|
72
90
|
constructor(config) {
|
|
73
91
|
super(utils_1.SqlClients.MS_SQL);
|
|
74
|
-
this.index = 0;
|
|
75
92
|
this.tables = {};
|
|
76
93
|
this.schemaErrors = {};
|
|
77
94
|
this.MASTER_TABLES = [
|
|
@@ -92,45 +109,6 @@ var MSSQLModule;
|
|
|
92
109
|
this.pool = new sqlServer.ConnectionPool(clientCfg);
|
|
93
110
|
}
|
|
94
111
|
}
|
|
95
|
-
getBindingIdentifier() {
|
|
96
|
-
return `(@p${this.index++})`;
|
|
97
|
-
}
|
|
98
|
-
connect() {
|
|
99
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
-
try {
|
|
101
|
-
this.client = yield this.pool.connect();
|
|
102
|
-
}
|
|
103
|
-
catch (err) {
|
|
104
|
-
// @ts-ignore
|
|
105
|
-
throw new Error(err);
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
internalQuery(query, operation = undefined) {
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
const client = this.client;
|
|
112
|
-
const request = client.request();
|
|
113
|
-
this.index = 0;
|
|
114
|
-
try {
|
|
115
|
-
if (Array.isArray(query.bindings)) {
|
|
116
|
-
let count = 0;
|
|
117
|
-
for (let binding of query.bindings) {
|
|
118
|
-
request.input(`p${count++}`, binding);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// this is a hack to get the inserted ID back,
|
|
122
|
-
// no way to do this with Knex nicely
|
|
123
|
-
const sql = operation === datasource_1.Operation.CREATE
|
|
124
|
-
? `${query.sql}; SELECT SCOPE_IDENTITY() AS id;`
|
|
125
|
-
: query.sql;
|
|
126
|
-
return yield request.query(sql);
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
// @ts-ignore
|
|
130
|
-
throw new Error(err);
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
112
|
getDefinitionSQL(tableName) {
|
|
135
113
|
return `select *
|
|
136
114
|
from INFORMATION_SCHEMA.COLUMNS
|
|
@@ -156,9 +134,20 @@ var MSSQLModule;
|
|
|
156
134
|
FROM INFORMATION_SCHEMA.COLUMNS
|
|
157
135
|
WHERE TABLE_NAME='${tableName}'`;
|
|
158
136
|
}
|
|
137
|
+
connect() {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
try {
|
|
140
|
+
this.client = yield this.pool.connect();
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
// @ts-ignore
|
|
144
|
+
throw new Error(err);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
159
148
|
runSQL(sql) {
|
|
160
149
|
return __awaiter(this, void 0, void 0, function* () {
|
|
161
|
-
return (yield this.
|
|
150
|
+
return (yield internalQuery(this.client, utils_1.getSqlQuery(sql))).recordset;
|
|
162
151
|
});
|
|
163
152
|
}
|
|
164
153
|
/**
|
|
@@ -169,13 +158,11 @@ var MSSQLModule;
|
|
|
169
158
|
buildSchema(datasourceId, entities) {
|
|
170
159
|
return __awaiter(this, void 0, void 0, function* () {
|
|
171
160
|
yield this.connect();
|
|
172
|
-
let
|
|
173
|
-
if (
|
|
161
|
+
let tableNames = yield this.runSQL(this.TABLES_SQL);
|
|
162
|
+
if (tableNames == null || !Array.isArray(tableNames)) {
|
|
174
163
|
throw "Unable to get list of tables in database";
|
|
175
164
|
}
|
|
176
|
-
|
|
177
|
-
const tableNames = tableInfo
|
|
178
|
-
.filter((record) => record.TABLE_SCHEMA === schema)
|
|
165
|
+
tableNames = tableNames
|
|
179
166
|
.map((record) => record.TABLE_NAME)
|
|
180
167
|
.filter((name) => this.MASTER_TABLES.indexOf(name) === -1);
|
|
181
168
|
const tables = {};
|
|
@@ -220,40 +207,36 @@ var MSSQLModule;
|
|
|
220
207
|
read(query) {
|
|
221
208
|
return __awaiter(this, void 0, void 0, function* () {
|
|
222
209
|
yield this.connect();
|
|
223
|
-
const response = yield this.
|
|
210
|
+
const response = yield internalQuery(this.client, utils_1.getSqlQuery(query));
|
|
224
211
|
return response.recordset;
|
|
225
212
|
});
|
|
226
213
|
}
|
|
227
214
|
create(query) {
|
|
228
215
|
return __awaiter(this, void 0, void 0, function* () {
|
|
229
216
|
yield this.connect();
|
|
230
|
-
const response = yield this.
|
|
217
|
+
const response = yield internalQuery(this.client, utils_1.getSqlQuery(query));
|
|
231
218
|
return response.recordset || [{ created: true }];
|
|
232
219
|
});
|
|
233
220
|
}
|
|
234
221
|
update(query) {
|
|
235
222
|
return __awaiter(this, void 0, void 0, function* () {
|
|
236
223
|
yield this.connect();
|
|
237
|
-
const response = yield this.
|
|
224
|
+
const response = yield internalQuery(this.client, utils_1.getSqlQuery(query));
|
|
238
225
|
return response.recordset || [{ updated: true }];
|
|
239
226
|
});
|
|
240
227
|
}
|
|
241
228
|
delete(query) {
|
|
242
229
|
return __awaiter(this, void 0, void 0, function* () {
|
|
243
230
|
yield this.connect();
|
|
244
|
-
const response = yield this.
|
|
231
|
+
const response = yield internalQuery(this.client, utils_1.getSqlQuery(query));
|
|
245
232
|
return response.recordset || [{ deleted: true }];
|
|
246
233
|
});
|
|
247
234
|
}
|
|
248
235
|
query(json) {
|
|
249
236
|
return __awaiter(this, void 0, void 0, function* () {
|
|
250
|
-
const schema = this.config.schema;
|
|
251
237
|
yield this.connect();
|
|
252
|
-
if (schema && schema !== DEFAULT_SCHEMA && (json === null || json === void 0 ? void 0 : json.endpoint)) {
|
|
253
|
-
json.endpoint.schema = schema;
|
|
254
|
-
}
|
|
255
238
|
const operation = this._operation(json);
|
|
256
|
-
const queryFn = (query, op) => this.
|
|
239
|
+
const queryFn = (query, op) => internalQuery(this.client, query, op);
|
|
257
240
|
const processFn = (result) => result.recordset ? result.recordset : [{ [operation]: true }];
|
|
258
241
|
return this.queryWithReturning(json, queryFn, processFn);
|
|
259
242
|
});
|
|
@@ -74,7 +74,6 @@ var OracleModule;
|
|
|
74
74
|
class OracleIntegration extends sql_1.default {
|
|
75
75
|
constructor(config) {
|
|
76
76
|
super(utils_1.SqlClients.ORACLE);
|
|
77
|
-
this.index = 1;
|
|
78
77
|
this.tables = {};
|
|
79
78
|
this.schemaErrors = {};
|
|
80
79
|
this.COLUMNS_SQL = `
|
|
@@ -117,9 +116,6 @@ var OracleModule;
|
|
|
117
116
|
});
|
|
118
117
|
this.config = config;
|
|
119
118
|
}
|
|
120
|
-
getBindingIdentifier() {
|
|
121
|
-
return `:${this.index++}`;
|
|
122
|
-
}
|
|
123
119
|
/**
|
|
124
120
|
* Map the flat tabular columns and constraints data into a nested object
|
|
125
121
|
*/
|
|
@@ -171,18 +167,24 @@ var OracleModule;
|
|
|
171
167
|
}
|
|
172
168
|
return oracleTables;
|
|
173
169
|
}
|
|
174
|
-
|
|
175
|
-
|
|
170
|
+
isSupportedColumn(column) {
|
|
171
|
+
if (UNSUPPORTED_TYPES.includes(column.type)) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
return true;
|
|
176
175
|
}
|
|
177
|
-
|
|
178
|
-
|
|
176
|
+
isAutoColumn(column) {
|
|
177
|
+
if (column.default && column.default.toLowerCase().includes("nextval")) {
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
179
181
|
}
|
|
180
182
|
/**
|
|
181
183
|
* No native boolean in oracle. Best we can do is to check if a manual 1 or 0 number constraint has been set up
|
|
182
184
|
* This matches the default behaviour for generating DDL used in knex.
|
|
183
185
|
*/
|
|
184
186
|
isBooleanType(column) {
|
|
185
|
-
|
|
187
|
+
if (column.type.toLowerCase() === "number" &&
|
|
186
188
|
Object.values(column.constraints).filter(c => {
|
|
187
189
|
if (c.type === OracleContraintTypes.NOT_NULL_OR_CHECK &&
|
|
188
190
|
c.searchCondition) {
|
|
@@ -195,7 +197,10 @@ var OracleModule;
|
|
|
195
197
|
}
|
|
196
198
|
}
|
|
197
199
|
return false;
|
|
198
|
-
}).length > 0)
|
|
200
|
+
}).length > 0) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
return false;
|
|
199
204
|
}
|
|
200
205
|
internalConvertType(column) {
|
|
201
206
|
if (this.isBooleanType(column)) {
|
|
@@ -230,7 +235,7 @@ var OracleModule;
|
|
|
230
235
|
// iterate each column on the table
|
|
231
236
|
Object.values(oracleTable.columns)
|
|
232
237
|
// remove columns that we can't read / save
|
|
233
|
-
.filter(oracleColumn =>
|
|
238
|
+
.filter(oracleColumn => this.isSupportedColumn(oracleColumn))
|
|
234
239
|
// match the order of the columns in the db
|
|
235
240
|
.sort((c1, c2) => c1.id - c2.id)
|
|
236
241
|
.forEach(oracleColumn => {
|
|
@@ -238,7 +243,7 @@ var OracleModule;
|
|
|
238
243
|
let fieldSchema = table.schema[columnName];
|
|
239
244
|
if (!fieldSchema) {
|
|
240
245
|
fieldSchema = {
|
|
241
|
-
autocolumn:
|
|
246
|
+
autocolumn: this.isAutoColumn(oracleColumn),
|
|
242
247
|
name: columnName,
|
|
243
248
|
type: this.internalConvertType(oracleColumn),
|
|
244
249
|
};
|
|
@@ -261,11 +266,11 @@ var OracleModule;
|
|
|
261
266
|
return __awaiter(this, void 0, void 0, function* () {
|
|
262
267
|
let connection;
|
|
263
268
|
try {
|
|
264
|
-
this.index = 1;
|
|
265
269
|
connection = yield this.getConnection();
|
|
266
270
|
const options = { autoCommit: true };
|
|
267
271
|
const bindings = query.bindings || [];
|
|
268
|
-
|
|
272
|
+
const result = yield connection.execute(query.sql, bindings, options);
|
|
273
|
+
return result;
|
|
269
274
|
}
|
|
270
275
|
finally {
|
|
271
276
|
if (connection) {
|
|
@@ -84,10 +84,31 @@ var PostgresModule;
|
|
|
84
84
|
},
|
|
85
85
|
},
|
|
86
86
|
};
|
|
87
|
+
function internalQuery(client, query) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
// need to handle a specific issue with json data types in postgres,
|
|
90
|
+
// new lines inside the JSON data will break it
|
|
91
|
+
if (query && query.sql) {
|
|
92
|
+
const matches = query.sql.match(JSON_REGEX);
|
|
93
|
+
if (matches && matches.length > 0) {
|
|
94
|
+
for (let match of matches) {
|
|
95
|
+
const escaped = escapeDangerousCharacters(match);
|
|
96
|
+
query.sql = query.sql.replace(match, escaped);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
return yield client.query(query.sql, query.bindings || []);
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
// @ts-ignore
|
|
105
|
+
throw new Error(err);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
87
109
|
class PostgresIntegration extends Sql {
|
|
88
110
|
constructor(config) {
|
|
89
111
|
super(utils_1.SqlClients.POSTGRES);
|
|
90
|
-
this.index = 1;
|
|
91
112
|
this.tables = {};
|
|
92
113
|
this.schemaErrors = {};
|
|
93
114
|
this.PRIMARY_KEYS_SQL = `
|
|
@@ -112,33 +133,6 @@ var PostgresModule;
|
|
|
112
133
|
this.client = this.pool;
|
|
113
134
|
this.setSchema();
|
|
114
135
|
}
|
|
115
|
-
getBindingIdentifier() {
|
|
116
|
-
return `$${this.index++}`;
|
|
117
|
-
}
|
|
118
|
-
internalQuery(query) {
|
|
119
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
-
const client = this.client;
|
|
121
|
-
this.index = 1;
|
|
122
|
-
// need to handle a specific issue with json data types in postgres,
|
|
123
|
-
// new lines inside the JSON data will break it
|
|
124
|
-
if (query && query.sql) {
|
|
125
|
-
const matches = query.sql.match(JSON_REGEX);
|
|
126
|
-
if (matches && matches.length > 0) {
|
|
127
|
-
for (let match of matches) {
|
|
128
|
-
const escaped = escapeDangerousCharacters(match);
|
|
129
|
-
query.sql = query.sql.replace(match, escaped);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
try {
|
|
134
|
-
return yield client.query(query.sql, query.bindings || []);
|
|
135
|
-
}
|
|
136
|
-
catch (err) {
|
|
137
|
-
// @ts-ignore
|
|
138
|
-
throw new Error(err);
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
136
|
setSchema() {
|
|
143
137
|
if (!this.config.schema) {
|
|
144
138
|
this.config.schema = "public";
|
|
@@ -208,25 +202,25 @@ var PostgresModule;
|
|
|
208
202
|
}
|
|
209
203
|
create(query) {
|
|
210
204
|
return __awaiter(this, void 0, void 0, function* () {
|
|
211
|
-
const response = yield this.
|
|
205
|
+
const response = yield internalQuery(this.client, utils_1.getSqlQuery(query));
|
|
212
206
|
return response.rows.length ? response.rows : [{ created: true }];
|
|
213
207
|
});
|
|
214
208
|
}
|
|
215
209
|
read(query) {
|
|
216
210
|
return __awaiter(this, void 0, void 0, function* () {
|
|
217
|
-
const response = yield this.
|
|
211
|
+
const response = yield internalQuery(this.client, utils_1.getSqlQuery(query));
|
|
218
212
|
return response.rows;
|
|
219
213
|
});
|
|
220
214
|
}
|
|
221
215
|
update(query) {
|
|
222
216
|
return __awaiter(this, void 0, void 0, function* () {
|
|
223
|
-
const response = yield this.
|
|
217
|
+
const response = yield internalQuery(this.client, utils_1.getSqlQuery(query));
|
|
224
218
|
return response.rows.length ? response.rows : [{ updated: true }];
|
|
225
219
|
});
|
|
226
220
|
}
|
|
227
221
|
delete(query) {
|
|
228
222
|
return __awaiter(this, void 0, void 0, function* () {
|
|
229
|
-
const response = yield this.
|
|
223
|
+
const response = yield internalQuery(this.client, utils_1.getSqlQuery(query));
|
|
230
224
|
return response.rows.length ? response.rows : [{ deleted: true }];
|
|
231
225
|
});
|
|
232
226
|
}
|
|
@@ -237,12 +231,12 @@ var PostgresModule;
|
|
|
237
231
|
if (Array.isArray(input)) {
|
|
238
232
|
const responses = [];
|
|
239
233
|
for (let query of input) {
|
|
240
|
-
responses.push(yield this.
|
|
234
|
+
responses.push(yield internalQuery(this.client, query));
|
|
241
235
|
}
|
|
242
236
|
return responses;
|
|
243
237
|
}
|
|
244
238
|
else {
|
|
245
|
-
const response = yield this.
|
|
239
|
+
const response = yield internalQuery(this.client, input);
|
|
246
240
|
return response.rows.length ? response.rows : [{ [operation]: true }];
|
|
247
241
|
}
|
|
248
242
|
});
|
|
@@ -6,53 +6,36 @@ const utils_1 = require("../db/utils");
|
|
|
6
6
|
const constants_1 = require("../constants");
|
|
7
7
|
const DOUBLE_SEPARATOR = `${utils_1.SEPARATOR}${utils_1.SEPARATOR}`;
|
|
8
8
|
const ROW_ID_REGEX = /^\[.*]$/g;
|
|
9
|
-
const
|
|
9
|
+
const SQL_TYPE_MAP = {
|
|
10
|
+
text: constants_1.FieldTypes.LONGFORM,
|
|
11
|
+
varchar: constants_1.FieldTypes.STRING,
|
|
10
12
|
integer: constants_1.FieldTypes.NUMBER,
|
|
11
|
-
int: constants_1.FieldTypes.NUMBER,
|
|
12
13
|
bigint: constants_1.FieldTypes.NUMBER,
|
|
13
14
|
decimal: constants_1.FieldTypes.NUMBER,
|
|
14
15
|
smallint: constants_1.FieldTypes.NUMBER,
|
|
15
16
|
real: constants_1.FieldTypes.NUMBER,
|
|
17
|
+
"double precision": constants_1.FieldTypes.NUMBER,
|
|
18
|
+
timestamp: constants_1.FieldTypes.DATETIME,
|
|
19
|
+
time: constants_1.FieldTypes.DATETIME,
|
|
20
|
+
boolean: constants_1.FieldTypes.BOOLEAN,
|
|
21
|
+
json: constants_1.FieldTypes.JSON,
|
|
22
|
+
date: constants_1.FieldTypes.DATETIME,
|
|
23
|
+
blob: constants_1.FieldTypes.LONGFORM,
|
|
24
|
+
enum: constants_1.FieldTypes.STRING,
|
|
16
25
|
float: constants_1.FieldTypes.NUMBER,
|
|
26
|
+
int: constants_1.FieldTypes.NUMBER,
|
|
17
27
|
numeric: constants_1.FieldTypes.NUMBER,
|
|
18
28
|
mediumint: constants_1.FieldTypes.NUMBER,
|
|
19
29
|
dec: constants_1.FieldTypes.NUMBER,
|
|
20
30
|
double: constants_1.FieldTypes.NUMBER,
|
|
21
31
|
fixed: constants_1.FieldTypes.NUMBER,
|
|
22
|
-
|
|
32
|
+
datetime: constants_1.FieldTypes.DATETIME,
|
|
33
|
+
tinyint: constants_1.FieldTypes.BOOLEAN,
|
|
34
|
+
long: constants_1.FieldTypes.LONGFORM,
|
|
23
35
|
number: constants_1.FieldTypes.NUMBER,
|
|
24
36
|
binary_float: constants_1.FieldTypes.NUMBER,
|
|
25
37
|
binary_double: constants_1.FieldTypes.NUMBER,
|
|
26
|
-
money: constants_1.FieldTypes.NUMBER,
|
|
27
|
-
smallmoney: constants_1.FieldTypes.NUMBER,
|
|
28
|
-
};
|
|
29
|
-
const SQL_DATE_TYPE_MAP = {
|
|
30
|
-
timestamp: constants_1.FieldTypes.DATETIME,
|
|
31
|
-
time: constants_1.FieldTypes.DATETIME,
|
|
32
|
-
datetime: constants_1.FieldTypes.DATETIME,
|
|
33
|
-
smalldatetime: constants_1.FieldTypes.DATETIME,
|
|
34
|
-
date: constants_1.FieldTypes.DATETIME,
|
|
35
|
-
};
|
|
36
|
-
const SQL_STRING_TYPE_MAP = {
|
|
37
|
-
varchar: constants_1.FieldTypes.STRING,
|
|
38
|
-
char: constants_1.FieldTypes.STRING,
|
|
39
|
-
nchar: constants_1.FieldTypes.STRING,
|
|
40
|
-
nvarchar: constants_1.FieldTypes.STRING,
|
|
41
|
-
ntext: constants_1.FieldTypes.STRING,
|
|
42
|
-
enum: constants_1.FieldTypes.STRING,
|
|
43
|
-
blob: constants_1.FieldTypes.LONGFORM,
|
|
44
|
-
long: constants_1.FieldTypes.LONGFORM,
|
|
45
|
-
text: constants_1.FieldTypes.LONGFORM,
|
|
46
|
-
};
|
|
47
|
-
const SQL_BOOLEAN_TYPE_MAP = {
|
|
48
|
-
boolean: constants_1.FieldTypes.BOOLEAN,
|
|
49
|
-
bit: constants_1.FieldTypes.BOOLEAN,
|
|
50
|
-
tinyint: constants_1.FieldTypes.BOOLEAN,
|
|
51
|
-
};
|
|
52
|
-
const SQL_MISC_TYPE_MAP = {
|
|
53
|
-
json: constants_1.FieldTypes.JSON,
|
|
54
38
|
};
|
|
55
|
-
const SQL_TYPE_MAP = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, SQL_NUMBER_TYPE_MAP), SQL_DATE_TYPE_MAP), SQL_STRING_TYPE_MAP), SQL_BOOLEAN_TYPE_MAP), SQL_MISC_TYPE_MAP);
|
|
56
39
|
var SqlClients;
|
|
57
40
|
(function (SqlClients) {
|
|
58
41
|
SqlClients["MS_SQL"] = "mssql";
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.79",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -21,8 +21,10 @@
|
|
|
21
21
|
"dev:stack:down": "node scripts/dev/manage.js down",
|
|
22
22
|
"dev:stack:nuke": "node scripts/dev/manage.js nuke",
|
|
23
23
|
"dev:builder": "yarn run dev:stack:up && nodemon",
|
|
24
|
+
"generate:proxy:compose": "node scripts/proxy/generateProxyConfig compose",
|
|
25
|
+
"generate:proxy:preprod": "node scripts/proxy/generateProxyConfig preprod",
|
|
26
|
+
"generate:proxy:prod": "node scripts/proxy/generateProxyConfig prod",
|
|
24
27
|
"format": "prettier --config ../../.prettierrc.json 'src/**/*.ts' --write",
|
|
25
|
-
"specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts",
|
|
26
28
|
"lint": "eslint --fix src/",
|
|
27
29
|
"lint:fix": "yarn run format && yarn run lint",
|
|
28
30
|
"initialise": "node scripts/initialise.js",
|
|
@@ -71,9 +73,9 @@
|
|
|
71
73
|
"license": "GPL-3.0",
|
|
72
74
|
"dependencies": {
|
|
73
75
|
"@apidevtools/swagger-parser": "^10.0.3",
|
|
74
|
-
"@budibase/backend-core": "^1.0.
|
|
75
|
-
"@budibase/client": "^1.0.
|
|
76
|
-
"@budibase/string-templates": "^1.0.
|
|
76
|
+
"@budibase/backend-core": "^1.0.79",
|
|
77
|
+
"@budibase/client": "^1.0.79",
|
|
78
|
+
"@budibase/string-templates": "^1.0.79",
|
|
77
79
|
"@bull-board/api": "^3.7.0",
|
|
78
80
|
"@bull-board/koa": "^3.7.0",
|
|
79
81
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -108,7 +110,6 @@
|
|
|
108
110
|
"koa-send": "5.0.0",
|
|
109
111
|
"koa-session": "5.12.0",
|
|
110
112
|
"koa-static": "5.0.0",
|
|
111
|
-
"koa2-ratelimit": "^1.1.0",
|
|
112
113
|
"lodash": "4.17.21",
|
|
113
114
|
"memorystream": "^0.3.1",
|
|
114
115
|
"mongodb": "3.6.3",
|
|
@@ -124,7 +125,6 @@
|
|
|
124
125
|
"pouchdb-all-dbs": "1.0.2",
|
|
125
126
|
"pouchdb-find": "^7.2.2",
|
|
126
127
|
"pouchdb-replication-stream": "1.2.9",
|
|
127
|
-
"redis": "4",
|
|
128
128
|
"server-destroy": "1.0.1",
|
|
129
129
|
"svelte": "^3.38.2",
|
|
130
130
|
"swagger-parser": "^10.0.3",
|
|
@@ -150,7 +150,6 @@
|
|
|
150
150
|
"@types/koa-router": "^7.4.2",
|
|
151
151
|
"@types/node": "^15.12.4",
|
|
152
152
|
"@types/oracledb": "^5.2.1",
|
|
153
|
-
"@types/redis": "^4.0.11",
|
|
154
153
|
"@typescript-eslint/parser": "4.28.0",
|
|
155
154
|
"apidoc": "^0.50.2",
|
|
156
155
|
"babel-jest": "^27.0.2",
|
|
@@ -158,15 +157,12 @@
|
|
|
158
157
|
"docker-compose": "^0.23.6",
|
|
159
158
|
"eslint": "^6.8.0",
|
|
160
159
|
"jest": "^27.0.5",
|
|
161
|
-
"jest-openapi": "^0.14.2",
|
|
162
160
|
"nodemon": "^2.0.4",
|
|
163
161
|
"openapi-types": "^9.3.1",
|
|
164
|
-
"openapi-typescript": "^5.2.0",
|
|
165
162
|
"path-to-regexp": "^6.2.0",
|
|
166
163
|
"prettier": "^2.3.1",
|
|
167
164
|
"rimraf": "^3.0.2",
|
|
168
165
|
"supertest": "^4.0.2",
|
|
169
|
-
"swagger-jsdoc": "^6.1.0",
|
|
170
166
|
"ts-jest": "^27.0.3",
|
|
171
167
|
"ts-node": "^10.0.0",
|
|
172
168
|
"typescript": "^4.3.5",
|
|
@@ -24,8 +24,6 @@ const { createASession } = require("@budibase/backend-core/sessions");
|
|
|
24
24
|
const { user: userCache } = require("@budibase/backend-core/cache");
|
|
25
25
|
const newid = require("../../db/newid");
|
|
26
26
|
const context = require("@budibase/backend-core/context");
|
|
27
|
-
const { generateDevInfoID, SEPARATOR } = require("@budibase/backend-core/db");
|
|
28
|
-
const { encrypt } = require("@budibase/backend-core/encryption");
|
|
29
27
|
const GLOBAL_USER_ID = "us_uuid1";
|
|
30
28
|
const EMAIL = "babs@babs.com";
|
|
31
29
|
const CSRF_TOKEN = "e3727778-7af0-4226-b5eb-f43cbe60a306";
|
|
@@ -44,9 +42,6 @@ class TestConfiguration {
|
|
|
44
42
|
getRequest() {
|
|
45
43
|
return this.request;
|
|
46
44
|
}
|
|
47
|
-
getApp() {
|
|
48
|
-
return this.app;
|
|
49
|
-
}
|
|
50
45
|
getAppId() {
|
|
51
46
|
return this.appId;
|
|
52
47
|
}
|
|
@@ -85,22 +80,6 @@ class TestConfiguration {
|
|
|
85
80
|
}
|
|
86
81
|
});
|
|
87
82
|
}
|
|
88
|
-
generateApiKey(userId = GLOBAL_USER_ID) {
|
|
89
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
-
const db = getGlobalDB(TENANT_ID);
|
|
91
|
-
const id = generateDevInfoID(userId);
|
|
92
|
-
let devInfo;
|
|
93
|
-
try {
|
|
94
|
-
devInfo = yield db.get(id);
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
devInfo = { _id: id, userId };
|
|
98
|
-
}
|
|
99
|
-
devInfo.apiKey = encrypt(`${TENANT_ID}${SEPARATOR}${newid()}`);
|
|
100
|
-
yield db.put(devInfo);
|
|
101
|
-
return devInfo.apiKey;
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
83
|
globalUser({ id = GLOBAL_USER_ID, builder = true, email = EMAIL, roles, } = {}) {
|
|
105
84
|
return __awaiter(this, void 0, void 0, function* () {
|
|
106
85
|
const db = getGlobalDB(TENANT_ID);
|
|
@@ -143,7 +122,7 @@ class TestConfiguration {
|
|
|
143
122
|
}
|
|
144
123
|
cleanup(this.allApps.map(app => app.appId));
|
|
145
124
|
}
|
|
146
|
-
defaultHeaders(
|
|
125
|
+
defaultHeaders() {
|
|
147
126
|
const auth = {
|
|
148
127
|
userId: GLOBAL_USER_ID,
|
|
149
128
|
sessionId: "sessionid",
|
|
@@ -155,10 +134,14 @@ class TestConfiguration {
|
|
|
155
134
|
};
|
|
156
135
|
const authToken = jwt.sign(auth, env.JWT_SECRET);
|
|
157
136
|
const appToken = jwt.sign(app, env.JWT_SECRET);
|
|
158
|
-
const headers =
|
|
137
|
+
const headers = {
|
|
138
|
+
Accept: "application/json",
|
|
139
|
+
Cookie: [
|
|
159
140
|
`${Cookies.Auth}=${authToken}`,
|
|
160
141
|
`${Cookies.CurrentApp}=${appToken}`,
|
|
161
|
-
],
|
|
142
|
+
],
|
|
143
|
+
[Headers.CSRF_TOKEN]: CSRF_TOKEN,
|
|
144
|
+
};
|
|
162
145
|
if (this.appId) {
|
|
163
146
|
headers[Headers.APP_ID] = this.appId;
|
|
164
147
|
}
|
|
@@ -221,7 +204,7 @@ class TestConfiguration {
|
|
|
221
204
|
getTable(tableId = null) {
|
|
222
205
|
return __awaiter(this, void 0, void 0, function* () {
|
|
223
206
|
tableId = tableId || this.table._id;
|
|
224
|
-
return this._req(null, { tableId }, controllers.table.find);
|
|
207
|
+
return this._req(null, { id: tableId }, controllers.table.find);
|
|
225
208
|
});
|
|
226
209
|
}
|
|
227
210
|
createLinkedTable(relationshipType = null, links = ["link"]) {
|