@forestadmin/datasource-sql 1.5.2 → 1.6.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.
- package/dist/connection/index.js +24 -4
- package/dist/connection/reverse-proxy.d.ts +16 -0
- package/dist/connection/reverse-proxy.js +96 -0
- package/dist/index.js +20 -9
- package/dist/types.d.ts +8 -0
- package/package.json +3 -2
package/dist/connection/index.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const sequelize_1 = require("sequelize");
|
|
7
7
|
const preprocess_1 = __importDefault(require("./preprocess"));
|
|
8
|
+
const reverse_proxy_1 = __importDefault(require("./reverse-proxy"));
|
|
8
9
|
const utils_1 = require("./utils");
|
|
9
10
|
function getSslConfiguration(dialect, sslMode, logger) {
|
|
10
11
|
switch (dialect) {
|
|
@@ -53,23 +54,42 @@ function getSslConfiguration(dialect, sslMode, logger) {
|
|
|
53
54
|
}
|
|
54
55
|
/** Attempt to connect to the database */
|
|
55
56
|
async function connect(uriOrOptions, logger) {
|
|
57
|
+
let proxy;
|
|
58
|
+
let sequelize;
|
|
56
59
|
try {
|
|
57
|
-
|
|
60
|
+
let options = await (0, preprocess_1.default)(uriOrOptions);
|
|
61
|
+
if (options.proxySocks) {
|
|
62
|
+
proxy = new reverse_proxy_1.default(options);
|
|
63
|
+
await proxy.start();
|
|
64
|
+
options = proxy.connectionOptions;
|
|
65
|
+
}
|
|
66
|
+
const { uri, sslMode, ...opts } = options;
|
|
58
67
|
const schema = opts.schema ?? (0, utils_1.getSchema)(uri);
|
|
59
68
|
const logging = logger ? (0, utils_1.getLogger)(logger) : false;
|
|
60
69
|
opts.dialectOptions = {
|
|
61
70
|
...(opts.dialectOptions ?? {}),
|
|
62
71
|
...getSslConfiguration(opts.dialect, sslMode, logger),
|
|
63
72
|
};
|
|
64
|
-
|
|
73
|
+
sequelize = uri
|
|
65
74
|
? new sequelize_1.Sequelize(uri, { ...opts, schema, logging })
|
|
66
75
|
: new sequelize_1.Sequelize({ ...opts, schema, logging });
|
|
76
|
+
// we want to stop the proxy when the sequelize connection is closed
|
|
77
|
+
sequelize.close = async function close() {
|
|
78
|
+
try {
|
|
79
|
+
await sequelize_1.Sequelize.prototype.close.call(this);
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
await proxy?.stop();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
67
85
|
await sequelize.authenticate(); // Test connection
|
|
68
86
|
return sequelize;
|
|
69
87
|
}
|
|
70
88
|
catch (e) {
|
|
71
|
-
|
|
89
|
+
await sequelize?.close();
|
|
90
|
+
// if proxy encountered an error, we want to throw it instead of the sequelize error
|
|
91
|
+
(0, utils_1.handleSequelizeError)(proxy?.error || e);
|
|
72
92
|
}
|
|
73
93
|
}
|
|
74
94
|
exports.default = connect;
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29ubmVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQUErQztBQUUvQyw4REFBNkM7QUFDN0Msb0VBQTJDO0FBQzNDLG1DQUFxRTtBQUVyRSxTQUFTLG1CQUFtQixDQUMxQixPQUFnQixFQUNoQixPQUFnQixFQUNoQixNQUFlO0lBRWYsUUFBUSxPQUFPLEVBQUU7UUFDZixLQUFLLFNBQVM7WUFDWixJQUFJLE9BQU8sS0FBSyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEQsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMxRSxJQUFJLE9BQU8sS0FBSyxRQUFRO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDL0MsTUFBTTtRQUVSLEtBQUssT0FBTztZQUNWLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25FLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEUsSUFBSSxPQUFPLEtBQUssUUFBUTtnQkFDdEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2RSxNQUFNO1FBRVIsS0FBSyxPQUFPO1lBQ1YsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxD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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ConnectionOptionsObj } from '../types';
|
|
2
|
+
export default class ReverseProxy {
|
|
3
|
+
private readonly errors;
|
|
4
|
+
private readonly server;
|
|
5
|
+
private readonly destination;
|
|
6
|
+
private readonly connectedClients;
|
|
7
|
+
constructor(destination: ConnectionOptionsObj);
|
|
8
|
+
start(): Promise<void>;
|
|
9
|
+
stop(): Promise<void>;
|
|
10
|
+
get connectionOptions(): ConnectionOptionsObj;
|
|
11
|
+
get error(): Error | null;
|
|
12
|
+
private get destinationHost();
|
|
13
|
+
private get destinationPort();
|
|
14
|
+
private onConnection;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=reverse-proxy.d.ts.map
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const net_1 = __importDefault(require("net"));
|
|
7
|
+
const socks_1 = require("socks");
|
|
8
|
+
class ReverseProxy {
|
|
9
|
+
constructor(destination) {
|
|
10
|
+
this.errors = [];
|
|
11
|
+
this.connectedClients = new Set();
|
|
12
|
+
this.destination = destination;
|
|
13
|
+
this.server = net_1.default.createServer(this.onConnection.bind(this));
|
|
14
|
+
if (!this.destinationPort)
|
|
15
|
+
throw new Error('Port is required');
|
|
16
|
+
if (!this.destinationHost)
|
|
17
|
+
throw new Error('Host is required');
|
|
18
|
+
}
|
|
19
|
+
start() {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
this.server.on('error', reject);
|
|
22
|
+
this.server.listen(0, '127.0.0.1', resolve);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
stop() {
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
this.server.close(e => {
|
|
28
|
+
if (e)
|
|
29
|
+
reject(e);
|
|
30
|
+
else
|
|
31
|
+
resolve();
|
|
32
|
+
});
|
|
33
|
+
this.connectedClients.forEach(client => client.destroy());
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
get connectionOptions() {
|
|
37
|
+
const { address, port } = this.server.address();
|
|
38
|
+
const connection = { ...this.destination };
|
|
39
|
+
if (this.destination.uri) {
|
|
40
|
+
const uri = new URL(this.destination.uri);
|
|
41
|
+
uri.host = address;
|
|
42
|
+
uri.port = port.toString();
|
|
43
|
+
connection.uri = uri.toString();
|
|
44
|
+
}
|
|
45
|
+
connection.host = address;
|
|
46
|
+
connection.port = port;
|
|
47
|
+
return connection;
|
|
48
|
+
}
|
|
49
|
+
get error() {
|
|
50
|
+
return this.errors.length > 0 ? this.errors[0] : null;
|
|
51
|
+
}
|
|
52
|
+
get destinationHost() {
|
|
53
|
+
return this.destination.uri ? new URL(this.destination.uri).hostname : this.destination.host;
|
|
54
|
+
}
|
|
55
|
+
get destinationPort() {
|
|
56
|
+
return Number(this.destination.uri ? new URL(this.destination.uri).port : this.destination.port);
|
|
57
|
+
}
|
|
58
|
+
async onConnection(socket) {
|
|
59
|
+
let socks5Proxy;
|
|
60
|
+
this.connectedClients.add(socket);
|
|
61
|
+
socket.on('error', error => {
|
|
62
|
+
this.errors.push(error);
|
|
63
|
+
if (!socket.closed) {
|
|
64
|
+
socket.destroy(error);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
socket.on('close', () => {
|
|
68
|
+
this.connectedClients.delete(socket);
|
|
69
|
+
if (!socks5Proxy?.socket.closed) {
|
|
70
|
+
socks5Proxy?.socket.destroy();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
try {
|
|
74
|
+
socks5Proxy = await socks_1.SocksClient.createConnection({
|
|
75
|
+
proxy: { ...this.destination.proxySocks, type: 5 },
|
|
76
|
+
command: 'connect',
|
|
77
|
+
destination: { host: this.destinationHost, port: this.destinationPort },
|
|
78
|
+
timeout: 4000,
|
|
79
|
+
});
|
|
80
|
+
socks5Proxy.socket.on('close', () => {
|
|
81
|
+
this.connectedClients.delete(socks5Proxy.socket);
|
|
82
|
+
if (!socket.closed) {
|
|
83
|
+
socket.destroy();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
socks5Proxy.socket.on('error', socket.destroy);
|
|
87
|
+
socks5Proxy.socket.pipe(socket);
|
|
88
|
+
socket.pipe(socks5Proxy.socket);
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
socket.destroy(err);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.default = ReverseProxy;
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJzZS1wcm94eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25uZWN0aW9uL3JldmVyc2UtcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIsaUNBQW9DO0FBS3BDLE1BQXFCLFlBQVk7SUFNL0IsWUFBWSxXQUFpQztRQUw1QixXQUFNLEdBQVksRUFBRSxDQUFDO1FBR3JCLHFCQUFnQixHQUFvQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRzdELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNwQixJ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
|
package/dist/index.js
CHANGED
|
@@ -10,17 +10,28 @@ const introspector_1 = __importDefault(require("./introspection/introspector"));
|
|
|
10
10
|
const model_1 = __importDefault(require("./orm-builder/model"));
|
|
11
11
|
const relations_1 = __importDefault(require("./orm-builder/relations"));
|
|
12
12
|
async function introspect(uriOrOptions, logger) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
let sequelize;
|
|
14
|
+
try {
|
|
15
|
+
sequelize = await (0, connection_1.default)(uriOrOptions, logger);
|
|
16
|
+
return await introspector_1.default.introspect(sequelize, logger);
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
await sequelize?.close();
|
|
20
|
+
}
|
|
17
21
|
}
|
|
18
22
|
exports.introspect = introspect;
|
|
19
23
|
async function buildSequelizeInstance(uriOrOptions, logger, introspection) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
let sequelize;
|
|
25
|
+
try {
|
|
26
|
+
sequelize = await (0, connection_1.default)(uriOrOptions, logger);
|
|
27
|
+
const tables = introspection ?? (await introspector_1.default.introspect(sequelize, logger));
|
|
28
|
+
model_1.default.defineModels(sequelize, logger, tables);
|
|
29
|
+
relations_1.default.defineRelations(sequelize, logger, tables);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
await sequelize?.close();
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
24
35
|
return sequelize;
|
|
25
36
|
}
|
|
26
37
|
exports.buildSequelizeInstance = buildSequelizeInstance;
|
|
@@ -33,4 +44,4 @@ function createSqlDataSource(uriOrOptions, options) {
|
|
|
33
44
|
exports.createSqlDataSource = createSqlDataSource;
|
|
34
45
|
var preprocess_1 = require("./connection/preprocess");
|
|
35
46
|
Object.defineProperty(exports, "preprocessOptions", { enumerable: true, get: function () { return __importDefault(preprocess_1).default; } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBSUEsNEVBQXdFO0FBR3hFLDhEQUFtQztBQUNuQyxnRkFBd0Q7QUFDeEQsZ0VBQStDO0FBQy9DLHdFQUFzRDtBQUUvQyxLQUFLLFVBQVUsVUFBVSxDQUM5QixZQUErQixFQUMvQixNQUFlO0lBRWYsSUFBSSxTQUFvQixDQUFDO0lBRXpCLElBQUk7UUFDRixTQUFTLEdBQUcsTUFBTSxJQUFBLG9CQUFPLEVBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWhELE9BQU8sTUFBTSxzQkFBWSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDekQ7WUFBUztRQUNSLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0tBQzFCO0FBQ0gsQ0FBQztBQWJELGdDQWFDO0FBRU0sS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxZQUErQixFQUMvQixNQUFjLEVBQ2QsYUFBdUI7SUFFdkIsSUFBSSxTQUFvQixDQUFDO0lBRXpCLElBQUk7UUFDRixTQUFTLEdBQUcsTUFBTSxJQUFBLG9CQUFPLEVBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sTUFBTSxHQUFHLGFBQWEsSUFBSSxDQUFDLE1BQU0sc0JBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbkYsZUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELG1CQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDNUQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxDQUFDO0tBQ2I7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBbEJELHdEQWtCQztBQUVELFNBQWdCLG1CQUFtQixDQUNqQyxZQUErQixFQUMvQixPQUFvQztJQUVwQyxPQUFPLEtBQUssRUFBRSxNQUFjLEVBQUUsRUFBRTtRQUM5QixNQUFNLFNBQVMsR0FBRyxNQUFNLHNCQUFzQixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTdGLE9BQU8sSUFBSSwwQ0FBbUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVRELGtEQVNDO0FBR0Qsc0RBQXVFO0FBQTlELGdJQUFBLE9BQU8sT0FBcUIifQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -2,6 +2,14 @@ import { Options } from 'sequelize/types';
|
|
|
2
2
|
export type ConnectionOptionsObj = {
|
|
3
3
|
uri?: string;
|
|
4
4
|
sslMode?: SslMode;
|
|
5
|
+
proxySocks?: {
|
|
6
|
+
userId?: string;
|
|
7
|
+
password?: string;
|
|
8
|
+
host: string;
|
|
9
|
+
port: number;
|
|
10
|
+
version?: 5;
|
|
11
|
+
command?: 'connect';
|
|
12
|
+
};
|
|
5
13
|
} & Pick<Options, 'database' | 'dialect' | 'dialectModule' | 'dialectModulePath' | 'dialectOptions' | 'host' | 'minifyAliases' | 'native' | 'password' | 'pool' | 'port' | 'protocol' | 'replication' | 'schema' | 'ssl' | 'storage' | 'username'>;
|
|
6
14
|
export type ConnectionOptions = ConnectionOptionsObj | string;
|
|
7
15
|
export type SslMode = 'preferred' | 'disabled' | 'required' | 'verify' | 'manual';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/datasource-sql",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"@forestadmin/datasource-sequelize": "1.3.1",
|
|
16
16
|
"@forestadmin/datasource-toolkit": "1.5.0",
|
|
17
17
|
"pluralize": "^8.0.0",
|
|
18
|
-
"sequelize": "^6.28.0"
|
|
18
|
+
"sequelize": "^6.28.0",
|
|
19
|
+
"socks": "^2.7.1"
|
|
19
20
|
},
|
|
20
21
|
"files": [
|
|
21
22
|
"dist/**/*.js",
|