@izzyjs/route
Version:
Use your AdonisJs routes in your Inertia.js application
43 lines (42 loc) • 1.89 kB
TypeScript
import { HttpClient } from './http_client.js';
import { Route } from './route.js';
import { ExcludeName, ExtractName, Params } from './types/routes.js';
type Config = Omit<RequestInit, 'method' | 'body'>;
declare class RequestBuilder<ResponseSuccess = any, ResponseFailed = Error, Request = any> {
private data;
private config;
private route;
private httpClient;
constructor(route: Route, data?: Request, config?: Config, httpClient?: HttpClient);
successType<InferredResponseSuccess>(): RequestBuilder<InferredResponseSuccess, ResponseFailed, Request>;
failedType<InferredResponseFailed>(): RequestBuilder<ResponseSuccess, InferredResponseFailed, Request>;
withData<InferredRequest>(data: InferredRequest): RequestBuilder<ResponseSuccess, ResponseFailed, InferredRequest>;
run(): Promise<{
data: ResponseSuccess;
error: null;
} | {
data: null;
error: ResponseFailed;
}>;
}
declare class ApiBuilder<Name> {
private nameRoute;
private params;
private qs;
private hash;
private prefix;
private httpClient;
constructor(nameRoute: Name, params: Record<string, string>, httpClient?: HttpClient);
withQs(qs: Record<string, string>): ApiBuilder<Name>;
withHash(hash: string): ApiBuilder<Name>;
withPrefix(prefix: string): ApiBuilder<Name>;
route(): Route;
request(config?: Config): RequestBuilder<any, Error, undefined>;
}
declare function builder<Name extends ExtractName>(nameRoute: Name, params: Params<Name>): ApiBuilder<Name>;
declare function builder<Name extends ExcludeName>(nameRoute: Name): ApiBuilder<Name>;
export declare function createApiBuilder(customClient: HttpClient): {
<Name extends ExtractName>(nameRoute: Name, params: Params<Name>): ApiBuilder<Name>;
<Name extends ExcludeName>(nameRoute: Name): ApiBuilder<Name>;
};
export default builder;