@memori.ai/memori-react
Version:
[](https://www.npmjs.com/package/@memori.ai/memori-react)   • 1.44 kB
text/typescript
import type {
NatsDialogResponseEvent,
NatsErrorEvent,
} from './useNatsSession';
/** Backend result codes for missing / expired sessions. */
const SESSION_NOT_FOUND = -101;
const SESSION_EXPIRED = -103;
const SESSION_NOT_FOUND_MESSAGE =
/session\s+with\s+id\s+["']?[^"']+["']?\s+not\s+found/i;
function isExpiredResultCode(resultCode?: number): boolean {
return (
resultCode === 404 ||
resultCode === SESSION_EXPIRED ||
resultCode === SESSION_NOT_FOUND
);
}
function isExpiredErrorMessage(message?: string): boolean {
if (!message) return false;
return SESSION_NOT_FOUND_MESSAGE.test(message);
}
/** True when a NATS `error` event indicates the active session is gone or expired. */
export function isSessionExpiredNatsError(event: NatsErrorEvent): boolean {
if (isExpiredResultCode(event.errorCode as number | undefined)) {
return true;
}
if (typeof event.errorCode === 'string') {
const code = event.errorCode.toUpperCase();
if (code.includes('SESSION_EXPIRED') || code.includes('SESSION_NOT_FOUND')) {
return true;
}
}
return isExpiredErrorMessage(event.errorMessage);
}
/** True when a NATS dialog response reports a missing or expired session. */
export function isSessionExpiredNatsResponse(
event: NatsDialogResponseEvent
): boolean {
if (isExpiredResultCode(event.resultCode)) {
return true;
}
return isExpiredErrorMessage(event.resultMessage);
}