From bedf43af45d97a10a6f62b4f1bb21cd66fda1d71 Mon Sep 17 00:00:00 2001 From: aura Date: Thu, 19 Feb 2026 19:57:10 +0100 Subject: empty moneyjsx site --- public/src/util.tsx | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 public/src/util.tsx (limited to 'public/src/util.tsx') diff --git a/public/src/util.tsx b/public/src/util.tsx new file mode 100644 index 0000000..f083d9f --- /dev/null +++ b/public/src/util.tsx @@ -0,0 +1,60 @@ +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() ); +}; -- cgit v1.2.3