UNPKG

cardamon

Version:

A CLI tool for measuring the carbon footprint and energy consumption of web pages using the Cardamon model

150 lines 3.81 kB
/** * types.ts * Type definitions for the Cardamon SDK */ import { REFERENCE_DEVICES } from './constants'; export interface DeviceSpecs { type: 'mobile' | 'desktop' | 'server'; oledProportion: number; oledMinPower: number; oledMaxPower: number; lcdPower: number; idlePower: number; networkMaxPower: number; networkMinPower: number; networkTransferRate: number; boaviztaCoefficients: { a: number; b: number; c: number; d: number; }; embodiedEmissions: { manufacturing: number; lifetime: number; }; info: { name: string; description: string; specs: { cpu: { cores: number; }; }; }; } export interface Sample { /** CPU utilization [0-100] or pixel color [0-1] */ value: number; /** Unix timestamp in milliseconds */ timestamp: number; } export interface NetworkMetrics { /** Bytes transferred with cache */ cachedBytes: number; /** Bytes transferred without cache */ uncachedBytes: number; /** Duration in milliseconds */ duration: number; } export interface RegionalDistribution { /** Region code (e.g., 'UK', 'US', 'global') */ region_code: string; /** Proportion of traffic from this region (0-1) */ proportion: number; /** Carbon intensity in gCO2e/kWh for this region */ carbon_intensity: number; } export interface Region { /** Unique identifier for the region */ id: string; /** Total number of page visits */ page_visit_count: number; /** Number of return visits */ return_visit_count: number; /** Distribution of traffic across regions */ regionalDistribution: RegionalDistribution[]; } export interface FrontendMetrics { cpu: Sample[]; screen: Sample[]; network: NetworkMetrics; device: DeviceSpecs; } export interface BackendMetrics { network: NetworkMetrics; serverConfig: ServerConfig[]; } export interface CardamonConfig { frontend: FrontendMetrics; backend: BackendMetrics; userAnalytics: UserAnalytics; scalingMethod: 'backend' | 'frontend'; } export interface UserAnalytics { start_date: string; end_date: string; page_visit_count: number; return_visit_count: number; regional_distribution: RegionalDistribution[]; report_page_count: number; average_session_duration: number; device_breakdown: { desktop: { percentage: number; }; }; } export interface ServerConfig { serverId: string; cpuUtilization: number; quantity: number; totalReportVisit: number; totalServerVisit: number; vcpu: number; isDedicated: boolean; regionalDistribution: { regionCode: string; carbonIntensity: number; }; specs?: any; } export interface ComponentEnergy { /** Energy in Watt-hours (Wh) */ cpu: number; network: number; idle: number; operational: number; total: number; } export interface FrontendEnergy extends ComponentEnergy { screen: number; } export interface EnergyMetrics { infrastructure: any; frontend: FrontendEnergy; backend: ComponentEnergy; operational: number; total: number; } export interface ComponentEmissions { idle: number; cpu: number; network: number; operational: number; embodied: number; total: number; } export interface FrontendEmissions extends ComponentEmissions { screen: number; } export interface EmissionsMetrics { infrastructure: any; frontend: FrontendEmissions; backend: ComponentEmissions; operational: number; embodied: number; total: number; } export type DeviceType = keyof typeof REFERENCE_DEVICES; //# sourceMappingURL=types.d.ts.map