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