This commit is contained in:
Julien Valverdé
2024-06-12 02:14:19 +02:00
parent fe5a863d9b
commit 0c8b9f3452
7 changed files with 46 additions and 29 deletions

View File

@@ -1,15 +1,18 @@
import type { Class, Struct } from "@effect/schema/Schema"
import type { Struct } from "@effect/schema/Schema"
import { makeObservable, observable, type CreateObservableOptions } from "mobx"
import { mapValues } from "remeda"
import type { Constructor } from "type-fest"
export function MobXObservable<
C extends Class<any, Struct.Fields, any, any, any, any, any>
This extends Constructor<Struct.Type<Struct.Fields>, any> & {
readonly fields: { readonly [K in keyof Struct.Fields]: Struct.Fields[K] }
}
>(
class_: C,
class_: This,
options?: Omit<CreateObservableOptions, "proxy">,
) {
return class MobXObservable extends (class_ as Class<any, Struct.Fields, any, any, any, any, any>) {
return class MobXObservable extends class_ {
declare ["constructor"]: typeof MobXObservable
constructor(...args: any[]) {
@@ -20,5 +23,5 @@ export function MobXObservable<
options,
)
}
} as C
} as This
}