Skip to content

Commit 5128049

Browse files
committed
Added LocalStorage and SessionStorage Utilities
Added storage.js
1 parent 04f9996 commit 5128049

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Storage Utilities
2+
3+
Tiny helpers for LocalStorage and SessionStorage.
4+
5+
- `storage.js` - lightweight wrapper: set/get/remove/clear/keys
6+
- `storage-examples.js` - quick usage
7+
8+
Use a prefix to avoid colliding with other data.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Small usage examples
2+
// local store with prefix
3+
const appStore = localStore('myapp:');
4+
appStore.set('user', { id: 1, name: 'Alex' });
5+
console.log(appStore.get('user')); // {id:1, name:'Alex'}
6+
7+
// session store
8+
const sess = sessionStore('sess:');
9+
sess.set('temp', { foo: 'bar' });
10+
console.log(sess.get('temp'));
11+
12+
// remove and keys
13+
appStore.remove('user');
14+
console.log(sess.keys());
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Minimal storage helpers for localStorage / sessionStorage
2+
function createStorage(storage, prefix = '') {
3+
const key = k => prefix + k;
4+
return {
5+
set(k, v) {
6+
try { storage.setItem(key(k), JSON.stringify(v)); } catch (e) { /* ignore */ }
7+
},
8+
get(k) {
9+
try { const v = storage.getItem(key(k)); return v ? JSON.parse(v) : null; } catch (e) { return null; }
10+
},
11+
remove(k) {
12+
try { storage.removeItem(key(k)); } catch (e) { }
13+
},
14+
clear() {
15+
try { if (!prefix) storage.clear(); else {
16+
// remove keys that start with prefix
17+
for (let i = storage.length - 1; i >= 0; i--) {
18+
const k = storage.key(i); if (k && k.indexOf(prefix) === 0) storage.removeItem(k);
19+
}
20+
}} catch (e) {}
21+
},
22+
keys() {
23+
const out = [];
24+
for (let i = 0; i < storage.length; i++) {
25+
const k = storage.key(i); if (k && (!prefix || k.indexOf(prefix) === 0)) out.push(prefix ? k.slice(prefix.length) : k);
26+
}
27+
return out;
28+
}
29+
};
30+
}
31+
32+
const localStore = (prefix) => createStorage(window.localStorage, prefix);
33+
const sessionStore = (prefix) => createStorage(window.sessionStorage, prefix);
34+
35+
// Export for Node/test environments (if needed)
36+
if (typeof module !== 'undefined' && module.exports) module.exports = { createStorage, localStore, sessionStore };

0 commit comments

Comments
 (0)