UNPKG

@daysnap/utils

Version:
58 lines (55 loc) 1.15 kB
import { isArray } from "./chunk-CSZ7G34M.js"; import { isObject } from "./chunk-XCSSSEK2.js"; // src/storage/factory.ts function factory(type) { const fn = window[type]; const setItem = (key, val) => { fn.setItem(key, JSON.stringify(val)); return val; }; const getItem = (key, defaultVal = null) => { const val = fn.getItem(key); if (val === null) { return defaultVal; } return JSON.parse(val); }; const removeItem = (key) => { fn.removeItem(key); }; const updateItem = (key, val) => { const prev = getItem(key); if (isArray(val)) { val = [...prev || [], ...val]; } else if (isObject(val)) { val = { ...prev, ...val }; } return setItem(key, val); }; const clear = () => { fn.clear(); }; const generate = (key) => { return { setItem: (val) => setItem(key, val), getItem: (defaultVal) => getItem(key, defaultVal), removeItem: () => removeItem(key), updateItem: (val) => updateItem(key, val) }; }; return { setItem, getItem, removeItem, updateItem, clear, generate }; } export { factory };