UNPKG

kyper-matter

Version:

Library to provide simple application functionality like authentication and local/session/token storage for Tesselate applications.

149 lines (137 loc) 3.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _isObject = require('lodash/isObject'); var _isObject2 = _interopRequireDefault(_isObject); exports.localExists = localExists; exports.setItem = setItem; exports.getItem = getItem; exports.removeItem = removeItem; exports.clear = clear; var _logger = require('./logger'); var _logger2 = _interopRequireDefault(_logger); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var data = {}; /** Gets whether or not local storage exists. * @param {String} itemName The items name * @param {String} itemValue The items value * @return {Boolean} * */ function localExists() { var testKey = 'test'; if (typeof window !== 'undefined' && typeof window.sessionStorage !== 'undefined') { try { window.sessionStorage.setItem(testKey, '1'); window.sessionStorage.removeItem(testKey); return true; } catch (error) { _logger2.default.error({ description: 'Error saving to session storage', error: error, obj: 'storage', func: 'localExists' }); return false; } } return false; } /** * @description * Safley sets item to session storage. Alias: item() * * @param {String} itemName The items name * @param {String} itemValue The items value * */ function setItem(itemName, itemValue) { data[itemName] = itemValue; if (localExists()) { // Convert object to string if ((0, _isObject2.default)(itemValue)) { itemValue = JSON.stringify(itemValue); } window.sessionStorage.setItem(itemName, itemValue); } } /** * @description * Safley gets an item from session storage. Alias: item() * * @param {String} itemName The items name * @return {String} * */ function getItem(itemName) { if (data[itemName]) { return data[itemName]; } else if (localExists()) { var itemStr = window.sessionStorage.getItem(itemName); // Check that str is not null before parsing if (itemStr) { var isObj = false; var itemObj = null; // Try parsing to object try { itemObj = JSON.parse(itemStr); isObj = true; } catch (err) { // Parsing failed, this must just be a string // logger.log({message: 'String could not be parsed.', error: err, func: 'getItem', obj: 'storage'}) isObj = false; } if (isObj) { return itemObj; } } return itemStr; } else { return null; } } /** * @description Safley removes item from session storage. * * @param {String} itemName - The items name * */ function removeItem(itemName) { // TODO: Only remove used items if (data[itemName]) { data[itemName] = null; } if (localExists() && getItem(itemName)) { try { // Clear session storage window.sessionStorage.removeItem(itemName); } catch (error) { _logger2.default.warn({ description: 'Error removing item from session storage', error: error, obj: 'storage', func: 'removeItem' }); } } } /** * @description * Safley removes item from session storage. * * @param {String} itemName the items name * @param {String} itemValue the items value * */ function clear() { // TODO: Only remove used items data = {}; if (localExists()) { try { // Clear session storage window.sessionStorage.clear(); } catch (error) { _logger2.default.warn({ description: 'Session storage could not be cleared.', error: error, obj: 'storage', func: 'removeItem' }); } } }