UNPKG

@stackend/api

Version:

JS bindings to api.stackend.com

147 lines 4.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.clearPersistentData = exports.setPersistentData = exports.removePersistentData = exports.updatePersistentData = exports.getPersistentData = exports.clearAccessToken = exports.getAccessTokenValue = exports.getAccessToken = exports.appendAccessToken = exports.setAccessToken = exports.handleAccessToken = exports.ACCESS_TOKEN_PATH_SUFFIX = exports.PERSISTENT_DATA_LOCAL_STORAGE_KEY = exports.ACCESS_TOKEN_SESSION_STORAGE_KEY = exports.ACCESS_TOKEN_RESULT_KEY = void 0; exports.ACCESS_TOKEN_RESULT_KEY = '__s'; /** Session storage key for access token */ exports.ACCESS_TOKEN_SESSION_STORAGE_KEY = 'stackend-at'; /** Local storage key for extra data */ exports.PERSISTENT_DATA_LOCAL_STORAGE_KEY = 'stackend-at'; exports.ACCESS_TOKEN_PATH_SUFFIX = ';s='; /** * If an access token is received, add it to localStorage * @param result */ function handleAccessToken(result) { var at = result[exports.ACCESS_TOKEN_RESULT_KEY]; if (typeof at === 'object' && typeof sessionStorage === 'object') { setAccessToken(at); } } exports.handleAccessToken = handleAccessToken; /** * Set the access token. If null or undefined, remove it. * @param at */ function setAccessToken(at) { if (typeof sessionStorage !== 'object') { return; } if (at) { var x = { id: at.id, created: at.created, ttl: at.ttl }; sessionStorage.setItem(exports.ACCESS_TOKEN_SESSION_STORAGE_KEY, JSON.stringify(x)); if (at.data) { updatePersistentData(at.data); } } else { sessionStorage.removeItem(exports.ACCESS_TOKEN_SESSION_STORAGE_KEY); } } exports.setAccessToken = setAccessToken; /** * Append the access token (if still valid) to the path * @param path */ function appendAccessToken(path) { var at = getAccessTokenValue(); if (!at) { return path; } return path + exports.ACCESS_TOKEN_PATH_SUFFIX + encodeURIComponent(at); } exports.appendAccessToken = appendAccessToken; /** * Get the access token from local storage. */ function getAccessToken() { if (typeof sessionStorage !== 'object') { return undefined; // Server side } var atS = sessionStorage.getItem(exports.ACCESS_TOKEN_SESSION_STORAGE_KEY); return !atS ? undefined : JSON.parse(atS); } exports.getAccessToken = getAccessToken; /** * Get the access token id */ function getAccessTokenValue() { var at = getAccessToken(); if (!at) { return undefined; } return at.id; } exports.getAccessTokenValue = getAccessTokenValue; /** * Clear the access token */ function clearAccessToken() { if (typeof sessionStorage === 'object') { sessionStorage.removeItem(exports.ACCESS_TOKEN_SESSION_STORAGE_KEY); } } exports.clearAccessToken = clearAccessToken; /** * Get the persistent data * @param key, optional key. Will get a single item */ function getPersistentData(key) { if (typeof localStorage !== 'object') { return {}; // Server side } var s = localStorage.getItem(exports.PERSISTENT_DATA_LOCAL_STORAGE_KEY); if (!s) { return {}; } var p = JSON.parse(s); if (key) { return p[key]; } return p; } exports.getPersistentData = getPersistentData; /** * Update persistent data * @param pd */ function updatePersistentData(pd) { var r = Object.assign(getPersistentData(), pd || {}); if (typeof localStorage === 'object') { localStorage.setItem(exports.PERSISTENT_DATA_LOCAL_STORAGE_KEY, JSON.stringify(r)); } return r; } exports.updatePersistentData = updatePersistentData; /** * Remove an item from the persistent data * @param key */ function removePersistentData(key) { var r = Object.assign(getPersistentData()); delete r[key]; if (typeof localStorage === 'object') { localStorage.setItem(exports.PERSISTENT_DATA_LOCAL_STORAGE_KEY, JSON.stringify(r)); } return r; } exports.removePersistentData = removePersistentData; /** * Set an item in the persistent storage * @param key * @param value */ function setPersistentData(key, value) { var _a; return updatePersistentData((_a = {}, _a[key] = value, _a)); } exports.setPersistentData = setPersistentData; /** * Clear all persistent data */ function clearPersistentData() { if (typeof localStorage === 'object') { localStorage.removeItem(exports.PERSISTENT_DATA_LOCAL_STORAGE_KEY); } } exports.clearPersistentData = clearPersistentData; //# sourceMappingURL=AccessToken.js.map