@forestadmin/datasource-sql 1.6.3 → 1.6.4
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/dist/connection/errors.d.ts +17 -0
- package/dist/connection/errors.js +59 -0
- package/dist/connection/handle-errors.d.ts +4 -0
- package/dist/connection/handle-errors.js +26 -0
- package/dist/connection/index.js +7 -58
- package/dist/connection/reverse-proxy.d.ts +1 -1
- package/dist/connection/reverse-proxy.js +1 -1
- package/dist/connection/utils.d.ts +2 -1
- package/dist/connection/utils.js +57 -14
- package/dist/index.d.ts +1 -0
- package/dist/index.js +16 -1
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ConnectionOptionsObj } from '../types';
|
|
2
|
+
export type SourceError = 'Proxy' | 'Database';
|
|
3
|
+
declare class BaseError extends Error {
|
|
4
|
+
source: SourceError;
|
|
5
|
+
uri: string;
|
|
6
|
+
readonly details: string;
|
|
7
|
+
constructor(message: string, details?: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class DatabaseConnectError extends BaseError {
|
|
10
|
+
constructor(message: string, databaseUri?: string, source?: SourceError);
|
|
11
|
+
}
|
|
12
|
+
export declare class ProxyConnectError extends BaseError {
|
|
13
|
+
constructor(message: string, proxyConfig?: ConnectionOptionsObj['proxySocks']);
|
|
14
|
+
private static buildSanitizedUriFromConfig;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProxyConnectError = exports.DatabaseConnectError = void 0;
|
|
4
|
+
function sanitizeUri(uri) {
|
|
5
|
+
const uriObject = new URL(uri);
|
|
6
|
+
if (uriObject.password) {
|
|
7
|
+
uriObject.password = '**sanitizedPassword**';
|
|
8
|
+
}
|
|
9
|
+
return uriObject.toString();
|
|
10
|
+
}
|
|
11
|
+
class BaseError extends Error {
|
|
12
|
+
constructor(message, details) {
|
|
13
|
+
const messageWithDetails = details ? `${message}\n${details}` : message;
|
|
14
|
+
super(messageWithDetails);
|
|
15
|
+
this.details = details;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
class DatabaseConnectError extends BaseError {
|
|
19
|
+
constructor(message, databaseUri, source = 'Database') {
|
|
20
|
+
if (databaseUri) {
|
|
21
|
+
const sanitizedUri = sanitizeUri(databaseUri);
|
|
22
|
+
super(`Unable to connect to the given uri: ${sanitizedUri}.`, message);
|
|
23
|
+
this.uri = sanitizedUri;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
super(`Unable to connect to the given uri.`, message);
|
|
27
|
+
}
|
|
28
|
+
this.name = this.constructor.name;
|
|
29
|
+
this.source = source;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.DatabaseConnectError = DatabaseConnectError;
|
|
33
|
+
class ProxyConnectError extends BaseError {
|
|
34
|
+
constructor(message, proxyConfig) {
|
|
35
|
+
const defaultMessage = 'Your proxy has encountered an error.';
|
|
36
|
+
if (proxyConfig) {
|
|
37
|
+
const sanitizedUri = ProxyConnectError.buildSanitizedUriFromConfig(proxyConfig);
|
|
38
|
+
super(`${defaultMessage} Unable to connect to the given uri: ${sanitizedUri}.`, message);
|
|
39
|
+
this.uri = sanitizedUri;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
super(defaultMessage, message);
|
|
43
|
+
}
|
|
44
|
+
this.name = this.constructor.name;
|
|
45
|
+
this.source = 'Proxy';
|
|
46
|
+
}
|
|
47
|
+
static buildSanitizedUriFromConfig(proxyConfig) {
|
|
48
|
+
const proxyUri = new URL(`socks://${proxyConfig.host}:${proxyConfig.port}`);
|
|
49
|
+
if (proxyConfig.userId) {
|
|
50
|
+
proxyUri.username = proxyConfig.userId;
|
|
51
|
+
}
|
|
52
|
+
if (proxyConfig.password) {
|
|
53
|
+
proxyUri.password = proxyConfig.password;
|
|
54
|
+
}
|
|
55
|
+
return sanitizeUri(proxyUri.toString()).replace('socks://', '');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.ProxyConnectError = ProxyConnectError;
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nvbm5lY3Rpb24vZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLFNBQVMsV0FBVyxDQUFDLEdBQVc7SUFDOUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFL0IsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1FBQ3RCLFNBQVMsQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUM7S0FDOUM7SUFFRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM5QixDQUFDO0FBSUQsTUFBTSxTQUFVLFNBQVEsS0FBSztJQUszQixZQUFZLE9BQWUsRUFBRSxPQUFnQjtRQUMzQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN4RSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFFRCxNQUFhLG9CQUFxQixTQUFRLFNBQVM7SUFDakQsWUFBWSxPQUFlLEVBQUUsV0FBb0IsRUFBRSxTQUFzQixVQUFVO1FBQ2pGLElBQUksV0FBVyxFQUFFO1lBQ2YsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlDLEtBQUssQ0FBQyx1Q0FBdUMsWUFBWSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7U0FDekI7YUFBTTtZQUNMLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN2RDtRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBYkQsb0RBYUM7QUFFRCxNQUFhLGlCQUFrQixTQUFRLFNBQVM7SUFDOUMsWUFBWSxPQUFlLEVBQUUsV0FBZ0Q7UUFDM0UsTUFBTSxjQUFjLEdBQUcsc0NBQXNDLENBQUM7UUFFOUQsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRixLQUFLLENBQUMsR0FBRyxjQUFjLHdDQUF3QyxZQUFZLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQztTQUN6QjthQUFNO1lBQ0wsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVPLE1BQU0sQ0FBQywyQkFBMkIsQ0FDeEMsV0FBK0M7UUFFL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsV0FBVyxXQUFXLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUN0QixRQUFRLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7U0FDeEM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsUUFBUSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1NBQzFDO1FBRUQsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUEvQkQsOENBK0JDIn0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const sequelize_1 = require("sequelize");
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
|
+
function handleProxyErrors(error, databaseUri, proxyConfig) {
|
|
6
|
+
// eslint-disable-next-line max-len
|
|
7
|
+
// @link: list of errors thrown by the proxy https://github.com/JoshGlazebrook/socks/blob/76d013e4c9a2d956f07868477d8f12ec0b96edfc/src/common/constants.ts#LL10C10-L10C10
|
|
8
|
+
if (error?.stack.includes('SocksClient')) {
|
|
9
|
+
if (error.message.includes('Socket closed') ||
|
|
10
|
+
error.message.includes('Socks5 proxy rejected connection')) {
|
|
11
|
+
throw new errors_1.DatabaseConnectError(null, databaseUri, 'Proxy');
|
|
12
|
+
}
|
|
13
|
+
throw new errors_1.ProxyConnectError(error.message, proxyConfig);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function handleErrors(error, options, proxy) {
|
|
17
|
+
handleProxyErrors(error, proxy?.destination.uri, proxy?.destination.proxySocks);
|
|
18
|
+
if (error instanceof sequelize_1.BaseError) {
|
|
19
|
+
const nameWithoutSequelize = error.name.replace('Sequelize', '');
|
|
20
|
+
const nameWithSpaces = nameWithoutSequelize.replace(/([a-z])([A-Z])/g, (_, m1, m2) => `${m1} ${m2.toLowerCase()}`);
|
|
21
|
+
throw new errors_1.DatabaseConnectError(`${nameWithSpaces}: ${error.message}`, options?.uri);
|
|
22
|
+
}
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
exports.default = handleErrors;
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLWVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25uZWN0aW9uL2hhbmRsZS1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBc0M7QUFFdEMscUNBQW1FO0FBSW5FLFNBQVMsaUJBQWlCLENBQ3hCLEtBQVksRUFDWixXQUFvQixFQUNwQixXQUFnRDtJQUVoRCxtQ0FBbUM7SUFDbkMseUtBQXlLO0lBQ3pLLElBQUksS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDeEMsSUFDRSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDdkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0NBQWtDLENBQUMsRUFDMUQ7WUFDQSxNQUFNLElBQUksNkJBQW9CLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM1RDtRQUVELE1BQU0sSUFBSSwwQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQztBQUVELFNBQXdCLFlBQVksQ0FDbEMsS0FBWSxFQUNaLE9BQThCLEVBQzlCLEtBQW9CO0lBRXBCLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWhGLElBQUksS0FBSyxZQUFZLHFCQUFTLEVBQUU7UUFDOUIsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUNqRCxpQkFBaUIsRUFDakIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQzNDLENBQUM7UUFFRixNQUFNLElBQUksNkJBQW9CLENBQUMsR0FBRyxjQUFjLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztLQUNyRjtJQUVELE1BQU0sS0FBSyxDQUFDO0FBQ2QsQ0FBQztBQWxCRCwrQkFrQkMifQ==
|
package/dist/connection/index.js
CHANGED
|
@@ -4,69 +4,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const sequelize_1 = require("sequelize");
|
|
7
|
+
const handle_errors_1 = __importDefault(require("./handle-errors"));
|
|
7
8
|
const preprocess_1 = __importDefault(require("./preprocess"));
|
|
8
9
|
const reverse_proxy_1 = __importDefault(require("./reverse-proxy"));
|
|
9
10
|
const utils_1 = require("./utils");
|
|
10
|
-
function getSslConfiguration(dialect, sslMode, servername, logger) {
|
|
11
|
-
switch (dialect) {
|
|
12
|
-
case 'mariadb':
|
|
13
|
-
if (sslMode === 'disabled')
|
|
14
|
-
return { ssl: false };
|
|
15
|
-
if (sslMode === 'required')
|
|
16
|
-
return { ssl: { rejectUnauthorized: false } };
|
|
17
|
-
if (sslMode === 'verify')
|
|
18
|
-
return { ssl: true };
|
|
19
|
-
break;
|
|
20
|
-
case 'mssql':
|
|
21
|
-
if (sslMode === 'disabled')
|
|
22
|
-
return { options: { encrypt: false } };
|
|
23
|
-
if (sslMode === 'required')
|
|
24
|
-
return { options: { encrypt: true, trustServerCertificate: true } };
|
|
25
|
-
if (sslMode === 'verify')
|
|
26
|
-
return { options: { encrypt: true, trustServerCertificate: false } };
|
|
27
|
-
break;
|
|
28
|
-
case 'mysql':
|
|
29
|
-
if (sslMode === 'disabled')
|
|
30
|
-
return { ssl: false };
|
|
31
|
-
if (sslMode === 'required')
|
|
32
|
-
return { ssl: { rejectUnauthorized: false } };
|
|
33
|
-
if (sslMode === 'verify')
|
|
34
|
-
return { ssl: { rejectUnauthorized: true } };
|
|
35
|
-
break;
|
|
36
|
-
case 'postgres':
|
|
37
|
-
if (sslMode === 'disabled')
|
|
38
|
-
return { ssl: false };
|
|
39
|
-
// Pass servername to the net.tlsSocket constructor.
|
|
40
|
-
// This is done so that
|
|
41
|
-
// - Certificate verification still work when using a proxy server to reach the db (we are
|
|
42
|
-
// forced to use a tcp reverse proxy because some drivers do not support them)
|
|
43
|
-
// - Providers which use SNI to route requests to the correct database still work (most
|
|
44
|
-
// notably neon.tech).
|
|
45
|
-
// Note that we should either do that for the other vendors (if possible), or
|
|
46
|
-
// replace the reverse proxy by a forward proxy (when supported).
|
|
47
|
-
if (sslMode === 'required')
|
|
48
|
-
return { ssl: { require: true, rejectUnauthorized: false, servername } };
|
|
49
|
-
if (sslMode === 'verify')
|
|
50
|
-
return { ssl: { require: true, rejectUnauthorized: true, servername } };
|
|
51
|
-
break;
|
|
52
|
-
case 'db2':
|
|
53
|
-
case 'oracle':
|
|
54
|
-
case 'snowflake':
|
|
55
|
-
case 'sqlite':
|
|
56
|
-
default:
|
|
57
|
-
if (sslMode && sslMode !== 'manual') {
|
|
58
|
-
logger?.('Warn', `ignoring sslMode=${sslMode} (not supported for ${dialect})`);
|
|
59
|
-
}
|
|
60
|
-
return {};
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
11
|
/** Attempt to connect to the database */
|
|
64
12
|
async function connect(uriOrOptions, logger) {
|
|
65
13
|
let proxy;
|
|
66
14
|
let sequelize;
|
|
15
|
+
let options;
|
|
16
|
+
let servername;
|
|
67
17
|
try {
|
|
68
|
-
|
|
69
|
-
let servername;
|
|
18
|
+
options = await (0, preprocess_1.default)(uriOrOptions);
|
|
70
19
|
try {
|
|
71
20
|
servername = options?.host ?? new URL(options.uri).hostname;
|
|
72
21
|
}
|
|
@@ -83,7 +32,7 @@ async function connect(uriOrOptions, logger) {
|
|
|
83
32
|
const logging = logger ? (0, utils_1.getLogger)(logger) : false;
|
|
84
33
|
opts.dialectOptions = {
|
|
85
34
|
...(opts.dialectOptions ?? {}),
|
|
86
|
-
...getSslConfiguration(opts.dialect, sslMode, servername, logger),
|
|
35
|
+
...(0, utils_1.getSslConfiguration)(opts.dialect, sslMode, servername, logger),
|
|
87
36
|
};
|
|
88
37
|
sequelize = uri
|
|
89
38
|
? new sequelize_1.Sequelize(uri, { ...opts, schema, logging })
|
|
@@ -103,8 +52,8 @@ async function connect(uriOrOptions, logger) {
|
|
|
103
52
|
catch (e) {
|
|
104
53
|
await sequelize?.close();
|
|
105
54
|
// if proxy encountered an error, we want to throw it instead of the sequelize error
|
|
106
|
-
(0,
|
|
55
|
+
(0, handle_errors_1.default)(proxy?.error || e, options, proxy);
|
|
107
56
|
}
|
|
108
57
|
}
|
|
109
58
|
exports.default = connect;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29ubmVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQUFzQztBQUV0QyxvRUFBMkM7QUFDM0MsOERBQTZDO0FBQzdDLG9FQUEyQztBQUMzQyxtQ0FBb0U7QUFFcEUseUNBQXlDO0FBQzFCLEtBQUssVUFBVSxPQUFPLENBQ25DLFlBQStCLEVBQy9CLE1BQWU7SUFFZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxTQUFvQixDQUFDO0lBQ3pCLElBQUksT0FBNkIsQ0FBQztJQUNsQyxJQUFJLFVBQWtCLENBQUM7SUFFdkIsSUFBSTtRQUNGLE9BQU8sR0FBRyxNQUFNLElBQUEsb0JBQWlCLEVBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEQsSUFBSTtZQUNGLFVBQVUsR0FBRyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7U0FDN0Q7UUFBQyxNQUFNO1lBQ04sbURBQW1EO1NBQ3BEO1FBRUQsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RCLEtBQUssR0FBRyxJQUFJLHVCQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsT0FBTyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztTQUNuQztRQUVELE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBQSxpQkFBUyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBQSxpQkFBUyxFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFbkQsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7WUFDOUIsR0FBRyxJQUFBLDJCQUFtQixFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUM7U0FDbEUsQ0FBQztRQUVGLFNBQVMsR0FBRyxHQUFHO1lBQ2IsQ0FBQyxDQUFDLElBQUkscUJBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDbEQsQ0FBQyxDQUFDLElBQUkscUJBQVMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRWhELG9FQUFvRTtRQUNwRSxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssVUFBVSxLQUFLO1lBQ3BDLElBQUk7Z0JBQ0YsTUFBTSxxQkFBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVDO29CQUFTO2dCQUNSLE1BQU0sS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsTUFBTSxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxrQkFBa0I7UUFFbEQsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3pCLG9GQUFvRjtRQUNwRixJQUFBLHVCQUFZLEVBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2pEO0FBQ0gsQ0FBQztBQXRERCwwQkFzREMifQ==
|
|
@@ -2,8 +2,8 @@ import { ConnectionOptionsObj } from '../types';
|
|
|
2
2
|
export default class ReverseProxy {
|
|
3
3
|
private readonly errors;
|
|
4
4
|
private readonly server;
|
|
5
|
-
private readonly destination;
|
|
6
5
|
private readonly connectedClients;
|
|
6
|
+
readonly destination: ConnectionOptionsObj;
|
|
7
7
|
constructor(destination: ConnectionOptionsObj);
|
|
8
8
|
start(): Promise<void>;
|
|
9
9
|
stop(): Promise<void>;
|
|
@@ -106,4 +106,4 @@ class ReverseProxy {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
exports.default = ReverseProxy;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJzZS1wcm94eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25uZWN0aW9uL3JldmVyc2UtcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIsaUNBQW9DO0FBS3BDLE1BQXFCLFlBQVk7SUFNL0IsWUFBWSxXQUFpQztRQUw1QixXQUFNLEdBQVksRUFBRSxDQUFDO1FBRXJCLHFCQUFnQixHQUFvQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBSTdELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNwQixJ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
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ConnectionOptions } from '../types';
|
|
2
2
|
import type { Logger } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
import { Dialect } from 'sequelize';
|
|
4
|
+
import { SslMode } from '../types';
|
|
4
5
|
export declare function getUri(uriOrOptions: ConnectionOptions, dialect: Dialect): string | null;
|
|
5
6
|
export declare function getDialect(uriOrOptions: ConnectionOptions): Dialect;
|
|
6
7
|
export declare function getSchema(uri: string): string;
|
|
7
8
|
export declare function getLogger(logger: Logger): (sql: string) => void;
|
|
8
|
-
export declare function
|
|
9
|
+
export declare function getSslConfiguration(dialect: Dialect, sslMode: SslMode, servername?: string, logger?: Logger): Record<string, unknown>;
|
|
9
10
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/connection/utils.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
3
|
+
exports.getSslConfiguration = exports.getLogger = exports.getSchema = exports.getDialect = exports.getUri = void 0;
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
5
|
function checkUri(uri) {
|
|
6
6
|
if (!/.*:\/\//g.test(uri) && uri !== 'sqlite::memory:') {
|
|
7
|
-
throw new
|
|
7
|
+
throw new errors_1.DatabaseConnectError(`Connection Uri "${uri}" provided to SQL data source is not valid.` +
|
|
8
8
|
' Should be <dialect>://<connection>.');
|
|
9
9
|
}
|
|
10
10
|
}
|
|
@@ -30,7 +30,7 @@ function getDialect(uriOrOptions) {
|
|
|
30
30
|
dialect = new URL(uri).protocol.slice(0, -1);
|
|
31
31
|
}
|
|
32
32
|
else {
|
|
33
|
-
throw new
|
|
33
|
+
throw new errors_1.DatabaseConnectError('Expected dialect to be provided in options or uri.');
|
|
34
34
|
}
|
|
35
35
|
if (dialect === 'mysql2')
|
|
36
36
|
return 'mysql';
|
|
@@ -49,15 +49,58 @@ function getLogger(logger) {
|
|
|
49
49
|
return (sql) => logger?.('Debug', sql.substring(sql.indexOf(':') + 2));
|
|
50
50
|
}
|
|
51
51
|
exports.getLogger = getLogger;
|
|
52
|
-
function
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
function getSslConfiguration(dialect, sslMode, servername, logger) {
|
|
53
|
+
switch (dialect) {
|
|
54
|
+
case 'mariadb':
|
|
55
|
+
if (sslMode === 'disabled')
|
|
56
|
+
return { ssl: false };
|
|
57
|
+
if (sslMode === 'required')
|
|
58
|
+
return { ssl: { rejectUnauthorized: false } };
|
|
59
|
+
if (sslMode === 'verify')
|
|
60
|
+
return { ssl: true };
|
|
61
|
+
break;
|
|
62
|
+
case 'mssql':
|
|
63
|
+
if (sslMode === 'disabled')
|
|
64
|
+
return { options: { encrypt: false } };
|
|
65
|
+
if (sslMode === 'required')
|
|
66
|
+
return { options: { encrypt: true, trustServerCertificate: true } };
|
|
67
|
+
if (sslMode === 'verify')
|
|
68
|
+
return { options: { encrypt: true, trustServerCertificate: false } };
|
|
69
|
+
break;
|
|
70
|
+
case 'mysql':
|
|
71
|
+
if (sslMode === 'disabled')
|
|
72
|
+
return { ssl: false };
|
|
73
|
+
if (sslMode === 'required')
|
|
74
|
+
return { ssl: { rejectUnauthorized: false } };
|
|
75
|
+
if (sslMode === 'verify')
|
|
76
|
+
return { ssl: { rejectUnauthorized: true } };
|
|
77
|
+
break;
|
|
78
|
+
case 'postgres':
|
|
79
|
+
if (sslMode === 'disabled')
|
|
80
|
+
return { ssl: false };
|
|
81
|
+
// Pass servername to the net.tlsSocket constructor.
|
|
82
|
+
// This is done so that
|
|
83
|
+
// - Certificate verification still work when using a proxy server to reach the db (we are
|
|
84
|
+
// forced to use a tcp reverse proxy because some drivers do not support them)
|
|
85
|
+
// - Providers which use SNI to route requests to the correct database still work (most
|
|
86
|
+
// notably neon.tech).
|
|
87
|
+
// Note that we should either do that for the other vendors (if possible), or
|
|
88
|
+
// replace the reverse proxy by a forward proxy (when supported).
|
|
89
|
+
if (sslMode === 'required')
|
|
90
|
+
return { ssl: { require: true, rejectUnauthorized: false, servername } };
|
|
91
|
+
if (sslMode === 'verify')
|
|
92
|
+
return { ssl: { require: true, rejectUnauthorized: true, servername } };
|
|
93
|
+
break;
|
|
94
|
+
case 'db2':
|
|
95
|
+
case 'oracle':
|
|
96
|
+
case 'snowflake':
|
|
97
|
+
case 'sqlite':
|
|
98
|
+
default:
|
|
99
|
+
if (sslMode && sslMode !== 'manual') {
|
|
100
|
+
logger?.('Warn', `ignoring sslMode=${sslMode} (not supported for ${dialect})`);
|
|
101
|
+
}
|
|
102
|
+
return {};
|
|
59
103
|
}
|
|
60
|
-
throw error;
|
|
61
104
|
}
|
|
62
|
-
exports.
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
exports.getSslConfiguration = getSslConfiguration;
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29ubmVjdGlvbi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxxQ0FBZ0Q7QUFHaEQsU0FBUyxRQUFRLENBQUMsR0FBVztJQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssaUJBQWlCLEVBQUU7UUFDdEQsTUFBTSxJQUFJLDZCQUFvQixDQUM1QixtQkFBbUIsR0FBRyw2Q0FBNkM7WUFDakUsc0NBQXNDLENBQ3pDLENBQUM7S0FDSDtBQUNILENBQUM7QUFFRCxTQUFnQixNQUFNLENBQUMsWUFBK0IsRUFBRSxPQUFnQjtJQUN0RSxNQUFNLEdBQUcsR0FBRyxPQUFPLFlBQVksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztJQUUvRSxJQUFJLEdBQUcsRUFBRTtRQUNQLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVkLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBRXZCLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQ3ZCO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBYkQsd0JBYUM7QUFFRCxTQUFnQixVQUFVLENBQUMsWUFBK0I7SUFDeEQsSUFBSSxPQUFlLENBQUM7SUFFcEIsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRTtRQUM1RCxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztLQUNoQztTQUFNLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxHQUFHLEVBQUU7UUFDL0QsTUFBTSxHQUFHLEdBQUcsT0FBTyxZQUFZ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
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export declare function createSqlDataSource(uriOrOptions: ConnectionOptions, opt
|
|
|
9
9
|
}): DataSourceFactory;
|
|
10
10
|
export type { ConnectionOptions, Table, SslMode };
|
|
11
11
|
export { default as preprocessOptions } from './connection/preprocess';
|
|
12
|
+
export * from './connection/errors';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
18
|
};
|
|
@@ -44,4 +58,5 @@ function createSqlDataSource(uriOrOptions, options) {
|
|
|
44
58
|
exports.createSqlDataSource = createSqlDataSource;
|
|
45
59
|
var preprocess_1 = require("./connection/preprocess");
|
|
46
60
|
Object.defineProperty(exports, "preprocessOptions", { enumerable: true, get: function () { return __importDefault(preprocess_1).default; } });
|
|
47
|
-
|
|
61
|
+
__exportStar(require("./connection/errors"), exports);
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSw0RUFBd0U7QUFHeEUsOERBQW1DO0FBQ25DLGdGQUF3RDtBQUN4RCxnRUFBK0M7QUFDL0Msd0VBQXNEO0FBRS9DLEtBQUssVUFBVSxVQUFVLENBQzlCLFlBQStCLEVBQy9CLE1BQWU7SUFFZixJQUFJLFNBQW9CLENBQUM7SUFFekIsSUFBSTtRQUNGLFNBQVMsR0FBRyxNQUFNLElBQUEsb0JBQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFaEQsT0FBTyxNQUFNLHNCQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN6RDtZQUFTO1FBQ1IsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDMUI7QUFDSCxDQUFDO0FBYkQsZ0NBYUM7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLFlBQStCLEVBQy9CLE1BQWMsRUFDZCxhQUF1QjtJQUV2QixJQUFJLFNBQW9CLENBQUM7SUFFekIsSUFBSTtRQUNGLFNBQVMsR0FBRyxNQUFNLElBQUEsb0JBQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxNQUFNLEdBQUcsYUFBYSxJQUFJLENBQUMsTUFBTSxzQkFBWSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNuRixlQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckQsbUJBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM1RDtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxLQUFLLENBQUM7S0FDYjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFsQkQsd0RBa0JDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQ2pDLFlBQStCLEVBQy9CLE9BQW9DO0lBRXBDLE9BQU8sS0FBSyxFQUFFLE1BQWMsRUFBRSxFQUFFO1FBQzlCLE1BQU0sU0FBUyxHQUFHLE1BQU0sc0JBQXNCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFN0YsT0FBTyxJQUFJLDBDQUFtQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsa0RBU0M7QUFHRCxzREFBdUU7QUFBOUQsZ0lBQUEsT0FBTyxPQUFxQjtBQUNyQyxzREFBb0MifQ==
|