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
38 lines (33 loc) • 936 B
text/typescript
import type { AnyDataModel } from "../dataModel/BaseDataModel"
import type { AnyModel } from "../model/BaseModel"
import type { ModelClass } from "./BaseModelShared"
/**
* @internal
* @ignore
*/
export const modelInitializersSymbol = Symbol("modelInitializers")
type ModelClassInitializer = (modelInstance: AnyModel | AnyDataModel) => void
/**
* @internal
* @ignore
*/
export function addModelClassInitializer(
modelClass: ModelClass<AnyModel | AnyDataModel>,
init: ModelClassInitializer
) {
let initializers = (modelClass as any)[modelInitializersSymbol]
if (!initializers) {
initializers = []
;(modelClass as any)[modelInitializersSymbol] = initializers
}
initializers.push(init)
}
/**
* @internal
* @ignore
*/
export function getModelClassInitializers(
modelClass: ModelClass<AnyModel | AnyDataModel>
): ModelClassInitializer[] | undefined {
return (modelClass as any)[modelInitializersSymbol]
}