ccxt 4.2.11 → 4.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/build.sh +2 -2
- package/dist/ccxt.browser.js +1347 -490
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/_virtual/agent.js +7 -0
- package/dist/cjs/_virtual/parse-proxy-response.js +7 -0
- package/dist/cjs/_virtual/promisify.js +7 -0
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/js/ccxt.js +474 -0
- package/dist/cjs/js/src/abstract/ace.js +9 -0
- package/dist/cjs/js/src/abstract/alpaca.js +9 -0
- package/dist/cjs/js/src/abstract/ascendex.js +9 -0
- package/dist/cjs/js/src/abstract/bigone.js +9 -0
- package/dist/cjs/js/src/abstract/binance.js +9 -0
- package/dist/cjs/js/src/abstract/bingx.js +9 -0
- package/dist/cjs/js/src/abstract/bit2c.js +9 -0
- package/dist/cjs/js/src/abstract/bitbank.js +9 -0
- package/dist/cjs/js/src/abstract/bitbns.js +9 -0
- package/dist/cjs/js/src/abstract/bitfinex.js +9 -0
- package/dist/cjs/js/src/abstract/bitfinex2.js +9 -0
- package/dist/cjs/js/src/abstract/bitflyer.js +9 -0
- package/dist/cjs/js/src/abstract/bitforex.js +9 -0
- package/dist/cjs/js/src/abstract/bitget.js +9 -0
- package/dist/cjs/js/src/abstract/bithumb.js +9 -0
- package/dist/cjs/js/src/abstract/bitmart.js +9 -0
- package/dist/cjs/js/src/abstract/bitmex.js +9 -0
- package/dist/cjs/js/src/abstract/bitopro.js +9 -0
- package/dist/cjs/js/src/abstract/bitpanda.js +9 -0
- package/dist/cjs/js/src/abstract/bitrue.js +9 -0
- package/dist/cjs/js/src/abstract/bitso.js +9 -0
- package/dist/cjs/js/src/abstract/bitstamp.js +9 -0
- package/dist/cjs/js/src/abstract/bitteam.js +9 -0
- package/dist/cjs/js/src/abstract/bitvavo.js +9 -0
- package/dist/cjs/js/src/abstract/bl3p.js +9 -0
- package/dist/cjs/js/src/abstract/blockchaincom.js +9 -0
- package/dist/cjs/js/src/abstract/btcalpha.js +9 -0
- package/dist/cjs/js/src/abstract/btcbox.js +9 -0
- package/dist/cjs/js/src/abstract/btcmarkets.js +9 -0
- package/dist/cjs/js/src/abstract/btcturk.js +9 -0
- package/dist/cjs/js/src/abstract/bybit.js +9 -0
- package/dist/cjs/js/src/abstract/cex.js +9 -0
- package/dist/cjs/js/src/abstract/coinbase.js +9 -0
- package/dist/cjs/js/src/abstract/coinbasepro.js +9 -0
- package/dist/cjs/js/src/abstract/coincheck.js +9 -0
- package/dist/cjs/js/src/abstract/coinex.js +9 -0
- package/dist/cjs/js/src/abstract/coinlist.js +9 -0
- package/dist/cjs/js/src/abstract/coinmate.js +9 -0
- package/dist/cjs/js/src/abstract/coinone.js +9 -0
- package/dist/cjs/js/src/abstract/coinsph.js +9 -0
- package/dist/cjs/js/src/abstract/coinspot.js +9 -0
- package/dist/cjs/js/src/abstract/cryptocom.js +9 -0
- package/dist/cjs/js/src/abstract/currencycom.js +9 -0
- package/dist/cjs/js/src/abstract/delta.js +9 -0
- package/dist/cjs/js/src/abstract/deribit.js +9 -0
- package/dist/cjs/js/src/abstract/digifinex.js +9 -0
- package/dist/cjs/js/src/abstract/exmo.js +9 -0
- package/dist/cjs/js/src/abstract/gate.js +9 -0
- package/dist/cjs/js/src/abstract/gemini.js +9 -0
- package/dist/cjs/js/src/abstract/hitbtc.js +9 -0
- package/dist/cjs/js/src/abstract/hollaex.js +9 -0
- package/dist/cjs/js/src/abstract/htx.js +9 -0
- package/dist/cjs/js/src/abstract/huobijp.js +9 -0
- package/dist/cjs/js/src/abstract/idex.js +9 -0
- package/dist/cjs/js/src/abstract/independentreserve.js +9 -0
- package/dist/cjs/js/src/abstract/indodax.js +9 -0
- package/dist/cjs/js/src/abstract/kraken.js +9 -0
- package/dist/cjs/js/src/abstract/krakenfutures.js +9 -0
- package/dist/cjs/js/src/abstract/kucoin.js +9 -0
- package/dist/cjs/js/src/abstract/kucoinfutures.js +9 -0
- package/dist/cjs/js/src/abstract/kuna.js +9 -0
- package/dist/cjs/js/src/abstract/latoken.js +9 -0
- package/dist/cjs/js/src/abstract/lbank.js +9 -0
- package/dist/cjs/js/src/abstract/luno.js +9 -0
- package/dist/cjs/js/src/abstract/lykke.js +9 -0
- package/dist/cjs/js/src/abstract/mercado.js +9 -0
- package/dist/cjs/js/src/abstract/mexc.js +9 -0
- package/dist/cjs/js/src/abstract/ndax.js +9 -0
- package/dist/cjs/js/src/abstract/novadax.js +9 -0
- package/dist/cjs/js/src/abstract/oceanex.js +9 -0
- package/dist/cjs/js/src/abstract/okcoin.js +9 -0
- package/dist/cjs/js/src/abstract/okx.js +9 -0
- package/dist/cjs/js/src/abstract/p2b.js +9 -0
- package/dist/cjs/js/src/abstract/paymium.js +9 -0
- package/dist/cjs/js/src/abstract/phemex.js +9 -0
- package/dist/cjs/js/src/abstract/poloniex.js +9 -0
- package/dist/cjs/js/src/abstract/poloniexfutures.js +9 -0
- package/dist/cjs/js/src/abstract/probit.js +9 -0
- package/dist/cjs/js/src/abstract/timex.js +9 -0
- package/dist/cjs/js/src/abstract/tokocrypto.js +9 -0
- package/dist/cjs/js/src/abstract/upbit.js +9 -0
- package/dist/cjs/js/src/abstract/wavesexchange.js +9 -0
- package/dist/cjs/js/src/abstract/wazirx.js +9 -0
- package/dist/cjs/js/src/abstract/whitebit.js +9 -0
- package/dist/cjs/js/src/abstract/woo.js +9 -0
- package/dist/cjs/js/src/abstract/yobit.js +9 -0
- package/dist/cjs/js/src/abstract/zaif.js +9 -0
- package/dist/cjs/js/src/abstract/zonda.js +9 -0
- package/dist/cjs/js/src/ace.js +1058 -0
- package/dist/cjs/js/src/alpaca.js +1125 -0
- package/dist/cjs/js/src/ascendex.js +3360 -0
- package/dist/cjs/js/src/base/Exchange.js +5110 -0
- package/dist/cjs/js/src/base/Precise.js +263 -0
- package/dist/cjs/js/src/base/errors.js +299 -0
- package/dist/cjs/js/src/base/functions/crypto.js +78 -0
- package/dist/cjs/js/src/base/functions/encode.js +44 -0
- package/dist/cjs/js/src/base/functions/generic.js +193 -0
- package/dist/cjs/js/src/base/functions/misc.js +96 -0
- package/dist/cjs/js/src/base/functions/number.js +297 -0
- package/dist/cjs/js/src/base/functions/platform.js +28 -0
- package/dist/cjs/js/src/base/functions/rsa.js +34 -0
- package/dist/cjs/js/src/base/functions/string.js +48 -0
- package/dist/cjs/js/src/base/functions/throttle.js +66 -0
- package/dist/cjs/js/src/base/functions/time.js +187 -0
- package/dist/cjs/js/src/base/functions/totp.js +24 -0
- package/dist/cjs/js/src/base/functions/type.js +162 -0
- package/dist/cjs/js/src/base/functions.js +157 -0
- package/dist/cjs/js/src/base/ws/Cache.js +254 -0
- package/dist/cjs/js/src/base/ws/Client.js +299 -0
- package/dist/cjs/js/src/base/ws/Future.js +34 -0
- package/dist/cjs/js/src/base/ws/OrderBook.js +107 -0
- package/dist/cjs/js/src/base/ws/OrderBookSide.js +281 -0
- package/dist/cjs/js/src/base/ws/WsClient.js +69 -0
- package/dist/cjs/js/src/bequant.js +33 -0
- package/dist/cjs/js/src/bigone.js +2209 -0
- package/dist/cjs/js/src/binance.js +9736 -0
- package/dist/cjs/js/src/binancecoinm.js +45 -0
- package/dist/cjs/js/src/binanceus.js +84 -0
- package/dist/cjs/js/src/binanceusdm.js +58 -0
- package/dist/cjs/js/src/bingx.js +3807 -0
- package/dist/cjs/js/src/bit2c.js +916 -0
- package/dist/cjs/js/src/bitbank.js +1000 -0
- package/dist/cjs/js/src/bitbay.js +17 -0
- package/dist/cjs/js/src/bitbns.js +1220 -0
- package/dist/cjs/js/src/bitcoincom.js +17 -0
- package/dist/cjs/js/src/bitfinex.js +1670 -0
- package/dist/cjs/js/src/bitfinex2.js +2990 -0
- package/dist/cjs/js/src/bitflyer.js +1045 -0
- package/dist/cjs/js/src/bitforex.js +852 -0
- package/dist/cjs/js/src/bitget.js +8291 -0
- package/dist/cjs/js/src/bithumb.js +1090 -0
- package/dist/cjs/js/src/bitmart.js +4454 -0
- package/dist/cjs/js/src/bitmex.js +2884 -0
- package/dist/cjs/js/src/bitopro.js +1724 -0
- package/dist/cjs/js/src/bitpanda.js +2002 -0
- package/dist/cjs/js/src/bitrue.js +3253 -0
- package/dist/cjs/js/src/bitso.js +1753 -0
- package/dist/cjs/js/src/bitstamp.js +2188 -0
- package/dist/cjs/js/src/bitteam.js +2309 -0
- package/dist/cjs/js/src/bitvavo.js +1968 -0
- package/dist/cjs/js/src/bl3p.js +447 -0
- package/dist/cjs/js/src/blockchaincom.js +1160 -0
- package/dist/cjs/js/src/btcalpha.js +929 -0
- package/dist/cjs/js/src/btcbox.js +565 -0
- package/dist/cjs/js/src/btcmarkets.js +1237 -0
- package/dist/cjs/js/src/btcturk.js +929 -0
- package/dist/cjs/js/src/bybit.js +7646 -0
- package/dist/cjs/js/src/cex.js +1693 -0
- package/dist/cjs/js/src/coinbase.js +3424 -0
- package/dist/cjs/js/src/coinbasepro.js +1866 -0
- package/dist/cjs/js/src/coincheck.js +843 -0
- package/dist/cjs/js/src/coinex.js +5414 -0
- package/dist/cjs/js/src/coinlist.js +2329 -0
- package/dist/cjs/js/src/coinmate.js +989 -0
- package/dist/cjs/js/src/coinone.js +1185 -0
- package/dist/cjs/js/src/coinsph.js +1933 -0
- package/dist/cjs/js/src/coinspot.js +548 -0
- package/dist/cjs/js/src/cryptocom.js +3007 -0
- package/dist/cjs/js/src/currencycom.js +2015 -0
- package/dist/cjs/js/src/delta.js +3256 -0
- package/dist/cjs/js/src/deribit.js +3306 -0
- package/dist/cjs/js/src/digifinex.js +4307 -0
- package/dist/cjs/js/src/exmo.js +2645 -0
- package/dist/cjs/js/src/fmfwio.js +34 -0
- package/dist/cjs/js/src/gate.js +7072 -0
- package/dist/cjs/js/src/gateio.js +16 -0
- package/dist/cjs/js/src/gemini.js +1801 -0
- package/dist/cjs/js/src/hitbtc.js +3660 -0
- package/dist/cjs/js/src/hitbtc3.js +19 -0
- package/dist/cjs/js/src/hollaex.js +1882 -0
- package/dist/cjs/js/src/htx.js +9049 -0
- package/dist/cjs/js/src/huobi.js +16 -0
- package/dist/cjs/js/src/huobijp.js +1918 -0
- package/dist/cjs/js/src/idex.js +1770 -0
- package/dist/cjs/js/src/independentreserve.js +761 -0
- package/dist/cjs/js/src/indodax.js +1069 -0
- package/dist/cjs/js/src/kraken.js +2857 -0
- package/dist/cjs/js/src/krakenfutures.js +2407 -0
- package/dist/cjs/js/src/kucoin.js +4489 -0
- package/dist/cjs/js/src/kucoinfutures.js +2475 -0
- package/dist/cjs/js/src/kuna.js +1949 -0
- package/dist/cjs/js/src/latoken.js +1729 -0
- package/dist/cjs/js/src/lbank.js +2851 -0
- package/dist/cjs/js/src/luno.js +1044 -0
- package/dist/cjs/js/src/lykke.js +1303 -0
- package/dist/cjs/js/src/mercado.js +897 -0
- package/dist/cjs/js/src/mexc.js +5407 -0
- package/dist/cjs/js/src/ndax.js +2450 -0
- package/dist/cjs/js/src/novadax.js +1556 -0
- package/dist/cjs/js/src/oceanex.js +964 -0
- package/dist/cjs/js/src/okcoin.js +3115 -0
- package/dist/cjs/js/src/okx.js +7330 -0
- package/dist/cjs/js/src/p2b.js +1243 -0
- package/dist/cjs/js/src/paymium.js +597 -0
- package/dist/cjs/js/src/phemex.js +4722 -0
- package/dist/cjs/js/src/poloniex.js +2356 -0
- package/dist/cjs/js/src/poloniexfutures.js +1794 -0
- package/dist/cjs/js/src/pro/alpaca.js +714 -0
- package/dist/cjs/js/src/pro/ascendex.js +957 -0
- package/dist/cjs/js/src/pro/bequant.js +33 -0
- package/dist/cjs/js/src/pro/binance.js +2796 -0
- package/dist/cjs/js/src/pro/binancecoinm.js +23 -0
- package/dist/cjs/js/src/pro/binanceus.js +51 -0
- package/dist/cjs/js/src/pro/binanceusdm.js +32 -0
- package/dist/cjs/js/src/pro/bingx.js +944 -0
- package/dist/cjs/js/src/pro/bitcoincom.js +29 -0
- package/dist/cjs/js/src/pro/bitfinex.js +672 -0
- package/dist/cjs/js/src/pro/bitfinex2.js +1159 -0
- package/dist/cjs/js/src/pro/bitget.js +1733 -0
- package/dist/cjs/js/src/pro/bitmart.js +1486 -0
- package/dist/cjs/js/src/pro/bitmex.js +1576 -0
- package/dist/cjs/js/src/pro/bitopro.js +327 -0
- package/dist/cjs/js/src/pro/bitpanda.js +1341 -0
- package/dist/cjs/js/src/pro/bitrue.js +462 -0
- package/dist/cjs/js/src/pro/bitstamp.js +547 -0
- package/dist/cjs/js/src/pro/bitvavo.js +704 -0
- package/dist/cjs/js/src/pro/blockchaincom.js +794 -0
- package/dist/cjs/js/src/pro/bybit.js +1843 -0
- package/dist/cjs/js/src/pro/cex.js +1510 -0
- package/dist/cjs/js/src/pro/coinbase.js +561 -0
- package/dist/cjs/js/src/pro/coinbasepro.js +968 -0
- package/dist/cjs/js/src/pro/coinex.js +1095 -0
- package/dist/cjs/js/src/pro/cryptocom.js +1020 -0
- package/dist/cjs/js/src/pro/currencycom.js +563 -0
- package/dist/cjs/js/src/pro/deribit.js +825 -0
- package/dist/cjs/js/src/pro/exmo.js +658 -0
- package/dist/cjs/js/src/pro/gate.js +1316 -0
- package/dist/cjs/js/src/pro/gateio.js +16 -0
- package/dist/cjs/js/src/pro/gemini.js +649 -0
- package/dist/cjs/js/src/pro/hitbtc.js +1293 -0
- package/dist/cjs/js/src/pro/hollaex.js +597 -0
- package/dist/cjs/js/src/pro/htx.js +2383 -0
- package/dist/cjs/js/src/pro/huobi.js +16 -0
- package/dist/cjs/js/src/pro/huobijp.js +606 -0
- package/dist/cjs/js/src/pro/idex.js +714 -0
- package/dist/cjs/js/src/pro/independentreserve.js +280 -0
- package/dist/cjs/js/src/pro/kraken.js +1364 -0
- package/dist/cjs/js/src/pro/krakenfutures.js +1500 -0
- package/dist/cjs/js/src/pro/kucoin.js +1052 -0
- package/dist/cjs/js/src/pro/kucoinfutures.js +981 -0
- package/dist/cjs/js/src/pro/luno.js +322 -0
- package/dist/cjs/js/src/pro/mexc.js +1170 -0
- package/dist/cjs/js/src/pro/ndax.js +545 -0
- package/dist/cjs/js/src/pro/okcoin.js +760 -0
- package/dist/cjs/js/src/pro/okx.js +1608 -0
- package/dist/cjs/js/src/pro/phemex.js +1511 -0
- package/dist/cjs/js/src/pro/poloniex.js +1253 -0
- package/dist/cjs/js/src/pro/poloniexfutures.js +1014 -0
- package/dist/cjs/js/src/pro/probit.js +586 -0
- package/dist/cjs/js/src/pro/upbit.js +234 -0
- package/dist/cjs/js/src/pro/wazirx.js +776 -0
- package/dist/cjs/js/src/pro/whitebit.js +927 -0
- package/dist/cjs/js/src/pro/woo.js +769 -0
- package/dist/cjs/js/src/probit.js +1867 -0
- package/dist/cjs/js/src/static_dependencies/fflake/browser.js +401 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +195 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +308 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +554 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +16 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1760 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +52 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +81 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +376 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +70 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1580 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +74 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +24 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +158 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +429 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +176 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +324 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +163 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +245 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1018 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +383 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +258 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +53 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +120 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +69 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +7 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +83 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +240 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +91 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +130 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +214 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +239 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +93 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +354 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +16 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +20 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +30 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +239 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +372 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +273 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +139 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +14 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +16 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +81 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +292 -0
- package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +103 -0
- package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +140 -0
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +175 -0
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
- package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +7 -0
- package/dist/cjs/js/src/static_dependencies/scure-base/index.js +383 -0
- package/dist/cjs/js/src/timex.js +1562 -0
- package/dist/cjs/js/src/tokocrypto.js +2542 -0
- package/dist/cjs/js/src/upbit.js +1844 -0
- package/dist/cjs/js/src/wavesexchange.js +2607 -0
- package/dist/cjs/js/src/wazirx.js +953 -0
- package/dist/cjs/js/src/whitebit.js +2309 -0
- package/dist/cjs/js/src/woo.js +2765 -0
- package/dist/cjs/js/src/yobit.js +1314 -0
- package/dist/cjs/js/src/zaif.js +736 -0
- package/dist/cjs/js/src/zonda.js +1883 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bigone.d.ts +18 -0
- package/js/src/abstract/binance.d.ts +2 -0
- package/js/src/abstract/binancecoinm.d.ts +2 -0
- package/js/src/abstract/binanceus.d.ts +2 -0
- package/js/src/abstract/binanceusdm.d.ts +2 -0
- package/js/src/abstract/bingx.d.ts +2 -0
- package/js/src/abstract/bybit.d.ts +1 -0
- package/js/src/abstract/gate.d.ts +11 -0
- package/js/src/abstract/gateio.d.ts +11 -0
- package/js/src/abstract/okx.d.ts +1 -0
- package/js/src/alpaca.js +18 -18
- package/js/src/base/Exchange.d.ts +5 -1
- package/js/src/base/Exchange.js +101 -12
- package/js/src/bigone.d.ts +3 -2
- package/js/src/bigone.js +429 -167
- package/js/src/binance.js +48 -34
- package/js/src/bingx.js +115 -38
- package/js/src/bitfinex.d.ts +2 -2
- package/js/src/bitfinex.js +2 -3
- package/js/src/bitget.js +33 -13
- package/js/src/bitmart.d.ts +2 -2
- package/js/src/bitmart.js +5 -5
- package/js/src/bitmex.js +1 -0
- package/js/src/bybit.js +2 -0
- package/js/src/coinbase.d.ts +26 -3
- package/js/src/coinbase.js +176 -26
- package/js/src/coinlist.js +3 -4
- package/js/src/coinone.js +1 -1
- package/js/src/coinsph.js +2 -3
- package/js/src/deribit.js +1 -0
- package/js/src/gate.d.ts +4 -4
- package/js/src/gate.js +96 -59
- package/js/src/gemini.js +1 -1
- package/js/src/hitbtc.d.ts +4 -4
- package/js/src/hitbtc.js +2 -3
- package/js/src/htx.d.ts +1 -0
- package/js/src/htx.js +29 -7
- package/js/src/huobijp.js +2 -3
- package/js/src/independentreserve.js +7 -5
- package/js/src/kraken.js +3 -6
- package/js/src/lbank.js +59 -33
- package/js/src/mexc.js +2 -1
- package/js/src/oceanex.js +1 -1
- package/js/src/okx.js +14 -3
- package/js/src/phemex.js +9 -2
- package/js/src/pro/binance.d.ts +2 -23
- package/js/src/pro/binance.js +58 -22
- package/js/src/pro/coinbase.d.ts +2 -2
- package/js/src/pro/coinbase.js +4 -1
- package/js/src/pro/coinbasepro.d.ts +2 -2
- package/js/src/pro/hitbtc.d.ts +2 -2
- package/js/src/pro/kraken.js +1 -1
- package/js/src/pro/okx.d.ts +1 -0
- package/js/src/pro/okx.js +52 -2
- package/js/src/pro/poloniex.d.ts +2 -2
- package/js/src/probit.js +4 -2
- package/js/src/upbit.d.ts +3 -101
- package/js/src/upbit.js +12 -12
- package/js/src/wavesexchange.js +1 -1
- package/js/src/woo.d.ts +2 -0
- package/js/src/woo.js +52 -0
- package/package.json +1 -1
- package/skip-tests.json +5 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
6
|
+
// Utilities
|
|
7
|
+
function assertNumber(n) {
|
|
8
|
+
if (!Number.isSafeInteger(n))
|
|
9
|
+
throw new Error(`Wrong integer: ${n}`);
|
|
10
|
+
}
|
|
11
|
+
function chain(...args) {
|
|
12
|
+
// Wrap call in closure so JIT can inline calls
|
|
13
|
+
const wrap = (a, b) => (c) => a(b(c));
|
|
14
|
+
// Construct chain of args[-1].encode(args[-2].encode([...]))
|
|
15
|
+
const encode = Array.from(args)
|
|
16
|
+
.reverse()
|
|
17
|
+
.reduce((acc, i) => (acc ? wrap(acc, i.encode) : i.encode), undefined);
|
|
18
|
+
// Construct chain of args[0].decode(args[1].decode(...))
|
|
19
|
+
const decode = args.reduce((acc, i) => (acc ? wrap(acc, i.decode) : i.decode), undefined);
|
|
20
|
+
return { encode, decode };
|
|
21
|
+
}
|
|
22
|
+
// Encodes integer radix representation to array of strings using alphabet and back
|
|
23
|
+
function alphabet(alphabet) {
|
|
24
|
+
return {
|
|
25
|
+
encode: (digits) => {
|
|
26
|
+
if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))
|
|
27
|
+
throw new Error('alphabet.encode input should be an array of numbers');
|
|
28
|
+
return digits.map((i) => {
|
|
29
|
+
assertNumber(i);
|
|
30
|
+
if (i < 0 || i >= alphabet.length)
|
|
31
|
+
throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);
|
|
32
|
+
return alphabet[i];
|
|
33
|
+
});
|
|
34
|
+
},
|
|
35
|
+
decode: (input) => {
|
|
36
|
+
if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))
|
|
37
|
+
throw new Error('alphabet.decode input should be array of strings');
|
|
38
|
+
return input.map((letter) => {
|
|
39
|
+
if (typeof letter !== 'string')
|
|
40
|
+
throw new Error(`alphabet.decode: not string element=${letter}`);
|
|
41
|
+
const index = alphabet.indexOf(letter);
|
|
42
|
+
if (index === -1)
|
|
43
|
+
throw new Error(`Unknown letter: "${letter}". Allowed: ${alphabet}`);
|
|
44
|
+
return index;
|
|
45
|
+
});
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function join(separator = '') {
|
|
50
|
+
if (typeof separator !== 'string')
|
|
51
|
+
throw new Error('join separator should be string');
|
|
52
|
+
return {
|
|
53
|
+
encode: (from) => {
|
|
54
|
+
if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))
|
|
55
|
+
throw new Error('join.encode input should be array of strings');
|
|
56
|
+
for (let i of from)
|
|
57
|
+
if (typeof i !== 'string')
|
|
58
|
+
throw new Error(`join.encode: non-string input=${i}`);
|
|
59
|
+
return from.join(separator);
|
|
60
|
+
},
|
|
61
|
+
decode: (to) => {
|
|
62
|
+
if (typeof to !== 'string')
|
|
63
|
+
throw new Error('join.decode input should be string');
|
|
64
|
+
return to.split(separator);
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Pad strings array so it has integer number of bits
|
|
69
|
+
function padding(bits, chr = '=') {
|
|
70
|
+
assertNumber(bits);
|
|
71
|
+
if (typeof chr !== 'string')
|
|
72
|
+
throw new Error('padding chr should be string');
|
|
73
|
+
return {
|
|
74
|
+
encode(data) {
|
|
75
|
+
if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))
|
|
76
|
+
throw new Error('padding.encode input should be array of strings');
|
|
77
|
+
for (let i of data)
|
|
78
|
+
if (typeof i !== 'string')
|
|
79
|
+
throw new Error(`padding.encode: non-string input=${i}`);
|
|
80
|
+
while ((data.length * bits) % 8)
|
|
81
|
+
data.push(chr);
|
|
82
|
+
return data;
|
|
83
|
+
},
|
|
84
|
+
decode(input) {
|
|
85
|
+
if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))
|
|
86
|
+
throw new Error('padding.encode input should be array of strings');
|
|
87
|
+
for (let i of input)
|
|
88
|
+
if (typeof i !== 'string')
|
|
89
|
+
throw new Error(`padding.decode: non-string input=${i}`);
|
|
90
|
+
let end = input.length;
|
|
91
|
+
if ((end * bits) % 8)
|
|
92
|
+
throw new Error('Invalid padding: string should have whole number of bytes');
|
|
93
|
+
for (; end > 0 && input[end - 1] === chr; end--) {
|
|
94
|
+
if (!(((end - 1) * bits) % 8))
|
|
95
|
+
throw new Error('Invalid padding: string has too much padding');
|
|
96
|
+
}
|
|
97
|
+
return input.slice(0, end);
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function normalize(fn) {
|
|
102
|
+
if (typeof fn !== 'function')
|
|
103
|
+
throw new Error('normalize fn should be function');
|
|
104
|
+
return { encode: (from) => from, decode: (to) => fn(to) };
|
|
105
|
+
}
|
|
106
|
+
// NOTE: it has quadratic time complexity
|
|
107
|
+
function convertRadix(data, from, to) {
|
|
108
|
+
// base 1 is impossible
|
|
109
|
+
if (from < 2)
|
|
110
|
+
throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);
|
|
111
|
+
if (to < 2)
|
|
112
|
+
throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);
|
|
113
|
+
if (!Array.isArray(data))
|
|
114
|
+
throw new Error('convertRadix: data should be array');
|
|
115
|
+
if (!data.length)
|
|
116
|
+
return [];
|
|
117
|
+
let pos = 0;
|
|
118
|
+
const res = [];
|
|
119
|
+
const digits = Array.from(data);
|
|
120
|
+
digits.forEach((d) => {
|
|
121
|
+
assertNumber(d);
|
|
122
|
+
if (d < 0 || d >= from)
|
|
123
|
+
throw new Error(`Wrong integer: ${d}`);
|
|
124
|
+
});
|
|
125
|
+
while (true) {
|
|
126
|
+
let carry = 0;
|
|
127
|
+
let done = true;
|
|
128
|
+
for (let i = pos; i < digits.length; i++) {
|
|
129
|
+
const digit = digits[i];
|
|
130
|
+
const digitBase = from * carry + digit;
|
|
131
|
+
if (!Number.isSafeInteger(digitBase) ||
|
|
132
|
+
(from * carry) / from !== carry ||
|
|
133
|
+
digitBase - digit !== from * carry) {
|
|
134
|
+
throw new Error('convertRadix: carry overflow');
|
|
135
|
+
}
|
|
136
|
+
carry = digitBase % to;
|
|
137
|
+
digits[i] = Math.floor(digitBase / to);
|
|
138
|
+
if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase)
|
|
139
|
+
throw new Error('convertRadix: carry overflow');
|
|
140
|
+
if (!done)
|
|
141
|
+
continue;
|
|
142
|
+
else if (!digits[i])
|
|
143
|
+
pos = i;
|
|
144
|
+
else
|
|
145
|
+
done = false;
|
|
146
|
+
}
|
|
147
|
+
res.push(carry);
|
|
148
|
+
if (done)
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
for (let i = 0; i < data.length - 1 && data[i] === 0; i++)
|
|
152
|
+
res.push(0);
|
|
153
|
+
return res.reverse();
|
|
154
|
+
}
|
|
155
|
+
const gcd = (a, b) => (!b ? a : gcd(b, a % b));
|
|
156
|
+
const radix2carry = (from, to) => from + (to - gcd(from, to));
|
|
157
|
+
// BigInt is 5x slower
|
|
158
|
+
function convertRadix2(data, from, to, padding) {
|
|
159
|
+
if (!Array.isArray(data))
|
|
160
|
+
throw new Error('convertRadix2: data should be array');
|
|
161
|
+
if (from <= 0 || from > 32)
|
|
162
|
+
throw new Error(`convertRadix2: wrong from=${from}`);
|
|
163
|
+
if (to <= 0 || to > 32)
|
|
164
|
+
throw new Error(`convertRadix2: wrong to=${to}`);
|
|
165
|
+
if (radix2carry(from, to) > 32) {
|
|
166
|
+
throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);
|
|
167
|
+
}
|
|
168
|
+
let carry = 0;
|
|
169
|
+
let pos = 0; // bitwise position in current element
|
|
170
|
+
const mask = 2 ** to - 1;
|
|
171
|
+
const res = [];
|
|
172
|
+
for (const n of data) {
|
|
173
|
+
assertNumber(n);
|
|
174
|
+
if (n >= 2 ** from)
|
|
175
|
+
throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);
|
|
176
|
+
carry = (carry << from) | n;
|
|
177
|
+
if (pos + from > 32)
|
|
178
|
+
throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);
|
|
179
|
+
pos += from;
|
|
180
|
+
for (; pos >= to; pos -= to)
|
|
181
|
+
res.push(((carry >> (pos - to)) & mask) >>> 0);
|
|
182
|
+
carry &= 2 ** pos - 1; // clean carry, otherwise it will cause overflow
|
|
183
|
+
}
|
|
184
|
+
carry = (carry << (to - pos)) & mask;
|
|
185
|
+
if (!padding && pos >= from)
|
|
186
|
+
throw new Error('Excess padding');
|
|
187
|
+
if (!padding && carry)
|
|
188
|
+
throw new Error(`Non-zero padding: ${carry}`);
|
|
189
|
+
if (padding && pos > 0)
|
|
190
|
+
res.push(carry >>> 0);
|
|
191
|
+
return res;
|
|
192
|
+
}
|
|
193
|
+
function radix(num) {
|
|
194
|
+
assertNumber(num);
|
|
195
|
+
return {
|
|
196
|
+
encode: (bytes) => {
|
|
197
|
+
if (!(bytes instanceof Uint8Array))
|
|
198
|
+
throw new Error('radix.encode input should be Uint8Array');
|
|
199
|
+
return convertRadix(Array.from(bytes), 2 ** 8, num);
|
|
200
|
+
},
|
|
201
|
+
decode: (digits) => {
|
|
202
|
+
if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))
|
|
203
|
+
throw new Error('radix.decode input should be array of strings');
|
|
204
|
+
return Uint8Array.from(convertRadix(digits, num, 2 ** 8));
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
// If both bases are power of same number (like `2**8 <-> 2**64`),
|
|
209
|
+
// there is a linear algorithm. For now we have implementation for power-of-two bases only
|
|
210
|
+
function radix2(bits, revPadding = false) {
|
|
211
|
+
assertNumber(bits);
|
|
212
|
+
if (bits <= 0 || bits > 32)
|
|
213
|
+
throw new Error('radix2: bits should be in (0..32]');
|
|
214
|
+
if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)
|
|
215
|
+
throw new Error('radix2: carry overflow');
|
|
216
|
+
return {
|
|
217
|
+
encode: (bytes) => {
|
|
218
|
+
if (!(bytes instanceof Uint8Array))
|
|
219
|
+
throw new Error('radix2.encode input should be Uint8Array');
|
|
220
|
+
return convertRadix2(Array.from(bytes), 8, bits, !revPadding);
|
|
221
|
+
},
|
|
222
|
+
decode: (digits) => {
|
|
223
|
+
if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))
|
|
224
|
+
throw new Error('radix2.decode input should be array of strings');
|
|
225
|
+
return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
function unsafeWrapper(fn) {
|
|
230
|
+
if (typeof fn !== 'function')
|
|
231
|
+
throw new Error('unsafeWrapper fn should be function');
|
|
232
|
+
return function (...args) {
|
|
233
|
+
try {
|
|
234
|
+
return fn.apply(null, args);
|
|
235
|
+
}
|
|
236
|
+
catch (e) { }
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
// RFC 4648 aka RFC 3548
|
|
240
|
+
// ---------------------
|
|
241
|
+
const base16 = chain(radix2(4), alphabet('0123456789abcdef'), join(''));
|
|
242
|
+
const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));
|
|
243
|
+
chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));
|
|
244
|
+
chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));
|
|
245
|
+
const base64 = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));
|
|
246
|
+
const base64url = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));
|
|
247
|
+
// base58 code
|
|
248
|
+
// -----------
|
|
249
|
+
const genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));
|
|
250
|
+
const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');
|
|
251
|
+
genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');
|
|
252
|
+
genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');
|
|
253
|
+
// xmr ver is done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.
|
|
254
|
+
// Block encoding significantly reduces quadratic complexity of base58.
|
|
255
|
+
// Data len (index) -> encoded block len
|
|
256
|
+
const XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];
|
|
257
|
+
const base58xmr = {
|
|
258
|
+
encode(data) {
|
|
259
|
+
let res = '';
|
|
260
|
+
for (let i = 0; i < data.length; i += 8) {
|
|
261
|
+
const block = data.subarray(i, i + 8);
|
|
262
|
+
res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');
|
|
263
|
+
}
|
|
264
|
+
return res;
|
|
265
|
+
},
|
|
266
|
+
decode(str) {
|
|
267
|
+
let res = [];
|
|
268
|
+
for (let i = 0; i < str.length; i += 11) {
|
|
269
|
+
const slice = str.slice(i, i + 11);
|
|
270
|
+
const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);
|
|
271
|
+
const block = base58.decode(slice);
|
|
272
|
+
for (let j = 0; j < block.length - blockLen; j++) {
|
|
273
|
+
if (block[j] !== 0)
|
|
274
|
+
throw new Error('base58xmr: wrong padding');
|
|
275
|
+
}
|
|
276
|
+
res = res.concat(Array.from(block.slice(block.length - blockLen)));
|
|
277
|
+
}
|
|
278
|
+
return Uint8Array.from(res);
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
const BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));
|
|
282
|
+
const POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];
|
|
283
|
+
function bech32Polymod(pre) {
|
|
284
|
+
const b = pre >> 25;
|
|
285
|
+
let chk = (pre & 0x1ffffff) << 5;
|
|
286
|
+
for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {
|
|
287
|
+
if (((b >> i) & 1) === 1)
|
|
288
|
+
chk ^= POLYMOD_GENERATORS[i];
|
|
289
|
+
}
|
|
290
|
+
return chk;
|
|
291
|
+
}
|
|
292
|
+
function bechChecksum(prefix, words, encodingConst = 1) {
|
|
293
|
+
const len = prefix.length;
|
|
294
|
+
let chk = 1;
|
|
295
|
+
for (let i = 0; i < len; i++) {
|
|
296
|
+
const c = prefix.charCodeAt(i);
|
|
297
|
+
if (c < 33 || c > 126)
|
|
298
|
+
throw new Error(`Invalid prefix (${prefix})`);
|
|
299
|
+
chk = bech32Polymod(chk) ^ (c >> 5);
|
|
300
|
+
}
|
|
301
|
+
chk = bech32Polymod(chk);
|
|
302
|
+
for (let i = 0; i < len; i++)
|
|
303
|
+
chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);
|
|
304
|
+
for (let v of words)
|
|
305
|
+
chk = bech32Polymod(chk) ^ v;
|
|
306
|
+
for (let i = 0; i < 6; i++)
|
|
307
|
+
chk = bech32Polymod(chk);
|
|
308
|
+
chk ^= encodingConst;
|
|
309
|
+
return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));
|
|
310
|
+
}
|
|
311
|
+
function genBech32(encoding) {
|
|
312
|
+
const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;
|
|
313
|
+
const _words = radix2(5);
|
|
314
|
+
const fromWords = _words.decode;
|
|
315
|
+
const toWords = _words.encode;
|
|
316
|
+
const fromWordsUnsafe = unsafeWrapper(fromWords);
|
|
317
|
+
function encode(prefix, words, limit = 90) {
|
|
318
|
+
if (typeof prefix !== 'string')
|
|
319
|
+
throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);
|
|
320
|
+
if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))
|
|
321
|
+
throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);
|
|
322
|
+
const actualLength = prefix.length + 7 + words.length;
|
|
323
|
+
if (limit !== false && actualLength > limit)
|
|
324
|
+
throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);
|
|
325
|
+
prefix = prefix.toLowerCase();
|
|
326
|
+
return `${prefix}1${BECH_ALPHABET.encode(words)}${bechChecksum(prefix, words, ENCODING_CONST)}`;
|
|
327
|
+
}
|
|
328
|
+
function decode(str, limit = 90) {
|
|
329
|
+
if (typeof str !== 'string')
|
|
330
|
+
throw new Error(`bech32.decode input should be string, not ${typeof str}`);
|
|
331
|
+
if (str.length < 8 || (limit !== false && str.length > limit))
|
|
332
|
+
throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);
|
|
333
|
+
// don't allow mixed case
|
|
334
|
+
const lowered = str.toLowerCase();
|
|
335
|
+
if (str !== lowered && str !== str.toUpperCase())
|
|
336
|
+
throw new Error(`String must be lowercase or uppercase`);
|
|
337
|
+
str = lowered;
|
|
338
|
+
const sepIndex = str.lastIndexOf('1');
|
|
339
|
+
if (sepIndex === 0 || sepIndex === -1)
|
|
340
|
+
throw new Error(`Letter "1" must be present between prefix and data only`);
|
|
341
|
+
const prefix = str.slice(0, sepIndex);
|
|
342
|
+
const _words = str.slice(sepIndex + 1);
|
|
343
|
+
if (_words.length < 6)
|
|
344
|
+
throw new Error('Data must be at least 6 characters long');
|
|
345
|
+
const words = BECH_ALPHABET.decode(_words).slice(0, -6);
|
|
346
|
+
const sum = bechChecksum(prefix, words, ENCODING_CONST);
|
|
347
|
+
if (!_words.endsWith(sum))
|
|
348
|
+
throw new Error(`Invalid checksum in ${str}: expected "${sum}"`);
|
|
349
|
+
return { prefix, words };
|
|
350
|
+
}
|
|
351
|
+
const decodeUnsafe = unsafeWrapper(decode);
|
|
352
|
+
function decodeToBytes(str) {
|
|
353
|
+
const { prefix, words } = decode(str, false);
|
|
354
|
+
return { prefix, words, bytes: fromWords(words) };
|
|
355
|
+
}
|
|
356
|
+
return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };
|
|
357
|
+
}
|
|
358
|
+
genBech32('bech32');
|
|
359
|
+
genBech32('bech32m');
|
|
360
|
+
const utf8 = {
|
|
361
|
+
encode: (data) => new TextDecoder().decode(data),
|
|
362
|
+
decode: (str) => new TextEncoder().encode(str),
|
|
363
|
+
};
|
|
364
|
+
const hex = chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {
|
|
365
|
+
if (typeof s !== 'string' || s.length % 2)
|
|
366
|
+
throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);
|
|
367
|
+
return s.toLowerCase();
|
|
368
|
+
}));
|
|
369
|
+
// prettier-ignore
|
|
370
|
+
const CODERS = {
|
|
371
|
+
utf8, hex, base16, base32, base64, base64url, base58, base58xmr
|
|
372
|
+
};
|
|
373
|
+
`Invalid encoding type. Available types: ${Object.keys(CODERS).join(', ')}`;
|
|
374
|
+
|
|
375
|
+
exports.assertNumber = assertNumber;
|
|
376
|
+
exports.base16 = base16;
|
|
377
|
+
exports.base32 = base32;
|
|
378
|
+
exports.base58 = base58;
|
|
379
|
+
exports.base58xmr = base58xmr;
|
|
380
|
+
exports.base64 = base64;
|
|
381
|
+
exports.base64url = base64url;
|
|
382
|
+
exports.hex = hex;
|
|
383
|
+
exports.utf8 = utf8;
|