@zkp2p/reclaim-witness-sdk
Version:
<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>
93 lines • 7.65 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.wsMessageHandler = wsMessageHandler;
exports.handleMessage = handleMessage;
const api_1 = require("../../proto/api");
const utils_1 = require("../../utils");
async function wsMessageHandler(data) {
// extract array buffer from WS data & decode proto
const buff = await (0, utils_1.extractArrayBufferFromWsData)(data);
const { messages } = api_1.RPCMessages.decode(buff);
for (const msg of messages) {
await handleMessage.call(this, msg);
}
}
function handleMessage(msg) {
var _a;
// handle connection termination alert
if (msg.connectionTerminationAlert) {
const err = utils_1.AttestorError.fromProto(msg.connectionTerminationAlert);
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn({
err: err.code !== 'ERROR_NO_ERROR'
? err
: undefined
}, 'received connection termination alert');
this.dispatchRPCEvent('connection-terminated', err);
return;
}
const rpcRequest = (0, utils_1.getRpcRequest)(msg);
if (rpcRequest) {
if (rpcRequest.direction === 'response'
&& rpcRequest.type === 'error') {
this.dispatchRPCEvent('rpc-response', {
id: msg.id,
error: utils_1.AttestorError.fromProto(msg.requestError)
});
return;
}
const resType = (0, utils_1.getRpcResponseType)(rpcRequest.type);
if (rpcRequest.direction === 'response') {
this.dispatchRPCEvent('rpc-response', {
id: msg.id,
type: rpcRequest.type,
data: msg[resType]
});
return;
}
if (!this.isInitialised && rpcRequest.type !== 'init') {
this.logger.warn({ type: rpcRequest.type }, 'RPC request received before initialisation');
void this.sendMessage({
id: msg.id,
requestError: utils_1.AttestorError
.badRequest('Initialise connection first')
.toProto()
});
return;
}
return new Promise((resolve, reject) => {
this.dispatchRPCEvent('rpc-request', {
requestId: msg.id,
type: rpcRequest.type,
data: msg[(0, utils_1.getRpcRequestType)(rpcRequest.type)],
respond: (res) => {
var _a;
if (!this.isOpen) {
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug({ type: rpcRequest.type, res }, 'connection closed before responding');
reject(new Error('connection closed'));
return;
}
if ('code' in res) {
reject(res);
return this.sendMessage({
id: msg.id,
requestError: res.toProto()
});
}
resolve();
return this
.sendMessage({ id: msg.id, [resType]: res });
},
});
});
}
if (msg.tunnelMessage) {
this.dispatchRPCEvent('tunnel-message', msg.tunnelMessage);
return;
}
if (msg.tunnelDisconnectEvent) {
this.dispatchRPCEvent('tunnel-disconnect-event', msg.tunnelDisconnectEvent);
return;
}
this.logger.warn({ msg }, 'unhandled message');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC91dGlscy9tZXNzYWdlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSw0Q0FPQztBQUVELHNDQW9HQztBQWpIRCx1Q0FBdUQ7QUFFdkQscUNBQTZIO0FBRXRILEtBQUssVUFBVSxnQkFBZ0IsQ0FBd0IsSUFBYTtJQUMxRSxtREFBbUQ7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLG9DQUE0QixFQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3JELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxpQkFBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM3QyxLQUFJLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDcEMsQ0FBQztBQUNGLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQXdCLEdBQWU7O0lBQ25FLHNDQUFzQztJQUN0QyxJQUFHLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLHFCQUFhLENBQUMsU0FBUyxDQUNsQyxHQUFHLENBQUMsMEJBQTBCLENBQzlCLENBQUE7UUFDRCxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLElBQUksQ0FDaEI7WUFDQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksS0FBSyxnQkFBZ0I7Z0JBQ2pDLENBQUMsQ0FBQyxHQUFHO2dCQUNMLENBQUMsQ0FBQyxTQUFTO1NBQ1osRUFDRCx1Q0FBdUMsQ0FDdkMsQ0FBQTtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNuRCxPQUFNO0lBQ1AsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLElBQUEscUJBQWEsRUFBQyxHQUFH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