@gleif-it/did-webs-ts
Version:
did-webs typescript library
30 lines (29 loc) • 1.59 kB
JavaScript
;
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;