{"version":3,"file":"delay.mjs","names":[],"sources":["../../src/promise/delay.ts"],"sourcesContent":["import { abortError, onAbort } from './abort';\n\n/**\n * Returns a promise that resolves after a specified delay with an optional value.\n *\n * @template T - The type of the value to resolve with\n * @param ms - The number of milliseconds to delay\n * @param value - The optional value to resolve with (default: undefined)\n * @param signal - Optional AbortSignal that rejects the delay when aborted\n * @returns Returns a promise that resolves after the delay\n *\n * @example\n * await delay(1000); // Waits 1 second\n *\n * @example\n * const result = await delay(500, 'Hello');\n * console.log(result); // 'Hello' after 500ms\n */\nexport function delay<T = void>(ms: number, value?: T, signal?: AbortSignal): Promise<T | void> {\n  if (signal?.aborted) {\n    return Promise.reject(abortError(signal));\n  }\n\n  return new Promise((resolve, reject) => {\n    let unlisten: () => void = () => undefined;\n\n    const timer = setTimeout(() => {\n      unlisten();\n      resolve(value);\n    }, ms);\n\n    if (signal) {\n      unlisten = onAbort(signal, () => {\n        clearTimeout(timer);\n        reject(abortError(signal));\n      });\n    }\n  });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAgB,MAAgB,IAAY,OAAW,QAAyC;CAC9F,IAAI,QAAQ,SACV,OAAO,QAAQ,OAAO,WAAW,MAAM,CAAC;CAG1C,OAAO,IAAI,SAAS,SAAS,WAAW;EACtC,IAAI,iBAA6B,KAAA;EAEjC,MAAM,QAAQ,iBAAiB;GAC7B,SAAS;GACT,QAAQ,KAAK;EACf,GAAG,EAAE;EAEL,IAAI,QACF,WAAW,QAAQ,cAAc;GAC/B,aAAa,KAAK;GAClB,OAAO,WAAW,MAAM,CAAC;EAC3B,CAAC;CAEL,CAAC;AACH"}