UNPKG

@applicaster/zapp-react-dom-app

Version:

Zapp App Component for Applicaster's Quick Brick React Native App

53 lines (38 loc) 1.05 kB
import * as R from "ramda"; export function StorageMock() { const storage = {}; const methods = ["setItem", "getItem", "removeItem", "clear"]; storage.setItem = (key, value) => { if (R.includes("fail", key)) { throw new Error(`Could not set item ${key}`); } this[key] = value; }; storage.clear = () => { R.forEach((key) => { delete this[key]; }, R.keys(this)); }; storage.removeItem = (key) => { if (R.includes("fail", key)) { throw new Error(`Could not remove item ${key}`); } delete this[key]; return true; }; storage.getItem = (key) => { const result = this[key]; if (!result) { throw new Error(`Could not retrieve item ${key}`); } return result; }; Object.defineProperty(storage, "length", { get: () => R.compose(R.length, R.reject(R.includes(R.__, methods)), R.keys)(this), }); Object.defineProperty(storage, "keys", { get: () => R.compose(R.reject(R.includes(R.__, methods)), R.keys)(this), }); return storage; }