UNPKG

tsbase

Version:

Base class libraries for TypeScript

61 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DomStorage = exports.DomStorageMode = void 0; const JsonSerializer_1 = require("../../Utility/Serialization/JsonSerializer"); const Command_1 = require("../../Patterns/CommandQuery/Command"); const Query_1 = require("../../Patterns/CommandQuery/Query"); var DomStorageMode; (function (DomStorageMode) { DomStorageMode[DomStorageMode["Session"] = 0] = "Session"; DomStorageMode[DomStorageMode["Local"] = 1] = "Local"; })(DomStorageMode || (exports.DomStorageMode = DomStorageMode = {})); /** * Provides a generic interface for interacting with DomStorage */ class DomStorage { constructor(storageMode, serializer = new JsonSerializer_1.JsonSerializer()) { this.storageMode = storageMode; this.serializer = serializer; } Get(type, key) { return new Query_1.Query(() => { const value = this.getStorageMedium().getItem(key); if (value) { return this.serializer.Deserialize(type, JSON.parse(value)); } else { return null; } }).Execute(); } Set(key, value) { return new Command_1.Command(() => this.getStorageMedium().setItem(key, JSON.stringify(value))).Execute(); } GetValue(key) { return new Query_1.Query(() => { const value = this.getStorageMedium().getItem(key); if (value) { return value; } else { return null; } }).Execute(); } SetValue(key, value) { return new Command_1.Command(() => this.getStorageMedium().setItem(key, value)).Execute(); } Remove(key) { return new Command_1.Command(() => this.getStorageMedium().removeItem(key)).Execute(); } getStorageMedium() { if (this.storageMode === DomStorageMode.Local) { return window.localStorage; } else { return window.sessionStorage; } } } exports.DomStorage = DomStorage; //# sourceMappingURL=DomStorage.js.map