@polkadot/types-codec 9.14.2 → 10.1.1
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/abstract/Array.d.ts +1 -1
- package/abstract/Array.js +136 -155
- package/abstract/Base.d.ts +1 -1
- package/abstract/Base.js +95 -113
- package/abstract/Int.d.ts +1 -1
- package/abstract/Int.js +209 -220
- package/abstract/Object.d.ts +1 -1
- package/abstract/Object.js +29 -45
- package/abstract/index.d.ts +3 -3
- package/abstract/index.js +3 -6
- package/base/Compact.d.ts +1 -1
- package/base/Compact.js +149 -166
- package/base/DoNotConstruct.d.ts +1 -1
- package/base/DoNotConstruct.js +62 -65
- package/base/Enum.d.ts +1 -1
- package/base/Enum.js +347 -383
- package/base/Int.d.ts +2 -2
- package/base/Int.js +14 -18
- package/base/Null.d.ts +1 -1
- package/base/Null.js +68 -82
- package/base/Option.d.ts +1 -1
- package/base/Option.js +217 -227
- package/base/Result.d.ts +2 -2
- package/base/Result.js +54 -67
- package/base/Tuple.d.ts +2 -2
- package/base/Tuple.js +100 -102
- package/base/UInt.d.ts +2 -2
- package/base/UInt.js +11 -15
- package/base/Vec.d.ts +2 -2
- package/base/Vec.js +88 -90
- package/base/VecAny.d.ts +2 -2
- package/base/VecAny.js +8 -12
- package/base/VecFixed.d.ts +2 -2
- package/base/VecFixed.js +63 -71
- package/base/index.d.ts +12 -12
- package/base/index.js +12 -15
- package/bundle.d.ts +7 -7
- package/bundle.js +7 -10
- package/cjs/abstract/Array.js +138 -159
- package/cjs/abstract/Base.js +96 -117
- package/cjs/abstract/Int.js +215 -238
- package/cjs/abstract/Object.js +30 -49
- package/cjs/abstract/index.js +8 -25
- package/cjs/base/Compact.js +151 -173
- package/cjs/base/DoNotConstruct.js +63 -70
- package/cjs/base/Enum.js +350 -396
- package/cjs/base/Int.js +16 -24
- package/cjs/base/Null.js +70 -86
- package/cjs/base/Option.js +220 -234
- package/cjs/base/Result.js +56 -71
- package/cjs/base/Tuple.js +103 -109
- package/cjs/base/UInt.js +13 -19
- package/cjs/base/Vec.js +94 -101
- package/cjs/base/VecAny.js +10 -16
- package/cjs/base/VecFixed.js +66 -79
- package/cjs/base/index.js +26 -88
- package/cjs/bundle.js +11 -86
- package/cjs/detectOther.js +2 -10
- package/cjs/detectPackage.js +6 -11
- package/cjs/extended/BTreeMap.js +10 -16
- package/cjs/extended/BTreeSet.js +162 -178
- package/cjs/extended/BitVec.js +70 -77
- package/cjs/extended/Bytes.js +59 -62
- package/cjs/extended/HashMap.js +10 -16
- package/cjs/extended/Linkage.js +50 -60
- package/cjs/extended/Map.js +176 -181
- package/cjs/extended/OptionBool.js +65 -68
- package/cjs/extended/Range.js +37 -46
- package/cjs/extended/RangeInclusive.js +13 -21
- package/cjs/extended/Type.js +14 -22
- package/cjs/extended/U8aFixed.js +33 -43
- package/cjs/extended/WrapperKeepOpaque.js +99 -99
- package/cjs/extended/WrapperOpaque.js +19 -28
- package/cjs/extended/index.js +31 -108
- package/cjs/index.js +4 -16
- package/cjs/native/Bool.js +101 -116
- package/cjs/native/Date.js +125 -151
- package/cjs/native/Float.js +95 -114
- package/cjs/native/Json.js +102 -124
- package/cjs/native/Raw.js +128 -150
- package/cjs/native/Set.js +200 -220
- package/cjs/native/Struct.data.js +2 -9
- package/cjs/native/Struct.js +238 -251
- package/cjs/native/Text.js +137 -149
- package/cjs/native/index.js +21 -78
- package/cjs/packageInfo.js +2 -16
- package/cjs/primitive/F32.js +8 -11
- package/cjs/primitive/F64.js +8 -11
- package/cjs/primitive/I128.js +8 -11
- package/cjs/primitive/I16.js +8 -11
- package/cjs/primitive/I256.js +8 -11
- package/cjs/primitive/I32.js +8 -11
- package/cjs/primitive/I64.js +8 -11
- package/cjs/primitive/I8.js +8 -11
- package/cjs/primitive/U128.js +8 -11
- package/cjs/primitive/U16.js +8 -11
- package/cjs/primitive/U256.js +8 -11
- package/cjs/primitive/U32.js +8 -11
- package/cjs/primitive/U64.js +8 -11
- package/cjs/primitive/U8.js +8 -11
- package/cjs/primitive/USize.js +7 -13
- package/cjs/primitive/index.js +47 -199
- package/cjs/types/codec.js +2 -1
- package/cjs/types/helpers.js +2 -1
- package/cjs/types/index.js +6 -48
- package/cjs/types/interfaces.js +2 -1
- package/cjs/types/registry.js +2 -1
- package/cjs/utils/compareArray.js +12 -17
- package/cjs/utils/compareMap.js +23 -26
- package/cjs/utils/compareSet.js +17 -23
- package/cjs/utils/decodeU8a.js +63 -74
- package/cjs/utils/index.js +24 -91
- package/cjs/utils/mapToTypeMap.js +13 -18
- package/cjs/utils/sanitize.js +198 -204
- package/cjs/utils/sortValues.js +39 -49
- package/cjs/utils/typeToConstructor.js +8 -11
- package/cjs/utils/typesToMap.js +10 -16
- package/cjs/utils/util.js +6 -11
- package/detectOther.js +0 -5
- package/detectPackage.js +2 -7
- package/extended/BTreeMap.d.ts +2 -2
- package/extended/BTreeMap.js +8 -11
- package/extended/BTreeSet.d.ts +1 -1
- package/extended/BTreeSet.js +159 -172
- package/extended/BitVec.d.ts +2 -2
- package/extended/BitVec.js +67 -71
- package/extended/Bytes.d.ts +2 -2
- package/extended/Bytes.js +56 -57
- package/extended/HashMap.d.ts +2 -2
- package/extended/HashMap.js +8 -11
- package/extended/Linkage.d.ts +4 -4
- package/extended/Linkage.js +46 -51
- package/extended/Map.d.ts +1 -1
- package/extended/Map.js +173 -174
- package/extended/OptionBool.d.ts +3 -3
- package/extended/OptionBool.js +62 -62
- package/extended/Range.d.ts +2 -2
- package/extended/Range.js +35 -40
- package/extended/RangeInclusive.d.ts +2 -2
- package/extended/RangeInclusive.js +11 -16
- package/extended/Type.d.ts +2 -2
- package/extended/Type.js +12 -17
- package/extended/U8aFixed.d.ts +2 -2
- package/extended/U8aFixed.js +30 -36
- package/extended/WrapperKeepOpaque.d.ts +2 -2
- package/extended/WrapperKeepOpaque.js +96 -92
- package/extended/WrapperOpaque.d.ts +2 -2
- package/extended/WrapperOpaque.js +17 -23
- package/extended/index.d.ts +14 -14
- package/extended/index.js +14 -17
- package/index.d.ts +2 -2
- package/index.js +2 -5
- package/native/Bool.d.ts +1 -1
- package/native/Bool.js +99 -111
- package/native/Date.d.ts +1 -1
- package/native/Date.js +123 -144
- package/native/Float.d.ts +1 -1
- package/native/Float.js +93 -108
- package/native/Json.d.ts +1 -1
- package/native/Json.js +100 -114
- package/native/Raw.d.ts +1 -1
- package/native/Raw.js +126 -146
- package/native/Set.d.ts +1 -1
- package/native/Set.js +197 -211
- package/native/Struct.d.ts +1 -1
- package/native/Struct.data.js +0 -3
- package/native/Struct.js +235 -242
- package/native/Text.d.ts +1 -1
- package/native/Text.js +135 -144
- package/native/index.d.ts +8 -8
- package/native/index.js +8 -11
- package/package.json +8 -5
- package/packageInfo.js +1 -11
- package/primitive/F32.d.ts +2 -2
- package/primitive/F32.js +6 -7
- package/primitive/F64.d.ts +2 -2
- package/primitive/F64.js +6 -7
- package/primitive/I128.d.ts +2 -2
- package/primitive/I128.js +6 -7
- package/primitive/I16.d.ts +2 -2
- package/primitive/I16.js +6 -7
- package/primitive/I256.d.ts +2 -2
- package/primitive/I256.js +6 -7
- package/primitive/I32.d.ts +2 -2
- package/primitive/I32.js +6 -7
- package/primitive/I64.d.ts +2 -2
- package/primitive/I64.js +6 -7
- package/primitive/I8.d.ts +2 -2
- package/primitive/I8.js +6 -7
- package/primitive/U128.d.ts +2 -2
- package/primitive/U128.js +6 -7
- package/primitive/U16.d.ts +2 -2
- package/primitive/U16.js +6 -7
- package/primitive/U256.d.ts +2 -2
- package/primitive/U256.js +6 -7
- package/primitive/U32.d.ts +2 -2
- package/primitive/U32.js +6 -7
- package/primitive/U64.d.ts +2 -2
- package/primitive/U64.js +6 -7
- package/primitive/U8.d.ts +2 -2
- package/primitive/U8.js +6 -7
- package/primitive/USize.d.ts +2 -2
- package/primitive/USize.js +5 -9
- package/primitive/index.d.ts +15 -15
- package/primitive/index.js +15 -18
- package/types/codec.d.ts +3 -3
- package/types/helpers.d.ts +1 -1
- package/types/index.d.ts +4 -4
- package/types/index.js +4 -7
- package/types/interfaces.d.ts +2 -2
- package/types/registry.d.ts +3 -3
- package/utils/compareArray.js +7 -11
- package/utils/compareMap.js +18 -19
- package/utils/compareSet.js +12 -16
- package/utils/decodeU8a.d.ts +1 -1
- package/utils/decodeU8a.js +54 -61
- package/utils/index.d.ts +9 -9
- package/utils/index.js +9 -12
- package/utils/mapToTypeMap.d.ts +1 -1
- package/utils/mapToTypeMap.js +9 -13
- package/utils/sanitize.d.ts +1 -1
- package/utils/sanitize.js +182 -185
- package/utils/sortValues.d.ts +1 -1
- package/utils/sortValues.js +32 -36
- package/utils/typeToConstructor.d.ts +1 -1
- package/utils/typeToConstructor.js +3 -4
- package/utils/typesToMap.d.ts +1 -1
- package/utils/typesToMap.js +5 -8
- package/utils/util.js +1 -4
package/base/Tuple.js
CHANGED
|
@@ -1,38 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
var _Tuple_Types;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
4
3
|
import { isFunction, isHex, isString, isU8a, stringify, u8aConcatStrict, u8aToU8a } from '@polkadot/util';
|
|
5
|
-
import { AbstractArray } from
|
|
6
|
-
import { decodeU8a, mapToTypeMap, typeToConstructor } from
|
|
4
|
+
import { AbstractArray } from '../abstract/Array.js';
|
|
5
|
+
import { decodeU8a, mapToTypeMap, typeToConstructor } from '../utils/index.js';
|
|
7
6
|
function noopSetDefinition(d) {
|
|
8
|
-
|
|
7
|
+
return d;
|
|
9
8
|
}
|
|
10
|
-
|
|
11
9
|
/** @internal */
|
|
12
10
|
function decodeTuple(registry, result, value, Classes) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
if (Array.isArray(value)) {
|
|
12
|
+
const Types = Classes[0];
|
|
13
|
+
for (let i = 0; i < Types.length; i++) {
|
|
14
|
+
try {
|
|
15
|
+
const entry = value?.[i];
|
|
16
|
+
result[i] = entry instanceof Types[i]
|
|
17
|
+
? entry
|
|
18
|
+
: new Types[i](registry, entry);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
throw new Error(`Tuple: failed on ${i}:: ${error.message}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return [result, 0];
|
|
22
25
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return decodeU8a(registry, result, u8aToU8a(value), Classes);
|
|
26
|
-
} else if (!value || !result.length) {
|
|
27
|
-
const Types = Classes[0];
|
|
28
|
-
for (let i = 0; i < Types.length; i++) {
|
|
29
|
-
result[i] = new Types[i](registry);
|
|
26
|
+
else if (isHex(value)) {
|
|
27
|
+
return decodeU8a(registry, result, u8aToU8a(value), Classes);
|
|
30
28
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
else if (!value || !result.length) {
|
|
30
|
+
const Types = Classes[0];
|
|
31
|
+
for (let i = 0; i < Types.length; i++) {
|
|
32
|
+
result[i] = new Types[i](registry);
|
|
33
|
+
}
|
|
34
|
+
return [result, 0];
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Expected array input to Tuple decoding, found ${typeof value}: ${stringify(value)}`);
|
|
34
37
|
}
|
|
35
|
-
|
|
36
38
|
/**
|
|
37
39
|
* @name Tuple
|
|
38
40
|
* @description
|
|
@@ -40,79 +42,75 @@ function decodeTuple(registry, result, value, Classes) {
|
|
|
40
42
|
* own type. It extends the base JS `Array` object.
|
|
41
43
|
*/
|
|
42
44
|
export class Tuple extends AbstractArray {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
45
|
+
constructor(registry, Types, value, { definition, setDefinition = noopSetDefinition } = {}) {
|
|
46
|
+
const Classes = definition || setDefinition(Array.isArray(Types)
|
|
47
|
+
? [Types.map((t) => typeToConstructor(registry, t)), []]
|
|
48
|
+
: isFunction(Types) || isString(Types)
|
|
49
|
+
? [[typeToConstructor(registry, Types)], []]
|
|
50
|
+
: mapToTypeMap(registry, Types));
|
|
51
|
+
super(registry, Classes[0].length);
|
|
52
|
+
_Tuple_Types.set(this, void 0);
|
|
53
|
+
this.initialU8aLength = (isU8a(value)
|
|
54
|
+
? decodeU8a(registry, this, value, Classes)
|
|
55
|
+
: decodeTuple(registry, this, value, Classes))[1];
|
|
56
|
+
__classPrivateFieldSet(this, _Tuple_Types, Classes, "f");
|
|
57
|
+
}
|
|
58
|
+
static with(Types) {
|
|
59
|
+
let definition;
|
|
60
|
+
// eslint-disable-next-line no-return-assign
|
|
61
|
+
const setDefinition = (d) => definition = d;
|
|
62
|
+
return class extends Tuple {
|
|
63
|
+
constructor(registry, value) {
|
|
64
|
+
super(registry, Types, value, { definition, setDefinition });
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @description The length of the value when encoded as a Uint8Array
|
|
70
|
+
*/
|
|
71
|
+
get encodedLength() {
|
|
72
|
+
let total = 0;
|
|
73
|
+
for (let i = 0; i < this.length; i++) {
|
|
74
|
+
total += this[i].encodedLength;
|
|
75
|
+
}
|
|
76
|
+
return total;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @description The types definition of the tuple
|
|
80
|
+
*/
|
|
81
|
+
get Types() {
|
|
82
|
+
return __classPrivateFieldGet(this, _Tuple_Types, "f")[1].length
|
|
83
|
+
? __classPrivateFieldGet(this, _Tuple_Types, "f")[1]
|
|
84
|
+
: __classPrivateFieldGet(this, _Tuple_Types, "f")[0].map((T) => new T(this.registry).toRawType());
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @description Returns a breakdown of the hex encoding for this Codec
|
|
88
|
+
*/
|
|
89
|
+
inspect() {
|
|
90
|
+
return {
|
|
91
|
+
inner: this.inspectInner()
|
|
92
|
+
};
|
|
75
93
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const types = this.#Types[0].map(T => this.registry.getClassName(T) || new T(this.registry).toRawType());
|
|
100
|
-
return `(${types.join(',')})`;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* @description Returns the string representation of the value
|
|
105
|
-
*/
|
|
106
|
-
toString() {
|
|
107
|
-
// Overwrite the default toString representation of Array.
|
|
108
|
-
return stringify(this.toJSON());
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* @description Encodes the value as a Uint8Array as per the SCALE specifications
|
|
113
|
-
* @param isBare true when the value has none of the type-specific prefixes (internal)
|
|
114
|
-
*/
|
|
115
|
-
toU8a(isBare) {
|
|
116
|
-
return u8aConcatStrict(this.toU8aInner(isBare));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
94
|
+
/**
|
|
95
|
+
* @description Returns the base runtime type name for this instance
|
|
96
|
+
*/
|
|
97
|
+
toRawType() {
|
|
98
|
+
const types = __classPrivateFieldGet(this, _Tuple_Types, "f")[0].map((T) => this.registry.getClassName(T) || new T(this.registry).toRawType());
|
|
99
|
+
return `(${types.join(',')})`;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @description Returns the string representation of the value
|
|
103
|
+
*/
|
|
104
|
+
toString() {
|
|
105
|
+
// Overwrite the default toString representation of Array.
|
|
106
|
+
return stringify(this.toJSON());
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* @description Encodes the value as a Uint8Array as per the SCALE specifications
|
|
110
|
+
* @param isBare true when the value has none of the type-specific prefixes (internal)
|
|
111
|
+
*/
|
|
112
|
+
toU8a(isBare) {
|
|
113
|
+
return u8aConcatStrict(this.toU8aInner(isBare));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
_Tuple_Types = new WeakMap();
|
package/base/UInt.d.ts
CHANGED
package/base/UInt.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import { AbstractInt } from "../abstract/Int.js";
|
|
5
|
-
|
|
1
|
+
import { AbstractInt } from '../abstract/Int.js';
|
|
6
2
|
/**
|
|
7
3
|
* @name UInt
|
|
8
4
|
* @description
|
|
@@ -14,14 +10,14 @@ import { AbstractInt } from "../abstract/Int.js";
|
|
|
14
10
|
* @noInheritDoc
|
|
15
11
|
*/
|
|
16
12
|
export class UInt extends AbstractInt {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
13
|
+
static with(bitLength, typeName) {
|
|
14
|
+
return class extends UInt {
|
|
15
|
+
constructor(registry, value) {
|
|
16
|
+
super(registry, value, bitLength);
|
|
17
|
+
}
|
|
18
|
+
toRawType() {
|
|
19
|
+
return typeName || super.toRawType();
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
27
23
|
}
|
package/base/Vec.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { HexString } from '@polkadot/util/types';
|
|
2
|
-
import type { Codec, CodecClass, Registry } from '../types';
|
|
3
|
-
import { AbstractArray } from '../abstract/Array';
|
|
2
|
+
import type { Codec, CodecClass, Registry } from '../types/index.js';
|
|
3
|
+
import { AbstractArray } from '../abstract/Array.js';
|
|
4
4
|
interface Options<T> {
|
|
5
5
|
definition?: CodecClass<T>;
|
|
6
6
|
setDefinition?: (d: CodecClass<T>) => CodecClass<T>;
|
package/base/Vec.js
CHANGED
|
@@ -1,52 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
var _Vec_Type;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
4
3
|
import { compactFromU8aLim, isHex, isU8a, logger, stringify, u8aToU8a } from '@polkadot/util';
|
|
5
|
-
import { AbstractArray } from
|
|
6
|
-
import { decodeU8aVec, typeToConstructor } from
|
|
4
|
+
import { AbstractArray } from '../abstract/Array.js';
|
|
5
|
+
import { decodeU8aVec, typeToConstructor } from '../utils/index.js';
|
|
7
6
|
const MAX_LENGTH = 64 * 1024;
|
|
8
7
|
const l = logger('Vec');
|
|
9
8
|
function noopSetDefinition(d) {
|
|
10
|
-
|
|
9
|
+
return d;
|
|
11
10
|
}
|
|
12
11
|
function decodeVecLength(value) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
} else if (isU8a(value) || isHex(value)) {
|
|
16
|
-
const u8a = u8aToU8a(value);
|
|
17
|
-
const [startAt, length] = compactFromU8aLim(u8a);
|
|
18
|
-
if (length > MAX_LENGTH) {
|
|
19
|
-
throw new Error(`Vec length ${length.toString()} exceeds ${MAX_LENGTH}`);
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
return [value, value.length, 0];
|
|
20
14
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
else if (isU8a(value) || isHex(value)) {
|
|
16
|
+
const u8a = u8aToU8a(value);
|
|
17
|
+
const [startAt, length] = compactFromU8aLim(u8a);
|
|
18
|
+
if (length > MAX_LENGTH) {
|
|
19
|
+
throw new Error(`Vec length ${length.toString()} exceeds ${MAX_LENGTH}`);
|
|
20
|
+
}
|
|
21
|
+
return [u8a, length, startAt];
|
|
22
|
+
}
|
|
23
|
+
else if (!value) {
|
|
24
|
+
return [null, 0, 0];
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`Expected array/hex input to Vec<*> decoding, found ${typeof value}: ${stringify(value)}`);
|
|
26
27
|
}
|
|
27
28
|
export function decodeVec(registry, result, value, startAt, Type) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
if (Array.isArray(value)) {
|
|
30
|
+
const count = result.length;
|
|
31
|
+
for (let i = 0; i < count; i++) {
|
|
32
|
+
// 26/08/2022 this is actually a false positive - after recent eslint upgdates
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
34
|
+
const entry = value[i];
|
|
35
|
+
try {
|
|
36
|
+
result[i] = entry instanceof Type
|
|
37
|
+
? entry
|
|
38
|
+
: new Type(registry, entry);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
l.error(`Unable to decode on index ${i}`, error.message);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return [0, 0];
|
|
40
46
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
// we don't need more checks, we already limited it via the length decoding
|
|
47
|
-
return decodeU8aVec(registry, result, u8aToU8a(value), startAt, Type);
|
|
47
|
+
else if (!value) {
|
|
48
|
+
return [0, 0];
|
|
49
|
+
}
|
|
50
|
+
// we don't need more checks, we already limited it via the length decoding
|
|
51
|
+
return decodeU8aVec(registry, result, u8aToU8a(value), startAt, Type);
|
|
48
52
|
}
|
|
49
|
-
|
|
50
53
|
/**
|
|
51
54
|
* @name Vec
|
|
52
55
|
* @description
|
|
@@ -55,56 +58,51 @@ export function decodeVec(registry, result, value, startAt, Type) {
|
|
|
55
58
|
* specific encoding/decoding on top of the base type.
|
|
56
59
|
*/
|
|
57
60
|
export class Vec extends AbstractArray {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
definition,
|
|
77
|
-
setDefinition
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* @description The type for the items
|
|
85
|
-
*/
|
|
86
|
-
get Type() {
|
|
87
|
-
return this.#Type.name;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* @description Finds the index of the value in the array
|
|
92
|
-
*/
|
|
93
|
-
indexOf(_other) {
|
|
94
|
-
// convert type first, this removes overhead from the eq
|
|
95
|
-
const other = _other instanceof this.#Type ? _other : new this.#Type(this.registry, _other);
|
|
96
|
-
for (let i = 0; i < this.length; i++) {
|
|
97
|
-
if (other.eq(this[i])) {
|
|
98
|
-
return i;
|
|
99
|
-
}
|
|
61
|
+
constructor(registry, Type, value = [], { definition, setDefinition = noopSetDefinition } = {}) {
|
|
62
|
+
const [decodeFrom, length, startAt] = decodeVecLength(value);
|
|
63
|
+
super(registry, length);
|
|
64
|
+
_Vec_Type.set(this, void 0);
|
|
65
|
+
__classPrivateFieldSet(this, _Vec_Type, definition || setDefinition(typeToConstructor(registry, Type)), "f");
|
|
66
|
+
this.initialU8aLength = (isU8a(decodeFrom)
|
|
67
|
+
? decodeU8aVec(registry, this, decodeFrom, startAt, __classPrivateFieldGet(this, _Vec_Type, "f"))
|
|
68
|
+
: decodeVec(registry, this, decodeFrom, startAt, __classPrivateFieldGet(this, _Vec_Type, "f")))[0];
|
|
69
|
+
}
|
|
70
|
+
static with(Type) {
|
|
71
|
+
let definition;
|
|
72
|
+
// eslint-disable-next-line no-return-assign
|
|
73
|
+
const setDefinition = (d) => (definition = d);
|
|
74
|
+
return class extends Vec {
|
|
75
|
+
constructor(registry, value) {
|
|
76
|
+
super(registry, Type, value, { definition, setDefinition });
|
|
77
|
+
}
|
|
78
|
+
};
|
|
100
79
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
80
|
+
/**
|
|
81
|
+
* @description The type for the items
|
|
82
|
+
*/
|
|
83
|
+
get Type() {
|
|
84
|
+
return __classPrivateFieldGet(this, _Vec_Type, "f").name;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @description Finds the index of the value in the array
|
|
88
|
+
*/
|
|
89
|
+
indexOf(_other) {
|
|
90
|
+
// convert type first, this removes overhead from the eq
|
|
91
|
+
const other = _other instanceof __classPrivateFieldGet(this, _Vec_Type, "f")
|
|
92
|
+
? _other
|
|
93
|
+
: new (__classPrivateFieldGet(this, _Vec_Type, "f"))(this.registry, _other);
|
|
94
|
+
for (let i = 0; i < this.length; i++) {
|
|
95
|
+
if (other.eq(this[i])) {
|
|
96
|
+
return i;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return -1;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @description Returns the base runtime type name for this instance
|
|
103
|
+
*/
|
|
104
|
+
toRawType() {
|
|
105
|
+
return `Vec<${this.registry.getClassName(__classPrivateFieldGet(this, _Vec_Type, "f")) || new (__classPrivateFieldGet(this, _Vec_Type, "f"))(this.registry).toRawType()}>`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
_Vec_Type = new WeakMap();
|
package/base/VecAny.d.ts
CHANGED
package/base/VecAny.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import { AbstractArray } from "../abstract/Array.js";
|
|
5
|
-
|
|
1
|
+
import { AbstractArray } from '../abstract/Array.js';
|
|
6
2
|
/**
|
|
7
3
|
* @name VecAny
|
|
8
4
|
* @description
|
|
@@ -11,11 +7,11 @@ import { AbstractArray } from "../abstract/Array.js";
|
|
|
11
7
|
* any types
|
|
12
8
|
*/
|
|
13
9
|
export class VecAny extends AbstractArray {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
/**
|
|
11
|
+
* @description Returns the base runtime type name for this instance
|
|
12
|
+
*/
|
|
13
|
+
toRawType() {
|
|
14
|
+
// FIXME This is basically an any type, cannot instantiate via createType
|
|
15
|
+
return 'Vec<Codec>';
|
|
16
|
+
}
|
|
21
17
|
}
|
package/base/VecFixed.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { HexString } from '@polkadot/util/types';
|
|
2
|
-
import type { Codec, CodecClass, Inspect, Registry } from '../types';
|
|
3
|
-
import { AbstractArray } from '../abstract/Array';
|
|
2
|
+
import type { Codec, CodecClass, Inspect, Registry } from '../types/index.js';
|
|
3
|
+
import { AbstractArray } from '../abstract/Array.js';
|
|
4
4
|
interface Options<T> {
|
|
5
5
|
definition?: CodecClass<T>;
|
|
6
6
|
setDefinition?: (d: CodecClass<T>) => CodecClass<T>;
|