UNPKG

iopa

Version:

API-first, Internet of Things (IoT) stack for Typescript, official implementation of the Internet Open Protocols Alliance (IOPA) reference pattern

50 lines (41 loc) 1.35 kB
/* * Internet Open Protocol Abstraction (IOPA) * Copyright (c) 2016-2022 Internet Open Protocols Alliance * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import type { Disposer, IDisposable } from '@iopa/types' export class Disposable implements IDisposable { private _disposer: Disposer public constructor(disposer: Disposer) { this._disposer = disposer } public dispose(): void { this._disposer.apply(this._disposer) } } export class DisposablesComposite { private _disposables: Set<Disposable> public constructor() { this._disposables = new Set() } public add(disposable: Disposable): Disposable { this._disposables.add(disposable) return disposable } public dispose(): void { this._disposables.forEach((disposable) => { disposable.dispose.apply(disposable) }) } }