mobx-keystone
Version:
A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more
98 lines (95 loc) • 2.91 kB
text/typescript
import { ArrayTypeInfo, typesArray } from "./arrayBased/typesArray"
import { TupleTypeInfo, typesTuple } from "./arrayBased/typesTuple"
import { ArraySetTypeInfo, typesArraySet } from "./objectBased/typesArraySet"
import { typesDataModelData } from "./objectBased/typesDataModelData"
import { ModelTypeInfo, ModelTypeInfoProps, typesModel } from "./objectBased/typesModel"
import {
FrozenTypeInfo,
ObjectTypeInfo,
ObjectTypeInfoProps,
typesFrozen,
typesObject,
} from "./objectBased/typesObject"
import { ObjectMapTypeInfo, typesObjectMap } from "./objectBased/typesObjectMap"
import { RecordTypeInfo, typesRecord } from "./objectBased/typesRecord"
import { RefTypeInfo, typesRef } from "./objectBased/typesRef"
import { typesEnum } from "./primitiveBased/typesEnum"
import {
BooleanTypeInfo,
LiteralTypeInfo,
NumberTypeInfo,
StringTypeInfo,
typesBoolean,
typesLiteral,
typesNull,
typesNumber,
typesString,
typesUndefined,
} from "./primitiveBased/typesPrimitive"
import { typesInteger, typesNonEmptyString } from "./primitiveBased/typesRefinedPrimitive"
import type { AnyType } from "./schemas"
import { typesMaybe, typesMaybeNull } from "./utility/typesMaybe"
import { OrTypeInfo, typesOr } from "./utility/typesOr"
import { RefinementTypeInfo, typesRefinement } from "./utility/typesRefinement"
import { TagTypeInfo, typesTag } from "./utility/typesTag"
import { typesUnchecked, UncheckedTypeInfo } from "./utility/typesUnchecked"
export { getTypeInfo } from "./getTypeInfo"
export { TypeInfo } from "./TypeChecker"
export type { ObjectTypeInfoProps, ModelTypeInfoProps }
export {
BooleanTypeInfo,
LiteralTypeInfo,
NumberTypeInfo,
StringTypeInfo,
FrozenTypeInfo,
ObjectMapTypeInfo,
TagTypeInfo,
RefinementTypeInfo,
RecordTypeInfo,
RefTypeInfo,
UncheckedTypeInfo,
ObjectTypeInfo,
ArraySetTypeInfo,
ArrayTypeInfo,
ModelTypeInfo,
OrTypeInfo,
TupleTypeInfo,
}
export const types = {
literal: typesLiteral,
undefined: typesUndefined,
null: typesNull,
boolean: typesBoolean,
number: typesNumber,
string: typesString,
or: typesOr,
maybe: typesMaybe,
maybeNull: typesMaybeNull,
array: typesArray,
record: typesRecord,
unchecked: typesUnchecked,
model: typesModel,
dataModelData: typesDataModelData,
object: typesObject,
ref: typesRef,
frozen: typesFrozen,
enum: typesEnum,
tag: typesTag,
refinement: typesRefinement,
integer: typesInteger,
nonEmptyString: typesNonEmptyString,
objectMap: typesObjectMap,
arraySet: typesArraySet,
tuple: typesTuple,
mapArray<T extends AnyType>(valueType: T) {
return typesArray(typesTuple(typesString, valueType))
},
setArray<T extends AnyType>(valueType: T) {
return typesArray(valueType)
},
mapObject<T extends AnyType>(valueType: T) {
return typesRecord(valueType)
},
dateString: typesNonEmptyString,
dateTimestamp: typesInteger,
}