0.1.4 #5

Merged
Thilawyn merged 8 commits from next into master 2024-06-27 18:47:12 +02:00
2 changed files with 34 additions and 7 deletions
Showing only changes of commit f119d11e1e - Show all commits

View File

@@ -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,
>(
// export function Jsonifiable<
// A, I, R,
// JsonifiableA extends I, JsonifiableI extends TF.Jsonifiable, JsonifiableR,
// >(
// schema: S.Schema<A, I, R>,
// jsonifiable: S.Schema<JsonifiableA, JsonifiableI, JsonifiableR>,
// ) {
// return jsonifiable.pipe(S.compose(schema))
// }
export function Jsonifiable<A, I, R>(
schema: S.Schema<A, I, R>,
jsonifiable: S.Schema<JsonifiableA, JsonifiableI, JsonifiableR>,
) {
return jsonifiable.pipe(S.compose(schema))
return <
JsonifiableA extends I,
JsonifiableI extends TF.Jsonifiable,
JsonifiableR,
>(
jsonifiable: S.Schema<JsonifiableA, JsonifiableI, JsonifiableR>
) =>
jsonifiable.pipe(S.compose(schema))
}

View File

@@ -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>()("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 }`))