File tree Expand file tree Collapse file tree 3 files changed +58
-0
lines changed
Modern Development/ECMASCript 2021/Storage Utilities Expand file tree Collapse file tree 3 files changed +58
-0
lines changed Original file line number Diff line number Diff line change 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.
Original file line number Diff line number Diff line change 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 ( ) ) ;
Original file line number Diff line number Diff line change 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 } ;
You can’t perform that action at this time.
0 commit comments