UNPKG

@tangle-js/anchors

Version:

Anchoring messages to the Tangle. Powered by IOTA Streams

51 lines 3.69 kB
import { Address, ChannelAddress, MsgId, Subscriber } from "@tangle.js/streams-wasm/node/streams.js"; export class ChannelHelper { /** * Converts an address representing as a two component string (channel addr: message Id) * into an Address object * * @param addressStr the address string * @returns the Address object */ static parseAddress(addressStr) { const [channelAddr, msgId] = addressStr.split(":"); return new Address(ChannelAddress.parse(channelAddr).copy(), MsgId.parse(msgId)); } /** * Finds an anchorage message on the channel by going through the messages * * @param subs Subscriber * @param anchorageID The anchorage identifier * @returns whether it has been found and the link to the anchorage on the Channel */ static async findAnchorage(subs, anchorageID) { let found = false; let anchorageLink; let response; try { // First we try to read such message const candidateLink = new Address(ChannelAddress.parse(subs.clone().channel_address()), MsgId.parse(anchorageID)); response = await subs.clone().receive_signed_packet(candidateLink); } catch { // The message has not been found } if (response) { anchorageLink = response.link.copy(); found = true; } while (!found) { // Iteratively retrieve messages until We find the one to anchor to const message = await subs.clone().fetchNextMsg(); if (!message) { break; } anchorageLink = message.link.copy(); if (anchorageLink.msgId.toString() === anchorageID) { found = true; } } return { found, anchorageLink }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbEhlbHBlci5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVycy9jaGFubmVsSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRyxNQUFNLE9BQU8sYUFBYTtJQUN0Qjs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQWtCO1FBQ3pDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxPQUFPLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFnQixFQUFFLFdBQW1CO1FBRW5FLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLGFBQXNCLENBQUM7UUFFM0IsSUFBSSxRQUFRLENBQUM7UUFFYixJQUFJO1lBQ0Esb0NBQW9DO1lBQ3BDLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUM3QixjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUNwRCxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUMzQixDQUFDO1lBQ0YsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3RFO1FBQUMsTUFBTTtZQUNKLGlDQUFpQztTQUNwQztRQUVELElBQUksUUFBUSxFQUFFO1lBQ1YsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUVELE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDWCxtRUFBbUU7WUFDbkUsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDVixNQUFNO2FBQ1Q7WUFFRCxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVwQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssV0FBVyxFQUFFO2dCQUNoRCxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ2hCO1NBQ0o7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7Q0FDSiJ9