87 lines
3.0 KiB
TypeScript
87 lines
3.0 KiB
TypeScript
import { Link } from "../common";
|
|
/**
|
|
* Contextual information provided to every operation handler method.
|
|
*
|
|
* @experimental
|
|
*/
|
|
export interface OperationContext {
|
|
/**
|
|
* Name of the service that contains the operation.
|
|
*/
|
|
readonly service: string;
|
|
/**
|
|
* Name of the operation.
|
|
*/
|
|
readonly operation: string;
|
|
/**
|
|
* Request header fields.
|
|
*/
|
|
readonly headers: Record<string, string>;
|
|
/**
|
|
* An AbortSignal that is signaled when the current request is canceled, e.g. because the request
|
|
* timed out or the client disconnected.
|
|
*
|
|
* The framework will cancel the abort controller with an unspecified error type. The handler
|
|
* must rethrow the error object to confirm cancelation. The handler may ignore cancelation
|
|
* and return a result anyway, but there is no guarantee that the client will still be waiting
|
|
* for the result of that request.
|
|
*
|
|
* Note that cancelation of the current _request_ is not the same thing - and does not relate
|
|
* with - cancelation of the _operation_ itself, which is notified by calling the
|
|
* {@link OperationHandler.cancel} method.
|
|
*/
|
|
readonly abortSignal: AbortSignal;
|
|
/**
|
|
* Get the deadline for the operation handler method.
|
|
*
|
|
* Note that this is the time by which the current _request_ should complete,
|
|
* not the _operation_'s deadline.
|
|
*/
|
|
readonly requestDeadline?: Date;
|
|
}
|
|
/**
|
|
* Context for the {@link OperationHandler.start} method.
|
|
*
|
|
* @experimental
|
|
*/
|
|
export interface StartOperationContext extends OperationContext {
|
|
/**
|
|
* Callbacks are used to deliver completion of async operations.
|
|
*
|
|
* A callback URL may optionally be provided by the client and should be called by this handler
|
|
* upon completion if the started operation is async.
|
|
*/
|
|
readonly callbackUrl?: string;
|
|
/**
|
|
* Optional header fields set by a client that are required to be attached to the callback request
|
|
* when an asynchronous operation completes.
|
|
*/
|
|
readonly callbackHeaders?: Record<string, string>;
|
|
/**
|
|
* Request ID that may be used by the server handler to dedupe a start request.
|
|
* By default a v4 UUID will be generated by the client.
|
|
*/
|
|
readonly requestId: string;
|
|
/**
|
|
* Links received in the request.
|
|
*
|
|
* This list is automatically populated when handling a start request. Handlers may use these
|
|
* links, for example to add information about the caller to a resource associated with the
|
|
* operation execution.
|
|
*/
|
|
readonly inboundLinks: Link[];
|
|
/**
|
|
* Links to be returned by the handler.
|
|
*
|
|
* This list is initially empty. Handlers may add to this list, for example links describing
|
|
* resources associated with the operation execution that may be of use to the caller.
|
|
*/
|
|
readonly outboundLinks: Link[];
|
|
}
|
|
/**
|
|
* Context for the {@link OperationHandler.cancel} method.
|
|
*
|
|
* @experimental
|
|
*/
|
|
export type CancelOperationContext = OperationContext;
|