@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.
- package/LICENSE +201 -0
- package/abstract/Array.js +166 -0
- package/abstract/Base.js +101 -0
- package/abstract/Int.js +226 -0
- package/abstract/Object.js +40 -0
- package/{src/abstract/index.ts → abstract/index.js} +0 -3
- package/base/Compact.js +159 -0
- package/base/DoNotConstruct.js +95 -0
- package/base/Enum.js +369 -0
- package/{build/base → base}/Int.d.ts +1 -1
- package/base/Int.js +26 -0
- package/base/Null.js +77 -0
- package/base/Option.js +232 -0
- package/base/Result.js +63 -0
- package/base/Tuple.js +110 -0
- package/{build/base → base}/UInt.d.ts +1 -1
- package/base/UInt.js +23 -0
- package/base/Vec.js +102 -0
- package/base/VecAny.js +17 -0
- package/base/VecFixed.js +67 -0
- package/{src/base/index.ts → base/index.js} +0 -3
- package/{src/bundle.ts → bundle.js} +0 -6
- package/cjs/abstract/Array.d.ts +89 -0
- package/cjs/abstract/Array.js +170 -0
- package/cjs/abstract/Base.d.ts +75 -0
- package/cjs/abstract/Base.js +105 -0
- package/cjs/abstract/Int.d.ts +80 -0
- package/cjs/abstract/Int.js +230 -0
- package/cjs/abstract/Object.d.ts +67 -0
- package/cjs/abstract/Object.js +44 -0
- package/cjs/abstract/index.d.ts +3 -0
- package/cjs/abstract/index.js +9 -0
- package/cjs/base/Compact.d.ts +88 -0
- package/cjs/base/Compact.js +163 -0
- package/cjs/base/DoNotConstruct.d.ts +63 -0
- package/cjs/base/DoNotConstruct.js +99 -0
- package/cjs/base/Enum.d.ts +118 -0
- package/cjs/base/Enum.js +373 -0
- package/cjs/base/Int.d.ts +16 -0
- package/cjs/base/Int.js +30 -0
- package/cjs/base/Null.d.ts +56 -0
- package/cjs/base/Null.js +81 -0
- package/cjs/base/Option.d.ts +94 -0
- package/cjs/base/Option.js +236 -0
- package/cjs/base/Result.d.ts +38 -0
- package/cjs/base/Result.js +67 -0
- package/cjs/base/Tuple.d.ts +42 -0
- package/cjs/base/Tuple.js +114 -0
- package/cjs/base/UInt.d.ts +15 -0
- package/cjs/base/UInt.js +27 -0
- package/cjs/base/Vec.d.ts +28 -0
- package/cjs/base/Vec.js +107 -0
- package/cjs/base/VecAny.d.ts +15 -0
- package/cjs/base/VecAny.js +21 -0
- package/cjs/base/VecFixed.d.ts +30 -0
- package/cjs/base/VecFixed.js +71 -0
- package/cjs/base/index.d.ts +12 -0
- package/cjs/base/index.js +27 -0
- package/cjs/bundle.d.ts +7 -0
- package/cjs/bundle.js +12 -0
- package/cjs/extended/BTreeMap.js +14 -0
- package/cjs/extended/BTreeSet.js +189 -0
- package/cjs/extended/BitVec.js +112 -0
- package/cjs/extended/Bytes.js +74 -0
- package/cjs/extended/HashMap.js +14 -0
- package/cjs/extended/Linkage.js +70 -0
- package/cjs/extended/Map.js +204 -0
- package/cjs/extended/OptionBool.js +76 -0
- package/cjs/extended/Range.js +42 -0
- package/cjs/extended/RangeInclusive.js +17 -0
- package/cjs/extended/Type.js +25 -0
- package/cjs/extended/U8aFixed.js +46 -0
- package/cjs/extended/WrapperKeepOpaque.js +103 -0
- package/cjs/extended/WrapperOpaque.js +23 -0
- package/cjs/extended/index.js +32 -0
- package/cjs/index.js +5 -0
- package/cjs/native/Bool.js +113 -0
- package/cjs/native/Date.js +144 -0
- package/cjs/native/Float.js +111 -0
- package/cjs/native/Json.js +121 -0
- package/cjs/native/Raw.js +144 -0
- package/cjs/native/Set.js +219 -0
- package/cjs/native/Struct.data.js +4 -0
- package/cjs/native/Struct.js +264 -0
- package/cjs/native/Text.js +154 -0
- package/cjs/native/index.js +22 -0
- package/cjs/package.json +3 -0
- package/cjs/packageDetect.js +5 -0
- package/cjs/packageInfo.js +4 -0
- package/cjs/primitive/F32.js +14 -0
- package/cjs/primitive/F64.js +14 -0
- package/cjs/primitive/I128.js +14 -0
- package/cjs/primitive/I16.js +14 -0
- package/cjs/primitive/I256.js +14 -0
- package/cjs/primitive/I32.js +14 -0
- package/cjs/primitive/I64.js +14 -0
- package/cjs/primitive/I8.js +14 -0
- package/cjs/primitive/ISize.js +18 -0
- package/cjs/primitive/U128.js +14 -0
- package/cjs/primitive/U16.js +14 -0
- package/cjs/primitive/U256.js +14 -0
- package/cjs/primitive/U32.js +14 -0
- package/cjs/primitive/U64.js +14 -0
- package/cjs/primitive/U8.js +14 -0
- package/cjs/primitive/USize.js +18 -0
- package/cjs/primitive/index.js +51 -0
- package/{build → cjs}/types/codec.d.ts +1 -1
- package/cjs/types/codec.js +2 -0
- package/cjs/types/helpers.js +2 -0
- package/cjs/types/index.js +7 -0
- package/cjs/types/interfaces.js +2 -0
- package/cjs/types/registry.js +2 -0
- package/cjs/utils/compareArray.js +13 -0
- package/cjs/utils/compareMap.js +30 -0
- package/cjs/utils/compareSet.js +20 -0
- package/cjs/utils/decodeU8a.js +105 -0
- package/cjs/utils/index.js +25 -0
- package/cjs/utils/sanitize.js +233 -0
- package/cjs/utils/sortValues.js +84 -0
- package/cjs/utils/toConstructors.js +40 -0
- package/cjs/utils/typesToMap.js +10 -0
- package/cjs/utils/util.js +7 -0
- package/extended/BTreeMap.d.ts +5 -0
- package/extended/BTreeMap.js +10 -0
- package/extended/BTreeSet.d.ts +64 -0
- package/extended/BTreeSet.js +185 -0
- package/extended/BitVec.d.ts +37 -0
- package/extended/BitVec.js +108 -0
- package/extended/Bytes.d.ts +29 -0
- package/extended/Bytes.js +70 -0
- package/extended/HashMap.d.ts +5 -0
- package/extended/HashMap.js +10 -0
- package/extended/Linkage.d.ts +37 -0
- package/extended/Linkage.js +65 -0
- package/extended/Map.d.ts +59 -0
- package/extended/Map.js +200 -0
- package/extended/OptionBool.d.ts +36 -0
- package/extended/OptionBool.js +72 -0
- package/extended/Range.d.ts +29 -0
- package/extended/Range.js +38 -0
- package/extended/RangeInclusive.d.ts +6 -0
- package/extended/RangeInclusive.js +13 -0
- package/extended/Type.d.ts +16 -0
- package/extended/Type.js +21 -0
- package/extended/U8aFixed.d.ts +16 -0
- package/extended/U8aFixed.js +42 -0
- package/extended/WrapperKeepOpaque.d.ts +40 -0
- package/extended/WrapperKeepOpaque.js +99 -0
- package/extended/WrapperOpaque.d.ts +10 -0
- package/extended/WrapperOpaque.js +19 -0
- package/{src/extended/index.ts → extended/index.d.ts} +0 -3
- package/extended/index.js +14 -0
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/native/Bool.d.ts +71 -0
- package/native/Bool.js +109 -0
- package/native/Date.d.ts +84 -0
- package/native/Date.js +140 -0
- package/native/Float.d.ts +68 -0
- package/native/Float.js +107 -0
- package/native/Json.d.ts +69 -0
- package/native/Json.js +117 -0
- package/native/Raw.d.ts +87 -0
- package/native/Raw.js +140 -0
- package/native/Set.d.ts +84 -0
- package/native/Set.js +215 -0
- package/native/Struct.d.ts +106 -0
- package/{src/native/Struct.data.ts → native/Struct.data.js} +0 -3
- package/native/Struct.js +260 -0
- package/native/Text.d.ts +77 -0
- package/native/Text.js +150 -0
- package/{src/native/index.ts → native/index.d.ts} +0 -3
- package/native/index.js +8 -0
- package/package.json +1126 -11
- package/packageDetect.d.ts +1 -0
- package/packageDetect.js +3 -0
- package/packageInfo.d.ts +6 -0
- package/packageInfo.js +1 -0
- package/primitive/F32.d.ts +11 -0
- package/primitive/F32.js +10 -0
- package/primitive/F64.d.ts +11 -0
- package/primitive/F64.js +10 -0
- package/primitive/I128.d.ts +11 -0
- package/primitive/I128.js +10 -0
- package/primitive/I16.d.ts +11 -0
- package/primitive/I16.js +10 -0
- package/primitive/I256.d.ts +11 -0
- package/primitive/I256.js +10 -0
- package/primitive/I32.d.ts +11 -0
- package/primitive/I32.js +10 -0
- package/primitive/I64.d.ts +11 -0
- package/primitive/I64.js +10 -0
- package/primitive/I8.d.ts +11 -0
- package/primitive/I8.js +10 -0
- package/primitive/ISize.d.ts +12 -0
- package/primitive/ISize.js +14 -0
- package/primitive/U128.d.ts +11 -0
- package/primitive/U128.js +10 -0
- package/primitive/U16.d.ts +11 -0
- package/primitive/U16.js +10 -0
- package/primitive/U256.d.ts +11 -0
- package/primitive/U256.js +10 -0
- package/primitive/U32.d.ts +11 -0
- package/primitive/U32.js +10 -0
- package/primitive/U64.d.ts +11 -0
- package/primitive/U64.js +10 -0
- package/primitive/U8.d.ts +11 -0
- package/primitive/U8.js +10 -0
- package/primitive/USize.d.ts +12 -0
- package/primitive/USize.js +14 -0
- package/{src/primitive/index.ts → primitive/index.d.ts} +0 -3
- package/primitive/index.js +16 -0
- package/types/codec.d.ts +113 -0
- package/types/codec.js +1 -0
- package/{src/types/helpers.ts → types/helpers.d.ts} +8 -31
- package/types/helpers.js +1 -0
- package/{src/types/index.ts → types/index.d.ts} +0 -3
- package/types/index.js +4 -0
- package/types/interfaces.d.ts +74 -0
- package/types/interfaces.js +1 -0
- package/types/registry.d.ts +67 -0
- package/types/registry.js +1 -0
- package/utils/compareArray.d.ts +1 -0
- package/utils/compareArray.js +10 -0
- package/utils/compareMap.d.ts +1 -0
- package/utils/compareMap.js +27 -0
- package/utils/compareSet.d.ts +1 -0
- package/utils/compareSet.js +17 -0
- package/utils/decodeU8a.d.ts +26 -0
- package/utils/decodeU8a.js +100 -0
- package/{src/utils/index.ts → utils/index.d.ts} +0 -3
- package/utils/index.js +8 -0
- package/utils/sanitize.d.ts +15 -0
- package/utils/sanitize.js +219 -0
- package/utils/sortValues.d.ts +12 -0
- package/utils/sortValues.js +79 -0
- package/utils/toConstructors.d.ts +16 -0
- package/utils/toConstructors.js +35 -0
- package/utils/typesToMap.d.ts +2 -0
- package/utils/typesToMap.js +7 -0
- package/utils/util.d.ts +3 -0
- package/utils/util.js +4 -0
- package/src/abstract/Array.ts +0 -213
- package/src/abstract/Base.ts +0 -129
- package/src/abstract/Int.ts +0 -271
- package/src/abstract/Object.ts +0 -99
- package/src/base/Compact.spec.ts +0 -99
- package/src/base/Compact.ts +0 -198
- package/src/base/DoNotConstruct.spec.ts +0 -23
- package/src/base/DoNotConstruct.ts +0 -118
- package/src/base/Enum.spec.ts +0 -487
- package/src/base/Enum.ts +0 -460
- package/src/base/Int.spec.ts +0 -225
- package/src/base/Int.ts +0 -34
- package/src/base/Null.spec.ts +0 -41
- package/src/base/Null.ts +0 -96
- package/src/base/Option.spec.ts +0 -216
- package/src/base/Option.ts +0 -275
- package/src/base/Result.spec.ts +0 -64
- package/src/base/Result.ts +0 -79
- package/src/base/Tuple.spec.ts +0 -161
- package/src/base/Tuple.ts +0 -149
- package/src/base/UInt.spec.ts +0 -192
- package/src/base/UInt.ts +0 -30
- package/src/base/Vec.spec.ts +0 -224
- package/src/base/Vec.ts +0 -133
- package/src/base/VecAny.ts +0 -23
- package/src/base/VecFixed.spec.ts +0 -78
- package/src/base/VecFixed.ts +0 -92
- package/src/checkTypes.manual.ts +0 -12
- package/src/extended/BTreeMap.spec.ts +0 -245
- package/src/extended/BTreeMap.ts +0 -16
- package/src/extended/BTreeSet.spec.ts +0 -260
- package/src/extended/BTreeSet.ts +0 -233
- package/src/extended/BitVec.spec.ts +0 -97
- package/src/extended/BitVec.ts +0 -137
- package/src/extended/Bytes.spec.ts +0 -75
- package/src/extended/Bytes.ts +0 -88
- package/src/extended/HashMap.spec.ts +0 -36
- package/src/extended/HashMap.ts +0 -16
- package/src/extended/Linkage.spec.ts +0 -43
- package/src/extended/Linkage.ts +0 -81
- package/src/extended/Map.spec.ts +0 -123
- package/src/extended/Map.ts +0 -255
- package/src/extended/OptionBool.spec.ts +0 -49
- package/src/extended/OptionBool.ts +0 -93
- package/src/extended/Range.spec.ts +0 -37
- package/src/extended/Range.ts +0 -56
- package/src/extended/RangeInclusive.ts +0 -20
- package/src/extended/Type.spec.ts +0 -118
- package/src/extended/Type.ts +0 -29
- package/src/extended/U8aFixed.spec.ts +0 -117
- package/src/extended/U8aFixed.ts +0 -57
- package/src/extended/WrapperKeepOpaque.spec.ts +0 -101
- package/src/extended/WrapperKeepOpaque.ts +0 -128
- package/src/extended/WrapperOpaque.spec.ts +0 -58
- package/src/extended/WrapperOpaque.ts +0 -27
- package/src/index.ts +0 -6
- package/src/mod.ts +0 -4
- package/src/native/Bool.spec.ts +0 -74
- package/src/native/Bool.ts +0 -137
- package/src/native/Date.spec.ts +0 -85
- package/src/native/Date.ts +0 -169
- package/src/native/Float.spec.ts +0 -51
- package/src/native/Float.ts +0 -136
- package/src/native/Json.ts +0 -147
- package/src/native/Raw.spec.ts +0 -113
- package/src/native/Raw.ts +0 -171
- package/src/native/Set.spec.ts +0 -116
- package/src/native/Set.ts +0 -269
- package/src/native/Struct.spec.ts +0 -411
- package/src/native/Struct.ts +0 -338
- package/src/native/Text.spec.ts +0 -85
- package/src/native/Text.ts +0 -184
- package/src/packageDetect.ts +0 -11
- package/src/packageInfo.ts +0 -6
- package/src/primitive/F32.ts +0 -14
- package/src/primitive/F64.ts +0 -14
- package/src/primitive/I128.ts +0 -14
- package/src/primitive/I16.ts +0 -14
- package/src/primitive/I256.ts +0 -14
- package/src/primitive/I32.ts +0 -14
- package/src/primitive/I64.ts +0 -14
- package/src/primitive/I8.ts +0 -14
- package/src/primitive/ISize.ts +0 -21
- package/src/primitive/U128.ts +0 -14
- package/src/primitive/U16.ts +0 -14
- package/src/primitive/U256.ts +0 -14
- package/src/primitive/U32.ts +0 -14
- package/src/primitive/U64.ts +0 -14
- package/src/primitive/U8.ts +0 -14
- package/src/primitive/USize.ts +0 -21
- package/src/test/performance.ts +0 -61
- package/src/types/codec.ts +0 -140
- package/src/types/interfaces.ts +0 -98
- package/src/types/registry.ts +0 -86
- package/src/utils/compareArray.ts +0 -22
- package/src/utils/compareMap.ts +0 -40
- package/src/utils/compareSet.ts +0 -23
- package/src/utils/decodeU8a.ts +0 -123
- package/src/utils/sanitize.spec.ts +0 -89
- package/src/utils/sanitize.ts +0 -290
- package/src/utils/sortValues.ts +0 -103
- package/src/utils/toConstructors.ts +0 -46
- package/src/utils/typesToMap.ts +0 -14
- package/src/utils/util.ts +0 -8
- package/tsconfig.build.json +0 -16
- package/tsconfig.build.tsbuildinfo +0 -1
- package/tsconfig.spec.json +0 -21
- /package/{build/abstract → abstract}/Array.d.ts +0 -0
- /package/{build/abstract → abstract}/Base.d.ts +0 -0
- /package/{build/abstract → abstract}/Int.d.ts +0 -0
- /package/{build/abstract → abstract}/Object.d.ts +0 -0
- /package/{build/abstract → abstract}/index.d.ts +0 -0
- /package/{build/base → base}/Compact.d.ts +0 -0
- /package/{build/base → base}/DoNotConstruct.d.ts +0 -0
- /package/{build/base → base}/Enum.d.ts +0 -0
- /package/{build/base → base}/Null.d.ts +0 -0
- /package/{build/base → base}/Option.d.ts +0 -0
- /package/{build/base → base}/Result.d.ts +0 -0
- /package/{build/base → base}/Tuple.d.ts +0 -0
- /package/{build/base → base}/Vec.d.ts +0 -0
- /package/{build/base → base}/VecAny.d.ts +0 -0
- /package/{build/base → base}/VecFixed.d.ts +0 -0
- /package/{build/base → base}/index.d.ts +0 -0
- /package/{build/bundle.d.ts → bundle.d.ts} +0 -0
- /package/{build → cjs}/extended/BTreeMap.d.ts +0 -0
- /package/{build → cjs}/extended/BTreeSet.d.ts +0 -0
- /package/{build → cjs}/extended/BitVec.d.ts +0 -0
- /package/{build → cjs}/extended/Bytes.d.ts +0 -0
- /package/{build → cjs}/extended/HashMap.d.ts +0 -0
- /package/{build → cjs}/extended/Linkage.d.ts +0 -0
- /package/{build → cjs}/extended/Map.d.ts +0 -0
- /package/{build → cjs}/extended/OptionBool.d.ts +0 -0
- /package/{build → cjs}/extended/Range.d.ts +0 -0
- /package/{build → cjs}/extended/RangeInclusive.d.ts +0 -0
- /package/{build → cjs}/extended/Type.d.ts +0 -0
- /package/{build → cjs}/extended/U8aFixed.d.ts +0 -0
- /package/{build → cjs}/extended/WrapperKeepOpaque.d.ts +0 -0
- /package/{build → cjs}/extended/WrapperOpaque.d.ts +0 -0
- /package/{build → cjs}/extended/index.d.ts +0 -0
- /package/{build → cjs}/index.d.ts +0 -0
- /package/{build → cjs}/native/Bool.d.ts +0 -0
- /package/{build → cjs}/native/Date.d.ts +0 -0
- /package/{build → cjs}/native/Float.d.ts +0 -0
- /package/{build → cjs}/native/Json.d.ts +0 -0
- /package/{build → cjs}/native/Raw.d.ts +0 -0
- /package/{build → cjs}/native/Set.d.ts +0 -0
- /package/{build → cjs}/native/Struct.d.ts +0 -0
- /package/{build → cjs}/native/Text.d.ts +0 -0
- /package/{build → cjs}/native/index.d.ts +0 -0
- /package/{build → cjs}/packageDetect.d.ts +0 -0
- /package/{build → cjs}/packageInfo.d.ts +0 -0
- /package/{build → cjs}/primitive/F32.d.ts +0 -0
- /package/{build → cjs}/primitive/F64.d.ts +0 -0
- /package/{build → cjs}/primitive/I128.d.ts +0 -0
- /package/{build → cjs}/primitive/I16.d.ts +0 -0
- /package/{build → cjs}/primitive/I256.d.ts +0 -0
- /package/{build → cjs}/primitive/I32.d.ts +0 -0
- /package/{build → cjs}/primitive/I64.d.ts +0 -0
- /package/{build → cjs}/primitive/I8.d.ts +0 -0
- /package/{build → cjs}/primitive/ISize.d.ts +0 -0
- /package/{build → cjs}/primitive/U128.d.ts +0 -0
- /package/{build → cjs}/primitive/U16.d.ts +0 -0
- /package/{build → cjs}/primitive/U256.d.ts +0 -0
- /package/{build → cjs}/primitive/U32.d.ts +0 -0
- /package/{build → cjs}/primitive/U64.d.ts +0 -0
- /package/{build → cjs}/primitive/U8.d.ts +0 -0
- /package/{build → cjs}/primitive/USize.d.ts +0 -0
- /package/{build → cjs}/primitive/index.d.ts +0 -0
- /package/{build → cjs}/types/helpers.d.ts +0 -0
- /package/{build → cjs}/types/index.d.ts +0 -0
- /package/{build → cjs}/types/interfaces.d.ts +0 -0
- /package/{build → cjs}/types/registry.d.ts +0 -0
- /package/{build → cjs}/utils/compareArray.d.ts +0 -0
- /package/{build → cjs}/utils/compareMap.d.ts +0 -0
- /package/{build → cjs}/utils/compareSet.d.ts +0 -0
- /package/{build → cjs}/utils/decodeU8a.d.ts +0 -0
- /package/{build → cjs}/utils/index.d.ts +0 -0
- /package/{build → cjs}/utils/sanitize.d.ts +0 -0
- /package/{build → cjs}/utils/sortValues.d.ts +0 -0
- /package/{build → cjs}/utils/toConstructors.d.ts +0 -0
- /package/{build → cjs}/utils/typesToMap.d.ts +0 -0
- /package/{build → cjs}/utils/util.d.ts +0 -0
package/src/base/Result.ts
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { Codec, CodecClass, IResult, Registry } from '../types/index.js';
|
|
5
|
-
|
|
6
|
-
import { Enum } from './Enum.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @name Result
|
|
10
|
-
* @description
|
|
11
|
-
* A Result maps to the Rust Result type, that can either wrap a success or error value
|
|
12
|
-
*/
|
|
13
|
-
export class Result<O extends Codec, E extends Codec> extends Enum implements IResult<O, E> {
|
|
14
|
-
constructor (registry: Registry, Ok: CodecClass<O> | string, Err: CodecClass<E> | string, value?: unknown) {
|
|
15
|
-
// NOTE This is order-dependent, Ok (with index 0) needs to be first
|
|
16
|
-
// eslint-disable-next-line sort-keys
|
|
17
|
-
super(registry, { Ok, Err }, value);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
public static override with<O extends Codec, E extends Codec> (Types: { Ok: CodecClass<O> | string; Err: CodecClass<E> | string }): CodecClass<Result<O, E>> {
|
|
21
|
-
return class extends Result<O, E> {
|
|
22
|
-
constructor (registry: Registry, value?: unknown) {
|
|
23
|
-
super(registry, Types.Ok, Types.Err, value);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @description Returns the wrapper Err value (if isErr)
|
|
30
|
-
*/
|
|
31
|
-
public get asErr (): E {
|
|
32
|
-
if (!this.isErr) {
|
|
33
|
-
throw new Error('Cannot extract Err value from Ok result, check isErr first');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return this.value as E;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* @description Returns the wrapper Ok value (if isOk)
|
|
41
|
-
*/
|
|
42
|
-
public get asOk (): O {
|
|
43
|
-
if (!this.isOk) {
|
|
44
|
-
throw new Error('Cannot extract Ok value from Err result, check isOk first');
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return this.value as O;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* @description Checks if the Result has no value
|
|
52
|
-
*/
|
|
53
|
-
public override get isEmpty (): boolean {
|
|
54
|
-
return this.isOk && this.value.isEmpty;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* @description Checks if the Result wraps an Err value
|
|
59
|
-
*/
|
|
60
|
-
public get isErr (): boolean {
|
|
61
|
-
return !this.isOk;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* @description Checks if the Result wraps an Ok value
|
|
66
|
-
*/
|
|
67
|
-
public get isOk (): boolean {
|
|
68
|
-
return this.index === 0;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* @description Returns the base runtime type name for this instance
|
|
73
|
-
*/
|
|
74
|
-
public override toRawType (): string {
|
|
75
|
-
const Types = this._toRawStruct() as { Ok: unknown; Err: unknown };
|
|
76
|
-
|
|
77
|
-
return `Result<${Types.Ok as string},${Types.Err as string}>`;
|
|
78
|
-
}
|
|
79
|
-
}
|
package/src/base/Tuple.spec.ts
DELETED
|
@@ -1,161 +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 { BlockNumber, VoteThreshold } from '@pezkuwi/types/interfaces';
|
|
7
|
-
import type { AnyTupleValue, CodecTo } from '@pezkuwi/types-codec/types';
|
|
8
|
-
|
|
9
|
-
import { Metadata, TypeRegistry } from '@pezkuwi/types';
|
|
10
|
-
import { Text, Tuple, U32, U128 } from '@pezkuwi/types-codec';
|
|
11
|
-
import rpcMetadata from '@pezkuwi/types-support/metadata/static-substrate';
|
|
12
|
-
import { stringToU8a } from '@pezkuwi/util';
|
|
13
|
-
|
|
14
|
-
describe('Tuple', (): void => {
|
|
15
|
-
const registry = new TypeRegistry();
|
|
16
|
-
let tuple: Tuple;
|
|
17
|
-
|
|
18
|
-
beforeEach((): void => {
|
|
19
|
-
tuple = new Tuple(
|
|
20
|
-
registry,
|
|
21
|
-
[Text, U32],
|
|
22
|
-
['bazzing', 69]
|
|
23
|
-
);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe('constructor', (): void => {
|
|
27
|
-
it('fails construction on non-Array, non-Hex inputs', (): void => {
|
|
28
|
-
// @ts-expect-error We are intentionally passing a non-valid input
|
|
29
|
-
expect(() => new Tuple(registry, [Text, Text], '12345')).toThrow(/Expected array input to Tuple decoding, found string/);
|
|
30
|
-
// @ts-expect-error We are intentionally passing a non-valid input
|
|
31
|
-
expect(() => new Tuple(registry, [Text, Text], {})).toThrow(/Expected array input to Tuple decoding, found object/);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
describe('decoding', (): void => {
|
|
36
|
-
const testDecode = (type: string, input: AnyTupleValue): void =>
|
|
37
|
-
it(`can decode from ${type}`, (): void => {
|
|
38
|
-
const t = new Tuple(registry, [
|
|
39
|
-
Text,
|
|
40
|
-
U32
|
|
41
|
-
], input);
|
|
42
|
-
|
|
43
|
-
expect(
|
|
44
|
-
t.toJSON()
|
|
45
|
-
).toEqual(['bazzing', 69]);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
testDecode('array', ['bazzing', 69]);
|
|
49
|
-
testDecode('hex', '0x1c62617a7a696e6745000000');
|
|
50
|
-
testDecode('Uint8Array', Uint8Array.from([28, 98, 97, 122, 122, 105, 110, 103, 69, 0, 0, 0]));
|
|
51
|
-
|
|
52
|
-
it('decodes reusing instantiated inputs', (): void => {
|
|
53
|
-
const foo = new Text(registry, 'bar');
|
|
54
|
-
|
|
55
|
-
expect(
|
|
56
|
-
(new Tuple(registry, [Text], [foo]))[0]
|
|
57
|
-
).toBe(foo);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it('decodes properly from complex types', (): void => {
|
|
61
|
-
const INPUT = '0xcc0200000000';
|
|
62
|
-
const test = registry.createType('(u32, [u32; 0], u16)', INPUT);
|
|
63
|
-
|
|
64
|
-
expect(test.encodedLength).toEqual(4 + 0 + 2);
|
|
65
|
-
expect(test.toHex()).toEqual(INPUT);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe('encoding', (): void => {
|
|
70
|
-
const testEncode = (to: CodecTo | 'toArray', expected: any): void =>
|
|
71
|
-
it(`can encode ${to}`, (): void => {
|
|
72
|
-
expect(tuple[to]()).toEqual(expected);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
testEncode('toHex', '0x1c62617a7a696e6745000000');
|
|
76
|
-
testEncode('toJSON', ['bazzing', 69]);
|
|
77
|
-
testEncode('toU8a', Uint8Array.from([28, 98, 97, 122, 122, 105, 110, 103, 69, 0, 0, 0]));
|
|
78
|
-
testEncode('toString', '["bazzing",69]');
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
it('creates from string types', (): void => {
|
|
82
|
-
expect(
|
|
83
|
-
new Tuple(
|
|
84
|
-
registry,
|
|
85
|
-
['Text', 'u32', U32],
|
|
86
|
-
['foo', 69, 42]
|
|
87
|
-
).toString()
|
|
88
|
-
).toEqual('["foo",69,42]');
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it('creates properly via actual hex string', (): void => {
|
|
92
|
-
const metadata = new Metadata(registry, rpcMetadata);
|
|
93
|
-
|
|
94
|
-
registry.setMetadata(metadata);
|
|
95
|
-
|
|
96
|
-
const test = new (Tuple.with([
|
|
97
|
-
registry.createClass('BlockNumber'), registry.createClass('VoteThreshold')
|
|
98
|
-
]
|
|
99
|
-
))(registry, '0x6219000001');
|
|
100
|
-
|
|
101
|
-
expect((test[0] as BlockNumber).toNumber()).toEqual(6498);
|
|
102
|
-
expect((test[1] as VoteThreshold).toNumber()).toEqual(1);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it('exposes the Types', (): void => {
|
|
106
|
-
expect(tuple.Types).toEqual(['Text', 'u32']);
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
it('exposes the Types (object creation)', (): void => {
|
|
110
|
-
const test = new Tuple(registry, {
|
|
111
|
-
BlockNumber: registry.createClass('BlockNumber'),
|
|
112
|
-
VoteThreshold: registry.createClass('VoteThreshold')
|
|
113
|
-
}, []);
|
|
114
|
-
|
|
115
|
-
expect(test.Types).toEqual(['BlockNumber', 'VoteThreshold']);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it('exposes filter', (): void => {
|
|
119
|
-
expect(tuple.filter((v): boolean => v.toJSON() === 69)).toEqual([new U32(registry, 69)]);
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
it('exposes map', (): void => {
|
|
123
|
-
expect(tuple.map((v): string => v.toString())).toEqual(['bazzing', '69']);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
describe('utils', (): void => {
|
|
127
|
-
it('compares against inputs', (): void => {
|
|
128
|
-
expect(tuple.eq(['bazzing', 69])).toBe(true);
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
it('compares against inputs (mismatch)', (): void => {
|
|
132
|
-
expect(tuple.eq(['bazzing', 72])).toBe(false);
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
it('has a sane inspect', (): void => {
|
|
136
|
-
expect(
|
|
137
|
-
tuple.inspect()
|
|
138
|
-
).toEqual({
|
|
139
|
-
inner: [
|
|
140
|
-
{ outer: [new Uint8Array([7 << 2]), stringToU8a('bazzing')] },
|
|
141
|
-
{ outer: [new Uint8Array([69, 0, 0, 0])] }
|
|
142
|
-
]
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
describe('toRawType', (): void => {
|
|
148
|
-
it('generates sane value with array types', (): void => {
|
|
149
|
-
expect(
|
|
150
|
-
new Tuple(registry, [U128, registry.createClass('BlockNumber')]).toRawType()
|
|
151
|
-
).toEqual('(u128,BlockNumber)');
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
it('generates sane value with object types', (): void => {
|
|
155
|
-
expect(
|
|
156
|
-
// eslint-disable-next-line sort-keys
|
|
157
|
-
new Tuple(registry, { number: U128, blockNumber: registry.createClass('BlockNumber') }).toRawType()
|
|
158
|
-
).toEqual('(u128,BlockNumber)');
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
});
|
package/src/base/Tuple.ts
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { AnyTupleValue, Codec, CodecClass, DefinitionSetter, Inspect, ITuple, Registry } from '../types/index.js';
|
|
5
|
-
|
|
6
|
-
import { identity, isFunction, isHex, isString, isU8a, stringify, u8aConcatStrict, u8aToU8a } from '@pezkuwi/util';
|
|
7
|
-
|
|
8
|
-
import { AbstractArray } from '../abstract/Array.js';
|
|
9
|
-
import { decodeU8a, mapToTypeMap, typesToConstructors, typeToConstructor } from '../utils/index.js';
|
|
10
|
-
|
|
11
|
-
type TupleType = (CodecClass | string);
|
|
12
|
-
|
|
13
|
-
type TupleTypes = TupleType[] | Record<string, CodecClass | string>;
|
|
14
|
-
|
|
15
|
-
type Definition = [CodecClass[], string[]];
|
|
16
|
-
|
|
17
|
-
/** @internal */
|
|
18
|
-
function decodeTuple (registry: Registry, result: Codec[], value: Exclude<AnyTupleValue, Uint8Array> | undefined, Classes: Definition): [Codec[], number] {
|
|
19
|
-
if (Array.isArray(value)) {
|
|
20
|
-
const Types = Classes[0];
|
|
21
|
-
|
|
22
|
-
for (let i = 0, count = Types.length; i < count; i++) {
|
|
23
|
-
try {
|
|
24
|
-
const entry = value?.[i];
|
|
25
|
-
|
|
26
|
-
result[i] = entry instanceof Types[i]
|
|
27
|
-
? entry
|
|
28
|
-
: new Types[i](registry, entry);
|
|
29
|
-
} catch (error) {
|
|
30
|
-
throw new Error(`Tuple: failed on ${i}:: ${(error as Error).message}`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return [result, 0];
|
|
35
|
-
} else if (isHex(value)) {
|
|
36
|
-
return decodeU8a(registry, result, u8aToU8a(value), Classes);
|
|
37
|
-
} else if (!value || !result.length) {
|
|
38
|
-
const Types = Classes[0];
|
|
39
|
-
|
|
40
|
-
for (let i = 0, count = Types.length; i < count; i++) {
|
|
41
|
-
result[i] = new Types[i](registry);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return [result, 0];
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
throw new Error(`Expected array input to Tuple decoding, found ${typeof value}: ${stringify(value)}`);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* @name Tuple
|
|
52
|
-
* @description
|
|
53
|
-
* A Tuple defines an anonymous fixed-length array, where each element has its
|
|
54
|
-
* own type. It extends the base JS `Array` object.
|
|
55
|
-
*/
|
|
56
|
-
export class Tuple extends AbstractArray<Codec> implements ITuple<Codec[]> {
|
|
57
|
-
#Types: Definition;
|
|
58
|
-
|
|
59
|
-
constructor (registry: Registry, Types: TupleTypes | TupleType, value?: AnyTupleValue, { definition, setDefinition = identity }: DefinitionSetter<Definition> = {}) {
|
|
60
|
-
const Classes = definition || setDefinition(
|
|
61
|
-
Array.isArray(Types)
|
|
62
|
-
? [typesToConstructors(registry, Types), []]
|
|
63
|
-
: isFunction(Types) || isString(Types)
|
|
64
|
-
? [[typeToConstructor(registry, Types)], []]
|
|
65
|
-
: mapToTypeMap(registry, Types)
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
super(registry, Classes[0].length);
|
|
69
|
-
|
|
70
|
-
this.initialU8aLength = (
|
|
71
|
-
isU8a(value)
|
|
72
|
-
? decodeU8a(registry, this, value, Classes)
|
|
73
|
-
: decodeTuple(registry, this, value, Classes)
|
|
74
|
-
)[1];
|
|
75
|
-
this.#Types = Classes;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public static with (Types: TupleTypes | TupleType): CodecClass<Tuple> {
|
|
79
|
-
let definition: Definition | undefined;
|
|
80
|
-
|
|
81
|
-
// eslint-disable-next-line no-return-assign
|
|
82
|
-
const setDefinition = (d: Definition) =>
|
|
83
|
-
definition = d;
|
|
84
|
-
|
|
85
|
-
return class extends Tuple {
|
|
86
|
-
constructor (registry: Registry, value?: AnyTupleValue) {
|
|
87
|
-
super(registry, Types, value, { definition, setDefinition });
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* @description The length of the value when encoded as a Uint8Array
|
|
94
|
-
*/
|
|
95
|
-
public override get encodedLength (): number {
|
|
96
|
-
let total = 0;
|
|
97
|
-
|
|
98
|
-
for (let i = 0, count = this.length; i < count; i++) {
|
|
99
|
-
total += this[i].encodedLength;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return total;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* @description The types definition of the tuple
|
|
107
|
-
*/
|
|
108
|
-
public get Types (): string[] {
|
|
109
|
-
return this.#Types[1].length
|
|
110
|
-
? this.#Types[1]
|
|
111
|
-
: this.#Types[0].map((T) => new T(this.registry).toRawType());
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* @description Returns a breakdown of the hex encoding for this Codec
|
|
116
|
-
*/
|
|
117
|
-
public override inspect (): Inspect {
|
|
118
|
-
return {
|
|
119
|
-
inner: this.inspectInner()
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* @description Returns the base runtime type name for this instance
|
|
125
|
-
*/
|
|
126
|
-
public toRawType (): string {
|
|
127
|
-
const types = this.#Types[0].map((T) =>
|
|
128
|
-
this.registry.getClassName(T) || new T(this.registry).toRawType()
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
return `(${types.join(',')})`;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* @description Returns the string representation of the value
|
|
136
|
-
*/
|
|
137
|
-
public override toString (): string {
|
|
138
|
-
// Overwrite the default toString representation of Array.
|
|
139
|
-
return stringify(this.toJSON());
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* @description Encodes the value as a Uint8Array as per the SCALE specifications
|
|
144
|
-
* @param isBare true when the value has none of the type-specific prefixes (internal)
|
|
145
|
-
*/
|
|
146
|
-
public override toU8a (isBare?: boolean): Uint8Array {
|
|
147
|
-
return u8aConcatStrict(this.toU8aInner(isBare));
|
|
148
|
-
}
|
|
149
|
-
}
|
package/src/base/UInt.spec.ts
DELETED
|
@@ -1,192 +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 { UInt } from '@pezkuwi/types-codec';
|
|
8
|
-
import { BN, BN_TWO, isBn } from '@pezkuwi/util';
|
|
9
|
-
|
|
10
|
-
import { perf } from '../test/performance.js';
|
|
11
|
-
|
|
12
|
-
describe('UInt', (): void => {
|
|
13
|
-
const registry = new TypeRegistry();
|
|
14
|
-
|
|
15
|
-
it('fails on > MAX_SAFE_INTEGER and float', (): void => {
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-loss-of-precision, no-loss-of-precision
|
|
17
|
-
expect(() => new UInt(registry, 9007199254740999)).toThrow(/integer <= Number.MAX_SAFE_INTEGER/);
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-loss-of-precision, no-loss-of-precision
|
|
19
|
-
expect(() => new UInt(registry, -9007199254740999)).toThrow(/integer <= Number.MAX_SAFE_INTEGER/);
|
|
20
|
-
expect(() => new UInt(registry, 9.123)).toThrow(/integer <= Number.MAX_SAFE_INTEGER/);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it('fails on strings with decimal points & scientific notation', (): void => {
|
|
24
|
-
expect(() => new UInt(registry, '123.4')).toThrow(/not contain decimal points/);
|
|
25
|
-
expect(() => new UInt(registry, '9e10')).toThrow(/not contain decimal points/);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('decodes an empty Uint8array correctly', (): void => {
|
|
29
|
-
expect(
|
|
30
|
-
new UInt(registry, new Uint8Array()).toNumber()
|
|
31
|
-
).toEqual(0);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('still has the BN interfaces', (): void => {
|
|
35
|
-
expect([
|
|
36
|
-
new UInt(registry, 32).mul(BN_TWO).toNumber(),
|
|
37
|
-
new UInt(registry, 64).divn(2).toNumber()
|
|
38
|
-
]).toEqual([64, 32]);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('is a BN instance', (): void => {
|
|
42
|
-
const test = new UInt(registry, 16);
|
|
43
|
-
|
|
44
|
-
expect(isBn(test)).toBe(true);
|
|
45
|
-
expect(BN.isBN(test)).toBe(true);
|
|
46
|
-
expect(test instanceof BN).toBe(true);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
// e.g. headers
|
|
50
|
-
it('decodes hex that are not multiples of 2', (): void => {
|
|
51
|
-
expect(new UInt(registry, '0x123').toNumber()).toEqual(0x123);
|
|
52
|
-
expect(new UInt(registry, '0x0123').toNumber()).toEqual(0x123);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it('fails on a number that is too large for the bits specified', (): void => {
|
|
56
|
-
expect(
|
|
57
|
-
(): UInt => new UInt(registry, '12345678901234567890123456789012345678901234567890', 32)
|
|
58
|
-
).toThrow('u32: Input too large. Found input with 164 bits, expected 32');
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('fails on negative numbers', (): void => {
|
|
62
|
-
expect(
|
|
63
|
-
(): UInt => new UInt(registry, -123, 32)
|
|
64
|
-
).toThrow('u32: Negative number passed to unsigned type');
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
it('allows for construction via BigInt', (): void => {
|
|
68
|
-
expect(
|
|
69
|
-
new UInt(registry, 123456789123456789123456789n, 128).toHuman()
|
|
70
|
-
).toEqual('123,456,789,123,456,789,123,456,789');
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('converts to Little Endian from the provided value', (): void => {
|
|
74
|
-
expect(
|
|
75
|
-
new UInt(registry, 1234567).toU8a()
|
|
76
|
-
).toEqual(new Uint8Array([135, 214, 18, 0, 0, 0, 0, 0]));
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it('converts to Little Endian from the provided value (bitLength)', (): void => {
|
|
80
|
-
expect(
|
|
81
|
-
new UInt(registry, 1234567, 32).toU8a()
|
|
82
|
-
).toEqual(new Uint8Array([135, 214, 18, 0]));
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('converts to hex/string', (): void => {
|
|
86
|
-
const u = new UInt(registry, '0x12', 16);
|
|
87
|
-
|
|
88
|
-
expect(u.toHex()).toEqual('0x0012');
|
|
89
|
-
expect(u.toString()).toEqual('18');
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('converts to equivalents', (): void => {
|
|
93
|
-
const a = new UInt(registry, '123');
|
|
94
|
-
|
|
95
|
-
expect(
|
|
96
|
-
new UInt(registry, a).toNumber()
|
|
97
|
-
).toEqual(123);
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
it('converts to JSON representation based on size', (): void => {
|
|
101
|
-
expect(new UInt(registry, '0x12345678', 32).toJSON()).toEqual(0x12345678);
|
|
102
|
-
expect(new UInt(registry, '0x1234567890', 64).toJSON()).toEqual(78187493520);
|
|
103
|
-
expect(new UInt(registry, '0x1234567890abcdef', 64).toJSON()).toEqual('0x1234567890abcdef');
|
|
104
|
-
expect(new UInt(registry, 1, 256).toJSON()).toEqual('0x0000000000000000000000000000000000000000000000000000000000000001');
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
describe('utilities', (): void => {
|
|
108
|
-
it('provides a toBigInt interface', (): void => {
|
|
109
|
-
expect(
|
|
110
|
-
new UInt(registry, 9876543210123456789n).toBigInt()
|
|
111
|
-
).toEqual(9876543210123456789n);
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
it('provides a toBn interface', (): void => {
|
|
115
|
-
expect(
|
|
116
|
-
new UInt(registry, 987).toBn().toNumber()
|
|
117
|
-
).toEqual(987);
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it('provides a toNumber interface', (): void => {
|
|
121
|
-
expect(
|
|
122
|
-
new UInt(registry, 4567).toNumber()
|
|
123
|
-
).toEqual(4567);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it('has a working toBigInt', (): void => {
|
|
127
|
-
expect(
|
|
128
|
-
new UInt(registry, 4567).toBigInt() + BigInt(1)
|
|
129
|
-
).toEqual(BigInt(4568));
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it('has a sane inspect', (): void => {
|
|
133
|
-
expect(
|
|
134
|
-
new UInt(registry, '0x12', 16).inspect()
|
|
135
|
-
).toEqual({
|
|
136
|
-
outer: [new Uint8Array([0x12, 0x00])]
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
describe('eq', (): void => {
|
|
141
|
-
const test = new UInt(registry, 12345);
|
|
142
|
-
|
|
143
|
-
it('compares against other BN values', (): void => {
|
|
144
|
-
expect(test.eq(new BN(12345))).toBe(true);
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
it('compares against other number values', (): void => {
|
|
148
|
-
expect(test.eq(12345)).toBe(true);
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
it('compares against hex values', (): void => {
|
|
152
|
-
expect(test.eq('0x3039')).toBe(true);
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
describe('isMax()', (): void => {
|
|
157
|
-
it('is false where not full', (): void => {
|
|
158
|
-
expect(new UInt(registry, '0x1234', 32).isMax()).toEqual(false);
|
|
159
|
-
expect(new UInt(registry, '0xffffff', 32).isMax()).toEqual(false);
|
|
160
|
-
expect(new UInt(registry, '0x12345678', 32).isMax()).toEqual(false);
|
|
161
|
-
expect(new UInt(registry, '0xfffffff0', 32).isMax()).toEqual(false);
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
it('is true when full', (): void => {
|
|
165
|
-
expect(new UInt(registry, '0xffffffff', 32).isMax()).toEqual(true);
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
describe('static with', (): void => {
|
|
171
|
-
it('allows default toRawType', (): void => {
|
|
172
|
-
expect(
|
|
173
|
-
new (UInt.with(64))(registry).toRawType()
|
|
174
|
-
).toEqual('u64');
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
it('allows toRawType override', (): void => {
|
|
178
|
-
expect(
|
|
179
|
-
new (UInt.with(64, 'SomethingElse'))(registry).toRawType()
|
|
180
|
-
).toEqual('SomethingElse');
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
it('has proper toHuman() for PerMill/PerBill/Percent/Balance', (): void => {
|
|
184
|
-
expect(registry.createType('Perbill', 12_340_000).toHuman()).toEqual('1.23%');
|
|
185
|
-
expect(registry.createType('Percent', 12).toHuman()).toEqual('12.00%');
|
|
186
|
-
expect(registry.createType('Permill', 16_900).toHuman()).toEqual('1.69%');
|
|
187
|
-
expect(registry.createType('Balance', '123456789012345').toHuman()).toEqual('123.4567 Unit');
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
perf('UInt', 75_000, [[new Uint8Array([31, 32, 33, 34])]], (v: Uint8Array) => new UInt(registry, v));
|
|
192
|
-
});
|
package/src/base/UInt.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { AnyNumber, CodecClass, Registry, UIntBitLength } from '../types/index.js';
|
|
5
|
-
|
|
6
|
-
import { AbstractInt } from '../abstract/Int.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @name UInt
|
|
10
|
-
* @description
|
|
11
|
-
* A generic unsigned integer codec. For Substrate all numbers are Little Endian encoded,
|
|
12
|
-
* this handles the encoding and decoding of those numbers. Upon construction
|
|
13
|
-
* the bitLength is provided and any additional use keeps the number to this
|
|
14
|
-
* length. This extends `BN`, so all methods available on a normal `BN` object
|
|
15
|
-
* is available here.
|
|
16
|
-
* @noInheritDoc
|
|
17
|
-
*/
|
|
18
|
-
export class UInt extends AbstractInt {
|
|
19
|
-
public static with (bitLength: UIntBitLength, typeName?: string): CodecClass<UInt> {
|
|
20
|
-
return class extends UInt {
|
|
21
|
-
constructor (registry: Registry, value?: AnyNumber | null) {
|
|
22
|
-
super(registry, value, bitLength);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public override toRawType (): string {
|
|
26
|
-
return typeName || super.toRawType();
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
}
|