( arg: T | Iterable<T> | undefined, )
| 136 | disposables: ReadonlyArray<T>, |
| 137 | ): ReadonlyArray<T>; |
| 138 | export function dispose<T extends IDisposable>( |
| 139 | arg: T | Iterable<T> | undefined, |
| 140 | ): unknown { |
| 141 | if (arg === undefined || arg === null) return arg; |
| 142 | if (isIterable<T>(arg)) { |
| 143 | const errors: unknown[] = []; |
| 144 | for (const d of arg) { |
| 145 | if (d) { |
| 146 | try { |
| 147 | d.dispose(); |
| 148 | } catch (error) { |
| 149 | errors.push(error); |
| 150 | } |
| 151 | } |
| 152 | } |
| 153 | |
| 154 | if (errors.length === 1) { |
| 155 | throw errors[0]; |
| 156 | } |
| 157 | if (errors.length > 1) { |
| 158 | throw new AggregateError( |
| 159 | errors, |
| 160 | 'Encountered errors while disposing of store', |
| 161 | ); |
| 162 | } |
| 163 | |
| 164 | return Array.isArray(arg) ? [] : arg; |
| 165 | } |
| 166 | (arg).dispose(); |
| 167 | return arg; |
| 168 | } |
| 169 | |
| 170 | function isIterable<T>(arg: unknown): arg is Iterable<T> { |
| 171 | return ( |
no test coverage detected