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