This repository has been archived on 2026-10-14. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
extension/vault-session.mjs
T

18 lines
866 B
JavaScript

// Memory only. Nothing here is serialized to storage or exposed externally.
export const AUTO_LOCK = 'human-auto-lock';
export const policies = ['close', '5', '15', '60'];
export class VaultSession {
constructor(now = Date.now) { this.now = now; this.clear(); }
clear() { this.key = null; this.owner = null; this.deadline = 0; this.policy = 'close'; this.epoch = (this.epoch || 0) + 1; }
set(key, owner, policy) {
if (!policies.includes(policy) || key.extractable !== false) throw new Error('Invalid session');
this.clear(); this.key = key; this.owner = owner; this.policy = policy;
this.deadline = policy === 'close' ? Infinity : this.now() + Number(policy) * 60000;
}
get(owner) {
if (this.now() >= this.deadline || owner !== this.owner) this.clear();
return this.key;
}
closed() { if (this.policy === 'close') this.clear(); }
}