From 606ea43aabd996035fd9eec659a4d29e3fae0ce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 10 Jun 2024 22:36:37 +0200 Subject: [PATCH] MobXObservable --- bun.lockb | Bin 154180 -> 154501 bytes package.json | 3 ++- src/effect/schema/MobXObservable.ts | 24 ++++++++++++++++++++++++ src/effect/schema/index.ts | 1 + 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/effect/schema/MobXObservable.ts diff --git a/bun.lockb b/bun.lockb index da6985ed1f6091dfd4efd727b0feb6ebd49401a8..ab3040cd02e1626da467b64dec6a3437f730ca63 100755 GIT binary patch delta 8587 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 delta 8288 zcmeI1d2|-l8OFaGq!>(Cq!MC`Az=w&-3KzTi{>4ZM+8E^H&nMKrBn;=OY+!W3RT925%gCtdX<8U_61md=q z{}fsjH2o9}KcjZ+U!&L8&Oq7#23bB*H4<5%5xCPd8&!&?_3=l5uG=V3id6M8TIa7I z2b830Fjg6o^hgR%zRDPZ^q)1i0sUV#ON>bI&2l+V#Y?P!bC{%_NO?6=R z2Bl$D{cnOgx=+6M(b5E+QE0X{B&ll60kwVrl%lD6nG34F0F1nruzaMZ;#Gqto_9b=>bzqs(u*|A?<)uALHSFd^uJW~FN1EhE1*-wT8zV2QM?Q0f*=TtM%ExwHIv+84Vqi|HR_eEO!xM#Y%*AfkZ3hNiK>2* z)t5Rixj1D!W+>TQsqUjRR0Gpiwa|2Ju2Wg& zD(J;VN7lz`MN<{^wQ{MBt-s|XRn`FWrRsN(<)di$saJufh4H8!vPr1gOg7C`h9p&o zQ!F1%Rg}j@gP4ytM!${fu9=6b{Q^{Jfn)lUvCxc2m9>bCbTJ#%dk9rW56d)FsA1HI ztU#4tX_sxC!pz1>4sdQV!tNY%OQ$Cn%9bYsfn(Er(e8= z_aAkIuAAX=U-#Pn|9j!f&VvhOBlCH!dkeMTRg&uI$_MSZ0F7Q{6Uo>)v2^ zN`mb*3vTnd(wb(Xt#?&JzGl&A>s^)0*R)c%?qv{Cp&IJey$nL49#>O6iCXU}N$b|V z!BEt#dxK$!whpda_v$fWcD+U3L$g z@SC!_(bB4R@&16d(=tJC)Jk*B(@%ead3w86sO7>er}u8sd@~#P%Sv6dBE3-DZ}lIv zB7LvQHgBPMTILTmul6NeZ+GL&TWs|-P4qGEJLbjX^)yc}>ZY$;mgdEDr^S7GH*Gm0sAt%Xx<}^{VTo&_L{j0 zRoEOR66h>T%+p8uY*1QlUJK&kffN3apc6@i&Xnsc*IK<>iMtXjJ!)Q(-*h7v;Wn(= zUuWGks+9~U2y_mm=G{*Grg`Qq?(Lx=u~O}qkq*TAK&iBwG7WJ@XhEPu)0Yx8=>)CK)8&-c8Pa3y9QT>o z1@jWI&fzKZx)ST=ONagDbt9exI?$)h)06ojC>=1bhkurH9NH7BJ^R-_^_7OdP%k)1 zpt3{e^(NL3tL$0xN<0G6JzM-~o7~7oW9Ub3<)h$*kpH7iZh4}HSBIyu)FElCG&Y_5 z@ntS4P0ya5HBDD~f!BO70`7!tSR3-!mAU50S;YO>n?5AuqXjSnz78|}pOm@u!clai z8$t`BJ76$mfu;pb1H)iAjDV3a8ggI^XiCtR#)0q^$OKIZy+G4IK7CiiNk6CDwTeGQ zcpCKm`hdTr+$Gh2ny|6It=vuNw2Scj@B`Qld*Dgf3;Uo1R)hYbvB+=ZyFo?zpNQVa z`RWtu4+CHz=wZx-yFp(^D$$MLK{@Ct(?!s1qX%9O_#?0smcep(2sB%1x*bg$Js^4@ z^lfG!@bRW7)Q3RR&adI8pf6`XhZjM&rS7;qm9E6v+y1qhJ&CduL5HHC7WG( z(IxuRgt8TO!aEeD(VmGSbdmTnd=Z)^2ruW1DZlTn`)J#>#MwtZM&_O4qg?mHn%gu2 +>( + class_: C, + options?: Omit, +) { + return class MobXObservable extends (class_ as Class) { + declare ["constructor"]: typeof MobXObservable + + constructor(...args: any[]) { + super(...args) + + makeObservable(this, + mapValues(this.constructor.fields, () => observable), + options, + ) + } + } as C +} diff --git a/src/effect/schema/index.ts b/src/effect/schema/index.ts index d6234ea..391c95d 100644 --- a/src/effect/schema/index.ts +++ b/src/effect/schema/index.ts @@ -1,2 +1,3 @@ +export { MobXObservable } from "./MobXObservable" export { MutableClass } from "./MutableClass" export type { TMutableClass } from "./MutableClass"