website-visitor-counter
Version:
Real visitor counting system with Railway backend - works like komarev.com with accurate cross-device counting
72 lines (71 loc) • 3.2 kB
TypeScript
export interface CloudPlatformAdapter {
name: string;
getCounterUrl(project: string, options?: VisitorCounterOptions): string;
getCountUrl(project: string): string;
getResetUrl(project: string): string;
getHealthUrl(): string;
getStatsUrl(): string;
}
export declare class RailwayAdapter implements CloudPlatformAdapter {
name: string;
private baseUrl;
constructor(baseUrl?: string);
getCounterUrl(project: string, options?: VisitorCounterOptions): string;
getCountUrl(project: string): string;
getResetUrl(project: string): string;
getHealthUrl(): string;
getStatsUrl(): string;
private buildQueryString;
}
export declare class VercelAdapter implements CloudPlatformAdapter {
name: string;
private baseUrl;
constructor(baseUrl?: string);
getCounterUrl(project: string, options?: VisitorCounterOptions): string;
getCountUrl(project: string): string;
getResetUrl(project: string): string;
getHealthUrl(): string;
getStatsUrl(): string;
private buildQueryString;
}
export declare class NetlifyAdapter implements CloudPlatformAdapter {
name: string;
private baseUrl;
constructor(baseUrl?: string);
getCounterUrl(project: string, options?: VisitorCounterOptions): string;
getCountUrl(project: string): string;
getResetUrl(project: string): string;
getHealthUrl(): string;
getStatsUrl(): string;
private buildQueryString;
}
export declare class CloudflareAdapter implements CloudPlatformAdapter {
name: string;
private baseUrl;
constructor(baseUrl?: string);
getCounterUrl(project: string, options?: VisitorCounterOptions): string;
getCountUrl(project: string): string;
getResetUrl(project: string): string;
getHealthUrl(): string;
getStatsUrl(): string;
private buildQueryString;
}
export interface VisitorCounterOptions {
label?: string;
color?: string;
style?: 'flat' | 'flat-square' | 'for-the-badge' | 'plastic' | 'social';
base?: number;
abbreviated?: boolean;
platform?: 'railway' | 'vercel' | 'netlify' | 'cloudflare' | 'custom';
customBaseUrl?: string;
}
export declare function createPlatformAdapter(options?: VisitorCounterOptions): CloudPlatformAdapter;
export declare function getVisitorCounterBadge(project: string, options?: VisitorCounterOptions): Promise<string>;
export declare function getVisitorCount(project: string, options?: VisitorCounterOptions): Promise<number>;
export declare function resetVisitorCount(project: string, options?: VisitorCounterOptions): Promise<boolean>;
export declare function getSimpleVisitorBadge(project: string, options?: VisitorCounterOptions): string;
export declare function getVisitorCounterHTML(project: string, options?: VisitorCounterOptions): string;
export declare function getVisitorCounterMarkdown(project: string, options?: VisitorCounterOptions): string;
export declare function getVisitorCounterReact(project: string, options?: VisitorCounterOptions): string;
export declare function getBackendHealth(options?: VisitorCounterOptions): Promise<boolean>;
export declare function getBackendStats(options?: VisitorCounterOptions): Promise<any>;