{"version":3,"file":"promises.cjs","names":[],"sources":["../../src/utils/promises.ts"],"sourcesContent":["/**\n * Resolve after `ms` milliseconds.\n *\n * @example\n * await sleep(500); // pauses for half a second\n */\nexport function sleep(ms: number): Promise<void> {\n    return new Promise<void>((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Race `promise` against a timeout.\n *\n * Resolves/rejects with `promise` when it settles first. If `ms` elapses\n * before that, the returned promise rejects with an `Error` whose `name` is\n * `\"TimeoutError\"`.\n *\n * @example\n * await withTimeout(fetch(\"/slow\"), 3000);\n * await withTimeout(fetch(\"/slow\"), 3000, \"request too slow\");\n */\nexport function withTimeout<T>(promise: Promise<T>, ms: number, message?: string): Promise<T> {\n    return new Promise<T>((resolve, reject) => {\n        const timer = setTimeout(() => {\n            const error = new Error(message ?? `Operation timed out after ${ms}ms`);\n            error.name = \"TimeoutError\";\n            reject(error);\n        }, ms);\n\n        promise.then(\n            (value) => {\n                clearTimeout(timer);\n                resolve(value);\n            },\n            (reason) => {\n                clearTimeout(timer);\n                reject(reason);\n            },\n        );\n    });\n}\n"],"mappings":"AAMA,SAAgB,EAAM,EAA2B,CAC7C,OAAO,IAAI,QAAe,GAAY,WAAW,EAAS,CAAE,CAAC,CACjE,CAaA,SAAgB,EAAe,EAAqB,EAAY,EAA8B,CAC1F,OAAO,IAAI,SAAY,EAAS,IAAW,CACvC,IAAM,EAAQ,eAAiB,CAC3B,IAAM,EAAY,MAAM,GAAW,6BAA6B,EAAG,GAAG,EACtE,EAAM,KAAO,eACb,EAAO,CAAK,CAChB,EAAG,CAAE,EAEL,EAAQ,KACH,GAAU,CACP,aAAa,CAAK,EAClB,EAAQ,CAAK,CACjB,EACC,GAAW,CACR,aAAa,CAAK,EAClB,EAAO,CAAM,CACjB,CACJ,CACJ,CAAC,CACL"}