function u(t) {
  if (typeof t == "string")
    try {
      return JSON.parse(t);
    } catch {
      return;
    }
}
function i(t) {
  return {
    get size() {
      return t.length;
    },
    keys() {
      return Array.from({ length: this.size }, (e, r) => t.key(r)).filter(Boolean);
    },
    get(e, r) {
      const n = t.getItem(e);
      if (n === null)
        return r;
      const o = u(n);
      return o !== void 0 ? o : typeof r == "string" || r === void 0 && typeof n == "string" ? n : r;
    },
    getAll() {
      return Object.fromEntries(this.keys().map((e) => [e, this.get(e)]));
    },
    set(e, r) {
      t.setItem(e, JSON.stringify(r));
    },
    remove(e) {
      t.removeItem(e);
    },
    clear() {
      t.clear();
    },
    key(e) {
      return t.key(e);
    },
    has(e) {
      return t.getItem(e) !== null;
    }
  };
}
function s(t) {
  return typeof window > "u" ? l() : window[t];
}
function c() {
  return {
    local: i(s("localStorage")),
    session: i(s("sessionStorage"))
  };
}
function l() {
  const t = /* @__PURE__ */ new Map();
  return {
    get length() {
      return t.size;
    },
    getItem: (e) => t.get(e) ?? null,
    setItem: (e, r) => t.set(e, r),
    removeItem: (e) => t.delete(e),
    clear: () => t.clear(),
    key: (e) => Array.from(t.keys())[e] ?? null
  };
}
const a = c();
export {
  l as createMemoryStorage,
  a as storage
};
//# sourceMappingURL=storage.mjs.map
