From 1a89f8277e5b76623fbab5af8556166e9a3dd497 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 27 Jun 2024 13:07:33 +0200 Subject: [PATCH 1/8] Tests --- src/effect/schema/{class => }/tests.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) rename src/effect/schema/{class => }/tests.ts (83%) diff --git a/src/effect/schema/class/tests.ts b/src/effect/schema/tests.ts similarity index 83% rename from src/effect/schema/class/tests.ts rename to src/effect/schema/tests.ts index 859af98..25cc94a 100644 --- a/src/effect/schema/class/tests.ts +++ b/src/effect/schema/tests.ts @@ -1,8 +1,7 @@ import { Schema as S } from "@effect/schema" +import { pipe } from "effect" import { reaction, runInAction } from "mobx" -import { pipe } from "remeda" -import { MobXObservable } from "./MobXObservable" -import { MutableTaggedClass } from "./MutableTaggedClass" +import { MobXObservable, MutableTaggedClass } from "./class" class User extends pipe( -- 2.49.1 From 7a456129a1bd3d51196e33c64c357c6fdca4d5f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 27 Jun 2024 13:10:16 +0200 Subject: [PATCH 2/8] Tests --- src/effect/schema/tests.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/effect/schema/tests.ts b/src/effect/schema/tests.ts index 25cc94a..6ea33e9 100644 --- a/src/effect/schema/tests.ts +++ b/src/effect/schema/tests.ts @@ -1,15 +1,13 @@ import { Schema as S } from "@effect/schema" -import { pipe } from "effect" import { reaction, runInAction } from "mobx" import { MobXObservable, MutableTaggedClass } from "./class" -class User extends pipe( - MutableTaggedClass()("User", { - id: S.BigIntFromSelf, - role: S.Union(S.Literal("BasicUser"), S.Literal("Admin")), - }), - MobXObservable, +class User extends MutableTaggedClass()("User", { + id: S.BigIntFromSelf, + role: S.Union(S.Literal("BasicUser"), S.Literal("Admin")), +}).pipe( + MobXObservable ) {} const user1 = new User({ id: -1n, role: "BasicUser" }) -- 2.49.1 From f119d11e1ebfcec6f7b67e4c95ecaacd0219fc2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 27 Jun 2024 13:33:34 +0200 Subject: [PATCH 3/8] Jsonifiable work --- src/effect/schema/Jsonifiable.ts | 27 ++++++++++++++++++++------- src/effect/schema/tests.ts | 14 ++++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/effect/schema/Jsonifiable.ts b/src/effect/schema/Jsonifiable.ts index 26c19b2..058f829 100644 --- a/src/effect/schema/Jsonifiable.ts +++ b/src/effect/schema/Jsonifiable.ts @@ -2,12 +2,25 @@ import { Schema as S } from "@effect/schema" import type * as TF from "type-fest" -export function Jsonifiable< - A, I, R, - JsonifiableA extends I, JsonifiableI extends TF.Jsonifiable, JsonifiableR, ->( - schema: S.Schema, - jsonifiable: S.Schema, +// export function Jsonifiable< +// A, I, R, +// JsonifiableA extends I, JsonifiableI extends TF.Jsonifiable, JsonifiableR, +// >( +// schema: S.Schema, +// jsonifiable: S.Schema, +// ) { +// return jsonifiable.pipe(S.compose(schema)) +// } + +export function Jsonifiable( + schema: S.Schema, ) { - return jsonifiable.pipe(S.compose(schema)) + return < + JsonifiableA extends I, + JsonifiableI extends TF.Jsonifiable, + JsonifiableR, + >( + jsonifiable: S.Schema + ) => + jsonifiable.pipe(S.compose(schema)) } diff --git a/src/effect/schema/tests.ts b/src/effect/schema/tests.ts index 6ea33e9..139187d 100644 --- a/src/effect/schema/tests.ts +++ b/src/effect/schema/tests.ts @@ -1,5 +1,6 @@ import { Schema as S } from "@effect/schema" import { reaction, runInAction } from "mobx" +import { Jsonifiable } from "./Jsonifiable" import { MobXObservable, MutableTaggedClass } from "./class" @@ -10,6 +11,19 @@ class User extends MutableTaggedClass()("User", { MobXObservable ) {} +const JsonifiableUser = User.pipe( + Jsonifiable(S.Struct({ + ...User.fields, + id: S.BigInt, + })) +) + +const JsonifiableUser2 = Jsonifiable(User)(S.Struct({ + ...User.fields, + id: S.BigInt, +})) + + const user1 = new User({ id: -1n, role: "BasicUser" }) reaction(() => user1.id, id => console.log(`user1 id changed: ${ id }`)) -- 2.49.1 From 15769c3b2aee62aca8b9ccefc58f3479a01d955d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 27 Jun 2024 13:53:43 +0200 Subject: [PATCH 4/8] Jsonifiable work --- src/effect/schema/Jsonifiable.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/effect/schema/Jsonifiable.ts b/src/effect/schema/Jsonifiable.ts index 058f829..d1efbbb 100644 --- a/src/effect/schema/Jsonifiable.ts +++ b/src/effect/schema/Jsonifiable.ts @@ -12,15 +12,15 @@ import type * as TF from "type-fest" // return jsonifiable.pipe(S.compose(schema)) // } -export function Jsonifiable( - schema: S.Schema, +export function Jsonifiable< + JsonifiableA extends I, + JsonifiableI extends TF.Jsonifiable, + JsonifiableR, +>( + jsonifiable: S.Schema ) { - return < - JsonifiableA extends I, - JsonifiableI extends TF.Jsonifiable, - JsonifiableR, - >( - jsonifiable: S.Schema + return ( + schema: S.Schema ) => jsonifiable.pipe(S.compose(schema)) } -- 2.49.1 From 9e8d30394c0eac2bbe4cff3269e8aad1821d09d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 27 Jun 2024 14:37:16 +0200 Subject: [PATCH 5/8] Jsonifiable work --- src/effect/schema/Jsonifiable.ts | 21 +++++++++++++++++---- src/effect/schema/class/MobXObservable.ts | 12 +++++------- src/effect/schema/tests.ts | 9 ++------- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/effect/schema/Jsonifiable.ts b/src/effect/schema/Jsonifiable.ts index d1efbbb..14603f6 100644 --- a/src/effect/schema/Jsonifiable.ts +++ b/src/effect/schema/Jsonifiable.ts @@ -12,15 +12,28 @@ import type * as TF from "type-fest" // return jsonifiable.pipe(S.compose(schema)) // } -export function Jsonifiable< - JsonifiableA extends I, +export function Jsonifiable( + schema: S.Schema +) { + return < + JsonifiableA extends I, + JsonifiableI extends TF.Jsonifiable, + JsonifiableR, + >( + jsonifiable: S.Schema + ) => + jsonifiable.pipe(S.compose(schema)) +} + +export function Jsonifiable2< + JsonifiableA, JsonifiableI extends TF.Jsonifiable, JsonifiableR, >( jsonifiable: S.Schema ) { - return ( - schema: S.Schema + return ( + schema: S.Schema ) => jsonifiable.pipe(S.compose(schema)) } diff --git a/src/effect/schema/class/MobXObservable.ts b/src/effect/schema/class/MobXObservable.ts index cc47903..f967df0 100644 --- a/src/effect/schema/class/MobXObservable.ts +++ b/src/effect/schema/class/MobXObservable.ts @@ -3,18 +3,16 @@ import { makeObservable, observable, type CreateObservableOptions } from "mobx" import { mapValues } from "remeda" -interface MobXObservableInput { +interface MobXObservableA { new(...args: any[]): S.Struct.Type readonly fields: { readonly [K in keyof S.Struct.Fields]: S.Struct.Fields[K] } } -export function MobXObservable< - This extends MobXObservableInput ->( - class_: This, +export function MobXObservable( + self: A, options?: Omit, ) { - return class MobXObservable extends class_ { + return class MobXObservable extends self { declare ["constructor"]: typeof MobXObservable constructor(...args: any[]) { @@ -25,5 +23,5 @@ export function MobXObservable< options, ) } - } as This + } as A } diff --git a/src/effect/schema/tests.ts b/src/effect/schema/tests.ts index 139187d..93e28f4 100644 --- a/src/effect/schema/tests.ts +++ b/src/effect/schema/tests.ts @@ -1,6 +1,6 @@ import { Schema as S } from "@effect/schema" import { reaction, runInAction } from "mobx" -import { Jsonifiable } from "./Jsonifiable" +import { Jsonifiable2 } from "./Jsonifiable" import { MobXObservable, MutableTaggedClass } from "./class" @@ -12,17 +12,12 @@ class User extends MutableTaggedClass()("User", { ) {} const JsonifiableUser = User.pipe( - Jsonifiable(S.Struct({ + Jsonifiable2(S.Struct({ ...User.fields, id: S.BigInt, })) ) -const JsonifiableUser2 = Jsonifiable(User)(S.Struct({ - ...User.fields, - id: S.BigInt, -})) - const user1 = new User({ id: -1n, role: "BasicUser" }) reaction(() => user1.id, id => console.log(`user1 id changed: ${ id }`)) -- 2.49.1 From a49fa8763ff78757e2bb51a7f190eaec5a938206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 27 Jun 2024 17:59:55 +0200 Subject: [PATCH 6/8] Jsonifiable --- src/effect/schema/Jsonifiable.ts | 26 +++++++++++++------------- src/effect/schema/tests.ts | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/effect/schema/Jsonifiable.ts b/src/effect/schema/Jsonifiable.ts index 14603f6..e426a20 100644 --- a/src/effect/schema/Jsonifiable.ts +++ b/src/effect/schema/Jsonifiable.ts @@ -12,20 +12,20 @@ import type * as TF from "type-fest" // return jsonifiable.pipe(S.compose(schema)) // } -export function Jsonifiable( - schema: S.Schema -) { - return < - JsonifiableA extends I, - JsonifiableI extends TF.Jsonifiable, - JsonifiableR, - >( - jsonifiable: S.Schema - ) => - jsonifiable.pipe(S.compose(schema)) -} +// export function Jsonifiable( +// schema: S.Schema +// ) { +// return < +// JsonifiableA extends I, +// JsonifiableI extends TF.Jsonifiable, +// JsonifiableR, +// >( +// jsonifiable: S.Schema +// ) => +// jsonifiable.pipe(S.compose(schema)) +// } -export function Jsonifiable2< +export function Jsonifiable< JsonifiableA, JsonifiableI extends TF.Jsonifiable, JsonifiableR, diff --git a/src/effect/schema/tests.ts b/src/effect/schema/tests.ts index 93e28f4..0e9f692 100644 --- a/src/effect/schema/tests.ts +++ b/src/effect/schema/tests.ts @@ -1,6 +1,6 @@ import { Schema as S } from "@effect/schema" import { reaction, runInAction } from "mobx" -import { Jsonifiable2 } from "./Jsonifiable" +import { Jsonifiable } from "./Jsonifiable" import { MobXObservable, MutableTaggedClass } from "./class" @@ -12,7 +12,7 @@ class User extends MutableTaggedClass()("User", { ) {} const JsonifiableUser = User.pipe( - Jsonifiable2(S.Struct({ + Jsonifiable(S.Struct({ ...User.fields, id: S.BigInt, })) -- 2.49.1 From 6bf3c64f1bf9f5604110fd95a49fc7e35fd3a964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 27 Jun 2024 18:28:13 +0200 Subject: [PATCH 7/8] Kind --- src/effect/schema/Kind.ts | 9 +++++++++ src/effect/schema/index.ts | 1 + 2 files changed, 10 insertions(+) create mode 100644 src/effect/schema/Kind.ts diff --git a/src/effect/schema/Kind.ts b/src/effect/schema/Kind.ts new file mode 100644 index 0000000..3f6748a --- /dev/null +++ b/src/effect/schema/Kind.ts @@ -0,0 +1,9 @@ +import { Schema as S } from "@effect/schema" + + +export function Kind(kind: Kind) { + return S.withConstructorDefault( + S.propertySignature(S.Literal(kind)), + () => kind, + ) +} diff --git a/src/effect/schema/index.ts b/src/effect/schema/index.ts index 2275c31..e4b52a0 100644 --- a/src/effect/schema/index.ts +++ b/src/effect/schema/index.ts @@ -1,2 +1,3 @@ export { Jsonifiable } from "./Jsonifiable" +export { Kind } from "./Kind" export { Tag } from "./Tag" -- 2.49.1 From 575672b461fead920fd86a17b8319db84e4ae577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 27 Jun 2024 18:44:46 +0200 Subject: [PATCH 8/8] Dependencies upgrade --- bun.lockb | Bin 154880 -> 154881 bytes package.json | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bun.lockb b/bun.lockb index f65e392d0ba03dd9f5d7dfa9159ff12223f237cc..168faa40218c76207a86d4ecb9240cb9f463139d 100755 GIT binary patch delta 558 zcmV+}0@3||x(R{036L%!lLg}wS6_CFMIobPPucw~PYP$L>&CioJFc$)6z4QEaj{Ry z3<=M7000UA0Du;=Aq__jlPD`NvzQuCVgV78(HSR`kQ)fI7<~`{lPDrE4Uu;M06qW! zfB*mh07R1^U@Mc58wd&6cK`rA004jklVMUf0Uxv3eoPub{&2mP3SU=_XMEmg$t-5LF@nyrn#6{Deov%*@Y3uV$-;4?JopX{t^Wfzs01{w)W9X507^SQkVVrjNX%Uy5IvLM*000UA0DyEEGUfV44!Z&YUNbH+IW91lAL0QR1T_Ev7PmX% w0j&W6X_x8a0p|fRx6$MQmvsR*w`p1eGXa;h?*Sl}yjubt0x>eT+FJr90qmLNi~s-t delta 560 zcmV-00?++{x(R@~36L%!%EidyOaIsIx z3<=J6000UA0Du*9^S_b7W53Y~+;`t56H7x8~M|2uea480eAsG%WWVp_sptpCQ!chP0Oy{mJsatX7Ljj{uM3i z^2x-sJyvWbwI?2U8kt0a-RMbm_I2-Dmi{6Fas}$ZwmyIF;7(nE>0tPXM5}0jx zY+=wyo$b<8l`A~=E7^RJQb?mitQbP=%@_*0^US6tzG|{iobSgUs^cJ9k&{$GXCpZ= ztSGnTA^|gl8aV)EW@cq$bN~QfAm5aM%*D3^0bVmMG%hliGNu7E0XCOsrU9A)FaVbw zrvV$69;X2q0Wh~WrvcA88P0bA015yAfOHu$<@!bry8;1TGcGYVE;5%N;sF>0G5`P- yw>#nitpNdOm+9jH=K(Oc(c}S_bpbZFX<7m^0hf|V0w9;XTLK*cIk($e0ww{iZ0uVA diff --git a/package.json b/package.json index f066f24..808c720 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@thilawyn/thilalib", - "version": "0.1.3", + "version": "0.1.4", "type": "module", "files": [ "./dist" @@ -46,11 +46,11 @@ "clean:node": "rm -rf node_modules" }, "dependencies": { - "remeda": "^2.2.0", + "remeda": "^2.2.1", "type-fest": "^4.20.1" }, "devDependencies": { - "bun-types": "^1.1.16", + "bun-types": "^1.1.17", "npm-check-updates": "^16.14.20", "npm-sort": "^0.0.4", "tsup": "^8.1.0", @@ -58,8 +58,8 @@ "typescript": "^5.5.2" }, "optionalDependencies": { - "@effect/schema": "^0.68.9", - "effect": "^3.4.2", + "@effect/schema": "^0.68.12", + "effect": "^3.4.5", "mobx": "^6.12.4" } } -- 2.49.1