UNPKG

@gleif-it/did-webs-ts

Version:
30 lines (29 loc) 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDelegatorForDelegate = void 0; const Aid_js_1 = require("../../core/Aid.js"); const sortKeyEventStream_js_1 = require("./sortKeyEventStream.js"); const getKeyState_js_1 = require("./getKeyState.js"); const getDelegatorForDelegate = (delegate, events) => { // start with the event stream for the delegate const sortedEvents = (0, sortKeyEventStream_js_1.sortKeyEventStream)(events); const delegateEvents = sortedEvents.get(delegate); if (!delegateEvents || delegateEvents.length === 0) { throw new Error(`No events found for identifier: ${delegate}`); } // To find the delegator, filter events to only include 'dip' events // There might not be one, so we return undefined const validEvents = delegateEvents.filter((event) => event.t === 'dip'); if (validEvents.length === 0) return undefined; // Since sortedEvents are in descending order, the first valid event is the current key state const latestEvent = validEvents[0]; const delegatorAid = (0, Aid_js_1.createAid)(latestEvent.di); // if it's a 'dip' event, the 'di' field will be there // Get the latest key state for the delegator AID const delegatorIdentifierAndKeyState = (0, getKeyState_js_1.getKeyState)(delegatorAid, sortedEvents); if (!delegatorIdentifierAndKeyState) { throw new Error(`No key state found for delegator AID: ${delegatorAid}`); } return delegatorIdentifierAndKeyState; }; exports.getDelegatorForDelegate = getDelegatorForDelegate;