Skip to main content
Glama
navigation_stack.ts1.08 kB
import * as _ from "lodash-es"; import { reactive } from "vue"; const LIMIT = 5; export type params = Record<string, string | string[]>; export type query = Record<string, string | string[]>; export interface Breadcrumb { url: string; params: params; query: query; name: string; } export const breadcrumbs = reactive<Breadcrumb[]>([]); export const push = ( url: string, name: string, params: params, query: query, ) => { const prev = breadcrumbs[breadcrumbs.length - 1]; const data = { url, name, params, query }; if (!prev) breadcrumbs.push(data); else if ( // dont push dupe navs onto the stack prev.name !== name || prev.url !== url || !_.isEqual(prev.params, params) || !_.isEqual(prev.query, query) ) breadcrumbs.push(data); if (breadcrumbs.length > LIMIT) breadcrumbs.shift(); }; export const prevPage = () => { if (breadcrumbs.length === 1) return undefined; // current page is only page on the stack return breadcrumbs[breadcrumbs.length - 2]; }; export const reset = () => { breadcrumbs.splice(0, Infinity); };

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/systeminit/si'

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