import { useEffect } from 'react'; import { assert } from 'tsafe'; const IDS = new Set(); /** * Asserts that there is only one instance of a singleton entity. It can be a hook or a component. * @param id The ID of the singleton entity. */ export function useAssertSingleton(id: string) { useEffect(() => { assert(!IDS.has(id), `There should be only one instance of ${id}`); IDS.add(id); return () => { IDS.delete(id); }; }, [id]); }