UNPKG

cardamon

Version:

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

1 lines 8.51 kB
'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['SustainableWebDesign']=exports['SWDV4']=void 0x0,exports['outputRating']=outputRating;const fileSize={'GIGABYTE':0x3e8*0x3e8*0x3e8};exports['SWDV4']={'OPERATIONAL_KWH_PER_GB_DATACENTER':0.055,'OPERATIONAL_KWH_PER_GB_NETWORK':0.059,'OPERATIONAL_KWH_PER_GB_DEVICE':0.08,'EMBODIED_KWH_PER_GB_DATACENTER':0.012,'EMBODIED_KWH_PER_GB_NETWORK':0.013,'EMBODIED_KWH_PER_GB_DEVICE':0.081,'GLOBAL_GRID_INTENSITY':0x1ee};const {OPERATIONAL_KWH_PER_GB_DATACENTER,OPERATIONAL_KWH_PER_GB_NETWORK,OPERATIONAL_KWH_PER_GB_DEVICE,EMBODIED_KWH_PER_GB_DATACENTER,EMBODIED_KWH_PER_GB_NETWORK,EMBODIED_KWH_PER_GB_DEVICE,GLOBAL_GRID_INTENSITY}=exports['SWDV4'],COMPONENT_RATIOS={'FRONTEND':0.54,'BACKEND':0.22,'NETWORK':0.24};function outputRating(_0x2de38d,_0x1a3f11){const _0x254a7c=_0x1a3f11?COMPONENT_RATIOS[_0x1a3f11]:0x1,_0x4030a3=0.04*_0x254a7c,_0x1e5cb5=0.079*_0x254a7c,_0x298bcf=0.145*_0x254a7c,_0x53ca53=0.209*_0x254a7c,_0x28d30f=0.278*_0x254a7c,_0x111d13=0.359*_0x254a7c;if(_0x2de38d<=_0x4030a3)return'A+';else{if(_0x2de38d<=_0x1e5cb5)return'A';else{if(_0x2de38d<=_0x298bcf)return'B';else{if(_0x2de38d<=_0x53ca53)return'C';else{if(_0x2de38d<=_0x28d30f)return'D';else return _0x2de38d<=_0x111d13?'E':'F';}}}}}function outputSegments(_0x2b1adc,_0x9051b8){const _0x42f02f=_0x2b1adc['dataCenter']+_0x2b1adc['network']+_0x2b1adc['device'],_0x857c69=_0x9051b8['dataCenter']+_0x9051b8['network']+_0x9051b8['device'],_0x4087d2=_0x2b1adc['dataCenter']+_0x9051b8['dataCenter'],_0x2da279=_0x2b1adc['network']+_0x9051b8['network'],_0x2f7ad8=_0x2b1adc['device']+_0x9051b8['device'];return{'dataCenterOperationalCO2e':_0x2b1adc['dataCenter'],'networkOperationalCO2e':_0x2b1adc['network'],'consumerDeviceOperationalCO2e':_0x2b1adc['device'],'dataCenterEmbodiedCO2e':_0x9051b8['dataCenter'],'networkEmbodiedCO2e':_0x9051b8['network'],'consumerDeviceEmbodiedCO2e':_0x9051b8['device'],'totalEmbodiedCO2e':_0x857c69,'totalOperationalCO2e':_0x42f02f,'dataCenterCO2e':_0x4087d2,'networkCO2e':_0x2da279,'consumerDeviceCO2e':_0x2f7ad8};}function getGreenHostingFactor(_0x218f1b,_0x5cba17){if(_0x218f1b)return 0x1;else{if(_0x5cba17?.['greenHostingFactor']||_0x5cba17?.['greenHostingFactor']===0x0)return _0x5cba17['greenHostingFactor'];}return 0x0;}class SustainableWebDesign{constructor(_0x3aca35){this['allowRatings']=!![],this['options']=_0x3aca35,this['version']=0x4;}['operationalEnergyPerSegment'](_0x45b611){const _0x4c029d=_0x45b611/fileSize['GIGABYTE'],_0x495c67=_0x4c029d*OPERATIONAL_KWH_PER_GB_DATACENTER,_0x515d1f=_0x4c029d*OPERATIONAL_KWH_PER_GB_NETWORK,_0x410c63=_0x4c029d*OPERATIONAL_KWH_PER_GB_DEVICE;return{'dataCenter':_0x495c67,'network':_0x515d1f,'device':_0x410c63};}['operationalEmissions'](_0x3ba20e,_0x53c3f2={}){const {dataCenter:_0x26448f,network:_0x47dc5c,device:_0x334e7e}=this['operationalEnergyPerSegment'](_0x3ba20e);let _0x426aaf=GLOBAL_GRID_INTENSITY,_0x678e3a=GLOBAL_GRID_INTENSITY,_0x4bf44d=GLOBAL_GRID_INTENSITY;if(_0x53c3f2?.['gridIntensity']){const {device:_0x1974c6,network:_0xfe1227,dataCenter:_0x1b5259}=_0x53c3f2['gridIntensity'];(_0x1974c6?.['value']||_0x1974c6?.['value']===0x0)&&(_0x4bf44d=_0x1974c6['value']),(_0xfe1227?.['value']||_0xfe1227?.['value']===0x0)&&(_0x678e3a=_0xfe1227['value']),(_0x1b5259?.['value']||_0x1b5259?.['value']===0x0)&&(_0x426aaf=_0x1b5259['value']);}const _0x3af8bd=_0x26448f*_0x426aaf,_0x58c9c8=_0x47dc5c*_0x678e3a,_0x55ecad=_0x334e7e*_0x4bf44d;return{'dataCenter':_0x3af8bd,'network':_0x58c9c8,'device':_0x55ecad};}['embodiedEnergyPerSegment'](_0x4578c8){const _0x5cdea5=_0x4578c8/fileSize['GIGABYTE'],_0x2a02d8=_0x5cdea5*EMBODIED_KWH_PER_GB_DATACENTER,_0x4b3412=_0x5cdea5*EMBODIED_KWH_PER_GB_NETWORK,_0x3eea30=_0x5cdea5*EMBODIED_KWH_PER_GB_DEVICE;return{'dataCenter':_0x2a02d8,'network':_0x4b3412,'device':_0x3eea30};}['embodiedEmissions'](_0x763fc1){const {dataCenter:_0x55c74e,network:_0x13dd64,device:_0x2b847a}=this['embodiedEnergyPerSegment'](_0x763fc1),_0x19ea13=GLOBAL_GRID_INTENSITY,_0x94f4b4=GLOBAL_GRID_INTENSITY,_0x38b96e=GLOBAL_GRID_INTENSITY,_0x2b3e31=_0x55c74e*_0x19ea13,_0x4674d9=_0x13dd64*_0x94f4b4,_0x888b06=_0x2b847a*_0x38b96e;return{'dataCenter':_0x2b3e31,'network':_0x4674d9,'device':_0x888b06};}['perByte'](_0xe36472,_0x54475a=![],_0x5e806d=![],_0x22ce09=![],_0x3353e1={}){if(_0xe36472<0x1)return 0x0;const _0x38a810=this['operationalEmissions'](_0xe36472,_0x3353e1),_0xa9cb28=this['embodiedEmissions'](_0xe36472),_0xafa93d=getGreenHostingFactor(_0x54475a,_0x3353e1),_0x144719={'dataCenter':_0x38a810['dataCenter']*(0x1-_0xafa93d)+_0xa9cb28['dataCenter'],'network':_0x38a810['network']+_0xa9cb28['network'],'device':_0x38a810['device']+_0xa9cb28['device']},_0x5910d8=_0x144719['dataCenter']+_0x144719['network']+_0x144719['device'];if(_0x5e806d){const _0x37bc5f={...outputSegments(_0x38a810,_0xa9cb28)};if(_0x22ce09)return{..._0x37bc5f,'total':_0x5910d8};return{..._0x37bc5f,'total':_0x5910d8};}if(_0x22ce09)return{'total':_0x5910d8};return _0x5910d8;}['perVisit'](_0x2253a9,_0x902d4c=!![],_0x23748a=!![],_0x200b96=!![],_0x32162f=![],_0x204e9f={}){let _0x3f7a9a=0x1,_0x1c30f3=0x0,_0xad69c8=0x0;const _0x4f5f79=getGreenHostingFactor(_0x23748a,_0x204e9f),_0xf88ecd=this['operationalEmissions'](_0x2253a9,_0x204e9f),_0x4c21fc=this['operationalEnergyPerSegment'](_0x2253a9),_0x7060e4=this['embodiedEmissions'](_0x2253a9),_0x20783b=this['embodiedEnergyPerSegment'](_0x2253a9);!_0x902d4c&&(_0xf88ecd['dataCenter']=0x0,_0x4c21fc['dataCenter']=0x0);if(_0x2253a9<0x1)return{'co2':{'total':0x0,'dataCenter':0x0,'network':0x0,'device':0x0,'embodied':{'dataCenter':0x0,'network':0x0,'device':0x0},'operational':{'dataCenter':0x0,'network':0x0,'device':0x0}},'energy':{'total':0x0,'dataCenter':0x0,'network':0x0,'device':0x0,'embodied':{'dataCenter':0x0,'network':0x0,'device':0x0},'operational':{'dataCenter':0x0,'network':0x0,'device':0x0}},'rating':{'interactive':'A+','load':'A+'}};(_0x204e9f['firstVisitPercentage']||_0x204e9f['firstVisitPercentage']===0x0)&&(_0x3f7a9a=_0x204e9f['firstVisitPercentage']);(_0x204e9f['returnVisitPercentage']||_0x204e9f['returnVisitPercentage']===0x0)&&(_0x1c30f3=_0x204e9f['returnVisitPercentage']);(_0x204e9f['dataReloadRatio']||_0x204e9f['dataReloadRatio']===0x0)&&(_0xad69c8=_0x204e9f['dataReloadRatio']);const _0x5020dc=(_0xf88ecd['dataCenter']*(0x1-_0x4f5f79)+_0x7060e4['dataCenter'])*(_0x3f7a9a+_0x1c30f3*(0x1-_0xad69c8)),_0x5572cc=(_0xf88ecd['network']+_0x7060e4['network'])*(_0x3f7a9a+_0x1c30f3*(0x1-_0xad69c8)),_0x9a063e=(_0xf88ecd['device']+_0x7060e4['device'])*(_0x3f7a9a+_0x1c30f3*(0x1-_0xad69c8)),_0x35696f=_0x5020dc+_0x5572cc+_0x9a063e,_0x54407c=(_0x4c21fc['dataCenter']*(0x1-_0x4f5f79)+_0x20783b['dataCenter'])*(_0x3f7a9a+_0x1c30f3*(0x1-_0xad69c8)),_0x5be035=(_0x4c21fc['network']+_0x20783b['network'])*(_0x3f7a9a+_0x1c30f3*(0x1-_0xad69c8)),_0x421f4a=(_0x4c21fc['device']+_0x20783b['device'])*(_0x3f7a9a+_0x1c30f3*(0x1-_0xad69c8)),_0x23596f=_0x54407c+_0x5be035+_0x421f4a,_0x4d3059={'co2':{'total':_0x35696f,'dataCenter':_0x5020dc,'network':_0x5572cc,'device':_0x9a063e,'embodied':{'dataCenter':_0x7060e4['dataCenter'],'network':_0x7060e4['network'],'device':_0x7060e4['device']},'operational':{'dataCenter':_0xf88ecd['dataCenter'],'network':_0xf88ecd['network'],'device':_0xf88ecd['device']}},'energy':{'total':_0x23596f*0x3e8,'dataCenter':_0x54407c*0x3e8,'network':_0x5be035*0x3e8,'device':_0x421f4a*0x3e8,'embodied':{'dataCenter':_0x20783b['dataCenter']*0x3e8,'network':_0x20783b['network']*0x3e8,'device':_0x20783b['device']*0x3e8},'operational':{'dataCenter':_0x4c21fc['dataCenter']*0x3e8,'network':_0x4c21fc['network']*0x3e8,'device':_0x4c21fc['device']*0x3e8}},'rating':this['ratingScale'](_0x35696f)};if(_0x200b96)return{..._0x4d3059,'segments':{...outputSegments(_0xf88ecd,_0x7060e4),'firstVisitCO2e':_0x35696f*_0x3f7a9a,'returnVisitCO2e':_0x35696f*_0x1c30f3*(0x1-_0xad69c8)}};return _0x4d3059;}['ratingScale'](_0x2d1838){return outputRating(_0x2d1838);}['calculateScrollRating'](_0x368548){const _0x57cd05=0.04,_0x3a9d4=0.079,_0x393788=0.145,_0x36a376=0.209,_0x50c4c6=0.278,_0x26c48b=0.359;if(_0x368548<=_0x57cd05)return'A+';else{if(_0x368548<=_0x3a9d4)return'A';else{if(_0x368548<=_0x393788)return'B';else{if(_0x368548<=_0x36a376)return'C';else{if(_0x368548<=_0x50c4c6)return'D';else{if(_0x368548<=_0x26c48b)return'E';else{const _0x3b1fab=Math['ceil'](_0x368548/_0x26c48b);return _0x3b1fab===0x1?'F':_0x3b1fab+'F';}}}}}}}}exports['SustainableWebDesign']=SustainableWebDesign,exports['default']=SustainableWebDesign;