kubo-rpc-client-esm-cjs
Version:
A client library for the Kubo RPC API
48 lines • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.textToUrlSafeRpc = exports.rpcToBigInt = exports.rpcToBytes = exports.rpcToText = exports.rpcArrayToTextArray = void 0;
const from_string_1 = require("uint8arrays/from-string");
const to_string_1 = require("uint8arrays/to-string");
const base64_1 = require("multiformats/bases/base64");
/* 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
*/
/**
* @param {Array<string>} strings
* @returns {Array<string>} strings
*/
const rpcArrayToTextArray = strings => {
if (Array.isArray(strings)) {
return strings.map(rpcToText);
}
return strings;
};
exports.rpcArrayToTextArray = rpcArrayToTextArray;
/**
* @param {string} mb
* @returns {string}
*/
const rpcToText = mb => (0, to_string_1.toString)(rpcToBytes(mb));
exports.rpcToText = rpcToText;
/**
* @param {string} mb
* @returns {Uint8Array}
*/
const rpcToBytes = mb => base64_1.base64url.decode(mb);
exports.rpcToBytes = rpcToBytes;
/**
* @param {string} mb
* @returns {bigint}
*/
const rpcToBigInt = mb => BigInt(`0x${(0, to_string_1.toString)(base64_1.base64url.decode(mb), 'base16')}`);
exports.rpcToBigInt = rpcToBigInt;
/**
* @param {string} text
* @returns {string}
*/
const textToUrlSafeRpc = text => base64_1.base64url.encode((0, from_string_1.fromString)(text));
exports.textToUrlSafeRpc = textToUrlSafeRpc;
//# sourceMappingURL=http-rpc-wire-format.js.map