UNPKG

@applicaster/zapp-react-native-bridge

Version:

Applicaster Zapp React Native modules

101 lines (73 loc) 2.53 kB
export const DEFAULT_NAMESPACE = "applicaster.v2"; export function toObject(map: Map<string, any>): Record<string, any> { if (!map) return {}; const entriesArray = Array.from(map.entries()); return entriesArray.reduce((obj, [key, value]) => { if (value instanceof Map) { obj[key] = toObject(value); } else { obj[key] = value; } return obj; }, {}); } export class StorageMock { items: Map<string, Map<string, string>>; constructor() { this.items = new Map(); } __clear() { this.items = new Map(); } async getItem(key: string, namespace = DEFAULT_NAMESPACE) { if (key.includes("fail")) { throw new Error("failed to get item"); } return Promise.resolve( this.items.get(namespace || DEFAULT_NAMESPACE)?.get?.(key) ); } async setItem(key: string, value: string, namespace = DEFAULT_NAMESPACE) { if (key.includes("fail")) { throw new Error("failed to set item"); } if (!this.items.has(namespace)) { this.items.set(namespace || DEFAULT_NAMESPACE, new Map()); } this.items.get(namespace || DEFAULT_NAMESPACE)?.set?.(key, value); return Promise.resolve(true); } async removeItem(key: string, namespace = DEFAULT_NAMESPACE) { if (key.includes("fail")) { throw new Error("failed to remove item"); } this.items.get(namespace || DEFAULT_NAMESPACE)?.delete?.(key); return Promise.resolve(true); } } export class SecureStorageMock extends StorageMock { securedItems: Map<string, Map<string, string>>; constructor() { super(); this.securedItems = new Map(); } async getKeychainItem(key, namespace = DEFAULT_NAMESPACE) { if (key.includes("fail")) throw new Error("failed to get secure item"); return Promise.resolve( this.securedItems.get(namespace || DEFAULT_NAMESPACE)?.get?.(key) ); } async setKeychainItem(key, value, namespace = DEFAULT_NAMESPACE) { if (key.includes("fail")) throw new Error("failed to set secure item"); if (!this.securedItems.has(namespace)) { this.securedItems.set(namespace || DEFAULT_NAMESPACE, new Map()); } this.securedItems.get(namespace || DEFAULT_NAMESPACE)?.set?.(key, value); return Promise.resolve(true); } async removeKeychainItem(key, namespace = DEFAULT_NAMESPACE) { if (key.includes("fail")) throw new Error("failed to remove secure item"); this.securedItems.get(namespace || DEFAULT_NAMESPACE)?.delete?.(key); return Promise.resolve(true); } }