@forestadmin/datasource-sql 1.6.0 → 1.6.2
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
CHANGED
|
@@ -55,6 +55,7 @@ function getSslConfiguration(dialect, sslMode, logger) {
|
|
|
55
55
|
/** Attempt to connect to the database */
|
|
56
56
|
async function connect(uriOrOptions, logger) {
|
|
57
57
|
let proxy;
|
|
58
|
+
let sequelize;
|
|
58
59
|
try {
|
|
59
60
|
let options = await (0, preprocess_1.default)(uriOrOptions);
|
|
60
61
|
if (options.proxySocks) {
|
|
@@ -69,22 +70,26 @@ async function connect(uriOrOptions, logger) {
|
|
|
69
70
|
...(opts.dialectOptions ?? {}),
|
|
70
71
|
...getSslConfiguration(opts.dialect, sslMode, logger),
|
|
71
72
|
};
|
|
72
|
-
|
|
73
|
+
sequelize = uri
|
|
73
74
|
? new sequelize_1.Sequelize(uri, { ...opts, schema, logging })
|
|
74
75
|
: new sequelize_1.Sequelize({ ...opts, schema, logging });
|
|
75
76
|
// we want to stop the proxy when the sequelize connection is closed
|
|
76
77
|
sequelize.close = async function close() {
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
try {
|
|
79
|
+
await sequelize_1.Sequelize.prototype.close.call(this);
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
await proxy?.stop();
|
|
83
|
+
}
|
|
79
84
|
};
|
|
80
85
|
await sequelize.authenticate(); // Test connection
|
|
81
86
|
return sequelize;
|
|
82
87
|
}
|
|
83
88
|
catch (e) {
|
|
84
|
-
await
|
|
89
|
+
await sequelize?.close();
|
|
85
90
|
// if proxy encountered an error, we want to throw it instead of the sequelize error
|
|
86
|
-
(0, utils_1.handleSequelizeError)(proxy?.
|
|
91
|
+
(0, utils_1.handleSequelizeError)(proxy?.error || e);
|
|
87
92
|
}
|
|
88
93
|
}
|
|
89
94
|
exports.default = connect;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29ubmVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQUErQztBQUUvQyw4REFBNkM7QUFDN0Msb0VBQTJDO0FBQzNDLG1DQUFxRTtBQUVyRSxTQUFTLG1CQUFtQixDQUMxQixPQUFnQixFQUNoQixPQUFnQixFQUNoQixNQUFlO0lBRWYsUUFBUSxPQUFPLEVBQUU7UUFDZixLQUFLLFNBQVM7WUFDWixJQUFJLE9BQU8sS0FBSyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEQsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMxRSxJQUFJLE9BQU8sS0FBSyxRQUFRO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDL0MsTUFBTTtRQUVSLEtBQUssT0FBTztZQUNWLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25FLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEUsSUFBSSxPQUFPLEtBQUssUUFBUTtnQkFDdEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2RSxNQUFNO1FBRVIsS0FBSyxPQUFPO1lBQ1YsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxD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
|
|
@@ -3,11 +3,12 @@ export default class ReverseProxy {
|
|
|
3
3
|
private readonly errors;
|
|
4
4
|
private readonly server;
|
|
5
5
|
private readonly destination;
|
|
6
|
+
private readonly connectedClients;
|
|
6
7
|
constructor(destination: ConnectionOptionsObj);
|
|
7
8
|
start(): Promise<void>;
|
|
8
9
|
stop(): Promise<void>;
|
|
9
10
|
get connectionOptions(): ConnectionOptionsObj;
|
|
10
|
-
|
|
11
|
+
get error(): Error | null;
|
|
11
12
|
private get destinationHost();
|
|
12
13
|
private get destinationPort();
|
|
13
14
|
private onConnection;
|
|
@@ -8,6 +8,7 @@ const socks_1 = require("socks");
|
|
|
8
8
|
class ReverseProxy {
|
|
9
9
|
constructor(destination) {
|
|
10
10
|
this.errors = [];
|
|
11
|
+
this.connectedClients = new Set();
|
|
11
12
|
this.destination = destination;
|
|
12
13
|
this.server = net_1.default.createServer(this.onConnection.bind(this));
|
|
13
14
|
if (!this.destinationPort)
|
|
@@ -22,8 +23,14 @@ class ReverseProxy {
|
|
|
22
23
|
});
|
|
23
24
|
}
|
|
24
25
|
stop() {
|
|
25
|
-
return new Promise(resolve => {
|
|
26
|
-
this.server.close(
|
|
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());
|
|
27
34
|
});
|
|
28
35
|
}
|
|
29
36
|
get connectionOptions() {
|
|
@@ -39,22 +46,55 @@ class ReverseProxy {
|
|
|
39
46
|
connection.port = port;
|
|
40
47
|
return connection;
|
|
41
48
|
}
|
|
42
|
-
|
|
49
|
+
get error() {
|
|
43
50
|
return this.errors.length > 0 ? this.errors[0] : null;
|
|
44
51
|
}
|
|
45
52
|
get destinationHost() {
|
|
46
53
|
return this.destination.uri ? new URL(this.destination.uri).hostname : this.destination.host;
|
|
47
54
|
}
|
|
48
55
|
get destinationPort() {
|
|
49
|
-
|
|
56
|
+
// Use port from object or uri if provided
|
|
57
|
+
if (this.destination.port)
|
|
58
|
+
return this.destination.port;
|
|
59
|
+
if (this.destination.uri && new URL(this.destination.uri).port)
|
|
60
|
+
return Number(new URL(this.destination.uri).port);
|
|
61
|
+
// Use default port for known dialects otherwise
|
|
62
|
+
if (this.destination.dialect === 'postgres')
|
|
63
|
+
return 5432;
|
|
64
|
+
if (this.destination.dialect === 'mysql' || this.destination.dialect === 'mariadb')
|
|
65
|
+
return 3306;
|
|
66
|
+
if (this.destination.dialect === 'mssql')
|
|
67
|
+
return 1433;
|
|
68
|
+
// Otherwise throw an error
|
|
69
|
+
throw new Error('Port is required');
|
|
50
70
|
}
|
|
51
71
|
async onConnection(socket) {
|
|
52
|
-
|
|
72
|
+
let socks5Proxy;
|
|
73
|
+
this.connectedClients.add(socket);
|
|
74
|
+
socket.on('error', error => {
|
|
75
|
+
this.errors.push(error);
|
|
76
|
+
if (!socket.closed) {
|
|
77
|
+
socket.destroy(error);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
socket.on('close', () => {
|
|
81
|
+
this.connectedClients.delete(socket);
|
|
82
|
+
if (!socks5Proxy?.socket.closed) {
|
|
83
|
+
socks5Proxy?.socket.destroy();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
53
86
|
try {
|
|
54
|
-
|
|
87
|
+
socks5Proxy = await socks_1.SocksClient.createConnection({
|
|
55
88
|
proxy: { ...this.destination.proxySocks, type: 5 },
|
|
56
89
|
command: 'connect',
|
|
57
90
|
destination: { host: this.destinationHost, port: this.destinationPort },
|
|
91
|
+
timeout: 4000,
|
|
92
|
+
});
|
|
93
|
+
socks5Proxy.socket.on('close', () => {
|
|
94
|
+
this.connectedClients.delete(socks5Proxy.socket);
|
|
95
|
+
if (!socket.closed) {
|
|
96
|
+
socket.destroy();
|
|
97
|
+
}
|
|
58
98
|
});
|
|
59
99
|
socks5Proxy.socket.on('error', socket.destroy);
|
|
60
100
|
socks5Proxy.socket.pipe(socket);
|
|
@@ -66,4 +106,4 @@ class ReverseProxy {
|
|
|
66
106
|
}
|
|
67
107
|
}
|
|
68
108
|
exports.default = ReverseProxy;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# 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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/datasource-sql",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -28,8 +28,5 @@
|
|
|
28
28
|
"clean": "rm -rf coverage dist",
|
|
29
29
|
"lint": "eslint src test",
|
|
30
30
|
"test": "jest"
|
|
31
|
-
},
|
|
32
|
-
"devDependencies": {
|
|
33
|
-
"lodash": "^4.17.21"
|
|
34
31
|
}
|
|
35
32
|
}
|