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