Files
klz-cables.com/.pnpm-store/v10/files/35/17ffa76fe2bdad675505d8c9c9751bcbbb88c22fd1ad8b89c9568dfe51d4f60943304f0cef1baf3ffd9aca07b2465097692a7bbf8491aca5c844bbbed6e282
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

108 lines
3.4 KiB
Plaintext

Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/**
* Session-scoped data storage for stateful transports (with sessionId)
* @internal Using sessionId as key handles wrapper transport patterns
*/
const sessionToSessionData = new Map();
/**
* Transport-scoped data storage fallback for stateless transports (no sessionId)
* @internal WeakMap allows automatic cleanup when transport is garbage collected
*/
const statelessSessionData = new WeakMap();
/**
* Gets session data for a transport, checking sessionId first then fallback
* @internal
*/
function getSessionData(transport) {
const sessionId = transport.sessionId;
if (sessionId) {
return sessionToSessionData.get(sessionId);
}
return statelessSessionData.get(transport);
}
/**
* Sets session data for a transport, using sessionId when available
* @internal
*/
function setSessionData(transport, data) {
const sessionId = transport.sessionId;
if (sessionId) {
sessionToSessionData.set(sessionId, data);
} else {
statelessSessionData.set(transport, data);
}
}
/**
* Stores session data for a transport
* @param transport - MCP transport instance
* @param sessionData - Session data to store
*/
function storeSessionDataForTransport(transport, sessionData) {
// For stateful transports, always store (sessionId is the key)
// For stateless transports, also store (transport instance is the key)
setSessionData(transport, sessionData);
}
/**
* Updates session data for a transport (merges with existing data)
* @param transport - MCP transport instance
* @param partialSessionData - Partial session data to merge with existing data
*/
function updateSessionDataForTransport(transport, partialSessionData) {
const existingData = getSessionData(transport) || {};
setSessionData(transport, { ...existingData, ...partialSessionData });
}
/**
* Retrieves client information for a transport
* @param transport - MCP transport instance
* @returns Client information if available
*/
function getClientInfoForTransport(transport) {
return getSessionData(transport)?.clientInfo;
}
/**
* Retrieves protocol version for a transport
* @param transport - MCP transport instance
* @returns Protocol version if available
*/
function getProtocolVersionForTransport(transport) {
return getSessionData(transport)?.protocolVersion;
}
/**
* Retrieves full session data for a transport
* @param transport - MCP transport instance
* @returns Complete session data if available
*/
function getSessionDataForTransport(transport) {
return getSessionData(transport);
}
/**
* Cleans up session data for a specific transport (when that transport closes)
* @param transport - MCP transport instance
*/
function cleanupSessionDataForTransport(transport) {
const sessionId = transport.sessionId;
if (sessionId) {
sessionToSessionData.delete(sessionId);
}
// Note: WeakMap entries are automatically cleaned up when transport is GC'd
// No explicit delete needed for statelessSessionData
}
exports.cleanupSessionDataForTransport = cleanupSessionDataForTransport;
exports.getClientInfoForTransport = getClientInfoForTransport;
exports.getProtocolVersionForTransport = getProtocolVersionForTransport;
exports.getSessionDataForTransport = getSessionDataForTransport;
exports.storeSessionDataForTransport = storeSessionDataForTransport;
exports.updateSessionDataForTransport = updateSessionDataForTransport;
//# sourceMappingURL=sessionManagement.js.map