{"version":3,"file":"Task.cjs","sources":["../../../src/utils/Task.ts"],"sourcesContent":["import EventEmitterPackage from 'eventemitter3';\nimport type EventEmitter from 'eventemitter3';\n\nimport { TaskIsAlreadyRunningError } from '../errors';\nimport { Disposable, DisposableScope } from './Disposable';\n\nexport type TaskStatus =\n  | 'pending'\n  | 'running'\n  | 'successful'\n  | 'failed'\n  | 'canceled';\n\nexport type TaskCallback<T, I extends any[]> = (\n  scope: DisposableScope,\n  ...inputs: I\n) => T | Promise<T>;\n\nexport type TaskOptions = {\n  signal?: AbortSignal;\n  force?: boolean;\n};\n\nexport class Task<T, I extends any[] = []> {\n  protected callback: TaskCallback<T, I>;\n  protected children: Task<any, any[]>[];\n  protected context: object;\n  protected status: TaskStatus = 'pending';\n  protected result: T | undefined = undefined;\n  protected error: unknown = undefined;\n  protected eventEmitter: EventEmitter;\n\n  constructor(\n    callback: TaskCallback<T, I>,\n    children: Task<any, any[]>[] = [],\n    context: object = {}\n  ) {\n    this.callback = callback;\n    this.children = children;\n    this.context = context;\n    this.eventEmitter = new EventEmitterPackage.EventEmitter();\n  }\n\n  async run(options: TaskOptions = {}, ...inputs: I): Promise<T> {\n    if (this.isRunning()) {\n      throw new TaskIsAlreadyRunningError();\n    }\n\n    if (this.isPending() || (options.force ?? false)) {\n      return this.forceRun(options, ...inputs);\n    }\n\n    if (this.isSuccessful()) {\n      return this.getResult() as T;\n    }\n\n    throw this.getError();\n  }\n\n  protected async forceRun(\n    options: TaskOptions = {},\n    ...inputs: I\n  ): Promise<T> {\n    const disposable = new Disposable(\n      options.signal ?? new AbortController().signal\n    );\n\n    disposable.onCancel((cancelError) => {\n      this.setStatus('canceled');\n      this.error = cancelError;\n    });\n\n    return disposable.run(async (scope: DisposableScope) => {\n      const { isCanceled, throwIfCanceled } = scope;\n\n      try {\n        // Start loading.\n        this.setStatus('running');\n        this.result = undefined;\n        this.error = undefined;\n        this.result = await Promise.resolve(this.callback(scope, ...inputs));\n        throwIfCanceled();\n        this.setStatus('successful');\n\n        // Return the loaded result.\n        return this.result;\n      } catch (newError) {\n        // Capture the error and reset the result.\n        this.error = newError;\n        this.result = undefined;\n        this.setStatus(isCanceled() ? 'canceled' : 'failed');\n\n        // Re-throw the error.\n        throw this.error;\n      }\n    });\n  }\n\n  loadWith(preloadedResult: T) {\n    this.setStatus('successful');\n    this.result = preloadedResult;\n    this.error = undefined;\n\n    return this;\n  }\n\n  reset() {\n    this.setStatus('pending');\n    this.result = undefined;\n    this.error = undefined;\n\n    return this;\n  }\n\n  setChildren(children: Task<any, any[]>[]) {\n    this.children = children;\n\n    return this;\n  }\n\n  getChildren(): Task<any, any[]>[] {\n    return this.children;\n  }\n\n  getDescendants(): Task<any, any[]>[] {\n    return this.children.flatMap((child) => [child, ...child.getDescendants()]);\n  }\n\n  setContext(context: object) {\n    this.context = context;\n\n    return this;\n  }\n\n  getContext<C extends object = object>(): C {\n    return this.context as C;\n  }\n\n  getStatus(): TaskStatus {\n    return this.status;\n  }\n\n  getResult(): T | undefined {\n    return this.result;\n  }\n\n  getError(): unknown {\n    return this.error;\n  }\n\n  isPending(): boolean {\n    return this.status === 'pending';\n  }\n\n  isRunning(): boolean {\n    return this.status === 'running';\n  }\n\n  isCompleted(): boolean {\n    return this.status !== 'pending' && this.status !== 'running';\n  }\n\n  isSuccessful(): boolean {\n    return this.status === 'successful';\n  }\n\n  isFailed(): boolean {\n    return this.status === 'failed';\n  }\n\n  isCanceled(): boolean {\n    return this.status === 'canceled';\n  }\n\n  onStatusChange(callback: (status: TaskStatus) => unknown) {\n    this.eventEmitter.on('statusChange', callback);\n\n    return this;\n  }\n\n  onStatusChangeTo(status: TaskStatus, callback: () => unknown) {\n    return this.onStatusChange((newStatus) =>\n      status === newStatus ? callback() : undefined\n    );\n  }\n\n  onSuccess(callback: () => unknown) {\n    return this.onStatusChangeTo('successful', callback);\n  }\n\n  onFailure(callback: () => unknown) {\n    return this.onStatusChangeTo('failed', callback);\n  }\n\n  onCancel(callback: () => unknown) {\n    return this.onStatusChangeTo('canceled', callback);\n  }\n\n  protected setStatus(newStatus: TaskStatus) {\n    if (this.status === newStatus) return;\n    this.status = newStatus;\n    this.eventEmitter.emit('statusChange', newStatus);\n  }\n}\n"],"names":["Task","callback","children","arguments","length","undefined","context","_classCallCheck","_defineProperty","eventEmitter","EventEmitterPackage","EventEmitter","_createClass","key","value","_run","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_options$force","options","_len","inputs","_key","_args","wrap","_callee$","_context","prev","next","isRunning","TaskIsAlreadyRunningError","isPending","force","Array","abrupt","forceRun","apply","concat","isSuccessful","getResult","getError","stop","run","_forceRun","_callee3","_options$signal","_this","_len2","_key2","disposable","_args3","_callee3$","_context3","Disposable","signal","AbortController","onCancel","cancelError","setStatus","error","_ref","_callee2","scope","isCanceled","throwIfCanceled","_callee2$","_context2","result","Promise","resolve","sent","t0","_x","loadWith","preloadedResult","reset","setChildren","getChildren","getDescendants","flatMap","child","_toConsumableArray","setContext","getContext","getStatus","status","isCompleted","isFailed","onStatusChange","on","onStatusChangeTo","newStatus","onSuccess","onFailure","emit"],"mappings":"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"}