@reclaimprotocol/attestor-core
Version:
<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>
94 lines • 7.86 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, _b;
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.trace({ msg }, 'received message');
// handle connection termination alert
if (msg.connectionTerminationAlert) {
const err = utils_1.AttestorError.fromProto(msg.connectionTerminationAlert);
(_b = this.logger) === null || _b === void 0 ? void 0 : _b.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC91dGlscy9tZXNzYWdlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSw0Q0FPQztBQUVELHNDQXFHQztBQWxIRCx1Q0FBdUQ7QUFFdkQscUNBQTZIO0FBRXRILEtBQUssVUFBVSxnQkFBZ0IsQ0FBd0IsSUFBYTtJQUMxRSxtREFBbUQ7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLG9DQUE0QixFQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3JELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxpQkFBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM3QyxLQUFJLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDcEMsQ0FBQztBQUNGLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQXdCLEdBQWU7O0lBQ25FLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUMvQyxzQ0FBc0M7SUFDdEMsSUFBRyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEdBQUcsR0FBRyxxQkFBYSxDQUFDLFNBQVMsQ0FDbEMsR0FBRyxDQUFDLDBCQUEwQixDQUM5QixDQUFBO1FBQ0QsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxJQUFJLENBQ2hCO1lBQ0MsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCO2dCQUNqQyxDQUFDLENBQUMsR0FBRztnQkFDTCxDQUFDLENBQUMsU0FBUztTQUNaLEVBQ0QsdUNBQXVDLENBQ3ZDLENBQUE7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVB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