generic-interceptor
Version:
Provide proxy handler for getting properties and executing functions
80 lines • 3.83 kB
TypeScript
export declare type CallbackEnding = string;
export declare type ExecutionFunction = Function;
export declare type NonFunctionFieldValue = unknown;
export declare enum ProcessingType {
synchronous = "synchronous",
promise = "promise async",
callbackEnding = "callback ending"
}
export declare enum ProcessingResult {
succeed = "succeed",
failed = "failed"
}
export interface CallbackPayload<TPassFunctionId extends boolean> {
fieldValueType: string;
fieldKey: string;
fieldValue: any;
uniqueAccessId: TPassFunctionId extends true ? string : undefined;
}
export interface OnBeforeCallbackPayload {
functionArgs: unknown[];
}
export interface FunctionCallbackPayload {
processingStrategy: ProcessingType;
functionArgs: unknown[];
}
export interface OnErrorAdditionalPayload {
processingResult: ProcessingResult.failed;
functionError: Error;
}
export interface OnSuccessAdditionalPayload {
processingResult: ProcessingResult.succeed;
functionResult: unknown;
}
export declare type OnErrorPayload<TPassFunctionId extends boolean> = CallbackPayload<TPassFunctionId> & FunctionCallbackPayload & OnErrorAdditionalPayload;
export declare type OnSuccessPayload<TPassFunctionId extends boolean> = CallbackPayload<TPassFunctionId> & FunctionCallbackPayload & OnSuccessAdditionalPayload;
export declare type OnNonFunctionPayload = CallbackPayload<boolean>;
export declare type OnBeforePayload<TPassFunctionId extends boolean> = CallbackPayload<TPassFunctionId> & OnBeforeCallbackPayload;
export declare type OnErrorResult = OnErrorAdditionalPayload["functionError"] | void;
export declare type OnSuccessResult = OnSuccessPayload<boolean>["functionResult"] | void;
export declare type OnNonFunctionResult = CallbackPayload<boolean>["fieldValue"] | void;
export declare type OnBeforeResult = ExecutionFunction | void;
export declare type OnError<TPassFunctionId extends boolean> = (payload: OnErrorPayload<TPassFunctionId>) => OnErrorResult;
export declare type OnSuccess<TPassFunctionId extends boolean> = (payload: OnSuccessPayload<TPassFunctionId>) => OnSuccessResult;
export declare type OnNonFunction = (payload: OnNonFunctionPayload) => OnNonFunctionResult;
export declare type OnBefore<TPassFunctionId extends boolean> = (payload: OnBeforePayload<TPassFunctionId>) => OnBeforeResult;
export declare type InterceptorOptions<TPassFunctionId extends boolean> = {
passId: TPassFunctionId;
onError: OnError<TPassFunctionId>;
onSuccess: OnSuccess<TPassFunctionId>;
onBefore: OnBefore<TPassFunctionId>;
onNonFunction: OnNonFunction;
/**
* @description
*`callbackEnding` field is used when an object (on which proxy with returned handler is applied) function use callback style to return value and have callback to promise transformation function. This field define a name of a callback to promise transformation function which should be executed after primary function execution.
* @example
* ```
* import { StepFunctions } from "aws-sdk";
* import { interceptor } from "generic-interceptor";
*
* const callbackEnding = "callbackToPromiseFunctionName";
* const stepFunctions = new StepFunctions();
* const wrappedStepFunctions = new Proxy(
* stepFunctions,
* interceptor({
* callbackEnding,
* onSuccess: () => {},
* onNonFunction: () => {},
* onError: () => {},
* }),
* );
*
* (async () => {
* await wrappedStepFunctions.startExecution({ stateMachineArn: "ARN" })[callbackEnding]();
* })();
* ```
*/
callbackEnding?: CallbackEnding;
};
export declare const interceptor: <TPassFunctionId extends boolean>(options: InterceptorOptions<TPassFunctionId>) => ProxyHandler<any>;
//# sourceMappingURL=index.d.ts.map