Skip to main content
Glama
links.ts1.63 kB
/** * Types of resources that can be linked to in the CMS */ export type CmsResourceType = 'item' | 'collection' | 'file' | 'user' | 'visual'; /** * Configuration for generating CMS deep links */ interface LinkConfig { baseUrl: string; type: CmsResourceType; collection?: string; id?: string; file?: string; user?: string; url?: string; } /** * Base function to generate CMS deep links based on resource type * @param config - Configuration for the link * @returns A deep link or undefined if required parameters are missing */ export const generateCmsLink = (config: Partial<LinkConfig>): string | undefined => { const { baseUrl, type, collection, id, file, user, url } = config; if (!baseUrl) { return undefined; } switch (type) { case 'item': if (!collection || !id) return undefined; return `${baseUrl}/admin/content/${collection}/${id}`; case 'collection': if (!collection) return undefined; return `${baseUrl}/admin/content/${collection}`; case 'file': if (!file) return undefined; return `${baseUrl}/admin/content/files/${file}`; case 'user': if (!user) return undefined; return `${baseUrl}/admin/content/users/${user}`; case 'visual': if (!url) return undefined; try { // Ensure url is a valid URL and not a relative path const urlObj = new URL(url); // Set visual-editing=true in query params while keeping other params urlObj.searchParams.set('visual-editing', 'true'); return `${baseUrl}/admin/visual/${urlObj.toString()}`; } catch { // Handle invalid URLs return undefined; } default: return undefined; } };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JoshTheDerf/directus-extension-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server