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, short: boolean = false ) {
if( size < 1024 )
return size + (short? 'B' : ' B');
else if( size < 1024 * 1024 )
return ( size / 1024 ).toFixed( short? 1: 2 ) + (short? 'K' : ' KB');
else if( size < 1024 * 1024 * 1024 )
return ( size / 1024 / 1024 ).toFixed( short? 1 : 2 ) + (short? 'M' : ' MB');
else
return ( size / 1024 / 1024 / 1024 ).toFixed( short? 1 : 2 ) + (short? 'G':' GB');
}
export function monthToNumber( month: string ) {
const months = [
'',
'jan',
'feb',
'mar',
'apr',
'may',
'jun',
'jul',
'aug',
'sep',
'oct',
'nov',
'dec'
];
return months.indexOf( month.toLowerCase() );
};