@@ -6,31 +6,36 @@ export interface Session {
66}
77
88export default class SessionManager {
9- private static lastSessionId = '' ;
10- private static session : Map < string , Session > = new Map < string , Session > ( ) ;
9+ private static stack : Array < Session > = [ ] ;
1110
1211 static getLastSession ( ) : Session {
13- const session = SessionManager . session . get ( SessionManager . lastSessionId ) || { req : null , res : null } ;
14- Logger . debug ( `[SessionManager] Getting last session by: ${ SessionManager . lastSessionId } , is: ${ session . req ?. sn_uid } ` ) ;
12+ const [ session = { req : null , res : null } ] = SessionManager . stack ;
1513 return session ;
1614 }
1715
1816 static getSession ( id : string ) : Session {
19- return SessionManager . session . get ( id ) || { req : null , res : null } ;
17+ return SessionManager . stack . find ( ( s ) => s . req . sn_uid === id ) || { req : null , res : null } ;
2018 }
2119
2220 static setSession ( id : string , session : Session ) {
2321 Logger . debug ( `[SessionManager] Setting session: ${ id } ` ) ;
2422 session . req . sn_uid = id ;
2523 session . res . sn_uid = id ;
26- SessionManager . session . set ( id , session ) ;
27-
28- //save last session
29- SessionManager . lastSessionId = id ;
24+ //add session
25+ SessionManager . stack . push ( session ) ;
3026 }
3127
3228 static cleanSession ( id : string ) {
3329 Logger . debug ( `[SessionManager] Cleaning session: ${ id } ` ) ;
34- SessionManager . session . delete ( id ) ;
30+ // delete item
31+ const inx = SessionManager . stack . findIndex ( ( s ) => s . req . sn_uid === id ) ;
32+ if ( inx !== - 1 ) {
33+ SessionManager . stack . splice ( inx , 1 ) ;
34+ }
35+ }
36+
37+ static cleanAllSessions ( ) {
38+ Logger . debug ( `[SessionManager] Cleaning all sessions` ) ;
39+ SessionManager . stack = [ ] ;
3540 }
3641}
0 commit comments