Files
pulse/lib/api/sites.ts
Usman Baig b305b5345b refactor: remove performance insights (Web Vitals) feature entirely
Remove Performance tab, PerformanceStats component, settings toggle,
Web Vitals observers from tracking script, and all related API types
and SWR hooks. Duration tracking is preserved.
2026-03-14 22:47:33 +01:00

97 lines
2.4 KiB
TypeScript

import apiRequest from './client'
export type GeoDataLevel = 'full' | 'country' | 'none'
export interface Site {
id: string
user_id: string
domain: string
name: string
timezone?: string
is_public?: boolean
has_password?: boolean
excluded_paths?: string[]
// Data collection settings (privacy controls)
collect_page_paths?: boolean
collect_referrers?: boolean
collect_device_info?: boolean
collect_geo_data?: GeoDataLevel
collect_screen_resolution?: boolean
// Bot and noise filtering
filter_bots?: boolean
// Hide unknown locations from stats
hide_unknown_locations?: boolean
// Data retention (months); 0 = keep forever
data_retention_months?: number
is_verified?: boolean
created_at: string
updated_at: string
}
export interface CreateSiteRequest {
domain: string
name: string
}
export interface UpdateSiteRequest {
name: string
timezone?: string
is_public?: boolean
password?: string
clear_password?: boolean
excluded_paths?: string[]
// Data collection settings (privacy controls)
collect_page_paths?: boolean
collect_referrers?: boolean
collect_device_info?: boolean
collect_geo_data?: GeoDataLevel
collect_screen_resolution?: boolean
// Bot and noise filtering
filter_bots?: boolean
// Hide unknown locations from stats
hide_unknown_locations?: boolean
// Data retention (months); 0 = keep forever
data_retention_months?: number
}
export async function listSites(): Promise<Site[]> {
const response = await apiRequest<{ sites: Site[] }>('/sites')
return response?.sites || []
}
export async function getSite(id: string): Promise<Site> {
return apiRequest<Site>(`/sites/${id}`)
}
export async function createSite(data: CreateSiteRequest): Promise<Site> {
return apiRequest<Site>('/sites', {
method: 'POST',
body: JSON.stringify(data),
})
}
export async function updateSite(id: string, data: UpdateSiteRequest): Promise<Site> {
return apiRequest<Site>(`/sites/${id}`, {
method: 'PUT',
body: JSON.stringify(data),
})
}
export async function deleteSite(id: string): Promise<void> {
await apiRequest(`/sites/${id}`, {
method: 'DELETE',
})
}
export async function resetSiteData(id: string): Promise<void> {
await apiRequest(`/sites/${id}/reset`, {
method: 'POST',
})
}
export async function verifySite(id: string): Promise<void> {
await apiRequest(`/sites/${id}/verify`, {
method: 'POST',
})
}