kubo-rpc-client
Version:
A client library for the Kubo RPC API
20 lines • 1.02 kB
JavaScript
import { base64url } from 'multiformats/bases/base64';
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
/* HTTP RPC:
* - wraps binary data in multibase. base64url is used to avoid issues
* when a binary data is passed as search param in URL.
* Historical context: https://github.com/ipfs/go-ipfs/issues/7939
* Multibase wrapping introduced in: https://github.com/ipfs/go-ipfs/pull/8183
*/
export const rpcArrayToTextArray = (strings) => {
if (Array.isArray(strings)) {
return strings.map(rpcToText);
}
return strings;
};
export const rpcToText = (mb) => uint8ArrayToString(rpcToBytes(mb));
export const rpcToBytes = (mb) => base64url.decode(mb);
export const rpcToBigInt = (mb) => BigInt(`0x${uint8ArrayToString(base64url.decode(mb), 'base16')}`);
export const textToUrlSafeRpc = (text) => base64url.encode(uint8ArrayFromString(text));
//# sourceMappingURL=http-rpc-wire-format.js.map