UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

73 lines (72 loc) • 2.68 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var keyValue_exports = {}; __export(keyValue_exports, { openKeyValue: () => openKeyValue }); module.exports = __toCommonJS(keyValue_exports); var import_keyValueValidate = require("./keyValueValidate.cjs"); function storagePrefix(name) { return `One.Database.kv|${name}|`; } function openKeyValue(options) { const name = (0, import_keyValueValidate.requireName)(options?.name); if (typeof localStorage === "undefined") { throw new Error("Database.openKeyValue requires localStorage in this runtime"); } const prefix = storagePrefix(name); let closed = false; function matchingKeys() { const keys = []; for (let index = 0; index < localStorage.length; index++) { const stored = localStorage.key(index); if (stored?.startsWith(prefix)) keys.push(stored); } return keys; } return Object.freeze({ getItem(key) { (0, import_keyValueValidate.assertOpen)("Database.getItem", closed); (0, import_keyValueValidate.requireKey)("Database.getItem", key); return localStorage.getItem(prefix + key); }, setItem(key, value) { (0, import_keyValueValidate.assertOpen)("Database.setItem", closed); (0, import_keyValueValidate.requireKey)("Database.setItem", key); (0, import_keyValueValidate.requireValue)("Database.setItem", value); localStorage.setItem(prefix + key, value); }, removeItem(key) { (0, import_keyValueValidate.assertOpen)("Database.removeItem", closed); (0, import_keyValueValidate.requireKey)("Database.removeItem", key); localStorage.removeItem(prefix + key); }, getAllKeys() { (0, import_keyValueValidate.assertOpen)("Database.getAllKeys", closed); return matchingKeys().map((stored) => stored.slice(prefix.length)).sort(); }, clear() { (0, import_keyValueValidate.assertOpen)("Database.clear", closed); for (const stored of matchingKeys()) localStorage.removeItem(stored); }, close() { closed = true; } }); }