2025-04-23 09:34:08 +08:00

71 lines
2.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const net_1 = require("net");
const tls_1 = require("tls");
const utils_1 = require("../utils");
const AbstractConnector_1 = require("./AbstractConnector");
function isIIpcConnectionOptions(value) {
return value.path;
}
exports.isIIpcConnectionOptions = isIIpcConnectionOptions;
class StandaloneConnector extends AbstractConnector_1.default {
constructor(options) {
super();
this.options = options;
}
connect(_) {
const { options } = this;
this.connecting = true;
let connectionOptions;
if (isIIpcConnectionOptions(options)) {
connectionOptions = {
path: options.path,
};
}
else {
connectionOptions = {};
if (options.port != null) {
connectionOptions.port = options.port;
}
if (options.host != null) {
connectionOptions.host = options.host;
}
if (options.family != null) {
connectionOptions.family = options.family;
}
}
if (options.tls) {
Object.assign(connectionOptions, options.tls);
}
// TODO:
// We use native Promise here since other Promise
// implementation may use different schedulers that
// cause issue when the stream is resolved in the
// next tick.
// Should use the provided promise in the next major
// version and do not connect before resolved.
return new Promise((resolve, reject) => {
process.nextTick(() => {
if (!this.connecting) {
reject(new Error(utils_1.CONNECTION_CLOSED_ERROR_MSG));
return;
}
try {
if (options.tls) {
this.stream = tls_1.connect(connectionOptions);
}
else {
this.stream = net_1.createConnection(connectionOptions);
}
}
catch (err) {
reject(err);
return;
}
resolve(this.stream);
});
});
}
}
exports.default = StandaloneConnector;