@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.
Files changed (229) hide show
  1. package/abstract/Array.d.ts +1 -1
  2. package/abstract/Array.js +136 -155
  3. package/abstract/Base.d.ts +1 -1
  4. package/abstract/Base.js +95 -113
  5. package/abstract/Int.d.ts +1 -1
  6. package/abstract/Int.js +209 -220
  7. package/abstract/Object.d.ts +1 -1
  8. package/abstract/Object.js +29 -45
  9. package/abstract/index.d.ts +3 -3
  10. package/abstract/index.js +3 -6
  11. package/base/Compact.d.ts +1 -1
  12. package/base/Compact.js +149 -166
  13. package/base/DoNotConstruct.d.ts +1 -1
  14. package/base/DoNotConstruct.js +62 -65
  15. package/base/Enum.d.ts +1 -1
  16. package/base/Enum.js +347 -383
  17. package/base/Int.d.ts +2 -2
  18. package/base/Int.js +14 -18
  19. package/base/Null.d.ts +1 -1
  20. package/base/Null.js +68 -82
  21. package/base/Option.d.ts +1 -1
  22. package/base/Option.js +217 -227
  23. package/base/Result.d.ts +2 -2
  24. package/base/Result.js +54 -67
  25. package/base/Tuple.d.ts +2 -2
  26. package/base/Tuple.js +100 -102
  27. package/base/UInt.d.ts +2 -2
  28. package/base/UInt.js +11 -15
  29. package/base/Vec.d.ts +2 -2
  30. package/base/Vec.js +88 -90
  31. package/base/VecAny.d.ts +2 -2
  32. package/base/VecAny.js +8 -12
  33. package/base/VecFixed.d.ts +2 -2
  34. package/base/VecFixed.js +63 -71
  35. package/base/index.d.ts +12 -12
  36. package/base/index.js +12 -15
  37. package/bundle.d.ts +7 -7
  38. package/bundle.js +7 -10
  39. package/cjs/abstract/Array.js +138 -159
  40. package/cjs/abstract/Base.js +96 -117
  41. package/cjs/abstract/Int.js +215 -238
  42. package/cjs/abstract/Object.js +30 -49
  43. package/cjs/abstract/index.js +8 -25
  44. package/cjs/base/Compact.js +151 -173
  45. package/cjs/base/DoNotConstruct.js +63 -70
  46. package/cjs/base/Enum.js +350 -396
  47. package/cjs/base/Int.js +16 -24
  48. package/cjs/base/Null.js +70 -86
  49. package/cjs/base/Option.js +220 -234
  50. package/cjs/base/Result.js +56 -71
  51. package/cjs/base/Tuple.js +103 -109
  52. package/cjs/base/UInt.js +13 -19
  53. package/cjs/base/Vec.js +94 -101
  54. package/cjs/base/VecAny.js +10 -16
  55. package/cjs/base/VecFixed.js +66 -79
  56. package/cjs/base/index.js +26 -88
  57. package/cjs/bundle.js +11 -86
  58. package/cjs/detectOther.js +2 -10
  59. package/cjs/detectPackage.js +6 -11
  60. package/cjs/extended/BTreeMap.js +10 -16
  61. package/cjs/extended/BTreeSet.js +162 -178
  62. package/cjs/extended/BitVec.js +70 -77
  63. package/cjs/extended/Bytes.js +59 -62
  64. package/cjs/extended/HashMap.js +10 -16
  65. package/cjs/extended/Linkage.js +50 -60
  66. package/cjs/extended/Map.js +176 -181
  67. package/cjs/extended/OptionBool.js +65 -68
  68. package/cjs/extended/Range.js +37 -46
  69. package/cjs/extended/RangeInclusive.js +13 -21
  70. package/cjs/extended/Type.js +14 -22
  71. package/cjs/extended/U8aFixed.js +33 -43
  72. package/cjs/extended/WrapperKeepOpaque.js +99 -99
  73. package/cjs/extended/WrapperOpaque.js +19 -28
  74. package/cjs/extended/index.js +31 -108
  75. package/cjs/index.js +4 -16
  76. package/cjs/native/Bool.js +101 -116
  77. package/cjs/native/Date.js +125 -151
  78. package/cjs/native/Float.js +95 -114
  79. package/cjs/native/Json.js +102 -124
  80. package/cjs/native/Raw.js +128 -150
  81. package/cjs/native/Set.js +200 -220
  82. package/cjs/native/Struct.data.js +2 -9
  83. package/cjs/native/Struct.js +238 -251
  84. package/cjs/native/Text.js +137 -149
  85. package/cjs/native/index.js +21 -78
  86. package/cjs/packageInfo.js +2 -16
  87. package/cjs/primitive/F32.js +8 -11
  88. package/cjs/primitive/F64.js +8 -11
  89. package/cjs/primitive/I128.js +8 -11
  90. package/cjs/primitive/I16.js +8 -11
  91. package/cjs/primitive/I256.js +8 -11
  92. package/cjs/primitive/I32.js +8 -11
  93. package/cjs/primitive/I64.js +8 -11
  94. package/cjs/primitive/I8.js +8 -11
  95. package/cjs/primitive/U128.js +8 -11
  96. package/cjs/primitive/U16.js +8 -11
  97. package/cjs/primitive/U256.js +8 -11
  98. package/cjs/primitive/U32.js +8 -11
  99. package/cjs/primitive/U64.js +8 -11
  100. package/cjs/primitive/U8.js +8 -11
  101. package/cjs/primitive/USize.js +7 -13
  102. package/cjs/primitive/index.js +47 -199
  103. package/cjs/types/codec.js +2 -1
  104. package/cjs/types/helpers.js +2 -1
  105. package/cjs/types/index.js +6 -48
  106. package/cjs/types/interfaces.js +2 -1
  107. package/cjs/types/registry.js +2 -1
  108. package/cjs/utils/compareArray.js +12 -17
  109. package/cjs/utils/compareMap.js +23 -26
  110. package/cjs/utils/compareSet.js +17 -23
  111. package/cjs/utils/decodeU8a.js +63 -74
  112. package/cjs/utils/index.js +24 -91
  113. package/cjs/utils/mapToTypeMap.js +13 -18
  114. package/cjs/utils/sanitize.js +198 -204
  115. package/cjs/utils/sortValues.js +39 -49
  116. package/cjs/utils/typeToConstructor.js +8 -11
  117. package/cjs/utils/typesToMap.js +10 -16
  118. package/cjs/utils/util.js +6 -11
  119. package/detectOther.js +0 -5
  120. package/detectPackage.js +2 -7
  121. package/extended/BTreeMap.d.ts +2 -2
  122. package/extended/BTreeMap.js +8 -11
  123. package/extended/BTreeSet.d.ts +1 -1
  124. package/extended/BTreeSet.js +159 -172
  125. package/extended/BitVec.d.ts +2 -2
  126. package/extended/BitVec.js +67 -71
  127. package/extended/Bytes.d.ts +2 -2
  128. package/extended/Bytes.js +56 -57
  129. package/extended/HashMap.d.ts +2 -2
  130. package/extended/HashMap.js +8 -11
  131. package/extended/Linkage.d.ts +4 -4
  132. package/extended/Linkage.js +46 -51
  133. package/extended/Map.d.ts +1 -1
  134. package/extended/Map.js +173 -174
  135. package/extended/OptionBool.d.ts +3 -3
  136. package/extended/OptionBool.js +62 -62
  137. package/extended/Range.d.ts +2 -2
  138. package/extended/Range.js +35 -40
  139. package/extended/RangeInclusive.d.ts +2 -2
  140. package/extended/RangeInclusive.js +11 -16
  141. package/extended/Type.d.ts +2 -2
  142. package/extended/Type.js +12 -17
  143. package/extended/U8aFixed.d.ts +2 -2
  144. package/extended/U8aFixed.js +30 -36
  145. package/extended/WrapperKeepOpaque.d.ts +2 -2
  146. package/extended/WrapperKeepOpaque.js +96 -92
  147. package/extended/WrapperOpaque.d.ts +2 -2
  148. package/extended/WrapperOpaque.js +17 -23
  149. package/extended/index.d.ts +14 -14
  150. package/extended/index.js +14 -17
  151. package/index.d.ts +2 -2
  152. package/index.js +2 -5
  153. package/native/Bool.d.ts +1 -1
  154. package/native/Bool.js +99 -111
  155. package/native/Date.d.ts +1 -1
  156. package/native/Date.js +123 -144
  157. package/native/Float.d.ts +1 -1
  158. package/native/Float.js +93 -108
  159. package/native/Json.d.ts +1 -1
  160. package/native/Json.js +100 -114
  161. package/native/Raw.d.ts +1 -1
  162. package/native/Raw.js +126 -146
  163. package/native/Set.d.ts +1 -1
  164. package/native/Set.js +197 -211
  165. package/native/Struct.d.ts +1 -1
  166. package/native/Struct.data.js +0 -3
  167. package/native/Struct.js +235 -242
  168. package/native/Text.d.ts +1 -1
  169. package/native/Text.js +135 -144
  170. package/native/index.d.ts +8 -8
  171. package/native/index.js +8 -11
  172. package/package.json +8 -5
  173. package/packageInfo.js +1 -11
  174. package/primitive/F32.d.ts +2 -2
  175. package/primitive/F32.js +6 -7
  176. package/primitive/F64.d.ts +2 -2
  177. package/primitive/F64.js +6 -7
  178. package/primitive/I128.d.ts +2 -2
  179. package/primitive/I128.js +6 -7
  180. package/primitive/I16.d.ts +2 -2
  181. package/primitive/I16.js +6 -7
  182. package/primitive/I256.d.ts +2 -2
  183. package/primitive/I256.js +6 -7
  184. package/primitive/I32.d.ts +2 -2
  185. package/primitive/I32.js +6 -7
  186. package/primitive/I64.d.ts +2 -2
  187. package/primitive/I64.js +6 -7
  188. package/primitive/I8.d.ts +2 -2
  189. package/primitive/I8.js +6 -7
  190. package/primitive/U128.d.ts +2 -2
  191. package/primitive/U128.js +6 -7
  192. package/primitive/U16.d.ts +2 -2
  193. package/primitive/U16.js +6 -7
  194. package/primitive/U256.d.ts +2 -2
  195. package/primitive/U256.js +6 -7
  196. package/primitive/U32.d.ts +2 -2
  197. package/primitive/U32.js +6 -7
  198. package/primitive/U64.d.ts +2 -2
  199. package/primitive/U64.js +6 -7
  200. package/primitive/U8.d.ts +2 -2
  201. package/primitive/U8.js +6 -7
  202. package/primitive/USize.d.ts +2 -2
  203. package/primitive/USize.js +5 -9
  204. package/primitive/index.d.ts +15 -15
  205. package/primitive/index.js +15 -18
  206. package/types/codec.d.ts +3 -3
  207. package/types/helpers.d.ts +1 -1
  208. package/types/index.d.ts +4 -4
  209. package/types/index.js +4 -7
  210. package/types/interfaces.d.ts +2 -2
  211. package/types/registry.d.ts +3 -3
  212. package/utils/compareArray.js +7 -11
  213. package/utils/compareMap.js +18 -19
  214. package/utils/compareSet.js +12 -16
  215. package/utils/decodeU8a.d.ts +1 -1
  216. package/utils/decodeU8a.js +54 -61
  217. package/utils/index.d.ts +9 -9
  218. package/utils/index.js +9 -12
  219. package/utils/mapToTypeMap.d.ts +1 -1
  220. package/utils/mapToTypeMap.js +9 -13
  221. package/utils/sanitize.d.ts +1 -1
  222. package/utils/sanitize.js +182 -185
  223. package/utils/sortValues.d.ts +1 -1
  224. package/utils/sortValues.js +32 -36
  225. package/utils/typeToConstructor.d.ts +1 -1
  226. package/utils/typeToConstructor.js +3 -4
  227. package/utils/typesToMap.d.ts +1 -1
  228. package/utils/typesToMap.js +5 -8
  229. package/utils/util.js +1 -4
package/utils/index.js CHANGED
@@ -1,12 +1,9 @@
1
- // Copyright 2017-2023 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- export { compareArray } from "./compareArray.js";
5
- export { compareMap } from "./compareMap.js";
6
- export { compareSet } from "./compareSet.js";
7
- export { decodeU8a, decodeU8aStruct, decodeU8aVec } from "./decodeU8a.js";
8
- export { mapToTypeMap } from "./mapToTypeMap.js";
9
- export { typeToConstructor } from "./typeToConstructor.js";
10
- export { sanitize } from "./sanitize.js";
11
- export { sortAsc, sortSet, sortMap } from "./sortValues.js";
12
- export { typesToMap } from "./typesToMap.js";
1
+ export { compareArray } from './compareArray.js';
2
+ export { compareMap } from './compareMap.js';
3
+ export { compareSet } from './compareSet.js';
4
+ export { decodeU8a, decodeU8aStruct, decodeU8aVec } from './decodeU8a.js';
5
+ export { mapToTypeMap } from './mapToTypeMap.js';
6
+ export { typeToConstructor } from './typeToConstructor.js';
7
+ export { sanitize } from './sanitize.js';
8
+ export { sortAsc, sortSet, sortMap } from './sortValues.js';
9
+ export { typesToMap } from './typesToMap.js';
@@ -1,4 +1,4 @@
1
- import type { CodecClass, Registry } from '../types';
1
+ import type { CodecClass, Registry } from '../types/index.js';
2
2
  /**
3
3
  * @description takes an input map of the form `{ [string]: string | CodecClass }` and returns a map of `{ [string]: CodecClass }`
4
4
  */
@@ -1,18 +1,14 @@
1
- // Copyright 2017-2023 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import { typeToConstructor } from "./typeToConstructor.js";
5
-
1
+ import { typeToConstructor } from './typeToConstructor.js';
6
2
  /**
7
3
  * @description takes an input map of the form `{ [string]: string | CodecClass }` and returns a map of `{ [string]: CodecClass }`
8
4
  */
9
5
  export function mapToTypeMap(registry, input) {
10
- const entries = Object.entries(input);
11
- const count = entries.length;
12
- const output = [new Array(count), new Array(count)];
13
- for (let i = 0; i < count; i++) {
14
- output[1][i] = entries[i][0];
15
- output[0][i] = typeToConstructor(registry, entries[i][1]);
16
- }
17
- return output;
6
+ const entries = Object.entries(input);
7
+ const count = entries.length;
8
+ const output = [new Array(count), new Array(count)];
9
+ for (let i = 0; i < count; i++) {
10
+ output[1][i] = entries[i][0];
11
+ output[0][i] = typeToConstructor(registry, entries[i][1]);
12
+ }
13
+ return output;
18
14
  }
@@ -1,4 +1,4 @@
1
- import { AnyString } from '../types';
1
+ import { AnyString } from '../types/index.js';
2
2
  type Mapper = (value: string) => string;
3
3
  export declare function trim(): Mapper;
4
4
  export declare function findClosing(value: string, start: number): number;
package/utils/sanitize.js CHANGED
@@ -1,222 +1,219 @@
1
- // Copyright 2017-2023 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
1
  const BOUNDED = ['BTreeMap', 'BTreeSet', 'HashMap', 'Vec'];
5
2
  const ALLOWED_BOXES = BOUNDED.concat(['Compact', 'DoNotConstruct', 'Int', 'Linkage', 'Range', 'RangeInclusive', 'Result', 'Opaque', 'Option', 'UInt', 'WrapperKeepOpaque', 'WrapperOpaque']);
6
3
  const BOX_PRECEDING = ['<', '(', '[', '"', ',', ' ']; // start of vec, tuple, fixed array, part of struct def or in tuple
7
-
8
4
  const mappings = [
9
- // alias <T::InherentOfflineReport as InherentOfflineReport>::Inherent -> InherentOfflineReport
10
- alias('<T::InherentOfflineReport as InherentOfflineReport>::Inherent', 'InherentOfflineReport', false), alias('VecDeque<', 'Vec<', false),
11
- // <T::Balance as HasCompact>
12
- cleanupCompact(),
13
- // Change BoundedVec<Type, Size> to Vec<Type>
14
- removeExtensions('Bounded', true),
15
- // Change WeakVec<Type> to Vec<Type>
16
- removeExtensions('Weak', false),
17
- // Remove all the trait prefixes
18
- removeTraits(),
19
- // remove PairOf<T> -> (T, T)
20
- removePairOf(),
21
- // remove boxing, `Box<Proposal>` -> `Proposal`
22
- removeWrap('Box<'),
23
- // remove generics, `MisbehaviorReport<Hash, BlockNumber>` -> `MisbehaviorReport`
24
- removeGenerics(),
25
- // alias String -> Text (compat with jsonrpc methods)
26
- alias('String', 'Text'),
27
- // alias Vec<u8> -> Bytes
28
- alias('Vec<u8>', 'Bytes'), alias('&\\[u8\\]', 'Bytes'), alias("&'static\\[u8\\]", 'Bytes'),
29
- // alias RawAddress -> Address
30
- alias('RawAddress', 'Address'),
31
- // lookups, mapped to Address/AccountId as appropriate in runtime
32
- alias('Lookup::Source', 'LookupSource'), alias('Lookup::Target', 'LookupTarget'),
33
- // HACK duplication between contracts & primitives, however contracts prefixed with exec
34
- alias('exec::StorageKey', 'ContractStorageKey'),
35
- // flattens tuples with one value, `(AccountId)` -> `AccountId`
36
- flattenSingleTuple(),
37
- // converts ::Type to Type, <T as Trait<I>>::Proposal -> Proposal
38
- removeColons(),
39
- // remove all trailing spaces - this should always be the last
40
- trim()];
41
-
42
- // given a string, trim it
5
+ // alias <T::InherentOfflineReport as InherentOfflineReport>::Inherent -> InherentOfflineReport
6
+ alias('<T::InherentOfflineReport as InherentOfflineReport>::Inherent', 'InherentOfflineReport', false),
7
+ alias('VecDeque<', 'Vec<', false),
8
+ // <T::Balance as HasCompact>
9
+ cleanupCompact(),
10
+ // Change BoundedVec<Type, Size> to Vec<Type>
11
+ removeExtensions('Bounded', true),
12
+ // Change WeakVec<Type> to Vec<Type>
13
+ removeExtensions('Weak', false),
14
+ // Remove all the trait prefixes
15
+ removeTraits(),
16
+ // remove PairOf<T> -> (T, T)
17
+ removePairOf(),
18
+ // remove boxing, `Box<Proposal>` -> `Proposal`
19
+ removeWrap('Box<'),
20
+ // remove generics, `MisbehaviorReport<Hash, BlockNumber>` -> `MisbehaviorReport`
21
+ removeGenerics(),
22
+ // alias String -> Text (compat with jsonrpc methods)
23
+ alias('String', 'Text'),
24
+ // alias Vec<u8> -> Bytes
25
+ alias('Vec<u8>', 'Bytes'),
26
+ alias('&\\[u8\\]', 'Bytes'),
27
+ alias("&'static\\[u8\\]", 'Bytes'),
28
+ // alias RawAddress -> Address
29
+ alias('RawAddress', 'Address'),
30
+ // lookups, mapped to Address/AccountId as appropriate in runtime
31
+ alias('Lookup::Source', 'LookupSource'),
32
+ alias('Lookup::Target', 'LookupTarget'),
33
+ // HACK duplication between contracts & primitives, however contracts prefixed with exec
34
+ alias('exec::StorageKey', 'ContractStorageKey'),
35
+ // flattens tuples with one value, `(AccountId)` -> `AccountId`
36
+ flattenSingleTuple(),
37
+ // converts ::Type to Type, <T as Trait<I>>::Proposal -> Proposal
38
+ removeColons(),
39
+ // remove all trailing spaces - this should always be the last
40
+ trim()
41
+ ];
43
42
  export function trim() {
44
- return value => value.trim();
43
+ return (value) => value.trim();
45
44
  }
46
-
47
- // given a starting index, find the closing >
48
45
  export function findClosing(value, start) {
49
- let depth = 0;
50
- for (let index = start; index < value.length; index++) {
51
- if (value[index] === '>') {
52
- if (!depth) {
53
- return index;
54
- }
55
- depth--;
56
- } else if (value[index] === '<') {
57
- depth++;
46
+ let depth = 0;
47
+ for (let index = start; index < value.length; index++) {
48
+ if (value[index] === '>') {
49
+ if (!depth) {
50
+ return index;
51
+ }
52
+ depth--;
53
+ }
54
+ else if (value[index] === '<') {
55
+ depth++;
56
+ }
58
57
  }
59
- }
60
- throw new Error(`Unable to find closing matching <> on '${value}' (start ${start})`);
58
+ throw new Error(`Unable to find closing matching <> on '${value}' (start ${start})`);
61
59
  }
62
60
  export function alias(src, dest, withChecks = true) {
63
- const from = new RegExp(`(^${src}|${BOX_PRECEDING.map(box => `\\${box}${src}`).join('|')})`, 'g');
64
- const to = src => {
65
- from.lastIndex = 0;
66
- return withChecks && BOX_PRECEDING.includes(src[0]) ? `${src[0]}${dest}` : dest;
67
- };
68
- return value => value.replace(from, to);
61
+ const from = new RegExp(`(^${src}|${BOX_PRECEDING.map((box) => `\\${box}${src}`).join('|')})`, 'g');
62
+ const to = (src) => {
63
+ from.lastIndex = 0;
64
+ return withChecks && BOX_PRECEDING.includes(src[0])
65
+ ? `${src[0]}${dest}`
66
+ : dest;
67
+ };
68
+ return (value) => value.replace(from, to);
69
69
  }
70
70
  export function cleanupCompact() {
71
- return value => {
72
- if (value.includes(' as HasCompact')) {
73
- for (let index = 0; index < value.length; index++) {
74
- if (value[index] === '<') {
75
- const end = findClosing(value, index + 1) - 14;
76
- if (value.substring(end, end + 14) === ' as HasCompact') {
77
- value = `Compact<${value.substring(index + 1, end)}>`;
78
- }
71
+ return (value) => {
72
+ if (value.includes(' as HasCompact')) {
73
+ for (let index = 0; index < value.length; index++) {
74
+ if (value[index] === '<') {
75
+ const end = findClosing(value, index + 1) - 14;
76
+ if (value.substring(end, end + 14) === ' as HasCompact') {
77
+ value = `Compact<${value.substring(index + 1, end)}>`;
78
+ }
79
+ }
80
+ }
79
81
  }
80
- }
81
- }
82
- return value;
83
- };
82
+ return value;
83
+ };
84
84
  }
85
85
  export function flattenSingleTuple() {
86
- const from1 = /,\)/g;
87
- const from2 = /\(([^,]+)\)/;
88
- return value => {
89
- from1.lastIndex = 0;
90
- return value
91
- // tuples may have trailing commas, e.g. (u32, BlockNumber, )
92
- .replace(from1, ')')
93
- // change (u32) -> u32
94
- .replace(from2, '$1');
95
- };
86
+ const from1 = /,\)/g;
87
+ const from2 = /\(([^,]+)\)/;
88
+ return (value) => {
89
+ from1.lastIndex = 0;
90
+ return value
91
+ // tuples may have trailing commas, e.g. (u32, BlockNumber, )
92
+ .replace(from1, ')')
93
+ // change (u32) -> u32
94
+ .replace(from2, '$1');
95
+ };
96
96
  }
97
97
  function replaceTagWith(value, matcher, replacer) {
98
- let index = -1;
99
- while (true) {
100
- index = value.indexOf(matcher, index + 1);
101
- if (index === -1) {
102
- return value;
98
+ let index = -1;
99
+ while (true) {
100
+ index = value.indexOf(matcher, index + 1);
101
+ if (index === -1) {
102
+ return value;
103
+ }
104
+ const start = index + matcher.length;
105
+ const end = findClosing(value, start);
106
+ value = `${value.substring(0, index)}${replacer(value.substring(start, end))}${value.substring(end + 1)}`;
103
107
  }
104
- const start = index + matcher.length;
105
- const end = findClosing(value, start);
106
- value = `${value.substring(0, index)}${replacer(value.substring(start, end))}${value.substring(end + 1)}`;
107
- }
108
108
  }
109
-
110
- // remove the Bounded* or Weak* wrappers
111
109
  export function removeExtensions(type, isSized) {
112
- return value => {
113
- for (let i = 0; i < BOUNDED.length; i++) {
114
- const tag = BOUNDED[i];
115
- value = replaceTagWith(value, `${type}${tag}<`, v => {
116
- const parts = v.split(',').map(s => s.trim()).filter(s => s);
117
- if (isSized) {
118
- parts.pop();
110
+ return (value) => {
111
+ for (let i = 0; i < BOUNDED.length; i++) {
112
+ const tag = BOUNDED[i];
113
+ value = replaceTagWith(value, `${type}${tag}<`, (v) => {
114
+ const parts = v
115
+ .split(',')
116
+ .map((s) => s.trim())
117
+ .filter((s) => s);
118
+ if (isSized) {
119
+ parts.pop();
120
+ }
121
+ return `${tag}<${parts.join(',')}>`;
122
+ });
119
123
  }
120
- return `${tag}<${parts.join(',')}>`;
121
- });
122
- }
123
- return value;
124
- };
124
+ return value;
125
+ };
125
126
  }
126
127
  export function removeColons() {
127
- return value => {
128
- let index = 0;
129
- while (index !== -1) {
130
- index = value.indexOf('::');
131
- if (index === 0) {
132
- value = value.substring(2);
133
- } else if (index !== -1) {
134
- let start = index;
135
- while (start !== -1 && !BOX_PRECEDING.includes(value[start])) {
136
- start--;
128
+ return (value) => {
129
+ let index = 0;
130
+ while (index !== -1) {
131
+ index = value.indexOf('::');
132
+ if (index === 0) {
133
+ value = value.substring(2);
134
+ }
135
+ else if (index !== -1) {
136
+ let start = index;
137
+ while (start !== -1 && !BOX_PRECEDING.includes(value[start])) {
138
+ start--;
139
+ }
140
+ value = `${value.substring(0, start + 1)}${value.substring(index + 2)}`;
141
+ }
137
142
  }
138
- value = `${value.substring(0, start + 1)}${value.substring(index + 2)}`;
139
- }
140
- }
141
- return value;
142
- };
143
+ return value;
144
+ };
143
145
  }
144
146
  export function removeGenerics() {
145
- return value => {
146
- for (let index = 0; index < value.length; index++) {
147
- if (value[index] === '<') {
148
- // check against the allowed wrappers, be it Vec<..>, Option<...> ...
149
- const box = ALLOWED_BOXES.find(box => {
150
- const start = index - box.length;
151
- return start >= 0 && value.substring(start, index) === box && (
152
- // make sure it is stand-alone, i.e. don't catch ElectionResult<...> as Result<...>
153
- start === 0 || BOX_PRECEDING.includes(value[start - 1]));
154
- });
155
-
156
- // we have not found anything, unwrap generic innards
157
- if (!box) {
158
- const end = findClosing(value, index + 1);
159
- value = `${value.substring(0, index)}${value.substring(end + 1)}`;
147
+ return (value) => {
148
+ for (let index = 0; index < value.length; index++) {
149
+ if (value[index] === '<') {
150
+ // check against the allowed wrappers, be it Vec<..>, Option<...> ...
151
+ const box = ALLOWED_BOXES.find((box) => {
152
+ const start = index - box.length;
153
+ return ((start >= 0 &&
154
+ value.substring(start, index) === box) && (
155
+ // make sure it is stand-alone, i.e. don't catch ElectionResult<...> as Result<...>
156
+ start === 0 ||
157
+ BOX_PRECEDING.includes(value[start - 1])));
158
+ });
159
+ // we have not found anything, unwrap generic innards
160
+ if (!box) {
161
+ const end = findClosing(value, index + 1);
162
+ value = `${value.substring(0, index)}${value.substring(end + 1)}`;
163
+ }
164
+ }
160
165
  }
161
- }
162
- }
163
- return value;
164
- };
166
+ return value;
167
+ };
165
168
  }
166
-
167
- // remove the PairOf wrappers
168
169
  export function removePairOf() {
169
- const replacer = v => `(${v},${v})`;
170
- return value => replaceTagWith(value, 'PairOf<', replacer);
170
+ const replacer = (v) => `(${v},${v})`;
171
+ return (value) => replaceTagWith(value, 'PairOf<', replacer);
171
172
  }
172
-
173
- // remove the type traits
174
173
  export function removeTraits() {
175
- const from1 = /\s/g;
176
- const from2 = /(T|Self)::/g;
177
- const from3 = /<(T|Self)asTrait>::/g;
178
- const from4 = /<Tas[a-z]+::Trait>::/g;
179
- const from5 = /<LookupasStaticLookup>/g;
180
- const from6 = /::Type/g;
181
- return value => {
182
- from1.lastIndex = 0;
183
- from2.lastIndex = 0;
184
- from3.lastIndex = 0;
185
- from4.lastIndex = 0;
186
- from5.lastIndex = 0;
187
- from6.lastIndex = 0;
188
- return value
189
- // remove all whitespaces
190
- .replace(from1, '')
191
- // anything `T::<type>` to end up as `<type>`
192
- .replace(from2, '')
193
- // replace `<T as Trait>::` (whitespaces were removed above)
194
- .replace(from3, '')
195
- // replace `<T as something::Trait>::` (whitespaces were removed above)
196
- .replace(from4, '')
197
- // replace <Lookup as StaticLookup>
198
- .replace(from5, 'Lookup')
199
- // replace `<...>::Type`
200
- .replace(from6, '');
201
- };
174
+ const from1 = /\s/g;
175
+ const from2 = /(T|Self)::/g;
176
+ const from3 = /<(T|Self)asTrait>::/g;
177
+ const from4 = /<Tas[a-z]+::Trait>::/g;
178
+ const from5 = /<LookupasStaticLookup>/g;
179
+ const from6 = /::Type/g;
180
+ return (value) => {
181
+ from1.lastIndex = 0;
182
+ from2.lastIndex = 0;
183
+ from3.lastIndex = 0;
184
+ from4.lastIndex = 0;
185
+ from5.lastIndex = 0;
186
+ from6.lastIndex = 0;
187
+ return value
188
+ // remove all whitespaces
189
+ .replace(from1, '')
190
+ // anything `T::<type>` to end up as `<type>`
191
+ .replace(from2, '')
192
+ // replace `<T as Trait>::` (whitespaces were removed above)
193
+ .replace(from3, '')
194
+ // replace `<T as something::Trait>::` (whitespaces were removed above)
195
+ .replace(from4, '')
196
+ // replace <Lookup as StaticLookup>
197
+ .replace(from5, 'Lookup')
198
+ // replace `<...>::Type`
199
+ .replace(from6, '');
200
+ };
202
201
  }
203
-
204
- // remove wrapping values, i.e. Box<Proposal> -> Proposal
205
202
  export function removeWrap(check) {
206
- const replacer = v => v;
207
- return value => replaceTagWith(value, check, replacer);
203
+ const replacer = (v) => v;
204
+ return (value) => replaceTagWith(value, check, replacer);
208
205
  }
209
206
  const sanitizeMap = new Map();
210
207
  export function sanitize(value) {
211
- const startValue = value.toString();
212
- const memoized = sanitizeMap.get(startValue);
213
- if (memoized) {
214
- return memoized;
215
- }
216
- let result = startValue;
217
- for (let i = 0; i < mappings.length; i++) {
218
- result = mappings[i](result);
219
- }
220
- sanitizeMap.set(startValue, result);
221
- return result;
208
+ const startValue = value.toString();
209
+ const memoized = sanitizeMap.get(startValue);
210
+ if (memoized) {
211
+ return memoized;
212
+ }
213
+ let result = startValue;
214
+ for (let i = 0; i < mappings.length; i++) {
215
+ result = mappings[i](result);
216
+ }
217
+ sanitizeMap.set(startValue, result);
218
+ return result;
222
219
  }
@@ -1,6 +1,6 @@
1
1
  /// <reference types="bn.js" />
2
2
  import type { BN } from '@polkadot/util';
3
- import type { Codec } from '../types';
3
+ import type { Codec } from '../types/index.js';
4
4
  type SortArg = Codec | Codec[] | number[] | BN | bigint | number | Uint8Array;
5
5
  /**
6
6
  * Sort keys/values of BTreeSet/BTreeMap in ascending order for encoding compatibility with Rust's BTreeSet/BTreeMap
@@ -1,64 +1,60 @@
1
- // Copyright 2017-2023 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
1
  import { bnToBn, isBigInt, isBn, isFunction, isNumber, stringify } from '@polkadot/util';
5
2
  /** @internal **/
6
3
  function isArrayLike(arg) {
7
- return arg instanceof Uint8Array || Array.isArray(arg);
4
+ return arg instanceof Uint8Array || Array.isArray(arg);
8
5
  }
9
-
10
6
  /** @internal **/
11
7
  function isCodec(arg) {
12
- return isFunction(arg && arg.toU8a);
8
+ return isFunction(arg && arg.toU8a);
13
9
  }
14
-
15
10
  /** @internal **/
16
11
  function isEnum(arg) {
17
- return isCodec(arg) && isNumber(arg.index) && isCodec(arg.value);
12
+ return isCodec(arg) && isNumber(arg.index) && isCodec(arg.value);
18
13
  }
19
-
20
14
  /** @internal */
21
15
  function isNumberLike(arg) {
22
- return isNumber(arg) || isBn(arg) || isBigInt(arg);
16
+ return isNumber(arg) || isBn(arg) || isBigInt(arg);
23
17
  }
24
-
25
18
  /** @internal */
26
19
  function sortArray(a, b) {
27
- // Vec, Tuple, Bytes etc.
28
- let sortRes = 0;
29
- const minLen = Math.min(a.length, b.length);
30
- for (let i = 0; i < minLen; ++i) {
31
- sortRes = sortAsc(a[i], b[i]);
32
- if (sortRes !== 0) {
33
- return sortRes;
20
+ // Vec, Tuple, Bytes etc.
21
+ let sortRes = 0;
22
+ const minLen = Math.min(a.length, b.length);
23
+ for (let i = 0; i < minLen; ++i) {
24
+ sortRes = sortAsc(a[i], b[i]);
25
+ if (sortRes !== 0) {
26
+ return sortRes;
27
+ }
34
28
  }
35
- }
36
- return a.length - b.length;
29
+ return a.length - b.length;
37
30
  }
38
-
39
31
  /**
40
32
  * Sort keys/values of BTreeSet/BTreeMap in ascending order for encoding compatibility with Rust's BTreeSet/BTreeMap
41
33
  * (https://doc.rust-lang.org/stable/std/collections/struct.BTreeSet.html)
42
34
  * (https://doc.rust-lang.org/stable/std/collections/struct.BTreeMap.html)
43
35
  */
44
36
  export function sortAsc(a, b) {
45
- if (isNumberLike(a) && isNumberLike(b)) {
46
- return bnToBn(a).cmp(bnToBn(b));
47
- } else if (a instanceof Map && b instanceof Map) {
48
- return sortAsc(Array.from(a.values()), Array.from(b.values()));
49
- } else if (isEnum(a) && isEnum(b)) {
50
- return sortAsc(a.index, b.index) || sortAsc(a.value, b.value);
51
- } else if (isArrayLike(a) && isArrayLike(b)) {
52
- return sortArray(a, b);
53
- } else if (isCodec(a) && isCodec(b)) {
54
- // Text, Bool etc.
55
- return sortAsc(a.toU8a(true), b.toU8a(true));
56
- }
57
- throw new Error(`Attempting to sort unrecognized values: ${stringify(a)} (typeof ${typeof a}) <-> ${stringify(b)} (typeof ${typeof b})`);
37
+ if (isNumberLike(a) && isNumberLike(b)) {
38
+ return bnToBn(a).cmp(bnToBn(b));
39
+ }
40
+ else if (a instanceof Map && b instanceof Map) {
41
+ return sortAsc(Array.from(a.values()), Array.from(b.values()));
42
+ }
43
+ else if (isEnum(a) && isEnum(b)) {
44
+ return sortAsc(a.index, b.index) || sortAsc(a.value, b.value);
45
+ }
46
+ else if (isArrayLike(a) && isArrayLike(b)) {
47
+ return sortArray(a, b);
48
+ }
49
+ else if (isCodec(a) && isCodec(b)) {
50
+ // Text, Bool etc.
51
+ return sortAsc(a.toU8a(true), b.toU8a(true));
52
+ }
53
+ throw new Error(`Attempting to sort unrecognized values: ${stringify(a)} (typeof ${typeof a}) <-> ${stringify(b)} (typeof ${typeof b})`);
58
54
  }
59
55
  export function sortSet(set) {
60
- return new Set(Array.from(set).sort(sortAsc));
56
+ return new Set(Array.from(set).sort(sortAsc));
61
57
  }
62
58
  export function sortMap(map) {
63
- return new Map(Array.from(map.entries()).sort(([keyA], [keyB]) => sortAsc(keyA, keyB)));
59
+ return new Map(Array.from(map.entries()).sort(([keyA], [keyB]) => sortAsc(keyA, keyB)));
64
60
  }
@@ -1,2 +1,2 @@
1
- import type { Codec, CodecClass, Registry } from '../types';
1
+ import type { Codec, CodecClass, Registry } from '../types/index.js';
2
2
  export declare function typeToConstructor<T extends Codec = Codec>(registry: Registry, type: string | CodecClass<T>): CodecClass<T>;
@@ -1,7 +1,6 @@
1
- // Copyright 2017-2023 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
1
  import { isString } from '@polkadot/util';
5
2
  export function typeToConstructor(registry, type) {
6
- return isString(type) ? registry.createClassUnsafe(type) : type;
3
+ return (isString(type)
4
+ ? registry.createClassUnsafe(type)
5
+ : type);
7
6
  }
@@ -1,2 +1,2 @@
1
- import type { CodecClass, Registry } from '../types';
1
+ import type { CodecClass, Registry } from '../types/index.js';
2
2
  export declare function typesToMap(registry: Registry, [Types, keys]: [CodecClass[], string[]]): Record<string, string>;
@@ -1,10 +1,7 @@
1
- // Copyright 2017-2023 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
1
  export function typesToMap(registry, [Types, keys]) {
5
- const result = {};
6
- for (let i = 0; i < keys.length; i++) {
7
- result[keys[i]] = registry.getClassName(Types[i]) || new Types[i](registry).toRawType();
8
- }
9
- return result;
2
+ const result = {};
3
+ for (let i = 0; i < keys.length; i++) {
4
+ result[keys[i]] = registry.getClassName(Types[i]) || new Types[i](registry).toRawType();
5
+ }
6
+ return result;
10
7
  }
package/utils/util.js CHANGED
@@ -1,7 +1,4 @@
1
- // Copyright 2017-2023 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
1
  import { isFunction } from '@polkadot/util';
5
2
  export function hasEq(o) {
6
- return isFunction(o.eq);
3
+ return isFunction(o.eq);
7
4
  }