@stackend/api
Version:
JS bindings to api.stackend.com
147 lines • 4.57 kB
JavaScript
;
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