Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import type { SingleOrMany } from "./types"; export interface Disposer { (): void; } export interface Disposable { dispose(): void; } export interface ExtendableDisposer extends Disposer { push(...values: (Disposer | ExtendableDisposer | Disposable)[]): void; } export function disposer(...items: SingleOrMany<Disposer | Disposable | undefined | null>[]): ExtendableDisposer { return Object.assign(() => { for (const item of items.flat()) { if (!item) { continue; } if (typeof item === "function") { item(); } else { item.dispose(); } } items.length = 0; }, { push: (...newItems) => items.push(...newItems), } as Pick<ExtendableDisposer, "push">); } |