@adonisjs/inertia
Version:
Official Inertia.js adapter for AdonisJS
28 lines (27 loc) • 1.08 kB
TypeScript
import type { UserRegistry, InferRoutes } from '@tuyau/core/types';
import type { AreAllOptional } from '@poppinss/utils/types';
export type Routes = InferRoutes<UserRegistry>;
/**
* Get parameter tuple type for a route
*/
export type ExtractParamsTuple<Route extends keyof Routes> = Routes[Route]['types']['paramsTuple'];
/**
* Get parameter object type for a route
*/
export type ExtractParamsObject<Route extends keyof Routes> = Routes[Route]['types']['params'];
/**
* Get params format for a route
*/
export type RouteParamsFormats<Route extends keyof Routes> = ExtractParamsObject<Route> extends Record<string, never> ? never : ExtractParamsTuple<Route> | ExtractParamsObject<Route>;
/**
* Parameters required for route navigation with proper type safety.
*/
export type RouteParams<Route extends keyof Routes> = {
route: Route;
} & (RouteParamsFormats<Route> extends never ? {
routeParams?: never;
} : AreAllOptional<ExtractParamsObject<Route>> extends true ? {
routeParams?: RouteParamsFormats<Route>;
} : {
routeParams: RouteParamsFormats<Route>;
});