UNPKG

cardamon

Version:

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

1 lines 8.73 kB
'use strict';var __importDefault=this&&this['__importDefault']||function(_0x2be85c){return _0x2be85c&&_0x2be85c['__esModule']?_0x2be85c:{'default':_0x2be85c};};Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['OutputFormatter']=void 0x0;const cli_table3_1=__importDefault(require('cli-table3')),chalk_1=__importDefault(require('chalk')),swd_1=require('./swd');class OutputFormatter{['displayCardamonResult'](_0x49ddef,_0x1b0445,_0x4c3a5b){console['log']('\x0a'+chalk_1['default']['green']('🌱\x20Cardamon\x20Carbon\x20Measurement')+'\x0a'),console['log'](chalk_1['default']['cyan']('📊\x20Measuring:\x20'+_0x1b0445['url'])),console['log'](chalk_1['default']['gray']('⏱️\x20\x20Duration:\x2010s\x20|\x20📱\x20Device:\x20Desktop\x20|\x20🌍\x20CI:\x20'+_0x1b0445['carbonIntensity']+'g\x20CO2/kWh')),console['log']('\x0a'+'═'['repeat'](0x55)+'\x0a'),this['displayOverallSummary'](_0x49ddef,_0x4c3a5b),this['displayPerformanceMetrics'](_0x4c3a5b),this['displayResourceBreakdown'](_0x4c3a5b),console['log']('\x0a'+'═'['repeat'](0x55)+'\x0a');}['displayOverallSummary'](_0x23da75,_0x36dee2){console['log'](chalk_1['default']['bold']('🌍\x20SUMMARY'));const _0x3d0430=new cli_table3_1['default']({'head':['Category','Energy\x20(Wh)','CO2e\x20(g)'],'colWidths':[0xf,0x19,0x19],'style':{'head':['cyan'],'border':['gray']}}),_0x571555=_0x23da75['energy']['frontend']['total']+_0x23da75['energy']['infrastructure']['network'],_0x48f506=_0x23da75['emissions']['frontend']['total']+_0x23da75['emissions']['infrastructure']['network'],_0x5c651b=this['calculateRating'](_0x48f506);_0x3d0430['push'](['Frontend',_0x23da75['energy']['frontend']['total']['toFixed'](0x3)+'\x0a├─\x20Screen:\x20'+_0x23da75['energy']['frontend']['screen']['toFixed'](0x3)+'\x0a├─\x20CPU:\x20'+_0x23da75['energy']['frontend']['cpu']['toFixed'](0x3)+'\x0a├─\x20Idle:\x20'+_0x23da75['energy']['frontend']['idle']['toFixed'](0x3)+'\x0a└─\x20Data:\x20'+_0x23da75['energy']['frontend']['network']['toFixed'](0x3),_0x23da75['emissions']['frontend']['total']['toFixed'](0x3)+'\x0a├─\x20Operational:\x20'+_0x23da75['emissions']['frontend']['operational']['toFixed'](0x3)+'\x0a└─\x20Embodied:\x20'+_0x23da75['emissions']['frontend']['embodied']['toFixed'](0x3)],['Network',_0x23da75['energy']['infrastructure']['network']['toFixed'](0x3),_0x23da75['emissions']['infrastructure']['network']['toFixed'](0x3)],['Total',_0x571555['toFixed'](0x3),_0x48f506['toFixed'](0x3)]),console['log'](_0x3d0430['toString']()),console['log']('\x0a'+chalk_1['default']['bold']('🏆\x20NETWORK\x20METRICS'));const _0x1ff75d=new swd_1['SustainableWebDesign']({}),_0x2e591e=_0x1ff75d['perVisit'](_0x36dee2['network']['loadEventSize']),_0x528e36=_0x1ff75d['perVisit'](_0x36dee2['network']['totalBytes']),_0x49faa1=_0x2e591e['rating'],_0x2d697a=_0x1ff75d['calculateScrollRating'](_0x528e36['co2']['total']),_0x30e4bf=new cli_table3_1['default']({'head':['Metric','Data\x20Size','CO2e\x20(g)','Rating'],'colWidths':[0xf,0xc,0xc,0x8],'style':{'head':['cyan'],'border':['gray']}});_0x30e4bf['push'](['Load\x20Event',this['formatBytes'](_0x36dee2['network']['loadEventSize']),_0x2e591e['co2']['total']['toFixed'](0x3),this['colorizeRating'](_0x49faa1)],['Full\x20Scroll',this['formatBytes'](_0x36dee2['network']['totalBytes']),_0x528e36['co2']['total']['toFixed'](0x3),this['colorizeRating'](_0x2d697a)]),console['log'](_0x30e4bf['toString']());}['displayPerformanceMetrics'](_0x294a3f){console['log']('\x0a'+chalk_1['default']['bold']('📈\x20CPU\x20&\x20COLOR\x20METRICS'));const _0x52a7e6=new cli_table3_1['default']({'head':['Metric','Avg','Max','Min','Rating'],'colWidths':[0x1e,0xc,0xc,0xc,0xc],'style':{'head':['cyan'],'border':['gray']}}),_0x240ebc=_0x294a3f['frontend']['cpu'];if(_0x240ebc['length']>0x0){const _0x15e7d0=_0x240ebc['reduce']((_0x129c00,_0x585868)=>_0x129c00+_0x585868['value'],0x0)/_0x240ebc['length'],_0x517b5a=Math['max'](..._0x240ebc['map'](_0x37a9ab=>_0x37a9ab['value'])),_0x3b67b8=Math['min'](..._0x240ebc['map'](_0x4ab4ce=>_0x4ab4ce['value']));let _0x11b67d;if(_0x15e7d0<0x3)_0x11b67d='Good';else _0x15e7d0<=0x1e?_0x11b67d='Average':_0x11b67d='Bad';_0x52a7e6['push'](['CPU\x20Usage\x20(%)\x20(Lower\x20is\x20better)',_0x15e7d0['toFixed'](0x1),_0x517b5a['toFixed'](0x1),_0x3b67b8['toFixed'](0x1),this['colorizePerformanceRating'](_0x11b67d)]);}const _0x5aba79=_0x294a3f['frontend']['colorProfile'];if(_0x5aba79['length']>0x0){const _0x49abb3=_0x5aba79['reduce']((_0x1ea595,_0x72b409)=>_0x1ea595+_0x72b409['value'],0x0)/_0x5aba79['length'],_0x2dc1a7=Math['max'](..._0x5aba79['map'](_0x5334fb=>_0x5334fb['value'])),_0x25c894=Math['min'](..._0x5aba79['map'](_0xea8f11=>_0xea8f11['value'])),_0x4a1963=_0x49abb3*0x64;let _0x3a878a;if(_0x4a1963>0x55)_0x3a878a='Good';else _0x4a1963>0x3c?_0x3a878a='Average':_0x3a878a='Bad';_0x52a7e6['push'](['Color\x20Score\x20(Higher\x20is\x20better)',_0x4a1963['toFixed'](0x1),(_0x2dc1a7*0x64)['toFixed'](0x1),(_0x25c894*0x64)['toFixed'](0x1),this['colorizePerformanceRating'](_0x3a878a)]);}_0x52a7e6['length']>0x0&&console['log'](_0x52a7e6['toString']());}['displayResourceBreakdown'](_0x112e67){console['log']('\x0a'+chalk_1['default']['bold']('📦\x20NETWORK\x20RESOURCE\x20BREAKDOWN'));const _0xd3e441=_0x112e67['network'],_0x3c722a=_0xd3e441['totalBytes']-_0xd3e441['cachedBytes'],_0x394c0a=new cli_table3_1['default']({'head':['Metric','Value'],'colWidths':[0x14,0x14],'style':{'head':['cyan'],'border':['gray']}});_0x394c0a['push'](['Total\x20Bytes',this['formatBytes'](_0xd3e441['totalBytes'])],['Cached\x20Bytes',this['formatBytes'](_0xd3e441['cachedBytes'])],['Uncached\x20Bytes',this['formatBytes'](_0x3c722a)],['Cache\x20Hit\x20Rate',(_0xd3e441['cachedBytes']/_0xd3e441['totalBytes']*0x64)['toFixed'](0x1)+'%']),console['log'](_0x394c0a['toString']());if(_0xd3e441['resourceBreakdown']&&Object['keys'](_0xd3e441['resourceBreakdown'])['length']>0x0){console['log']('\x0a'+chalk_1['default']['bold']('RESOURCE\x20TYPES'));const _0x2a10af=new cli_table3_1['default']({'head':['Type','Count','Size'],'colWidths':[0xf,0xa,0xf],'style':{'head':['cyan'],'border':['gray']}});Object['entries'](_0xd3e441['resourceBreakdown'])['sort']((_0x108424,_0x4f99f2)=>_0x4f99f2[0x1]['size']-_0x108424[0x1]['size'])['forEach'](([_0x520ea0,_0x480f93])=>{_0x2a10af['push']([_0x520ea0,_0x480f93['count']['toString'](),this['formatBytes'](_0x480f93['size'])]);}),console['log'](_0x2a10af['toString']());}if(_0xd3e441['resourceBreakdown']&&Object['keys'](_0xd3e441['resourceBreakdown'])['length']>0x0){console['log']('\x0a'+chalk_1['default']['bold']('TOP\x2010\x20HEAVIEST\x20RESOURCES'));const _0x12a255=[];Object['entries'](_0xd3e441['resourceBreakdown'])['forEach'](([_0x4f9d9c,_0x2e92f0])=>{_0x2e92f0['details']&&Array['isArray'](_0x2e92f0['details'])&&_0x2e92f0['details']['forEach'](_0x47b744=>{_0x12a255['push']({'url':_0x47b744['link'],'size':_0x47b744['size'],'type':_0x4f9d9c});});});const _0x32ce52=_0x12a255['sort']((_0xc18d9,_0x57af8a)=>_0x57af8a['size']-_0xc18d9['size'])['slice'](0x0,0xa);if(_0x32ce52['length']>0x0){const _0x32aac4=new cli_table3_1['default']({'head':['#','Size','Type','URL'],'colWidths':[0x3,0xa,0xc,0x32],'style':{'head':['cyan'],'border':['gray']}});_0x32ce52['forEach']((_0x3fb2c5,_0x59ae7f)=>{const _0x4123c8=_0x3fb2c5['url']['length']>0x2d?_0x3fb2c5['url']['substring'](0x0,0x2a)+'...':_0x3fb2c5['url'];_0x32aac4['push']([(_0x59ae7f+0x1)['toString'](),this['formatBytes'](_0x3fb2c5['size']),_0x3fb2c5['type'],_0x4123c8]);}),console['log'](_0x32aac4['toString']());}}}['colorizeRating'](_0x29f75f){switch(_0x29f75f){case'A+':case'A':return chalk_1['default']['green'](_0x29f75f);case'B':return chalk_1['default']['yellow'](_0x29f75f);case'C':return chalk_1['default']['hex']('#FFA500')(_0x29f75f);case'D':case'E':return chalk_1['default']['red'](_0x29f75f);case'F':return chalk_1['default']['bgRed']['white'](_0x29f75f);default:return _0x29f75f;}}['colorizePerformanceRating'](_0x21183c){switch(_0x21183c){case'Good':return chalk_1['default']['green'](_0x21183c);case'Average':return chalk_1['default']['yellow'](_0x21183c);case'Bad':return chalk_1['default']['red'](_0x21183c);default:return _0x21183c;}}['formatBytes'](_0x1fd667){if(_0x1fd667===0x0)return'0\x20B';const _0x551772=0x400,_0x2f2293=['B','KB','MB','GB'],_0x2914d9=Math['floor'](Math['log'](_0x1fd667)/Math['log'](_0x551772));return parseFloat((_0x1fd667/Math['pow'](_0x551772,_0x2914d9))['toFixed'](0x2))+'\x20'+_0x2f2293[_0x2914d9];}['calculateRating'](_0x2f682b){if(_0x2f682b<=0.05)return'A+';if(_0x2f682b<=0.1)return'A';if(_0x2f682b<=0.2)return'B';if(_0x2f682b<=0.5)return'C';if(_0x2f682b<=0x1)return'D';if(_0x2f682b<=0x2)return'E';return'F';}}exports['OutputFormatter']=OutputFormatter;