insomnia-plugin-valorant
Version:
Adds template tags to Insomnia with Valorant data
60 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.asyncSocketRead = exports.asyncSocketWrite = exports.waitForConnect = void 0;
// Could use better types but this is just hacky code anyway
function handleFirstOfMany(emitter, eventNames, callback) {
const eventHandlers = eventNames.map(name => {
const handler = (...data) => {
for (const otherHandler of eventHandlers) {
if (otherHandler.name === name)
continue;
emitter.removeListener(otherHandler.name, otherHandler.handler);
}
callback(name, data);
};
emitter.once(name, handler);
return { name, handler };
});
}
async function waitForConnect(socket) {
if (!socket.connecting)
return;
return new Promise((resolve, reject) => {
handleFirstOfMany(socket, ['connect', 'error'], (name, data) => {
if (name === 'connect') {
resolve();
}
else if (name === 'error') {
reject(data[0]);
}
});
});
}
exports.waitForConnect = waitForConnect;
async function asyncSocketWrite(socket, data) {
return new Promise((resolve, reject) => {
socket.write(data, err => {
if (err)
reject(err);
else
resolve();
});
});
}
exports.asyncSocketWrite = asyncSocketWrite;
async function asyncSocketRead(socket, abortSignal) {
return new Promise((resolve, reject) => {
const onData = (data) => {
abortSignal?.removeEventListener('abort', onAbort);
resolve(data);
};
const onAbort = () => {
socket.removeListener('data', onData);
reject(new Error('Aborted'));
};
abortSignal?.addEventListener('abort', onAbort);
socket.once('data', onData);
});
}
exports.asyncSocketRead = asyncSocketRead;
//# sourceMappingURL=async-socket.js.map