Skip to content

Commit

Permalink
fix: baseUrl passed to sortConfig
Browse files Browse the repository at this point in the history
  • Loading branch information
semoal committed Oct 29, 2021
1 parent d4114c7 commit 19d3677
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 4 deletions.
Expand Up @@ -82,3 +82,48 @@ Array [
},
]
`;

exports[`sortConfig should sort route config given a baseURL 1`] = `
Array [
Object {
"component": "",
"path": "/latest/community",
},
Object {
"component": "",
"path": "/latest/example",
},
Object {
"component": "",
"path": "/latest/some-page",
},
Object {
"component": "",
"path": "/latest/docs",
"routes": Array [
Object {
"component": "",
"path": "/latest/docs/someDoc",
},
Object {
"component": "",
"path": "/latest/docs/someOtherDoc",
},
],
},
Object {
"component": "",
"path": "/latest",
"routes": Array [
Object {
"component": "",
"path": "/latest/someDoc",
},
Object {
"component": "",
"path": "/latest/someOtherDoc",
},
],
},
]
`;
38 changes: 38 additions & 0 deletions packages/docusaurus/src/server/plugins/__tests__/init.test.ts
Expand Up @@ -87,4 +87,42 @@ describe('sortConfig', () => {

expect(routes).toMatchSnapshot();
});

test('should sort route config given a baseURL', () => {
const baseURL = '/latest';
const routes: RouteConfig[] = [
{
path: baseURL,
component: '',
routes: [
{path: `${baseURL}/someDoc`, component: ''},
{path: `${baseURL}/someOtherDoc`, component: ''},
],
},
{
path: `${baseURL}/example`,
component: '',
},
{
path: `${baseURL}/docs`,
component: '',
routes: [
{path: `${baseURL}/docs/someDoc`, component: ''},
{path: `${baseURL}/docs/someOtherDoc`, component: ''},
],
},
{
path: `${baseURL}/community`,
component: '',
},
{
path: `${baseURL}/some-page`,
component: '',
},
];

sortConfig(routes, baseURL);

expect(routes).toMatchSnapshot();
});
});
11 changes: 7 additions & 4 deletions packages/docusaurus/src/server/plugins/index.ts
Expand Up @@ -26,15 +26,18 @@ import {chain} from 'lodash';
import {localizePluginTranslationFile} from '../translations/translations';
import applyRouteTrailingSlash from './applyRouteTrailingSlash';

export function sortConfig(routeConfigs: RouteConfig[]): void {
export function sortConfig(
routeConfigs: RouteConfig[],
baseUrl: string = '/',
): void {
// Sort the route config. This ensures that route with nested
// routes is always placed last.
routeConfigs.sort((a, b) => {
// Root route should get placed last.
if (a.path === '/' && b.path !== '/') {
if (a.path === baseUrl && b.path !== baseUrl) {
return 1;
}
if (a.path !== '/' && b.path === '/') {
if (a.path !== baseUrl && b.path === baseUrl) {
return -1;
}

Expand Down Expand Up @@ -221,7 +224,7 @@ export async function loadPlugins({

// Sort the route config. This ensures that route with nested
// routes are always placed last.
sortConfig(pluginsRouteConfigs);
sortConfig(pluginsRouteConfigs, context.siteConfig.baseUrl);

// Apply each plugin one after the other to translate the theme config
function translateThemeConfig(
Expand Down

0 comments on commit 19d3677

Please sign in to comment.