@azure/core-rest-pipeline
Version:
Isomorphic client library for making HTTP requests in node.js and browser.
1 lines • 2.37 kB
Source Map (JSON)
{"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"]}