interface PendingRename { topicId: string; abortController: AbortController; } const pendingRenames: Map = new Map(); export const cancelPendingRename = (renameId: string): [boolean, PendingRename?] => { const pendingRename = pendingRenames.get(renameId); if (pendingRename?.abortController) { pendingRename.abortController.abort(); pendingRenames.delete(renameId); return [true, pendingRename]; } return [false, undefined]; }; export const completeRename = (renameId: string) => { const controller = pendingRenames.get(renameId); if (controller) { pendingRenames.delete(renameId); } }; export const addPendingRename = (topicId: string): [string, PendingRename] => { const id = crypto.randomUUID(); const abortController = new AbortController(); const pendingRename = { topicId, abortController }; pendingRenames.set(id, pendingRename); return [id, pendingRename]; };