@n8n/n8n-nodes-langchain
Version:
61 lines • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SessionManager = void 0;
class SessionManager {
constructor(store) {
this.store = store;
this.sessions = {};
}
async registerSession(sessionId, server, transport, tools) {
if (!sessionId)
return;
await this.store.register(sessionId);
this.sessions[sessionId] = { sessionId, server, transport, lastActivityAt: Date.now() };
if (tools) {
this.store.setTools(sessionId, tools);
}
}
touch(sessionId) {
const session = this.sessions[sessionId];
if (session) {
session.lastActivityAt = Date.now();
}
}
getIdleSessions(idleTtlMs, now = Date.now()) {
return Object.values(this.sessions)
.filter((session) => now - session.lastActivityAt >= idleTtlMs)
.map((session) => session.sessionId);
}
async destroySession(sessionId) {
const session = this.sessions[sessionId];
await this.store.unregister(sessionId);
delete this.sessions[sessionId];
await session?.server.close().catch(() => { });
}
getSession(sessionId) {
return this.sessions[sessionId];
}
getTransport(sessionId) {
return this.sessions[sessionId]?.transport;
}
getServer(sessionId) {
return this.sessions[sessionId]?.server;
}
async isSessionValid(sessionId) {
return await this.store.validate(sessionId);
}
getTools(sessionId) {
return this.store.getTools(sessionId);
}
setTools(sessionId, tools) {
this.store.setTools(sessionId, tools);
}
setStore(store) {
this.store = store;
}
getStore() {
return this.store;
}
}
exports.SessionManager = SessionManager;
//# sourceMappingURL=SessionManager.js.map