65 lines
3.1 KiB
TypeScript
65 lines
3.1 KiB
TypeScript
import { Nullable } from '../utils';
|
|
export interface IMapAccess {
|
|
nextKeySeed<T, K extends Deserialize<T>>(seed: K): IteratorResult<T>;
|
|
nextValueSeed<T, V extends Deserialize<T>>(seed: V): IteratorResult<T>;
|
|
nextEntrySeed<TK, TV, K extends Deserialize<TK>, V extends Deserialize<TV>>(kseed: K, vseed: V): IteratorResult<[TK, TV]>;
|
|
nextKey<T>(): IteratorResult<T>;
|
|
nextValue<V>(): IteratorResult<V>;
|
|
nextEntry<K, V>(): IteratorResult<[K, V]>;
|
|
sizeHint?(): Nullable<number>;
|
|
entries<T, K extends Deserialize<T>>(seed?: K): Iterator<T>;
|
|
values<T, V extends Deserialize<T>>(seed?: V): Iterator<T>;
|
|
entries<TK, TV, K extends Deserialize<TK>, V extends Deserialize<TV>>(kseed: K, vseed: V): Iterator<[TK, TV]>;
|
|
[Symbol.iterator]<K, V>(): Iterator<[K, V]>;
|
|
}
|
|
export declare abstract class MapAccess {
|
|
abstract nextKeySeed<T, K extends Deserialize<T>>(seed: K): IteratorResult<T>;
|
|
abstract nextValueSeed<T, V extends Deserialize<T>>(seed: V): IteratorResult<T>;
|
|
private orDefaultSeed;
|
|
nextEntrySeed<TK, TV, K extends Deserialize<TK>, V extends Deserialize<TV>>(kseed: K, vseed: V): IteratorResult<[TK, TV]>;
|
|
nextKey<T>(): IteratorResult<T>;
|
|
nextValue<V>(): IteratorResult<V>;
|
|
nextEntry<K, V>(): IteratorResult<[K, V]>;
|
|
private generate;
|
|
keys<T, K extends Deserialize<T>>(seed?: K): Iterator<T>;
|
|
values<T, V extends Deserialize<T>>(seed?: V): Iterator<T>;
|
|
entries<TK, TV, K extends Deserialize<TK>, V extends Deserialize<TV>>(kseed?: K, vseed?: V): Iterator<[TK, TV]>;
|
|
[Symbol.iterator]<K, V>(): Iterator<K, V>;
|
|
}
|
|
export interface IIterableAccess {
|
|
nextElementSeed<T, D extends Deserialize<T>>(seed: D): IteratorResult<T>;
|
|
nextElement<T>(): IteratorResult<T>;
|
|
sizeHint?(): Nullable<number>;
|
|
[Symbol.iterator]<T>(): Iterator<T>;
|
|
}
|
|
export declare abstract class IterableAccess implements IIterableAccess {
|
|
abstract nextElementSeed<T, D extends Deserialize<T>>(seed: D): IteratorResult<T>;
|
|
nextElement<T>(): IteratorResult<T>;
|
|
[Symbol.iterator]<T>(): Iterator<T>;
|
|
}
|
|
export declare function isVisitor<T>(visitor: any): visitor is IVisitor<T>;
|
|
export interface IVisitor<T> {
|
|
visitBoolean(value: boolean): T;
|
|
visitNumber(value: number): T;
|
|
visitBigInt(value: bigint): T;
|
|
visitString(value: string): T;
|
|
visitSymbol(value: symbol): T;
|
|
visitNull(): T;
|
|
visitObject(access: IMapAccess): T;
|
|
visitIterable(access: IIterableAccess): T;
|
|
}
|
|
export interface IDeserializer {
|
|
deserializeAny<T>(visitor: Partial<IVisitor<T>>): T;
|
|
deserializeBoolean<T>(visitor: Partial<IVisitor<T>>): T;
|
|
deserializeNumber<T>(visitor: Partial<IVisitor<T>>): T;
|
|
deserializeBigInt<T>(visitor: Partial<IVisitor<T>>): T;
|
|
deserializeString<T>(visitor: Partial<IVisitor<T>>): T;
|
|
deserializeSymbol<T>(visitor: Partial<IVisitor<T>>): T;
|
|
deserializeNull<T>(visitor: Partial<IVisitor<T>>): T;
|
|
deserializeObject<T>(visitor: Partial<IVisitor<T>>): T;
|
|
deserializeIterable<T>(visitor: Partial<IVisitor<T>>): T;
|
|
deserializeFunction<T>(visitor: Partial<IVisitor<T>>): T;
|
|
}
|
|
export interface Deserialize<T> {
|
|
(deserializer: IDeserializer): T;
|
|
}
|