UNPKG

one

Version:

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

94 lines (91 loc) • 3.28 kB
"use strict"; 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_native_exports = {}; __export(keyValue_native_exports, { openKeyValue: () => openKeyValue }); module.exports = __toCommonJS(keyValue_native_exports); var import_op_sqlite = require("@op-engineering/op-sqlite"); var import_keyValueValidate = require("./keyValueValidate.native.js"); var CREATE_TABLE = `CREATE TABLE IF NOT EXISTS one_kv ( key TEXT PRIMARY KEY NOT NULL, value TEXT NOT NULL )`; function openKeyValue(options) { var name = (0, import_keyValueValidate.requireName)(options === null || options === void 0 ? void 0 : options.name); var db = (0, import_op_sqlite.open)({ name: `one-kv-${name}.sqlite` }); try { db.executeSync(CREATE_TABLE); } catch (error) { db.close(); throw error; } return createStore(db); } function createStore(db) { var closed = false; function connection(verb) { (0, import_keyValueValidate.assertOpen)(verb, closed); return db; } return Object.freeze({ getItem(key) { var _rows_; var db2 = connection("Database.getItem"); (0, import_keyValueValidate.requireKey)("Database.getItem", key); var rows = db2.executeSync("SELECT value FROM one_kv WHERE key = ?", [key]).rows; if (rows.length === 0) return null; var value = (_rows_ = rows[0]) === null || _rows_ === void 0 ? void 0 : _rows_.value; if (typeof value !== "string") { throw new Error("Database.getItem: stored value is not a string"); } return value; }, setItem(key, value) { var db2 = connection("Database.setItem"); (0, import_keyValueValidate.requireKey)("Database.setItem", key); (0, import_keyValueValidate.requireValue)("Database.setItem", value); db2.executeSync("INSERT INTO one_kv (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value", [key, value]); }, removeItem(key) { var db2 = connection("Database.removeItem"); (0, import_keyValueValidate.requireKey)("Database.removeItem", key); db2.executeSync("DELETE FROM one_kv WHERE key = ?", [key]); }, getAllKeys() { var rows = connection("Database.getAllKeys").executeSync("SELECT key FROM one_kv ORDER BY key").rows; return rows.map(function(row) { if (typeof row.key !== "string") { throw new Error("Database.getAllKeys: stored key is not a string"); } return row.key; }); }, clear() { connection("Database.clear").executeSync("DELETE FROM one_kv"); }, close() { if (closed) return; closed = true; db.close(); } }); } //# sourceMappingURL=keyValue.native.js.map