45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import { buildPath } from '../routing/RouteConfig';
|
|
|
|
/**
|
|
* RoutePathBuilder builds paths from route IDs with optional parameters and locale
|
|
*
|
|
* Usage:
|
|
* ```typescript
|
|
* const builder = new RoutePathBuilder();
|
|
*
|
|
* // Simple route
|
|
* builder.build('auth.login'); // → '/auth/login'
|
|
*
|
|
* // With parameters
|
|
* builder.build('league.detail', { id: '123' }); // → '/leagues/123'
|
|
*
|
|
* // With locale
|
|
* builder.build('auth.login', {}, { locale: 'de' }); // → '/de/auth/login'
|
|
*
|
|
* // With parameters and locale
|
|
* builder.build('league.detail', { id: '123' }, { locale: 'de' }); // → '/de/leagues/123'
|
|
* ```
|
|
*/
|
|
export class RoutePathBuilder {
|
|
/**
|
|
* Build a path from route ID with optional parameters and locale
|
|
* @param routeId - Route ID in format 'category.routeName'
|
|
* @param params - Optional parameters for parameterized routes
|
|
* @param options - Optional options including locale
|
|
* @returns Complete path with optional locale prefix
|
|
*/
|
|
build(
|
|
routeId: string,
|
|
params?: Record<string, string>,
|
|
options?: { locale?: string | null }
|
|
): string {
|
|
const path = buildPath(routeId, params);
|
|
|
|
// Add locale prefix if provided
|
|
if (options?.locale) {
|
|
return `/${options.locale}${path}`;
|
|
}
|
|
|
|
return path;
|
|
}
|
|
} |