UNPKG

@tanstack/router-core

Version:

Modern and scalable routing for React applications

1 lines 2.44 kB
{"version":3,"file":"await-signal.cjs","names":[],"sources":["../../src/await-signal.ts"],"sourcesContent":["function observeLate<T>(\n callback: ((value: T) => unknown) | undefined,\n value: T,\n) {\n if (!callback) {\n return\n }\n\n try {\n const result = callback(value)\n if (result !== undefined) {\n void Promise.resolve(result).catch(() => {})\n }\n } catch {}\n}\n\n/**\n * Await `value` unless `signal` aborts first. A result that settles after the\n * abort is passed to `onLate` / `onLateError` instead.\n *\n * One abort listener per wait: SSR requests nest at most a few waits on one\n * signal, so pooling them was measurably slower than this.\n */\nexport function waitForReason<T>(\n value: T | PromiseLike<T>,\n signal: AbortSignal,\n onLate?: (value: T) => unknown,\n onLateError?: (reason: unknown) => unknown,\n): Promise<T> {\n const promise = Promise.resolve(value)\n if (signal.aborted) {\n void promise.then(\n (result) => observeLate(onLate, result),\n (error) => observeLate(onLateError, error),\n )\n return Promise.reject(signal.reason)\n }\n\n return new Promise<T>((resolve, reject) => {\n const abort = () => reject(signal.reason)\n signal.addEventListener('abort', abort, { once: true })\n void promise.then(\n (result) => {\n signal.removeEventListener('abort', abort)\n if (signal.aborted) {\n observeLate(onLate, result)\n } else {\n resolve(result)\n }\n },\n (error) => {\n signal.removeEventListener('abort', abort)\n if (signal.aborted) {\n observeLate(onLateError, error)\n } else {\n reject(error)\n }\n },\n )\n })\n}\n"],"mappings":";AAAA,SAAS,YACP,UACA,OACA;CACA,IAAI,CAAC,UACH;CAGF,IAAI;EACF,MAAM,SAAS,SAAS,KAAK;EAC7B,IAAI,WAAW,KAAA,GACb,QAAa,QAAQ,MAAM,EAAE,YAAY,CAAC,CAAC;CAE/C,QAAQ,CAAC;AACX;;;;;;;;AASA,SAAgB,cACd,OACA,QACA,QACA,aACY;CACZ,MAAM,UAAU,QAAQ,QAAQ,KAAK;CACrC,IAAI,OAAO,SAAS;EAClB,QAAa,MACV,WAAW,YAAY,QAAQ,MAAM,IACrC,UAAU,YAAY,aAAa,KAAK,CAC3C;EACA,OAAO,QAAQ,OAAO,OAAO,MAAM;CACrC;CAEA,OAAO,IAAI,SAAY,SAAS,WAAW;EACzC,MAAM,cAAc,OAAO,OAAO,MAAM;EACxC,OAAO,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;EACtD,QAAa,MACV,WAAW;GACV,OAAO,oBAAoB,SAAS,KAAK;GACzC,IAAI,OAAO,SACT,YAAY,QAAQ,MAAM;QAE1B,QAAQ,MAAM;EAElB,IACC,UAAU;GACT,OAAO,oBAAoB,SAAS,KAAK;GACzC,IAAI,OAAO,SACT,YAAY,aAAa,KAAK;QAE9B,OAAO,KAAK;EAEhB,CACF;CACF,CAAC;AACH"}