@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/Vec.spec.ts
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@pezkuwi/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import type { PropIndex } from '@pezkuwi/types/interfaces/democracy';
|
|
7
|
-
import type { Codec, CodecTo, ITuple } from '@pezkuwi/types-codec/types';
|
|
8
|
-
|
|
9
|
-
import { createTypeUnsafe, GenericAccountId as AccountId, Metadata, TypeRegistry } from '@pezkuwi/types';
|
|
10
|
-
import { Text, u32, Vec } from '@pezkuwi/types-codec';
|
|
11
|
-
import rpcMetadata from '@pezkuwi/types-support/metadata/static-substrate';
|
|
12
|
-
import { decodeAddress, randomAsU8a } from '@pezkuwi/util-crypto';
|
|
13
|
-
|
|
14
|
-
import { perf } from '../test/performance.js';
|
|
15
|
-
|
|
16
|
-
const registry = new TypeRegistry();
|
|
17
|
-
const metadata = new Metadata(registry, rpcMetadata);
|
|
18
|
-
const VecU32 = Vec.with(u32);
|
|
19
|
-
|
|
20
|
-
registry.setMetadata(metadata);
|
|
21
|
-
|
|
22
|
-
describe('Vec', (): void => {
|
|
23
|
-
let vector: Vec<Codec>;
|
|
24
|
-
|
|
25
|
-
beforeEach((): void => {
|
|
26
|
-
vector = new Vec(registry, Text, ['1', '23', '345', '4567', new Text(registry, '56789')]);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
describe('constructor', (): void => {
|
|
30
|
-
it('fails construction on non-Array, non-Hex inputs', (): void => {
|
|
31
|
-
// @ts-expect-error We are intentionally passing a non-valid input
|
|
32
|
-
expect(() => new Vec(registry, Text, '12345')).toThrow(/decoding, found string/);
|
|
33
|
-
// @ts-expect-error We are intentionally passing a non-valid input
|
|
34
|
-
expect(() => new Vec(registry, Text, {})).toThrow(/decoding, found object/);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('allows construction via hex & null values', (): void => {
|
|
38
|
-
// @ts-expect-error We are intentionally passing a non-valid input
|
|
39
|
-
expect(new Vec(registry, Text, null)).toHaveLength(0);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('decodes a complex type via construction (1)', (): void => {
|
|
43
|
-
const test = createTypeUnsafe<Vec<ITuple<[PropIndex, AccountId]>>>(registry, 'Vec<(PropIndex, AccountId)>', [new Uint8Array([
|
|
44
|
-
4, 10, 0, 0, 0, 209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79
|
|
45
|
-
])]);
|
|
46
|
-
|
|
47
|
-
expect(test[0][0].toNumber()).toEqual(10);
|
|
48
|
-
expect(test[0][1].toString()).toEqual('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua');
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('decodes a complex type via construction (2)', (): void => {
|
|
52
|
-
const INPUT = '0x08cc0200000000ce0200000001';
|
|
53
|
-
const test = createTypeUnsafe<Vec<Codec>>(registry, 'Vec<(u32, [u32; 0], u16)>', [INPUT]);
|
|
54
|
-
|
|
55
|
-
expect(test).toHaveLength(2);
|
|
56
|
-
expect(test.toHex()).toEqual(INPUT);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('allows construction via JSON', (): void => {
|
|
60
|
-
expect(
|
|
61
|
-
new Vec(registry, Text, ['6', '7']).toJSON()
|
|
62
|
-
).toEqual(['6', '7']);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it('allows construction via JSON (string type)', (): void => {
|
|
66
|
-
expect(
|
|
67
|
-
new Vec(registry, 'u32', ['6', '7']).toJSON()
|
|
68
|
-
).toEqual([6, 7]);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
it('decodes reusing instantiated inputs', (): void => {
|
|
72
|
-
const foo = new Text(registry, 'bar');
|
|
73
|
-
|
|
74
|
-
expect(
|
|
75
|
-
(new Vec(registry, Text, [foo]))[0]
|
|
76
|
-
).toBe(foo);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
describe('vector-like functions', (): void => {
|
|
81
|
-
it('wraps a sequence of values', (): void => {
|
|
82
|
-
expect(vector).toHaveLength(5);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('has a sane representation for toString', (): void => {
|
|
86
|
-
expect(vector.toString()).toEqual('[1, 23, 345, 4567, 56789]');
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it('encodes with length prefix on toU8a()', (): void => {
|
|
90
|
-
expect(vector.toU8a()).toEqual(new Uint8Array([
|
|
91
|
-
5 << 2,
|
|
92
|
-
1 << 2, 49,
|
|
93
|
-
2 << 2, 50, 51,
|
|
94
|
-
3 << 2, 51, 52, 53,
|
|
95
|
-
4 << 2, 52, 53, 54, 55,
|
|
96
|
-
5 << 2, 53, 54, 55, 56, 57
|
|
97
|
-
]));
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
it('encodes without length prefix on toU8a(true)', (): void => {
|
|
101
|
-
expect(vector.toU8a(true)).toEqual(new Uint8Array([
|
|
102
|
-
1 << 2, 49,
|
|
103
|
-
2 << 2, 50, 51,
|
|
104
|
-
3 << 2, 51, 52, 53,
|
|
105
|
-
4 << 2, 52, 53, 54, 55,
|
|
106
|
-
5 << 2, 53, 54, 55, 56, 57
|
|
107
|
-
]));
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
it('exposes the type', (): void => {
|
|
111
|
-
expect(vector.Type).toEqual('Text');
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
it('allows retrieval of a specific item', (): void => {
|
|
115
|
-
expect(
|
|
116
|
-
vector[2].toString()
|
|
117
|
-
).toEqual('345');
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it('exposes a working forEach', (): void => {
|
|
121
|
-
const result: Record<number, string> = {};
|
|
122
|
-
|
|
123
|
-
vector.forEach((e, i): void => {
|
|
124
|
-
result[i] = e.toString();
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
expect(result).toEqual({
|
|
128
|
-
0: '1',
|
|
129
|
-
1: '23',
|
|
130
|
-
2: '345',
|
|
131
|
-
3: '4567',
|
|
132
|
-
4: '56789'
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
it('exposes a working concat', (): void => {
|
|
137
|
-
expect(
|
|
138
|
-
vector.concat(new Vec(registry, Text, ['987', '654'])).toString()
|
|
139
|
-
).toEqual('1,23,345,4567,56789,987,654');
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
it('exposes a working filter', (): void => {
|
|
143
|
-
expect(
|
|
144
|
-
vector.filter((_, i): boolean => i >= 3).toString()
|
|
145
|
-
).toEqual('4567,56789');
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
it('exposes a working map', (): void => {
|
|
149
|
-
expect(
|
|
150
|
-
vector.map((e): string => e.toString().substring(0, 1))
|
|
151
|
-
).toEqual(['1', '2', '3', '4', '5']);
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
it('exposes a working reduce', (): void => {
|
|
155
|
-
expect(
|
|
156
|
-
vector.reduce((r, e): string => `${r}${e.toString()}`, '')
|
|
157
|
-
).toEqual('123345456756789');
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
it('exposes a working indexOf', (): void => {
|
|
161
|
-
expect(vector.indexOf('1')).toEqual(0);
|
|
162
|
-
expect(vector.indexOf(new Text(registry, '23'))).toEqual(1);
|
|
163
|
-
expect(vector.indexOf('0')).toEqual(-1);
|
|
164
|
-
});
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
describe('encode', (): void => {
|
|
168
|
-
const testEncode = (to: CodecTo, expected: any): void =>
|
|
169
|
-
it(`can encode ${to}`, (): void => {
|
|
170
|
-
expect(vector[to]()).toEqual(expected);
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
testEncode('toHex', '0x1404310832330c3334351034353637143536373839');
|
|
174
|
-
testEncode('toJSON', ['1', '23', '345', '4567', '56789']);
|
|
175
|
-
testEncode('toString', '[1, 23, 345, 4567, 56789]');
|
|
176
|
-
testEncode('toU8a', Uint8Array.from([20, 4, 49, 8, 50, 51, 12, 51, 52, 53, 16, 52, 53, 54, 55, 20, 53, 54, 55, 56, 57]));
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
describe('utils', (): void => {
|
|
180
|
-
const vec = new Vec(registry, Text, ['123', '456']);
|
|
181
|
-
|
|
182
|
-
it('compares against codec types', (): void => {
|
|
183
|
-
expect(vec.eq([new Text(registry, '123'), new Text(registry, '456')])).toBe(true);
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
it('compares against codec + primitive types', (): void => {
|
|
187
|
-
expect(vec.eq(['123', new Text(registry, '456')])).toBe(true);
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
it('finds the index of an value', (): void => {
|
|
191
|
-
const myId = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';
|
|
192
|
-
const vec = new Vec(registry, AccountId, [
|
|
193
|
-
'5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw', '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'
|
|
194
|
-
]);
|
|
195
|
-
|
|
196
|
-
expect(vec.indexOf(myId)).toEqual(2);
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
it('allows a slice operator', (): void => {
|
|
200
|
-
const vec = registry.createType('Vec<AccountId>', [
|
|
201
|
-
randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a(), randomAsU8a()
|
|
202
|
-
]);
|
|
203
|
-
|
|
204
|
-
expect(vec).toHaveLength(10);
|
|
205
|
-
expect(vec.slice(2, 7)).toHaveLength(5);
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
it('has a sane inspect', (): void => {
|
|
209
|
-
const addrs = [
|
|
210
|
-
'5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw', '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'
|
|
211
|
-
];
|
|
212
|
-
const vec = registry.createType('Vec<AccountId>', addrs);
|
|
213
|
-
|
|
214
|
-
expect(vec.inspect()).toEqual({
|
|
215
|
-
inner: addrs.map((a) => ({
|
|
216
|
-
outer: [decodeAddress(a)]
|
|
217
|
-
})),
|
|
218
|
-
outer: [new Uint8Array([3 << 2])]
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
perf('Vec<U32>', 40_000, [[new Uint8Array([3 << 2, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34])]], (v: Uint8Array) => new VecU32(registry, v));
|
|
224
|
-
});
|
package/src/base/Vec.ts
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { HexString } from '@pezkuwi/util/types';
|
|
5
|
-
import type { Codec, CodecClass, DefinitionSetter, Registry } from '../types/index.js';
|
|
6
|
-
|
|
7
|
-
import { compactFromU8aLim, identity, isHex, isU8a, logger, stringify, u8aToU8a } from '@pezkuwi/util';
|
|
8
|
-
|
|
9
|
-
import { AbstractArray } from '../abstract/Array.js';
|
|
10
|
-
import { decodeU8aVec, typeToConstructor } from '../utils/index.js';
|
|
11
|
-
|
|
12
|
-
const MAX_LENGTH = 512 * 1024;
|
|
13
|
-
|
|
14
|
-
const l = logger('Vec');
|
|
15
|
-
|
|
16
|
-
function decodeVecLength (value: Uint8Array | HexString | unknown[]): [Uint8Array | unknown[] | null, number, number] {
|
|
17
|
-
if (Array.isArray(value)) {
|
|
18
|
-
return [value, value.length, 0];
|
|
19
|
-
} else if (isU8a(value) || isHex(value)) {
|
|
20
|
-
const u8a = u8aToU8a(value);
|
|
21
|
-
const [startAt, length] = compactFromU8aLim(u8a);
|
|
22
|
-
|
|
23
|
-
if (length > MAX_LENGTH) {
|
|
24
|
-
throw new Error(`Vec length ${length.toString()} exceeds ${MAX_LENGTH}`);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return [u8a, length, startAt];
|
|
28
|
-
} else if (!value) {
|
|
29
|
-
return [null, 0, 0];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
throw new Error(`Expected array/hex input to Vec<*> decoding, found ${typeof value}: ${stringify(value)}`);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function decodeVec<T extends Codec> (registry: Registry, result: T[], value: Uint8Array | HexString | unknown[] | null, startAt: number, Type: CodecClass<T>): [number, number] {
|
|
36
|
-
if (Array.isArray(value)) {
|
|
37
|
-
const count = result.length;
|
|
38
|
-
|
|
39
|
-
for (let i = 0; i < count; i++) {
|
|
40
|
-
// 26/08/2022 this is actually a false positive - after recent eslint upgdates
|
|
41
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
42
|
-
const entry = value[i];
|
|
43
|
-
|
|
44
|
-
try {
|
|
45
|
-
result[i] = entry instanceof Type
|
|
46
|
-
? entry
|
|
47
|
-
: new Type(registry, entry);
|
|
48
|
-
} catch (error) {
|
|
49
|
-
l.error(`Unable to decode on index ${i}`, (error as Error).message);
|
|
50
|
-
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return [0, 0];
|
|
56
|
-
} else if (!value) {
|
|
57
|
-
return [0, 0];
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// we don't need more checks, we already limited it via the length decoding
|
|
61
|
-
return decodeU8aVec(registry, result, u8aToU8a(value), startAt, Type);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* @name Vec
|
|
66
|
-
* @description
|
|
67
|
-
* This manages codec arrays. Internally it keeps track of the length (as decoded) and allows
|
|
68
|
-
* construction with the passed `Type` in the constructor. It is an extension to Array, providing
|
|
69
|
-
* specific encoding/decoding on top of the base type.
|
|
70
|
-
*/
|
|
71
|
-
export class Vec<T extends Codec> extends AbstractArray<T> {
|
|
72
|
-
#Type: CodecClass<T>;
|
|
73
|
-
|
|
74
|
-
constructor (registry: Registry, Type: CodecClass<T> | string, value: Uint8Array | HexString | unknown[] = [], { definition, setDefinition = identity }: DefinitionSetter<CodecClass<T>> = {}) {
|
|
75
|
-
const [decodeFrom, length, startAt] = decodeVecLength(value);
|
|
76
|
-
|
|
77
|
-
super(registry, length);
|
|
78
|
-
|
|
79
|
-
this.#Type = definition || setDefinition(typeToConstructor<T>(registry, Type));
|
|
80
|
-
|
|
81
|
-
this.initialU8aLength = (
|
|
82
|
-
isU8a(decodeFrom)
|
|
83
|
-
? decodeU8aVec(registry, this, decodeFrom, startAt, this.#Type)
|
|
84
|
-
: decodeVec(registry, this, decodeFrom, startAt, this.#Type)
|
|
85
|
-
)[0];
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
public static with<O extends Codec> (Type: CodecClass<O> | string): CodecClass<Vec<O>> {
|
|
89
|
-
let definition: CodecClass<O> | undefined;
|
|
90
|
-
|
|
91
|
-
// eslint-disable-next-line no-return-assign
|
|
92
|
-
const setDefinition = <T> (d: CodecClass<T>) =>
|
|
93
|
-
(definition = d as unknown as CodecClass<O>) as unknown as CodecClass<T>;
|
|
94
|
-
|
|
95
|
-
return class extends Vec<O> {
|
|
96
|
-
constructor (registry: Registry, value?: any[]) {
|
|
97
|
-
super(registry, Type, value, { definition, setDefinition });
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* @description The type for the items
|
|
104
|
-
*/
|
|
105
|
-
public get Type (): string {
|
|
106
|
-
return this.#Type.name;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* @description Finds the index of the value in the array
|
|
111
|
-
*/
|
|
112
|
-
public override indexOf (other?: unknown): number {
|
|
113
|
-
// convert type first, this removes overhead from the eq
|
|
114
|
-
const check = other instanceof this.#Type
|
|
115
|
-
? other
|
|
116
|
-
: new this.#Type(this.registry, other);
|
|
117
|
-
|
|
118
|
-
for (let i = 0, count = this.length; i < count; i++) {
|
|
119
|
-
if (check.eq(this[i])) {
|
|
120
|
-
return i;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return -1;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* @description Returns the base runtime type name for this instance
|
|
129
|
-
*/
|
|
130
|
-
public toRawType (): string {
|
|
131
|
-
return `Vec<${this.registry.getClassName(this.#Type) || new this.#Type(this.registry).toRawType()}>`;
|
|
132
|
-
}
|
|
133
|
-
}
|
package/src/base/VecAny.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { Codec } from '../types/index.js';
|
|
5
|
-
|
|
6
|
-
import { AbstractArray } from '../abstract/Array.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @name VecAny
|
|
10
|
-
* @description
|
|
11
|
-
* This manages codec arrays, assuming that the inputs are already of type Codec. Unlike
|
|
12
|
-
* a vector, this can be used to manage array-like structures with variable arguments of
|
|
13
|
-
* any types
|
|
14
|
-
*/
|
|
15
|
-
export class VecAny<T extends Codec> extends AbstractArray<T> {
|
|
16
|
-
/**
|
|
17
|
-
* @description Returns the base runtime type name for this instance
|
|
18
|
-
*/
|
|
19
|
-
public toRawType (): string {
|
|
20
|
-
// FIXME This is basically an any type, cannot instantiate via createType
|
|
21
|
-
return 'Vec<Codec>';
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@pezkuwi/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { TypeRegistry } from '@pezkuwi/types';
|
|
7
|
-
import { Text, u16, VecFixed } from '@pezkuwi/types-codec';
|
|
8
|
-
import { stringToU8a } from '@pezkuwi/util';
|
|
9
|
-
|
|
10
|
-
describe('VecFixed', (): void => {
|
|
11
|
-
const registry = new TypeRegistry();
|
|
12
|
-
|
|
13
|
-
describe('construction', (): void => {
|
|
14
|
-
it('constructs via empty', (): void => {
|
|
15
|
-
expect(new VecFixed(registry, Text, 2).toHex()).toEqual('0x0000');
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it('constructs via Uint8Array', (): void => {
|
|
19
|
-
expect(new VecFixed(registry, Text, 2, new Uint8Array([0x00, 0x04, 0x31])).toHex()).toEqual('0x000431');
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('constructs via hex', (): void => {
|
|
23
|
-
expect(new VecFixed(registry, u16, 2, '0x12345678').toHex()).toEqual('0x12345678');
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it('decodes reusing instance inputs', (): void => {
|
|
27
|
-
const foo = new Text(registry, 'bar');
|
|
28
|
-
|
|
29
|
-
expect(
|
|
30
|
-
(new VecFixed(registry, Text, 1, [foo]))[0]
|
|
31
|
-
).toBe(foo);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
describe('utils', (): void => {
|
|
36
|
-
let test: VecFixed<Text>;
|
|
37
|
-
|
|
38
|
-
beforeEach((): void => {
|
|
39
|
-
test = new (VecFixed.with(Text, 5))(registry, ['1', '2', '3', undefined, '56']);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('has a sane string types', (): void => {
|
|
43
|
-
expect(test.toRawType()).toEqual('[Text;5]');
|
|
44
|
-
expect(test.Type).toEqual('Text');
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it('has a correct toHex', (): void => {
|
|
48
|
-
// each entry length 1 << 2, char as hex (0x31 === `1`), one empty
|
|
49
|
-
expect(test.toHex()).toEqual('0x04310432043300083536');
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('has empty Uint8Array when length is 0', (): void => {
|
|
53
|
-
const test = new (VecFixed.with(Text, 0))(registry);
|
|
54
|
-
|
|
55
|
-
expect(test.encodedLength).toEqual(0);
|
|
56
|
-
expect(test.toU8a()).toEqual(new Uint8Array([]));
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('has equivalent to 1 Uint8Array when length is 1', (): void => {
|
|
60
|
-
const test = new (VecFixed.with(Text, 1))(registry, ['hello']);
|
|
61
|
-
|
|
62
|
-
expect(test.encodedLength).toEqual(1 + 5);
|
|
63
|
-
expect(test.toU8a()).toEqual(new Uint8Array([20, 104, 101, 108, 108, 111]));
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it('has a sane inspect', (): void => {
|
|
67
|
-
expect(test.inspect()).toEqual({
|
|
68
|
-
inner: [
|
|
69
|
-
{ outer: [new Uint8Array([1 << 2]), stringToU8a('1')] },
|
|
70
|
-
{ outer: [new Uint8Array([1 << 2]), stringToU8a('2')] },
|
|
71
|
-
{ outer: [new Uint8Array([1 << 2]), stringToU8a('3')] },
|
|
72
|
-
{ outer: [new Uint8Array([0])] },
|
|
73
|
-
{ outer: [new Uint8Array([2 << 2]), stringToU8a('56')] }
|
|
74
|
-
]
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
});
|
package/src/base/VecFixed.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { HexString } from '@pezkuwi/util/types';
|
|
5
|
-
import type { Codec, CodecClass, DefinitionSetter, Inspect, Registry } from '../types/index.js';
|
|
6
|
-
|
|
7
|
-
import { identity, isU8a, u8aConcatStrict } from '@pezkuwi/util';
|
|
8
|
-
|
|
9
|
-
import { AbstractArray } from '../abstract/Array.js';
|
|
10
|
-
import { decodeU8aVec, typeToConstructor } from '../utils/index.js';
|
|
11
|
-
import { decodeVec } from './Vec.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @name VecFixed
|
|
15
|
-
* @description
|
|
16
|
-
* This manages codec arrays of a fixed length
|
|
17
|
-
*/
|
|
18
|
-
export class VecFixed<T extends Codec> extends AbstractArray<T> {
|
|
19
|
-
#Type: CodecClass<T>;
|
|
20
|
-
|
|
21
|
-
constructor (registry: Registry, Type: CodecClass<T> | string, length: number, value: Uint8Array | HexString | unknown[] = [] as unknown[], { definition, setDefinition = identity }: DefinitionSetter<CodecClass<T>> = {}) {
|
|
22
|
-
super(registry, length);
|
|
23
|
-
|
|
24
|
-
this.#Type = definition || setDefinition(typeToConstructor<T>(registry, Type));
|
|
25
|
-
|
|
26
|
-
this.initialU8aLength = (
|
|
27
|
-
isU8a(value)
|
|
28
|
-
? decodeU8aVec(registry, this, value, 0, this.#Type)
|
|
29
|
-
: decodeVec(registry, this, value, 0, this.#Type)
|
|
30
|
-
)[1];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public static with<O extends Codec> (Type: CodecClass<O> | string, length: number): CodecClass<VecFixed<O>> {
|
|
34
|
-
let definition: CodecClass<O> | undefined;
|
|
35
|
-
|
|
36
|
-
// eslint-disable-next-line no-return-assign
|
|
37
|
-
const setDefinition = <T> (d: CodecClass<T>) =>
|
|
38
|
-
(definition = d as unknown as CodecClass<O>) as unknown as CodecClass<T>;
|
|
39
|
-
|
|
40
|
-
return class extends VecFixed<O> {
|
|
41
|
-
constructor (registry: Registry, value?: any[]) {
|
|
42
|
-
super(registry, Type, length, value, { definition, setDefinition });
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* @description The type for the items
|
|
49
|
-
*/
|
|
50
|
-
public get Type (): string {
|
|
51
|
-
return new this.#Type(this.registry).toRawType();
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* @description The length of the value when encoded as a Uint8Array
|
|
56
|
-
*/
|
|
57
|
-
public override get encodedLength (): number {
|
|
58
|
-
let total = 0;
|
|
59
|
-
|
|
60
|
-
for (let i = 0, count = this.length; i < count; i++) {
|
|
61
|
-
total += this[i].encodedLength;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return total;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @description Returns a breakdown of the hex encoding for this Codec
|
|
69
|
-
*/
|
|
70
|
-
public override inspect (): Inspect {
|
|
71
|
-
return {
|
|
72
|
-
inner: this.inspectInner()
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
public override toU8a (): Uint8Array {
|
|
77
|
-
// we override, we don't add the length prefix for ourselves, and at the same time we
|
|
78
|
-
// ignore isBare on entries, since they should be properly encoded at all times
|
|
79
|
-
const encoded = this.toU8aInner();
|
|
80
|
-
|
|
81
|
-
return encoded.length
|
|
82
|
-
? u8aConcatStrict(encoded)
|
|
83
|
-
: new Uint8Array([]);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* @description Returns the base runtime type name for this instance
|
|
88
|
-
*/
|
|
89
|
-
public toRawType (): string {
|
|
90
|
-
return `[${this.Type};${this.length}]`;
|
|
91
|
-
}
|
|
92
|
-
}
|
package/src/checkTypes.manual.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/types-codec authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import '@pezkuwi/types-augment';
|
|
5
|
-
|
|
6
|
-
import { TypeRegistry } from '@pezkuwi/types';
|
|
7
|
-
|
|
8
|
-
import { U32 } from './index.js';
|
|
9
|
-
|
|
10
|
-
const registry = new TypeRegistry();
|
|
11
|
-
|
|
12
|
-
console.log(new U32(registry).divn(1));
|