diff --git a/packages/core-api/src/routing/RouteRef.ts b/packages/core-api/src/routing/RouteRef.ts index 51bb9ee1a4..5e7a4294d9 100644 --- a/packages/core-api/src/routing/RouteRef.ts +++ b/packages/core-api/src/routing/RouteRef.ts @@ -14,28 +14,33 @@ * limitations under the License. */ -import { ConcreteRoute, ref, resolveRoute, RouteRefConfig } from './types'; +import { + ConcreteRoute, + routeReference, + ReferencedRoute, + resolveRoute, + RouteRefConfig, +} from './types'; import { generatePath } from 'react-router-dom'; type SubRouteConfig = { path: string; }; -export class SubRouteRef { +export class SubRouteRef + implements ReferencedRoute { constructor( private readonly parent: ConcreteRoute, private readonly config: SubRouteConfig, ) {} - [ref]() { + get [routeReference]() { return this; } link(params: T): ConcreteRoute { - const selfRef = this as unknown; - return { - [ref]: () => selfRef, + [routeReference]: this, [resolveRoute]: (path: string) => { const ownPart = generatePath(this.config.path, params); const parentPart = this.parent[resolveRoute](path); @@ -67,7 +72,7 @@ export class AbsoluteRouteRef implements ConcreteRoute { return new SubRouteRef(this, config); } - [ref]() { + get [routeReference]() { return this; } diff --git a/packages/core-api/src/routing/RouteRefRegistry.ts b/packages/core-api/src/routing/RouteRefRegistry.ts index 7377a90672..4bc824ac3f 100644 --- a/packages/core-api/src/routing/RouteRefRegistry.ts +++ b/packages/core-api/src/routing/RouteRefRegistry.ts @@ -14,10 +14,15 @@ * limitations under the License. */ -import { ConcreteRoute, ref, resolveRoute, ReferencedRoute } from './types'; +import { + ConcreteRoute, + routeReference, + resolveRoute, + ReferencedRoute, +} from './types'; const rootRoute: ConcreteRoute = { - [ref]() { + get [routeReference]() { return this; }, [resolveRoute]: () => '', @@ -39,7 +44,7 @@ class Node { let node = this as Node | undefined; for (let i = 0; i < routes.length; i++) { - node = node?.children.get(routes[i][ref]()); + node = node?.children.get(routes[i][routeReference]); } return node; @@ -62,7 +67,7 @@ class Node { } const lastRoute = routes[routes.length - 1]; - const lastRouteRef = lastRoute[ref](); + const lastRouteRef = lastRoute[routeReference]; if (parentNode.children.has(lastRouteRef)) { return false; } diff --git a/packages/core-api/src/routing/types.ts b/packages/core-api/src/routing/types.ts index 291029c3f2..162ac74bde 100644 --- a/packages/core-api/src/routing/types.ts +++ b/packages/core-api/src/routing/types.ts @@ -17,10 +17,10 @@ import { IconComponent } from '../icons'; export const resolveRoute = Symbol('resolve-route'); -export const ref = Symbol('route-ref'); +export const routeReference = Symbol('route-ref'); export type ReferencedRoute = { - [ref](): unknown; + [routeReference]: unknown; }; export type ConcreteRoute = ReferencedRoute & {