zklogin-plus
Version:
A powerful zkLogin plugin for Sui blockchain - inspired by @mysten/enoki
114 lines • 2.9 kB
JavaScript
/**
* 浏览器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