INNER CODE UNIT · TypeScript
joinCleanups
isographlabs/isograph · libs/isograph-disposable-types/src/index.ts:9
export function joinCleanups<
const T extends readonly ItemCleanupPair<unknown>[],
>(...pairs: T): ItemCleanupPair<ItemsOf<T>> {
const items = pairs.map(([item]) => item) as ItemsOf<T>;
const dispose: CleanupFn = () => {
let error: unknown;
pairs.reduceRight((_, [, cleanup]) => {
try {
cleanup();
} catch (e) {
error ??= e;
}
return undefined;
}, undefined);
if (error !== undefined) {
throw error;
}
};