ccxt 4.2.60 → 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 +1 -1
- package/dist/ccxt.browser.js +107943 -100121
- 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/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/bitfinex2.js +1 -1
- package/dist/cjs/src/coinbase.js +108 -103
- package/dist/cjs/src/coinex.js +61 -1
- package/dist/cjs/src/hyperliquid.js +2035 -0
- package/dist/cjs/src/kraken.js +8 -2
- package/dist/cjs/src/krakenfutures.js +28 -0
- package/dist/cjs/src/kucoinfutures.js +2 -2
- package/dist/cjs/src/okx.js +1 -1
- package/dist/cjs/src/phemex.js +2 -2
- 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 +308 -3
- package/js/ccxt.d.ts +5 -2
- package/js/ccxt.js +4 -2
- 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/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/bitfinex2.js +1 -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/hyperliquid.d.ts +83 -0
- package/js/src/hyperliquid.js +2036 -0
- package/js/src/kraken.js +8 -2
- package/js/src/krakenfutures.d.ts +2 -1
- package/js/src/krakenfutures.js +28 -0
- package/js/src/kucoinfutures.js +2 -2
- package/js/src/okx.js +1 -1
- package/js/src/phemex.js +2 -2
- package/js/src/pro/bingx.js +1 -0
- 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 +308 -3
- package/package.json +1 -1
- package/skip-tests.json +18 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('../utils/base58.js');
|
|
6
|
+
var data = require('../utils/data.js');
|
|
7
|
+
require('../utils/errors.js');
|
|
8
|
+
require('../utils/events.js');
|
|
9
|
+
require('../utils/fixednumber.js');
|
|
10
|
+
require('../utils/maths.js');
|
|
11
|
+
require('../utils/utf8.js');
|
|
12
|
+
require('../../../base/functions/platform.js');
|
|
13
|
+
require('../../../base/functions/encode.js');
|
|
14
|
+
require('../../../base/functions/crypto.js');
|
|
15
|
+
require('../../noble-hashes/sha3.js');
|
|
16
|
+
require('../../noble-hashes/sha256.js');
|
|
17
|
+
var abstractCoder = require('./abstract-coder.js');
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @_ignore
|
|
21
|
+
*/
|
|
22
|
+
class DynamicBytesCoder extends abstractCoder.Coder {
|
|
23
|
+
constructor(type, localName) {
|
|
24
|
+
super(type, type, localName, true);
|
|
25
|
+
}
|
|
26
|
+
defaultValue() {
|
|
27
|
+
return "0x";
|
|
28
|
+
}
|
|
29
|
+
encode(writer, value) {
|
|
30
|
+
value = data.getBytesCopy(value);
|
|
31
|
+
let length = writer.writeValue(value.length);
|
|
32
|
+
length += writer.writeBytes(value);
|
|
33
|
+
return length;
|
|
34
|
+
}
|
|
35
|
+
decode(reader) {
|
|
36
|
+
return reader.readBytes(reader.readIndex(), true);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @_ignore
|
|
41
|
+
*/
|
|
42
|
+
class BytesCoder extends DynamicBytesCoder {
|
|
43
|
+
constructor(localName) {
|
|
44
|
+
super("bytes", localName);
|
|
45
|
+
}
|
|
46
|
+
decode(reader) {
|
|
47
|
+
return data.hexlify(super.decode(reader));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
exports.BytesCoder = BytesCoder;
|
|
52
|
+
exports.DynamicBytesCoder = DynamicBytesCoder;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('../utils/base58.js');
|
|
6
|
+
var data = require('../utils/data.js');
|
|
7
|
+
require('../utils/errors.js');
|
|
8
|
+
require('../utils/events.js');
|
|
9
|
+
require('../utils/fixednumber.js');
|
|
10
|
+
require('../utils/maths.js');
|
|
11
|
+
var properties = require('../utils/properties.js');
|
|
12
|
+
require('../utils/utf8.js');
|
|
13
|
+
require('../../../base/functions/platform.js');
|
|
14
|
+
require('../../../base/functions/encode.js');
|
|
15
|
+
require('../../../base/functions/crypto.js');
|
|
16
|
+
require('../../noble-hashes/sha3.js');
|
|
17
|
+
require('../../noble-hashes/sha256.js');
|
|
18
|
+
var typed = require('../typed.js');
|
|
19
|
+
var abstractCoder = require('./abstract-coder.js');
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @_ignore
|
|
23
|
+
*/
|
|
24
|
+
class FixedBytesCoder extends abstractCoder.Coder {
|
|
25
|
+
constructor(size, localName) {
|
|
26
|
+
let name = "bytes" + String(size);
|
|
27
|
+
super(name, name, localName, false);
|
|
28
|
+
properties.defineProperties(this, { size }, { size: "number" });
|
|
29
|
+
}
|
|
30
|
+
defaultValue() {
|
|
31
|
+
return ("0x0000000000000000000000000000000000000000000000000000000000000000").substring(0, 2 + this.size * 2);
|
|
32
|
+
}
|
|
33
|
+
encode(writer, _value) {
|
|
34
|
+
let data$1 = data.getBytesCopy(typed.Typed.dereference(_value, this.type));
|
|
35
|
+
if (data$1.length !== this.size) {
|
|
36
|
+
this._throwError("incorrect data length", _value);
|
|
37
|
+
}
|
|
38
|
+
return writer.writeBytes(data$1);
|
|
39
|
+
}
|
|
40
|
+
decode(reader) {
|
|
41
|
+
return data.hexlify(reader.readBytes(this.size));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
exports.FixedBytesCoder = FixedBytesCoder;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var abstractCoder = require('./abstract-coder.js');
|
|
6
|
+
|
|
7
|
+
const Empty = new Uint8Array([]);
|
|
8
|
+
/**
|
|
9
|
+
* @_ignore
|
|
10
|
+
*/
|
|
11
|
+
class NullCoder extends abstractCoder.Coder {
|
|
12
|
+
constructor(localName) {
|
|
13
|
+
super("null", "", localName, false);
|
|
14
|
+
}
|
|
15
|
+
defaultValue() {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
encode(writer, value) {
|
|
19
|
+
if (value != null) {
|
|
20
|
+
this._throwError("not null", value);
|
|
21
|
+
}
|
|
22
|
+
return writer.writeBytes(Empty);
|
|
23
|
+
}
|
|
24
|
+
decode(reader) {
|
|
25
|
+
reader.readBytes(0);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
exports.NullCoder = NullCoder;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('../utils/base58.js');
|
|
6
|
+
require('../utils/errors.js');
|
|
7
|
+
require('../utils/events.js');
|
|
8
|
+
require('../utils/fixednumber.js');
|
|
9
|
+
var maths = require('../utils/maths.js');
|
|
10
|
+
var properties = require('../utils/properties.js');
|
|
11
|
+
require('../utils/utf8.js');
|
|
12
|
+
require('../../../base/functions/platform.js');
|
|
13
|
+
require('../../../base/functions/encode.js');
|
|
14
|
+
require('../../../base/functions/crypto.js');
|
|
15
|
+
require('../../noble-hashes/sha3.js');
|
|
16
|
+
require('../../noble-hashes/sha256.js');
|
|
17
|
+
var typed = require('../typed.js');
|
|
18
|
+
var abstractCoder = require('./abstract-coder.js');
|
|
19
|
+
|
|
20
|
+
const BN_0 = BigInt(0);
|
|
21
|
+
const BN_1 = BigInt(1);
|
|
22
|
+
const BN_MAX_UINT256 = BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
|
23
|
+
/**
|
|
24
|
+
* @_ignore
|
|
25
|
+
*/
|
|
26
|
+
class NumberCoder extends abstractCoder.Coder {
|
|
27
|
+
constructor(size, signed, localName) {
|
|
28
|
+
const name = ((signed ? "int" : "uint") + (size * 8));
|
|
29
|
+
super(name, name, localName, false);
|
|
30
|
+
properties.defineProperties(this, { size, signed }, { size: "number", signed: "boolean" });
|
|
31
|
+
}
|
|
32
|
+
defaultValue() {
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
encode(writer, _value) {
|
|
36
|
+
let value = maths.getBigInt(typed.Typed.dereference(_value, this.type));
|
|
37
|
+
// Check bounds are safe for encoding
|
|
38
|
+
let maxUintValue = maths.mask(BN_MAX_UINT256, abstractCoder.WordSize * 8);
|
|
39
|
+
if (this.signed) {
|
|
40
|
+
let bounds = maths.mask(maxUintValue, (this.size * 8) - 1);
|
|
41
|
+
if (value > bounds || value < -(bounds + BN_1)) {
|
|
42
|
+
this._throwError("value out-of-bounds", _value);
|
|
43
|
+
}
|
|
44
|
+
value = maths.toTwos(value, 8 * abstractCoder.WordSize);
|
|
45
|
+
}
|
|
46
|
+
else if (value < BN_0 || value > maths.mask(maxUintValue, this.size * 8)) {
|
|
47
|
+
this._throwError("value out-of-bounds", _value);
|
|
48
|
+
}
|
|
49
|
+
return writer.writeValue(value);
|
|
50
|
+
}
|
|
51
|
+
decode(reader) {
|
|
52
|
+
let value = maths.mask(reader.readValue(), this.size * 8);
|
|
53
|
+
if (this.signed) {
|
|
54
|
+
value = maths.fromTwos(value, this.size * 8);
|
|
55
|
+
}
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
exports.NumberCoder = NumberCoder;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var utf8 = require('../utils/utf8.js');
|
|
6
|
+
var typed = require('../typed.js');
|
|
7
|
+
var bytes = require('./bytes.js');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @_ignore
|
|
11
|
+
*/
|
|
12
|
+
class StringCoder extends bytes.DynamicBytesCoder {
|
|
13
|
+
constructor(localName) {
|
|
14
|
+
super("string", localName);
|
|
15
|
+
}
|
|
16
|
+
defaultValue() {
|
|
17
|
+
return "";
|
|
18
|
+
}
|
|
19
|
+
encode(writer, _value) {
|
|
20
|
+
return super.encode(writer, utf8.toUtf8Bytes(typed.Typed.dereference(_value, "string")));
|
|
21
|
+
}
|
|
22
|
+
decode(reader) {
|
|
23
|
+
return utf8.toUtf8String(super.decode(reader));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
exports.StringCoder = StringCoder;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var properties = require('../utils/properties.js');
|
|
6
|
+
var typed = require('../typed.js');
|
|
7
|
+
var abstractCoder = require('./abstract-coder.js');
|
|
8
|
+
var array = require('./array.js');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @_ignore
|
|
12
|
+
*/
|
|
13
|
+
class TupleCoder extends abstractCoder.Coder {
|
|
14
|
+
constructor(coders, localName) {
|
|
15
|
+
let dynamic = false;
|
|
16
|
+
const types = [];
|
|
17
|
+
coders.forEach((coder) => {
|
|
18
|
+
if (coder.dynamic) {
|
|
19
|
+
dynamic = true;
|
|
20
|
+
}
|
|
21
|
+
types.push(coder.type);
|
|
22
|
+
});
|
|
23
|
+
const type = ("tuple(" + types.join(",") + ")");
|
|
24
|
+
super("tuple", type, localName, dynamic);
|
|
25
|
+
properties.defineProperties(this, { coders: Object.freeze(coders.slice()) });
|
|
26
|
+
}
|
|
27
|
+
defaultValue() {
|
|
28
|
+
const values = [];
|
|
29
|
+
this.coders.forEach((coder) => {
|
|
30
|
+
values.push(coder.defaultValue());
|
|
31
|
+
});
|
|
32
|
+
// We only output named properties for uniquely named coders
|
|
33
|
+
const uniqueNames = this.coders.reduce((accum, coder) => {
|
|
34
|
+
const name = coder.localName;
|
|
35
|
+
if (name) {
|
|
36
|
+
if (!accum[name]) {
|
|
37
|
+
accum[name] = 0;
|
|
38
|
+
}
|
|
39
|
+
accum[name]++;
|
|
40
|
+
}
|
|
41
|
+
return accum;
|
|
42
|
+
}, {});
|
|
43
|
+
// Add named values
|
|
44
|
+
this.coders.forEach((coder, index) => {
|
|
45
|
+
let name = coder.localName;
|
|
46
|
+
if (!name || uniqueNames[name] !== 1) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (name === "length") {
|
|
50
|
+
name = "_length";
|
|
51
|
+
}
|
|
52
|
+
if (values[name] != null) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
values[name] = values[index];
|
|
56
|
+
});
|
|
57
|
+
return Object.freeze(values);
|
|
58
|
+
}
|
|
59
|
+
encode(writer, _value) {
|
|
60
|
+
const value = typed.Typed.dereference(_value, "tuple");
|
|
61
|
+
return array.pack(writer, this.coders, value);
|
|
62
|
+
}
|
|
63
|
+
decode(reader) {
|
|
64
|
+
return array.unpack(reader, this.coders);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
exports.TupleCoder = TupleCoder;
|