UNPKG

@tectonique/api-standards-client

Version:

Client side implementation for API Standards (response envelopes and Problem Details).

23 lines (22 loc) 3.35 kB
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>>; };