cardamon
Version:
A CLI tool for measuring the carbon footprint and energy consumption of web pages using the Cardamon model
194 lines • 4.32 kB
TypeScript
export interface Sample {
value: number;
timestamp: number;
}
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;
vcpu?: number;
count?: number;
};
};
pue: number;
guessCpuUtilization?: number;
};
}
export interface NetworkMetrics {
cachedBytes: number;
uncachedBytes: number;
duration: number;
}
export interface RegionalDistribution {
region_code: string;
carbon_intensity: number;
proportion: number;
}
export interface UserAnalytics {
page_visit_count: number;
return_visit_count: number;
start_date: string;
end_date: string;
average_session_duration?: number;
regional_distribution: RegionalDistribution[];
}
export interface ServerConfig {
serverId: string;
vcpu: number;
cpuUtilization: number;
quantity: number;
totalServerVisit: number;
totalReportVisit: number;
regionalDistribution: {
regionCode: string;
carbonIntensity: number;
};
specs?: DeviceSpecs;
}
export interface CardamonConfig {
frontend: {
cpu: Sample[];
screen: Sample[];
network: NetworkMetrics;
device: DeviceSpecs;
};
backend: {
network: NetworkMetrics;
serverConfig: ServerConfig[];
};
userAnalytics: UserAnalytics;
scalingMethod: 'frontend' | 'backend';
}
export interface EnergyMetrics {
frontend: {
cpu: number;
screen: number;
network: number;
idle: number;
operational: number;
total: number;
};
backend: {
cpu: number;
network: number;
idle: number;
operational: number;
total: number;
};
infrastructure: {
network: number;
};
operational: number;
total: number;
}
export interface EmissionsMetrics {
frontend: {
cpu: number;
screen: number;
network: number;
idle: number;
operational: number;
embodied: number;
total: number;
};
backend: {
cpu: number;
network: number;
idle: number;
operational: number;
embodied: number;
total: number;
};
infrastructure: {
network: number;
};
operational: number;
embodied: number;
total: number;
}
export interface CPUUsage {
value: number;
timestamp: number;
}
export interface ColorProfile {
value: number;
timestamp: number;
}
export interface NetworkRequest {
url: string;
method: string;
resourceType: string;
requestId: string;
timestamp: number;
responseReceivedTime: number;
encodedDataLength: number;
decodedBodyLength: number;
transferSize: number;
fromCache: boolean;
status: number;
mimeType: string;
}
export interface FrontendMetrics {
cpu: CPUUsage[];
colorProfile: ColorProfile[];
duration: number;
}
export interface NetworkMetricsExtended {
requests: NetworkRequest[];
totalBytes: number;
cachedBytes: number;
loadEventSize: number;
resourceBreakdown: any;
duration: number;
}
export interface CardamonResult {
frontend: {
energy: number;
co2: number;
rating: string;
};
network: {
energy: number;
co2: number;
rating: string;
};
total: {
energy: number;
co2: number;
rating: string;
};
metrics: {
frontend: FrontendMetrics;
network: NetworkMetricsExtended;
};
}
export interface MeasurementConfig {
url: string;
duration: number;
carbonIntensity: number;
device: 'desktop' | 'mobile';
quick?: boolean;
}
//# sourceMappingURL=types.d.ts.map