tsbase
Version:
Base class libraries for TypeScript
61 lines • 2.13 kB
JavaScript
;
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