mobx-keystone-mindreframer
Version:
A MobX powered state management solution based on data trees with first class support for Typescript, snapshots, patches and much more
56 lines (55 loc) • 1.75 kB
TypeScript
import type { Path } from "../parent/pathTypes";
import type { AnyStandardType } from "./schemas";
import { TypeCheckError } from "./TypeCheckError";
declare type CheckFunction = (value: any, path: Path) => TypeCheckError | null;
declare type CheckResult = TypeCheckError | null;
/**
* @ignore
*/
export declare function invalidateCachedTypeCheckerResult(obj: object): void;
/**
* @ignore
*/
export declare class TypeChecker {
private readonly _check;
readonly getTypeName: (...recursiveTypeCheckers: TypeChecker[]) => string;
private checkResultCache?;
unchecked: boolean;
private createCacheIfNeeded;
setCachedResult(obj: object, newCacheValue: CheckResult): void;
invalidateCachedResult(obj: object): void;
private getCachedResult;
check(value: any, path: Path): TypeCheckError | null;
private _cachedTypeInfoGen;
get typeInfo(): TypeInfo;
constructor(_check: CheckFunction | null, getTypeName: (...recursiveTypeCheckers: TypeChecker[]) => string, typeInfoGen: TypeInfoGen);
}
declare const lateTypeCheckerSymbol: unique symbol;
/**
* @ignore
*/
export interface LateTypeChecker {
[lateTypeCheckerSymbol]: true;
(): TypeChecker;
typeInfo: TypeInfo;
}
/**
* @ignore
*/
export declare function lateTypeChecker(fn: () => TypeChecker, typeInfoGen: TypeInfoGen): LateTypeChecker;
/**
* @ignore
*/
export declare function isLateTypeChecker(ltc: any): ltc is LateTypeChecker;
/**
* Type info base class.
*/
export declare class TypeInfo {
readonly thisType: AnyStandardType;
constructor(thisType: AnyStandardType);
}
/**
* @ignore
*/
export declare type TypeInfoGen = (t: AnyStandardType) => TypeInfo;
export {};