From 240366572ca5d4c37e9da05f5b964c66a831872c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 20 Sep 2020 14:41:42 +0200 Subject: [PATCH] core-api/routing: allow duplicate registration if paths match --- packages/core-api/src/routing/RouteRefRegistry.test.ts | 1 + packages/core-api/src/routing/RouteRefRegistry.ts | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/core-api/src/routing/RouteRefRegistry.test.ts b/packages/core-api/src/routing/RouteRefRegistry.test.ts index 2849bcf32b..91d730de40 100644 --- a/packages/core-api/src/routing/RouteRefRegistry.test.ts +++ b/packages/core-api/src/routing/RouteRefRegistry.test.ts @@ -44,6 +44,7 @@ describe('RouteRefRegistry', () => { expect(registry.registerRoute([ref1, ref12], 'duplicate')).toBe(false); expect(registry.registerRoute([ref2], '2')).toBe(true); expect(registry.registerRoute([ref2], 'duplicate')).toBe(false); + expect(registry.registerRoute([ref2], '2')).toBe(true); expect(registry.resolveRoute([], [ref1])).toBe('/1'); expect(registry.resolveRoute([], [ref11])).toBe(undefined); diff --git a/packages/core-api/src/routing/RouteRefRegistry.ts b/packages/core-api/src/routing/RouteRefRegistry.ts index 4bc824ac3f..7e55cbe8f7 100644 --- a/packages/core-api/src/routing/RouteRefRegistry.ts +++ b/packages/core-api/src/routing/RouteRefRegistry.ts @@ -68,8 +68,10 @@ class Node { const lastRoute = routes[routes.length - 1]; const lastRouteRef = lastRoute[routeReference]; - if (parentNode.children.has(lastRouteRef)) { - return false; + + const existingNode = parentNode.children.get(lastRouteRef); + if (existingNode) { + return existingNode.path === path; } parentNode.children.set(lastRouteRef, new Node(path, parentNode));