Skip to content

Commit

Permalink
🤖 Merge PR DefinitelyTyped#67910 Add types for @tgwf/co2 by @fershad
Browse files Browse the repository at this point in the history
* Add types for @tgwf/co2

* update exports

* update exports

* ran formatting

* add Chris Adams as owner

* format package.json

* remove "paths" from tsconfig

* use export =

* export intensity data as namespace

* change imports

* export class

* explicit export

* use body of namespace as module

* fix file paths

* remove file paths

* correct paths

* fix no exported member error

* correct missing name

* use requires for imports

* export declarations

* replace export with declare
  • Loading branch information
fershad authored Jan 8, 2024
1 parent 10a2e64 commit 186c223
Show file tree
Hide file tree
Showing 12 changed files with 830 additions and 0 deletions.
5 changes: 5 additions & 0 deletions types/tgwf__co2/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
*
!**/*.d.ts
!**/*.d.cts
!**/*.d.mts
!**/*.d.*.ts
14 changes: 14 additions & 0 deletions types/tgwf__co2/1byte.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
declare class OneByte {
constructor(options: any);
options: any;
KWH_PER_BYTE_FOR_NETWORK: number;
/**
* Calculates the carbon footprint of a website using the OneByte model
* @param {number} bytes - The number of bytes to calculate the carbon footprint for
* @param {boolean} green - Whether the energy is green or not
* @returns {number} The carbon footprint in grams of CO2
*/
perByte(bytes: number, green: boolean): number;
}

export = OneByte;
145 changes: 145 additions & 0 deletions types/tgwf__co2/co2.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
import OneByte = require("./1byte.js");
import SustainableWebDesign = require("./sustainable-web-design.js");
interface CO2EstimateTraceResultPerByte {
/**
* - The CO2 estimate in grams/kilowatt-hour
*/
co2: number;
/**
* - Whether the domain is green or not
*/
green: boolean;
/**
* - The variables used to calculate the CO2 estimate
*/
variables: TraceResultVariablesPerByte;
}
interface CO2EstimateTraceResultPerVisit {
/**
* - The CO2 estimate in grams/kilowatt-hour
*/
co2: number;
/**
* - Whether the domain is green or not
*/
green: boolean;
/**
* - The variables used to calculate the CO2 estimate
*/
variables: TraceResultVariablesPerVisit;
}
interface TraceResultVariablesPerByte {
/**
* - The grid intensity related variables
*/
gridIntensity: GridIntensityVariables;
}
interface TraceResultVariablesPerVisit {
/**
* - The grid intensity related variables
*/
gridIntensity: GridIntensityVariables;
/**
* - What percentage of a page is reloaded on each subsequent page view
*/
dataReloadRatio: number;
/**
* - What percentage of visits are loading this page for subsequent times
*/
firstVisitPercentage: number;
/**
* - What percentage of visits are loading this page for the second or more time
*/
returnVisitPercentage: number;
}
interface GridIntensityVariables {
/**
* - The description of the variables
*/
description: string;
/**
* - The network grid intensity set by the user or the default
*/
network: number;
/**
* - The data center grid intensity set by the user or the default
*/
dataCenter: number;
/**
* - The device grid intensity set by the user or the default
*/
device: number;
/**
* - The production grid intensity set by the user or the default
*/
production: number;
}
declare class CO2 {
constructor(options: any);
model: OneByte | SustainableWebDesign;
private _segment;
/**
* Accept a figure in bytes for data transfer, and a boolean for whether
* the domain shows as 'green', and return a CO2 figure for energy used to shift the corresponding
* the data transfer.
*
* @param {number} bytes
* @param {boolean} green
* @return {number} the amount of CO2 in grammes
*/
perByte(bytes: number, green?: boolean): number;
/**
* Accept a figure in bytes for data transfer, and a boolean for whether
* the domain shows as 'green', and return a CO2 figure for energy used to shift the corresponding
* the data transfer.
*
* @param {number} bytes
* @param {boolean} green
* @return {number} the amount of CO2 in grammes
*/
perVisit(bytes: number, green?: boolean): number;
/**
* Accept a figure in bytes for data transfer, a boolean for whether
* the domain shows as 'green', and an options object.
* Returns an object containing CO2 figure, green boolean, and object of the variables used in calculating the CO2 figure.
*
* @param {number} bytes
* @param {boolean} green
* @param {Object} options
* @return {CO2EstimateTraceResultPerByte} the amount of CO2 in grammes
*/
perByteTrace(bytes: number, green?: boolean, options?: any): CO2EstimateTraceResultPerByte;
/**
* Accept a figure in bytes for data transfer, a boolean for whether
* the domain shows as 'green', and an options object.
* Returns an object containing CO2 figure, green boolean, and object of the variables used in calculating the CO2 figure.
*
* @param {number} bytes
* @param {boolean} green
* @param {Object} options
* @return {CO2EstimateTraceResultPerVisit} the amount of CO2 in grammes
*/
perVisitTrace(bytes: number, green?: boolean, options?: any): CO2EstimateTraceResultPerVisit;
perDomain(pageXray: any, greenDomains: any): Array<{
domain: string;
co2: number;
transferSize: any;
}>;
perPage(pageXray: any, green: any): number;
perContentType(pageXray: any, greenDomains: any): Array<{
type: string;
co2: any;
transferSize: any;
}>;
dirtiestResources(pageXray: any, greenDomains: any): Array<{
url: any;
co2: number;
transferSize: any;
}>;
perParty(pageXray: any, greenDomains: any): {
firstParty: number;
thirdParty: number;
};
}

export = CO2;
227 changes: 227 additions & 0 deletions types/tgwf__co2/data/average-intensities.min.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
export const data: {
AFG: number;
AFRICA: number;
ALB: number;
DZA: number;
ASM: number;
AGO: number;
ATG: number;
ARG: number;
ARM: number;
ABW: number;
ASEAN: number;
ASIA: number;
AUS: number;
AUT: number;
AZE: number;
BHS: number;
BHR: number;
BGD: number;
BRB: number;
BLR: number;
BEL: number;
BLZ: number;
BEN: number;
BTN: number;
BOL: number;
BIH: number;
BWA: number;
BRA: number;
BRN: number;
BGR: number;
BFA: number;
BDI: number;
CPV: number;
KHM: number;
CMR: number;
CAN: number;
CYM: number;
CAF: number;
TCD: number;
CHL: number;
CHN: number;
COL: number;
COM: number;
COG: number;
COD: number;
COK: number;
CRI: number;
CIV: number;
HRV: number;
CUB: number;
CYP: number;
CZE: number;
DNK: number;
DJI: number;
DMA: number;
DOM: number;
ECU: number;
EGY: number;
SLV: number;
GNQ: number;
ERI: number;
EST: number;
SWZ: number;
ETH: number;
EU: number;
EUROPE: number;
FLK: number;
FRO: number;
FJI: number;
FIN: number;
FRA: number;
GUF: number;
PYF: number;
G20: number;
G7: number;
GAB: number;
GMB: number;
GEO: number;
DEU: number;
GHA: number;
GRC: number;
GRL: number;
GRD: number;
GLP: number;
GUM: number;
GTM: number;
GIN: number;
GNB: number;
GUY: number;
HTI: number;
HND: number;
HKG: number;
HUN: number;
ISL: number;
IND: number;
IDN: number;
IRN: number;
IRQ: number;
IRL: number;
ISR: number;
ITA: number;
JAM: number;
JPN: number;
JOR: number;
KAZ: number;
KEN: number;
KIR: number;
XKX: number;
KWT: number;
KGZ: number;
LAO: number;
"LATIN AMERICA AND CARIBBEAN": number;
LVA: number;
LBN: number;
LSO: number;
LBR: number;
LBY: number;
LTU: number;
LUX: number;
MAC: number;
MDG: number;
MWI: number;
MYS: number;
MDV: number;
MLI: number;
MLT: number;
MTQ: number;
MRT: number;
MUS: number;
MEX: number;
"MIDDLE EAST": number;
MDA: number;
MNG: number;
MNE: number;
MSR: number;
MAR: number;
MOZ: number;
MMR: number;
NAM: number;
NRU: number;
NPL: number;
NLD: number;
NCL: number;
NZL: number;
NIC: number;
NER: number;
NGA: number;
"NORTH AMERICA": number;
PRK: number;
MKD: number;
NOR: number;
OCEANIA: number;
OECD: number;
OMN: number;
PAK: number;
PSE: number;
PAN: number;
PNG: number;
PRY: number;
PER: number;
POL: number;
PRT: number;
PRI: number;
QAT: number;
REU: number;
ROU: number;
RUS: number;
RWA: number;
KNA: number;
LCA: number;
SPM: number;
VCT: number;
WSM: number;
STP: number;
SAU: number;
SEN: number;
SRB: number;
SYC: number;
SLE: number;
SGP: number;
SVK: number;
SVN: number;
SLB: number;
SOM: number;
ZAF: number;
KOR: number;
SSD: number;
ESP: number;
LKA: number;
SDN: number;
SUR: number;
SWE: number;
CHE: number;
SYR: number;
TWN: number;
TJK: number;
TZA: number;
THA: number;
PHL: number;
TGO: number;
TON: number;
TTO: number;
TUN: number;
TUR: number;
TKM: number;
TCA: number;
UGA: number;
UKR: number;
ARE: number;
GBR: number;
USA: number;
URY: number;
UZB: number;
VUT: number;
VEN: number;
VNM: number;
VGB: number;
VIR: number;
WORLD: number;
YEM: number;
ZMB: number;
ZWE: number;
};
export const type: "average";

export as namespace averageIntensity;
Loading

0 comments on commit 186c223

Please sign in to comment.