refactor(router): add ngDevMode guards to InjectionToken names and cleanup imports

Wraps InjectionToken names with `typeof ngDevMode !== 'undefined' && ngDevMode`
checks to enable tree-shaking of descriptive token names in production builds.
This ensures debug-only strings are removed from production bundles, reducing size.

Also removes unused imports found during refactor.

(cherry picked from commit b0b834d7f1)
This commit is contained in:
Shuaib Hasan Akib 2025-11-07 11:43:25 +06:00 committed by Andrew Kushnir
parent 8ab084754b
commit e5a19cb736
4 changed files with 13 additions and 6 deletions

View file

@ -434,7 +434,9 @@ class OutletInjector implements Injector {
}
}
export const INPUT_BINDER = new InjectionToken<RoutedComponentInputBinder>('');
export const INPUT_BINDER = new InjectionToken<RoutedComponentInputBinder>(
typeof ngDevMode !== 'undefined' && ngDevMode ? 'Router Input Binder' : '',
);
/**
* Injectable used as a tree-shakable provider for opting in to binding router data to component

View file

@ -24,7 +24,7 @@ import type {RouterConfigLoader} from '../router_config_loader';
import type {UrlSerializer} from '../url_tree';
const RECOGNIZE_IMPL = new InjectionToken<typeof recognizeFn | typeof recognizeFnRxjs>(
'RECOGNIZE_IMPL',
typeof ngDevMode !== 'undefined' && ngDevMode ? 'RECOGNIZE_IMPL' : '',
{
factory: () => {
const USE_ASYNC_RECOGNIZE = true;

View file

@ -142,9 +142,12 @@ function routerFeature<FeatureKind extends RouterFeatureKind>(
* An Injection token used to indicate whether `provideRouter` or `RouterModule.forRoot` was ever
* called.
*/
export const ROUTER_IS_PROVIDED = new InjectionToken<boolean>('', {
factory: () => false,
});
export const ROUTER_IS_PROVIDED = new InjectionToken<boolean>(
typeof ngDevMode !== 'undefined' && ngDevMode ? 'Router is provided' : '',
{
factory: () => false,
},
);
const routerIsProvidedDevModeCheck = {
provide: ENVIRONMENT_INITIALIZER,

View file

@ -22,7 +22,9 @@ import {
import {NavigationTransitions} from './navigation_transition';
import {UrlSerializer} from './url_tree';
export const ROUTER_SCROLLER = new InjectionToken<RouterScroller>('');
export const ROUTER_SCROLLER = new InjectionToken<RouterScroller>(
typeof ngDevMode !== 'undefined' && ngDevMode ? 'Router Scroller' : '',
);
@Injectable()
export class RouterScroller implements OnDestroy {