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) ?? [] ); }