UNPKG

kubo-rpc-client-esm-cjs

Version:
104 lines 3.98 kB
"use strict"; 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