create-plume-react-project
Version:
CLI to create Plume React Project
39 lines (31 loc) • 1.13 kB
text/typescript
import {
createGroup, createRouter, defineRoute, param,
} from 'type-route';
export type UsersRouteUpdate = {
userId: string,
};
export const ROUTE_USERS: 'users' = 'users';
export const ROUTE_USERS_CREATE: 'usersCreate' = 'usersCreate';
export const ROUTE_USERS_UPDATE: 'usersUpdate' = 'usersUpdate';
const baseUsersRoute: ReturnType<typeof defineRoute> = defineRoute('/users');
// eslint-disable-next-line @typescript-eslint/typedef
export const usersRouteDefinitions = {
[ROUTE_USERS]: baseUsersRoute,
[ROUTE_USERS_CREATE]: baseUsersRoute.extend('/create'),
[ROUTE_USERS_UPDATE]: baseUsersRoute.extend(
{ userId: param.path.string },
(params: UsersRouteUpdate) => `/${params.userId}`,
),
};
export const { RouteProvider: UsersRouterProvider, useRoute: useUsersRoute, routes: usersRoutes } = createRouter(
{
scrollToTop: true,
},
usersRouteDefinitions,
);
export const usersGroup: ReturnType<typeof createGroup> = createGroup([
usersRoutes[ROUTE_USERS],
usersRoutes[ROUTE_USERS_CREATE],
usersRoutes[ROUTE_USERS_UPDATE],
]);
export type UseUsersRoute = ReturnType<typeof useUsersRoute>;