35 lines
755 B
TypeScript
35 lines
755 B
TypeScript
import {Result} from 'rust'
|
|
import logger from 'log'
|
|
|
|
const log = logger('misc')
|
|
|
|
export function a2str(buf: Uint8Array) : string {
|
|
// @ts-ignore
|
|
return String.fromCharCode.apply(null, buf)
|
|
}
|
|
export function str2a(str: string) : Uint8Array {
|
|
const buf = new Uint8Array(str.length)
|
|
|
|
for (let i= 0, strLen = str.length; i < strLen; i++) {
|
|
buf[i] = str.charCodeAt(i)
|
|
}
|
|
|
|
return buf
|
|
}
|
|
|
|
export function a2b64(buf: Uint8Array) : string {
|
|
return btoa(a2str(buf))
|
|
}
|
|
export function b642a(b64: string) : Result<Uint8Array> {
|
|
log.trace('b642a')
|
|
|
|
try {
|
|
return Result.ok(str2a(atob(b64)))
|
|
} catch (e) {
|
|
log.warn('b64 decode failed')
|
|
log.debug(`error : ${e}`)
|
|
}
|
|
|
|
return Result.error([])
|
|
}
|