@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.
@@ -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
- const { uri, sslMode, ...opts } = await (0, preprocess_1.default)(uriOrOptions);
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
- const sequelize = uri
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
- (0, utils_1.handleSequelizeError)(e);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29ubmVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQUErQztBQUUvQyw4REFBNkM7QUFDN0MsbUNBQXFFO0FBRXJFLFNBQVMsbUJBQW1CLENBQzFCLE9BQWdCLEVBQ2hCLE9BQWdCLEVBQ2hCLE1BQWU7SUFFZixRQUFRLE9BQU8sRUFBRTtRQUNmLEtBQUssU0FBUztZQUNaLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNsRCxJQUFJLE9BQU8sS0FBSyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzFFLElBQUksT0FBTyxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUMvQyxNQUFNO1FBRVIsS0FBSyxPQUFPO1lBQ1YsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbkUsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0RSxJQUFJLE9BQU8sS0FBSyxRQUFRO2dCQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZFLE1BQU07UUFFUixLQUFLLE9BQU87WUFDVixJQUFJLE9BQU8sS0FBSyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEQsSUFB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
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29ubmVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQUErQztBQUUvQyw4REFBNkM7QUFDN0Msb0VBQTJDO0FBQzNDLG1DQUFxRTtBQUVyRSxTQUFTLG1CQUFtQixDQUMxQixPQUFnQixFQUNoQixPQUFnQixFQUNoQixNQUFlO0lBRWYsUUFBUSxPQUFPLEVBQUU7UUFDZixLQUFLLFNBQVM7WUFDWixJQUFJLE9BQU8sS0FBSyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEQsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMxRSxJQUFJLE9BQU8sS0FBSyxRQUFRO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDL0MsTUFBTTtRQUVSLEtBQUssT0FBTztZQUNWLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25FLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEUsSUFBSSxPQUFPLEtBQUssUUFBUTtnQkFDdEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2RSxNQUFNO1FBRVIsS0FBSyxPQUFPO1lBQ1YsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2xELElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUUsSUFBSSxPQUFPLEtBQUssUUFBUTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN2RSxNQUFNO1FBRVIsS0FBSyxVQUFVO1lBQ2IsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2xELElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN6RixJQUFJLE9BQU8sS0FBSyxRQUFRO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEYsTUFBTTtRQUVSLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFdBQVcsQ0FBQztRQUNqQixLQUFLLFFBQVEsQ0FBQztRQUNkO1lBQ0UsSUFBSSxPQUFPLElBQUksT0FBTyxLQUFLLFFBQVEsRUFBRTtnQkFDbkMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLG9CQUFvQixPQUFPLHVCQUF1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO2FBQ2hGO1lBRUQsT0FBTyxFQUFFLENBQUM7S0FDYjtBQUNILENBQUM7QUFFRCx5Q0FBeUM7QUFDMUIsS0FBSyxVQUFVLE9BQU8sQ0FDbkMsWUFBK0IsRUFDL0IsTUFBZTtJQUVmLElBQUksS0FBK0IsQ0FBQztJQUNwQyxJQUFJLFNBQWdDLENBQUM7SUFFckMsSUFBSTtRQUNGLElBQUksT0FBTyxHQUFHLE1BQU0sSUFBQSxvQkFBaUIsRUFBQyxZQUFZLENBQUMsQ0FBQztRQUVwRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDdEIsS0FBSyxHQUFHLElBQUksdUJBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixPQUFPLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1NBQ25DO1FBRUQsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFBLGlCQUFTLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLGlCQUFTLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVuRCxJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztZQUM5QixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUN0RCxDQUFDO1FBRUYsU0FBUyxHQUFHLEdBQUc7WUFDYixDQUFDLENBQUMsSUFBSSxxQkFBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNsRCxDQUFDLENBQUMsSUFBSSxxQkFBUyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFaEQsb0VBQW9FO1FBQ3BFLFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxVQUFVLEtBQUs7WUFDcEMsSUFBSTtnQkFDRixNQUFNLHFCQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDNUM7b0JBQVM7Z0JBQ1IsTUFBTSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUM7UUFFRixNQUFNLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtRQUVsRCxPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDekIsb0ZBQW9GO1FBQ3BGLElBQUEsNEJBQW9CLEVBQUMsS0FBSyxFQUFFLEtBQUssSUFBSyxDQUFXLENBQUMsQ0FBQztLQUNwRDtBQUNILENBQUM7QUE5Q0QsMEJBOENDIn0=
@@ -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
- const sequelize = await (0, connection_1.default)(uriOrOptions, logger);
14
- const tables = await introspector_1.default.introspect(sequelize, logger);
15
- await sequelize.close();
16
- return tables;
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
- const sequelize = await (0, connection_1.default)(uriOrOptions, logger);
21
- const tables = introspection ?? (await introspector_1.default.introspect(sequelize, logger));
22
- model_1.default.defineModels(sequelize, logger, tables);
23
- relations_1.default.defineRelations(sequelize, logger, tables);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBSUEsNEVBQXdFO0FBR3hFLDhEQUFtQztBQUNuQyxnRkFBd0Q7QUFDeEQsZ0VBQStDO0FBQy9DLHdFQUFzRDtBQUUvQyxLQUFLLFVBQVUsVUFBVSxDQUM5QixZQUErQixFQUMvQixNQUFlO0lBRWYsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFBLG9CQUFPLEVBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLE1BQU0sc0JBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXhCLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFURCxnQ0FTQztBQUVNLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsWUFBK0IsRUFDL0IsTUFBYyxFQUNkLGFBQXVCO0lBRXZCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBQSxvQkFBTyxFQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBRyxhQUFhLElBQUksQ0FBQyxNQUFNLHNCQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRW5GLGVBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxtQkFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFaRCx3REFZQztBQUVELFNBQWdCLG1CQUFtQixDQUNqQyxZQUErQixFQUMvQixPQUFvQztJQUVwQyxPQUFPLEtBQUssRUFBRSxNQUFjLEVBQUUsRUFBRTtRQUM5QixNQUFNLFNBQVMsR0FBRyxNQUFNLHNCQUFzQixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTdGLE9BQU8sSUFBSSwwQ0FBbUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVRELGtEQVNDO0FBR0Qsc0RBQXVFO0FBQTlELGdJQUFBLE9BQU8sT0FBcUIifQ==
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.5.2",
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",