UNPKG

@protorians/air-rest

Version:
86 lines (83 loc) 3.79 kB
declare module '@protorians/air-rest/example' { export {}; } declare module '@protorians/air-rest/index' { import type { IAirRestServer, IAirRestEndPoint, IAirMethods, IEndpointPayload, IEndpointResponse } from "@protorians/air-rest/types"; export function stringifyPayload(payload: IEndpointPayload): string[]; export function render<R extends IEndpointResponse>(endpoint: RequestInfo, options: RequestInit | undefined): Promise<R>; export function useEndpoint<P extends IEndpointPayload, R extends IEndpointResponse>(): AirRestEndPoint<P, R>; /** * Création d'un point de chute */ export class AirRestEndPoint<P extends IEndpointPayload, R extends IEndpointResponse> implements IAirRestEndPoint<P, R> { #private; get _route(): string | number; get _payload(): FormData | P; get _method(): IAirMethods; get _transpilate(): boolean; /** * Utilisation avec un serveur de points de chutes * @param rest */ use(rest: IAirRestServer): this; method(method: IAirMethods): this; route(route: string | number): this; useForm(form: HTMLFormElement): this; useFormData(formData: FormData): this; slugs(...slugs: (string | number)[]): this; payload(payload: P): this; send(): Promise<R> | undefined; } export function transpilatePayload(payload?: object): BodyInit; export class AirRestServer implements IAirRestServer { server: string; options: RequestInit | undefined; constructor(server: string, options: RequestInit | undefined); get<R extends IEndpointResponse>(endpoint: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; post<R extends IEndpointResponse>(endpoint: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; put<R extends IEndpointResponse>(endpoint: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; patch<R extends IEndpointResponse>(endpoint: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; delete<R extends IEndpointResponse>(endpoint: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; } export default class AirRest { static Server: typeof AirRestServer; static Endpoint: typeof AirRestEndPoint; } } declare module '@protorians/air-rest/types' { export type IAirMethods = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; export interface IAirRestEndPoint<P extends IEndpointPayload, R extends IEndpointResponse> { _route: string | number; _payload: IEndpointPayload | FormData; _method: IAirMethods; _transpilate: boolean; use(server: IAirRestServer): this; method(method: IAirMethods): this; route(route: string | number): this; slugs(...slugs: (string | number)[]): this; payload(payload: P): this; send(): Promise<R> | undefined; useForm(form: HTMLFormElement): this; useFormData(formData: FormData): this; } export type IEndpointResponse = { [R: string]: any; }; export type IEndpointPayload = { [P: string]: any; }; export type AirStackEndPoints = {}; export interface IAirRestServer { server: string; options: RequestInit | undefined; post<R extends IEndpointResponse>(stack: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; get<R extends IEndpointResponse>(stack: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; put<R extends IEndpointResponse>(stack: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; patch<R extends IEndpointResponse>(stack: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; delete<R extends IEndpointResponse>(stack: IAirRestEndPoint<IEndpointPayload, R>): Promise<R>; } } declare module '@protorians/air-rest' { import main = require('@protorians/air-rest/index'); export = main; }