Refactoring

This commit is contained in:
Julien Valverdé
2024-06-10 23:04:13 +02:00
parent 606ea43aab
commit 942d1c9ea6
7 changed files with 7 additions and 7 deletions

View File

@@ -0,0 +1,24 @@
import type { Class, Struct } from "@effect/schema/Schema"
import { makeObservable, observable, type CreateObservableOptions } from "mobx"
import { mapValues } from "remeda"
export function MobXObservable<
C extends Class<any, Struct.Fields, any, any, any, any, any>
>(
class_: C,
options?: Omit<CreateObservableOptions, "proxy">,
) {
return class MobXObservable extends (class_ as Class<any, Struct.Fields, any, any, any, any, any>) {
declare ["constructor"]: typeof MobXObservable
constructor(...args: any[]) {
super(...args)
makeObservable(this,
mapValues(this.constructor.fields, () => observable),
options,
)
}
} as C
}