{"version":3,"file":"wrapAbortSignal-rn.mjs","sourceRoot":"","sources":["../../../src/util/wrapAbortSignal-rn.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,eAAgC;IAIlE,IAAI,eAAe,YAAY,WAAW,EAAE,CAAC;QAC3C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;QAC5B,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,SAAS,OAAO;QACd,IAAI,YAAY,EAAE,CAAC;YACjB,eAAe,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACvD,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IACD,SAAS,QAAQ;QACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AACrD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Creates a native AbortSignal which reflects the state of the provided AbortSignalLike.\n * If the AbortSignalLike is already a native AbortSignal, it is returned as is.\n *\n * React Native's AbortController polyfill (abort-controller\\@3.x) does not support\n * `AbortSignal.abort()`, `AbortController.abort(reason)`, or `AbortSignal.reason`.\n * This simplified version works within those constraints.\n *\n * @param abortSignalLike - The AbortSignalLike to wrap.\n * @returns - An object containing the native AbortSignal and an optional cleanup function.\n */\nexport function wrapAbortSignalLike(abortSignalLike: AbortSignalLike): {\n  abortSignal: AbortSignal;\n  cleanup?: () => void;\n} {\n  if (abortSignalLike instanceof AbortSignal) {\n    return { abortSignal: abortSignalLike };\n  }\n\n  const controller = new AbortController();\n\n  if (abortSignalLike.aborted) {\n    controller.abort();\n    return { abortSignal: controller.signal };\n  }\n\n  let needsCleanup = true;\n  function cleanup(): void {\n    if (needsCleanup) {\n      abortSignalLike.removeEventListener(\"abort\", listener);\n      needsCleanup = false;\n    }\n  }\n  function listener(): void {\n    controller.abort();\n    cleanup();\n  }\n\n  abortSignalLike.addEventListener(\"abort\", listener);\n  return { abortSignal: controller.signal, cleanup };\n}\n"]}