exupery-core-types
Version:
core types for Exupery
20 lines (19 loc) • 1.32 kB
TypeScript
import { Refiner } from "./Refiner";
import { Transformer } from "./Transformer";
export interface Refinement_Result<Output, Error> {
transform<Target>(output_transformer: Transformer<Target, Output>, error_transformer: Transformer<Target, Error>): Target;
transform_result<New_Output>(transformer: Transformer<New_Output, Output>): Refinement_Result<New_Output, Error>;
transform_error_temp<New_Error>(error_transformer: Transformer<New_Error, Error>): Refinement_Result<Output, New_Error>;
refine_without_error_transformation<New_Output>(refiner: Refiner<New_Output, Error, Output>): Refinement_Result<New_Output, Error>;
refine<New_Output, Stager_Error>(refiner: Refiner<New_Output, Stager_Error, Output>,
/**
* if the stager fails, rework its error into the desired error type
*/
error_transformer: Transformer<Error, Stager_Error>): Refinement_Result<New_Output, Error>;
rework_error_temp<New_Error, Rework_Error>(error_reworker: Refiner<New_Error, Rework_Error, Error>,
/**
* if the reworker fails, we need to transform *that* error into the New_Error
*/
rework_error_transformer: Transformer<New_Error, Rework_Error>): Refinement_Result<Output, New_Error>;
__extract_data: (on_success: ($: Output) => void, on_error: ($: Error) => void) => void;
}