Pass Range/WrapperOpaque names via options (#4911)
This commit is contained in:
@@ -9,12 +9,7 @@ describe('Range', (): void => {
|
||||
let range: Range<U32>;
|
||||
|
||||
beforeEach((): void => {
|
||||
const Clazz = Range.with(U32);
|
||||
|
||||
range = new Clazz(
|
||||
registry,
|
||||
[new U32(registry, 1), new U32(registry, 2)]
|
||||
);
|
||||
range = new (Range.with(U32))(registry, [1, 2]);
|
||||
});
|
||||
|
||||
it('decodes', (): void => {
|
||||
|
||||
@@ -7,6 +7,10 @@ import { Tuple } from '../base/Tuple';
|
||||
|
||||
type RangeType = 'Range' | 'RangeInclusive';
|
||||
|
||||
interface Options {
|
||||
rangeName?: RangeType;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Range
|
||||
* @description
|
||||
@@ -15,19 +19,16 @@ type RangeType = 'Range' | 'RangeInclusive';
|
||||
export class Range<T extends INumber> extends Tuple {
|
||||
#rangeName: RangeType;
|
||||
|
||||
constructor (registry: Registry, Type: CodecClass<T> | string, value?: AnyTuple, rangeName: RangeType = 'Range') {
|
||||
super(registry, {
|
||||
end: Type,
|
||||
start: Type
|
||||
}, value);
|
||||
constructor (registry: Registry, Type: CodecClass<T> | string, value?: AnyTuple, { rangeName = 'Range' }: Options = {}) {
|
||||
super(registry, [Type, Type], value);
|
||||
|
||||
this.#rangeName = rangeName;
|
||||
}
|
||||
|
||||
public static override with <T extends INumber> (Types: CodecClass<T> | string): CodecClass<Range<T>> {
|
||||
public static override with <T extends INumber> (Type: CodecClass<T> | string): CodecClass<Range<T>> {
|
||||
return class extends Range<T> {
|
||||
constructor (registry: Registry, value?: AnyTuple) {
|
||||
super(registry, Types, value);
|
||||
super(registry, Type, value);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Range } from './Range';
|
||||
|
||||
export class RangeInclusive<T extends INumber = INumber> extends Range<T> {
|
||||
constructor (registry: Registry, Type: CodecClass<T> | string, value?: AnyTuple) {
|
||||
super(registry, Type, value, 'RangeInclusive');
|
||||
super(registry, Type, value, { rangeName: 'RangeInclusive' });
|
||||
}
|
||||
|
||||
public static override with <T extends INumber> (Type: CodecClass<T> | string): CodecClass<RangeInclusive<T>> {
|
||||
|
||||
@@ -11,6 +11,10 @@ import { Bytes } from './Bytes';
|
||||
|
||||
type OpaqueName = 'WrapperKeepOpaque' | 'WrapperOpaque';
|
||||
|
||||
interface Options {
|
||||
opaqueName?: OpaqueName;
|
||||
}
|
||||
|
||||
function decodeRaw<T extends Codec> (registry: Registry, typeName: CodecClass<T> | string, value?: unknown): [CodecClass<T>, T | null, AnyU8a] {
|
||||
const Type = typeToConstructor(registry, typeName);
|
||||
|
||||
@@ -38,7 +42,7 @@ export class WrapperKeepOpaque<T extends Codec> extends Bytes {
|
||||
|
||||
readonly #opaqueName: OpaqueName;
|
||||
|
||||
constructor (registry: Registry, typeName: CodecClass<T> | string, value?: unknown, opaqueName: OpaqueName = 'WrapperKeepOpaque') {
|
||||
constructor (registry: Registry, typeName: CodecClass<T> | string, value?: unknown, { opaqueName = 'WrapperKeepOpaque' }: Options = {}) {
|
||||
const [Type, decoded, u8a] = decodeRaw(registry, typeName, value);
|
||||
|
||||
super(registry, u8a);
|
||||
|
||||
@@ -7,7 +7,7 @@ import { WrapperKeepOpaque } from './WrapperKeepOpaque';
|
||||
|
||||
export class WrapperOpaque<T extends Codec> extends WrapperKeepOpaque<T> {
|
||||
constructor (registry: Registry, typeName: CodecClass<T> | string, value?: unknown) {
|
||||
super(registry, typeName, value, 'WrapperOpaque');
|
||||
super(registry, typeName, value, { opaqueName: 'WrapperOpaque' });
|
||||
}
|
||||
|
||||
public static override with<T extends Codec> (Type: CodecClass<T> | string): CodecClass<WrapperKeepOpaque<T>> {
|
||||
|
||||
Reference in New Issue
Block a user