{"version":3,"file":"Disposable.cjs","sources":["../../../src/utils/Disposable.ts"],"sourcesContent":["import EventEmitterPackage from 'eventemitter3';\nimport type EventEmitter from 'eventemitter3';\n\nexport type DisposableScope = {\n  signal: AbortSignal | undefined;\n  isCanceled: () => boolean;\n  getCancelationError: () => unknown;\n  throwIfCanceled: () => void;\n};\n\nexport class Disposable {\n  protected eventEmitter: EventEmitter;\n  protected signal: AbortSignal;\n  protected cancelationError: unknown = null;\n  protected abortListener: (error: unknown) => void;\n\n  constructor(signal: AbortSignal) {\n    this.signal = signal;\n    this.eventEmitter = new EventEmitterPackage.EventEmitter();\n    this.abortListener = (error: unknown) => {\n      this.cancelationError = error;\n      this.eventEmitter.emit('cancel', error);\n      this.close();\n    };\n    this.signal.addEventListener('abort', this.abortListener);\n  }\n\n  async run<T>(\n    callback: (scope: DisposableScope) => T,\n    thenCloseDisposable = true\n  ) {\n    try {\n      return await Promise.resolve(callback(this.getScope()));\n    } finally {\n      if (thenCloseDisposable) {\n        this.close();\n      }\n    }\n  }\n\n  runSync<T>(\n    callback: (scope: DisposableScope) => T,\n    thenCloseDisposable = true\n  ) {\n    try {\n      return callback(this.getScope());\n    } finally {\n      if (thenCloseDisposable) {\n        this.close();\n      }\n    }\n  }\n\n  getScope(): DisposableScope {\n    return {\n      signal: this.signal,\n      isCanceled: () => this.isCanceled(),\n      getCancelationError: () => this.cancelationError,\n      throwIfCanceled: () => {\n        if (this.isCanceled()) {\n          throw this.getCancelationError();\n        }\n      },\n    };\n  }\n\n  isCanceled() {\n    return this.signal.aborted;\n  }\n\n  getCancelationError() {\n    return this.cancelationError;\n  }\n\n  onCancel(callback: (reason: unknown) => unknown): Disposable {\n    this.eventEmitter.on('cancel', callback);\n\n    return this;\n  }\n\n  close() {\n    this.signal.removeEventListener('abort', this.abortListener);\n    this.eventEmitter.removeAllListeners();\n  }\n}\n"],"names":["Disposable","signal","_this","_classCallCheck","_defineProperty","eventEmitter","EventEmitterPackage","EventEmitter","abortListener","error","cancelationError","emit","close","addEventListener","_createClass","key","value","_run","_asyncToGenerator","_regeneratorRuntime","mark","_callee","callback","thenCloseDisposable","_args","arguments","wrap","_callee$","_context","prev","next","length","undefined","Promise","resolve","getScope","abrupt","sent","finish","stop","run","_x","apply","runSync","_this2","isCanceled","getCancelationError","throwIfCanceled","aborted","onCancel","on","removeEventListener","removeAllListeners"],"mappings":"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"}