import base64 from 'base-64' ; hidden param { string } input returns { string } export function base64Decode ( input ) { return base64 . decode ( input ) ; } hidden param { string } input returns { string } export function base64Encode ( input ) { return base64 . encode ( input ) ; } hidden param { string } input returns { string } export function base64UrlFromBase64 ( input ) { input = input . split ( '=' ) [ 0 ] ; input = input . replace ( /\+/g , '-' ) . replace ( /\//g , '_' ) ; return input ; } hidden param { string } input returns { string } export function base64UrlToBase64 ( input ) { input = input . replace ( /-/g , '+' ) . replace ( /_/g , '/' ) ; switch ( input . length % 4 ) { case 0 : break ; case 2 : input = input + '==' ; break ; case 3 : input = input + '=' ; break ; default : throw new Error ( 'Invalid base64 string' ) ; } return input ; } hidden param { string } input returns { string } export function base64UrlEncode ( input ) { let output = base64Encode ( input ) ; return base64UrlFromBase64 ( output ) ; } hidden param { string } input returns { string } export function base64UrlDecode ( input ) { const str = base64UrlToBase64 ( input ) ; return base64Decode ( str ) ; }