@zkp2p/reclaim-witness-sdk
Version:
<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>
60 lines • 4.65 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeRpcTcpTunnel = void 0;
const utils_1 = require("../../utils");
/**
* Makes a tunnel communication wrapper for a TCP tunnel.
*
* It listens for messages and disconnect events from the server,
* and appropriately calls the `onMessage` and `onClose` callbacks.
*/
const makeRpcTcpTunnel = ({ tunnelId, client, onClose, onMessage, }) => {
let closed = false;
client.addEventListener('tunnel-message', onMessageListener);
client.addEventListener('tunnel-disconnect-event', onDisconnectListener);
client.addEventListener('connection-terminated', onConnectionTerminatedListener);
return {
async write(message) {
await client.sendMessage({
tunnelMessage: { tunnelId, message }
});
},
async close(err) {
if (closed) {
return;
}
onErrorRecv(err);
await client.rpc('disconnectTunnel', { id: tunnelId });
}
};
function onMessageListener({ data }) {
if (data.tunnelId !== tunnelId) {
return;
}
onMessage === null || onMessage === void 0 ? void 0 : onMessage(data.message);
}
function onDisconnectListener({ data }) {
var _a;
if (data.tunnelId !== tunnelId) {
return;
}
onErrorRecv(((_a = data.error) === null || _a === void 0 ? void 0 : _a.code)
? utils_1.AttestorError.fromProto(data.error)
: undefined);
}
function onConnectionTerminatedListener({ data }) {
onErrorRecv(data);
}
function onErrorRecv(err) {
var _a;
(_a = client.logger) === null || _a === void 0 ? void 0 : _a.debug({ tunnelId, err }, 'TCP tunnel closed');
client.removeEventListener('tunnel-message', onMessageListener);
client.removeEventListener('tunnel-disconnect-event', onDisconnectListener);
client.removeEventListener('connection-terminated', onConnectionTerminatedListener);
onClose === null || onClose === void 0 ? void 0 : onClose(err);
onClose = undefined;
closed = true;
}
};
exports.makeRpcTcpTunnel = makeRpcTcpTunnel;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1ycGMtdGNwLXR1bm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvdHVubmVscy9tYWtlLXJwYy10Y3AtdHVubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHFDQUF5QztBQVV6Qzs7Ozs7R0FLRztBQUNJLE1BQU0sZ0JBQWdCLEdBQXNDLENBQUMsRUFDbkUsUUFBUSxFQUNSLE1BQU0sRUFDTixPQUFPLEVBQ1AsU0FBUyxHQUNULEVBQUUsRUFBRTtJQUNKLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQTtJQUNsQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtJQUM1RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtJQUN4RSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsOEJBQThCLENBQUMsQ0FBQTtJQUVoRixPQUFPO1FBQ04sS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQ2xCLE1BQU0sTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDeEIsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTthQUNwQyxDQUFDLENBQUE7UUFDSCxDQUFDO1FBQ0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ2QsSUFBRyxNQUFNLEVBQUUsQ0FBQztnQkFDWCxPQUFNO1lBQ1AsQ0FBQztZQUVELFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNoQixNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUN2RCxDQUFDO0tBQ0QsQ0FBQTtJQUVELFNBQVMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQThCO1FBQzlELElBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQixPQUFNO1FBQ1AsQ0FBQztRQUVELFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUVELFNBQVMsb0JBQW9CLENBQUMsRUFBRSxJQUFJLEVBQXVDOztRQUMxRSxJQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsT0FBTTtRQUNQLENBQUM7UUFFRCxXQUFXLENBQ1YsQ0FBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLElBQUk7WUFDZixDQUFDLENBQUMscUJBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNyQyxDQUFDLENBQUMsU0FBUyxDQUNaLENBQUE7SUFDRixDQUFDO0lBRUQsU0FBUyw4QkFBOEIsQ0FBQyxFQUFFLElBQUksRUFBcUM7UUFDbEYsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxTQUFTLFdBQVcsQ0FBQyxHQUFzQjs7UUFDMUMsTUFBQSxNQUFNLENBQUMsTUFBTSwwQ0FBRSxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtRQUU1RCxNQUFNLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtRQUMvRCxNQUFNLENBQUMsbUJBQW1CLENBQUMseUJBQXlCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtRQUMzRSxNQUFNLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLEVBQUUsOEJBQThCLENBQUMsQ0FBQTtRQUNuRixPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUcsR0FBRyxDQUFDLENBQUE7UUFDZCxPQUFPLEdBQUcsU0FBUyxDQUFBO1FBQ25CLE1BQU0sR0FBRyxJQUFJLENBQUE7SUFDZCxDQUFDO0FBQ0YsQ0FBQyxDQUFBO0FBN0RZLFFBQUEsZ0JBQWdCLG9CQTZENUIifQ==
;