filestack-js
Version:
Official JavaScript library for Filestack
85 lines (83 loc) • 9.51 kB
JavaScript
/*
* Copyright (c) 2018 by Filestack.
* Some rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import Debug from 'debug';
import { STORE_TYPE } from './store';
var debug = Debug('fs:storage');
var Store = /** @class */ (function () {
function Store() {
this.availableTypes = [];
if (window.localStorage !== undefined) {
this.availableTypes.push(STORE_TYPE.LOCAL);
debug('Local storage exists');
}
if (window.sessionStorage !== undefined) {
this.availableTypes.push(STORE_TYPE.SESSION);
debug('Session storage exists');
}
debug('availableTypes - %O', this.availableTypes);
}
Store.prototype.hasAccess = function (prefType) {
debug('Checking access to storage for %s. Available types: %O', prefType, this.availableTypes);
if (prefType) {
return this.availableTypes.indexOf(prefType) > -1;
}
return !!this.availableTypes.length;
};
Store.prototype.getItem = function (key, prefType) {
var store = this.getStore(prefType);
debug('getItem %s from %O', key, store);
if (!store) {
return undefined;
}
return store.getItem(key);
};
Store.prototype.setItem = function (key, value, prefType) {
var store = this.getStore(prefType);
debug('setItem %s to %O', key, store);
if (!store) {
return undefined;
}
return store.setItem(key, value);
};
Store.prototype.removeItem = function (key, prefType) {
var store = this.getStore(prefType);
debug('removeItem %s from %O', key, store);
if (!store) {
return undefined;
}
return store.removeItem(key);
};
Store.prototype.getStore = function (prefType) {
debug('get store with pref type - %s', prefType);
if (!this.hasAccess(prefType)) {
debug('User dont have access to any storage');
return undefined;
}
switch (prefType) {
case STORE_TYPE.LOCAL:
return window.localStorage;
case STORE_TYPE.SESSION:
return window.sessionStorage;
default:
// @ts-ignore
return window[this.availableTypes[0]];
}
};
return Store;
}());
export { Store };
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMvc3RvcmUuYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxJQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFbEM7SUFJRTtRQUZRLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRzFCLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDakM7UUFFRCxLQUFLLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSx5QkFBUyxHQUFoQixVQUFpQixRQUFxQjtRQUNwQyxLQUFLLENBQUMsd0RBQXdELEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUvRixJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUN0QyxDQUFDO0lBRU0sdUJBQU8sR0FBZCxVQUFlLEdBQVcsRUFBRSxRQUFxQjtRQUMvQyxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSx1QkFBTyxHQUFkLFVBQWUsR0FBVyxFQUFFLEtBQWEsRUFBRSxRQUFxQjtRQUM5RCxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sMEJBQVUsR0FBakIsVUFBa0IsR0FBVyxFQUFFLFFBQXFCO1FBQ2xELElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLHdCQUFRLEdBQWhCLFVBQWlCLFFBQXFCO1FBQ3BDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3QixLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUM5QyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssVUFBVSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQztZQUM3QixLQUFLLFVBQVUsQ0FBQyxPQUFPO2dCQUNyQixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDL0I7Z0JBQ0UsYUFBYTtnQkFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFZLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBQ0gsWUFBQztBQUFELENBL0VBLEFBK0VDLElBQUEiLCJmaWxlIjoibGliL3V0aWxzL3N0b3JlLmJyb3dzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4IGJ5IEZpbGVzdGFjay5cbiAqIFNvbWUgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IFNUT1JFX1RZUEUgfSBmcm9tICcuL3N0b3JlJztcblxuY29uc3QgZGVidWcgPSBEZWJ1ZygnZnM6c3RvcmFnZScpO1xuXG5leHBvcnQgY2xhc3MgU3RvcmUge1xuXG4gIHByaXZhdGUgYXZhaWxhYmxlVHlwZXMgPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmF2YWlsYWJsZVR5cGVzLnB1c2goU1RPUkVfVFlQRS5MT0NBTCk7XG4gICAgICBkZWJ1ZygnTG9jYWwgc3RvcmFnZSBleGlzdHMnKTtcbiAgICB9XG5cbiAgICBpZiAod2luZG93LnNlc3Npb25TdG9yYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXZhaWxhYmxlVHlwZXMucHVzaChTVE9SRV9UWVBFLlNFU1NJT04pO1xuICAgICAgZGVidWcoJ1Nlc3Npb24gc3RvcmFnZSBleGlzdHMnKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnYXZhaWxhYmxlVHlwZXMgLSAlTycsIHRoaXMuYXZhaWxhYmxlVHlwZXMpO1xuICB9XG5cbiAgcHVibGljIGhhc0FjY2VzcyhwcmVmVHlwZT86IFNUT1JFX1RZUEUpOiBib29sZWFuIHtcbiAgICBkZWJ1ZygnQ2hlY2tpbmcgYWNjZXNzIHRvIHN0b3JhZ2UgZm9yICVzLiBBdmFpbGFibGUgdHlwZXM6ICVPJywgcHJlZlR5cGUsIHRoaXMuYXZhaWxhYmxlVHlwZXMpO1xuXG4gICAgaWYgKHByZWZUeXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5hdmFpbGFibGVUeXBlcy5pbmRleE9mKHByZWZUeXBlKSA+IC0xO1xuICAgIH1cblxuICAgIHJldHVybiAhIXRoaXMuYXZhaWxhYmxlVHlwZXMubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW0oa2V5OiBzdHJpbmcsIHByZWZUeXBlPzogU1RPUkVfVFlQRSkge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5nZXRTdG9yZShwcmVmVHlwZSk7XG4gICAgZGVidWcoJ2dldEl0ZW0gJXMgZnJvbSAlTycsIGtleSwgc3RvcmUpO1xuXG4gICAgaWYgKCFzdG9yZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RvcmUuZ2V0SXRlbShrZXkpO1xuICB9XG5cbiAgcHVibGljIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHByZWZUeXBlPzogU1RPUkVfVFlQRSkge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5nZXRTdG9yZShwcmVmVHlwZSk7XG4gICAgZGVidWcoJ3NldEl0ZW0gJXMgdG8gJU8nLCBrZXksIHN0b3JlKTtcblxuICAgIGlmICghc3RvcmUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0b3JlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSXRlbShrZXk6IHN0cmluZywgcHJlZlR5cGU/OiBTVE9SRV9UWVBFKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKHByZWZUeXBlKTtcbiAgICBkZWJ1ZygncmVtb3ZlSXRlbSAlcyBmcm9tICVPJywga2V5LCBzdG9yZSk7XG5cbiAgICBpZiAoIXN0b3JlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBzdG9yZS5yZW1vdmVJdGVtKGtleSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0b3JlKHByZWZUeXBlPzogU1RPUkVfVFlQRSk6IGZhbHNlIHwgU3RvcmFnZSB7XG4gICAgZGVidWcoJ2dldCBzdG9yZSB3aXRoIHByZWYgdHlwZSAtICVzJywgcHJlZlR5cGUpO1xuXG4gICAgaWYgKCF0aGlzLmhhc0FjY2VzcyhwcmVmVHlwZSkpIHtcbiAgICAgIGRlYnVnKCdVc2VyIGRvbnQgaGF2ZSBhY2Nlc3MgdG8gYW55IHN0b3JhZ2UnKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcmVmVHlwZSkge1xuICAgICAgY2FzZSBTVE9SRV9UWVBFLkxPQ0FMOlxuICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgIGNhc2UgU1RPUkVfVFlQRS5TRVNTSU9OOlxuICAgICAgICByZXR1cm4gd2luZG93LnNlc3Npb25TdG9yYWdlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gd2luZG93W3RoaXMuYXZhaWxhYmxlVHlwZXNbMF1dIGFzIFN0b3JhZ2U7XG4gICAgfVxuICB9XG59XG4iXX0=