@pezkuwi/types-codec 16.5.6 → 16.5.8

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 (758) hide show
  1. package/build/LICENSE +201 -0
  2. package/build/README.md +3 -0
  3. package/build/abstract/Array.d.ts +89 -0
  4. package/build/abstract/Array.js +166 -0
  5. package/build/abstract/Base.d.ts +75 -0
  6. package/build/abstract/Base.js +101 -0
  7. package/build/abstract/Int.d.ts +80 -0
  8. package/build/abstract/Int.js +226 -0
  9. package/build/abstract/Object.d.ts +67 -0
  10. package/build/abstract/Object.js +40 -0
  11. package/build/abstract/index.d.ts +3 -0
  12. package/build/abstract/index.js +3 -0
  13. package/build/base/Compact.d.ts +88 -0
  14. package/build/base/Compact.js +159 -0
  15. package/build/base/DoNotConstruct.d.ts +63 -0
  16. package/build/base/DoNotConstruct.js +95 -0
  17. package/build/base/Enum.d.ts +118 -0
  18. package/build/base/Enum.js +369 -0
  19. package/build/base/Int.d.ts +16 -0
  20. package/build/base/Int.js +26 -0
  21. package/build/base/Null.d.ts +56 -0
  22. package/build/base/Null.js +77 -0
  23. package/build/base/Option.d.ts +94 -0
  24. package/build/base/Option.js +232 -0
  25. package/build/base/Result.d.ts +38 -0
  26. package/build/base/Result.js +63 -0
  27. package/build/base/Tuple.d.ts +42 -0
  28. package/build/base/Tuple.js +110 -0
  29. package/build/base/UInt.d.ts +15 -0
  30. package/build/base/UInt.js +23 -0
  31. package/build/base/Vec.d.ts +28 -0
  32. package/build/base/Vec.js +102 -0
  33. package/build/base/VecAny.d.ts +15 -0
  34. package/build/base/VecAny.js +17 -0
  35. package/build/base/VecFixed.d.ts +30 -0
  36. package/build/base/VecFixed.js +67 -0
  37. package/build/base/index.d.ts +12 -0
  38. package/build/base/index.js +12 -0
  39. package/build/bundle.d.ts +7 -0
  40. package/build/bundle.js +7 -0
  41. package/build/cjs/abstract/Array.d.ts +89 -0
  42. package/build/cjs/abstract/Array.js +170 -0
  43. package/build/cjs/abstract/Base.d.ts +75 -0
  44. package/build/cjs/abstract/Base.js +105 -0
  45. package/build/cjs/abstract/Int.d.ts +80 -0
  46. package/build/cjs/abstract/Int.js +230 -0
  47. package/build/cjs/abstract/Object.d.ts +67 -0
  48. package/build/cjs/abstract/Object.js +44 -0
  49. package/build/cjs/abstract/index.d.ts +3 -0
  50. package/build/cjs/abstract/index.js +9 -0
  51. package/build/cjs/base/Compact.d.ts +88 -0
  52. package/build/cjs/base/Compact.js +163 -0
  53. package/build/cjs/base/DoNotConstruct.d.ts +63 -0
  54. package/build/cjs/base/DoNotConstruct.js +99 -0
  55. package/build/cjs/base/Enum.d.ts +118 -0
  56. package/build/cjs/base/Enum.js +373 -0
  57. package/build/cjs/base/Int.d.ts +16 -0
  58. package/build/cjs/base/Int.js +30 -0
  59. package/build/cjs/base/Null.d.ts +56 -0
  60. package/build/cjs/base/Null.js +81 -0
  61. package/build/cjs/base/Option.d.ts +94 -0
  62. package/build/cjs/base/Option.js +236 -0
  63. package/build/cjs/base/Result.d.ts +38 -0
  64. package/build/cjs/base/Result.js +67 -0
  65. package/build/cjs/base/Tuple.d.ts +42 -0
  66. package/build/cjs/base/Tuple.js +114 -0
  67. package/build/cjs/base/UInt.d.ts +15 -0
  68. package/build/cjs/base/UInt.js +27 -0
  69. package/build/cjs/base/Vec.d.ts +28 -0
  70. package/build/cjs/base/Vec.js +107 -0
  71. package/build/cjs/base/VecAny.d.ts +15 -0
  72. package/build/cjs/base/VecAny.js +21 -0
  73. package/build/cjs/base/VecFixed.d.ts +30 -0
  74. package/build/cjs/base/VecFixed.js +71 -0
  75. package/build/cjs/base/index.d.ts +12 -0
  76. package/build/cjs/base/index.js +27 -0
  77. package/build/cjs/bundle.d.ts +7 -0
  78. package/build/cjs/bundle.js +12 -0
  79. package/build/cjs/extended/BTreeMap.d.ts +5 -0
  80. package/build/cjs/extended/BTreeMap.js +14 -0
  81. package/build/cjs/extended/BTreeSet.d.ts +64 -0
  82. package/build/cjs/extended/BTreeSet.js +189 -0
  83. package/build/cjs/extended/BitVec.d.ts +37 -0
  84. package/build/cjs/extended/BitVec.js +112 -0
  85. package/build/cjs/extended/Bytes.d.ts +29 -0
  86. package/build/cjs/extended/Bytes.js +74 -0
  87. package/build/cjs/extended/HashMap.d.ts +5 -0
  88. package/build/cjs/extended/HashMap.js +14 -0
  89. package/build/cjs/extended/Linkage.d.ts +37 -0
  90. package/build/cjs/extended/Linkage.js +70 -0
  91. package/build/cjs/extended/Map.d.ts +59 -0
  92. package/build/cjs/extended/Map.js +204 -0
  93. package/build/cjs/extended/OptionBool.d.ts +36 -0
  94. package/build/cjs/extended/OptionBool.js +76 -0
  95. package/build/cjs/extended/Range.d.ts +29 -0
  96. package/build/cjs/extended/Range.js +42 -0
  97. package/build/cjs/extended/RangeInclusive.d.ts +6 -0
  98. package/build/cjs/extended/RangeInclusive.js +17 -0
  99. package/build/cjs/extended/Type.d.ts +16 -0
  100. package/build/cjs/extended/Type.js +25 -0
  101. package/build/cjs/extended/U8aFixed.d.ts +16 -0
  102. package/build/cjs/extended/U8aFixed.js +46 -0
  103. package/build/cjs/extended/WrapperKeepOpaque.d.ts +40 -0
  104. package/build/cjs/extended/WrapperKeepOpaque.js +103 -0
  105. package/build/cjs/extended/WrapperOpaque.d.ts +10 -0
  106. package/build/cjs/extended/WrapperOpaque.js +23 -0
  107. package/build/cjs/extended/index.d.ts +14 -0
  108. package/build/cjs/extended/index.js +32 -0
  109. package/build/cjs/index.d.ts +2 -0
  110. package/build/cjs/index.js +5 -0
  111. package/build/cjs/native/Bool.d.ts +71 -0
  112. package/build/cjs/native/Bool.js +113 -0
  113. package/build/cjs/native/Date.d.ts +84 -0
  114. package/build/cjs/native/Date.js +144 -0
  115. package/build/cjs/native/Float.d.ts +68 -0
  116. package/build/cjs/native/Float.js +111 -0
  117. package/build/cjs/native/Json.d.ts +69 -0
  118. package/build/cjs/native/Json.js +121 -0
  119. package/build/cjs/native/Raw.d.ts +87 -0
  120. package/build/cjs/native/Raw.js +144 -0
  121. package/build/cjs/native/Set.d.ts +84 -0
  122. package/build/cjs/native/Set.js +219 -0
  123. package/build/cjs/native/Struct.d.ts +106 -0
  124. package/build/cjs/native/Struct.data.js +4 -0
  125. package/build/cjs/native/Struct.js +264 -0
  126. package/build/cjs/native/Text.d.ts +77 -0
  127. package/build/cjs/native/Text.js +154 -0
  128. package/build/cjs/native/index.d.ts +8 -0
  129. package/build/cjs/native/index.js +22 -0
  130. package/build/cjs/package.json +3 -0
  131. package/build/cjs/packageDetect.d.ts +1 -0
  132. package/build/cjs/packageDetect.js +5 -0
  133. package/build/cjs/packageInfo.d.ts +6 -0
  134. package/build/cjs/packageInfo.js +4 -0
  135. package/build/cjs/primitive/F32.d.ts +11 -0
  136. package/build/cjs/primitive/F32.js +14 -0
  137. package/build/cjs/primitive/F64.d.ts +11 -0
  138. package/build/cjs/primitive/F64.js +14 -0
  139. package/build/cjs/primitive/I128.d.ts +11 -0
  140. package/build/cjs/primitive/I128.js +14 -0
  141. package/build/cjs/primitive/I16.d.ts +11 -0
  142. package/build/cjs/primitive/I16.js +14 -0
  143. package/build/cjs/primitive/I256.d.ts +11 -0
  144. package/build/cjs/primitive/I256.js +14 -0
  145. package/build/cjs/primitive/I32.d.ts +11 -0
  146. package/build/cjs/primitive/I32.js +14 -0
  147. package/build/cjs/primitive/I64.d.ts +11 -0
  148. package/build/cjs/primitive/I64.js +14 -0
  149. package/build/cjs/primitive/I8.d.ts +11 -0
  150. package/build/cjs/primitive/I8.js +14 -0
  151. package/build/cjs/primitive/ISize.d.ts +12 -0
  152. package/build/cjs/primitive/ISize.js +18 -0
  153. package/build/cjs/primitive/U128.d.ts +11 -0
  154. package/build/cjs/primitive/U128.js +14 -0
  155. package/build/cjs/primitive/U16.d.ts +11 -0
  156. package/build/cjs/primitive/U16.js +14 -0
  157. package/build/cjs/primitive/U256.d.ts +11 -0
  158. package/build/cjs/primitive/U256.js +14 -0
  159. package/build/cjs/primitive/U32.d.ts +11 -0
  160. package/build/cjs/primitive/U32.js +14 -0
  161. package/build/cjs/primitive/U64.d.ts +11 -0
  162. package/build/cjs/primitive/U64.js +14 -0
  163. package/build/cjs/primitive/U8.d.ts +11 -0
  164. package/build/cjs/primitive/U8.js +14 -0
  165. package/build/cjs/primitive/USize.d.ts +12 -0
  166. package/build/cjs/primitive/USize.js +18 -0
  167. package/build/cjs/primitive/index.d.ts +16 -0
  168. package/build/cjs/primitive/index.js +51 -0
  169. package/build/cjs/types/codec.d.ts +113 -0
  170. package/build/cjs/types/codec.js +2 -0
  171. package/build/cjs/types/helpers.d.ts +27 -0
  172. package/build/cjs/types/helpers.js +2 -0
  173. package/build/cjs/types/index.d.ts +4 -0
  174. package/build/cjs/types/index.js +7 -0
  175. package/build/cjs/types/interfaces.d.ts +74 -0
  176. package/build/cjs/types/interfaces.js +2 -0
  177. package/build/cjs/types/registry.d.ts +67 -0
  178. package/build/cjs/types/registry.js +2 -0
  179. package/build/cjs/utils/compareArray.d.ts +1 -0
  180. package/build/cjs/utils/compareArray.js +13 -0
  181. package/build/cjs/utils/compareMap.d.ts +1 -0
  182. package/build/cjs/utils/compareMap.js +30 -0
  183. package/build/cjs/utils/compareSet.d.ts +1 -0
  184. package/build/cjs/utils/compareSet.js +20 -0
  185. package/build/cjs/utils/decodeU8a.d.ts +26 -0
  186. package/build/cjs/utils/decodeU8a.js +105 -0
  187. package/build/cjs/utils/index.d.ts +8 -0
  188. package/build/cjs/utils/index.js +25 -0
  189. package/build/cjs/utils/sanitize.d.ts +15 -0
  190. package/build/cjs/utils/sanitize.js +233 -0
  191. package/build/cjs/utils/sortValues.d.ts +12 -0
  192. package/build/cjs/utils/sortValues.js +84 -0
  193. package/build/cjs/utils/toConstructors.d.ts +16 -0
  194. package/build/cjs/utils/toConstructors.js +40 -0
  195. package/build/cjs/utils/typesToMap.d.ts +2 -0
  196. package/build/cjs/utils/typesToMap.js +10 -0
  197. package/build/cjs/utils/util.d.ts +3 -0
  198. package/build/cjs/utils/util.js +7 -0
  199. package/build/extended/BTreeMap.d.ts +5 -0
  200. package/build/extended/BTreeMap.js +10 -0
  201. package/build/extended/BTreeSet.d.ts +64 -0
  202. package/build/extended/BTreeSet.js +185 -0
  203. package/build/extended/BitVec.d.ts +37 -0
  204. package/build/extended/BitVec.js +108 -0
  205. package/build/extended/Bytes.d.ts +29 -0
  206. package/build/extended/Bytes.js +70 -0
  207. package/build/extended/HashMap.d.ts +5 -0
  208. package/build/extended/HashMap.js +10 -0
  209. package/build/extended/Linkage.d.ts +37 -0
  210. package/build/extended/Linkage.js +65 -0
  211. package/build/extended/Map.d.ts +59 -0
  212. package/build/extended/Map.js +200 -0
  213. package/build/extended/OptionBool.d.ts +36 -0
  214. package/build/extended/OptionBool.js +72 -0
  215. package/build/extended/Range.d.ts +29 -0
  216. package/build/extended/Range.js +38 -0
  217. package/build/extended/RangeInclusive.d.ts +6 -0
  218. package/build/extended/RangeInclusive.js +13 -0
  219. package/build/extended/Type.d.ts +16 -0
  220. package/build/extended/Type.js +21 -0
  221. package/build/extended/U8aFixed.d.ts +16 -0
  222. package/build/extended/U8aFixed.js +42 -0
  223. package/build/extended/WrapperKeepOpaque.d.ts +40 -0
  224. package/build/extended/WrapperKeepOpaque.js +99 -0
  225. package/build/extended/WrapperOpaque.d.ts +10 -0
  226. package/build/extended/WrapperOpaque.js +19 -0
  227. package/build/extended/index.d.ts +14 -0
  228. package/build/extended/index.js +14 -0
  229. package/build/index.d.ts +2 -0
  230. package/build/index.js +2 -0
  231. package/build/native/Bool.d.ts +71 -0
  232. package/build/native/Bool.js +109 -0
  233. package/build/native/Date.d.ts +84 -0
  234. package/build/native/Date.js +140 -0
  235. package/build/native/Float.d.ts +68 -0
  236. package/build/native/Float.js +107 -0
  237. package/build/native/Json.d.ts +69 -0
  238. package/build/native/Json.js +117 -0
  239. package/build/native/Raw.d.ts +87 -0
  240. package/build/native/Raw.js +140 -0
  241. package/build/native/Set.d.ts +84 -0
  242. package/build/native/Set.js +215 -0
  243. package/build/native/Struct.d.ts +106 -0
  244. package/build/native/Struct.data.js +1 -0
  245. package/build/native/Struct.js +260 -0
  246. package/build/native/Text.d.ts +77 -0
  247. package/build/native/Text.js +150 -0
  248. package/build/native/index.d.ts +8 -0
  249. package/build/native/index.js +8 -0
  250. package/build/package.json +1149 -0
  251. package/build/packageDetect.d.ts +1 -0
  252. package/build/packageDetect.js +3 -0
  253. package/build/packageInfo.d.ts +6 -0
  254. package/build/packageInfo.js +1 -0
  255. package/build/primitive/F32.d.ts +11 -0
  256. package/build/primitive/F32.js +10 -0
  257. package/build/primitive/F64.d.ts +11 -0
  258. package/build/primitive/F64.js +10 -0
  259. package/build/primitive/I128.d.ts +11 -0
  260. package/build/primitive/I128.js +10 -0
  261. package/build/primitive/I16.d.ts +11 -0
  262. package/build/primitive/I16.js +10 -0
  263. package/build/primitive/I256.d.ts +11 -0
  264. package/build/primitive/I256.js +10 -0
  265. package/build/primitive/I32.d.ts +11 -0
  266. package/build/primitive/I32.js +10 -0
  267. package/build/primitive/I64.d.ts +11 -0
  268. package/build/primitive/I64.js +10 -0
  269. package/build/primitive/I8.d.ts +11 -0
  270. package/build/primitive/I8.js +10 -0
  271. package/build/primitive/ISize.d.ts +12 -0
  272. package/build/primitive/ISize.js +14 -0
  273. package/build/primitive/U128.d.ts +11 -0
  274. package/build/primitive/U128.js +10 -0
  275. package/build/primitive/U16.d.ts +11 -0
  276. package/build/primitive/U16.js +10 -0
  277. package/build/primitive/U256.d.ts +11 -0
  278. package/build/primitive/U256.js +10 -0
  279. package/build/primitive/U32.d.ts +11 -0
  280. package/build/primitive/U32.js +10 -0
  281. package/build/primitive/U64.d.ts +11 -0
  282. package/build/primitive/U64.js +10 -0
  283. package/build/primitive/U8.d.ts +11 -0
  284. package/build/primitive/U8.js +10 -0
  285. package/build/primitive/USize.d.ts +12 -0
  286. package/build/primitive/USize.js +14 -0
  287. package/build/primitive/index.d.ts +16 -0
  288. package/build/primitive/index.js +16 -0
  289. package/build/types/codec.d.ts +113 -0
  290. package/build/types/codec.js +1 -0
  291. package/build/types/helpers.d.ts +27 -0
  292. package/build/types/helpers.js +1 -0
  293. package/build/types/index.d.ts +4 -0
  294. package/build/types/index.js +4 -0
  295. package/build/types/interfaces.d.ts +74 -0
  296. package/build/types/interfaces.js +1 -0
  297. package/build/types/registry.d.ts +67 -0
  298. package/build/types/registry.js +1 -0
  299. package/build/utils/compareArray.d.ts +1 -0
  300. package/build/utils/compareArray.js +10 -0
  301. package/build/utils/compareMap.d.ts +1 -0
  302. package/build/utils/compareMap.js +27 -0
  303. package/build/utils/compareSet.d.ts +1 -0
  304. package/build/utils/compareSet.js +17 -0
  305. package/build/utils/decodeU8a.d.ts +26 -0
  306. package/build/utils/decodeU8a.js +100 -0
  307. package/build/utils/index.d.ts +8 -0
  308. package/build/utils/index.js +8 -0
  309. package/build/utils/sanitize.d.ts +15 -0
  310. package/build/utils/sanitize.js +219 -0
  311. package/build/utils/sortValues.d.ts +12 -0
  312. package/build/utils/sortValues.js +79 -0
  313. package/build/utils/toConstructors.d.ts +16 -0
  314. package/build/utils/toConstructors.js +35 -0
  315. package/build/utils/typesToMap.d.ts +2 -0
  316. package/build/utils/typesToMap.js +7 -0
  317. package/build/utils/util.d.ts +3 -0
  318. package/build/utils/util.js +4 -0
  319. package/build-deno/README.md +3 -0
  320. package/build-deno/abstract/Array.ts +211 -0
  321. package/build-deno/abstract/Base.ts +127 -0
  322. package/build-deno/abstract/Int.ts +267 -0
  323. package/build-deno/abstract/Object.ts +97 -0
  324. package/build-deno/abstract/index.ts +4 -0
  325. package/build-deno/base/Compact.ts +196 -0
  326. package/build-deno/base/DoNotConstruct.ts +116 -0
  327. package/build-deno/base/Enum.ts +457 -0
  328. package/build-deno/base/Int.ts +32 -0
  329. package/build-deno/base/Null.ts +94 -0
  330. package/build-deno/base/Option.ts +273 -0
  331. package/build-deno/base/Result.ts +77 -0
  332. package/build-deno/base/Tuple.ts +147 -0
  333. package/build-deno/base/UInt.ts +28 -0
  334. package/build-deno/base/Vec.ts +131 -0
  335. package/build-deno/base/VecAny.ts +21 -0
  336. package/build-deno/base/VecFixed.ts +90 -0
  337. package/build-deno/base/index.ts +13 -0
  338. package/build-deno/bundle.ts +9 -0
  339. package/build-deno/checkTypes.manual.ts +10 -0
  340. package/build-deno/extended/BTreeMap.ts +14 -0
  341. package/build-deno/extended/BTreeSet.ts +231 -0
  342. package/build-deno/extended/BitVec.ts +135 -0
  343. package/build-deno/extended/Bytes.ts +85 -0
  344. package/build-deno/extended/HashMap.ts +14 -0
  345. package/build-deno/extended/Linkage.ts +79 -0
  346. package/build-deno/extended/Map.ts +253 -0
  347. package/build-deno/extended/OptionBool.ts +91 -0
  348. package/build-deno/extended/Range.ts +54 -0
  349. package/build-deno/extended/RangeInclusive.ts +18 -0
  350. package/build-deno/extended/Type.ts +27 -0
  351. package/build-deno/extended/U8aFixed.ts +55 -0
  352. package/build-deno/extended/WrapperKeepOpaque.ts +126 -0
  353. package/build-deno/extended/WrapperOpaque.ts +25 -0
  354. package/build-deno/extended/index.ts +15 -0
  355. package/build-deno/index.ts +4 -0
  356. package/build-deno/mod.ts +2 -0
  357. package/build-deno/native/Bool.ts +135 -0
  358. package/build-deno/native/Date.ts +167 -0
  359. package/build-deno/native/Float.ts +134 -0
  360. package/build-deno/native/Json.ts +145 -0
  361. package/build-deno/native/Raw.ts +169 -0
  362. package/build-deno/native/Set.ts +267 -0
  363. package/build-deno/native/Struct.data.ts +2 -0
  364. package/build-deno/native/Struct.ts +336 -0
  365. package/build-deno/native/Text.ts +182 -0
  366. package/build-deno/native/index.ts +9 -0
  367. package/build-deno/packageDetect.ts +7 -0
  368. package/build-deno/packageInfo.ts +3 -0
  369. package/build-deno/primitive/F32.ts +12 -0
  370. package/build-deno/primitive/F64.ts +12 -0
  371. package/build-deno/primitive/I128.ts +12 -0
  372. package/build-deno/primitive/I16.ts +12 -0
  373. package/build-deno/primitive/I256.ts +12 -0
  374. package/build-deno/primitive/I32.ts +12 -0
  375. package/build-deno/primitive/I64.ts +12 -0
  376. package/build-deno/primitive/I8.ts +12 -0
  377. package/build-deno/primitive/ISize.ts +19 -0
  378. package/build-deno/primitive/U128.ts +12 -0
  379. package/build-deno/primitive/U16.ts +12 -0
  380. package/build-deno/primitive/U256.ts +12 -0
  381. package/build-deno/primitive/U32.ts +12 -0
  382. package/build-deno/primitive/U64.ts +12 -0
  383. package/build-deno/primitive/U8.ts +12 -0
  384. package/build-deno/primitive/USize.ts +19 -0
  385. package/build-deno/primitive/index.ts +17 -0
  386. package/build-deno/test/performance.ts +57 -0
  387. package/build-deno/types/codec.ts +138 -0
  388. package/build-deno/types/helpers.ts +41 -0
  389. package/build-deno/types/index.ts +5 -0
  390. package/build-deno/types/interfaces.ts +94 -0
  391. package/build-deno/types/registry.ts +84 -0
  392. package/build-deno/utils/compareArray.ts +18 -0
  393. package/build-deno/utils/compareMap.ts +36 -0
  394. package/build-deno/utils/compareSet.ts +19 -0
  395. package/build-deno/utils/decodeU8a.ts +121 -0
  396. package/build-deno/utils/index.ts +9 -0
  397. package/build-deno/utils/sanitize.ts +282 -0
  398. package/build-deno/utils/sortValues.ts +101 -0
  399. package/build-deno/utils/toConstructors.ts +44 -0
  400. package/build-deno/utils/typesToMap.ts +12 -0
  401. package/build-deno/utils/util.ts +6 -0
  402. package/build-tsc/abstract/Array.d.ts +89 -0
  403. package/build-tsc/abstract/Base.d.ts +75 -0
  404. package/build-tsc/abstract/Int.d.ts +80 -0
  405. package/build-tsc/abstract/Object.d.ts +67 -0
  406. package/build-tsc/abstract/index.d.ts +3 -0
  407. package/build-tsc/base/Compact.d.ts +88 -0
  408. package/build-tsc/base/DoNotConstruct.d.ts +63 -0
  409. package/build-tsc/base/Enum.d.ts +118 -0
  410. package/build-tsc/base/Int.d.ts +16 -0
  411. package/build-tsc/base/Null.d.ts +56 -0
  412. package/build-tsc/base/Option.d.ts +94 -0
  413. package/build-tsc/base/Result.d.ts +38 -0
  414. package/build-tsc/base/Tuple.d.ts +42 -0
  415. package/build-tsc/base/UInt.d.ts +15 -0
  416. package/build-tsc/base/Vec.d.ts +28 -0
  417. package/build-tsc/base/VecAny.d.ts +15 -0
  418. package/build-tsc/base/VecFixed.d.ts +30 -0
  419. package/build-tsc/base/index.d.ts +12 -0
  420. package/build-tsc/bundle.d.ts +7 -0
  421. package/build-tsc/extended/BTreeMap.d.ts +5 -0
  422. package/build-tsc/extended/BTreeSet.d.ts +64 -0
  423. package/build-tsc/extended/BitVec.d.ts +37 -0
  424. package/build-tsc/extended/Bytes.d.ts +29 -0
  425. package/build-tsc/extended/HashMap.d.ts +5 -0
  426. package/build-tsc/extended/Linkage.d.ts +37 -0
  427. package/build-tsc/extended/Map.d.ts +59 -0
  428. package/build-tsc/extended/OptionBool.d.ts +36 -0
  429. package/build-tsc/extended/Range.d.ts +29 -0
  430. package/build-tsc/extended/RangeInclusive.d.ts +6 -0
  431. package/build-tsc/extended/Type.d.ts +16 -0
  432. package/build-tsc/extended/U8aFixed.d.ts +16 -0
  433. package/build-tsc/extended/WrapperKeepOpaque.d.ts +40 -0
  434. package/build-tsc/extended/WrapperOpaque.d.ts +10 -0
  435. package/build-tsc/extended/index.d.ts +14 -0
  436. package/build-tsc/index.d.ts +2 -0
  437. package/build-tsc/native/Bool.d.ts +71 -0
  438. package/build-tsc/native/Date.d.ts +84 -0
  439. package/build-tsc/native/Float.d.ts +68 -0
  440. package/build-tsc/native/Json.d.ts +69 -0
  441. package/build-tsc/native/Raw.d.ts +87 -0
  442. package/build-tsc/native/Set.d.ts +84 -0
  443. package/build-tsc/native/Struct.d.ts +106 -0
  444. package/build-tsc/native/Text.d.ts +77 -0
  445. package/build-tsc/native/index.d.ts +8 -0
  446. package/build-tsc/packageDetect.d.ts +1 -0
  447. package/build-tsc/packageInfo.d.ts +6 -0
  448. package/build-tsc/primitive/F32.d.ts +11 -0
  449. package/build-tsc/primitive/F64.d.ts +11 -0
  450. package/build-tsc/primitive/I128.d.ts +11 -0
  451. package/build-tsc/primitive/I16.d.ts +11 -0
  452. package/build-tsc/primitive/I256.d.ts +11 -0
  453. package/build-tsc/primitive/I32.d.ts +11 -0
  454. package/build-tsc/primitive/I64.d.ts +11 -0
  455. package/build-tsc/primitive/I8.d.ts +11 -0
  456. package/build-tsc/primitive/ISize.d.ts +12 -0
  457. package/build-tsc/primitive/U128.d.ts +11 -0
  458. package/build-tsc/primitive/U16.d.ts +11 -0
  459. package/build-tsc/primitive/U256.d.ts +11 -0
  460. package/build-tsc/primitive/U32.d.ts +11 -0
  461. package/build-tsc/primitive/U64.d.ts +11 -0
  462. package/build-tsc/primitive/U8.d.ts +11 -0
  463. package/build-tsc/primitive/USize.d.ts +12 -0
  464. package/build-tsc/primitive/index.d.ts +16 -0
  465. package/build-tsc/types/codec.d.ts +113 -0
  466. package/build-tsc/types/helpers.d.ts +27 -0
  467. package/build-tsc/types/index.d.ts +4 -0
  468. package/build-tsc/types/interfaces.d.ts +74 -0
  469. package/build-tsc/types/registry.d.ts +67 -0
  470. package/build-tsc/utils/compareArray.d.ts +1 -0
  471. package/build-tsc/utils/compareMap.d.ts +1 -0
  472. package/build-tsc/utils/compareSet.d.ts +1 -0
  473. package/build-tsc/utils/decodeU8a.d.ts +26 -0
  474. package/build-tsc/utils/index.d.ts +8 -0
  475. package/build-tsc/utils/sanitize.d.ts +15 -0
  476. package/build-tsc/utils/sortValues.d.ts +12 -0
  477. package/build-tsc/utils/toConstructors.d.ts +16 -0
  478. package/build-tsc/utils/typesToMap.d.ts +2 -0
  479. package/build-tsc/utils/util.d.ts +3 -0
  480. package/build-tsc-cjs/abstract/Array.js +170 -0
  481. package/build-tsc-cjs/abstract/Base.js +105 -0
  482. package/build-tsc-cjs/abstract/Int.js +230 -0
  483. package/build-tsc-cjs/abstract/Object.js +44 -0
  484. package/build-tsc-cjs/abstract/index.js +9 -0
  485. package/build-tsc-cjs/base/Compact.js +163 -0
  486. package/build-tsc-cjs/base/DoNotConstruct.js +99 -0
  487. package/build-tsc-cjs/base/Enum.js +373 -0
  488. package/build-tsc-cjs/base/Int.js +30 -0
  489. package/build-tsc-cjs/base/Null.js +81 -0
  490. package/build-tsc-cjs/base/Option.js +236 -0
  491. package/build-tsc-cjs/base/Result.js +67 -0
  492. package/build-tsc-cjs/base/Tuple.js +114 -0
  493. package/build-tsc-cjs/base/UInt.js +27 -0
  494. package/build-tsc-cjs/base/Vec.js +107 -0
  495. package/build-tsc-cjs/base/VecAny.js +21 -0
  496. package/build-tsc-cjs/base/VecFixed.js +71 -0
  497. package/build-tsc-cjs/base/index.js +27 -0
  498. package/build-tsc-cjs/bundle.js +12 -0
  499. package/build-tsc-cjs/extended/BTreeMap.js +14 -0
  500. package/build-tsc-cjs/extended/BTreeSet.js +189 -0
  501. package/build-tsc-cjs/extended/BitVec.js +112 -0
  502. package/build-tsc-cjs/extended/Bytes.js +74 -0
  503. package/build-tsc-cjs/extended/HashMap.js +14 -0
  504. package/build-tsc-cjs/extended/Linkage.js +70 -0
  505. package/build-tsc-cjs/extended/Map.js +204 -0
  506. package/build-tsc-cjs/extended/OptionBool.js +76 -0
  507. package/build-tsc-cjs/extended/Range.js +42 -0
  508. package/build-tsc-cjs/extended/RangeInclusive.js +17 -0
  509. package/build-tsc-cjs/extended/Type.js +25 -0
  510. package/build-tsc-cjs/extended/U8aFixed.js +46 -0
  511. package/build-tsc-cjs/extended/WrapperKeepOpaque.js +103 -0
  512. package/build-tsc-cjs/extended/WrapperOpaque.js +23 -0
  513. package/build-tsc-cjs/extended/index.js +32 -0
  514. package/build-tsc-cjs/index.js +5 -0
  515. package/build-tsc-cjs/native/Bool.js +113 -0
  516. package/build-tsc-cjs/native/Date.js +144 -0
  517. package/build-tsc-cjs/native/Float.js +111 -0
  518. package/build-tsc-cjs/native/Json.js +121 -0
  519. package/build-tsc-cjs/native/Raw.js +144 -0
  520. package/build-tsc-cjs/native/Set.js +219 -0
  521. package/build-tsc-cjs/native/Struct.data.js +4 -0
  522. package/build-tsc-cjs/native/Struct.js +264 -0
  523. package/build-tsc-cjs/native/Text.js +154 -0
  524. package/build-tsc-cjs/native/index.js +22 -0
  525. package/build-tsc-cjs/packageDetect.js +5 -0
  526. package/build-tsc-cjs/packageInfo.js +4 -0
  527. package/build-tsc-cjs/primitive/F32.js +14 -0
  528. package/build-tsc-cjs/primitive/F64.js +14 -0
  529. package/build-tsc-cjs/primitive/I128.js +14 -0
  530. package/build-tsc-cjs/primitive/I16.js +14 -0
  531. package/build-tsc-cjs/primitive/I256.js +14 -0
  532. package/build-tsc-cjs/primitive/I32.js +14 -0
  533. package/build-tsc-cjs/primitive/I64.js +14 -0
  534. package/build-tsc-cjs/primitive/I8.js +14 -0
  535. package/build-tsc-cjs/primitive/ISize.js +18 -0
  536. package/build-tsc-cjs/primitive/U128.js +14 -0
  537. package/build-tsc-cjs/primitive/U16.js +14 -0
  538. package/build-tsc-cjs/primitive/U256.js +14 -0
  539. package/build-tsc-cjs/primitive/U32.js +14 -0
  540. package/build-tsc-cjs/primitive/U64.js +14 -0
  541. package/build-tsc-cjs/primitive/U8.js +14 -0
  542. package/build-tsc-cjs/primitive/USize.js +18 -0
  543. package/build-tsc-cjs/primitive/index.js +51 -0
  544. package/build-tsc-cjs/types/codec.js +2 -0
  545. package/build-tsc-cjs/types/helpers.js +2 -0
  546. package/build-tsc-cjs/types/index.js +7 -0
  547. package/build-tsc-cjs/types/interfaces.js +2 -0
  548. package/build-tsc-cjs/types/registry.js +2 -0
  549. package/build-tsc-cjs/utils/compareArray.js +13 -0
  550. package/build-tsc-cjs/utils/compareMap.js +30 -0
  551. package/build-tsc-cjs/utils/compareSet.js +20 -0
  552. package/build-tsc-cjs/utils/decodeU8a.js +105 -0
  553. package/build-tsc-cjs/utils/index.js +25 -0
  554. package/build-tsc-cjs/utils/sanitize.js +233 -0
  555. package/build-tsc-cjs/utils/sortValues.js +84 -0
  556. package/build-tsc-cjs/utils/toConstructors.js +40 -0
  557. package/build-tsc-cjs/utils/typesToMap.js +10 -0
  558. package/build-tsc-cjs/utils/util.js +7 -0
  559. package/build-tsc-esm/abstract/Array.js +166 -0
  560. package/build-tsc-esm/abstract/Base.js +101 -0
  561. package/build-tsc-esm/abstract/Int.js +226 -0
  562. package/build-tsc-esm/abstract/Object.js +40 -0
  563. package/build-tsc-esm/abstract/index.js +3 -0
  564. package/build-tsc-esm/base/Compact.js +159 -0
  565. package/build-tsc-esm/base/DoNotConstruct.js +95 -0
  566. package/build-tsc-esm/base/Enum.js +369 -0
  567. package/build-tsc-esm/base/Int.js +26 -0
  568. package/build-tsc-esm/base/Null.js +77 -0
  569. package/build-tsc-esm/base/Option.js +232 -0
  570. package/build-tsc-esm/base/Result.js +63 -0
  571. package/build-tsc-esm/base/Tuple.js +110 -0
  572. package/build-tsc-esm/base/UInt.js +23 -0
  573. package/build-tsc-esm/base/Vec.js +102 -0
  574. package/build-tsc-esm/base/VecAny.js +17 -0
  575. package/build-tsc-esm/base/VecFixed.js +67 -0
  576. package/build-tsc-esm/base/index.js +12 -0
  577. package/build-tsc-esm/bundle.js +7 -0
  578. package/build-tsc-esm/extended/BTreeMap.js +10 -0
  579. package/build-tsc-esm/extended/BTreeSet.js +185 -0
  580. package/build-tsc-esm/extended/BitVec.js +108 -0
  581. package/build-tsc-esm/extended/Bytes.js +70 -0
  582. package/build-tsc-esm/extended/HashMap.js +10 -0
  583. package/build-tsc-esm/extended/Linkage.js +65 -0
  584. package/build-tsc-esm/extended/Map.js +200 -0
  585. package/build-tsc-esm/extended/OptionBool.js +72 -0
  586. package/build-tsc-esm/extended/Range.js +38 -0
  587. package/build-tsc-esm/extended/RangeInclusive.js +13 -0
  588. package/build-tsc-esm/extended/Type.js +21 -0
  589. package/build-tsc-esm/extended/U8aFixed.js +42 -0
  590. package/build-tsc-esm/extended/WrapperKeepOpaque.js +99 -0
  591. package/build-tsc-esm/extended/WrapperOpaque.js +19 -0
  592. package/build-tsc-esm/extended/index.js +14 -0
  593. package/build-tsc-esm/index.js +2 -0
  594. package/build-tsc-esm/native/Bool.js +109 -0
  595. package/build-tsc-esm/native/Date.js +140 -0
  596. package/build-tsc-esm/native/Float.js +107 -0
  597. package/build-tsc-esm/native/Json.js +117 -0
  598. package/build-tsc-esm/native/Raw.js +140 -0
  599. package/build-tsc-esm/native/Set.js +215 -0
  600. package/build-tsc-esm/native/Struct.data.js +1 -0
  601. package/build-tsc-esm/native/Struct.js +260 -0
  602. package/build-tsc-esm/native/Text.js +150 -0
  603. package/build-tsc-esm/native/index.js +8 -0
  604. package/build-tsc-esm/packageDetect.js +3 -0
  605. package/build-tsc-esm/packageInfo.js +1 -0
  606. package/build-tsc-esm/primitive/F32.js +10 -0
  607. package/build-tsc-esm/primitive/F64.js +10 -0
  608. package/build-tsc-esm/primitive/I128.js +10 -0
  609. package/build-tsc-esm/primitive/I16.js +10 -0
  610. package/build-tsc-esm/primitive/I256.js +10 -0
  611. package/build-tsc-esm/primitive/I32.js +10 -0
  612. package/build-tsc-esm/primitive/I64.js +10 -0
  613. package/build-tsc-esm/primitive/I8.js +10 -0
  614. package/build-tsc-esm/primitive/ISize.js +14 -0
  615. package/build-tsc-esm/primitive/U128.js +10 -0
  616. package/build-tsc-esm/primitive/U16.js +10 -0
  617. package/build-tsc-esm/primitive/U256.js +10 -0
  618. package/build-tsc-esm/primitive/U32.js +10 -0
  619. package/build-tsc-esm/primitive/U64.js +10 -0
  620. package/build-tsc-esm/primitive/U8.js +10 -0
  621. package/build-tsc-esm/primitive/USize.js +14 -0
  622. package/build-tsc-esm/primitive/index.js +16 -0
  623. package/build-tsc-esm/types/codec.js +1 -0
  624. package/build-tsc-esm/types/helpers.js +1 -0
  625. package/build-tsc-esm/types/index.js +4 -0
  626. package/build-tsc-esm/types/interfaces.js +1 -0
  627. package/build-tsc-esm/types/registry.js +1 -0
  628. package/build-tsc-esm/utils/compareArray.js +10 -0
  629. package/build-tsc-esm/utils/compareMap.js +27 -0
  630. package/build-tsc-esm/utils/compareSet.js +17 -0
  631. package/build-tsc-esm/utils/decodeU8a.js +100 -0
  632. package/build-tsc-esm/utils/index.js +8 -0
  633. package/build-tsc-esm/utils/sanitize.js +219 -0
  634. package/build-tsc-esm/utils/sortValues.js +79 -0
  635. package/build-tsc-esm/utils/toConstructors.js +35 -0
  636. package/build-tsc-esm/utils/typesToMap.js +7 -0
  637. package/build-tsc-esm/utils/util.js +4 -0
  638. package/cjs/packageInfo.js +1 -1
  639. package/package.json +1 -1
  640. package/packageInfo.js +1 -1
  641. package/src/abstract/Array.ts +213 -0
  642. package/src/abstract/Base.ts +129 -0
  643. package/src/abstract/Int.ts +271 -0
  644. package/src/abstract/Object.ts +99 -0
  645. package/src/abstract/index.ts +6 -0
  646. package/src/base/Compact.spec.ts +99 -0
  647. package/src/base/Compact.ts +198 -0
  648. package/src/base/DoNotConstruct.spec.ts +23 -0
  649. package/src/base/DoNotConstruct.ts +118 -0
  650. package/src/base/Enum.spec.ts +487 -0
  651. package/src/base/Enum.ts +460 -0
  652. package/src/base/Int.spec.ts +225 -0
  653. package/src/base/Int.ts +34 -0
  654. package/src/base/Null.spec.ts +41 -0
  655. package/src/base/Null.ts +96 -0
  656. package/src/base/Option.spec.ts +216 -0
  657. package/src/base/Option.ts +275 -0
  658. package/src/base/Result.spec.ts +64 -0
  659. package/src/base/Result.ts +79 -0
  660. package/src/base/Tuple.spec.ts +161 -0
  661. package/src/base/Tuple.ts +149 -0
  662. package/src/base/UInt.spec.ts +192 -0
  663. package/src/base/UInt.ts +30 -0
  664. package/src/base/Vec.spec.ts +224 -0
  665. package/src/base/Vec.ts +133 -0
  666. package/src/base/VecAny.ts +23 -0
  667. package/src/base/VecFixed.spec.ts +78 -0
  668. package/src/base/VecFixed.ts +92 -0
  669. package/src/base/index.ts +15 -0
  670. package/src/bundle.ts +13 -0
  671. package/src/checkTypes.manual.ts +12 -0
  672. package/src/extended/BTreeMap.spec.ts +245 -0
  673. package/src/extended/BTreeMap.ts +16 -0
  674. package/src/extended/BTreeSet.spec.ts +260 -0
  675. package/src/extended/BTreeSet.ts +233 -0
  676. package/src/extended/BitVec.spec.ts +97 -0
  677. package/src/extended/BitVec.ts +137 -0
  678. package/src/extended/Bytes.spec.ts +75 -0
  679. package/src/extended/Bytes.ts +88 -0
  680. package/src/extended/HashMap.spec.ts +36 -0
  681. package/src/extended/HashMap.ts +16 -0
  682. package/src/extended/Linkage.spec.ts +43 -0
  683. package/src/extended/Linkage.ts +81 -0
  684. package/src/extended/Map.spec.ts +123 -0
  685. package/src/extended/Map.ts +255 -0
  686. package/src/extended/OptionBool.spec.ts +49 -0
  687. package/src/extended/OptionBool.ts +93 -0
  688. package/src/extended/Range.spec.ts +37 -0
  689. package/src/extended/Range.ts +56 -0
  690. package/src/extended/RangeInclusive.ts +20 -0
  691. package/src/extended/Type.spec.ts +118 -0
  692. package/src/extended/Type.ts +29 -0
  693. package/src/extended/U8aFixed.spec.ts +117 -0
  694. package/src/extended/U8aFixed.ts +57 -0
  695. package/src/extended/WrapperKeepOpaque.spec.ts +101 -0
  696. package/src/extended/WrapperKeepOpaque.ts +128 -0
  697. package/src/extended/WrapperOpaque.spec.ts +58 -0
  698. package/src/extended/WrapperOpaque.ts +27 -0
  699. package/src/extended/index.ts +17 -0
  700. package/src/index.ts +6 -0
  701. package/src/mod.ts +4 -0
  702. package/src/native/Bool.spec.ts +74 -0
  703. package/src/native/Bool.ts +137 -0
  704. package/src/native/Date.spec.ts +85 -0
  705. package/src/native/Date.ts +169 -0
  706. package/src/native/Float.spec.ts +51 -0
  707. package/src/native/Float.ts +136 -0
  708. package/src/native/Json.ts +147 -0
  709. package/src/native/Raw.spec.ts +113 -0
  710. package/src/native/Raw.ts +171 -0
  711. package/src/native/Set.spec.ts +116 -0
  712. package/src/native/Set.ts +269 -0
  713. package/src/native/Struct.data.ts +4 -0
  714. package/src/native/Struct.spec.ts +411 -0
  715. package/src/native/Struct.ts +338 -0
  716. package/src/native/Text.spec.ts +85 -0
  717. package/src/native/Text.ts +184 -0
  718. package/src/native/index.ts +11 -0
  719. package/src/packageDetect.ts +11 -0
  720. package/src/packageInfo.ts +6 -0
  721. package/src/primitive/F32.ts +14 -0
  722. package/src/primitive/F64.ts +14 -0
  723. package/src/primitive/I128.ts +14 -0
  724. package/src/primitive/I16.ts +14 -0
  725. package/src/primitive/I256.ts +14 -0
  726. package/src/primitive/I32.ts +14 -0
  727. package/src/primitive/I64.ts +14 -0
  728. package/src/primitive/I8.ts +14 -0
  729. package/src/primitive/ISize.ts +21 -0
  730. package/src/primitive/U128.ts +14 -0
  731. package/src/primitive/U16.ts +14 -0
  732. package/src/primitive/U256.ts +14 -0
  733. package/src/primitive/U32.ts +14 -0
  734. package/src/primitive/U64.ts +14 -0
  735. package/src/primitive/U8.ts +14 -0
  736. package/src/primitive/USize.ts +21 -0
  737. package/src/primitive/index.ts +19 -0
  738. package/src/test/performance.ts +61 -0
  739. package/src/types/codec.ts +140 -0
  740. package/src/types/helpers.ts +50 -0
  741. package/src/types/index.ts +7 -0
  742. package/src/types/interfaces.ts +98 -0
  743. package/src/types/registry.ts +86 -0
  744. package/src/utils/compareArray.ts +22 -0
  745. package/src/utils/compareMap.ts +40 -0
  746. package/src/utils/compareSet.ts +23 -0
  747. package/src/utils/decodeU8a.ts +123 -0
  748. package/src/utils/index.ts +11 -0
  749. package/src/utils/sanitize.spec.ts +89 -0
  750. package/src/utils/sanitize.ts +290 -0
  751. package/src/utils/sortValues.ts +103 -0
  752. package/src/utils/toConstructors.ts +46 -0
  753. package/src/utils/typesToMap.ts +14 -0
  754. package/src/utils/util.ts +8 -0
  755. package/tsconfig.build.json +16 -0
  756. package/tsconfig.build.tsbuildinfo +1 -0
  757. package/tsconfig.spec.json +21 -0
  758. package/tsconfig.spec.tsbuildinfo +1 -0
@@ -0,0 +1,271 @@
1
+ // Copyright 2017-2025 @pezkuwi/types-codec authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { HexString } from '@pezkuwi/util/types';
5
+ import type { AnyNumber, Inspect, INumber, IU8a, Registry, ToBn, UIntBitLength } from '../types/index.js';
6
+
7
+ import { BN, BN_BILLION, BN_HUNDRED, BN_MILLION, BN_QUINTILL, bnToBn, bnToHex, bnToU8a, formatBalance, formatNumber, hexToBn, isBigInt, isBn, isFunction, isHex, isNumber, isObject, isString, isU8a, u8aToBn, u8aToNumber } from '@pezkuwi/util';
8
+
9
+ export const DEFAULT_UINT_BITS = 64;
10
+
11
+ // Maximum allowed integer for JS is 2^53 - 1, set limit at 52
12
+ // In this case however, we always print any >32 as hex
13
+ const MAX_NUMBER_BITS = 52;
14
+ const MUL_P = new BN(1_00_00);
15
+
16
+ const FORMATTERS: [string, BN][] = [
17
+ ['Perquintill', BN_QUINTILL],
18
+ ['Perbill', BN_BILLION],
19
+ ['Permill', BN_MILLION],
20
+ ['Percent', BN_HUNDRED]
21
+ ];
22
+
23
+ function isToBn (value: unknown): value is ToBn {
24
+ return isFunction((value as ToBn).toBn);
25
+ }
26
+
27
+ function toPercentage (value: BN, divisor: BN): string {
28
+ return `${(value.mul(MUL_P).div(divisor).toNumber() / 100).toFixed(2)}%`;
29
+ }
30
+
31
+ /** @internal */
32
+ function decodeAbstractInt (value: Exclude<AnyNumber, Uint8Array> | Record<string, string> | ToBn | null, isNegative: boolean): string | number {
33
+ if (isNumber(value)) {
34
+ if (!Number.isInteger(value) || value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER) {
35
+ throw new Error('Number needs to be an integer <= Number.MAX_SAFE_INTEGER, i.e. 2 ^ 53 - 1');
36
+ }
37
+
38
+ return value;
39
+ } else if (isString(value)) {
40
+ if (isHex(value, -1, true)) {
41
+ return hexToBn(value, { isLe: false, isNegative }).toString();
42
+ }
43
+
44
+ if (value.includes('.') || value.includes(',') || value.includes('e')) {
45
+ throw new Error('String should not contain decimal points or scientific notation');
46
+ }
47
+
48
+ return value;
49
+ } else if (isBn(value) || isBigInt(value)) {
50
+ return value.toString();
51
+ } else if (isObject(value)) {
52
+ if (isToBn(value)) {
53
+ return value.toBn().toString();
54
+ }
55
+
56
+ // Allow the construction from an object with a single top-level key. This means that
57
+ // single key objects can be treated equivalently to numbers, assuming they meet the
58
+ // specific requirements. (This is useful in Weights 1.5 where Objects are compact)
59
+ const keys = Object.keys(value);
60
+
61
+ if (keys.length !== 1) {
62
+ throw new Error('Unable to construct number from multi-key object');
63
+ }
64
+
65
+ return decodeAbstractInt(value[keys[0]], isNegative);
66
+ } else if (!value) {
67
+ return 0;
68
+ }
69
+
70
+ throw new Error(`Unable to create BN from unknown type ${typeof value}`);
71
+ }
72
+
73
+ /**
74
+ * @name AbstractInt
75
+ * @ignore
76
+ * @noInheritDoc
77
+ */
78
+ export abstract class AbstractInt extends BN implements INumber {
79
+ readonly registry: Registry;
80
+ readonly encodedLength: number;
81
+ readonly isUnsigned: boolean;
82
+
83
+ public createdAtHash?: IU8a;
84
+ public initialU8aLength?: number;
85
+ public isStorageFallback?: boolean;
86
+
87
+ readonly #bitLength: UIntBitLength;
88
+
89
+ constructor (registry: Registry, value: AnyNumber | null = 0, bitLength: UIntBitLength = DEFAULT_UINT_BITS, isSigned = false) {
90
+ // Construct via a string/number, which will be passed in the BN constructor.
91
+ // It would be ideal to actually return a BN, but there is an issue:
92
+ // https://github.com/indutny/bn.js/issues/206
93
+ super(
94
+ // shortcut isU8a as used in SCALE decoding
95
+ isU8a(value)
96
+ ? bitLength <= 48
97
+ ? u8aToNumber(value.subarray(0, bitLength / 8), { isNegative: isSigned })
98
+ : u8aToBn(value.subarray(0, bitLength / 8), { isLe: true, isNegative: isSigned }).toString()
99
+ : decodeAbstractInt(value, isSigned)
100
+ );
101
+
102
+ this.registry = registry;
103
+ this.#bitLength = bitLength;
104
+ this.encodedLength = this.#bitLength / 8;
105
+ this.initialU8aLength = this.#bitLength / 8;
106
+ this.isUnsigned = !isSigned;
107
+
108
+ const isNegative = this.isNeg();
109
+ const maxBits = bitLength - (isSigned && !isNegative ? 1 : 0);
110
+
111
+ if (isNegative && !isSigned) {
112
+ throw new Error(`${this.toRawType()}: Negative number passed to unsigned type`);
113
+ } else if (super.bitLength() > maxBits) {
114
+ throw new Error(`${this.toRawType()}: Input too large. Found input with ${super.bitLength()} bits, expected ${maxBits}`);
115
+ }
116
+ }
117
+
118
+ /**
119
+ * @description returns a hash of the contents
120
+ */
121
+ public get hash (): IU8a {
122
+ return this.registry.hash(this.toU8a());
123
+ }
124
+
125
+ /**
126
+ * @description Checks if the value is a zero value (align elsewhere)
127
+ */
128
+ public get isEmpty (): boolean {
129
+ return this.isZero();
130
+ }
131
+
132
+ /**
133
+ * @description Returns the number of bits in the value
134
+ */
135
+ public override bitLength (): number {
136
+ return this.#bitLength;
137
+ }
138
+
139
+ /**
140
+ * @description Compares the value of the input to see if there is a match
141
+ */
142
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
143
+ public override eq (other?: unknown): boolean {
144
+ // Here we are actually overriding the built-in .eq to take care of both
145
+ // number and BN inputs (no `.eqn` needed) - numbers will be converted
146
+ return super.eq(
147
+ isHex(other)
148
+ ? hexToBn(other.toString(), { isLe: false, isNegative: !this.isUnsigned })
149
+ : bnToBn(other as string)
150
+ );
151
+ }
152
+
153
+ /**
154
+ * @description Returns a breakdown of the hex encoding for this Codec
155
+ */
156
+ public inspect (): Inspect {
157
+ return {
158
+ outer: [this.toU8a()]
159
+ };
160
+ }
161
+
162
+ /**
163
+ * @description True if this value is the max of the type
164
+ */
165
+ public isMax (): boolean {
166
+ const u8a = this.toU8a().filter((b) => b === 0xff);
167
+
168
+ return u8a.length === (this.#bitLength / 8);
169
+ }
170
+
171
+ /**
172
+ * @description Returns a BigInt representation of the number
173
+ */
174
+ public toBigInt (): bigint {
175
+ return BigInt(this.toString());
176
+ }
177
+
178
+ /**
179
+ * @description Returns the BN representation of the number. (Compatibility)
180
+ */
181
+ public toBn (): BN {
182
+ return this;
183
+ }
184
+
185
+ /**
186
+ * @description Returns a hex string representation of the value
187
+ */
188
+ public toHex (isLe = false): HexString {
189
+ // For display/JSON, this is BE, for compare, use isLe
190
+ return bnToHex(this, {
191
+ bitLength: this.bitLength(),
192
+ isLe,
193
+ isNegative: !this.isUnsigned
194
+ });
195
+ }
196
+
197
+ /**
198
+ * @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
199
+ */
200
+ public toHuman (_isExpanded?: boolean): string {
201
+ const rawType = this.toRawType();
202
+
203
+ if (rawType === 'Balance') {
204
+ return this.isMax()
205
+ ? 'everything'
206
+ // FIXME In the case of multiples we need some way of detecting which instance this belongs
207
+ // to. as it stands we will always format (incorrectly) against the first token defined
208
+ : formatBalance(this, { decimals: this.registry.chainDecimals[0], withSi: true, withUnit: this.registry.chainTokens[0] });
209
+ }
210
+
211
+ const [, divisor] = FORMATTERS.find(([type]) => type === rawType) || [];
212
+
213
+ return divisor
214
+ ? toPercentage(this, divisor)
215
+ : formatNumber(this);
216
+ }
217
+
218
+ /**
219
+ * @description Converts the Object to JSON, typically used for RPC transfers
220
+ */
221
+ public override toJSON (onlyHex = false): any {
222
+ // FIXME this return type should by string | number, however BN returns string
223
+ // Options here are
224
+ // - super.bitLength() - the actual used bits, use hex when close to MAX_SAFE_INTEGER
225
+ // - this.#bitLength - the max used bits, use hex when larger than native Rust type
226
+ return onlyHex || (this.#bitLength > 128) || (super.bitLength() > MAX_NUMBER_BITS)
227
+ ? this.toHex()
228
+ : this.toNumber();
229
+ }
230
+
231
+ /**
232
+ * @description Returns the value in a primitive form, either number when <= 52 bits, or string otherwise
233
+ */
234
+ public toPrimitive (): number | string {
235
+ return super.bitLength() > MAX_NUMBER_BITS
236
+ ? this.toString()
237
+ : this.toNumber();
238
+ }
239
+
240
+ /**
241
+ * @description Returns the base runtime type name for this instance
242
+ */
243
+ public toRawType (): string {
244
+ // NOTE In the case of balances, which have a special meaning on the UI
245
+ // and can be interpreted differently, return a specific value for it so
246
+ // underlying it always matches (no matter which length it actually is)
247
+ return this instanceof this.registry.createClassUnsafe('Balance')
248
+ ? 'Balance'
249
+ : `${this.isUnsigned ? 'u' : 'i'}${this.bitLength()}`;
250
+ }
251
+
252
+ /**
253
+ * @description Returns the string representation of the value
254
+ * @param base The base to use for the conversion
255
+ */
256
+ public override toString (base?: number): string {
257
+ // only included here since we do not inherit docs
258
+ return super.toString(base);
259
+ }
260
+
261
+ /**
262
+ * @description Encodes the value as a Uint8Array as per the SCALE specifications
263
+ */
264
+ public toU8a (_isBare?: boolean): Uint8Array {
265
+ return bnToU8a(this, {
266
+ bitLength: this.bitLength(),
267
+ isLe: true,
268
+ isNegative: !this.isUnsigned
269
+ });
270
+ }
271
+ }
@@ -0,0 +1,99 @@
1
+ // Copyright 2017-2025 @pezkuwi/types-codec authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { HexString } from '@pezkuwi/util/types';
5
+ import type { AnyJson, BareOpts, CodecObject, Inspect, IU8a, Registry, ToString } from '../types/index.js';
6
+
7
+ /**
8
+ * @name Object
9
+ * @description A type extends the Base class, when it holds a value
10
+ */
11
+ export abstract class AbstractObject<T extends ToString> implements CodecObject<T> {
12
+ readonly registry: Registry;
13
+
14
+ public createdAtHash?: IU8a;
15
+ public initialU8aLength?: number | undefined;
16
+ public isStorageFallback?: boolean;
17
+
18
+ readonly $: T;
19
+
20
+ protected constructor (registry: Registry, value: T, initialU8aLength?: number) {
21
+ this.$ = value;
22
+ this.initialU8aLength = initialU8aLength;
23
+ this.registry = registry;
24
+ }
25
+
26
+ /**
27
+ * @description The length of the value when encoded as a Uint8Array
28
+ */
29
+ public get encodedLength (): number {
30
+ return this.toU8a().length;
31
+ }
32
+
33
+ /**
34
+ * @description returns a hash of the contents
35
+ */
36
+ public get hash (): IU8a {
37
+ return this.registry.hash(this.toU8a());
38
+ }
39
+
40
+ /**
41
+ * @description Checks if the value is an empty value
42
+ */
43
+ public abstract get isEmpty (): boolean;
44
+
45
+ /**
46
+ * @description Compares the value of the input to see if there is a match
47
+ */
48
+ public abstract eq (other?: unknown): boolean;
49
+
50
+ /**
51
+ * @description Returns a breakdown of the hex encoding for this Codec
52
+ */
53
+ public abstract inspect (): Inspect;
54
+
55
+ /**
56
+ * @description Returns a hex string representation of the value. isLe returns a LE (number-only) representation
57
+ */
58
+ public abstract toHex (isLe?: boolean): HexString;
59
+
60
+ /**
61
+ * @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
62
+ */
63
+ public abstract toHuman (isExtended?: boolean, disableAscii?: boolean): AnyJson;
64
+
65
+ /**
66
+ * @description Converts the Object to JSON, typically used for RPC transfers
67
+ */
68
+ public abstract toJSON (): AnyJson;
69
+
70
+ /**
71
+ * @description Converts the value in a best-fit primitive form
72
+ */
73
+ public abstract toPrimitive (disableAscii?: boolean): AnyJson;
74
+
75
+ /**
76
+ * @description Returns the string representation of the value
77
+ */
78
+ public toString (): string {
79
+ return this.$.toString();
80
+ }
81
+
82
+ /**
83
+ * @description Encodes the value as a Uint8Array as per the SCALE specifications
84
+ * @param isBare true when the value has none of the type-specific prefixes (internal)
85
+ */
86
+ public abstract toU8a (isBare?: BareOpts): Uint8Array;
87
+
88
+ /**
89
+ * @description Returns the base runtime type name for this instance
90
+ */
91
+ public abstract toRawType (): string;
92
+
93
+ /**
94
+ * @description Return the internal value (JS-aligned, same result as $)
95
+ */
96
+ public valueOf (): T {
97
+ return this.$;
98
+ }
99
+ }
@@ -0,0 +1,6 @@
1
+ // Copyright 2017-2025 @pezkuwi/types-codec authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ export { AbstractArray } from './Array.js';
5
+ export { AbstractBase } from './Base.js';
6
+ export { AbstractInt } from './Int.js';
@@ -0,0 +1,99 @@
1
+ // Copyright 2017-2025 @pezkuwi/types-codec authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
+
6
+ import { TypeRegistry } from '@pezkuwi/types';
7
+ import { CodecDate, Compact, U32 } from '@pezkuwi/types-codec';
8
+ import { BN } from '@pezkuwi/util';
9
+
10
+ import { perf } from '../test/performance.js';
11
+
12
+ const CompactU32 = Compact.with(U32);
13
+
14
+ describe('Compact', (): void => {
15
+ const registry = new TypeRegistry();
16
+
17
+ describe('constructor', (): void => {
18
+ it('fails on > MAX_SAFE_INTEGER', (): void => {
19
+ // eslint-disable-next-line @typescript-eslint/no-loss-of-precision, no-loss-of-precision
20
+ expect(() => new Compact(registry, 'u128', 9007199254740999)).toThrow(/integer <= Number.MAX_SAFE_INTEGER/);
21
+ });
22
+
23
+ it('has support for BigInt', (): void => {
24
+ expect(
25
+ new Compact(registry, 'u128', 123456789000123456789n).toHuman()
26
+ ).toEqual('123,456,789,000,123,456,789');
27
+ });
28
+
29
+ it('has the correct bitLength for constructor values (BlockNumber)', (): void => {
30
+ expect(
31
+ new (Compact.with(registry.createClass('BlockNumber')))(registry, 0xfffffff9).bitLength()
32
+ ).toEqual(32);
33
+ });
34
+
35
+ it('has the correct encodedLength for constructor values (string BlockNumber)', (): void => {
36
+ expect(
37
+ new (Compact.with('BlockNumber'))(registry, 0xfffffff9).encodedLength
38
+ ).toEqual(5);
39
+ });
40
+
41
+ it('has the correct encodedLength for constructor values (class BlockNumber)', (): void => {
42
+ expect(
43
+ new (Compact.with(registry.createClass('BlockNumber')))(registry, 0xfffffff9).encodedLength
44
+ ).toEqual(5);
45
+ });
46
+
47
+ it('has the correct encodedLength for constructor values (u32)', (): void => {
48
+ expect(
49
+ new (Compact.with(U32))(registry, 0xffff9).encodedLength
50
+ ).toEqual(4);
51
+ });
52
+
53
+ it('constructs properly via Uint8Array as U32', (): void => {
54
+ expect(
55
+ new (Compact.with(U32))(registry, new Uint8Array([254, 255, 3, 0])).toNumber()
56
+ ).toEqual(new BN(0xffff).toNumber());
57
+ });
58
+
59
+ it('constructs properly via number as Moment', (): void => {
60
+ expect(
61
+ new (Compact.with(CodecDate))(registry, 1537968546).toString().startsWith('Wed Sep 26 2018') // The time depends on the timezone this test is run in
62
+ ).toBe(true);
63
+ });
64
+ });
65
+
66
+ describe('utils', (): void => {
67
+ it('compares against another Compact', (): void => {
68
+ expect(new (Compact.with(U32))(registry, 12345).eq(new (Compact.with(U32))(registry, 12345))).toBe(true);
69
+ });
70
+
71
+ it('compares against a primitive', (): void => {
72
+ expect(new (Compact.with(U32))(registry, 12345).eq(12345)).toBe(true);
73
+ });
74
+
75
+ it('unwraps to the wrapped value', (): void => {
76
+ expect(new (Compact.with(U32))(registry, 12345).unwrap() instanceof U32).toBe(true);
77
+ });
78
+
79
+ it('has a valid toBn interface', (): void => {
80
+ expect(new (Compact.with('u128'))(registry, '12345678987654321').toBn().eq(new BN('12345678987654321'))).toBe(true);
81
+ });
82
+
83
+ it('has a valid toBigInt interface', (): void => {
84
+ expect(
85
+ (new (Compact.with('u128'))(registry, 12345678987654321n).toBigInt() + 1n) === 12345678987654322n
86
+ ).toBe(true);
87
+ });
88
+
89
+ it('has a sane inspect', (): void => {
90
+ expect(
91
+ new (Compact.with(U32))(registry, 0xffff).inspect()
92
+ ).toEqual({
93
+ outer: [new Uint8Array([254, 255, 3, 0])]
94
+ });
95
+ });
96
+ });
97
+
98
+ perf('Compact', 75_000, [[new Uint8Array([63 << 2])]], (v: Uint8Array) => new CompactU32(registry, v));
99
+ });
@@ -0,0 +1,198 @@
1
+ // Copyright 2017-2025 @pezkuwi/types-codec authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { BN } from '@pezkuwi/util';
5
+ import type { HexString } from '@pezkuwi/util/types';
6
+ import type { AnyJson, AnyNumber, CodecClass, DefinitionSetter, ICompact, Inspect, INumber, IU8a, Registry } from '../types/index.js';
7
+
8
+ import { compactFromU8a, compactFromU8aLim, compactToU8a, identity, isU8a } from '@pezkuwi/util';
9
+
10
+ import { typeToConstructor } from '../utils/index.js';
11
+
12
+ function decodeCompact<T extends INumber> (registry: Registry, Type: CodecClass<T>, value: Compact<T> | AnyNumber): [T, number] {
13
+ if (isU8a(value)) {
14
+ const [decodedLength, bn] = (value[0] & 0b11) < 0b11
15
+ ? compactFromU8aLim(value)
16
+ : compactFromU8a(value);
17
+
18
+ return [new Type(registry, bn), decodedLength];
19
+ } else if (value instanceof Compact) {
20
+ const raw = value.unwrap();
21
+
22
+ return raw instanceof Type
23
+ ? [raw, 0]
24
+ : [new Type(registry, raw), 0];
25
+ } else if (value instanceof Type) {
26
+ return [value, 0];
27
+ }
28
+
29
+ return [new Type(registry, value), 0];
30
+ }
31
+
32
+ /**
33
+ * @name Compact
34
+ * @description
35
+ * A compact length-encoding codec wrapper. It performs the same function as Length, however
36
+ * differs in that it uses a variable number of bytes to do the actual encoding. This is mostly
37
+ * used by other types to add length-prefixed encoding, or in the case of wrapped types, taking
38
+ * a number and making the compact representation thereof
39
+ */
40
+ export class Compact<T extends INumber> implements ICompact<T> {
41
+ readonly registry: Registry;
42
+
43
+ public createdAtHash?: IU8a;
44
+ public initialU8aLength?: number;
45
+ public isStorageFallback?: boolean;
46
+
47
+ readonly #Type: CodecClass<T>;
48
+ readonly #raw: T;
49
+
50
+ constructor (registry: Registry, Type: CodecClass<T> | string, value: Compact<T> | AnyNumber = 0, { definition, setDefinition = identity }: DefinitionSetter<CodecClass<T>> = {}) {
51
+ this.registry = registry;
52
+ this.#Type = definition || setDefinition(typeToConstructor(registry, Type));
53
+
54
+ const [raw, decodedLength] = decodeCompact<T>(registry, this.#Type, value);
55
+
56
+ this.initialU8aLength = decodedLength;
57
+ this.#raw = raw;
58
+ }
59
+
60
+ public static with<O extends INumber> (Type: CodecClass<O> | string): CodecClass<Compact<O>> {
61
+ let definition: CodecClass<O> | undefined;
62
+
63
+ // eslint-disable-next-line no-return-assign
64
+ const setDefinition = <T> (d: CodecClass<T>) =>
65
+ (definition = d as unknown as CodecClass<O>) as unknown as CodecClass<T>;
66
+
67
+ return class extends Compact<O> {
68
+ constructor (registry: Registry, value?: Compact<O> | AnyNumber) {
69
+ super(registry, Type, value, { definition, setDefinition });
70
+ }
71
+ };
72
+ }
73
+
74
+ /**
75
+ * @description The length of the value when encoded as a Uint8Array
76
+ */
77
+ public get encodedLength (): number {
78
+ return this.toU8a().length;
79
+ }
80
+
81
+ /**
82
+ * @description returns a hash of the contents
83
+ */
84
+ public get hash (): IU8a {
85
+ return this.registry.hash(this.toU8a());
86
+ }
87
+
88
+ /**
89
+ * @description Checks if the value is an empty value
90
+ */
91
+ public get isEmpty (): boolean {
92
+ return this.#raw.isEmpty;
93
+ }
94
+
95
+ /**
96
+ * @description Returns the number of bits in the value
97
+ */
98
+ public bitLength (): number {
99
+ return this.#raw.bitLength();
100
+ }
101
+
102
+ /**
103
+ * @description Compares the value of the input to see if there is a match
104
+ */
105
+ public eq (other?: unknown): boolean {
106
+ return this.#raw.eq(
107
+ other instanceof Compact
108
+ ? other.#raw
109
+ : other
110
+ );
111
+ }
112
+
113
+ /**
114
+ * @description Returns a breakdown of the hex encoding for this Codec
115
+ */
116
+ public inspect (): Inspect {
117
+ return {
118
+ outer: [this.toU8a()]
119
+ };
120
+ }
121
+
122
+ /**
123
+ * @description Returns a BigInt representation of the number
124
+ */
125
+ public toBigInt (): bigint {
126
+ return this.#raw.toBigInt();
127
+ }
128
+
129
+ /**
130
+ * @description Returns the BN representation of the number
131
+ */
132
+ public toBn (): BN {
133
+ return this.#raw.toBn();
134
+ }
135
+
136
+ /**
137
+ * @description Returns a hex string representation of the value. isLe returns a LE (number-only) representation
138
+ */
139
+ public toHex (isLe?: boolean): HexString {
140
+ return this.#raw.toHex(isLe);
141
+ }
142
+
143
+ /**
144
+ * @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
145
+ */
146
+ public toHuman (isExtended?: boolean, disableAscii?: boolean): AnyJson {
147
+ return this.#raw.toHuman(isExtended, disableAscii);
148
+ }
149
+
150
+ /**
151
+ * @description Converts the Object to JSON, typically used for RPC transfers
152
+ */
153
+ public toJSON (): AnyJson {
154
+ return this.#raw.toJSON();
155
+ }
156
+
157
+ /**
158
+ * @description Returns the number representation for the value
159
+ */
160
+ public toNumber (): number {
161
+ return this.#raw.toNumber();
162
+ }
163
+
164
+ /**
165
+ * @description Converts the value in a best-fit primitive form
166
+ */
167
+ public toPrimitive (disableAscii?: boolean): string | number {
168
+ return this.#raw.toPrimitive(disableAscii);
169
+ }
170
+
171
+ /**
172
+ * @description Returns the base runtime type name for this instance
173
+ */
174
+ public toRawType (): string {
175
+ return `Compact<${this.registry.getClassName(this.#Type) || this.#raw.toRawType()}>`;
176
+ }
177
+
178
+ /**
179
+ * @description Returns the string representation of the value
180
+ */
181
+ public toString (): string {
182
+ return this.#raw.toString();
183
+ }
184
+
185
+ /**
186
+ * @description Encodes the value as a Uint8Array as per the SCALE specifications
187
+ */
188
+ public toU8a (_isBare?: boolean): Uint8Array {
189
+ return compactToU8a(this.#raw.toBn());
190
+ }
191
+
192
+ /**
193
+ * @description Returns the embedded [[UInt]] or [[Moment]] value
194
+ */
195
+ public unwrap (): T {
196
+ return this.#raw;
197
+ }
198
+ }
@@ -0,0 +1,23 @@
1
+ // Copyright 2017-2025 @pezkuwi/types-codec authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
+
6
+ import { TypeRegistry } from '@pezkuwi/types';
7
+ import { DoNotConstruct } from '@pezkuwi/types-codec';
8
+
9
+ describe('DoNotConstruct', (): void => {
10
+ const registry = new TypeRegistry();
11
+
12
+ it('does not allow construction', (): void => {
13
+ expect(
14
+ () => new (DoNotConstruct.with())(registry)
15
+ ).toThrow(/Cannot construct unknown type DoNotConstruct/);
16
+ });
17
+
18
+ it('does not allow construction (with Name)', (): void => {
19
+ expect(
20
+ () => new (DoNotConstruct.with('Something'))(registry)
21
+ ).toThrow(/Cannot construct unknown type Something/);
22
+ });
23
+ });