1
1
import { v4 as uuidv4 } from 'uuid' ;
2
2
3
- import { BrowserManager } from './BrowserManager .js' ;
4
- import { browserSessions } from './types.js' ;
3
+ import { SessionManager } from './lib/SessionManager .js' ;
4
+ import { browserSessions } from './lib/ types.js' ;
5
5
6
6
// Status of a browser session
7
- export enum BrowserSessionStatus {
7
+ export enum SessionStatus {
8
8
RUNNING = 'running' ,
9
9
COMPLETED = 'completed' ,
10
10
ERROR = 'error' ,
11
11
TERMINATED = 'terminated' ,
12
12
}
13
13
14
14
// Browser session tracking data
15
- export interface BrowserSessionInfo {
15
+ export interface SessionInfo {
16
16
id : string ;
17
- status : BrowserSessionStatus ;
17
+ status : SessionStatus ;
18
18
startTime : Date ;
19
19
endTime ?: Date ;
20
20
metadata : {
@@ -29,17 +29,17 @@ export interface BrowserSessionInfo {
29
29
/**
30
30
* Registry to keep track of browser sessions
31
31
*/
32
- export class BrowserTracker {
33
- private sessions : Map < string , BrowserSessionInfo > = new Map ( ) ;
32
+ export class SessionTracker {
33
+ private sessions : Map < string , SessionInfo > = new Map ( ) ;
34
34
35
35
constructor ( public ownerAgentId : string | undefined ) { }
36
36
37
37
// Register a new browser session
38
38
public registerBrowser ( url ?: string ) : string {
39
39
const id = uuidv4 ( ) ;
40
- const session : BrowserSessionInfo = {
40
+ const session : SessionInfo = {
41
41
id,
42
- status : BrowserSessionStatus . RUNNING ,
42
+ status : SessionStatus . RUNNING ,
43
43
startTime : new Date ( ) ,
44
44
metadata : {
45
45
url,
@@ -52,7 +52,7 @@ export class BrowserTracker {
52
52
// Update the status of a browser session
53
53
public updateSessionStatus (
54
54
id : string ,
55
- status : BrowserSessionStatus ,
55
+ status : SessionStatus ,
56
56
metadata ?: Record < string , any > ,
57
57
) : boolean {
58
58
const session = this . sessions . get ( id ) ;
@@ -63,9 +63,9 @@ export class BrowserTracker {
63
63
session . status = status ;
64
64
65
65
if (
66
- status === BrowserSessionStatus . COMPLETED ||
67
- status === BrowserSessionStatus . ERROR ||
68
- status === BrowserSessionStatus . TERMINATED
66
+ status === SessionStatus . COMPLETED ||
67
+ status === SessionStatus . ERROR ||
68
+ status === SessionStatus . TERMINATED
69
69
) {
70
70
session . endTime = new Date ( ) ;
71
71
}
@@ -78,19 +78,17 @@ export class BrowserTracker {
78
78
}
79
79
80
80
// Get all browser sessions
81
- public getSessions ( ) : BrowserSessionInfo [ ] {
81
+ public getSessions ( ) : SessionInfo [ ] {
82
82
return Array . from ( this . sessions . values ( ) ) ;
83
83
}
84
84
85
85
// Get a specific browser session by ID
86
- public getSessionById ( id : string ) : BrowserSessionInfo | undefined {
86
+ public getSessionById ( id : string ) : SessionInfo | undefined {
87
87
return this . sessions . get ( id ) ;
88
88
}
89
89
90
90
// Filter sessions by status
91
- public getSessionsByStatus (
92
- status : BrowserSessionStatus ,
93
- ) : BrowserSessionInfo [ ] {
91
+ public getSessionsByStatus ( status : SessionStatus ) : SessionInfo [ ] {
94
92
return this . getSessions ( ) . filter ( ( session ) => session . status === status ) ;
95
93
}
96
94
@@ -99,11 +97,11 @@ export class BrowserTracker {
99
97
* @returns A promise that resolves when cleanup is complete
100
98
*/
101
99
public async cleanup ( ) : Promise < void > {
102
- const sessions = this . getSessionsByStatus ( BrowserSessionStatus . RUNNING ) ;
100
+ const sessions = this . getSessionsByStatus ( SessionStatus . RUNNING ) ;
103
101
104
102
// Create cleanup promises for each session
105
103
const cleanupPromises = sessions . map ( ( session ) =>
106
- this . cleanupBrowserSession ( session ) ,
104
+ this . cleanupSession ( session ) ,
107
105
) ;
108
106
109
107
// Wait for all cleanup operations to complete in parallel
@@ -114,18 +112,16 @@ export class BrowserTracker {
114
112
* Cleans up a browser session
115
113
* @param session The browser session to clean up
116
114
*/
117
- private async cleanupBrowserSession (
118
- session : BrowserSessionInfo ,
119
- ) : Promise < void > {
115
+ private async cleanupSession ( session : SessionInfo ) : Promise < void > {
120
116
try {
121
117
const browserManager = (
122
- globalThis as unknown as { __BROWSER_MANAGER__ ?: BrowserManager }
118
+ globalThis as unknown as { __BROWSER_MANAGER__ ?: SessionManager }
123
119
) . __BROWSER_MANAGER__ ;
124
120
125
121
if ( browserManager ) {
126
122
await browserManager . closeSession ( session . id ) ;
127
123
} else {
128
- // Fallback to closing via browserSessions if BrowserManager is not available
124
+ // Fallback to closing via browserSessions if SessionManager is not available
129
125
const browserSession = browserSessions . get ( session . id ) ;
130
126
if ( browserSession ) {
131
127
await browserSession . page . context ( ) . close ( ) ;
@@ -134,9 +130,9 @@ export class BrowserTracker {
134
130
}
135
131
}
136
132
137
- this . updateSessionStatus ( session . id , BrowserSessionStatus . COMPLETED ) ;
133
+ this . updateSessionStatus ( session . id , SessionStatus . COMPLETED ) ;
138
134
} catch ( error ) {
139
- this . updateSessionStatus ( session . id , BrowserSessionStatus . ERROR , {
135
+ this . updateSessionStatus ( session . id , SessionStatus . ERROR , {
140
136
error : error instanceof Error ? error . message : String ( error ) ,
141
137
} ) ;
142
138
}
0 commit comments