@shopify/cli-kit
Version:
A set of utilities, interfaces, and models that are common across all the platform features
20 lines • 775 B
JavaScript
import { useApp } from 'ink';
import { useLayoutEffect, useState } from 'react';
const noop = () => Promise.resolve();
export default function useAbortSignal(abortSignal, onAbort = noop) {
const { exit: unmountInk } = useApp();
const [isAborted, setIsAborted] = useState(false);
useLayoutEffect(() => {
abortSignal?.addEventListener('abort', () => {
const abortWithError = abortSignal.reason.message === 'AbortError' ? undefined : abortSignal.reason;
onAbort(abortWithError)
.then(() => {
setIsAborted(true);
unmountInk(abortWithError);
})
.catch(() => { });
});
}, []);
return { isAborted };
}
//# sourceMappingURL=use-abort-signal.js.map