export function escapeHtml( html: string ) { const entityMap = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '/': '/', '`': '`', '=': '=' }; return String( html ).replace( /[&<>"'`=\/]/g, ( s ) => { return entityMap[s]; } ); } export function parseJWT( token: string ) : any { const parts = token.split( '.' ); let encoded = parts[1]; encoded = encoded.replace(/-/g, '+').replace(/_/g, '/'); const pad = encoded.length % 4; if( pad === 1 ) throw new Error( 'what the fuck' ); if( pad > 1 ) encoded += new Array( 5 - pad ).join( '=' ); const payload = JSON.parse( atob( encoded ) ); return payload; } export function sizeHumanReadable( size: number ) { if( size < 1024 ) return size + ' B'; else if( size < 1024 * 1024 ) return ( size / 1024 ).toFixed( 2 ) + ' KB'; else if( size < 1024 * 1024 * 1024 ) return ( size / 1024 / 1024 ).toFixed( 2 ) + ' MB'; else return ( size / 1024 / 1024 / 1024 ).toFixed( 2 ) + ' GB'; }