UNPKG

@agnostack/requestd

Version:

Please contact agnoStack via info@agnostack.com for any questions

61 lines 2.62 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const StorageCookie_1 = __importDefault(require("./StorageCookie")); const StorageInMemory_1 = __importDefault(require("./StorageInMemory")); const StorageLocal_1 = __importDefault(require("./StorageLocal")); const StorageNode_1 = __importDefault(require("./StorageNode")); const StorageSession_1 = __importDefault(require("./StorageSession")); const utils_1 = require("../utils"); const DEFAULT_STORAGE = './_storage'; const STORAGE_TYPES = [ StorageNode_1.default, StorageLocal_1.default, StorageCookie_1.default, StorageSession_1.default, StorageInMemory_1.default ]; const getStorage = (StorageType, config) => { if (!StorageType.isSupported()) { return undefined; } const storageInstance = new StorageType(config); return (storageInstance === null || storageInstance === void 0 ? void 0 : storageInstance.storage) ? storageInstance : undefined; }; class FactoryStorage { static getInstance(_config) { const _a = (0, utils_1.ensureObject)(_config), { storage_key: storageKey } = _a, __config = __rest(_a, ["storage_key"]); const config = Object.assign(Object.assign({}, __config), { storage_key: storageKey || DEFAULT_STORAGE }); let storage = this._storage[config.storage_key]; if (storage) { return storage; } // NOTE: intentionally using for loops instead of map so we can break to exit quickly soon as matched // eslint-disable-next-line no-restricted-syntax for (const StorageType of STORAGE_TYPES) { const _storage = getStorage(StorageType, config); if (_storage) { storage = _storage; break; } } FactoryStorage._storage[config.storage_key] = storage; return storage; } } FactoryStorage._storage = {}; exports.default = FactoryStorage; //# sourceMappingURL=FactoryStorage.js.map