25 lines
671 B
TypeScript
25 lines
671 B
TypeScript
export type SessionResourceCleanup = (sessionId?: string) => void;
|
|
|
|
const sessionResourceCleanups = new Set<SessionResourceCleanup>();
|
|
|
|
export function registerSessionResourceCleanup(cleanup: SessionResourceCleanup): () => void {
|
|
sessionResourceCleanups.add(cleanup);
|
|
return () => {
|
|
sessionResourceCleanups.delete(cleanup);
|
|
};
|
|
}
|
|
|
|
export function cleanupSessionResources(sessionId?: string): void {
|
|
const errors: unknown[] = [];
|
|
for (const cleanup of sessionResourceCleanups) {
|
|
try {
|
|
cleanup(sessionId);
|
|
} catch (error) {
|
|
errors.push(error);
|
|
}
|
|
}
|
|
if (errors.length > 0) {
|
|
throw new AggregateError(errors, "Failed to cleanup session resources");
|
|
}
|
|
}
|