@pezkuwi/types-codec 16.5.5 → 16.5.6

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 (424) hide show
  1. package/LICENSE +201 -0
  2. package/abstract/Array.js +166 -0
  3. package/abstract/Base.js +101 -0
  4. package/abstract/Int.js +226 -0
  5. package/abstract/Object.js +40 -0
  6. package/{src/abstract/index.ts → abstract/index.js} +0 -3
  7. package/base/Compact.js +159 -0
  8. package/base/DoNotConstruct.js +95 -0
  9. package/base/Enum.js +369 -0
  10. package/{build/base → base}/Int.d.ts +1 -1
  11. package/base/Int.js +26 -0
  12. package/base/Null.js +77 -0
  13. package/base/Option.js +232 -0
  14. package/base/Result.js +63 -0
  15. package/base/Tuple.js +110 -0
  16. package/{build/base → base}/UInt.d.ts +1 -1
  17. package/base/UInt.js +23 -0
  18. package/base/Vec.js +102 -0
  19. package/base/VecAny.js +17 -0
  20. package/base/VecFixed.js +67 -0
  21. package/{src/base/index.ts → base/index.js} +0 -3
  22. package/{src/bundle.ts → bundle.js} +0 -6
  23. package/cjs/abstract/Array.d.ts +89 -0
  24. package/cjs/abstract/Array.js +170 -0
  25. package/cjs/abstract/Base.d.ts +75 -0
  26. package/cjs/abstract/Base.js +105 -0
  27. package/cjs/abstract/Int.d.ts +80 -0
  28. package/cjs/abstract/Int.js +230 -0
  29. package/cjs/abstract/Object.d.ts +67 -0
  30. package/cjs/abstract/Object.js +44 -0
  31. package/cjs/abstract/index.d.ts +3 -0
  32. package/cjs/abstract/index.js +9 -0
  33. package/cjs/base/Compact.d.ts +88 -0
  34. package/cjs/base/Compact.js +163 -0
  35. package/cjs/base/DoNotConstruct.d.ts +63 -0
  36. package/cjs/base/DoNotConstruct.js +99 -0
  37. package/cjs/base/Enum.d.ts +118 -0
  38. package/cjs/base/Enum.js +373 -0
  39. package/cjs/base/Int.d.ts +16 -0
  40. package/cjs/base/Int.js +30 -0
  41. package/cjs/base/Null.d.ts +56 -0
  42. package/cjs/base/Null.js +81 -0
  43. package/cjs/base/Option.d.ts +94 -0
  44. package/cjs/base/Option.js +236 -0
  45. package/cjs/base/Result.d.ts +38 -0
  46. package/cjs/base/Result.js +67 -0
  47. package/cjs/base/Tuple.d.ts +42 -0
  48. package/cjs/base/Tuple.js +114 -0
  49. package/cjs/base/UInt.d.ts +15 -0
  50. package/cjs/base/UInt.js +27 -0
  51. package/cjs/base/Vec.d.ts +28 -0
  52. package/cjs/base/Vec.js +107 -0
  53. package/cjs/base/VecAny.d.ts +15 -0
  54. package/cjs/base/VecAny.js +21 -0
  55. package/cjs/base/VecFixed.d.ts +30 -0
  56. package/cjs/base/VecFixed.js +71 -0
  57. package/cjs/base/index.d.ts +12 -0
  58. package/cjs/base/index.js +27 -0
  59. package/cjs/bundle.d.ts +7 -0
  60. package/cjs/bundle.js +12 -0
  61. package/cjs/extended/BTreeMap.js +14 -0
  62. package/cjs/extended/BTreeSet.js +189 -0
  63. package/cjs/extended/BitVec.js +112 -0
  64. package/cjs/extended/Bytes.js +74 -0
  65. package/cjs/extended/HashMap.js +14 -0
  66. package/cjs/extended/Linkage.js +70 -0
  67. package/cjs/extended/Map.js +204 -0
  68. package/cjs/extended/OptionBool.js +76 -0
  69. package/cjs/extended/Range.js +42 -0
  70. package/cjs/extended/RangeInclusive.js +17 -0
  71. package/cjs/extended/Type.js +25 -0
  72. package/cjs/extended/U8aFixed.js +46 -0
  73. package/cjs/extended/WrapperKeepOpaque.js +103 -0
  74. package/cjs/extended/WrapperOpaque.js +23 -0
  75. package/cjs/extended/index.js +32 -0
  76. package/cjs/index.js +5 -0
  77. package/cjs/native/Bool.js +113 -0
  78. package/cjs/native/Date.js +144 -0
  79. package/cjs/native/Float.js +111 -0
  80. package/cjs/native/Json.js +121 -0
  81. package/cjs/native/Raw.js +144 -0
  82. package/cjs/native/Set.js +219 -0
  83. package/cjs/native/Struct.data.js +4 -0
  84. package/cjs/native/Struct.js +264 -0
  85. package/cjs/native/Text.js +154 -0
  86. package/cjs/native/index.js +22 -0
  87. package/cjs/package.json +3 -0
  88. package/cjs/packageDetect.js +5 -0
  89. package/cjs/packageInfo.js +4 -0
  90. package/cjs/primitive/F32.js +14 -0
  91. package/cjs/primitive/F64.js +14 -0
  92. package/cjs/primitive/I128.js +14 -0
  93. package/cjs/primitive/I16.js +14 -0
  94. package/cjs/primitive/I256.js +14 -0
  95. package/cjs/primitive/I32.js +14 -0
  96. package/cjs/primitive/I64.js +14 -0
  97. package/cjs/primitive/I8.js +14 -0
  98. package/cjs/primitive/ISize.js +18 -0
  99. package/cjs/primitive/U128.js +14 -0
  100. package/cjs/primitive/U16.js +14 -0
  101. package/cjs/primitive/U256.js +14 -0
  102. package/cjs/primitive/U32.js +14 -0
  103. package/cjs/primitive/U64.js +14 -0
  104. package/cjs/primitive/U8.js +14 -0
  105. package/cjs/primitive/USize.js +18 -0
  106. package/cjs/primitive/index.js +51 -0
  107. package/{build → cjs}/types/codec.d.ts +1 -1
  108. package/cjs/types/codec.js +2 -0
  109. package/cjs/types/helpers.js +2 -0
  110. package/cjs/types/index.js +7 -0
  111. package/cjs/types/interfaces.js +2 -0
  112. package/cjs/types/registry.js +2 -0
  113. package/cjs/utils/compareArray.js +13 -0
  114. package/cjs/utils/compareMap.js +30 -0
  115. package/cjs/utils/compareSet.js +20 -0
  116. package/cjs/utils/decodeU8a.js +105 -0
  117. package/cjs/utils/index.js +25 -0
  118. package/cjs/utils/sanitize.js +233 -0
  119. package/cjs/utils/sortValues.js +84 -0
  120. package/cjs/utils/toConstructors.js +40 -0
  121. package/cjs/utils/typesToMap.js +10 -0
  122. package/cjs/utils/util.js +7 -0
  123. package/extended/BTreeMap.d.ts +5 -0
  124. package/extended/BTreeMap.js +10 -0
  125. package/extended/BTreeSet.d.ts +64 -0
  126. package/extended/BTreeSet.js +185 -0
  127. package/extended/BitVec.d.ts +37 -0
  128. package/extended/BitVec.js +108 -0
  129. package/extended/Bytes.d.ts +29 -0
  130. package/extended/Bytes.js +70 -0
  131. package/extended/HashMap.d.ts +5 -0
  132. package/extended/HashMap.js +10 -0
  133. package/extended/Linkage.d.ts +37 -0
  134. package/extended/Linkage.js +65 -0
  135. package/extended/Map.d.ts +59 -0
  136. package/extended/Map.js +200 -0
  137. package/extended/OptionBool.d.ts +36 -0
  138. package/extended/OptionBool.js +72 -0
  139. package/extended/Range.d.ts +29 -0
  140. package/extended/Range.js +38 -0
  141. package/extended/RangeInclusive.d.ts +6 -0
  142. package/extended/RangeInclusive.js +13 -0
  143. package/extended/Type.d.ts +16 -0
  144. package/extended/Type.js +21 -0
  145. package/extended/U8aFixed.d.ts +16 -0
  146. package/extended/U8aFixed.js +42 -0
  147. package/extended/WrapperKeepOpaque.d.ts +40 -0
  148. package/extended/WrapperKeepOpaque.js +99 -0
  149. package/extended/WrapperOpaque.d.ts +10 -0
  150. package/extended/WrapperOpaque.js +19 -0
  151. package/{src/extended/index.ts → extended/index.d.ts} +0 -3
  152. package/extended/index.js +14 -0
  153. package/index.d.ts +2 -0
  154. package/index.js +2 -0
  155. package/native/Bool.d.ts +71 -0
  156. package/native/Bool.js +109 -0
  157. package/native/Date.d.ts +84 -0
  158. package/native/Date.js +140 -0
  159. package/native/Float.d.ts +68 -0
  160. package/native/Float.js +107 -0
  161. package/native/Json.d.ts +69 -0
  162. package/native/Json.js +117 -0
  163. package/native/Raw.d.ts +87 -0
  164. package/native/Raw.js +140 -0
  165. package/native/Set.d.ts +84 -0
  166. package/native/Set.js +215 -0
  167. package/native/Struct.d.ts +106 -0
  168. package/{src/native/Struct.data.ts → native/Struct.data.js} +0 -3
  169. package/native/Struct.js +260 -0
  170. package/native/Text.d.ts +77 -0
  171. package/native/Text.js +150 -0
  172. package/{src/native/index.ts → native/index.d.ts} +0 -3
  173. package/native/index.js +8 -0
  174. package/package.json +1126 -11
  175. package/packageDetect.d.ts +1 -0
  176. package/packageDetect.js +3 -0
  177. package/packageInfo.d.ts +6 -0
  178. package/packageInfo.js +1 -0
  179. package/primitive/F32.d.ts +11 -0
  180. package/primitive/F32.js +10 -0
  181. package/primitive/F64.d.ts +11 -0
  182. package/primitive/F64.js +10 -0
  183. package/primitive/I128.d.ts +11 -0
  184. package/primitive/I128.js +10 -0
  185. package/primitive/I16.d.ts +11 -0
  186. package/primitive/I16.js +10 -0
  187. package/primitive/I256.d.ts +11 -0
  188. package/primitive/I256.js +10 -0
  189. package/primitive/I32.d.ts +11 -0
  190. package/primitive/I32.js +10 -0
  191. package/primitive/I64.d.ts +11 -0
  192. package/primitive/I64.js +10 -0
  193. package/primitive/I8.d.ts +11 -0
  194. package/primitive/I8.js +10 -0
  195. package/primitive/ISize.d.ts +12 -0
  196. package/primitive/ISize.js +14 -0
  197. package/primitive/U128.d.ts +11 -0
  198. package/primitive/U128.js +10 -0
  199. package/primitive/U16.d.ts +11 -0
  200. package/primitive/U16.js +10 -0
  201. package/primitive/U256.d.ts +11 -0
  202. package/primitive/U256.js +10 -0
  203. package/primitive/U32.d.ts +11 -0
  204. package/primitive/U32.js +10 -0
  205. package/primitive/U64.d.ts +11 -0
  206. package/primitive/U64.js +10 -0
  207. package/primitive/U8.d.ts +11 -0
  208. package/primitive/U8.js +10 -0
  209. package/primitive/USize.d.ts +12 -0
  210. package/primitive/USize.js +14 -0
  211. package/{src/primitive/index.ts → primitive/index.d.ts} +0 -3
  212. package/primitive/index.js +16 -0
  213. package/types/codec.d.ts +113 -0
  214. package/types/codec.js +1 -0
  215. package/{src/types/helpers.ts → types/helpers.d.ts} +8 -31
  216. package/types/helpers.js +1 -0
  217. package/{src/types/index.ts → types/index.d.ts} +0 -3
  218. package/types/index.js +4 -0
  219. package/types/interfaces.d.ts +74 -0
  220. package/types/interfaces.js +1 -0
  221. package/types/registry.d.ts +67 -0
  222. package/types/registry.js +1 -0
  223. package/utils/compareArray.d.ts +1 -0
  224. package/utils/compareArray.js +10 -0
  225. package/utils/compareMap.d.ts +1 -0
  226. package/utils/compareMap.js +27 -0
  227. package/utils/compareSet.d.ts +1 -0
  228. package/utils/compareSet.js +17 -0
  229. package/utils/decodeU8a.d.ts +26 -0
  230. package/utils/decodeU8a.js +100 -0
  231. package/{src/utils/index.ts → utils/index.d.ts} +0 -3
  232. package/utils/index.js +8 -0
  233. package/utils/sanitize.d.ts +15 -0
  234. package/utils/sanitize.js +219 -0
  235. package/utils/sortValues.d.ts +12 -0
  236. package/utils/sortValues.js +79 -0
  237. package/utils/toConstructors.d.ts +16 -0
  238. package/utils/toConstructors.js +35 -0
  239. package/utils/typesToMap.d.ts +2 -0
  240. package/utils/typesToMap.js +7 -0
  241. package/utils/util.d.ts +3 -0
  242. package/utils/util.js +4 -0
  243. package/src/abstract/Array.ts +0 -213
  244. package/src/abstract/Base.ts +0 -129
  245. package/src/abstract/Int.ts +0 -271
  246. package/src/abstract/Object.ts +0 -99
  247. package/src/base/Compact.spec.ts +0 -99
  248. package/src/base/Compact.ts +0 -198
  249. package/src/base/DoNotConstruct.spec.ts +0 -23
  250. package/src/base/DoNotConstruct.ts +0 -118
  251. package/src/base/Enum.spec.ts +0 -487
  252. package/src/base/Enum.ts +0 -460
  253. package/src/base/Int.spec.ts +0 -225
  254. package/src/base/Int.ts +0 -34
  255. package/src/base/Null.spec.ts +0 -41
  256. package/src/base/Null.ts +0 -96
  257. package/src/base/Option.spec.ts +0 -216
  258. package/src/base/Option.ts +0 -275
  259. package/src/base/Result.spec.ts +0 -64
  260. package/src/base/Result.ts +0 -79
  261. package/src/base/Tuple.spec.ts +0 -161
  262. package/src/base/Tuple.ts +0 -149
  263. package/src/base/UInt.spec.ts +0 -192
  264. package/src/base/UInt.ts +0 -30
  265. package/src/base/Vec.spec.ts +0 -224
  266. package/src/base/Vec.ts +0 -133
  267. package/src/base/VecAny.ts +0 -23
  268. package/src/base/VecFixed.spec.ts +0 -78
  269. package/src/base/VecFixed.ts +0 -92
  270. package/src/checkTypes.manual.ts +0 -12
  271. package/src/extended/BTreeMap.spec.ts +0 -245
  272. package/src/extended/BTreeMap.ts +0 -16
  273. package/src/extended/BTreeSet.spec.ts +0 -260
  274. package/src/extended/BTreeSet.ts +0 -233
  275. package/src/extended/BitVec.spec.ts +0 -97
  276. package/src/extended/BitVec.ts +0 -137
  277. package/src/extended/Bytes.spec.ts +0 -75
  278. package/src/extended/Bytes.ts +0 -88
  279. package/src/extended/HashMap.spec.ts +0 -36
  280. package/src/extended/HashMap.ts +0 -16
  281. package/src/extended/Linkage.spec.ts +0 -43
  282. package/src/extended/Linkage.ts +0 -81
  283. package/src/extended/Map.spec.ts +0 -123
  284. package/src/extended/Map.ts +0 -255
  285. package/src/extended/OptionBool.spec.ts +0 -49
  286. package/src/extended/OptionBool.ts +0 -93
  287. package/src/extended/Range.spec.ts +0 -37
  288. package/src/extended/Range.ts +0 -56
  289. package/src/extended/RangeInclusive.ts +0 -20
  290. package/src/extended/Type.spec.ts +0 -118
  291. package/src/extended/Type.ts +0 -29
  292. package/src/extended/U8aFixed.spec.ts +0 -117
  293. package/src/extended/U8aFixed.ts +0 -57
  294. package/src/extended/WrapperKeepOpaque.spec.ts +0 -101
  295. package/src/extended/WrapperKeepOpaque.ts +0 -128
  296. package/src/extended/WrapperOpaque.spec.ts +0 -58
  297. package/src/extended/WrapperOpaque.ts +0 -27
  298. package/src/index.ts +0 -6
  299. package/src/mod.ts +0 -4
  300. package/src/native/Bool.spec.ts +0 -74
  301. package/src/native/Bool.ts +0 -137
  302. package/src/native/Date.spec.ts +0 -85
  303. package/src/native/Date.ts +0 -169
  304. package/src/native/Float.spec.ts +0 -51
  305. package/src/native/Float.ts +0 -136
  306. package/src/native/Json.ts +0 -147
  307. package/src/native/Raw.spec.ts +0 -113
  308. package/src/native/Raw.ts +0 -171
  309. package/src/native/Set.spec.ts +0 -116
  310. package/src/native/Set.ts +0 -269
  311. package/src/native/Struct.spec.ts +0 -411
  312. package/src/native/Struct.ts +0 -338
  313. package/src/native/Text.spec.ts +0 -85
  314. package/src/native/Text.ts +0 -184
  315. package/src/packageDetect.ts +0 -11
  316. package/src/packageInfo.ts +0 -6
  317. package/src/primitive/F32.ts +0 -14
  318. package/src/primitive/F64.ts +0 -14
  319. package/src/primitive/I128.ts +0 -14
  320. package/src/primitive/I16.ts +0 -14
  321. package/src/primitive/I256.ts +0 -14
  322. package/src/primitive/I32.ts +0 -14
  323. package/src/primitive/I64.ts +0 -14
  324. package/src/primitive/I8.ts +0 -14
  325. package/src/primitive/ISize.ts +0 -21
  326. package/src/primitive/U128.ts +0 -14
  327. package/src/primitive/U16.ts +0 -14
  328. package/src/primitive/U256.ts +0 -14
  329. package/src/primitive/U32.ts +0 -14
  330. package/src/primitive/U64.ts +0 -14
  331. package/src/primitive/U8.ts +0 -14
  332. package/src/primitive/USize.ts +0 -21
  333. package/src/test/performance.ts +0 -61
  334. package/src/types/codec.ts +0 -140
  335. package/src/types/interfaces.ts +0 -98
  336. package/src/types/registry.ts +0 -86
  337. package/src/utils/compareArray.ts +0 -22
  338. package/src/utils/compareMap.ts +0 -40
  339. package/src/utils/compareSet.ts +0 -23
  340. package/src/utils/decodeU8a.ts +0 -123
  341. package/src/utils/sanitize.spec.ts +0 -89
  342. package/src/utils/sanitize.ts +0 -290
  343. package/src/utils/sortValues.ts +0 -103
  344. package/src/utils/toConstructors.ts +0 -46
  345. package/src/utils/typesToMap.ts +0 -14
  346. package/src/utils/util.ts +0 -8
  347. package/tsconfig.build.json +0 -16
  348. package/tsconfig.build.tsbuildinfo +0 -1
  349. package/tsconfig.spec.json +0 -21
  350. /package/{build/abstract → abstract}/Array.d.ts +0 -0
  351. /package/{build/abstract → abstract}/Base.d.ts +0 -0
  352. /package/{build/abstract → abstract}/Int.d.ts +0 -0
  353. /package/{build/abstract → abstract}/Object.d.ts +0 -0
  354. /package/{build/abstract → abstract}/index.d.ts +0 -0
  355. /package/{build/base → base}/Compact.d.ts +0 -0
  356. /package/{build/base → base}/DoNotConstruct.d.ts +0 -0
  357. /package/{build/base → base}/Enum.d.ts +0 -0
  358. /package/{build/base → base}/Null.d.ts +0 -0
  359. /package/{build/base → base}/Option.d.ts +0 -0
  360. /package/{build/base → base}/Result.d.ts +0 -0
  361. /package/{build/base → base}/Tuple.d.ts +0 -0
  362. /package/{build/base → base}/Vec.d.ts +0 -0
  363. /package/{build/base → base}/VecAny.d.ts +0 -0
  364. /package/{build/base → base}/VecFixed.d.ts +0 -0
  365. /package/{build/base → base}/index.d.ts +0 -0
  366. /package/{build/bundle.d.ts → bundle.d.ts} +0 -0
  367. /package/{build → cjs}/extended/BTreeMap.d.ts +0 -0
  368. /package/{build → cjs}/extended/BTreeSet.d.ts +0 -0
  369. /package/{build → cjs}/extended/BitVec.d.ts +0 -0
  370. /package/{build → cjs}/extended/Bytes.d.ts +0 -0
  371. /package/{build → cjs}/extended/HashMap.d.ts +0 -0
  372. /package/{build → cjs}/extended/Linkage.d.ts +0 -0
  373. /package/{build → cjs}/extended/Map.d.ts +0 -0
  374. /package/{build → cjs}/extended/OptionBool.d.ts +0 -0
  375. /package/{build → cjs}/extended/Range.d.ts +0 -0
  376. /package/{build → cjs}/extended/RangeInclusive.d.ts +0 -0
  377. /package/{build → cjs}/extended/Type.d.ts +0 -0
  378. /package/{build → cjs}/extended/U8aFixed.d.ts +0 -0
  379. /package/{build → cjs}/extended/WrapperKeepOpaque.d.ts +0 -0
  380. /package/{build → cjs}/extended/WrapperOpaque.d.ts +0 -0
  381. /package/{build → cjs}/extended/index.d.ts +0 -0
  382. /package/{build → cjs}/index.d.ts +0 -0
  383. /package/{build → cjs}/native/Bool.d.ts +0 -0
  384. /package/{build → cjs}/native/Date.d.ts +0 -0
  385. /package/{build → cjs}/native/Float.d.ts +0 -0
  386. /package/{build → cjs}/native/Json.d.ts +0 -0
  387. /package/{build → cjs}/native/Raw.d.ts +0 -0
  388. /package/{build → cjs}/native/Set.d.ts +0 -0
  389. /package/{build → cjs}/native/Struct.d.ts +0 -0
  390. /package/{build → cjs}/native/Text.d.ts +0 -0
  391. /package/{build → cjs}/native/index.d.ts +0 -0
  392. /package/{build → cjs}/packageDetect.d.ts +0 -0
  393. /package/{build → cjs}/packageInfo.d.ts +0 -0
  394. /package/{build → cjs}/primitive/F32.d.ts +0 -0
  395. /package/{build → cjs}/primitive/F64.d.ts +0 -0
  396. /package/{build → cjs}/primitive/I128.d.ts +0 -0
  397. /package/{build → cjs}/primitive/I16.d.ts +0 -0
  398. /package/{build → cjs}/primitive/I256.d.ts +0 -0
  399. /package/{build → cjs}/primitive/I32.d.ts +0 -0
  400. /package/{build → cjs}/primitive/I64.d.ts +0 -0
  401. /package/{build → cjs}/primitive/I8.d.ts +0 -0
  402. /package/{build → cjs}/primitive/ISize.d.ts +0 -0
  403. /package/{build → cjs}/primitive/U128.d.ts +0 -0
  404. /package/{build → cjs}/primitive/U16.d.ts +0 -0
  405. /package/{build → cjs}/primitive/U256.d.ts +0 -0
  406. /package/{build → cjs}/primitive/U32.d.ts +0 -0
  407. /package/{build → cjs}/primitive/U64.d.ts +0 -0
  408. /package/{build → cjs}/primitive/U8.d.ts +0 -0
  409. /package/{build → cjs}/primitive/USize.d.ts +0 -0
  410. /package/{build → cjs}/primitive/index.d.ts +0 -0
  411. /package/{build → cjs}/types/helpers.d.ts +0 -0
  412. /package/{build → cjs}/types/index.d.ts +0 -0
  413. /package/{build → cjs}/types/interfaces.d.ts +0 -0
  414. /package/{build → cjs}/types/registry.d.ts +0 -0
  415. /package/{build → cjs}/utils/compareArray.d.ts +0 -0
  416. /package/{build → cjs}/utils/compareMap.d.ts +0 -0
  417. /package/{build → cjs}/utils/compareSet.d.ts +0 -0
  418. /package/{build → cjs}/utils/decodeU8a.d.ts +0 -0
  419. /package/{build → cjs}/utils/index.d.ts +0 -0
  420. /package/{build → cjs}/utils/sanitize.d.ts +0 -0
  421. /package/{build → cjs}/utils/sortValues.d.ts +0 -0
  422. /package/{build → cjs}/utils/toConstructors.d.ts +0 -0
  423. /package/{build → cjs}/utils/typesToMap.d.ts +0 -0
  424. /package/{build → cjs}/utils/util.d.ts +0 -0
@@ -1,224 +0,0 @@
1
- // Copyright 2017-2025 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
-
6
- import type { PropIndex } from '@pezkuwi/types/interfaces/democracy';
7
- import type { Codec, CodecTo, ITuple } from '@pezkuwi/types-codec/types';
8
-
9
- import { createTypeUnsafe, GenericAccountId as AccountId, Metadata, TypeRegistry } from '@pezkuwi/types';
10
- import { Text, u32, Vec } from '@pezkuwi/types-codec';
11
- import rpcMetadata from '@pezkuwi/types-support/metadata/static-substrate';
12
- import { decodeAddress, randomAsU8a } from '@pezkuwi/util-crypto';
13
-
14
- import { perf } from '../test/performance.js';
15
-
16
- const registry = new TypeRegistry();
17
- const metadata = new Metadata(registry, rpcMetadata);
18
- const VecU32 = Vec.with(u32);
19
-
20
- registry.setMetadata(metadata);
21
-
22
- describe('Vec', (): void => {
23
- let vector: Vec<Codec>;
24
-
25
- beforeEach((): void => {
26
- vector = new Vec(registry, Text, ['1', '23', '345', '4567', new Text(registry, '56789')]);
27
- });
28
-
29
- describe('constructor', (): void => {
30
- it('fails construction on non-Array, non-Hex inputs', (): void => {
31
- // @ts-expect-error We are intentionally passing a non-valid input
32
- expect(() => new Vec(registry, Text, '12345')).toThrow(/decoding, found string/);
33
- // @ts-expect-error We are intentionally passing a non-valid input
34
- expect(() => new Vec(registry, Text, {})).toThrow(/decoding, found object/);
35
- });
36
-
37
- it('allows construction via hex & null values', (): void => {
38
- // @ts-expect-error We are intentionally passing a non-valid input
39
- expect(new Vec(registry, Text, null)).toHaveLength(0);
40
- });
41
-
42
- it('decodes a complex type via construction (1)', (): void => {
43
- const test = createTypeUnsafe<Vec<ITuple<[PropIndex, AccountId]>>>(registry, 'Vec<(PropIndex, AccountId)>', [new Uint8Array([
44
- 4, 10, 0, 0, 0, 209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79
45
- ])]);
46
-
47
- expect(test[0][0].toNumber()).toEqual(10);
48
- expect(test[0][1].toString()).toEqual('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua');
49
- });
50
-
51
- it('decodes a complex type via construction (2)', (): void => {
52
- const INPUT = '0x08cc0200000000ce0200000001';
53
- const test = createTypeUnsafe<Vec<Codec>>(registry, 'Vec<(u32, [u32; 0], u16)>', [INPUT]);
54
-
55
- expect(test).toHaveLength(2);
56
- expect(test.toHex()).toEqual(INPUT);
57
- });
58
-
59
- it('allows construction via JSON', (): void => {
60
- expect(
61
- new Vec(registry, Text, ['6', '7']).toJSON()
62
- ).toEqual(['6', '7']);
63
- });
64
-
65
- it('allows construction via JSON (string type)', (): void => {
66
- expect(
67
- new Vec(registry, 'u32', ['6', '7']).toJSON()
68
- ).toEqual([6, 7]);
69
- });
70
-
71
- it('decodes reusing instantiated inputs', (): void => {
72
- const foo = new Text(registry, 'bar');
73
-
74
- expect(
75
- (new Vec(registry, Text, [foo]))[0]
76
- ).toBe(foo);
77
- });
78
- });
79
-
80
- describe('vector-like functions', (): void => {
81
- it('wraps a sequence of values', (): void => {
82
- expect(vector).toHaveLength(5);
83
- });
84
-
85
- it('has a sane representation for toString', (): void => {
86
- expect(vector.toString()).toEqual('[1, 23, 345, 4567, 56789]');
87
- });
88
-
89
- it('encodes with length prefix on toU8a()', (): void => {
90
- expect(vector.toU8a()).toEqual(new Uint8Array([
91
- 5 << 2,
92
- 1 << 2, 49,
93
- 2 << 2, 50, 51,
94
- 3 << 2, 51, 52, 53,
95
- 4 << 2, 52, 53, 54, 55,
96
- 5 << 2, 53, 54, 55, 56, 57
97
- ]));
98
- });
99
-
100
- it('encodes without length prefix on toU8a(true)', (): void => {
101
- expect(vector.toU8a(true)).toEqual(new Uint8Array([
102
- 1 << 2, 49,
103
- 2 << 2, 50, 51,
104
- 3 << 2, 51, 52, 53,
105
- 4 << 2, 52, 53, 54, 55,
106
- 5 << 2, 53, 54, 55, 56, 57
107
- ]));
108
- });
109
-
110
- it('exposes the type', (): void => {
111
- expect(vector.Type).toEqual('Text');
112
- });
113
-
114
- it('allows retrieval of a specific item', (): void => {
115
- expect(
116
- vector[2].toString()
117
- ).toEqual('345');
118
- });
119
-
120
- it('exposes a working forEach', (): void => {
121
- const result: Record<number, string> = {};
122
-
123
- vector.forEach((e, i): void => {
124
- result[i] = e.toString();
125
- });
126
-
127
- expect(result).toEqual({
128
- 0: '1',
129
- 1: '23',
130
- 2: '345',
131
- 3: '4567',
132
- 4: '56789'
133
- });
134
- });
135
-
136
- it('exposes a working concat', (): void => {
137
- expect(
138
- vector.concat(new Vec(registry, Text, ['987', '654'])).toString()
139
- ).toEqual('1,23,345,4567,56789,987,654');
140
- });
141
-
142
- it('exposes a working filter', (): void => {
143
- expect(
144
- vector.filter((_, i): boolean => i >= 3).toString()
145
- ).toEqual('4567,56789');
146
- });
147
-
148
- it('exposes a working map', (): void => {
149
- expect(
150
- vector.map((e): string => e.toString().substring(0, 1))
151
- ).toEqual(['1', '2', '3', '4', '5']);
152
- });
153
-
154
- it('exposes a working reduce', (): void => {
155
- expect(
156
- vector.reduce((r, e): string => `${r}${e.toString()}`, '')
157
- ).toEqual('123345456756789');
158
- });
159
-
160
- it('exposes a working indexOf', (): void => {
161
- expect(vector.indexOf('1')).toEqual(0);
162
- expect(vector.indexOf(new Text(registry, '23'))).toEqual(1);
163
- expect(vector.indexOf('0')).toEqual(-1);
164
- });
165
- });
166
-
167
- describe('encode', (): void => {
168
- const testEncode = (to: CodecTo, expected: any): void =>
169
- it(`can encode ${to}`, (): void => {
170
- expect(vector[to]()).toEqual(expected);
171
- });
172
-
173
- testEncode('toHex', '0x1404310832330c3334351034353637143536373839');
174
- testEncode('toJSON', ['1', '23', '345', '4567', '56789']);
175
- testEncode('toString', '[1, 23, 345, 4567, 56789]');
176
- testEncode('toU8a', Uint8Array.from([20, 4, 49, 8, 50, 51, 12, 51, 52, 53, 16, 52, 53, 54, 55, 20, 53, 54, 55, 56, 57]));
177
- });
178
-
179
- describe('utils', (): void => {
180
- const vec = new Vec(registry, Text, ['123', '456']);
181
-
182
- it('compares against codec types', (): void => {
183
- expect(vec.eq([new Text(registry, '123'), new Text(registry, '456')])).toBe(true);
184
- });
185
-
186
- it('compares against codec + primitive types', (): void => {
187
- expect(vec.eq(['123', new Text(registry, '456')])).toBe(true);
188
- });
189
-
190
- it('finds the index of an value', (): void => {
191
- const myId = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';
192
- const vec = new Vec(registry, AccountId, [
193
- '5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw', '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'
194
- ]);
195
-
196
- expect(vec.indexOf(myId)).toEqual(2);
197
- });
198
-
199
- it('allows a slice operator', (): void => {
200
- const vec = registry.createType('Vec<AccountId>', [
201
- randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a()
202
- ]);
203
-
204
- expect(vec).toHaveLength(10);
205
- expect(vec.slice(2, 7)).toHaveLength(5);
206
- });
207
-
208
- it('has a sane inspect', (): void => {
209
- const addrs = [
210
- '5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw', '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'
211
- ];
212
- const vec = registry.createType('Vec<AccountId>', addrs);
213
-
214
- expect(vec.inspect()).toEqual({
215
- inner: addrs.map((a) => ({
216
- outer: [decodeAddress(a)]
217
- })),
218
- outer: [new Uint8Array([3 << 2])]
219
- });
220
- });
221
- });
222
-
223
- perf('Vec<U32>', 40_000, [[new Uint8Array([3 << 2, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34])]], (v: Uint8Array) => new VecU32(registry, v));
224
- });
package/src/base/Vec.ts DELETED
@@ -1,133 +0,0 @@
1
- // Copyright 2017-2025 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import type { HexString } from '@pezkuwi/util/types';
5
- import type { Codec, CodecClass, DefinitionSetter, Registry } from '../types/index.js';
6
-
7
- import { compactFromU8aLim, identity, isHex, isU8a, logger, stringify, u8aToU8a } from '@pezkuwi/util';
8
-
9
- import { AbstractArray } from '../abstract/Array.js';
10
- import { decodeU8aVec, typeToConstructor } from '../utils/index.js';
11
-
12
- const MAX_LENGTH = 512 * 1024;
13
-
14
- const l = logger('Vec');
15
-
16
- function decodeVecLength (value: Uint8Array | HexString | unknown[]): [Uint8Array | unknown[] | null, number, number] {
17
- if (Array.isArray(value)) {
18
- return [value, value.length, 0];
19
- } else if (isU8a(value) || isHex(value)) {
20
- const u8a = u8aToU8a(value);
21
- const [startAt, length] = compactFromU8aLim(u8a);
22
-
23
- if (length > MAX_LENGTH) {
24
- throw new Error(`Vec length ${length.toString()} exceeds ${MAX_LENGTH}`);
25
- }
26
-
27
- return [u8a, length, startAt];
28
- } else if (!value) {
29
- return [null, 0, 0];
30
- }
31
-
32
- throw new Error(`Expected array/hex input to Vec<*> decoding, found ${typeof value}: ${stringify(value)}`);
33
- }
34
-
35
- export function decodeVec<T extends Codec> (registry: Registry, result: T[], value: Uint8Array | HexString | unknown[] | null, startAt: number, Type: CodecClass<T>): [number, number] {
36
- if (Array.isArray(value)) {
37
- const count = result.length;
38
-
39
- for (let i = 0; i < count; i++) {
40
- // 26/08/2022 this is actually a false positive - after recent eslint upgdates
41
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
42
- const entry = value[i];
43
-
44
- try {
45
- result[i] = entry instanceof Type
46
- ? entry
47
- : new Type(registry, entry);
48
- } catch (error) {
49
- l.error(`Unable to decode on index ${i}`, (error as Error).message);
50
-
51
- throw error;
52
- }
53
- }
54
-
55
- return [0, 0];
56
- } else if (!value) {
57
- return [0, 0];
58
- }
59
-
60
- // we don't need more checks, we already limited it via the length decoding
61
- return decodeU8aVec(registry, result, u8aToU8a(value), startAt, Type);
62
- }
63
-
64
- /**
65
- * @name Vec
66
- * @description
67
- * This manages codec arrays. Internally it keeps track of the length (as decoded) and allows
68
- * construction with the passed `Type` in the constructor. It is an extension to Array, providing
69
- * specific encoding/decoding on top of the base type.
70
- */
71
- export class Vec<T extends Codec> extends AbstractArray<T> {
72
- #Type: CodecClass<T>;
73
-
74
- constructor (registry: Registry, Type: CodecClass<T> | string, value: Uint8Array | HexString | unknown[] = [], { definition, setDefinition = identity }: DefinitionSetter<CodecClass<T>> = {}) {
75
- const [decodeFrom, length, startAt] = decodeVecLength(value);
76
-
77
- super(registry, length);
78
-
79
- this.#Type = definition || setDefinition(typeToConstructor<T>(registry, Type));
80
-
81
- this.initialU8aLength = (
82
- isU8a(decodeFrom)
83
- ? decodeU8aVec(registry, this, decodeFrom, startAt, this.#Type)
84
- : decodeVec(registry, this, decodeFrom, startAt, this.#Type)
85
- )[0];
86
- }
87
-
88
- public static with<O extends Codec> (Type: CodecClass<O> | string): CodecClass<Vec<O>> {
89
- let definition: CodecClass<O> | undefined;
90
-
91
- // eslint-disable-next-line no-return-assign
92
- const setDefinition = <T> (d: CodecClass<T>) =>
93
- (definition = d as unknown as CodecClass<O>) as unknown as CodecClass<T>;
94
-
95
- return class extends Vec<O> {
96
- constructor (registry: Registry, value?: any[]) {
97
- super(registry, Type, value, { definition, setDefinition });
98
- }
99
- };
100
- }
101
-
102
- /**
103
- * @description The type for the items
104
- */
105
- public get Type (): string {
106
- return this.#Type.name;
107
- }
108
-
109
- /**
110
- * @description Finds the index of the value in the array
111
- */
112
- public override indexOf (other?: unknown): number {
113
- // convert type first, this removes overhead from the eq
114
- const check = other instanceof this.#Type
115
- ? other
116
- : new this.#Type(this.registry, other);
117
-
118
- for (let i = 0, count = this.length; i < count; i++) {
119
- if (check.eq(this[i])) {
120
- return i;
121
- }
122
- }
123
-
124
- return -1;
125
- }
126
-
127
- /**
128
- * @description Returns the base runtime type name for this instance
129
- */
130
- public toRawType (): string {
131
- return `Vec<${this.registry.getClassName(this.#Type) || new this.#Type(this.registry).toRawType()}>`;
132
- }
133
- }
@@ -1,23 +0,0 @@
1
- // Copyright 2017-2025 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import type { Codec } from '../types/index.js';
5
-
6
- import { AbstractArray } from '../abstract/Array.js';
7
-
8
- /**
9
- * @name VecAny
10
- * @description
11
- * This manages codec arrays, assuming that the inputs are already of type Codec. Unlike
12
- * a vector, this can be used to manage array-like structures with variable arguments of
13
- * any types
14
- */
15
- export class VecAny<T extends Codec> extends AbstractArray<T> {
16
- /**
17
- * @description Returns the base runtime type name for this instance
18
- */
19
- public toRawType (): string {
20
- // FIXME This is basically an any type, cannot instantiate via createType
21
- return 'Vec<Codec>';
22
- }
23
- }
@@ -1,78 +0,0 @@
1
- // Copyright 2017-2025 @polkadot/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 { Text, u16, VecFixed } from '@pezkuwi/types-codec';
8
- import { stringToU8a } from '@pezkuwi/util';
9
-
10
- describe('VecFixed', (): void => {
11
- const registry = new TypeRegistry();
12
-
13
- describe('construction', (): void => {
14
- it('constructs via empty', (): void => {
15
- expect(new VecFixed(registry, Text, 2).toHex()).toEqual('0x0000');
16
- });
17
-
18
- it('constructs via Uint8Array', (): void => {
19
- expect(new VecFixed(registry, Text, 2, new Uint8Array([0x00, 0x04, 0x31])).toHex()).toEqual('0x000431');
20
- });
21
-
22
- it('constructs via hex', (): void => {
23
- expect(new VecFixed(registry, u16, 2, '0x12345678').toHex()).toEqual('0x12345678');
24
- });
25
-
26
- it('decodes reusing instance inputs', (): void => {
27
- const foo = new Text(registry, 'bar');
28
-
29
- expect(
30
- (new VecFixed(registry, Text, 1, [foo]))[0]
31
- ).toBe(foo);
32
- });
33
- });
34
-
35
- describe('utils', (): void => {
36
- let test: VecFixed<Text>;
37
-
38
- beforeEach((): void => {
39
- test = new (VecFixed.with(Text, 5))(registry, ['1', '2', '3', undefined, '56']);
40
- });
41
-
42
- it('has a sane string types', (): void => {
43
- expect(test.toRawType()).toEqual('[Text;5]');
44
- expect(test.Type).toEqual('Text');
45
- });
46
-
47
- it('has a correct toHex', (): void => {
48
- // each entry length 1 << 2, char as hex (0x31 === `1`), one empty
49
- expect(test.toHex()).toEqual('0x04310432043300083536');
50
- });
51
-
52
- it('has empty Uint8Array when length is 0', (): void => {
53
- const test = new (VecFixed.with(Text, 0))(registry);
54
-
55
- expect(test.encodedLength).toEqual(0);
56
- expect(test.toU8a()).toEqual(new Uint8Array([]));
57
- });
58
-
59
- it('has equivalent to 1 Uint8Array when length is 1', (): void => {
60
- const test = new (VecFixed.with(Text, 1))(registry, ['hello']);
61
-
62
- expect(test.encodedLength).toEqual(1 + 5);
63
- expect(test.toU8a()).toEqual(new Uint8Array([20, 104, 101, 108, 108, 111]));
64
- });
65
-
66
- it('has a sane inspect', (): void => {
67
- expect(test.inspect()).toEqual({
68
- inner: [
69
- { outer: [new Uint8Array([1 << 2]), stringToU8a('1')] },
70
- { outer: [new Uint8Array([1 << 2]), stringToU8a('2')] },
71
- { outer: [new Uint8Array([1 << 2]), stringToU8a('3')] },
72
- { outer: [new Uint8Array([0])] },
73
- { outer: [new Uint8Array([2 << 2]), stringToU8a('56')] }
74
- ]
75
- });
76
- });
77
- });
78
- });
@@ -1,92 +0,0 @@
1
- // Copyright 2017-2025 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import type { HexString } from '@pezkuwi/util/types';
5
- import type { Codec, CodecClass, DefinitionSetter, Inspect, Registry } from '../types/index.js';
6
-
7
- import { identity, isU8a, u8aConcatStrict } from '@pezkuwi/util';
8
-
9
- import { AbstractArray } from '../abstract/Array.js';
10
- import { decodeU8aVec, typeToConstructor } from '../utils/index.js';
11
- import { decodeVec } from './Vec.js';
12
-
13
- /**
14
- * @name VecFixed
15
- * @description
16
- * This manages codec arrays of a fixed length
17
- */
18
- export class VecFixed<T extends Codec> extends AbstractArray<T> {
19
- #Type: CodecClass<T>;
20
-
21
- constructor (registry: Registry, Type: CodecClass<T> | string, length: number, value: Uint8Array | HexString | unknown[] = [] as unknown[], { definition, setDefinition = identity }: DefinitionSetter<CodecClass<T>> = {}) {
22
- super(registry, length);
23
-
24
- this.#Type = definition || setDefinition(typeToConstructor<T>(registry, Type));
25
-
26
- this.initialU8aLength = (
27
- isU8a(value)
28
- ? decodeU8aVec(registry, this, value, 0, this.#Type)
29
- : decodeVec(registry, this, value, 0, this.#Type)
30
- )[1];
31
- }
32
-
33
- public static with<O extends Codec> (Type: CodecClass<O> | string, length: number): CodecClass<VecFixed<O>> {
34
- let definition: CodecClass<O> | undefined;
35
-
36
- // eslint-disable-next-line no-return-assign
37
- const setDefinition = <T> (d: CodecClass<T>) =>
38
- (definition = d as unknown as CodecClass<O>) as unknown as CodecClass<T>;
39
-
40
- return class extends VecFixed<O> {
41
- constructor (registry: Registry, value?: any[]) {
42
- super(registry, Type, length, value, { definition, setDefinition });
43
- }
44
- };
45
- }
46
-
47
- /**
48
- * @description The type for the items
49
- */
50
- public get Type (): string {
51
- return new this.#Type(this.registry).toRawType();
52
- }
53
-
54
- /**
55
- * @description The length of the value when encoded as a Uint8Array
56
- */
57
- public override get encodedLength (): number {
58
- let total = 0;
59
-
60
- for (let i = 0, count = this.length; i < count; i++) {
61
- total += this[i].encodedLength;
62
- }
63
-
64
- return total;
65
- }
66
-
67
- /**
68
- * @description Returns a breakdown of the hex encoding for this Codec
69
- */
70
- public override inspect (): Inspect {
71
- return {
72
- inner: this.inspectInner()
73
- };
74
- }
75
-
76
- public override toU8a (): Uint8Array {
77
- // we override, we don't add the length prefix for ourselves, and at the same time we
78
- // ignore isBare on entries, since they should be properly encoded at all times
79
- const encoded = this.toU8aInner();
80
-
81
- return encoded.length
82
- ? u8aConcatStrict(encoded)
83
- : new Uint8Array([]);
84
- }
85
-
86
- /**
87
- * @description Returns the base runtime type name for this instance
88
- */
89
- public toRawType (): string {
90
- return `[${this.Type};${this.length}]`;
91
- }
92
- }
@@ -1,12 +0,0 @@
1
- // Copyright 2017-2025 @polkadot/types-codec authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import '@pezkuwi/types-augment';
5
-
6
- import { TypeRegistry } from '@pezkuwi/types';
7
-
8
- import { U32 } from './index.js';
9
-
10
- const registry = new TypeRegistry();
11
-
12
- console.log(new U32(registry).divn(1));