kubo-rpc-client-esm-cjs
Version:
A client library for the Kubo RPC API
104 lines • 3.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapEvent = void 0;
const from_string_1 = require("uint8arrays/from-string");
const response_types_js_1 = require("./response-types.js");
const multiaddr_1 = require("@multiformats/multiaddr");
const peer_id_1 = require("@libp2p/peer-id");
/**
* @typedef {ReturnType<typeof multiaddr>} Multiaddr
*/
/**
* @param {import('../types').MapEvent} event
* @returns {import('../types').QueryEvent}
*/
const mapEvent = (event) => {
var _a;
if (event.Type === response_types_js_1.SendingQuery) {
return {
name: 'SENDING_QUERY',
type: event.Type
};
}
if (event.Type === response_types_js_1.PeerResponse) {
return {
from: (0, peer_id_1.peerIdFromString)(event.ID),
name: 'PEER_RESPONSE',
type: event.Type,
// TODO: how to infer this from the go-ipfs response
messageType: 0,
// TODO: how to infer this from the go-ipfs response
messageName: 'PUT_VALUE',
closer: (event.Responses || []).map(({ ID, Addrs }) => ({ id: (0, peer_id_1.peerIdFromString)(ID), multiaddrs: Addrs.map(addr => (0, multiaddr_1.multiaddr)(addr)), protocols: [] })),
providers: (event.Responses || []).map(({ ID, Addrs }) => ({ id: (0, peer_id_1.peerIdFromString)(ID), multiaddrs: Addrs.map(addr => (0, multiaddr_1.multiaddr)(addr)), protocols: [] }))
// TODO: how to infer this from the go-ipfs response
// record: ???
};
}
if (event.Type === response_types_js_1.FinalPeer) {
// dht.query ends with a FinalPeer event with no Responses
/** @type {import('../types.js').PeerInfo} */
let peer = {
// @ts-expect-error go-ipfs does not return this
id: (_a = event.ID) !== null && _a !== void 0 ? _a : (0, peer_id_1.peerIdFromString)(event.ID),
/** @type {Multiaddr[]} */
multiaddrs: [],
protocols: []
};
if (event.Responses && event.Responses.length) {
// dht.findPeer has the result in the Responses field
peer = {
id: (0, peer_id_1.peerIdFromString)(event.Responses[0].ID),
multiaddrs: event.Responses[0].Addrs.map(addr => (0, multiaddr_1.multiaddr)(addr)),
protocols: []
};
}
return {
name: 'FINAL_PEER',
type: event.Type,
peer
};
}
if (event.Type === response_types_js_1.QueryError) {
return {
name: 'QUERY_ERROR',
type: event.Type,
error: new Error(event.Extra)
};
}
if (event.Type === response_types_js_1.Provider) {
return {
name: 'PROVIDER',
type: event.Type,
providers: event.Responses.map(({ ID, Addrs }) => ({ id: (0, peer_id_1.peerIdFromString)(ID), multiaddrs: Addrs.map(addr => (0, multiaddr_1.multiaddr)(addr)), protocols: [] }))
};
}
if (event.Type === response_types_js_1.Value) {
return {
name: 'VALUE',
type: event.Type,
value: (0, from_string_1.fromString)(event.Extra, 'base64pad')
};
}
if (event.Type === response_types_js_1.AddingPeer) {
const peers = event.Responses.map(({ ID }) => (0, peer_id_1.peerIdFromString)(ID));
if (!peers.length) {
throw new Error('No peer found');
}
return {
name: 'ADDING_PEER',
type: event.Type,
peer: peers[0]
};
}
if (event.Type === response_types_js_1.DialingPeer) {
return {
name: 'DIALING_PEER',
type: event.Type,
peer: (0, peer_id_1.peerIdFromString)(event.ID)
};
}
throw new Error('Unknown DHT event type');
};
exports.mapEvent = mapEvent;
//# sourceMappingURL=map-event.js.map