@forestadmin/datasource-sql 1.5.2 → 1.6.0

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,8 +54,15 @@ 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;
56
58
  try {
57
- const { uri, sslMode, ...opts } = await (0, preprocess_1.default)(uriOrOptions);
59
+ let options = await (0, preprocess_1.default)(uriOrOptions);
60
+ if (options.proxySocks) {
61
+ proxy = new reverse_proxy_1.default(options);
62
+ await proxy.start();
63
+ options = proxy.connectionOptions;
64
+ }
65
+ const { uri, sslMode, ...opts } = options;
58
66
  const schema = opts.schema ?? (0, utils_1.getSchema)(uri);
59
67
  const logging = logger ? (0, utils_1.getLogger)(logger) : false;
60
68
  opts.dialectOptions = {
@@ -64,12 +72,19 @@ async function connect(uriOrOptions, logger) {
64
72
  const sequelize = uri
65
73
  ? new sequelize_1.Sequelize(uri, { ...opts, schema, logging })
66
74
  : new sequelize_1.Sequelize({ ...opts, schema, logging });
75
+ // we want to stop the proxy when the sequelize connection is closed
76
+ sequelize.close = async function close() {
77
+ await sequelize_1.Sequelize.prototype.close.call(this);
78
+ await proxy?.stop();
79
+ };
67
80
  await sequelize.authenticate(); // Test connection
68
81
  return sequelize;
69
82
  }
70
83
  catch (e) {
71
- (0, utils_1.handleSequelizeError)(e);
84
+ await proxy?.stop();
85
+ // if proxy encountered an error, we want to throw it instead of the sequelize error
86
+ (0, utils_1.handleSequelizeError)(proxy?.getError() || e);
72
87
  }
73
88
  }
74
89
  exports.default = connect;
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29ubmVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQUErQztBQUUvQyw4REFBNkM7QUFDN0MsbUNBQXFFO0FBRXJFLFNBQVMsbUJBQW1CLENBQzFCLE9BQWdCLEVBQ2hCLE9BQWdCLEVBQ2hCLE1BQWU7SUFFZixRQUFRLE9BQU8sRUFBRTtRQUNmLEtBQUssU0FBUztZQUNaLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNsRCxJQUFJLE9BQU8sS0FBSyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzFFLElBQUksT0FBTyxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUMvQyxNQUFNO1FBRVIsS0FBSyxPQUFPO1lBQ1YsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbkUsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0RSxJQUFJLE9BQU8sS0FBSyxRQUFRO2dCQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZFLE1BQU07UUFFUixLQUFLLE9BQU87WUFDVixJQUFJLE9BQU8sS0FBSyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEQsSUFB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
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29ubmVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQUErQztBQUUvQyw4REFBNkM7QUFDN0Msb0VBQTJDO0FBQzNDLG1DQUFxRTtBQUVyRSxTQUFTLG1CQUFtQixDQUMxQixPQUFnQixFQUNoQixPQUFnQixFQUNoQixNQUFlO0lBRWYsUUFBUSxPQUFPLEVBQUU7UUFDZixLQUFLLFNBQVM7WUFDWixJQUFJLE9BQU8sS0FBSyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEQsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMxRSxJQUFJLE9BQU8sS0FBSyxRQUFRO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDL0MsTUFBTTtRQUVSLEtBQUssT0FBTztZQUNWLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25FLElBQUksT0FBTyxLQUFLLFVBQVU7Z0JBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEUsSUFBSSxPQUFPLEtBQUssUUFBUTtnQkFDdEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2RSxNQUFNO1FBRVIsS0FBSyxPQUFPO1lBQ1YsSUFBSSxPQUFPLEtBQUssVUFBVTtnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxD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
@@ -0,0 +1,15 @@
1
+ import { ConnectionOptionsObj } from '../types';
2
+ export default class ReverseProxy {
3
+ private readonly errors;
4
+ private readonly server;
5
+ private readonly destination;
6
+ constructor(destination: ConnectionOptionsObj);
7
+ start(): Promise<void>;
8
+ stop(): Promise<void>;
9
+ get connectionOptions(): ConnectionOptionsObj;
10
+ getError(): Error | null;
11
+ private get destinationHost();
12
+ private get destinationPort();
13
+ private onConnection;
14
+ }
15
+ //# sourceMappingURL=reverse-proxy.d.ts.map
@@ -0,0 +1,69 @@
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.destination = destination;
12
+ this.server = net_1.default.createServer(this.onConnection.bind(this));
13
+ if (!this.destinationPort)
14
+ throw new Error('Port is required');
15
+ if (!this.destinationHost)
16
+ throw new Error('Host is required');
17
+ }
18
+ start() {
19
+ return new Promise((resolve, reject) => {
20
+ this.server.on('error', reject);
21
+ this.server.listen(0, '127.0.0.1', resolve);
22
+ });
23
+ }
24
+ stop() {
25
+ return new Promise(resolve => {
26
+ this.server.close(() => resolve());
27
+ });
28
+ }
29
+ get connectionOptions() {
30
+ const { address, port } = this.server.address();
31
+ const connection = { ...this.destination };
32
+ if (this.destination.uri) {
33
+ const uri = new URL(this.destination.uri);
34
+ uri.host = address;
35
+ uri.port = port.toString();
36
+ connection.uri = uri.toString();
37
+ }
38
+ connection.host = address;
39
+ connection.port = port;
40
+ return connection;
41
+ }
42
+ getError() {
43
+ return this.errors.length > 0 ? this.errors[0] : null;
44
+ }
45
+ get destinationHost() {
46
+ return this.destination.uri ? new URL(this.destination.uri).hostname : this.destination.host;
47
+ }
48
+ get destinationPort() {
49
+ return Number(this.destination.uri ? new URL(this.destination.uri).port : this.destination.port);
50
+ }
51
+ async onConnection(socket) {
52
+ socket.on('error', error => this.errors.push(error));
53
+ try {
54
+ const socks5Proxy = await socks_1.SocksClient.createConnection({
55
+ proxy: { ...this.destination.proxySocks, type: 5 },
56
+ command: 'connect',
57
+ destination: { host: this.destinationHost, port: this.destinationPort },
58
+ });
59
+ socks5Proxy.socket.on('error', socket.destroy);
60
+ socks5Proxy.socket.pipe(socket);
61
+ socket.pipe(socks5Proxy.socket);
62
+ }
63
+ catch (err) {
64
+ socket.destroy(err);
65
+ }
66
+ }
67
+ }
68
+ exports.default = ReverseProxy;
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJzZS1wcm94eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25uZWN0aW9uL3JldmVyc2UtcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIsaUNBQW9DO0FBSXBDLE1BQXFCLFlBQVk7SUFLL0IsWUFBWSxXQUFpQztRQUo1QixXQUFNLEdBQVksRUFBRSxDQUFDO1FBS3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBVyxp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
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.0",
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",