UNPKG

remsed

Version:

A JavaScript cryptocurrency trading library with support for fairdesk.com

103 lines (98 loc) 4.87 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var cryptoJs = require('../../static_dependencies/crypto-js/crypto-js.cjs.js'); var index = require('../../static_dependencies/qs/index.cjs.js'); var bn = require('../../static_dependencies/BN/bn.cjs.js'); // ---------------------------------------------------------------------------- /* ------------------------------------------------------------------------ */ // global vars for base58 encoding const base58Alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; let base58Decoder = null; let base58Encoder = null; /* ------------------------------------------------------------------------ */ const json = (data, params = undefined) => JSON.stringify(data), isJsonEncodedObject = object => ((typeof object === 'string') && (object.length >= 2) && ((object[0] === '{') || (object[0] === '['))), stringToBinary = string => cryptoJs.enc.Latin1.parse(string), stringToBase64 = string => cryptoJs.enc.Latin1.parse(string).toString(cryptoJs.enc.Base64), base64ToBinary = string => cryptoJs.enc.Base64.parse(string), base64ToString = string => cryptoJs.enc.Base64.parse(string).toString(cryptoJs.enc.Utf8), binaryToBase64 = binary => binary.toString(cryptoJs.enc.Base64), base16ToBinary = string => cryptoJs.enc.Hex.parse(string), binaryToBase16 = binary => binary.toString(cryptoJs.enc.Hex), binaryConcat = (...args) => args.reduce((a, b) => a.concat(b)), binaryConcatArray = (arr) => arr.reduce((a, b) => a.concat(b)), urlencode = object => index.stringify(object), urlencodeNested = object => index.stringify(object) // implemented only in python , urlencodeWithArrayRepeat = object => index.stringify(object, { arrayFormat: 'repeat' }), rawencode = object => index.stringify(object, { encode: false }), encode = x => x, decode = x => x // Url-safe-base64 without equals signs, with + replaced by - and slashes replaced by underscores , urlencodeBase64 = base64string => base64string.replace(/[=]+$/, '') .replace(/\+/g, '-') .replace(/\//g, '_'), numberToLE = (n, padding) => { const hexArray = new bn(n).toArray('le', padding); return byteArrayToWordArray(hexArray); }, numberToBE = (n, padding = undefined) => { const hexArray = new bn(n).toArray('be', padding); return byteArrayToWordArray(hexArray); }, base58ToBinary = (string) => { if (!base58Decoder) { base58Decoder = {}; base58Encoder = {}; for (let i = 0; i < 58; i++) { const c = base58Alphabet[i]; const bigNum = new bn(i); base58Decoder[c] = bigNum; base58Encoder[bigNum] = c; } } let result = new bn(0); const base = new bn(58); for (let i = 0; i < string.length; i++) { const character = string[i]; result.imul(base); result.iadd(base58Decoder[character]); } return byteArrayToWordArray(result.toArray('be')); }, binaryToBase58 = (wordArray) => { if (!base58Encoder) { base58Decoder = {}; base58Encoder = {}; for (let i = 0; i < 58; i++) { const c = base58Alphabet[i]; const bigNum = new bn(i); base58Decoder[c] = bigNum; base58Encoder[bigNum] = c; } } const base = new bn(58); // hex is only compatible encoding between cryptojs and BN const hexString = wordArray.toString(cryptoJs.enc.Hex); let result = new bn(hexString, 16); let string = []; while (!result.isZero()) { const { div, mod } = result.divmod(base); result = div; string.push(base58Encoder[mod]); } return string.reverse().join(''); }; function byteArrayToWordArray(ba) { const wa = []; for (let i = 0; i < ba.length; i++) { wa[(i / 4) | 0] |= ba[i] << (24 - 8 * i); } return cryptoJs.lib.WordArray.create(wa, ba.length); } /* ------------------------------------------------------------------------ */ exports.base16ToBinary = base16ToBinary; exports.base58ToBinary = base58ToBinary; exports.base64ToBinary = base64ToBinary; exports.base64ToString = base64ToString; exports.binaryConcat = binaryConcat; exports.binaryConcatArray = binaryConcatArray; exports.binaryToBase16 = binaryToBase16; exports.binaryToBase58 = binaryToBase58; exports.binaryToBase64 = binaryToBase64; exports.byteArrayToWordArray = byteArrayToWordArray; exports.decode = decode; exports.encode = encode; exports.isJsonEncodedObject = isJsonEncodedObject; exports.json = json; exports.numberToBE = numberToBE; exports.numberToLE = numberToLE; exports.rawencode = rawencode; exports.stringToBase64 = stringToBase64; exports.stringToBinary = stringToBinary; exports.urlencode = urlencode; exports.urlencodeBase64 = urlencodeBase64; exports.urlencodeNested = urlencodeNested; exports.urlencodeWithArrayRepeat = urlencodeWithArrayRepeat;