core/converters/page.converter.ts

core/converters/page.converter.ts is a file in Bane's Lab Build Scripts. 17 lines of code and 4 definitions.

import type { PageRoute, SiteSource } from "#types/page.types";
import type { Discovery } from "#types/site.types";
import { definitionOf } from "#core/selectors/page.selector";

const SLASH = "/";

export const routesOf = function routesOf(
    loaded: Pick<SiteSource, "ids" | "registry" | "renderer">,
    discovery: Discovery,
): PageRoute[] {
    const pages = loaded.ids.map((page) => ({
        page,
        path: loaded.renderer.headOf(page, definitionOf(loaded, page)).path,
    }));
    const tabs = discovery.routes
        .filter((route) => !pages.some((page) => page.path === route.path))
        .map((route) => ({ page: route.path.split(SLASH)[1] ?? "", path: route.path }));
    return [...pages, ...tabs];
};