forked from lix-project/lix-website
46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const tls_1 = require("tls");
|
||
|
const deferToConnect = (socket, fn) => {
|
||
|
let listeners;
|
||
|
if (typeof fn === 'function') {
|
||
|
const connect = fn;
|
||
|
listeners = { connect };
|
||
|
}
|
||
|
else {
|
||
|
listeners = fn;
|
||
|
}
|
||
|
const hasConnectListener = typeof listeners.connect === 'function';
|
||
|
const hasSecureConnectListener = typeof listeners.secureConnect === 'function';
|
||
|
const hasCloseListener = typeof listeners.close === 'function';
|
||
|
const onConnect = () => {
|
||
|
if (hasConnectListener) {
|
||
|
listeners.connect();
|
||
|
}
|
||
|
if (socket instanceof tls_1.TLSSocket && hasSecureConnectListener) {
|
||
|
if (socket.authorized) {
|
||
|
listeners.secureConnect();
|
||
|
}
|
||
|
else if (!socket.authorizationError) {
|
||
|
socket.once('secureConnect', listeners.secureConnect);
|
||
|
}
|
||
|
}
|
||
|
if (hasCloseListener) {
|
||
|
socket.once('close', listeners.close);
|
||
|
}
|
||
|
};
|
||
|
if (socket.writable && !socket.connecting) {
|
||
|
onConnect();
|
||
|
}
|
||
|
else if (socket.connecting) {
|
||
|
socket.once('connect', onConnect);
|
||
|
}
|
||
|
else if (socket.destroyed && hasCloseListener) {
|
||
|
listeners.close(socket._hadError);
|
||
|
}
|
||
|
};
|
||
|
exports.default = deferToConnect;
|
||
|
// For CommonJS default export support
|
||
|
module.exports = deferToConnect;
|
||
|
module.exports.default = deferToConnect;
|