ccxt 4.2.59 → 4.2.61
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 +103 -102
- package/build.sh +2 -2
- package/dist/ccxt.browser.js +11853 -3790
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.js +4 -1
- package/dist/cjs/src/abstract/hyperliquid.js +9 -0
- package/dist/cjs/src/ascendex.js +10 -12
- package/dist/cjs/src/base/Exchange.js +22 -1
- package/dist/cjs/src/base/functions/encode.js +5 -0
- package/dist/cjs/src/base/functions.js +1 -0
- package/dist/cjs/src/bingx.js +38 -0
- package/dist/cjs/src/bitfinex2.js +20 -3
- package/dist/cjs/src/bitget.js +9 -2
- package/dist/cjs/src/bitmart.js +41 -23
- package/dist/cjs/src/blofin.js +59 -1
- package/dist/cjs/src/coinbase.js +108 -103
- package/dist/cjs/src/coinex.js +61 -1
- package/dist/cjs/src/hitbtc.js +1 -1
- package/dist/cjs/src/htx.js +4 -1
- package/dist/cjs/src/hyperliquid.js +2035 -0
- package/dist/cjs/src/kraken.js +50 -41
- package/dist/cjs/src/krakenfutures.js +28 -0
- package/dist/cjs/src/kucoinfutures.js +3 -2
- package/dist/cjs/src/okx.js +1 -1
- package/dist/cjs/src/phemex.js +2 -2
- package/dist/cjs/src/pro/binance.js +16 -3
- package/dist/cjs/src/pro/bingx.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +158 -0
- package/dist/cjs/src/static_dependencies/ethers/address/address.js +144 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +407 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/address.js +45 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +28 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/array.js +176 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +27 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +52 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +45 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/null.js +30 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/number.js +60 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/string.js +27 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +68 -0
- package/dist/cjs/src/static_dependencies/ethers/fragments.js +614 -0
- package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +492 -0
- package/dist/cjs/src/static_dependencies/ethers/index.js +35 -0
- package/dist/cjs/src/static_dependencies/ethers/interface.js +44 -0
- package/dist/cjs/src/static_dependencies/ethers/typed.js +618 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +20 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/data.js +134 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +228 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/events.js +13 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +29 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/index.js +53 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +231 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +47 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +218 -0
- package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +292 -0
- package/dist/cjs/src/tokocrypto.js +22 -2
- package/dist/cjs/src/wazirx.js +314 -4
- package/dist/cjs/src/woo.js +157 -77
- package/js/ccxt.d.ts +5 -2
- package/js/ccxt.js +4 -2
- package/js/src/abstract/blofin.d.ts +1 -0
- package/js/src/abstract/coinbase.d.ts +3 -3
- package/js/src/abstract/hyperliquid.d.ts +9 -0
- package/js/src/abstract/hyperliquid.js +11 -0
- package/js/src/abstract/wazirx.d.ts +5 -0
- package/js/src/ascendex.d.ts +2 -2
- package/js/src/ascendex.js +10 -12
- package/js/src/base/Exchange.d.ts +4 -0
- package/js/src/base/Exchange.js +13 -1
- package/js/src/base/functions/encode.d.ts +2 -1
- package/js/src/base/functions/encode.js +5 -1
- package/js/src/bingx.d.ts +3 -1
- package/js/src/bingx.js +38 -0
- package/js/src/bitfinex2.js +20 -3
- package/js/src/bitget.js +9 -2
- package/js/src/bitmart.d.ts +9 -2
- package/js/src/bitmart.js +41 -23
- package/js/src/blofin.d.ts +2 -1
- package/js/src/blofin.js +59 -1
- package/js/src/coinbase.js +108 -103
- package/js/src/coinex.d.ts +3 -1
- package/js/src/coinex.js +61 -1
- package/js/src/hitbtc.js +1 -1
- package/js/src/htx.js +4 -1
- package/js/src/hyperliquid.d.ts +83 -0
- package/js/src/hyperliquid.js +2036 -0
- package/js/src/kraken.js +50 -41
- package/js/src/krakenfutures.d.ts +2 -1
- package/js/src/krakenfutures.js +28 -0
- package/js/src/kucoinfutures.js +3 -2
- package/js/src/okx.js +1 -1
- package/js/src/phemex.js +2 -2
- package/js/src/pro/binance.js +16 -3
- package/js/src/pro/bingx.js +1 -0
- package/js/src/pro/deribit.d.ts +1 -1
- package/js/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
- package/js/src/static_dependencies/ethers/abi-coder.js +148 -0
- package/js/src/static_dependencies/ethers/address/address.d.ts +55 -0
- package/js/src/static_dependencies/ethers/address/address.js +162 -0
- package/js/src/static_dependencies/ethers/address/checks.d.ts +80 -0
- package/js/src/static_dependencies/ethers/address/checks.js +119 -0
- package/js/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
- package/js/src/static_dependencies/ethers/address/contract-address.js +73 -0
- package/js/src/static_dependencies/ethers/address/index.d.ts +48 -0
- package/js/src/static_dependencies/ethers/address/index.js +24 -0
- package/js/src/static_dependencies/ethers/bytes32.d.ts +14 -0
- package/js/src/static_dependencies/ethers/bytes32.js +45 -0
- package/js/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
- package/js/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
- package/js/src/static_dependencies/ethers/coders/address.d.ts +12 -0
- package/js/src/static_dependencies/ethers/coders/address.js +34 -0
- package/js/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
- package/js/src/static_dependencies/ethers/coders/anonymous.js +27 -0
- package/js/src/static_dependencies/ethers/coders/array.d.ts +24 -0
- package/js/src/static_dependencies/ethers/coders/array.js +162 -0
- package/js/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
- package/js/src/static_dependencies/ethers/coders/boolean.js +26 -0
- package/js/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
- package/js/src/static_dependencies/ethers/coders/bytes.js +39 -0
- package/js/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
- package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
- package/js/src/static_dependencies/ethers/coders/null.d.ts +11 -0
- package/js/src/static_dependencies/ethers/coders/null.js +29 -0
- package/js/src/static_dependencies/ethers/coders/number.d.ts +15 -0
- package/js/src/static_dependencies/ethers/coders/number.js +48 -0
- package/js/src/static_dependencies/ethers/coders/string.d.ts +12 -0
- package/js/src/static_dependencies/ethers/coders/string.js +26 -0
- package/js/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
- package/js/src/static_dependencies/ethers/coders/tuple.js +67 -0
- package/js/src/static_dependencies/ethers/fragments.d.ts +458 -0
- package/js/src/static_dependencies/ethers/fragments.js +1252 -0
- package/js/src/static_dependencies/ethers/hash/index.d.ts +10 -0
- package/js/src/static_dependencies/ethers/hash/index.js +15 -0
- package/js/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
- package/js/src/static_dependencies/ethers/hash/solidity.js +107 -0
- package/js/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
- package/js/src/static_dependencies/ethers/hash/typed-data.js +490 -0
- package/js/src/static_dependencies/ethers/index.d.ts +19 -0
- package/js/src/static_dependencies/ethers/index.js +22 -0
- package/js/src/static_dependencies/ethers/interface.d.ts +380 -0
- package/js/src/static_dependencies/ethers/interface.js +990 -0
- package/js/src/static_dependencies/ethers/typed.d.ts +569 -0
- package/js/src/static_dependencies/ethers/typed.js +608 -0
- package/js/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
- package/js/src/static_dependencies/ethers/utils/base58.js +68 -0
- package/js/src/static_dependencies/ethers/utils/base64-browser.d.ts +3 -0
- package/js/src/static_dependencies/ethers/utils/base64-browser.js +24 -0
- package/js/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
- package/js/src/static_dependencies/ethers/utils/base64.js +58 -0
- package/js/src/static_dependencies/ethers/utils/data.d.ts +92 -0
- package/js/src/static_dependencies/ethers/utils/data.js +175 -0
- package/js/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
- package/js/src/static_dependencies/ethers/utils/errors.js +227 -0
- package/js/src/static_dependencies/ethers/utils/events.d.ts +76 -0
- package/js/src/static_dependencies/ethers/utils/events.js +52 -0
- package/js/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
- package/js/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
- package/js/src/static_dependencies/ethers/utils/index.d.ts +30 -0
- package/js/src/static_dependencies/ethers/utils/index.js +38 -0
- package/js/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
- package/js/src/static_dependencies/ethers/utils/maths.js +220 -0
- package/js/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
- package/js/src/static_dependencies/ethers/utils/properties.js +59 -0
- package/js/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
- package/js/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
- package/js/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
- package/js/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
- package/js/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
- package/js/src/static_dependencies/ethers/utils/rlp.js +14 -0
- package/js/src/static_dependencies/ethers/utils/units.d.ts +23 -0
- package/js/src/static_dependencies/ethers/utils/units.js +88 -0
- package/js/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
- package/js/src/static_dependencies/ethers/utils/utf8.js +225 -0
- package/js/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
- package/js/src/static_dependencies/ethers/utils/uuid.js +35 -0
- package/js/src/static_dependencies/messagepack/msgpack.d.ts +2 -0
- package/js/src/static_dependencies/messagepack/msgpack.js +572 -0
- package/js/src/tokocrypto.js +22 -2
- package/js/src/wazirx.d.ts +12 -1
- package/js/src/wazirx.js +314 -4
- package/js/src/woo.d.ts +8 -0
- package/js/src/woo.js +157 -77
- package/package.json +1 -1
- package/skip-tests.json +60 -16
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
|
|
3
|
+
// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
|
|
4
|
+
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
|
5
|
+
// EDIT THE CORRESPONDENT .ts FILE INSTEAD
|
|
6
|
+
|
|
7
|
+
// (function () {
|
|
8
|
+
// "use strict";
|
|
9
|
+
// Serializes a value to a MessagePack byte array.
|
|
10
|
+
//
|
|
11
|
+
// data: The value to serialize. This can be a scalar, array or object.
|
|
12
|
+
// options: An object that defines additional options.
|
|
13
|
+
// - multiple: (boolean) Indicates whether multiple values in data are concatenated to multiple MessagePack arrays. Default: false.
|
|
14
|
+
// - invalidTypeReplacement:
|
|
15
|
+
// (any) The value that is used to replace values of unsupported types.
|
|
16
|
+
// (function) A function that returns such a value, given the original value as parameter.
|
|
17
|
+
function serialize(data, options) {
|
|
18
|
+
if (options && options.multiple && !Array.isArray(data)) {
|
|
19
|
+
throw new Error("Invalid argument type: Expected an Array to serialize multiple values.");
|
|
20
|
+
}
|
|
21
|
+
const pow32 = 0x100000000; // 2^32
|
|
22
|
+
let floatBuffer, floatView;
|
|
23
|
+
let array = new Uint8Array(128);
|
|
24
|
+
let length = 0;
|
|
25
|
+
if (options && options.multiple) {
|
|
26
|
+
for (let i = 0; i < data.length; i++) {
|
|
27
|
+
append(data[i]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
append(data);
|
|
32
|
+
}
|
|
33
|
+
return array.subarray(0, length);
|
|
34
|
+
function append(data, isReplacement) {
|
|
35
|
+
switch (typeof data) {
|
|
36
|
+
case "undefined":
|
|
37
|
+
appendNull(data);
|
|
38
|
+
break;
|
|
39
|
+
case "boolean":
|
|
40
|
+
appendBoolean(data);
|
|
41
|
+
break;
|
|
42
|
+
case "number":
|
|
43
|
+
appendNumber(data);
|
|
44
|
+
break;
|
|
45
|
+
case "string":
|
|
46
|
+
appendString(data);
|
|
47
|
+
break;
|
|
48
|
+
case "object":
|
|
49
|
+
if (data === null)
|
|
50
|
+
appendNull(data);
|
|
51
|
+
else if (data instanceof Date)
|
|
52
|
+
appendDate(data);
|
|
53
|
+
else if (Array.isArray(data))
|
|
54
|
+
appendArray(data);
|
|
55
|
+
else if (data instanceof Uint8Array || data instanceof Uint8ClampedArray)
|
|
56
|
+
appendBinArray(data);
|
|
57
|
+
else if (data instanceof Int8Array || data instanceof Int16Array || data instanceof Uint16Array ||
|
|
58
|
+
data instanceof Int32Array || data instanceof Uint32Array ||
|
|
59
|
+
data instanceof Float32Array || data instanceof Float64Array)
|
|
60
|
+
appendArray(data);
|
|
61
|
+
else
|
|
62
|
+
appendObject(data);
|
|
63
|
+
break;
|
|
64
|
+
default:
|
|
65
|
+
if (!isReplacement && options && options.invalidTypeReplacement) {
|
|
66
|
+
if (typeof options.invalidTypeReplacement === "function")
|
|
67
|
+
append(options.invalidTypeReplacement(data), true);
|
|
68
|
+
else
|
|
69
|
+
append(options.invalidTypeReplacement, true);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
throw new Error("Invalid argument type: The type '" + (typeof data) + "' cannot be serialized.");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function appendNull(data) {
|
|
77
|
+
appendByte(0xc0);
|
|
78
|
+
}
|
|
79
|
+
function appendBoolean(data) {
|
|
80
|
+
appendByte(data ? 0xc3 : 0xc2);
|
|
81
|
+
}
|
|
82
|
+
function appendNumber(data) {
|
|
83
|
+
if (isFinite(data) && Math.floor(data) === data) {
|
|
84
|
+
// Integer
|
|
85
|
+
if (data >= 0 && data <= 0x7f) {
|
|
86
|
+
appendByte(data);
|
|
87
|
+
}
|
|
88
|
+
else if (data < 0 && data >= -0x20) {
|
|
89
|
+
appendByte(data);
|
|
90
|
+
}
|
|
91
|
+
else if (data > 0 && data <= 0xff) { // uint8
|
|
92
|
+
appendBytes([0xcc, data]);
|
|
93
|
+
}
|
|
94
|
+
else if (data >= -0x80 && data <= 0x7f) { // int8
|
|
95
|
+
appendBytes([0xd0, data]);
|
|
96
|
+
}
|
|
97
|
+
else if (data > 0 && data <= 0xffff) { // uint16
|
|
98
|
+
appendBytes([0xcd, data >>> 8, data]);
|
|
99
|
+
}
|
|
100
|
+
else if (data >= -0x8000 && data <= 0x7fff) { // int16
|
|
101
|
+
appendBytes([0xd1, data >>> 8, data]);
|
|
102
|
+
}
|
|
103
|
+
else if (data > 0 && data <= 0xffffffff) { // uint32
|
|
104
|
+
appendBytes([0xce, data >>> 24, data >>> 16, data >>> 8, data]);
|
|
105
|
+
}
|
|
106
|
+
else if (data >= -0x80000000 && data <= 0x7fffffff) { // int32
|
|
107
|
+
appendBytes([0xd2, data >>> 24, data >>> 16, data >>> 8, data]);
|
|
108
|
+
}
|
|
109
|
+
else if (data > 0 && data <= 0xffffffffffffffff) { // uint64
|
|
110
|
+
// Split 64 bit number into two 32 bit numbers because JavaScript only regards
|
|
111
|
+
// 32 bits for bitwise operations.
|
|
112
|
+
let hi = data / pow32;
|
|
113
|
+
let lo = data % pow32;
|
|
114
|
+
appendBytes([0xcf, hi >>> 24, hi >>> 16, hi >>> 8, hi, lo >>> 24, lo >>> 16, lo >>> 8, lo]);
|
|
115
|
+
}
|
|
116
|
+
else if (data >= -0x8000000000000000 && data <= 0x7fffffffffffffff) { // int64
|
|
117
|
+
appendByte(0xd3);
|
|
118
|
+
appendInt64(data);
|
|
119
|
+
}
|
|
120
|
+
else if (data < 0) { // below int64
|
|
121
|
+
appendBytes([0xd3, 0x80, 0, 0, 0, 0, 0, 0, 0]);
|
|
122
|
+
}
|
|
123
|
+
else { // above uint64
|
|
124
|
+
appendBytes([0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Float
|
|
129
|
+
if (!floatView) {
|
|
130
|
+
floatBuffer = new ArrayBuffer(8);
|
|
131
|
+
floatView = new DataView(floatBuffer);
|
|
132
|
+
}
|
|
133
|
+
floatView.setFloat64(0, data);
|
|
134
|
+
appendByte(0xcb);
|
|
135
|
+
appendBytes(new Uint8Array(floatBuffer));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function appendString(data) {
|
|
139
|
+
let bytes = encodeUtf8(data);
|
|
140
|
+
let length = bytes.length;
|
|
141
|
+
if (length <= 0x1f)
|
|
142
|
+
appendByte(0xa0 + length);
|
|
143
|
+
else if (length <= 0xff)
|
|
144
|
+
appendBytes([0xd9, length]);
|
|
145
|
+
else if (length <= 0xffff)
|
|
146
|
+
appendBytes([0xda, length >>> 8, length]);
|
|
147
|
+
else
|
|
148
|
+
appendBytes([0xdb, length >>> 24, length >>> 16, length >>> 8, length]);
|
|
149
|
+
appendBytes(bytes);
|
|
150
|
+
}
|
|
151
|
+
function appendArray(data) {
|
|
152
|
+
let length = data.length;
|
|
153
|
+
if (length <= 0xf)
|
|
154
|
+
appendByte(0x90 + length);
|
|
155
|
+
else if (length <= 0xffff)
|
|
156
|
+
appendBytes([0xdc, length >>> 8, length]);
|
|
157
|
+
else
|
|
158
|
+
appendBytes([0xdd, length >>> 24, length >>> 16, length >>> 8, length]);
|
|
159
|
+
for (let index = 0; index < length; index++) {
|
|
160
|
+
append(data[index]);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function appendBinArray(data) {
|
|
164
|
+
let length = data.length;
|
|
165
|
+
if (length <= 0xf)
|
|
166
|
+
appendBytes([0xc4, length]);
|
|
167
|
+
else if (length <= 0xffff)
|
|
168
|
+
appendBytes([0xc5, length >>> 8, length]);
|
|
169
|
+
else
|
|
170
|
+
appendBytes([0xc6, length >>> 24, length >>> 16, length >>> 8, length]);
|
|
171
|
+
appendBytes(data);
|
|
172
|
+
}
|
|
173
|
+
function appendObject(data) {
|
|
174
|
+
let length = 0;
|
|
175
|
+
for (let key in data) {
|
|
176
|
+
if (data[key] !== undefined) {
|
|
177
|
+
length++;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (length <= 0xf)
|
|
181
|
+
appendByte(0x80 + length);
|
|
182
|
+
else if (length <= 0xffff)
|
|
183
|
+
appendBytes([0xde, length >>> 8, length]);
|
|
184
|
+
else
|
|
185
|
+
appendBytes([0xdf, length >>> 24, length >>> 16, length >>> 8, length]);
|
|
186
|
+
for (let key in data) {
|
|
187
|
+
let value = data[key];
|
|
188
|
+
if (value !== undefined) {
|
|
189
|
+
append(key);
|
|
190
|
+
append(value);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function appendDate(data) {
|
|
195
|
+
let sec = data.getTime() / 1000;
|
|
196
|
+
if (data.getMilliseconds() === 0 && sec >= 0 && sec < 0x100000000) { // 32 bit seconds
|
|
197
|
+
appendBytes([0xd6, 0xff, sec >>> 24, sec >>> 16, sec >>> 8, sec]);
|
|
198
|
+
}
|
|
199
|
+
else if (sec >= 0 && sec < 0x400000000) { // 30 bit nanoseconds, 34 bit seconds
|
|
200
|
+
let ns = data.getMilliseconds() * 1000000;
|
|
201
|
+
appendBytes([0xd7, 0xff, ns >>> 22, ns >>> 14, ns >>> 6, ((ns << 2) >>> 0) | (sec / pow32), sec >>> 24, sec >>> 16, sec >>> 8, sec]);
|
|
202
|
+
}
|
|
203
|
+
else { // 32 bit nanoseconds, 64 bit seconds, negative values allowed
|
|
204
|
+
let ns = data.getMilliseconds() * 1000000;
|
|
205
|
+
appendBytes([0xc7, 12, 0xff, ns >>> 24, ns >>> 16, ns >>> 8, ns]);
|
|
206
|
+
appendInt64(sec);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function appendByte(byte) {
|
|
210
|
+
if (array.length < length + 1) {
|
|
211
|
+
let newLength = array.length * 2;
|
|
212
|
+
while (newLength < length + 1)
|
|
213
|
+
newLength *= 2;
|
|
214
|
+
let newArray = new Uint8Array(newLength);
|
|
215
|
+
newArray.set(array);
|
|
216
|
+
array = newArray;
|
|
217
|
+
}
|
|
218
|
+
array[length] = byte;
|
|
219
|
+
length++;
|
|
220
|
+
}
|
|
221
|
+
function appendBytes(bytes) {
|
|
222
|
+
if (array.length < length + bytes.length) {
|
|
223
|
+
let newLength = array.length * 2;
|
|
224
|
+
while (newLength < length + bytes.length)
|
|
225
|
+
newLength *= 2;
|
|
226
|
+
let newArray = new Uint8Array(newLength);
|
|
227
|
+
newArray.set(array);
|
|
228
|
+
array = newArray;
|
|
229
|
+
}
|
|
230
|
+
array.set(bytes, length);
|
|
231
|
+
length += bytes.length;
|
|
232
|
+
}
|
|
233
|
+
function appendInt64(value) {
|
|
234
|
+
// Split 64 bit number into two 32 bit numbers because JavaScript only regards 32 bits for
|
|
235
|
+
// bitwise operations.
|
|
236
|
+
let hi, lo;
|
|
237
|
+
if (value >= 0) {
|
|
238
|
+
// Same as uint64
|
|
239
|
+
hi = value / pow32;
|
|
240
|
+
lo = value % pow32;
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
// Split absolute value to high and low, then NOT and ADD(1) to restore negativity
|
|
244
|
+
value++;
|
|
245
|
+
hi = Math.abs(value) / pow32;
|
|
246
|
+
lo = Math.abs(value) % pow32;
|
|
247
|
+
hi = ~hi;
|
|
248
|
+
lo = ~lo;
|
|
249
|
+
}
|
|
250
|
+
appendBytes([hi >>> 24, hi >>> 16, hi >>> 8, hi, lo >>> 24, lo >>> 16, lo >>> 8, lo]);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Deserializes a MessagePack byte array to a value.
|
|
254
|
+
//
|
|
255
|
+
// array: The MessagePack byte array to deserialize. This must be an Array or Uint8Array containing bytes, not a string.
|
|
256
|
+
// options: An object that defines additional options.
|
|
257
|
+
// - multiple: (boolean) Indicates whether multiple concatenated MessagePack arrays are returned as an array. Default: false.
|
|
258
|
+
function deserialize(array, options) {
|
|
259
|
+
const pow32 = 0x100000000; // 2^32
|
|
260
|
+
let pos = 0;
|
|
261
|
+
if (array instanceof ArrayBuffer) {
|
|
262
|
+
array = new Uint8Array(array);
|
|
263
|
+
}
|
|
264
|
+
if (typeof array !== "object" || typeof array.length === "undefined") {
|
|
265
|
+
throw new Error("Invalid argument type: Expected a byte array (Array or Uint8Array) to deserialize.");
|
|
266
|
+
}
|
|
267
|
+
if (!array.length) {
|
|
268
|
+
throw new Error("Invalid argument: The byte array to deserialize is empty.");
|
|
269
|
+
}
|
|
270
|
+
if (!(array instanceof Uint8Array)) {
|
|
271
|
+
array = new Uint8Array(array);
|
|
272
|
+
}
|
|
273
|
+
let data;
|
|
274
|
+
if (options && options.multiple) {
|
|
275
|
+
// Read as many messages as are available
|
|
276
|
+
data = [];
|
|
277
|
+
while (pos < array.length) {
|
|
278
|
+
data.push(read());
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
// Read only one message and ignore additional data
|
|
283
|
+
data = read();
|
|
284
|
+
}
|
|
285
|
+
return data;
|
|
286
|
+
function read() {
|
|
287
|
+
const byte = array[pos++];
|
|
288
|
+
if (byte >= 0x00 && byte <= 0x7f)
|
|
289
|
+
return byte; // positive fixint
|
|
290
|
+
if (byte >= 0x80 && byte <= 0x8f)
|
|
291
|
+
return readMap(byte - 0x80); // fixmap
|
|
292
|
+
if (byte >= 0x90 && byte <= 0x9f)
|
|
293
|
+
return readArray(byte - 0x90); // fixarray
|
|
294
|
+
if (byte >= 0xa0 && byte <= 0xbf)
|
|
295
|
+
return readStr(byte - 0xa0); // fixstr
|
|
296
|
+
if (byte === 0xc0)
|
|
297
|
+
return null; // nil
|
|
298
|
+
if (byte === 0xc1)
|
|
299
|
+
throw new Error("Invalid byte code 0xc1 found."); // never used
|
|
300
|
+
if (byte === 0xc2)
|
|
301
|
+
return false; // false
|
|
302
|
+
if (byte === 0xc3)
|
|
303
|
+
return true; // true
|
|
304
|
+
if (byte === 0xc4)
|
|
305
|
+
return readBin(-1, 1); // bin 8
|
|
306
|
+
if (byte === 0xc5)
|
|
307
|
+
return readBin(-1, 2); // bin 16
|
|
308
|
+
if (byte === 0xc6)
|
|
309
|
+
return readBin(-1, 4); // bin 32
|
|
310
|
+
if (byte === 0xc7)
|
|
311
|
+
return readExt(-1, 1); // ext 8
|
|
312
|
+
if (byte === 0xc8)
|
|
313
|
+
return readExt(-1, 2); // ext 16
|
|
314
|
+
if (byte === 0xc9)
|
|
315
|
+
return readExt(-1, 4); // ext 32
|
|
316
|
+
if (byte === 0xca)
|
|
317
|
+
return readFloat(4); // float 32
|
|
318
|
+
if (byte === 0xcb)
|
|
319
|
+
return readFloat(8); // float 64
|
|
320
|
+
if (byte === 0xcc)
|
|
321
|
+
return readUInt(1); // uint 8
|
|
322
|
+
if (byte === 0xcd)
|
|
323
|
+
return readUInt(2); // uint 16
|
|
324
|
+
if (byte === 0xce)
|
|
325
|
+
return readUInt(4); // uint 32
|
|
326
|
+
if (byte === 0xcf)
|
|
327
|
+
return readUInt(8); // uint 64
|
|
328
|
+
if (byte === 0xd0)
|
|
329
|
+
return readInt(1); // int 8
|
|
330
|
+
if (byte === 0xd1)
|
|
331
|
+
return readInt(2); // int 16
|
|
332
|
+
if (byte === 0xd2)
|
|
333
|
+
return readInt(4); // int 32
|
|
334
|
+
if (byte === 0xd3)
|
|
335
|
+
return readInt(8); // int 64
|
|
336
|
+
if (byte === 0xd4)
|
|
337
|
+
return readExt(1); // fixext 1
|
|
338
|
+
if (byte === 0xd5)
|
|
339
|
+
return readExt(2); // fixext 2
|
|
340
|
+
if (byte === 0xd6)
|
|
341
|
+
return readExt(4); // fixext 4
|
|
342
|
+
if (byte === 0xd7)
|
|
343
|
+
return readExt(8); // fixext 8
|
|
344
|
+
if (byte === 0xd8)
|
|
345
|
+
return readExt(16); // fixext 16
|
|
346
|
+
if (byte === 0xd9)
|
|
347
|
+
return readStr(-1, 1); // str 8
|
|
348
|
+
if (byte === 0xda)
|
|
349
|
+
return readStr(-1, 2); // str 16
|
|
350
|
+
if (byte === 0xdb)
|
|
351
|
+
return readStr(-1, 4); // str 32
|
|
352
|
+
if (byte === 0xdc)
|
|
353
|
+
return readArray(-1, 2); // array 16
|
|
354
|
+
if (byte === 0xdd)
|
|
355
|
+
return readArray(-1, 4); // array 32
|
|
356
|
+
if (byte === 0xde)
|
|
357
|
+
return readMap(-1, 2); // map 16
|
|
358
|
+
if (byte === 0xdf)
|
|
359
|
+
return readMap(-1, 4); // map 32
|
|
360
|
+
if (byte >= 0xe0 && byte <= 0xff)
|
|
361
|
+
return byte - 256; // negative fixint
|
|
362
|
+
console.debug("msgpack array:", array);
|
|
363
|
+
throw new Error("Invalid byte value '" + byte + "' at index " + (pos - 1) + " in the MessagePack binary data (length " + array.length + "): Expecting a range of 0 to 255. This is not a byte array.");
|
|
364
|
+
}
|
|
365
|
+
function readInt(size) {
|
|
366
|
+
let value = 0;
|
|
367
|
+
let first = true;
|
|
368
|
+
while (size-- > 0) {
|
|
369
|
+
if (first) {
|
|
370
|
+
let byte = array[pos++];
|
|
371
|
+
value += byte & 0x7f;
|
|
372
|
+
if (byte & 0x80) {
|
|
373
|
+
value -= 0x80; // Treat most-significant bit as -2^i instead of 2^i
|
|
374
|
+
}
|
|
375
|
+
first = false;
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
value *= 256;
|
|
379
|
+
value += array[pos++];
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return value;
|
|
383
|
+
}
|
|
384
|
+
function readUInt(size) {
|
|
385
|
+
let value = 0;
|
|
386
|
+
while (size-- > 0) {
|
|
387
|
+
value *= 256;
|
|
388
|
+
value += array[pos++];
|
|
389
|
+
}
|
|
390
|
+
return value;
|
|
391
|
+
}
|
|
392
|
+
function readFloat(size) {
|
|
393
|
+
let view = new DataView(array.buffer, pos + array.byteOffset, size);
|
|
394
|
+
pos += size;
|
|
395
|
+
if (size === 4)
|
|
396
|
+
return view.getFloat32(0, false);
|
|
397
|
+
if (size === 8)
|
|
398
|
+
return view.getFloat64(0, false);
|
|
399
|
+
}
|
|
400
|
+
function readBin(size, lengthSize) {
|
|
401
|
+
if (size < 0)
|
|
402
|
+
size = readUInt(lengthSize);
|
|
403
|
+
let data = array.subarray(pos, pos + size);
|
|
404
|
+
pos += size;
|
|
405
|
+
return data;
|
|
406
|
+
}
|
|
407
|
+
function readMap(size, lengthSize) {
|
|
408
|
+
if (size < 0)
|
|
409
|
+
size = readUInt(lengthSize);
|
|
410
|
+
let data = {};
|
|
411
|
+
while (size-- > 0) {
|
|
412
|
+
let key = read();
|
|
413
|
+
data[key] = read();
|
|
414
|
+
}
|
|
415
|
+
return data;
|
|
416
|
+
}
|
|
417
|
+
function readArray(size, lengthSize) {
|
|
418
|
+
if (size < 0)
|
|
419
|
+
size = readUInt(lengthSize);
|
|
420
|
+
let data = [];
|
|
421
|
+
while (size-- > 0) {
|
|
422
|
+
data.push(read());
|
|
423
|
+
}
|
|
424
|
+
return data;
|
|
425
|
+
}
|
|
426
|
+
function readStr(size, lengthSize) {
|
|
427
|
+
if (size < 0)
|
|
428
|
+
size = readUInt(lengthSize);
|
|
429
|
+
let start = pos;
|
|
430
|
+
pos += size;
|
|
431
|
+
return decodeUtf8(array, start, size);
|
|
432
|
+
}
|
|
433
|
+
function readExt(size, lengthSize) {
|
|
434
|
+
if (size < 0)
|
|
435
|
+
size = readUInt(lengthSize);
|
|
436
|
+
let type = readUInt(1);
|
|
437
|
+
let data = readBin(size);
|
|
438
|
+
switch (type) {
|
|
439
|
+
case 255:
|
|
440
|
+
return readExtDate(data);
|
|
441
|
+
}
|
|
442
|
+
return { type: type, data: data };
|
|
443
|
+
}
|
|
444
|
+
function readExtDate(data) {
|
|
445
|
+
if (data.length === 4) {
|
|
446
|
+
let sec = ((data[0] << 24) >>> 0) +
|
|
447
|
+
((data[1] << 16) >>> 0) +
|
|
448
|
+
((data[2] << 8) >>> 0) +
|
|
449
|
+
data[3];
|
|
450
|
+
return new Date(sec * 1000);
|
|
451
|
+
}
|
|
452
|
+
if (data.length === 8) {
|
|
453
|
+
let ns = ((data[0] << 22) >>> 0) +
|
|
454
|
+
((data[1] << 14) >>> 0) +
|
|
455
|
+
((data[2] << 6) >>> 0) +
|
|
456
|
+
(data[3] >>> 2);
|
|
457
|
+
let sec = ((data[3] & 0x3) * pow32) +
|
|
458
|
+
((data[4] << 24) >>> 0) +
|
|
459
|
+
((data[5] << 16) >>> 0) +
|
|
460
|
+
((data[6] << 8) >>> 0) +
|
|
461
|
+
data[7];
|
|
462
|
+
return new Date(sec * 1000 + ns / 1000000);
|
|
463
|
+
}
|
|
464
|
+
if (data.length === 12) {
|
|
465
|
+
let ns = ((data[0] << 24) >>> 0) +
|
|
466
|
+
((data[1] << 16) >>> 0) +
|
|
467
|
+
((data[2] << 8) >>> 0) +
|
|
468
|
+
data[3];
|
|
469
|
+
pos -= 8;
|
|
470
|
+
let sec = readInt(8);
|
|
471
|
+
return new Date(sec * 1000 + ns / 1000000);
|
|
472
|
+
}
|
|
473
|
+
throw new Error("Invalid data length for a date value.");
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
// Encodes a string to UTF-8 bytes.
|
|
477
|
+
function encodeUtf8(str) {
|
|
478
|
+
// Prevent excessive array allocation and slicing for all 7-bit characters
|
|
479
|
+
let ascii = true, length = str.length;
|
|
480
|
+
for (let x = 0; x < length; x++) {
|
|
481
|
+
if (str.charCodeAt(x) > 127) {
|
|
482
|
+
ascii = false;
|
|
483
|
+
break;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
// Based on: https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330
|
|
487
|
+
let i = 0, bytes = new Uint8Array(str.length * (ascii ? 1 : 4));
|
|
488
|
+
for (let ci = 0; ci !== length; ci++) {
|
|
489
|
+
let c = str.charCodeAt(ci);
|
|
490
|
+
if (c < 128) {
|
|
491
|
+
bytes[i++] = c;
|
|
492
|
+
continue;
|
|
493
|
+
}
|
|
494
|
+
if (c < 2048) {
|
|
495
|
+
bytes[i++] = c >> 6 | 192;
|
|
496
|
+
}
|
|
497
|
+
else {
|
|
498
|
+
if (c > 0xd7ff && c < 0xdc00) {
|
|
499
|
+
if (++ci >= length)
|
|
500
|
+
throw new Error("UTF-8 encode: incomplete surrogate pair");
|
|
501
|
+
let c2 = str.charCodeAt(ci);
|
|
502
|
+
if (c2 < 0xdc00 || c2 > 0xdfff)
|
|
503
|
+
throw new Error("UTF-8 encode: second surrogate character 0x" + c2.toString(16) + " at index " + ci + " out of range");
|
|
504
|
+
c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);
|
|
505
|
+
bytes[i++] = c >> 18 | 240;
|
|
506
|
+
bytes[i++] = c >> 12 & 63 | 128;
|
|
507
|
+
}
|
|
508
|
+
else
|
|
509
|
+
bytes[i++] = c >> 12 | 224;
|
|
510
|
+
bytes[i++] = c >> 6 & 63 | 128;
|
|
511
|
+
}
|
|
512
|
+
bytes[i++] = c & 63 | 128;
|
|
513
|
+
}
|
|
514
|
+
return ascii ? bytes : bytes.subarray(0, i);
|
|
515
|
+
}
|
|
516
|
+
// Decodes a string from UTF-8 bytes.
|
|
517
|
+
function decodeUtf8(bytes, start, length) {
|
|
518
|
+
// Based on: https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330
|
|
519
|
+
let i = start, str = "";
|
|
520
|
+
length += start;
|
|
521
|
+
while (i < length) {
|
|
522
|
+
let c = bytes[i++];
|
|
523
|
+
if (c > 127) {
|
|
524
|
+
if (c > 191 && c < 224) {
|
|
525
|
+
if (i >= length)
|
|
526
|
+
throw new Error("UTF-8 decode: incomplete 2-byte sequence");
|
|
527
|
+
c = (c & 31) << 6 | bytes[i++] & 63;
|
|
528
|
+
}
|
|
529
|
+
else if (c > 223 && c < 240) {
|
|
530
|
+
if (i + 1 >= length)
|
|
531
|
+
throw new Error("UTF-8 decode: incomplete 3-byte sequence");
|
|
532
|
+
c = (c & 15) << 12 | (bytes[i++] & 63) << 6 | bytes[i++] & 63;
|
|
533
|
+
}
|
|
534
|
+
else if (c > 239 && c < 248) {
|
|
535
|
+
if (i + 2 >= length)
|
|
536
|
+
throw new Error("UTF-8 decode: incomplete 4-byte sequence");
|
|
537
|
+
c = (c & 7) << 18 | (bytes[i++] & 63) << 12 | (bytes[i++] & 63) << 6 | bytes[i++] & 63;
|
|
538
|
+
}
|
|
539
|
+
else
|
|
540
|
+
throw new Error("UTF-8 decode: unknown multibyte start 0x" + c.toString(16) + " at index " + (i - 1));
|
|
541
|
+
}
|
|
542
|
+
if (c <= 0xffff)
|
|
543
|
+
str += String.fromCharCode(c);
|
|
544
|
+
else if (c <= 0x10ffff) {
|
|
545
|
+
c -= 0x10000;
|
|
546
|
+
str += String.fromCharCode(c >> 10 | 0xd800);
|
|
547
|
+
str += String.fromCharCode(c & 0x3FF | 0xdc00);
|
|
548
|
+
}
|
|
549
|
+
else
|
|
550
|
+
throw new Error("UTF-8 decode: code point 0x" + c.toString(16) + " exceeds UTF-16 reach");
|
|
551
|
+
}
|
|
552
|
+
return str;
|
|
553
|
+
}
|
|
554
|
+
// // The exported functions
|
|
555
|
+
// let msgpack = {
|
|
556
|
+
// serialize: serialize,
|
|
557
|
+
// deserialize: deserialize,
|
|
558
|
+
// // Compatibility with other libraries
|
|
559
|
+
// encode: serialize,
|
|
560
|
+
// decode: deserialize
|
|
561
|
+
// };
|
|
562
|
+
// // Environment detection
|
|
563
|
+
// if (typeof module === "object" && module && typeof module.exports === "object") {
|
|
564
|
+
// // Node.js
|
|
565
|
+
// module.exports = msgpack;
|
|
566
|
+
// }
|
|
567
|
+
// else {
|
|
568
|
+
// // Global object
|
|
569
|
+
// window[window.msgpackJsName || "msgpack"] = msgpack;
|
|
570
|
+
// }
|
|
571
|
+
// })();
|
|
572
|
+
export { serialize, deserialize };
|
package/js/src/tokocrypto.js
CHANGED
|
@@ -1019,8 +1019,28 @@ export default class tokocrypto extends Exchange {
|
|
|
1019
1019
|
request['limit'] = limit;
|
|
1020
1020
|
}
|
|
1021
1021
|
const responseInner = this.publicGetOpenV1MarketTrades(this.extend(request, params));
|
|
1022
|
-
|
|
1023
|
-
|
|
1022
|
+
//
|
|
1023
|
+
// {
|
|
1024
|
+
// "code": 0,
|
|
1025
|
+
// "msg": "success",
|
|
1026
|
+
// "data": {
|
|
1027
|
+
// "list": [
|
|
1028
|
+
// {
|
|
1029
|
+
// "id": 28457,
|
|
1030
|
+
// "price": "4.00000100",
|
|
1031
|
+
// "qty": "12.00000000",
|
|
1032
|
+
// "time": 1499865549590,
|
|
1033
|
+
// "isBuyerMaker": true,
|
|
1034
|
+
// "isBestMatch": true
|
|
1035
|
+
// }
|
|
1036
|
+
// ]
|
|
1037
|
+
// },
|
|
1038
|
+
// "timestamp": 1571921637091
|
|
1039
|
+
// }
|
|
1040
|
+
//
|
|
1041
|
+
const data = this.safeDict(responseInner, 'data', {});
|
|
1042
|
+
const list = this.safeList(data, 'list', []);
|
|
1043
|
+
return this.parseTrades(list, market, since, limit);
|
|
1024
1044
|
}
|
|
1025
1045
|
if (limit !== undefined) {
|
|
1026
1046
|
request['limit'] = limit; // default = 500, maximum = 1000
|
package/js/src/wazirx.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Exchange from './abstract/wazirx.js';
|
|
2
|
-
import type { Balances, Int, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade } from './base/types.js';
|
|
2
|
+
import type { Balances, Currency, Int, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction } from './base/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @class wazirx
|
|
5
5
|
* @augments Exchange
|
|
@@ -33,6 +33,17 @@ export default class wazirx extends Exchange {
|
|
|
33
33
|
createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
|
|
34
34
|
parseOrder(order: any, market?: Market): Order;
|
|
35
35
|
parseOrderStatus(status: any): string;
|
|
36
|
+
fetchCurrencies(params?: {}): Promise<{}>;
|
|
37
|
+
fetchDepositAddress(code: string, params?: {}): Promise<{
|
|
38
|
+
currency: string;
|
|
39
|
+
address: string;
|
|
40
|
+
tag: any;
|
|
41
|
+
network: string;
|
|
42
|
+
info: any;
|
|
43
|
+
}>;
|
|
44
|
+
fetchWithdrawals(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
|
|
45
|
+
parseTransactionStatus(status: any): string;
|
|
46
|
+
parseTransaction(transaction: any, currency?: Currency): Transaction;
|
|
36
47
|
sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
|
|
37
48
|
url: string;
|
|
38
49
|
method: string;
|