UNPKG

@splitsoftware/splitio-commons

Version:
55 lines (54 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.storageAdapter = void 0; var constants_1 = require("./constants"); function storageAdapter(log, prefix, wrapper) { var keys = []; var cache = {}; var loadPromise; var savePromise = Promise.resolve(); return { load: function () { return loadPromise || (loadPromise = Promise.resolve().then(function () { return wrapper.getItem(prefix); }).then(function (storedCache) { cache = JSON.parse(storedCache || '{}'); keys = Object.keys(cache); }).catch(function (e) { log.error(constants_1.LOG_PREFIX + 'Error calling wrapper `getItem` method: ' + e); })); }, save: function () { return savePromise = savePromise.then(function () { return Promise.resolve(wrapper.setItem(prefix, JSON.stringify(cache))); }).catch(function (e) { log.error(constants_1.LOG_PREFIX + 'Error calling wrapper `setItem` method: ' + e); }); }, whenSaved: function () { return savePromise; }, get length() { return keys.length; }, getItem: function (key) { return cache[key] || null; }, key: function (index) { return keys[index] || null; }, removeItem: function (key) { var index = keys.indexOf(key); if (index === -1) return; keys.splice(index, 1); delete cache[key]; }, setItem: function (key, value) { if (keys.indexOf(key) === -1) keys.push(key); cache[key] = value; } }; } exports.storageAdapter = storageAdapter;