@wizecorp/stratusjs
Version:
Stratus React Framework
175 lines • 4.68 kB
JavaScript
/**
* Storage service for client-side data persistence
*/
export class LocalStorageService {
constructor(prefix = 'stratus_') {
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'LocalStorageService'
});
Object.defineProperty(this, "prefix", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.prefix = prefix;
}
get(key) {
if (typeof window === 'undefined') {
return null; // SSR safety
}
try {
const item = localStorage.getItem(this.getKey(key));
return item ? JSON.parse(item) : null;
}
catch {
return null;
}
}
set(key, value) {
if (typeof window === 'undefined') {
return; // SSR safety
}
try {
localStorage.setItem(this.getKey(key), JSON.stringify(value));
}
catch (error) {
console.warn('Failed to save to localStorage:', error);
}
}
remove(key) {
if (typeof window === 'undefined') {
return; // SSR safety
}
localStorage.removeItem(this.getKey(key));
}
clear() {
if (typeof window === 'undefined') {
return; // SSR safety
}
// Only clear items with our prefix
const keys = Object.keys(localStorage);
keys.forEach(key => {
if (key.startsWith(this.prefix)) {
localStorage.removeItem(key);
}
});
}
has(key) {
if (typeof window === 'undefined') {
return false; // SSR safety
}
return localStorage.getItem(this.getKey(key)) !== null;
}
getKey(key) {
return `${this.prefix}${key}`;
}
}
/**
* Session storage service
*/
export class SessionStorageService {
constructor(prefix = 'stratus_') {
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'SessionStorageService'
});
Object.defineProperty(this, "prefix", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.prefix = prefix;
}
get(key) {
if (typeof window === 'undefined') {
return null; // SSR safety
}
try {
const item = sessionStorage.getItem(this.getKey(key));
return item ? JSON.parse(item) : null;
}
catch {
return null;
}
}
set(key, value) {
if (typeof window === 'undefined') {
return; // SSR safety
}
try {
sessionStorage.setItem(this.getKey(key), JSON.stringify(value));
}
catch (error) {
console.warn('Failed to save to sessionStorage:', error);
}
}
remove(key) {
if (typeof window === 'undefined') {
return; // SSR safety
}
sessionStorage.removeItem(this.getKey(key));
}
clear() {
if (typeof window === 'undefined') {
return; // SSR safety
}
// Only clear items with our prefix
const keys = Object.keys(sessionStorage);
keys.forEach(key => {
if (key.startsWith(this.prefix)) {
sessionStorage.removeItem(key);
}
});
}
has(key) {
if (typeof window === 'undefined') {
return false; // SSR safety
}
return sessionStorage.getItem(this.getKey(key)) !== null;
}
getKey(key) {
return `${this.prefix}${key}`;
}
}
/**
* In-memory storage service (for SSR or when storage is not available)
*/
export class MemoryStorageService {
constructor() {
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'MemoryStorageService'
});
Object.defineProperty(this, "storage", {
enumerable: true,
configurable: true,
writable: true,
value: new Map()
});
}
get(key) {
return this.storage.get(key) || null;
}
set(key, value) {
this.storage.set(key, value);
}
remove(key) {
this.storage.delete(key);
}
clear() {
this.storage.clear();
}
has(key) {
return this.storage.has(key);
}
}
//# sourceMappingURL=StorageService.js.map