smartstring/ts/smartstring.base64.ts

70 lines
1.4 KiB
TypeScript
Raw Permalink Normal View History

2022-03-18 21:50:24 +00:00
import * as plugins from './smartstring.plugins.js';
2016-10-31 23:22:38 +00:00
/**
* the type for base 64
*/
export type TBase64Input = 'string' | 'base64' | 'base64uri';
2016-10-31 23:22:38 +00:00
/**
* handle base64 strings
*/
export class Base64 {
private refString: string;
2017-10-05 13:55:59 +00:00
constructor(inputStringArg, typeArg: TBase64Input) {
switch (typeArg) {
case 'string': // easiest case
this.refString = inputStringArg;
break;
2017-10-05 13:55:59 +00:00
case 'base64':
this.refString = base64.decode(inputStringArg);
break;
2017-10-05 13:55:59 +00:00
case 'base64uri':
this.refString = base64.decode(inputStringArg);
2016-10-31 23:22:38 +00:00
}
2017-10-05 13:55:59 +00:00
}
2016-10-31 23:22:38 +00:00
2017-10-05 13:55:59 +00:00
/**
* the simple string (unencoded)
*/
get simpleString() {
return this.refString;
2017-10-05 13:55:59 +00:00
}
2016-10-31 23:22:38 +00:00
2017-10-05 13:55:59 +00:00
/**
* the base64 encoded version of the original string
*/
get base64String() {
return base64.encode(this.refString);
2017-10-05 13:55:59 +00:00
}
2016-10-31 23:22:38 +00:00
2017-10-05 13:55:59 +00:00
/**
* the base64uri encoded version of the original string
*/
get base64UriString() {
return base64.encodeUri(this.refString);
2017-10-05 13:55:59 +00:00
}
}
export let base64 = {
2017-10-05 13:55:59 +00:00
/**
* encodes the string
*/
encode: (stringArg: string) => {
return plugins.jsBase64.encode(stringArg);
2017-10-05 13:55:59 +00:00
},
2017-10-05 13:55:59 +00:00
/**
* encodes a stringArg to base64 uri style
*/
encodeUri: (stringArg: string) => {
return plugins.jsBase64.encodeURI(stringArg);
2017-10-05 13:55:59 +00:00
},
2017-10-05 13:55:59 +00:00
/**
* decodes a base64 encoded string
*/
decode: (stringArg: string) => {
return plugins.jsBase64.decode(stringArg);
2020-12-31 03:56:40 +00:00
},
};