UNPKG

@bigmi/client

Version:

Reactive primitives for Bitcoin apps.

58 lines (57 loc) 1.81 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const require_utils_deserialize = require("../utils/deserialize.js"); const require_utils_serialize = require("../utils/serialize.js"); //#region src/factories/createStorage.ts function createStorage(parameters) { const { deserialize: deserialize$1 = require_utils_deserialize.deserialize, key: prefix = "bigmi", serialize: serialize$1 = require_utils_serialize.serialize, storage = noopStorage } = parameters; function unwrap(value) { if (value instanceof Promise) return value.then((x) => x).catch(() => null); return value; } return { ...storage, key: prefix, async getItem(key, defaultValue) { const unwrapped = await unwrap(storage.getItem(`${prefix}.${key}`)); if (unwrapped) return deserialize$1(unwrapped) ?? null; return defaultValue ?? null; }, async setItem(key, value) { const storageKey = `${prefix}.${key}`; if (value === null) await unwrap(storage.removeItem(storageKey)); else await unwrap(storage.setItem(storageKey, serialize$1(value))); }, async removeItem(key) { await unwrap(storage.removeItem(`${prefix}.${key}`)); } }; } const noopStorage = { getItem: () => null, setItem: () => {}, removeItem: () => {} }; function getDefaultStorage() { const storage = (() => { if (typeof window !== "undefined" && window.localStorage) return window.localStorage; return noopStorage; })(); return { getItem(key) { return storage.getItem(key); }, removeItem(key) { storage.removeItem(key); }, setItem(key, value) { try { storage.setItem(key, value); } catch {} } }; } //#endregion exports.createStorage = createStorage; exports.getDefaultStorage = getDefaultStorage; exports.noopStorage = noopStorage; //# sourceMappingURL=createStorage.js.map