Skip to main content
Glama
MIT License
27,120
19,789
  • Linux
  • Apple
analytics.ts•3.78 kB
// Analytics event categories export const AnalyticsCategory = { REPOSITORY: 'repository', FORMAT: 'format', OPTIONS: 'options', OUTPUT: 'output', } as const; // Analytics event actions export const AnalyticsAction = { // Repository events PACK_START: 'pack_start', PACK_SUCCESS: 'pack_success', PACK_SUCCESS_FILES: 'pack_success_files', PACK_SUCCESS_CHARS: 'pack_success_chars', PACK_ERROR: 'pack_error', // Format events FORMAT_CHANGE: 'format_change', // Options events TOGGLE_REMOVE_COMMENTS: 'toggle_remove_comments', TOGGLE_REMOVE_EMPTY_LINES: 'toggle_remove_empty_lines', TOGGLE_LINE_NUMBERS: 'toggle_line_numbers', TOGGLE_FILE_SUMMARY: 'toggle_file_summary', TOGGLE_DIRECTORY_STRUCTURE: 'toggle_directory_structure', TOGGLE_OUTPUT_PARSABLE: 'toggle_output_parsable', TOGGLE_COMPRESS: 'toggle_compress', UPDATE_INCLUDE_PATTERNS: 'update_include_patterns', UPDATE_IGNORE_PATTERNS: 'update_ignore_patterns', // Output events COPY_OUTPUT: 'copy_output', DOWNLOAD_OUTPUT: 'download_output', SHARE_OUTPUT: 'share_output', } as const; export type AnalyticsCategoryType = (typeof AnalyticsCategory)[keyof typeof AnalyticsCategory]; export type AnalyticsActionType = (typeof AnalyticsAction)[keyof typeof AnalyticsAction]; // Google Analytics event tracking interface interface GAEventParams { category: AnalyticsCategoryType; action: AnalyticsActionType; label?: string; value?: number; } // Track an event using gtag export function trackEvent({ category, action, label, value }: GAEventParams): void { if (typeof window === 'undefined' || !window.gtag) { return; } window.gtag('event', action, { event_category: category, event_label: label, value: value, }); } // Analytics utility functions for specific events export const analyticsUtils = { // Repository events trackPackStart(repoUrl: string): void { trackEvent({ category: AnalyticsCategory.REPOSITORY, action: AnalyticsAction.PACK_START, label: repoUrl, }); }, trackPackSuccess(repoUrl: string, totalFiles: number, totalChars: number): void { trackEvent({ category: AnalyticsCategory.REPOSITORY, action: AnalyticsAction.PACK_SUCCESS_FILES, label: `${repoUrl}_files`, value: totalFiles, }); trackEvent({ category: AnalyticsCategory.REPOSITORY, action: AnalyticsAction.PACK_SUCCESS_CHARS, label: `${repoUrl}_chars`, value: totalChars, }); }, trackPackError(repoUrl: string, error: string): void { trackEvent({ category: AnalyticsCategory.REPOSITORY, action: AnalyticsAction.PACK_ERROR, label: `${repoUrl} - ${error}`, }); }, // Options events trackOptionToggle(action: AnalyticsActionType, enabled: boolean): void { trackEvent({ category: AnalyticsCategory.OPTIONS, action: action, label: enabled ? 'enabled' : 'disabled', }); }, // Output events trackCopyOutput(format: string): void { trackEvent({ category: AnalyticsCategory.OUTPUT, action: AnalyticsAction.COPY_OUTPUT, label: format, }); }, trackDownloadOutput(format: string): void { trackEvent({ category: AnalyticsCategory.OUTPUT, action: AnalyticsAction.DOWNLOAD_OUTPUT, label: format, }); }, trackShareOutput(format: string): void { trackEvent({ category: AnalyticsCategory.OUTPUT, action: AnalyticsAction.SHARE_OUTPUT, label: format, }); }, }; // Type definitions for window.gtag declare global { interface Window { gtag: ( command: 'event', action: string, params: { event_category: string; event_label?: string; value?: number; }, ) => void; } }

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/yamadashy/repomix'

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