core/resolvers/payload.resolver.ts

core/resolvers/payload.resolver.ts is a file in Bane's Lab Build Scripts. 28 lines of code and 12 definitions.

import { JSON_ROUTE, MARKDOWN_EXTENSION } from "#configuration/constants/site.constants";
import type { PayloadAddress } from "#types/payload.types";

const JSON_EXTENSION = ".json";
const QUERY_MARK = "?";
const SLASH = "/";
const HOME_STEM = "/index";

export const pathOf = function pathOf(url: string): string {
    return url.split(QUERY_MARK)[0] ?? "";
};

export const pageIdOf = function pageIdOf(url: string): PayloadAddress | null {
    const path = pathOf(url);
    if (!path.startsWith(JSON_ROUTE)) {
        return null;
    }
    const tail = path.slice(JSON_ROUTE.length);
    const stem = tail.endsWith(JSON_EXTENSION) ? tail.slice(0, -JSON_EXTENSION.length) : tail;
    const parts = stem.split(SLASH);
    const tab = parts.at(1);
    return { page: parts.at(0) ?? "", tab: tab === undefined || tab.length === 0 ? null : tab };
};

export const markdownRouteOf = function markdownRouteOf(url: string): string | null {
    const path = pathOf(url);
    if (!path.endsWith(MARKDOWN_EXTENSION)) {
        return null;
    }
    const stem = path.slice(0, -MARKDOWN_EXTENSION.length);
    return stem === HOME_STEM ? SLASH : stem;
};