{"version":3,"sources":["../../../src/internals/helpers/promise.ts"],"names":["isPromiseLike","value","isPromise","isFunction","getProp","arrayFromAsync","generator","limit","Infinity","results","chunk","length","push","emitterToGenerator","fn","queue","emit","data","then","done","catch","error","Promise","resolve","setImmediate","shift","asyncProperties","obj","Object","fromEntries","all","entries","map","key","safeExecute","handler","onError","onSuccess","result","err","e","asyncExecute","LazyPromise","Symbol","toStringTag","before","onfulfilled","onrejected","undefined","finally","onfinally","signalRace","signal","onAbort","reject","aborted","reason","signalFn","addEventListener","removeEventListener","executeSequentially","tasks","task","toAsyncGenerator","promise"],"mappings":"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","file":"promise.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isFunction, isPromise } from \"remeda\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\nexport function isPromiseLike<T>(value: unknown): value is PromiseLike<T> {\n  return isPromise(value) || isFunction(getProp(value, [\"then\"]));\n}\n\nexport async function arrayFromAsync<A, B>(\n  generator: AsyncGenerator<A, B> | AsyncIterableIterator<A> | AsyncIterable<A>,\n  limit?: number,\n) {\n  limit = limit ?? Infinity;\n  const results: A[] = [];\n  for await (const chunk of generator) {\n    if (results.length >= limit) {\n      break;\n    }\n    results.push(chunk);\n  }\n  return results;\n}\n\nexport type EmitterToGeneratorFn<T, R> = (data: { emit: (data: T) => void }) => Promise<R>;\nexport async function* emitterToGenerator<T, R>(fn: EmitterToGeneratorFn<T, R>) {\n  interface Data {\n    data?: T;\n    error?: Error;\n    done?: boolean;\n  }\n\n  const queue: Data[] = [];\n  void fn({\n    emit: (data: T) => queue.push({ data }),\n  })\n    .then(() => queue.push({ done: true }))\n    .catch((error) => queue.push({ error, done: true }));\n\n  while (true) {\n    while (queue.length === 0) {\n      await new Promise((resolve) => setImmediate(resolve));\n    }\n\n    const { data, done, error } = queue.shift()!;\n    if (error) {\n      throw error;\n    }\n    if (done) {\n      break;\n    }\n    yield data!;\n  }\n}\n\nexport async function asyncProperties<T extends NonNullable<unknown>>(\n  obj: T,\n): Promise<{ [K in keyof T]: Awaited<T[K]> }> {\n  return Object.fromEntries(\n    await Promise.all(Object.entries(obj).map(async ([key, value]) => [key, await value])),\n  );\n}\n\ninterface SafeExecuteOptions<T> {\n  handler: () => T;\n  onSuccess?: (result: T) => void;\n  onError?: (err: Error) => void;\n}\n\nexport function safeExecute<T>({ handler, onError, onSuccess }: SafeExecuteOptions<T>): void {\n  try {\n    const result = handler();\n    if (isPromiseLike<T>(result)) {\n      result.then(\n        (result) => onSuccess?.(result),\n        (err) => onError?.(err),\n      );\n    } else {\n      onSuccess?.(result);\n    }\n  } catch (e) {\n    onError?.(e);\n  }\n}\n\nexport function asyncExecute<R>(handler: () => R): Promise<R> {\n  return new Promise((onSuccess, onError) => {\n    safeExecute({\n      handler,\n      onSuccess,\n      onError,\n    });\n  });\n}\n\nexport class LazyPromise<R> implements Promise<R> {\n  constructor(protected readonly handler: () => Promise<R>) {}\n\n  readonly [Symbol.toStringTag] = \"Promise\";\n\n  protected async before(): Promise<void> {}\n\n  then<TResult1 = R, TResult2 = never>(\n    onfulfilled?: ((value: R) => PromiseLike<TResult1> | TResult1) | undefined | null,\n    onrejected?: ((reason: any) => PromiseLike<TResult2> | TResult2) | undefined | null,\n  ): Promise<TResult1 | TResult2> {\n    return this.before().then(this.handler).then(onfulfilled).catch(onrejected);\n  }\n\n  catch<TResult = never>(\n    onrejected?: ((reason: any) => PromiseLike<TResult> | TResult) | undefined | null,\n  ): Promise<R | TResult> {\n    return this.before().then(this.handler).then(undefined).catch(onrejected);\n  }\n\n  finally(onfinally?: (() => void) | undefined | null): Promise<R> {\n    return this.before().then(this.handler).finally(onfinally);\n  }\n}\n\nexport async function signalRace<R>(\n  fn: () => Promise<R>,\n  signal?: AbortSignal,\n  onAbort?: () => void,\n): Promise<R> {\n  return new Promise<R>((resolve, reject) => {\n    if (signal?.aborted) {\n      reject(signal.reason);\n      return;\n    }\n\n    const signalFn = () => {\n      onAbort?.();\n      reject(signal?.reason);\n    };\n    signal?.addEventListener?.(\"abort\", signalFn);\n    fn()\n      .then(resolve)\n      .catch(reject)\n      .finally(() => signal?.removeEventListener?.(\"abort\", signalFn));\n  });\n}\n\nexport async function executeSequentially(tasks: (() => Promise<any>)[]): Promise<void> {\n  for (const task of tasks) {\n    await task();\n  }\n}\n\nexport async function* toAsyncGenerator<T>(promise: T): AsyncGenerator<Awaited<T>> {\n  yield await promise;\n}\n"]}