UNPKG

@bespunky/angular-zen

Version:

The Angular tools you always wished were there.

18 lines (17 loc) 1.8 kB
import type { FirstChar, Narrow } from '@bespunky/typescript-utils'; import { autoNavigatorNameSeparator } from '../navigation-x.route-creator'; import type { RouteOperationMethod } from './auto-navigator-methods.types'; import type { RouteArgumentName, RouteSegments } from './route-paths.types'; declare type CapitalizeRouteSegment<Segment extends string> = Segment['length'] extends 0 | 1 ? never : Segment extends `:${infer ArgName}` ? Capitalize<ArgName> : Capitalize<Segment>; declare type JoinStrings<S1 extends string, S2 extends string> = `${S1}${S2}`; declare type Separator = typeof autoNavigatorNameSeparator; declare type SegmentedRouteComposerName<Segments extends string[]> = { 0: ''; 1: CapitalizeRouteSegment<Segments[0]>; multi: Segments extends [infer First, ...infer Rest] ? First extends string ? Rest extends string[] ? JoinStrings<CapitalizeRouteSegment<First>, JoinStrings<Separator, SegmentedRouteComposerName<Rest>>> : never : never : never; }[Segments['length'] extends 0 | 1 ? Segments['length'] : 'multi']; export declare type GeneratedRouteComposerName<Path extends string> = SegmentedRouteComposerName<RouteSegments<Path>>; export declare type RouteComposerName<FriendlyName extends string | undefined, FullPath extends string> = FirstChar<FriendlyName> extends string ? FriendlyName : GeneratedRouteComposerName<FullPath>; export declare type RouteComposerComposeMethod<Entity, Path extends string> = RouteOperationMethod<Entity, Path, string>; export declare type EntityRouteArgs<Entity, Path extends string> = RouteArgumentName<Path> extends keyof Entity ? Narrow<Pick<Entity, RouteArgumentName<Path>>> : `Route argument '${Exclude<RouteArgumentName<Path>, keyof Entity>}' doesn't match any property on the route's corresponding entity.`; export {};