@tgwf/co2 0.13.7 → 0.13.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.all-contributorsrc +10 -0
  2. package/CHANGELOG.md +19 -4
  3. package/README.md +2 -1
  4. package/data/output/average-intensities.js +12 -12
  5. package/data/output/average-intensities.json +12 -12
  6. package/dist/cjs/co2.js +9 -9
  7. package/dist/cjs/co2.js.map +1 -1
  8. package/dist/cjs/data/average-intensities.min.js +1 -1
  9. package/dist/cjs/data/average-intensities.min.js.map +2 -2
  10. package/dist/cjs/helpers/index.js +6 -6
  11. package/dist/cjs/helpers/index.js.map +2 -2
  12. package/dist/cjs/sustainable-web-design.js +6 -6
  13. package/dist/cjs/sustainable-web-design.js.map +2 -2
  14. package/dist/data/functions/generate_average_co2.d.ts +2 -0
  15. package/dist/data/functions/generate_average_co2.d.ts.map +1 -0
  16. package/dist/data/functions/generate_marginal_co2.d.ts +2 -0
  17. package/dist/data/functions/generate_marginal_co2.d.ts.map +1 -0
  18. package/dist/data/output/average-intensities.d.ts +231 -0
  19. package/dist/data/output/average-intensities.d.ts.map +1 -0
  20. package/dist/data/output/marginal-intensities-2021.d.ts +243 -0
  21. package/dist/data/output/marginal-intensities-2021.d.ts.map +1 -0
  22. package/dist/data/utils/getCountryCodes.d.ts +3 -0
  23. package/dist/data/utils/getCountryCodes.d.ts.map +1 -0
  24. package/dist/data/utils/mapCountries.d.ts +3 -0
  25. package/dist/data/utils/mapCountries.d.ts.map +1 -0
  26. package/dist/data/utils/parseCSVRow.d.ts +8 -0
  27. package/dist/data/utils/parseCSVRow.d.ts.map +1 -0
  28. package/dist/esm/co2.js +11 -11
  29. package/dist/esm/data/average-intensities.min.js +1 -1
  30. package/dist/esm/helpers/index.js +6 -6
  31. package/dist/esm/sustainable-web-design.js +6 -6
  32. package/dist/iife/index.js +16 -16
  33. package/dist/iife/index.js.map +2 -2
  34. package/package.json +1 -1
  35. package/src/co2.js +9 -9
  36. package/src/data/average-intensities.min.js +1 -1
  37. package/src/helpers/index.js +6 -6
  38. package/src/sustainable-web-design.js +6 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/sustainable-web-design.js"],
4
- "sourcesContent": ["\"use strict\";\n\n/**\n * Sustainable Web Design\n *\n * Updated calculations and figures from\n * https://sustainablewebdesign.org/calculating-digital-emissions/\n *\n */\n\nimport {\n fileSize,\n KWH_PER_GB,\n END_USER_DEVICE_ENERGY,\n NETWORK_ENERGY,\n DATACENTER_ENERGY,\n PRODUCTION_ENERGY,\n GLOBAL_GRID_INTENSITY,\n RENEWABLES_GRID_INTENSITY,\n FIRST_TIME_VIEWING_PERCENTAGE,\n RETURNING_VISITOR_PERCENTAGE,\n PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD,\n} from \"./constants/index.js\";\nimport { formatNumber } from \"./helpers/index.js\";\n\nclass SustainableWebDesign {\n constructor(options) {\n this.options = options;\n }\n\n /**\n * Accept a figure for bytes transferred and return an object representing\n * the share of the total enrgy use of the entire system, broken down\n * by each corresponding system component\n *\n * @param {number} bytes - the data transferred in bytes\n * @return {object} Object containing the energy in kilowatt hours, keyed by system component\n */\n energyPerByteByComponent(bytes) {\n const transferedBytesToGb = bytes / fileSize.GIGABYTE;\n const energyUsage = transferedBytesToGb * KWH_PER_GB;\n\n // return the total energy, with breakdown by component\n return {\n consumerDeviceEnergy: energyUsage * END_USER_DEVICE_ENERGY,\n networkEnergy: energyUsage * NETWORK_ENERGY,\n productionEnergy: energyUsage * PRODUCTION_ENERGY,\n dataCenterEnergy: energyUsage * DATACENTER_ENERGY,\n };\n }\n /**\n * Accept an object keys by the different system components, and\n * return an object with the co2 figures key by the each component\n *\n * @param {object} energyByComponent - energy grouped by the four system components\n * @param {number} [carbonIntensity] - carbon intensity to apply to the datacentre values\n * @return {number} the total number in grams of CO2 equivalent emissions\n */\n co2byComponent(\n energyByComponent,\n carbonIntensity = GLOBAL_GRID_INTENSITY,\n options = {}\n ) {\n let deviceCarbonIntensity = GLOBAL_GRID_INTENSITY;\n let networkCarbonIntensity = GLOBAL_GRID_INTENSITY;\n let dataCenterCarbonIntensity = GLOBAL_GRID_INTENSITY;\n\n let globalEmissions = GLOBAL_GRID_INTENSITY;\n\n if (options?.gridIntensity) {\n const { device, network, dataCenter } = options.gridIntensity;\n\n if (device?.value) {\n deviceCarbonIntensity = device.value;\n }\n if (network?.value) {\n networkCarbonIntensity = network.value;\n }\n // If the user has set a carbon intensity value for the datacentre, then that overrides everything and is used\n if (dataCenter?.value) {\n dataCenterCarbonIntensity = dataCenter.value;\n }\n }\n\n // If the user passes in a TRUE value (green web host), then use the renewables intensity value\n if (carbonIntensity === true) {\n dataCenterCarbonIntensity = RENEWABLES_GRID_INTENSITY;\n }\n\n const returnCO2ByComponent = {};\n for (const [key, value] of Object.entries(energyByComponent)) {\n // we update the datacentre, as that's what we have information\n // about.\n if (key.startsWith(\"dataCenterEnergy\")) {\n returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] =\n value * dataCenterCarbonIntensity;\n } else if (key.startsWith(\"consumerDeviceEnergy\")) {\n returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] =\n value * deviceCarbonIntensity;\n } else if (key.startsWith(\"networkEnergy\")) {\n returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] =\n value * networkCarbonIntensity;\n } else {\n // Use the global intensity for the remaining segments\n returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] =\n value * globalEmissions;\n }\n }\n\n return returnCO2ByComponent;\n }\n\n /**\n * Accept a figure for bytes transferred and return a single figure for CO2\n * emissions. Where information exists about the origin data is being\n * fetched from, a different carbon intensity figure\n * is applied for the data centre share of the carbon intensity.\n *\n * @param {number} bytes - the data transferred in bytes\n * @param {boolean} carbonIntensity - a boolean indicating whether the data center is green or not\n * @param {boolean} segmentResults - a boolean indicating whether to return the results broken down by component\n * @param {object} options - an object containing the grid intensity and first/return visitor values\n * @return {number|object} the total number in grams of CO2 equivalent emissions, or an object containing the breakdown by component\n */\n perByte(\n bytes,\n carbonIntensity = false,\n segmentResults = false,\n options = {}\n ) {\n if (bytes < 1) {\n bytes = 0;\n }\n\n const energyBycomponent = this.energyPerByteByComponent(bytes, options);\n\n // otherwise when faced with non numeric values throw an error\n if (typeof carbonIntensity !== \"boolean\") {\n throw new Error(\n `perByte expects a boolean for the carbon intensity value. Received: ${carbonIntensity}`\n );\n }\n\n const co2ValuesbyComponent = this.co2byComponent(\n energyBycomponent,\n carbonIntensity,\n options\n );\n\n // pull out our values\u2026\n const co2Values = Object.values(co2ValuesbyComponent);\n const co2ValuesSum = co2Values.reduce(\n (prevValue, currentValue) => prevValue + currentValue\n );\n\n if (segmentResults) {\n return { ...co2ValuesbyComponent, total: co2ValuesSum };\n }\n\n return co2ValuesSum;\n }\n\n /**\n * Accept a figure for bytes transferred and return a single figure for CO2\n * emissions. This method applies caching assumptions from the original Sustainable Web Design model.\n *\n * @param {number} bytes - the data transferred in bytes\n * @param {boolean} carbonIntensity - a boolean indicating whether the data center is green or not\n * @param {boolean} segmentResults - a boolean indicating whether to return the results broken down by component\n * @param {object} options - an object containing the grid intensity and first/return visitor values\n * @return {number|object} the total number in grams of CO2 equivalent emissions, or an object containing the breakdown by component\n */\n perVisit(\n bytes,\n carbonIntensity = false,\n segmentResults = false,\n options = {}\n ) {\n const energyBycomponent = this.energyPerVisitByComponent(bytes, options);\n\n if (typeof carbonIntensity !== \"boolean\") {\n // otherwise when faced with non numeric values throw an error\n throw new Error(\n `perVisit expects a boolean for the carbon intensity value. Received: ${carbonIntensity}`\n );\n }\n\n const co2ValuesbyComponent = this.co2byComponent(\n energyBycomponent,\n carbonIntensity,\n options\n );\n\n // pull out our values\u2026\n const co2Values = Object.values(co2ValuesbyComponent);\n const co2ValuesSum = co2Values.reduce(\n (prevValue, currentValue) => prevValue + currentValue\n );\n\n if (segmentResults) {\n return { ...co2ValuesbyComponent, total: co2ValuesSum };\n }\n\n // so we can return their sum\n return co2ValuesSum;\n }\n\n /**\n * Accept a figure for bytes transferred and return the number of kilowatt hours used\n * by the total system for this data transfer\n *\n * @param {number} bytes\n * @return {number} the number of kilowatt hours used\n */\n energyPerByte(bytes) {\n const energyByComponent = this.energyPerByteByComponent(bytes);\n\n // pull out our values\u2026\n const energyValues = Object.values(energyByComponent);\n\n // so we can return their sum\n return energyValues.reduce(\n (prevValue, currentValue) => prevValue + currentValue\n );\n }\n\n /**\n * Accept a figure for bytes transferred, and return an object containing figures\n * per system component, with the caching assumptions applied. This tries to account\n * for webpages being loaded from a cache by browsers, so if you had a thousand page views,\n * and tried to work out the energy per visit, the numbers would reflect the reduced amounts\n * of transfer.\n *\n * @param {number} bytes - the data transferred in bytes for loading a webpage\n * @param {number} firstView - what percentage of visits are loading this page for the first time\n * @param {number} returnView - what percentage of visits are loading this page for subsequent times\n * @param {number} dataReloadRatio - what percentage of a page is reloaded on each subsequent page view\n *\n * @return {object} Object containing the energy in kilowatt hours, keyed by system component\n */\n energyPerVisitByComponent(\n bytes,\n options = {},\n firstView = FIRST_TIME_VIEWING_PERCENTAGE,\n returnView = RETURNING_VISITOR_PERCENTAGE,\n dataReloadRatio = PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD\n ) {\n if (options.dataReloadRatio) {\n dataReloadRatio = options.dataReloadRatio;\n }\n\n if (options.firstVisitPercentage) {\n firstView = options.firstVisitPercentage;\n }\n\n if (options.returnVisitPercentage) {\n returnView = options.returnVisitPercentage;\n }\n\n const energyBycomponent = this.energyPerByteByComponent(bytes);\n const cacheAdjustedSegmentEnergy = {};\n\n const energyValues = Object.values(energyBycomponent);\n\n // for this, we want\n for (const [key, value] of Object.entries(energyBycomponent)) {\n // represent the first load\n cacheAdjustedSegmentEnergy[`${key} - first`] = value * firstView;\n\n // then represent the subsequent load\n cacheAdjustedSegmentEnergy[`${key} - subsequent`] =\n value * returnView * dataReloadRatio;\n }\n\n return cacheAdjustedSegmentEnergy;\n }\n\n /**\n * Accept a figure for bytes, and return the total figure for energy per visit\n * using the default caching assumptions for loading a single website\n *\n * @param {number} bytes\n * @return {number} the total energy use for the visit, after applying the caching assumptions\n */\n energyPerVisit(bytes) {\n // fetch the values using the default caching assumptions\n // const energyValues = Object.values(this.energyPerVisitByComponent(bytes));\n\n let firstVisits = 0;\n let subsequentVisits = 0;\n\n const energyBycomponent = Object.entries(\n this.energyPerVisitByComponent(bytes)\n );\n\n for (const [key, val] of energyBycomponent) {\n if (key.indexOf(\"first\") > 0) {\n firstVisits += val;\n }\n }\n\n for (const [key, val] of energyBycomponent) {\n if (key.indexOf(\"subsequent\") > 0) {\n subsequentVisits += val;\n }\n }\n\n return firstVisits + subsequentVisits;\n }\n\n emissionsPerVisitInGrams(\n energyPerVisit,\n carbonintensity = GLOBAL_GRID_INTENSITY\n ) {\n return formatNumber(energyPerVisit * carbonintensity);\n }\n\n annualEnergyInKwh(energyPerVisit, monthlyVisitors = 1000) {\n return energyPerVisit * monthlyVisitors * 12;\n }\n\n annualEmissionsInGrams(co2grams, monthlyVisitors = 1000) {\n return co2grams * monthlyVisitors * 12;\n }\n\n annualSegmentEnergy(annualEnergy) {\n return {\n consumerDeviceEnergy: formatNumber(annualEnergy * END_USER_DEVICE_ENERGY),\n networkEnergy: formatNumber(annualEnergy * NETWORK_ENERGY),\n dataCenterEnergy: formatNumber(annualEnergy * DATACENTER_ENERGY),\n productionEnergy: formatNumber(annualEnergy * PRODUCTION_ENERGY),\n };\n }\n}\n\nexport { SustainableWebDesign };\nexport default SustainableWebDesign;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["\"use strict\";\n\n/**\n * Sustainable Web Design\n *\n * Updated calculations and figures from\n * https://sustainablewebdesign.org/calculating-digital-emissions/\n *\n */\n\nimport {\n fileSize,\n KWH_PER_GB,\n END_USER_DEVICE_ENERGY,\n NETWORK_ENERGY,\n DATACENTER_ENERGY,\n PRODUCTION_ENERGY,\n GLOBAL_GRID_INTENSITY,\n RENEWABLES_GRID_INTENSITY,\n FIRST_TIME_VIEWING_PERCENTAGE,\n RETURNING_VISITOR_PERCENTAGE,\n PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD,\n} from \"./constants/index.js\";\nimport { formatNumber } from \"./helpers/index.js\";\n\nclass SustainableWebDesign {\n constructor(options) {\n this.options = options;\n }\n\n /**\n * Accept a figure for bytes transferred and return an object representing\n * the share of the total enrgy use of the entire system, broken down\n * by each corresponding system component\n *\n * @param {number} bytes - the data transferred in bytes\n * @return {object} Object containing the energy in kilowatt hours, keyed by system component\n */\n energyPerByteByComponent(bytes) {\n const transferedBytesToGb = bytes / fileSize.GIGABYTE;\n const energyUsage = transferedBytesToGb * KWH_PER_GB;\n\n // return the total energy, with breakdown by component\n return {\n consumerDeviceEnergy: energyUsage * END_USER_DEVICE_ENERGY,\n networkEnergy: energyUsage * NETWORK_ENERGY,\n productionEnergy: energyUsage * PRODUCTION_ENERGY,\n dataCenterEnergy: energyUsage * DATACENTER_ENERGY,\n };\n }\n /**\n * Accept an object keys by the different system components, and\n * return an object with the co2 figures key by the each component\n *\n * @param {object} energyByComponent - energy grouped by the four system components\n * @param {number} [carbonIntensity] - carbon intensity to apply to the datacentre values\n * @return {number} the total number in grams of CO2 equivalent emissions\n */\n co2byComponent(\n energyByComponent,\n carbonIntensity = GLOBAL_GRID_INTENSITY,\n options = {}\n ) {\n let deviceCarbonIntensity = GLOBAL_GRID_INTENSITY;\n let networkCarbonIntensity = GLOBAL_GRID_INTENSITY;\n let dataCenterCarbonIntensity = GLOBAL_GRID_INTENSITY;\n\n let globalEmissions = GLOBAL_GRID_INTENSITY;\n\n if (options?.gridIntensity) {\n const { device, network, dataCenter } = options.gridIntensity;\n\n if (device?.value || device?.value === 0) {\n deviceCarbonIntensity = device.value;\n }\n if (network?.value || network?.value === 0) {\n networkCarbonIntensity = network.value;\n }\n // If the user has set a carbon intensity value for the datacentre, then that overrides everything and is used\n if (dataCenter?.value || dataCenter?.value === 0) {\n dataCenterCarbonIntensity = dataCenter.value;\n }\n }\n\n // If the user passes in a TRUE value (green web host), then use the renewables intensity value\n if (carbonIntensity === true) {\n dataCenterCarbonIntensity = RENEWABLES_GRID_INTENSITY;\n }\n\n const returnCO2ByComponent = {};\n for (const [key, value] of Object.entries(energyByComponent)) {\n // we update the datacentre, as that's what we have information\n // about.\n if (key.startsWith(\"dataCenterEnergy\")) {\n returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] =\n value * dataCenterCarbonIntensity;\n } else if (key.startsWith(\"consumerDeviceEnergy\")) {\n returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] =\n value * deviceCarbonIntensity;\n } else if (key.startsWith(\"networkEnergy\")) {\n returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] =\n value * networkCarbonIntensity;\n } else {\n // Use the global intensity for the remaining segments\n returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] =\n value * globalEmissions;\n }\n }\n\n return returnCO2ByComponent;\n }\n\n /**\n * Accept a figure for bytes transferred and return a single figure for CO2\n * emissions. Where information exists about the origin data is being\n * fetched from, a different carbon intensity figure\n * is applied for the data centre share of the carbon intensity.\n *\n * @param {number} bytes - the data transferred in bytes\n * @param {boolean} carbonIntensity - a boolean indicating whether the data center is green or not\n * @param {boolean} segmentResults - a boolean indicating whether to return the results broken down by component\n * @param {object} options - an object containing the grid intensity and first/return visitor values\n * @return {number|object} the total number in grams of CO2 equivalent emissions, or an object containing the breakdown by component\n */\n perByte(\n bytes,\n carbonIntensity = false,\n segmentResults = false,\n options = {}\n ) {\n if (bytes < 1) {\n bytes = 0;\n }\n\n const energyBycomponent = this.energyPerByteByComponent(bytes, options);\n\n // otherwise when faced with non numeric values throw an error\n if (typeof carbonIntensity !== \"boolean\") {\n throw new Error(\n `perByte expects a boolean for the carbon intensity value. Received: ${carbonIntensity}`\n );\n }\n\n const co2ValuesbyComponent = this.co2byComponent(\n energyBycomponent,\n carbonIntensity,\n options\n );\n\n // pull out our values\u2026\n const co2Values = Object.values(co2ValuesbyComponent);\n const co2ValuesSum = co2Values.reduce(\n (prevValue, currentValue) => prevValue + currentValue\n );\n\n if (segmentResults) {\n return { ...co2ValuesbyComponent, total: co2ValuesSum };\n }\n\n return co2ValuesSum;\n }\n\n /**\n * Accept a figure for bytes transferred and return a single figure for CO2\n * emissions. This method applies caching assumptions from the original Sustainable Web Design model.\n *\n * @param {number} bytes - the data transferred in bytes\n * @param {boolean} carbonIntensity - a boolean indicating whether the data center is green or not\n * @param {boolean} segmentResults - a boolean indicating whether to return the results broken down by component\n * @param {object} options - an object containing the grid intensity and first/return visitor values\n * @return {number|object} the total number in grams of CO2 equivalent emissions, or an object containing the breakdown by component\n */\n perVisit(\n bytes,\n carbonIntensity = false,\n segmentResults = false,\n options = {}\n ) {\n const energyBycomponent = this.energyPerVisitByComponent(bytes, options);\n\n if (typeof carbonIntensity !== \"boolean\") {\n // otherwise when faced with non numeric values throw an error\n throw new Error(\n `perVisit expects a boolean for the carbon intensity value. Received: ${carbonIntensity}`\n );\n }\n\n const co2ValuesbyComponent = this.co2byComponent(\n energyBycomponent,\n carbonIntensity,\n options\n );\n\n // pull out our values\u2026\n const co2Values = Object.values(co2ValuesbyComponent);\n const co2ValuesSum = co2Values.reduce(\n (prevValue, currentValue) => prevValue + currentValue\n );\n\n if (segmentResults) {\n return { ...co2ValuesbyComponent, total: co2ValuesSum };\n }\n\n // so we can return their sum\n return co2ValuesSum;\n }\n\n /**\n * Accept a figure for bytes transferred and return the number of kilowatt hours used\n * by the total system for this data transfer\n *\n * @param {number} bytes\n * @return {number} the number of kilowatt hours used\n */\n energyPerByte(bytes) {\n const energyByComponent = this.energyPerByteByComponent(bytes);\n\n // pull out our values\u2026\n const energyValues = Object.values(energyByComponent);\n\n // so we can return their sum\n return energyValues.reduce(\n (prevValue, currentValue) => prevValue + currentValue\n );\n }\n\n /**\n * Accept a figure for bytes transferred, and return an object containing figures\n * per system component, with the caching assumptions applied. This tries to account\n * for webpages being loaded from a cache by browsers, so if you had a thousand page views,\n * and tried to work out the energy per visit, the numbers would reflect the reduced amounts\n * of transfer.\n *\n * @param {number} bytes - the data transferred in bytes for loading a webpage\n * @param {number} firstView - what percentage of visits are loading this page for the first time\n * @param {number} returnView - what percentage of visits are loading this page for subsequent times\n * @param {number} dataReloadRatio - what percentage of a page is reloaded on each subsequent page view\n *\n * @return {object} Object containing the energy in kilowatt hours, keyed by system component\n */\n energyPerVisitByComponent(\n bytes,\n options = {},\n firstView = FIRST_TIME_VIEWING_PERCENTAGE,\n returnView = RETURNING_VISITOR_PERCENTAGE,\n dataReloadRatio = PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD\n ) {\n if (options.dataReloadRatio || options.dataReloadRatio === 0) {\n dataReloadRatio = options.dataReloadRatio;\n }\n\n if (options.firstVisitPercentage || options.firstVisitPercentage === 0) {\n firstView = options.firstVisitPercentage;\n }\n\n if (options.returnVisitPercentage || options.returnVisitPercentage === 0) {\n returnView = options.returnVisitPercentage;\n }\n\n const energyBycomponent = this.energyPerByteByComponent(bytes);\n const cacheAdjustedSegmentEnergy = {};\n\n const energyValues = Object.values(energyBycomponent);\n\n // for this, we want\n for (const [key, value] of Object.entries(energyBycomponent)) {\n // represent the first load\n cacheAdjustedSegmentEnergy[`${key} - first`] = value * firstView;\n\n // then represent the subsequent load\n cacheAdjustedSegmentEnergy[`${key} - subsequent`] =\n value * returnView * dataReloadRatio;\n }\n\n return cacheAdjustedSegmentEnergy;\n }\n\n /**\n * Accept a figure for bytes, and return the total figure for energy per visit\n * using the default caching assumptions for loading a single website\n *\n * @param {number} bytes\n * @return {number} the total energy use for the visit, after applying the caching assumptions\n */\n energyPerVisit(bytes) {\n // fetch the values using the default caching assumptions\n // const energyValues = Object.values(this.energyPerVisitByComponent(bytes));\n\n let firstVisits = 0;\n let subsequentVisits = 0;\n\n const energyBycomponent = Object.entries(\n this.energyPerVisitByComponent(bytes)\n );\n\n for (const [key, val] of energyBycomponent) {\n if (key.indexOf(\"first\") > 0) {\n firstVisits += val;\n }\n }\n\n for (const [key, val] of energyBycomponent) {\n if (key.indexOf(\"subsequent\") > 0) {\n subsequentVisits += val;\n }\n }\n\n return firstVisits + subsequentVisits;\n }\n\n emissionsPerVisitInGrams(\n energyPerVisit,\n carbonintensity = GLOBAL_GRID_INTENSITY\n ) {\n return formatNumber(energyPerVisit * carbonintensity);\n }\n\n annualEnergyInKwh(energyPerVisit, monthlyVisitors = 1000) {\n return energyPerVisit * monthlyVisitors * 12;\n }\n\n annualEmissionsInGrams(co2grams, monthlyVisitors = 1000) {\n return co2grams * monthlyVisitors * 12;\n }\n\n annualSegmentEnergy(annualEnergy) {\n return {\n consumerDeviceEnergy: formatNumber(annualEnergy * END_USER_DEVICE_ENERGY),\n networkEnergy: formatNumber(annualEnergy * NETWORK_ENERGY),\n dataCenterEnergy: formatNumber(annualEnergy * DATACENTER_ENERGY),\n productionEnergy: formatNumber(annualEnergy * PRODUCTION_ENERGY),\n };\n }\n}\n\nexport { SustainableWebDesign };\nexport default SustainableWebDesign;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate_average_co2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_average_co2.d.ts","sourceRoot":"","sources":["../../../data/functions/generate_average_co2.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate_marginal_co2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_marginal_co2.d.ts","sourceRoot":"","sources":["../../../data/functions/generate_marginal_co2.js"],"names":[],"mappings":""}
@@ -0,0 +1,231 @@
1
+ declare namespace _default {
2
+ export { data };
3
+ export { type };
4
+ }
5
+ export default _default;
6
+ export const data: {
7
+ AFG: number;
8
+ AFRICA: number;
9
+ ALB: number;
10
+ DZA: number;
11
+ ASM: number;
12
+ AGO: number;
13
+ ATG: number;
14
+ ARG: number;
15
+ ARM: number;
16
+ ABW: number;
17
+ ASEAN: number;
18
+ ASIA: number;
19
+ AUS: number;
20
+ AUT: number;
21
+ AZE: number;
22
+ BHS: number;
23
+ BHR: number;
24
+ BGD: number;
25
+ BRB: number;
26
+ BLR: number;
27
+ BEL: number;
28
+ BLZ: number;
29
+ BEN: number;
30
+ BTN: number;
31
+ BOL: number;
32
+ BIH: number;
33
+ BWA: number;
34
+ BRA: number;
35
+ BRN: number;
36
+ BGR: number;
37
+ BFA: number;
38
+ BDI: number;
39
+ CPV: number;
40
+ KHM: number;
41
+ CMR: number;
42
+ CAN: number;
43
+ CYM: number;
44
+ CAF: number;
45
+ TCD: number;
46
+ CHL: number;
47
+ CHN: number;
48
+ COL: number;
49
+ COM: number;
50
+ COG: number;
51
+ COD: number;
52
+ COK: number;
53
+ CRI: number;
54
+ CIV: number;
55
+ HRV: number;
56
+ CUB: number;
57
+ CYP: number;
58
+ CZE: number;
59
+ DNK: number;
60
+ DJI: number;
61
+ DMA: number;
62
+ DOM: number;
63
+ ECU: number;
64
+ EGY: number;
65
+ SLV: number;
66
+ GNQ: number;
67
+ ERI: number;
68
+ EST: number;
69
+ SWZ: number;
70
+ ETH: number;
71
+ EU: number;
72
+ EUROPE: number;
73
+ FLK: number;
74
+ FRO: number;
75
+ FJI: number;
76
+ FIN: number;
77
+ FRA: number;
78
+ GUF: number;
79
+ PYF: number;
80
+ G20: number;
81
+ G7: number;
82
+ GAB: number;
83
+ GMB: number;
84
+ GEO: number;
85
+ DEU: number;
86
+ GHA: number;
87
+ GRC: number;
88
+ GRL: number;
89
+ GRD: number;
90
+ GLP: number;
91
+ GUM: number;
92
+ GTM: number;
93
+ GIN: number;
94
+ GNB: number;
95
+ GUY: number;
96
+ HTI: number;
97
+ HND: number;
98
+ HKG: number;
99
+ HUN: number;
100
+ ISL: number;
101
+ IND: number;
102
+ IDN: number;
103
+ IRN: number;
104
+ IRQ: number;
105
+ IRL: number;
106
+ ISR: number;
107
+ ITA: number;
108
+ JAM: number;
109
+ JPN: number;
110
+ JOR: number;
111
+ KAZ: number;
112
+ KEN: number;
113
+ KIR: number;
114
+ XKX: number;
115
+ KWT: number;
116
+ KGZ: number;
117
+ LAO: number;
118
+ "LATIN AMERICA AND CARIBBEAN": number;
119
+ LVA: number;
120
+ LBN: number;
121
+ LSO: number;
122
+ LBR: number;
123
+ LBY: number;
124
+ LTU: number;
125
+ LUX: number;
126
+ MAC: number;
127
+ MDG: number;
128
+ MWI: number;
129
+ MYS: number;
130
+ MDV: number;
131
+ MLI: number;
132
+ MLT: number;
133
+ MTQ: number;
134
+ MRT: number;
135
+ MUS: number;
136
+ MEX: number;
137
+ "MIDDLE EAST": number;
138
+ MDA: number;
139
+ MNG: number;
140
+ MNE: number;
141
+ MSR: number;
142
+ MAR: number;
143
+ MOZ: number;
144
+ MMR: number;
145
+ NAM: number;
146
+ NRU: number;
147
+ NPL: number;
148
+ NLD: number;
149
+ NCL: number;
150
+ NZL: number;
151
+ NIC: number;
152
+ NER: number;
153
+ NGA: number;
154
+ "NORTH AMERICA": number;
155
+ PRK: number;
156
+ MKD: number;
157
+ NOR: number;
158
+ OCEANIA: number;
159
+ OECD: number;
160
+ OMN: number;
161
+ PAK: number;
162
+ PSE: number;
163
+ PAN: number;
164
+ PNG: number;
165
+ PRY: number;
166
+ PER: number;
167
+ POL: number;
168
+ PRT: number;
169
+ PRI: number;
170
+ QAT: number;
171
+ REU: number;
172
+ ROU: number;
173
+ RUS: number;
174
+ RWA: number;
175
+ KNA: number;
176
+ LCA: number;
177
+ SPM: number;
178
+ VCT: number;
179
+ WSM: number;
180
+ STP: number;
181
+ SAU: number;
182
+ SEN: number;
183
+ SRB: number;
184
+ SYC: number;
185
+ SLE: number;
186
+ SGP: number;
187
+ SVK: number;
188
+ SVN: number;
189
+ SLB: number;
190
+ SOM: number;
191
+ ZAF: number;
192
+ KOR: number;
193
+ SSD: number;
194
+ ESP: number;
195
+ LKA: number;
196
+ SDN: number;
197
+ SUR: number;
198
+ SWE: number;
199
+ CHE: number;
200
+ SYR: number;
201
+ TWN: number;
202
+ TJK: number;
203
+ TZA: number;
204
+ THA: number;
205
+ PHL: number;
206
+ TGO: number;
207
+ TON: number;
208
+ TTO: number;
209
+ TUN: number;
210
+ TUR: number;
211
+ TKM: number;
212
+ TCA: number;
213
+ UGA: number;
214
+ UKR: number;
215
+ ARE: number;
216
+ GBR: number;
217
+ USA: number;
218
+ URY: number;
219
+ UZB: number;
220
+ VUT: number;
221
+ VEN: number;
222
+ VNM: number;
223
+ VGB: number;
224
+ VIR: number;
225
+ WORLD: number;
226
+ YEM: number;
227
+ ZMB: number;
228
+ ZWE: number;
229
+ };
230
+ export const type: "average";
231
+ //# sourceMappingURL=average-intensities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"average-intensities.d.ts","sourceRoot":"","sources":["../../../data/output/average-intensities.js"],"names":[],"mappings":";;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+NE;AACF,6BAAuB"}
@@ -0,0 +1,243 @@
1
+ declare namespace _default {
2
+ export { data };
3
+ export { type };
4
+ export { year };
5
+ }
6
+ export default _default;
7
+ export const data: {
8
+ AFG: string;
9
+ ALB: string;
10
+ DZA: string;
11
+ ASM: string;
12
+ AND: string;
13
+ AGO: string;
14
+ AIA: string;
15
+ ATG: string;
16
+ ARG: string;
17
+ ARM: string;
18
+ ABW: string;
19
+ AUS: string;
20
+ AUT: string;
21
+ AZE: string;
22
+ "AZORES (PORTUGAL)": string;
23
+ BHS: string;
24
+ BHR: string;
25
+ BGD: string;
26
+ BRB: string;
27
+ BLR: string;
28
+ BEL: string;
29
+ BLZ: string;
30
+ BEN: string;
31
+ BMU: string;
32
+ BTN: string;
33
+ BOL: string;
34
+ BES: string;
35
+ BIH: string;
36
+ BWA: string;
37
+ BRA: string;
38
+ VGB: string;
39
+ BRN: string;
40
+ BGR: string;
41
+ BFA: string;
42
+ BDI: string;
43
+ KHM: string;
44
+ CMR: string;
45
+ CAN: string;
46
+ CYM: string;
47
+ CPV: string;
48
+ CAF: string;
49
+ TCD: string;
50
+ "CHANNEL ISLANDS (U.K)": string;
51
+ CHL: string;
52
+ CHN: string;
53
+ COL: string;
54
+ COM: string;
55
+ COD: string;
56
+ COG: string;
57
+ COK: string;
58
+ CRI: string;
59
+ CIV: string;
60
+ HRV: string;
61
+ CUB: string;
62
+ CUW: string;
63
+ CYP: string;
64
+ CZE: string;
65
+ DNK: string;
66
+ DJI: string;
67
+ DMA: string;
68
+ DOM: string;
69
+ ECU: string;
70
+ EGY: string;
71
+ SLV: string;
72
+ GNQ: string;
73
+ ERI: string;
74
+ EST: string;
75
+ SWZ: string;
76
+ ETH: string;
77
+ FLK: string;
78
+ FRO: string;
79
+ FJI: string;
80
+ FIN: string;
81
+ FRA: string;
82
+ GUF: string;
83
+ PYF: string;
84
+ GAB: string;
85
+ GMB: string;
86
+ GEO: string;
87
+ DEU: string;
88
+ GHA: string;
89
+ GIB: string;
90
+ GRC: string;
91
+ GRL: string;
92
+ GRD: string;
93
+ GLP: string;
94
+ GUM: string;
95
+ GTM: string;
96
+ GIN: string;
97
+ GNB: string;
98
+ GUY: string;
99
+ HTI: string;
100
+ HND: string;
101
+ HUN: string;
102
+ ISL: string;
103
+ IND: string;
104
+ IDN: string;
105
+ IRN: string;
106
+ IRQ: string;
107
+ IRL: string;
108
+ IMN: string;
109
+ ISR: string;
110
+ ITA: string;
111
+ JAM: string;
112
+ JPN: string;
113
+ JOR: string;
114
+ KAZ: string;
115
+ KEN: string;
116
+ KIR: string;
117
+ PRK: string;
118
+ KOR: string;
119
+ XKX: string;
120
+ KWT: string;
121
+ KGZ: string;
122
+ LAO: string;
123
+ LVA: string;
124
+ LBN: string;
125
+ LSO: string;
126
+ LBR: string;
127
+ LBY: string;
128
+ LIE: string;
129
+ LTU: string;
130
+ LUX: string;
131
+ MDG: string;
132
+ "MADEIRA (PORTUGAL)": string;
133
+ MWI: string;
134
+ MYS: string;
135
+ MDV: string;
136
+ MLI: string;
137
+ MLT: string;
138
+ MHL: string;
139
+ MTQ: string;
140
+ MRT: string;
141
+ MUS: string;
142
+ MYT: string;
143
+ MEX: string;
144
+ FSM: string;
145
+ MDA: string;
146
+ MCO: string;
147
+ MNG: string;
148
+ MNE: string;
149
+ MSR: string;
150
+ MAR: string;
151
+ MOZ: string;
152
+ MMR: string;
153
+ NAM: string;
154
+ NRU: string;
155
+ NPL: string;
156
+ NLD: string;
157
+ NCL: string;
158
+ NZL: string;
159
+ NIC: string;
160
+ NER: string;
161
+ NGA: string;
162
+ NIU: string;
163
+ MKD: string;
164
+ MNP: string;
165
+ NOR: string;
166
+ OMN: string;
167
+ PAK: string;
168
+ PLW: string;
169
+ PSE: string;
170
+ PAN: string;
171
+ PNG: string;
172
+ PRY: string;
173
+ PER: string;
174
+ PHL: string;
175
+ POL: string;
176
+ PRT: string;
177
+ PRI: string;
178
+ QAT: string;
179
+ REU: string;
180
+ ROU: string;
181
+ RUS: string;
182
+ RWA: string;
183
+ SHN: string;
184
+ KNA: string;
185
+ LCA: string;
186
+ MAF: string;
187
+ SPM: string;
188
+ VCT: string;
189
+ WSM: string;
190
+ SMR: string;
191
+ STP: string;
192
+ SAU: string;
193
+ SEN: string;
194
+ SRB: string;
195
+ SYC: string;
196
+ SLE: string;
197
+ SGP: string;
198
+ SXM: string;
199
+ SVK: string;
200
+ SVN: string;
201
+ SLB: string;
202
+ SOM: string;
203
+ ZAF: string;
204
+ SSD: string;
205
+ ESP: string;
206
+ LKA: string;
207
+ SDN: string;
208
+ SUR: string;
209
+ SWE: string;
210
+ CHE: string;
211
+ SYR: string;
212
+ TWN: string;
213
+ TJK: string;
214
+ TZA: string;
215
+ THA: string;
216
+ TLS: string;
217
+ TGO: string;
218
+ TON: string;
219
+ TTO: string;
220
+ TUN: string;
221
+ TUR: string;
222
+ TKM: string;
223
+ TCA: string;
224
+ TUV: string;
225
+ UGA: string;
226
+ UKR: string;
227
+ ARE: string;
228
+ GBR: string;
229
+ USA: string;
230
+ URY: string;
231
+ UZB: string;
232
+ VUT: string;
233
+ VEN: string;
234
+ VNM: string;
235
+ VIR: string;
236
+ YEM: string;
237
+ ZMB: string;
238
+ ZWE: string;
239
+ "MEMO: EU 27": string;
240
+ };
241
+ export const type: "marginal";
242
+ export const year: "2021";
243
+ //# sourceMappingURL=marginal-intensities-2021.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marginal-intensities-2021.d.ts","sourceRoot":"","sources":["../../../data/output/marginal-intensities-2021.js"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyOE;AACF,8BAAwB;AACxB,0BAAoB"}
@@ -0,0 +1,3 @@
1
+ export = getCountryCodes;
2
+ declare function getCountryCodes(field: any, input: any): any;
3
+ //# sourceMappingURL=getCountryCodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCountryCodes.d.ts","sourceRoot":"","sources":["../../../data/utils/getCountryCodes.js"],"names":[],"mappings":";AAeA,8DAQC"}
@@ -0,0 +1,3 @@
1
+ export = mapCountries;
2
+ declare function mapCountries(): any[];
3
+ //# sourceMappingURL=mapCountries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapCountries.d.ts","sourceRoot":"","sources":["../../../data/utils/mapCountries.js"],"names":[],"mappings":";AAeA,uCAkBC"}
@@ -0,0 +1,8 @@
1
+ export = parseCSVRow;
2
+ /**
3
+ * Parses a string from a comma separated CSV file and returns an array of values.
4
+ * @param {string} currentArrayString - The string to parse.
5
+ * @returns {array} - Returns an array of values.
6
+ */
7
+ declare function parseCSVRow(currentArrayString: string): any[];
8
+ //# sourceMappingURL=parseCSVRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseCSVRow.d.ts","sourceRoot":"","sources":["../../../data/utils/parseCSVRow.js"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,iDAJW,MAAM,SAwBd"}
package/dist/esm/co2.js CHANGED
@@ -32,7 +32,7 @@ See https://developers.thegreenwebfoundation.org/co2js/methods/ to learn more ab
32
32
  }
33
33
  }
34
34
  perByteTrace(bytes, green = false, options = {}) {
35
- var _a, _b, _c, _d, _e, _f;
35
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
36
36
  let adjustments = {};
37
37
  if (options) {
38
38
  adjustments = parseOptions(options);
@@ -45,16 +45,16 @@ See https://developers.thegreenwebfoundation.org/co2js/methods/ to learn more ab
45
45
  bytes,
46
46
  gridIntensity: {
47
47
  description: "The grid intensity (grams per kilowatt-hour) used to calculate this CO2 estimate.",
48
- network: ((_b = (_a = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _a.network) == null ? void 0 : _b.value) || GLOBAL_GRID_INTENSITY,
49
- dataCenter: green ? RENEWABLES_GRID_INTENSITY : ((_d = (_c = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _c.dataCenter) == null ? void 0 : _d.value) || GLOBAL_GRID_INTENSITY,
48
+ network: (_c = (_b = (_a = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _a.network) == null ? void 0 : _b.value) != null ? _c : GLOBAL_GRID_INTENSITY,
49
+ dataCenter: green ? RENEWABLES_GRID_INTENSITY : (_f = (_e = (_d = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _d.dataCenter) == null ? void 0 : _e.value) != null ? _f : GLOBAL_GRID_INTENSITY,
50
50
  production: GLOBAL_GRID_INTENSITY,
51
- device: ((_f = (_e = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _e.device) == null ? void 0 : _f.value) || GLOBAL_GRID_INTENSITY
51
+ device: (_i = (_h = (_g = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _g.device) == null ? void 0 : _h.value) != null ? _i : GLOBAL_GRID_INTENSITY
52
52
  }
53
53
  }
54
54
  };
55
55
  }
56
56
  perVisitTrace(bytes, green = false, options = {}) {
57
- var _a, _b, _c, _d, _e, _f, _g;
57
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
58
58
  if ((_a = this.model) == null ? void 0 : _a.perVisit) {
59
59
  let adjustments = {};
60
60
  if (options) {
@@ -68,14 +68,14 @@ See https://developers.thegreenwebfoundation.org/co2js/methods/ to learn more ab
68
68
  bytes,
69
69
  gridIntensity: {
70
70
  description: "The grid intensity (grams per kilowatt-hour) used to calculate this CO2 estimate.",
71
- network: ((_c = (_b = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _b.network) == null ? void 0 : _c.value) || GLOBAL_GRID_INTENSITY,
72
- dataCenter: green ? RENEWABLES_GRID_INTENSITY : ((_e = (_d = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _d.dataCenter) == null ? void 0 : _e.value) || GLOBAL_GRID_INTENSITY,
71
+ network: (_d = (_c = (_b = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _b.network) == null ? void 0 : _c.value) != null ? _d : GLOBAL_GRID_INTENSITY,
72
+ dataCenter: green ? RENEWABLES_GRID_INTENSITY : (_g = (_f = (_e = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _e.dataCenter) == null ? void 0 : _f.value) != null ? _g : GLOBAL_GRID_INTENSITY,
73
73
  production: GLOBAL_GRID_INTENSITY,
74
- device: ((_g = (_f = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _f.device) == null ? void 0 : _g.value) || GLOBAL_GRID_INTENSITY
74
+ device: (_j = (_i = (_h = adjustments == null ? void 0 : adjustments.gridIntensity) == null ? void 0 : _h.device) == null ? void 0 : _i.value) != null ? _j : GLOBAL_GRID_INTENSITY
75
75
  },
76
- dataReloadRatio: (adjustments == null ? void 0 : adjustments.dataReloadRatio) || 0.02,
77
- firstVisitPercentage: (adjustments == null ? void 0 : adjustments.firstVisitPercentage) || 0.75,
78
- returnVisitPercentage: (adjustments == null ? void 0 : adjustments.returnVisitPercentage) || 0.25
76
+ dataReloadRatio: (_k = adjustments == null ? void 0 : adjustments.dataReloadRatio) != null ? _k : 0.02,
77
+ firstVisitPercentage: (_l = adjustments == null ? void 0 : adjustments.firstVisitPercentage) != null ? _l : 0.75,
78
+ returnVisitPercentage: (_m = adjustments == null ? void 0 : adjustments.returnVisitPercentage) != null ? _m : 0.25
79
79
  }
80
80
  };
81
81
  } else {