UNPKG

zklogin-plus

Version:

A powerful zkLogin plugin for Sui blockchain - inspired by @mysten/enoki

114 lines 2.9 kB
/** * 浏览器localStorage存储实现 */ export class BrowserStorage { constructor(prefix = 'zklogin_') { this.prefix = prefix; } getKey(key) { return `${this.prefix}${key}`; } get(key) { if (typeof window === 'undefined') return null; return localStorage.getItem(this.getKey(key)); } set(key, value) { if (typeof window === 'undefined') return; localStorage.setItem(this.getKey(key), value); } remove(key) { if (typeof window === 'undefined') return; localStorage.removeItem(this.getKey(key)); } clear() { if (typeof window === 'undefined') return; const keys = Object.keys(localStorage); keys.forEach(key => { if (key.startsWith(this.prefix)) { localStorage.removeItem(key); } }); } } /** * 浏览器sessionStorage存储实现 */ export class BrowserSessionStorage { constructor(prefix = 'zklogin_session_') { this.prefix = prefix; } getKey(key) { return `${this.prefix}${key}`; } get(key) { if (typeof window === 'undefined') return null; return sessionStorage.getItem(this.getKey(key)); } set(key, value) { if (typeof window === 'undefined') return; sessionStorage.setItem(this.getKey(key), value); } remove(key) { if (typeof window === 'undefined') return; sessionStorage.removeItem(this.getKey(key)); } clear() { if (typeof window === 'undefined') return; const keys = Object.keys(sessionStorage); keys.forEach(key => { if (key.startsWith(this.prefix)) { sessionStorage.removeItem(key); } }); } } /** * 内存存储实现(用于测试或服务端) */ export class MemoryStorage { constructor(prefix = 'zklogin_') { this.storage = new Map(); this.prefix = prefix; } getKey(key) { return `${this.prefix}${key}`; } get(key) { return this.storage.get(this.getKey(key)) || null; } set(key, value) { this.storage.set(this.getKey(key), value); } remove(key) { this.storage.delete(this.getKey(key)); } clear() { const keys = Array.from(this.storage.keys()); keys.forEach(key => { if (key.startsWith(this.prefix)) { this.storage.delete(key); } }); } } /** * 存储键名常量 */ export const STORAGE_KEYS = { EPHEMERAL_KEYPAIR: 'ephemeral_keypair', MAX_EPOCH: 'max_epoch', RANDOMNESS: 'randomness', USER_SALT: 'user_salt', JWT_TOKEN: 'jwt_token', ZKLOGIN_ADDRESS: 'zklogin_address', ZK_PROOF: 'zk_proof', }; //# sourceMappingURL=index.js.map