import { isStringified as o } from "./utilities.mjs";
function r(e) {
  return {
    get size() {
      return e.length;
    },
    keys() {
      return Array.from({ length: this.size }, (t, n) => e.key(n));
    },
    get(t, n = void 0) {
      const i = e.getItem(t);
      return (i && o(i) ? JSON.parse(i) : i) ?? n;
    },
    getAll() {
      return Object.fromEntries(this.keys().map((t) => [t, this.get(t, void 0)]));
    },
    set(t, n, i = !0) {
      e.setItem(t, i ? JSON.stringify(n) : n);
    },
    remove: e.removeItem.bind(e),
    clear: e.clear.bind(e),
    key: e.key.bind(e),
    has(t) {
      return !!e.getItem(t);
    }
  };
}
function s() {
  return {
    local: r(localStorage),
    session: r(sessionStorage)
  };
}
const u = s();
export {
  u as storage
};
//# sourceMappingURL=storage.mjs.map
