@tectonique/api-standards-client
Version:
Client side implementation for API Standards (response envelopes and Problem Details).
23 lines (22 loc) • 3.35 kB
TypeScript
import { AxiosInstance } from "axios";
import { TypableApiMethodOptions } from "./types";
import { ProblemDetails, ResponseEnvelopes } from "@tectonique/api-standards";
export declare function createTypeSafeAxios<PROBLEM_DETAIL_SUPER_TYPE extends ProblemDetails.ProblemDetail<SUPER_STATUS, SUPER_TYPE, SUPER_PAYLOAD>, SUPER_STATUS extends number = PROBLEM_DETAIL_SUPER_TYPE["status"], SUPER_TYPE extends string = PROBLEM_DETAIL_SUPER_TYPE["type"], SUPER_PAYLOAD = PROBLEM_DETAIL_SUPER_TYPE["payload"]>(axios: AxiosInstance): {
verbs: {
get: <RESPONSE, QUERY>(url: string, options?: TypableApiMethodOptions<QUERY> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE>>;
post: <RESPONSE_1, BODY, QUERY_1>(url: string, body: BODY, options?: TypableApiMethodOptions<QUERY_1> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE_1>>;
put: <RESPONSE_2, BODY_1, QUERY_2>(url: string, body: BODY_1, options?: TypableApiMethodOptions<QUERY_2> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE_2>>;
patch: <RESPONSE_3, BODY_2, QUERY_3>(url: string, body: BODY_2, options?: TypableApiMethodOptions<QUERY_3> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE_3>>;
delete: <RESPONSE_4, QUERY_4>(url: string, options?: TypableApiMethodOptions<QUERY_4> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE_4>>;
};
createProblemDetailHandler: <RESULT>(handler: (problemDetail: PROBLEM_DETAIL_SUPER_TYPE) => RESULT) => (reason: any) => RESULT;
handleProblemDetail: <RESULT_1>(reason: any, handler: (problemDetail: PROBLEM_DETAIL_SUPER_TYPE) => RESULT_1) => RESULT_1;
};
export declare function createTypedHandleProblemDetail<PROBLEM_DETAIL_SUPER_TYPE extends ProblemDetails.ProblemDetail<SUPER_STATUS, SUPER_TYPE, SUPER_PAYLOAD>, SUPER_STATUS extends number = PROBLEM_DETAIL_SUPER_TYPE["status"], SUPER_TYPE extends string = PROBLEM_DETAIL_SUPER_TYPE["type"], SUPER_PAYLOAD = PROBLEM_DETAIL_SUPER_TYPE["payload"]>(): <RESULT>(reason: any, handler: (problemDetail: PROBLEM_DETAIL_SUPER_TYPE) => RESULT) => RESULT;
export declare function createTypedAxiosVerbs<PROBLEM_DETAIL_SUPER_TYPE extends ProblemDetails.ProblemDetail<SUPER_STATUS, SUPER_TYPE, SUPER_PAYLOAD>, SUPER_STATUS extends number = PROBLEM_DETAIL_SUPER_TYPE["status"], SUPER_TYPE extends string = PROBLEM_DETAIL_SUPER_TYPE["type"], SUPER_PAYLOAD = PROBLEM_DETAIL_SUPER_TYPE["payload"]>(axios: AxiosInstance): {
get: <RESPONSE, QUERY>(url: string, options?: TypableApiMethodOptions<QUERY> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE>>;
post: <RESPONSE_1, BODY, QUERY_1>(url: string, body: BODY, options?: TypableApiMethodOptions<QUERY_1> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE_1>>;
put: <RESPONSE_2, BODY_1, QUERY_2>(url: string, body: BODY_1, options?: TypableApiMethodOptions<QUERY_2> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE_2>>;
patch: <RESPONSE_3, BODY_2, QUERY_3>(url: string, body: BODY_2, options?: TypableApiMethodOptions<QUERY_3> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE_3>>;
delete: <RESPONSE_4, QUERY_4>(url: string, options?: TypableApiMethodOptions<QUERY_4> | undefined) => Promise<ResponseEnvelopes.SuccessEnvelope<RESPONSE_4>>;
};