@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/extended/Range.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { AnyTuple, CodecClass, INumber, Registry } from '../types/index.js';
|
|
5
|
-
|
|
6
|
-
import { Tuple } from '../base/Tuple.js';
|
|
7
|
-
|
|
8
|
-
type RangeType = 'Range' | 'RangeInclusive';
|
|
9
|
-
|
|
10
|
-
interface Options {
|
|
11
|
-
rangeName?: RangeType;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @name Range
|
|
16
|
-
* @description
|
|
17
|
-
* Rust `Range<T>` representation
|
|
18
|
-
*/
|
|
19
|
-
export class Range<T extends INumber> extends Tuple {
|
|
20
|
-
#rangeName: RangeType;
|
|
21
|
-
|
|
22
|
-
constructor (registry: Registry, Type: CodecClass<T> | string, value?: AnyTuple, { rangeName = 'Range' }: Options = {}) {
|
|
23
|
-
super(registry, [Type, Type], value);
|
|
24
|
-
|
|
25
|
-
this.#rangeName = rangeName;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
public static override with <T extends INumber> (Type: CodecClass<T> | string): CodecClass<Range<T>> {
|
|
29
|
-
return class extends Range<T> {
|
|
30
|
-
constructor (registry: Registry, value?: AnyTuple) {
|
|
31
|
-
super(registry, Type, value);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @description Returns the starting range value
|
|
38
|
-
*/
|
|
39
|
-
public get start (): T {
|
|
40
|
-
return this[0] as T;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* @description Returns the ending range value
|
|
45
|
-
*/
|
|
46
|
-
public get end (): T {
|
|
47
|
-
return this[1] as T;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* @description Returns the base runtime type name for this instance
|
|
52
|
-
*/
|
|
53
|
-
public override toRawType (): string {
|
|
54
|
-
return `${this.#rangeName}<${this.start.toRawType()}>`;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { AnyTuple, CodecClass, INumber, Registry } from '../types/index.js';
|
|
5
|
-
|
|
6
|
-
import { Range } from './Range.js';
|
|
7
|
-
|
|
8
|
-
export class RangeInclusive<T extends INumber = INumber> extends Range<T> {
|
|
9
|
-
constructor (registry: Registry, Type: CodecClass<T> | string, value?: AnyTuple) {
|
|
10
|
-
super(registry, Type, value, { rangeName: 'RangeInclusive' });
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public static override with <T extends INumber> (Type: CodecClass<T> | string): CodecClass<RangeInclusive<T>> {
|
|
14
|
-
return class extends RangeInclusive<T> {
|
|
15
|
-
constructor (registry: Registry, value?: AnyTuple) {
|
|
16
|
-
super(registry, Type, value);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@pezkuwi/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { TypeRegistry } from '@pezkuwi/types';
|
|
7
|
-
import { Text, Type } from '@pezkuwi/types-codec';
|
|
8
|
-
import { stringToU8a, u8aConcat } from '@pezkuwi/util';
|
|
9
|
-
|
|
10
|
-
describe('Type', (): void => {
|
|
11
|
-
const registry = new TypeRegistry();
|
|
12
|
-
|
|
13
|
-
it('fails to cleanup invalid boxes', (): void => {
|
|
14
|
-
expect(
|
|
15
|
-
(): Type => new Type(registry, 'Box<Proposal')
|
|
16
|
-
).toThrow(/find closing matching/);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('cleans up tuples with a single value', (): void => {
|
|
20
|
-
expect(
|
|
21
|
-
new Type(registry, '(AccountId)').toString()
|
|
22
|
-
).toEqual('AccountId');
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('does not touch tuples with multiple values', (): void => {
|
|
26
|
-
expect(
|
|
27
|
-
new Type(registry, '(AccountId, Balance)').toString()
|
|
28
|
-
).toEqual('(AccountId,Balance)');
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it('handles nested types', (): void => {
|
|
32
|
-
expect(
|
|
33
|
-
new Type(registry, 'Box<Vec<AccountId>>').toString()
|
|
34
|
-
).toEqual('Vec<AccountId>');
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('handles nested types (embedded)', (): void => {
|
|
38
|
-
expect(
|
|
39
|
-
new Type(registry, '(u32, Box<Vec<AccountId>>)').toString()
|
|
40
|
-
).toEqual('(u32,Vec<AccountId>)');
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('handles aliasses, multiples per line', (): void => {
|
|
44
|
-
expect(
|
|
45
|
-
new Type(registry, '(Vec<u8>, AccountId, Vec<u8>)').toString()
|
|
46
|
-
).toEqual('(Bytes,AccountId,Bytes)');
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('removes whitespaces', (): void => {
|
|
50
|
-
expect(
|
|
51
|
-
new Type(registry, 'T :: AccountId').toString()
|
|
52
|
-
).toEqual('AccountId');
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it('changes PairOf<T> -> (T, T)', (): void => {
|
|
56
|
-
expect(
|
|
57
|
-
new Type(registry, 'PairOf<T::Balance>').toString()
|
|
58
|
-
).toEqual('(Balance,Balance)');
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('changes PairOf<T> (embedded) -> (T, T)', (): void => {
|
|
62
|
-
expect(
|
|
63
|
-
new Type(registry, '(Vec<u8>, PairOf<T::Balance>, Vec<AccountId>)').toString()
|
|
64
|
-
).toEqual('(Bytes,(Balance,Balance),Vec<AccountId>)');
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
it('changes () -> ()', (): void => {
|
|
68
|
-
expect(
|
|
69
|
-
new Type(registry, '()').toString()
|
|
70
|
-
).toEqual('()');
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('has the sanitized', (): void => {
|
|
74
|
-
expect(
|
|
75
|
-
new Type(
|
|
76
|
-
registry,
|
|
77
|
-
new Text(registry, ' Box<Proposal> ')
|
|
78
|
-
).toString()
|
|
79
|
-
).toEqual('Proposal'); // eslint-disable-line
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
it('unwraps compact', (): void => {
|
|
83
|
-
expect(
|
|
84
|
-
new Type(registry, '<T::Balance as HasCompact>::Type').toString()
|
|
85
|
-
).toEqual('Compact<Balance>');
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it('handles InherentOfflineReport', (): void => {
|
|
89
|
-
expect(
|
|
90
|
-
new Type(registry, '<T::InherentOfflineReport as InherentOfflineReport>::Inherent').toString()
|
|
91
|
-
).toEqual('InherentOfflineReport');
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
it('encodes correctly via toU8a()', (): void => {
|
|
95
|
-
const type = 'Compact<Balance>';
|
|
96
|
-
|
|
97
|
-
expect(new Text(registry, type).toU8a()).toEqual(
|
|
98
|
-
u8aConcat(
|
|
99
|
-
new Uint8Array([type.length << 2]),
|
|
100
|
-
stringToU8a(type)
|
|
101
|
-
)
|
|
102
|
-
);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it('creates a decodable U8a for sanitized types', (): void => {
|
|
106
|
-
const original = '<T::InherentOfflineReport as InherentOfflineReport>::Inherent';
|
|
107
|
-
const expected = 'InherentOfflineReport';
|
|
108
|
-
const u8a = new Type(registry, original).toU8a();
|
|
109
|
-
const decoded = new Type(registry, u8a);
|
|
110
|
-
|
|
111
|
-
expect(decoded.encodedLength).toEqual(original.length + 1); // extra byte for length
|
|
112
|
-
expect(decoded.toString()).toEqual(expected);
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
it('has the correct raw', (): void => {
|
|
116
|
-
expect(new Type(registry).toRawType()).toEqual('Type');
|
|
117
|
-
});
|
|
118
|
-
});
|
package/src/extended/Type.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { Registry } from '../types/index.js';
|
|
5
|
-
|
|
6
|
-
import { Text } from '../native/Text.js';
|
|
7
|
-
import { sanitize } from '../utils/index.js';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @name Type
|
|
11
|
-
* @description
|
|
12
|
-
* This is a extended version of Text, specifically to handle types. Here we rely fully
|
|
13
|
-
* on what Text provides us, however we also adjust the types received from the runtime,
|
|
14
|
-
* i.e. we remove the `T::` prefixes found in some types for consistency across implementation.
|
|
15
|
-
*/
|
|
16
|
-
export class Type extends Text {
|
|
17
|
-
constructor (registry: Registry, value: Text | Uint8Array | string = '') {
|
|
18
|
-
super(registry, value);
|
|
19
|
-
|
|
20
|
-
this.setOverride(sanitize(this.toString()));
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @description Returns the base runtime type name for this instance
|
|
25
|
-
*/
|
|
26
|
-
public override toRawType (): string {
|
|
27
|
-
return 'Type';
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,117 +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 { U8aFixed } from '@pezkuwi/types-codec';
|
|
8
|
-
|
|
9
|
-
describe('U8aFixed', (): void => {
|
|
10
|
-
const registry = new TypeRegistry();
|
|
11
|
-
|
|
12
|
-
describe('construction', (): void => {
|
|
13
|
-
it('allows empty values', (): void => {
|
|
14
|
-
expect(
|
|
15
|
-
new U8aFixed(registry).toHex()
|
|
16
|
-
).toEqual('0x0000000000000000000000000000000000000000000000000000000000000000');
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('allows construction via with', (): void => {
|
|
20
|
-
expect(
|
|
21
|
-
new (U8aFixed.with(64))(registry).bitLength()
|
|
22
|
-
).toEqual(64);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('constructs from hex', (): void => {
|
|
26
|
-
expect(
|
|
27
|
-
new (U8aFixed.with(32))(registry, '0x01020304').toU8a()
|
|
28
|
-
).toEqual(
|
|
29
|
-
new Uint8Array([0x01, 0x02, 0x03, 0x04])
|
|
30
|
-
);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('constructs from number[]', (): void => {
|
|
34
|
-
expect(
|
|
35
|
-
new (U8aFixed.with(32))(registry, [0x02, 0x03, 0x00, 0x00]).toU8a()
|
|
36
|
-
).toEqual(
|
|
37
|
-
new Uint8Array([0x02, 0x03, 0x00, 0x00])
|
|
38
|
-
);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('constructs when passed Uint8Array is >= length', (): void => {
|
|
42
|
-
expect(
|
|
43
|
-
new (U8aFixed.with(32))(registry, new Uint8Array([0x00, 0x01, 0x02, 0x03])).toU8a()
|
|
44
|
-
).toEqual(
|
|
45
|
-
new Uint8Array([0x00, 0x01, 0x02, 0x03])
|
|
46
|
-
);
|
|
47
|
-
expect(
|
|
48
|
-
new (U8aFixed.with(32))(registry, new Uint8Array([0x00, 0x01, 0x02, 0x03, 0x04, 0x05])).toU8a()
|
|
49
|
-
).toEqual(
|
|
50
|
-
new Uint8Array([0x00, 0x01, 0x02, 0x03])
|
|
51
|
-
);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('constructs when passed string is === length', (): void => {
|
|
55
|
-
expect(
|
|
56
|
-
new (U8aFixed.with(32))(registry, '1234').toU8a()
|
|
57
|
-
).toEqual(
|
|
58
|
-
new Uint8Array([49, 50, 51, 52])
|
|
59
|
-
);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it('fails construction when passed string is > length', (): void => {
|
|
63
|
-
expect(
|
|
64
|
-
() => new (U8aFixed.with(32))(registry, '0x000102030405').toU8a()
|
|
65
|
-
).toThrow(/Expected input with 4 bytes/);
|
|
66
|
-
expect(
|
|
67
|
-
() => new (U8aFixed.with(256))(registry, '1363HWTPzDrzAQ6ChFiMU6mP4b6jmQid2ae55JQcKtZnpLGv')
|
|
68
|
-
).toThrow(/Expected input with 32 bytes/);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
describe('utils', (): void => {
|
|
73
|
-
let u8a: U8aFixed;
|
|
74
|
-
|
|
75
|
-
beforeEach((): void => {
|
|
76
|
-
u8a = new U8aFixed(registry, [1, 2, 3, 4], 32);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it('limits the length', (): void => {
|
|
80
|
-
expect(u8a.length).toEqual(4);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('exposes the correct bitLength', (): void => {
|
|
84
|
-
expect(u8a.bitLength()).toEqual(32);
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
it('allows wrapping of a pre-existing instance', (): void => {
|
|
88
|
-
expect(
|
|
89
|
-
u8a.toU8a()
|
|
90
|
-
).toEqual(new Uint8Array([1, 2, 3, 4]));
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it('has a sane toRawType', (): void => {
|
|
94
|
-
expect(u8a.toRawType()).toEqual('[u8;4]');
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it('has a sane inspect', (): void => {
|
|
98
|
-
expect(u8a.inspect()).toEqual({
|
|
99
|
-
outer: [new Uint8Array([1, 2, 3, 4])]
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
describe('static with', (): void => {
|
|
105
|
-
it('allows default toRawType', (): void => {
|
|
106
|
-
expect(
|
|
107
|
-
new (U8aFixed.with(64))(registry).toRawType()
|
|
108
|
-
).toEqual('[u8;8]');
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
it('allows toRawType override', (): void => {
|
|
112
|
-
expect(
|
|
113
|
-
new (U8aFixed.with(64, 'SomethingElse'))(registry).toRawType()
|
|
114
|
-
).toEqual('SomethingElse');
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
});
|
package/src/extended/U8aFixed.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { AnyU8a, CodecClass, Registry, U8aBitLength } from '../types/index.js';
|
|
5
|
-
|
|
6
|
-
import { isU8a, u8aToU8a } from '@pezkuwi/util';
|
|
7
|
-
|
|
8
|
-
import { Raw } from '../native/Raw.js';
|
|
9
|
-
|
|
10
|
-
/** @internal */
|
|
11
|
-
function decodeU8aFixed (value: AnyU8a, bitLength: U8aBitLength): [AnyU8a, number] {
|
|
12
|
-
const u8a = u8aToU8a(value);
|
|
13
|
-
const byteLength = bitLength / 8;
|
|
14
|
-
|
|
15
|
-
if (!u8a.length) {
|
|
16
|
-
return [new Uint8Array(byteLength), 0];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (isU8a(value) ? u8a.length < byteLength : u8a.length !== byteLength) {
|
|
20
|
-
throw new Error(`Expected input with ${byteLength} bytes (${bitLength} bits), found ${u8a.length} bytes`);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return [u8a.subarray(0, byteLength), byteLength];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @name U8aFixed
|
|
28
|
-
* @description
|
|
29
|
-
* A U8a that manages a a sequence of bytes up to the specified bitLength. Not meant
|
|
30
|
-
* to be used directly, rather is should be subclassed with the specific lengths.
|
|
31
|
-
*/
|
|
32
|
-
export class U8aFixed extends Raw {
|
|
33
|
-
constructor (registry: Registry, value: AnyU8a = new Uint8Array(), bitLength: U8aBitLength = 256) {
|
|
34
|
-
const [u8a, decodedLength] = decodeU8aFixed(value, bitLength);
|
|
35
|
-
|
|
36
|
-
super(registry, u8a, decodedLength);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
public static with (bitLength: U8aBitLength, typeName?: string): CodecClass<U8aFixed> {
|
|
40
|
-
return class extends U8aFixed {
|
|
41
|
-
constructor (registry: Registry, value?: AnyU8a) {
|
|
42
|
-
super(registry, value, bitLength);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public override toRawType (): string {
|
|
46
|
-
return typeName || super.toRawType();
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* @description Returns the base runtime type name for this instance
|
|
53
|
-
*/
|
|
54
|
-
public override toRawType (): string {
|
|
55
|
-
return `[u8;${this.length}]`;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
@@ -1,101 +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 { Bytes, Raw, u32, WrapperKeepOpaque } from '@pezkuwi/types-codec';
|
|
8
|
-
|
|
9
|
-
describe('WrapperKeepOpaque', (): void => {
|
|
10
|
-
const registry = new TypeRegistry();
|
|
11
|
-
const u8au32 = new Uint8Array([4 << 2, 135, 214, 18, 0]);
|
|
12
|
-
const ClazzUSize = WrapperKeepOpaque.with('usize');
|
|
13
|
-
const ClazzU32 = WrapperKeepOpaque.with(u32);
|
|
14
|
-
|
|
15
|
-
it('has handles non-decodable values', (): void => {
|
|
16
|
-
const usize = new ClazzUSize(registry, u8au32);
|
|
17
|
-
|
|
18
|
-
expect(usize.isDecoded).toEqual(false);
|
|
19
|
-
expect(() => usize.unwrap()).toThrow(/undecodable value/);
|
|
20
|
-
|
|
21
|
-
expect(usize.toHex()).toEqual('0x87d61200');
|
|
22
|
-
expect(usize.toHuman()).toEqual('0x87d61200');
|
|
23
|
-
expect(usize.toJSON()).toEqual('0x87d61200');
|
|
24
|
-
expect(usize.toRawType()).toEqual('WrapperKeepOpaque<usize>');
|
|
25
|
-
expect(usize.toString()).toEqual('0x87d61200');
|
|
26
|
-
expect(usize.toU8a()).toEqual(u8au32);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('has handles decodable values', (): void => {
|
|
30
|
-
const u32 = new ClazzU32(registry, u8au32);
|
|
31
|
-
|
|
32
|
-
expect(u32.isDecoded).toEqual(true);
|
|
33
|
-
expect(u32.unwrap().toNumber()).toEqual(1234567);
|
|
34
|
-
|
|
35
|
-
expect(u32.toHex()).toEqual('0x87d61200');
|
|
36
|
-
expect(u32.toHuman()).toEqual('1,234,567');
|
|
37
|
-
expect(u32.toJSON()).toEqual('0x87d61200');
|
|
38
|
-
expect(u32.toRawType()).toEqual('WrapperKeepOpaque<u32>');
|
|
39
|
-
expect(u32.toString()).toEqual('1234567');
|
|
40
|
-
expect(u32.toU8a()).toEqual(u8au32);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('handles values from Raw', (): void => {
|
|
44
|
-
const u32 = new ClazzU32(registry, new Raw(registry, u8au32.slice(1)));
|
|
45
|
-
|
|
46
|
-
expect(u32.unwrap().toNumber()).toEqual(1234567);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('handles values from Bytes', (): void => {
|
|
50
|
-
const u32 = new ClazzU32(registry, new Bytes(registry, u8au32));
|
|
51
|
-
|
|
52
|
-
expect(u32.unwrap().toNumber()).toEqual(1234567);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it('has a sane inspect (non-decodable)', (): void => {
|
|
56
|
-
expect(
|
|
57
|
-
new ClazzUSize(registry, u8au32).inspect()
|
|
58
|
-
).toEqual({
|
|
59
|
-
outer: [new Uint8Array([4 << 2]), new Uint8Array([0x87, 0xd6, 0x12, 0x00])]
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it('has a sane inspect (decodable)', (): void => {
|
|
64
|
-
expect(
|
|
65
|
-
new ClazzU32(registry, u8au32).inspect()
|
|
66
|
-
).toEqual({
|
|
67
|
-
inner: [{ outer: [new Uint8Array([0x87, 0xd6, 0x12, 0x00])] }],
|
|
68
|
-
outer: [new Uint8Array([4 << 2])]
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it('has a sane in-wrapper representation', (): void => {
|
|
73
|
-
const set = registry.createType(
|
|
74
|
-
'BTreeSet<OpaquePeerId>',
|
|
75
|
-
// prefix
|
|
76
|
-
'0x' +
|
|
77
|
-
// 4 items, 16 >> 2
|
|
78
|
-
'10' +
|
|
79
|
-
// opaque length
|
|
80
|
-
'9c' +
|
|
81
|
-
// bytes length
|
|
82
|
-
'98' + '0024080112201ce5f00ef6e89374afb625f1ae4c1546d31234e87e3c3f51a62b91dd6bfa57df' +
|
|
83
|
-
// repeat the same for the next 3...
|
|
84
|
-
'9c98002408011220876a7b4984f98006dc8d666e28b60de307309835d775e7755cc770328cdacf2e9c98002408011220c81bc1d7057a1511eb9496f056f6f53cdfe0e14c8bd5ffca47c70a8d76c1326d9c98002408011220dacde7714d8551f674b8bb4b54239383c76a2b286fa436e93b2b7eb226bf4de7'
|
|
85
|
-
);
|
|
86
|
-
const val = [...set.values()];
|
|
87
|
-
|
|
88
|
-
expect(val.map((v) => v.toHex())).toEqual([
|
|
89
|
-
'0x980024080112201ce5f00ef6e89374afb625f1ae4c1546d31234e87e3c3f51a62b91dd6bfa57df',
|
|
90
|
-
'0x98002408011220876a7b4984f98006dc8d666e28b60de307309835d775e7755cc770328cdacf2e',
|
|
91
|
-
'0x98002408011220c81bc1d7057a1511eb9496f056f6f53cdfe0e14c8bd5ffca47c70a8d76c1326d',
|
|
92
|
-
'0x98002408011220dacde7714d8551f674b8bb4b54239383c76a2b286fa436e93b2b7eb226bf4de7'
|
|
93
|
-
]);
|
|
94
|
-
expect(val.map((v) => v.toHuman())).toEqual([
|
|
95
|
-
'0x0024080112201ce5f00ef6e89374afb625f1ae4c1546d31234e87e3c3f51a62b91dd6bfa57df',
|
|
96
|
-
'0x002408011220876a7b4984f98006dc8d666e28b60de307309835d775e7755cc770328cdacf2e',
|
|
97
|
-
'0x002408011220c81bc1d7057a1511eb9496f056f6f53cdfe0e14c8bd5ffca47c70a8d76c1326d',
|
|
98
|
-
'0x002408011220dacde7714d8551f674b8bb4b54239383c76a2b286fa436e93b2b7eb226bf4de7'
|
|
99
|
-
]);
|
|
100
|
-
});
|
|
101
|
-
});
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { AnyJson, AnyU8a, Codec, CodecClass, Inspect, Registry } from '../types/index.js';
|
|
5
|
-
|
|
6
|
-
import { compactAddLength, compactStripLength, compactToU8a, isHex, isU8a, u8aToU8a } from '@pezkuwi/util';
|
|
7
|
-
|
|
8
|
-
import { Raw } from '../native/Raw.js';
|
|
9
|
-
import { typeToConstructor } from '../utils/index.js';
|
|
10
|
-
import { Bytes } from './Bytes.js';
|
|
11
|
-
|
|
12
|
-
type OpaqueName = 'WrapperKeepOpaque' | 'WrapperOpaque';
|
|
13
|
-
|
|
14
|
-
interface Options {
|
|
15
|
-
opaqueName?: OpaqueName;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function decodeRaw<T extends Codec> (registry: Registry, typeName: CodecClass<T> | string, value?: unknown): [CodecClass<T>, T | null, AnyU8a] {
|
|
19
|
-
const Type = typeToConstructor(registry, typeName);
|
|
20
|
-
|
|
21
|
-
if (isU8a(value) || isHex(value)) {
|
|
22
|
-
try {
|
|
23
|
-
const [, u8a] = isHex(value)
|
|
24
|
-
? [0, u8aToU8a(value)]
|
|
25
|
-
: (value instanceof Raw)
|
|
26
|
-
? [0, value.subarray()]
|
|
27
|
-
: compactStripLength(value);
|
|
28
|
-
|
|
29
|
-
return [Type, new Type(registry, u8a), value];
|
|
30
|
-
} catch {
|
|
31
|
-
return [Type, null, value];
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const instance = new Type(registry, value);
|
|
36
|
-
|
|
37
|
-
return [Type, instance, compactAddLength(instance.toU8a())];
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export class WrapperKeepOpaque<T extends Codec> extends Bytes {
|
|
41
|
-
readonly #Type: CodecClass<T>;
|
|
42
|
-
readonly #decoded: T | null;
|
|
43
|
-
readonly #opaqueName: OpaqueName;
|
|
44
|
-
|
|
45
|
-
constructor (registry: Registry, typeName: CodecClass<T> | string, value?: unknown, { opaqueName = 'WrapperKeepOpaque' }: Options = {}) {
|
|
46
|
-
const [Type, decoded, u8a] = decodeRaw(registry, typeName, value);
|
|
47
|
-
|
|
48
|
-
super(registry, u8a);
|
|
49
|
-
|
|
50
|
-
this.#Type = Type;
|
|
51
|
-
this.#decoded = decoded;
|
|
52
|
-
this.#opaqueName = opaqueName;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
public static with<T extends Codec> (Type: CodecClass<T> | string): CodecClass<WrapperKeepOpaque<T>> {
|
|
56
|
-
return class extends WrapperKeepOpaque<T> {
|
|
57
|
-
constructor (registry: Registry, value?: AnyU8a | T) {
|
|
58
|
-
super(registry, Type, value);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* @description Checks if the wrapper is decodable
|
|
65
|
-
*/
|
|
66
|
-
public get isDecoded (): boolean {
|
|
67
|
-
return !!this.#decoded;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* @description Returns a breakdown of the hex encoding for this Codec
|
|
72
|
-
*/
|
|
73
|
-
public override inspect (): Inspect {
|
|
74
|
-
return this.#decoded
|
|
75
|
-
? {
|
|
76
|
-
inner: [this.#decoded.inspect()],
|
|
77
|
-
outer: [compactToU8a(this.length)]
|
|
78
|
-
}
|
|
79
|
-
: {
|
|
80
|
-
outer: [compactToU8a(this.length), this.toU8a(true)]
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* @description Converts the Object to to a human-friendly JSON, with additional fields, expansion and formatting of information
|
|
86
|
-
*/
|
|
87
|
-
public override toHuman (isExtended?: boolean, disableAscii?: boolean): AnyJson {
|
|
88
|
-
return this.#decoded
|
|
89
|
-
? this.#decoded.toHuman(isExtended, disableAscii)
|
|
90
|
-
: super.toHuman(isExtended, disableAscii);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* @description Converts the value in a best-fit primitive form
|
|
95
|
-
*/
|
|
96
|
-
public override toPrimitive (disableAscii?: boolean): any {
|
|
97
|
-
return this.#decoded
|
|
98
|
-
? this.#decoded.toPrimitive(disableAscii)
|
|
99
|
-
: super.toPrimitive(disableAscii);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* @description Returns the base runtime type name for this instance
|
|
104
|
-
*/
|
|
105
|
-
public override toRawType (): string {
|
|
106
|
-
return `${this.#opaqueName}<${this.registry.getClassName(this.#Type) || (this.#decoded ? this.#decoded.toRawType() : new this.#Type(this.registry).toRawType())}>`;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* @description Converts the Object to to a string (either decoded or bytes)
|
|
111
|
-
*/
|
|
112
|
-
public override toString (): string {
|
|
113
|
-
return this.#decoded
|
|
114
|
-
? this.#decoded.toString()
|
|
115
|
-
: super.toString();
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* @description Returns the decoded that the WrapperKeepOpaque represents (if available), throws if non-decodable
|
|
120
|
-
*/
|
|
121
|
-
public unwrap (): T {
|
|
122
|
-
if (!this.#decoded) {
|
|
123
|
-
throw new Error(`${this.#opaqueName}: unwrapping an undecodable value`);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return this.#decoded;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
@@ -1,58 +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 { WrapperOpaque } from '@pezkuwi/types-codec';
|
|
8
|
-
import { u8aConcat } from '@pezkuwi/util';
|
|
9
|
-
|
|
10
|
-
describe('WrapperOpaque', (): void => {
|
|
11
|
-
const registry = new TypeRegistry();
|
|
12
|
-
const u8au32 = new Uint8Array([4 << 2, 135, 214, 18, 0]);
|
|
13
|
-
|
|
14
|
-
it('u8a encodes a wrapped u32 correctly', (): void => {
|
|
15
|
-
expect(
|
|
16
|
-
new WrapperOpaque(registry, 'u32', 1234567).toU8a()
|
|
17
|
-
).toEqual(u8au32);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('u8a decodes a wrapped u32 correctly', (): void => {
|
|
21
|
-
expect(
|
|
22
|
-
new WrapperOpaque(registry, 'u32', u8au32).toU8a()
|
|
23
|
-
).toEqual(u8au32);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it('u8a encodes a wrapped option correctly', (): void => {
|
|
27
|
-
expect(
|
|
28
|
-
new WrapperOpaque(registry, 'Option<u32>', 1234567).toU8a()
|
|
29
|
-
).toEqual(u8aConcat([5 << 2, 1], u8au32.slice(1)));
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('hex encodes a wrapped u32 correctly', (): void => {
|
|
33
|
-
expect(
|
|
34
|
-
new WrapperOpaque(registry, 'u32', '0x12345678').toHex()
|
|
35
|
-
).toEqual('0x12345678');
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('has the correct unwrap', (): void => {
|
|
39
|
-
expect(
|
|
40
|
-
new WrapperOpaque(registry, 'u32', '0x12345678').unwrap().toHex()
|
|
41
|
-
).toEqual('0x78563412');
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
it('has the correct toRawType', (): void => {
|
|
45
|
-
expect(
|
|
46
|
-
new WrapperOpaque(registry, 'u32').toRawType()
|
|
47
|
-
).toEqual('WrapperOpaque<u32>');
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('has a sane inspect', (): void => {
|
|
51
|
-
expect(
|
|
52
|
-
new WrapperOpaque(registry, 'u32', '0x78563412').inspect()
|
|
53
|
-
).toEqual({
|
|
54
|
-
inner: [{ outer: [new Uint8Array([0x78, 0x56, 0x34, 0x12])] }],
|
|
55
|
-
outer: [new Uint8Array([4 << 2])]
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|