django-vue3-admin-web/node_modules/aws-crt/dist/common/cancel.d.ts
2025-10-20 21:21:14 +08:00

123 lines
4.5 KiB
TypeScript

/// <reference types="node" />
/**
*
* A module containing support for cancelling asynchronous operations
*
* @packageDocumentation
* @module cancel
*/
import { EventEmitter } from "events";
import * as promise from "./promise";
/**
* Callback signature for when cancel() has been invoked on a CancelController
*/
export type CancelListener = () => void;
/**
* Abstract interface for an object capable of cancelling asynchronous operations.
*
* Modern browsers and Node 15+ include an AbortController which essentially does the same thing. But our baseline
* is still node 10, so we provide our own implementation. Also, Abort is, unfortunately, a problematic term, so we
* stick to Cancel.
*/
export interface ICancelController {
/**
* API to invoke to cancel all asynchronous operations connected to this controller
*/
cancel(): void;
/**
* Checks whether or not the controller is in the cancelled state
*/
hasBeenCancelled(): boolean;
/**
* Registers a callback to be notified when cancel() is invoked externally. In general, the callback
* will cancel an asynchronous operation by rejecting the associated promise.
*
* IMPORTANT: The listener is invoked synchronously if the controller has already been cancelled.
*
* @param listener - function to invoke on cancel; invoked synchronously if the controller has already been
* cancelled
*
* @return undefined if the controller has already been cancelled, otherwise a function object whose invocation
* will remove the listener from the controller's event emitter.
*
*/
addListener(listener: CancelListener): promise.PromiseCleanupFunctor | undefined;
}
export declare const EVENT_NAME = "cancelled";
/**
* Signature for a factory function that can create EventEmitter objects
*/
export type EventEmitterFactory = () => EventEmitter;
/**
* Configuration options for the CRT implementation of ICancelController
*/
export interface CancelControllerOptions {
/**
* Event emitters have, by default, a small maximum number of listeners. When that default is insufficient for
* a use case, this factory option allows for customization of how the internal event emitter is created.
*/
emitterFactory?: EventEmitterFactory;
}
/**
* CRT implementation of the ICancelController interface
*/
export declare class CancelController implements ICancelController {
private cancelled;
private emitter;
constructor(options?: CancelControllerOptions);
/**
* Cancels all asynchronous operations associated with this controller
*/
cancel(): void;
/**
* Checks whether or not the controller is in the cancelled state
*/
hasBeenCancelled(): boolean;
/**
* Registers a callback to be notified when cancel() is invoked externally. In general, the callback
* will cancel an asynchronous operation by rejecting the associated promise.
*
* IMPORTANT: The listener is invoked synchronously if the controller has already been cancelled.
*
* @param listener - function to invoke on cancel; invoked synchronously if the controller has been cancelled
*
* @return undefined if the controller has already been cancelled, otherwise a function object whose invocation
* will remove the listener from the controller's event emitter.
*
*/
addListener(listener: CancelListener): promise.PromiseCleanupFunctor | undefined;
}
/**
* Configuration options for creating a promise that can be rejected by cancellation and resolved by the receipt
* of an event from an EventEmitter.
*/
export interface CancellableNextEventPromiseOptions<ResultType> {
/**
* Optional cancel controller that can cancel the created promise
*/
cancelController?: ICancelController;
/**
* Event emitter to listen to for potential promise completion
*/
emitter: EventEmitter;
/**
* Name of the event to listen on for potential promise completion
*/
eventName: string;
/**
* Optional transformation function for the event payload
*/
eventDataTransformer?: (eventData: any) => ResultType;
/**
* Message to reject the promise with if cancellation is invoked
*/
cancelMessage?: string;
}
/**
* Creates a promise that can be rejected by a CancelController and resolved by the receipt of an event from an
* EventEmitter.
*
* @param config promise creation options
*/
export declare function newCancellablePromiseFromNextEvent<ResultType>(config: CancellableNextEventPromiseOptions<ResultType>): Promise<ResultType>;