This repository was archived by the owner on Nov 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +26
-6
lines changed
Expand file tree Collapse file tree 2 files changed +26
-6
lines changed Original file line number Diff line number Diff line change 11import { WebStorageUtility } from '../utility/webstorage.utility' ;
2+ import { LocalStorageService , SessionStorageService , WebStorageServiceInterface } from '../service/webstorage.service' ;
23
34
45export function LocalStorage ( key ?: string ) {
5- return WebStorage ( localStorage , key ) ;
6+ return WebStorage ( localStorage , LocalStorageService , key ) ;
67}
78
89export function SessionStorage ( key ?: string ) {
9- return WebStorage ( sessionStorage , key ) ;
10+ return WebStorage ( sessionStorage , SessionStorageService , key ) ;
1011}
1112
1213// initialization cache
1314let cache = { } ;
1415
15- export let WebStorage = ( webStorage : Storage , key : string ) => {
16+ export let WebStorage = ( webStorage : Storage , service : WebStorageServiceInterface , key : string ) => {
1617 return ( target : Object , propertyName : string ) : void => {
1718 key = key || propertyName ;
1819 let proxy = target [ propertyName ] ;
20+ service . keys . push ( key ) ;
1921
2022 Object . defineProperty ( target , propertyName , {
2123 get : function ( ) {
Original file line number Diff line number Diff line change 11import { Injectable } from '@angular/core' ;
22import { WebStorageUtility } from '../utility/webstorage.utility' ;
33
4- export class WebStorageService {
5- constructor ( private storage : Storage ) {
4+ export interface WebStorageServiceInterface {
5+ keys : Array < string > ;
6+ new ( ) : {
7+ get ( key : string ) : any ;
8+ set ( key : string , value : any ) : void ;
9+ remove ( key : string ) : void ;
10+ clear ( ) : void ;
11+ }
12+ }
13+
14+ export abstract class WebStorageService {
15+ public static keys : Array < string > ;
16+
17+ constructor ( protected storage : Storage ) {
618
719 }
820
@@ -19,19 +31,25 @@ export class WebStorageService {
1931 }
2032
2133 clear ( ) : void {
22- this . storage . clear ( ) ;
34+ for ( let key of ( < WebStorageServiceInterface > this . constructor ) . keys ) {
35+ this . storage . removeItem ( key ) ;
36+ }
2337 }
2438}
2539
2640@Injectable ( )
2741export class LocalStorageService extends WebStorageService {
42+ public static keys : Array < string > = [ ] ;
43+
2844 constructor ( ) {
2945 super ( localStorage ) ;
3046 }
3147}
3248
3349@Injectable ( )
3450export class SessionStorageService extends WebStorageService {
51+ public static keys : Array < string > = [ ] ;
52+
3553 constructor ( ) {
3654 super ( sessionStorage ) ;
3755 }
You can’t perform that action at this time.
0 commit comments