UNPKG

@zerochain/sdk

Version:

The Züs JS SDK is a JavaScript client library that provides a convenient interface for interacting with the Züs Network. It allows developers to perform various operations such as creating and managing allocations, uploading and downloading files, executi

117 lines (106 loc) 3.28 kB
/** * Converts a hexadecimal string to a Uint8Array. * * @param str The hexadecimal string to convert. * @returns The Uint8Array bytes representation of the hexadecimal string. */ export const hexStringToByte = (str: string): Uint8Array<ArrayBuffer> => { if (!str) return new Uint8Array() const a: number[] = [] for (let i = 0, len = str.length; i < len; i += 2) { a.push(parseInt(str.substring(i, i + 2), 16)) } return new Uint8Array(a) } /** * Sleep is used when awaiting for Go Wasm to initialize. * It uses the lowest possible sane delay time (via requestAnimationFrame). * However, if the window is not focused, requestAnimationFrame never returns. * A timeout will ensure to be called after 50 ms, regardless of whether or not * the tab is in focus. */ export const sleep = (ms = 1000): Promise<number | void> => { return new Promise<number | void>(resolve => { requestAnimationFrame(resolve) setTimeout(resolve, ms) }) } export const getBls = async (): Promise<any> => { const bls = window.bls if (!bls?.mod?.calledRun) await bls?.init(bls.BN254) return bls } /** Converts SAS token to ZCN */ export const sasTokenToZcn = (token = 0): number => { const zcn = token / Math.pow(10, 10) return parseFloat(String(zcn)) } /** * Converts ZCN to SAS token * Note: SAS can never be a float number */ export const zcnToSasToken = (zcn = 0): number => { const sasToken = zcn * Math.pow(10, 10) return parseInt(String(sasToken)) } type DecodedAuthTicket = { fileName?: string walletId?: string lookupHash?: string referenceType?: string allocationId?: string isEncrypted?: boolean } /** decodeAuthTicket decodes the Authticket */ export const decodeAuthTicket = (authTicket: string): DecodedAuthTicket => { if (!authTicket) return {} try { const file = JSON.parse(decodeURIComponent(escape(atob(authTicket)))) return { fileName: file.file_name, walletId: file.owner_id || file.client_id, lookupHash: file.file_path_hash, referenceType: file.reference_type, allocationId: file.allocation_id, isEncrypted: file.encrypted, } } catch (e) { console.error('Failed decoding authticket ', e) return {} } } // type AuthToken = { // recipient_public_key: string // marker: string // tokens: number // } // /** // * decodeAuthTicket decodes the auth ticket and returns the recipient public key and the tokens // * @deprecated // */ // export const decodeAuthTicket = async ({ // domain, // wallet, // authTicket, // }: { // domain: NetworkDomain // wallet: ActiveWallet // authTicket: string // }): Promise<AuthToken> => { // const goWasm = await getWasm({ domain, wallet }) // const resp = await goWasm.sdk.decodeAuthTicket(authTicket) // return resp // } export const bufferToByteString = (buffer: Buffer<ArrayBuffer>): string => { return Array.from(buffer || []).toString() } export const fileToBuffer = async ( file: File ): Promise<Buffer<ArrayBuffer>> => { const arrayBuffer = await file.arrayBuffer() return Buffer.from(arrayBuffer) as Buffer<ArrayBuffer> } export const fileToByteString = async (file: File): Promise<string> => { const buffer = await fileToBuffer(file) return bufferToByteString(buffer) }