Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 1x 1x 1x 441x 441x 88x 87x 441x 88x 87x 441x 88x 87x 441x 90x 87x 87x 4x 1x 1x 4x 1x 1x 1x 441x 87x 441x 441x 1x 1x | import { IndexedDBStrategy, LocalStorageStrategy, MemoryStrategy, SessionStorageStrategy } from "./strategies";
import { type StorageBase, StorageEngine } from "./types";
import { Utils } from "./utils";
/** @ignore */
class StorageFactory {
createStorage(type: StorageEngine, baseName: string, storeName?: string): StorageBase {
switch (type) {
case StorageEngine.SessionStorage:
if (!Utils.isSessionStorageAvailable()) throw new Error("SessionStorage is not available");
return new SessionStorageStrategy(baseName);
case StorageEngine.LocalStorage:
if (!Utils.isLocalStorageAvailable()) throw new Error("LocalStorage is not available");
return new LocalStorageStrategy(baseName);
case StorageEngine.IndexedDB:
if (!Utils.isIndexedDBAvailable()) throw new Error("IndexedDB is not available");
return new IndexedDBStrategy(baseName, storeName);
case StorageEngine.Auto:
if (Utils.isLocalStorageAvailable()) {
return new LocalStorageStrategy(baseName);
}
if (Utils.isIndexedDBAvailable()) {
return new IndexedDBStrategy(baseName, storeName);
}
if (Utils.isSessionStorageAvailable()) {
return new SessionStorageStrategy(baseName);
}
return new MemoryStrategy();
default:
return new MemoryStrategy();
}
}
}
const storageFactory = new StorageFactory();
export { storageFactory as StorageFactory };
|