UNPKG

@tangle-js/anchors

Version:

Anchoring messages to the Tangle. Powered by IOTA Streams

62 lines 5.08 kB
import { AnchoringChannelError } from "../errors/anchoringChannelError.mjs"; import { AnchoringChannelErrorNames } from "../errors/anchoringChannelErrorNames.mjs"; import { ChannelHelper } from "../helpers/channelHelper.mjs"; /** * Service to deal with message anchors * */ export default class AnchorMsgService { /** * Anchors a message to an anchorage * * @param request The anchoring details * @returns The result or error */ static async anchor(request) { try { // The address of the anchorage message const anchorageID = request.anchorageID; const encrypted = request.encrypted; const isPrivate = request.isPrivate; // The subscriber const subs = request.subscriber; const components = request.channelID.split(":"); let targetMsgID = components[1]; if (isPrivate) { targetMsgID = components[2]; } let anchorageLink; let found = true; if (targetMsgID === anchorageID) { anchorageLink = ChannelHelper.parseAddress(`${components[0]}:${targetMsgID}`); } else { // If we are not anchoring to the announce Msg ID we find the proper anchorage // Iteratively retrieve messages until We find the one to anchor to ({ found, anchorageLink } = await ChannelHelper.findAnchorage(subs, anchorageID)); if (!found) { throw new AnchoringChannelError(AnchoringChannelErrorNames.ANCHORAGE_NOT_FOUND, `The anchorage ${anchorageID} has not been found on the channel`); } } let publicPayload = request.message; let maskedPayload = Buffer.from(""); if (encrypted) { maskedPayload = publicPayload; publicPayload = Buffer.from(""); } const anchoringResp = await subs.clone().send_signed_packet(anchorageLink, publicPayload, maskedPayload); const msgID = anchoringResp.link.copy().msgId.toString(); return { anchorageID, msgID }; } catch (error) { if (error.type === AnchoringChannelError.ERR_TYPE) { throw error; } throw new AnchoringChannelError(AnchoringChannelErrorNames.OTHER_ERROR, `Error while anchoring to ${request.anchorageID} on ${request.channelID} -> ${error}`); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yTXNnU2VydmljZS5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYW5jaG9yTXNnU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJekQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxnQkFBZ0I7SUFDbkM7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUEwQjtRQUNuRCxJQUFJO1lBQ0YsdUNBQXVDO1lBQ3ZDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFFeEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNwQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBRXBDLGlCQUFpQjtZQUNqQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBRWhDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLFNBQVMsRUFBRTtnQkFDYixXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdCO1lBRUQsSUFBSSxhQUFzQixDQUFDO1lBQzNCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztZQUVqQixJQUFJLFdBQVcsS0FBSyxXQUFXLEVBQUU7Z0JBQy9CLGFBQWEsR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDLENBQUM7YUFDL0U7aUJBQU07Z0JBQ0wsOEVBQThFO2dCQUM5RSxtRUFBbUU7Z0JBQ25FLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUVsRixJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNWLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQywwQkFBMEIsQ0FBQyxtQkFBbUIsRUFDNUUsaUJBQWlCLFdBQVcsb0NBQW9DLENBQUMsQ0FBQztpQkFDckU7YUFDRjtZQUVELElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDcEMsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQyxJQUFJLFNBQVMsRUFBRTtnQkFDYixhQUFhLEdBQUcsYUFBYSxDQUFDO2dCQUM5QixhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNqQztZQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFDdkUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRWhDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRXpELE9BQU87Z0JBQ0wsV0FBVztnQkFDWCxLQUFLO2FBQ04sQ0FBQztTQUNIO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsUUFBUSxFQUFFO2dCQUNqRCxNQUFNLEtBQUssQ0FBQzthQUNiO1lBQ0QsTUFBTSxJQUFJLHFCQUFxQixDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFDcEUsNEJBQTRCLE9BQU8sQ0FBQyxXQUFXLE9BQU8sT0FBTyxDQUFDLFNBQVMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQzFGO0lBQ0gsQ0FBQztDQUNGIn0=