@daysnap/utils
Version:
58 lines (55 loc) • 1.15 kB
JavaScript
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
};