muddle/decorators/RenderRoute.ts
2026-10-23 08:53:07 -04:00

26 lines
896 B
TypeScript

import { defineMetadata, getMetadata } from "../core/metadata.ts";
const KEY = "muddle:render-route";
export interface CollectionRenderRoute {
collection: string;
path: string;
}
export type RenderRouteSource = string | string[] | CollectionRenderRoute;
export function routeFolder(...segments: string[]): string {
return `/${segments.filter(Boolean).map((segment) => segment.replace(/^\/+|\/+$/g, "")).join("/")}`;
}
export function collectionRoute(collection: string, path: string): CollectionRenderRoute {
return { collection, path };
}
export function RenderRoute(routes: RenderRouteSource[]): MethodDecorator {
return (target, propertyKey) => defineMetadata(KEY, routes, target, propertyKey);
}
export function getRenderRoutes(target: object, propertyKey: string): RenderRouteSource[] {
return (getMetadata(KEY, target, propertyKey) as RenderRouteSource[] | undefined) ?? [];
}