@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,41 @@
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 { Null } from '@pezkuwi/types-codec';
8
+
9
+ describe('Null', (): void => {
10
+ const registry = new TypeRegistry();
11
+
12
+ it('compares against null', (): void => {
13
+ expect(new Null(registry).eq(null)).toBe(true);
14
+ });
15
+
16
+ it('compares against Null', (): void => {
17
+ expect(new Null(registry).eq(new Null(registry))).toBe(true);
18
+ });
19
+
20
+ it('compares against other (failed)', (): void => {
21
+ expect(new Null(registry).eq()).toBe(false);
22
+ });
23
+
24
+ it('has no hash', (): void => {
25
+ expect(
26
+ () => new Null(registry).hash
27
+ ).toThrow();
28
+ });
29
+
30
+ it('isEmpty', (): void => {
31
+ expect(new Null(registry).isEmpty).toBe(true);
32
+ });
33
+
34
+ it('has an empty hex', (): void => {
35
+ expect(new Null(registry).toHex()).toEqual('0x');
36
+ });
37
+
38
+ it('has a Null type', (): void => {
39
+ expect(new Null(registry).toRawType()).toEqual('Null');
40
+ });
41
+ });
@@ -0,0 +1,96 @@
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 { Codec, Inspect, IU8a, Registry } from '../types/index.js';
6
+
7
+ import { isNull } from '@pezkuwi/util';
8
+
9
+ /**
10
+ * @name Null
11
+ * @description
12
+ * Implements a type that does not contain anything (apart from `null`)
13
+ */
14
+ export class Null implements Codec {
15
+ readonly encodedLength = 0;
16
+ readonly isEmpty = true;
17
+ readonly registry: Registry;
18
+
19
+ public createdAtHash?: IU8a;
20
+ public initialU8aLength = 0;
21
+ public isStorageFallback?: boolean;
22
+
23
+ constructor (registry: Registry) {
24
+ this.registry = registry;
25
+ }
26
+
27
+ /**
28
+ * @description returns a hash of the contents
29
+ */
30
+ public get hash (): IU8a {
31
+ throw new Error('.hash is not implemented on Null');
32
+ }
33
+
34
+ /**
35
+ * @description Compares the value of the input to see if there is a match
36
+ */
37
+ public eq (other?: unknown): boolean {
38
+ return other instanceof Null || isNull(other);
39
+ }
40
+
41
+ /**
42
+ * @description Returns a breakdown of the hex encoding for this Codec
43
+ */
44
+ public inspect (): Inspect {
45
+ return {};
46
+ }
47
+
48
+ /**
49
+ * @description Returns a hex string representation of the value
50
+ */
51
+ public toHex (): HexString {
52
+ return '0x';
53
+ }
54
+
55
+ /**
56
+ * @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
57
+ */
58
+ public toHuman (): null {
59
+ return this.toJSON();
60
+ }
61
+
62
+ /**
63
+ * @description Converts the Object to JSON, typically used for RPC transfers
64
+ */
65
+ public toJSON (): null {
66
+ return null;
67
+ }
68
+
69
+ /**
70
+ * @description Converts the value in a best-fit primitive form
71
+ */
72
+ public toPrimitive (): null {
73
+ return null;
74
+ }
75
+
76
+ /**
77
+ * @description Returns the base runtime type name for this instance
78
+ */
79
+ public toRawType (): string {
80
+ return 'Null';
81
+ }
82
+
83
+ /**
84
+ * @description Returns the string representation of the value
85
+ */
86
+ public toString (): string {
87
+ return '';
88
+ }
89
+
90
+ /**
91
+ * @description Encodes the value as a Uint8Array as per the SCALE specifications
92
+ */
93
+ public toU8a (_isBare?: boolean): Uint8Array {
94
+ return new Uint8Array();
95
+ }
96
+ }
@@ -0,0 +1,216 @@
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 { bool, Bytes, Null, Option, Text, U32 } from '@pezkuwi/types-codec';
8
+
9
+ const registry = new TypeRegistry();
10
+
11
+ const testDecode = (type: string, input: any, expected: string): void =>
12
+ it(`can decode from ${type}`, (): void => {
13
+ const o = new Option(registry, Text, input);
14
+
15
+ expect(o.toString()).toBe(expected);
16
+ expect(o.isNone).toBe(!expected.length);
17
+ });
18
+
19
+ const testEncode = (to: 'toHex' | 'toString' | 'toU8a', expected: any): void =>
20
+ it(`can encode ${to}`, (): void => {
21
+ const e = new Option(registry, Text, 'foo');
22
+
23
+ expect(e[to]()).toEqual(expected);
24
+ });
25
+
26
+ describe('Option', (): void => {
27
+ it('converts undefined/null to empty', (): void => {
28
+ expect(new Option(registry, Text, undefined).isNone).toBe(true);
29
+ expect(new Option(registry, Text, null).isNone).toBe(true);
30
+ expect(new Option(registry, Text, 'test').isNone).toBe(false);
31
+ expect(new Option(registry, Text, '0x').isNone).toBe(true);
32
+ expect(new Option(registry, '()', null).isNone).toBe(true);
33
+ });
34
+
35
+ it('can wrap an Option<Null>/Option<()>', (): void => {
36
+ [
37
+ new Option(registry, Null, new Null(registry)),
38
+ new Option(registry, '()', new Null(registry))
39
+ ].forEach((test): void => {
40
+ expect(test.isSome).toBe(true);
41
+ expect(test.isNone).toBe(false);
42
+ expect(test.isEmpty).toBe(false);
43
+ expect(test.toU8a()).toEqual(new Uint8Array([1]));
44
+ expect(test.unwrap().toHex()).toEqual('0x');
45
+ });
46
+ });
47
+
48
+ it('can decode a nested Option', (): void => {
49
+ expect(
50
+ new Option(
51
+ registry,
52
+ Option.with(Option.with(Text)),
53
+ new Option(
54
+ registry,
55
+ Option.with(Text),
56
+ new Option(
57
+ registry,
58
+ Text,
59
+ new Uint8Array([1, 3 << 2, 66, 67, 68])
60
+ )
61
+ )
62
+ ).toU8a()
63
+ ).toEqual(new Uint8Array([1, 1, 1, 3 << 2, 66, 67, 68]));
64
+ });
65
+
66
+ it('can convert between different Some/None', (): void => {
67
+ const def = '{ "foo":"Text", "zar":"Text" }';
68
+ const none = new Option(registry, def, null);
69
+ const some = new Option(registry, def, new Option(registry, def, { foo: 'a', zar: 'b' }));
70
+
71
+ expect(new Option(registry, def, none).isNone).toBe(true);
72
+ expect(new Option(registry, def, some).isNone).toBe(false);
73
+ expect(new Option(registry, def, some).unwrap().toHuman()).toEqual({ foo: 'a', zar: 'b' });
74
+ });
75
+
76
+ it('correctly handles booleans', (): void => {
77
+ expect(new Option(registry, bool).isNone).toBe(true);
78
+ expect(new Option(registry, bool, true).isSome).toBe(true);
79
+ expect(new Option(registry, bool, true).unwrap().isTrue).toBe(true);
80
+ expect(new Option(registry, bool, false).isSome).toBe(true);
81
+ expect(new Option(registry, bool, false).unwrap().isTrue).toBe(false);
82
+ });
83
+
84
+ it('converts an option to an option', (): void => {
85
+ expect(
86
+ new Option(registry, Text, new Option(registry, Text, 'hello')).toString()
87
+ ).toEqual('hello');
88
+ });
89
+
90
+ it('converts an option to an option (strings)', (): void => {
91
+ expect(
92
+ new Option(registry, 'Text', new Option(registry, 'Text', 'hello')).toString()
93
+ ).toEqual('hello');
94
+ });
95
+
96
+ it('converts correctly from hex with toHex (Bytes)', (): void => {
97
+ // Option<Bytes> for a teyrchain head, however, this is effectively an
98
+ // Option<Option<Bytes>> (hence the length, since it is from storage)
99
+ const HEX = '0x210100000000000000000000000000000000000000000000000000000000000000000000000000000000011b4d03dd8c01f1049143cf9c4c817e4b167f1d1b83e5c6f0f10d89ba1e7bce';
100
+
101
+ // watch the hex prefix and length
102
+ expect(
103
+ new Option(registry, Bytes, HEX).toHex().substring(6)
104
+ ).toEqual(HEX.substring(2));
105
+ });
106
+
107
+ it('converts correctly from hex with toNumber (U64)', (): void => {
108
+ const HEX = '0x12345678';
109
+
110
+ expect(
111
+ new Option(registry, U32, HEX).unwrap().toNumber()
112
+ ).toEqual(0x12345678);
113
+ });
114
+
115
+ it('decodes reusing instanciated inputs', (): void => {
116
+ const foo = new Text(registry, 'bar');
117
+
118
+ expect(
119
+ (new Option(registry, Text, foo)).value
120
+ ).toBe(foo);
121
+ });
122
+
123
+ testDecode('string (with)', 'foo', 'foo');
124
+ testDecode('string (without)', undefined, '');
125
+ testDecode('Uint8Array (with)', Uint8Array.from([1, 12, 102, 111, 111]), 'foo');
126
+ testDecode('Uint8Array (without)', Uint8Array.from([0]), '');
127
+
128
+ testEncode('toHex', '0x0c666f6f');
129
+ testEncode('toString', 'foo');
130
+ testEncode('toU8a', Uint8Array.from([1, 12, 102, 111, 111]));
131
+
132
+ it('has empty toString() (undefined)', (): void => {
133
+ expect(
134
+ new Option(registry, Text).toString()
135
+ ).toEqual('');
136
+ });
137
+
138
+ it('has value toString() (provided)', (): void => {
139
+ expect(
140
+ new Option(registry, Text, new Uint8Array([1, 4 << 2, 49, 50, 51, 52])).toString()
141
+ ).toEqual('1234');
142
+ });
143
+
144
+ it('converts toU8a() with', (): void => {
145
+ expect(
146
+ new Option(registry, Text, '1234').toU8a()
147
+ ).toEqual(new Uint8Array([1, 4 << 2, 49, 50, 51, 52]));
148
+ });
149
+
150
+ it('allows bare specifiers on toU8a', (): void => {
151
+ expect(
152
+ new Option(registry, Text, '1234').toU8a(true)
153
+ ).toEqual(new Uint8Array([49, 50, 51, 52]));
154
+ });
155
+
156
+ it('converts toU8a() without', (): void => {
157
+ expect(
158
+ new Option(registry, Text).toU8a()
159
+ ).toEqual(new Uint8Array([0]));
160
+ });
161
+
162
+ it('converts toJSON() as null without', (): void => {
163
+ expect(
164
+ new Option(registry, Text).toJSON()
165
+ ).toEqual(null);
166
+ });
167
+
168
+ it('converts toJSON() as non-null with Bytes', (): void => {
169
+ expect(
170
+ new Option(registry, Bytes, 'abcde').toJSON()
171
+ ).toEqual('0x6162636465');
172
+ });
173
+
174
+ it('converts toJSON() as non-null with Text', (): void => {
175
+ expect(
176
+ new Option(registry, Text, 'abcde').toJSON()
177
+ ).toEqual('abcde');
178
+ });
179
+
180
+ describe('utils', (): void => {
181
+ const test = new Option(registry, Text, '1234');
182
+
183
+ it('compares against other option', (): void => {
184
+ expect(test.eq(new Option(registry, Text, '1234'))).toBe(true);
185
+ });
186
+
187
+ it('compares against raw value', (): void => {
188
+ expect(test.eq('1234')).toBe(true);
189
+ });
190
+
191
+ it('unwrapOr to specified if empty', (): void => {
192
+ expect(new Option(registry, Text).unwrapOr('6789').toString()).toEqual('6789');
193
+ });
194
+
195
+ it('unwrapOr to specified if non-empty', (): void => {
196
+ expect(new Option(registry, Text, '1234').unwrapOr(null)?.toString()).toEqual('1234');
197
+ });
198
+
199
+ it('unwrapOrDefault to default if empty', (): void => {
200
+ expect(new Option(registry, U32).unwrapOrDefault().toNumber()).toEqual(0);
201
+ });
202
+
203
+ it('unwrapOrDefault to specified if non-empty', (): void => {
204
+ expect(new Option(registry, U32, '1234').unwrapOrDefault().toNumber()).toEqual(1234);
205
+ });
206
+
207
+ it('has a sane inspect', (): void => {
208
+ expect(
209
+ new Option(registry, U32, '1234').inspect()
210
+ ).toEqual({
211
+ inner: undefined,
212
+ outer: [new Uint8Array([0x01]), new Uint8Array([210, 4, 0, 0])]
213
+ });
214
+ });
215
+ });
216
+ });
@@ -0,0 +1,275 @@
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, Codec, CodecClass, DefinitionSetter, Inspect, IOption, IU8a, Registry } from '../types/index.js';
6
+
7
+ import { identity, isCodec, isNull, isU8a, isUndefined, u8aToHex } from '@pezkuwi/util';
8
+
9
+ import { typeToConstructor } from '../utils/index.js';
10
+ import { Null } from './Null.js';
11
+
12
+ class None extends Null {
13
+ /**
14
+ * @description Returns the base runtime type name for this instance
15
+ */
16
+ public override toRawType (): string {
17
+ return 'None';
18
+ }
19
+ }
20
+
21
+ /** @internal */
22
+ function decodeOption (registry: Registry, Type: CodecClass, value?: unknown): Codec {
23
+ if (value instanceof Type) {
24
+ // don't re-create, use as it (which also caters for derived types)
25
+ return value;
26
+ } else if (value instanceof Option) {
27
+ if (value.value instanceof Type) {
28
+ // same instance, return it
29
+ return value.value;
30
+ } else if (value.isNone) {
31
+ // internal is None, we are also none
32
+ return new None(registry);
33
+ }
34
+
35
+ // convert the actual value into known
36
+ return new Type(registry, value.value);
37
+ } else if (isNull(value) || isUndefined(value) || value === '0x' || value instanceof None) {
38
+ // anything empty we pass as-is
39
+ return new None(registry);
40
+ } else if (isU8a(value)) {
41
+ // the isU8a check happens last in the if-tree - since the wrapped value
42
+ // may be an instance of it, so Type and Option checks go in first
43
+ return !value.length || value[0] === 0
44
+ ? new None(registry)
45
+ : new Type(registry, value.subarray(1));
46
+ }
47
+
48
+ return new Type(registry, value);
49
+ }
50
+
51
+ /**
52
+ * @name Option
53
+ * @description
54
+ * An Option is an optional field. Basically the first byte indicates that there is
55
+ * is value to follow. If the byte is `1` there is an actual value. So the Option
56
+ * implements that - decodes, checks for optionality and wraps the required structure
57
+ * with a value if/as required/found.
58
+ */
59
+ export class Option<T extends Codec> implements IOption<T> {
60
+ readonly registry: Registry;
61
+
62
+ public createdAtHash?: IU8a;
63
+ public initialU8aLength?: number;
64
+ public isStorageFallback?: boolean;
65
+
66
+ readonly #Type: CodecClass<T>;
67
+ readonly #raw: T;
68
+
69
+ constructor (registry: Registry, typeName: CodecClass<T> | string, value?: unknown, { definition, setDefinition = identity }: DefinitionSetter<CodecClass<T>> = {}) {
70
+ const Type = definition || setDefinition(typeToConstructor(registry, typeName));
71
+ const decoded = isU8a(value) && value.length && !isCodec(value)
72
+ ? value[0] === 0
73
+ ? new None(registry)
74
+ : new Type(registry, value.subarray(1))
75
+ : decodeOption(registry, Type, value);
76
+
77
+ this.registry = registry;
78
+ this.#Type = Type;
79
+ this.#raw = decoded as T;
80
+
81
+ if (decoded?.initialU8aLength) {
82
+ this.initialU8aLength = 1 + decoded.initialU8aLength;
83
+ }
84
+ }
85
+
86
+ public static with<O extends Codec> (Type: CodecClass<O> | string): CodecClass<Option<O>> {
87
+ let definition: CodecClass<O> | undefined;
88
+
89
+ const setDefinition = <T> (d: CodecClass<T>): CodecClass<T> => {
90
+ definition = d as unknown as CodecClass<O>;
91
+
92
+ return d;
93
+ };
94
+
95
+ return class extends Option<O> {
96
+ constructor (registry: Registry, value?: unknown) {
97
+ super(registry, Type, value, { definition, setDefinition });
98
+ }
99
+ };
100
+ }
101
+
102
+ /**
103
+ * @description The length of the value when encoded as a Uint8Array
104
+ */
105
+ public get encodedLength (): number {
106
+ // boolean byte (has value, doesn't have) along with wrapped length
107
+ return 1 + this.#raw.encodedLength;
108
+ }
109
+
110
+ /**
111
+ * @description returns a hash of the contents
112
+ */
113
+ public get hash (): IU8a {
114
+ return this.registry.hash(this.toU8a());
115
+ }
116
+
117
+ /**
118
+ * @description Checks if the Option has no value
119
+ */
120
+ public get isEmpty (): boolean {
121
+ return this.isNone;
122
+ }
123
+
124
+ /**
125
+ * @description Checks if the Option has no value
126
+ */
127
+ public get isNone (): boolean {
128
+ return this.#raw instanceof None;
129
+ }
130
+
131
+ /**
132
+ * @description Checks if the Option has a value
133
+ */
134
+ public get isSome (): boolean {
135
+ return !this.isNone;
136
+ }
137
+
138
+ /**
139
+ * @description The actual value for the Option
140
+ */
141
+ public get value (): T {
142
+ return this.#raw;
143
+ }
144
+
145
+ /**
146
+ * @description Compares the value of the input to see if there is a match
147
+ */
148
+ public eq (other?: unknown): boolean {
149
+ if (other instanceof Option) {
150
+ return (this.isSome === other.isSome) && this.value.eq(other.value);
151
+ }
152
+
153
+ return this.value.eq(other);
154
+ }
155
+
156
+ /**
157
+ * @description Returns a breakdown of the hex encoding for this Codec
158
+ */
159
+ public inspect (): Inspect {
160
+ if (this.isNone) {
161
+ return { outer: [new Uint8Array([0])] };
162
+ }
163
+
164
+ const { inner, outer = [] } = this.#raw.inspect();
165
+
166
+ return {
167
+ inner,
168
+ outer: [new Uint8Array([1]), ...outer]
169
+ };
170
+ }
171
+
172
+ /**
173
+ * @description Returns a hex string representation of the value
174
+ */
175
+ public toHex (): HexString {
176
+ // This attempts to align with the JSON encoding - actually in this case
177
+ // the isSome value is correct, however the `isNone` may be problematic
178
+ return this.isNone
179
+ ? '0x'
180
+ : u8aToHex(this.toU8a().subarray(1));
181
+ }
182
+
183
+ /**
184
+ * @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
185
+ */
186
+ public toHuman (isExtended?: boolean, disableAscii?: boolean): AnyJson {
187
+ return this.#raw.toHuman(isExtended, disableAscii);
188
+ }
189
+
190
+ /**
191
+ * @description Converts the Object to JSON, typically used for RPC transfers
192
+ */
193
+ public toJSON (): AnyJson {
194
+ return this.isNone
195
+ ? null
196
+ : this.#raw.toJSON();
197
+ }
198
+
199
+ /**
200
+ * @description Converts the value in a best-fit primitive form
201
+ */
202
+ public toPrimitive (disableAscii?: boolean): AnyJson {
203
+ return this.isNone
204
+ ? null
205
+ : this.#raw.toPrimitive(disableAscii);
206
+ }
207
+
208
+ /**
209
+ * @description Returns the base runtime type name for this instance
210
+ */
211
+ public toRawType (isBare?: boolean): string {
212
+ const wrapped = this.registry.getClassName(this.#Type) || new this.#Type(this.registry).toRawType();
213
+
214
+ return isBare
215
+ ? wrapped
216
+ : `Option<${wrapped}>`;
217
+ }
218
+
219
+ /**
220
+ * @description Returns the string representation of the value
221
+ */
222
+ public toString (): string {
223
+ return this.#raw.toString();
224
+ }
225
+
226
+ /**
227
+ * @description Encodes the value as a Uint8Array as per the SCALE specifications
228
+ * @param isBare true when the value has none of the type-specific prefixes (internal)
229
+ */
230
+ public toU8a (isBare?: boolean): Uint8Array {
231
+ if (isBare) {
232
+ return this.#raw.toU8a(true);
233
+ }
234
+
235
+ const u8a = new Uint8Array(this.encodedLength);
236
+
237
+ if (this.isSome) {
238
+ u8a.set([1]);
239
+ u8a.set(this.#raw.toU8a(), 1);
240
+ }
241
+
242
+ return u8a;
243
+ }
244
+
245
+ /**
246
+ * @description Returns the value that the Option represents (if available), throws if null
247
+ */
248
+ public unwrap (): T {
249
+ if (this.isNone) {
250
+ throw new Error('Option: unwrapping a None value');
251
+ }
252
+
253
+ return this.#raw;
254
+ }
255
+
256
+ /**
257
+ * @description Returns the value that the Option represents (if available) or defaultValue if none
258
+ * @param defaultValue The value to return if the option isNone
259
+ */
260
+ public unwrapOr<O> (defaultValue: O): T | O {
261
+ return this.isSome
262
+ ? this.unwrap()
263
+ : defaultValue;
264
+ }
265
+
266
+ /**
267
+ * @description Returns the value that the Option represents (if available) or defaultValue if none
268
+ * @param defaultValue The value to return if the option isNone
269
+ */
270
+ public unwrapOrDefault (): T {
271
+ return this.isSome
272
+ ? this.unwrap()
273
+ : new this.#Type(this.registry);
274
+ }
275
+ }
@@ -0,0 +1,64 @@
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 { Result, Text, u32 } from '@pezkuwi/types-codec';
8
+ import { hexToString } from '@pezkuwi/util';
9
+
10
+ describe('Result', (): void => {
11
+ const registry = new TypeRegistry();
12
+ const Type = Result.with({ Err: Text, Ok: u32 });
13
+
14
+ it('has a sane toRawType representation', (): void => {
15
+ expect(new Type(registry).toRawType()).toEqual('Result<u32,Text>');
16
+ });
17
+
18
+ it('decodes from a u8a (success)', (): void => {
19
+ const result = new Type(registry, new Uint8Array([0, 1, 2, 3, 4]));
20
+
21
+ expect(result.isOk).toBe(true);
22
+ expect(result.asOk.toU8a()).toEqual(new Uint8Array([1, 2, 3, 4]));
23
+ expect(result.toHex()).toEqual('0x0001020304');
24
+ expect(result.toJSON()).toEqual({
25
+ ok: 0x04030201
26
+ });
27
+ });
28
+
29
+ it('decodes from a u8a (error)', (): void => {
30
+ const result = new Type(registry, new Uint8Array([1, 4 << 2, 100, 101, 102, 103]));
31
+
32
+ expect(result.isErr).toBe(true);
33
+ expect(result.asErr.toU8a()).toEqual(new Uint8Array([4 << 2, 100, 101, 102, 103]));
34
+ expect(result.toHex()).toEqual('0x011064656667');
35
+ expect(result.toJSON()).toEqual({
36
+ err: hexToString('0x64656667')
37
+ });
38
+ });
39
+
40
+ it('decodes from a JSON representation', (): void => {
41
+ const result = new Type(registry, { Err: 'error' });
42
+
43
+ expect(result.isErr).toBe(true);
44
+ expect(result.asErr.toString()).toEqual('error');
45
+ expect(result.toHex()).toEqual('0x01146572726f72');
46
+ });
47
+
48
+ it('decodes reusing instanciated inputs', (): void => {
49
+ const foo = new Text(registry, 'bar');
50
+
51
+ expect(
52
+ new Result(
53
+ registry,
54
+ Text,
55
+ Text,
56
+ { Ok: foo }
57
+ ).asOk
58
+ ).toBe(foo);
59
+ });
60
+
61
+ it('returns a proper raw typedef rom a built-in', (): void => {
62
+ expect(registry.createType('DispatchResult').toRawType()).toEqual('Result<(),DispatchError>');
63
+ });
64
+ });