0.1.11 (#12)
All checks were successful
Publish / publish (push) Successful in 15s
Lint / lint (push) Successful in 11s

Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: #12
This commit was merged in pull request #12.
This commit is contained in:
Julien Valverdé
2024-08-20 22:17:43 +02:00
parent cfb3d20d44
commit 95db23b2be
8 changed files with 83 additions and 17 deletions

View File

@@ -1,13 +0,0 @@
import { Schema } from "@effect/schema"
import type { Jsonifiable as TJsonifiable } from "type-fest"
export const Jsonifiable = <
JsonifiableA,
JsonifiableI extends TJsonifiable,
JsonifiableR,
>(
jsonifiable: Schema.Schema<JsonifiableA, JsonifiableI, JsonifiableR>
) =>
<A, R>(schema: Schema.Schema<A, JsonifiableA, R>) =>
jsonifiable.pipe(Schema.compose(schema))

View File

@@ -0,0 +1,13 @@
import { Schema } from "@effect/schema"
import type { JsonValue } from "type-fest"
export const composeJsonifiable = <
JsonifiableA,
JsonifiableI extends JsonValue,
JsonifiableR,
>(
jsonifiableSchema: Schema.Schema<JsonifiableA, JsonifiableI, JsonifiableR>
) =>
<A, R>(decodedSchema: Schema.Schema<A, JsonifiableA, R>) =>
Schema.compose(jsonifiableSchema, decodedSchema)

View File

@@ -0,0 +1,13 @@
import type { Schema } from "@effect/schema"
import type { JsonValue } from "type-fest"
import type { PrismaJson } from "../Types"
/**
* Takes a schema of which the encoded value satisfies type-fest's `JsonValue` and returns the same schema with Prisma's `JsonValue` as its encoded type instead.
* This allows you use to use jsonifiable schemas to strongly type `Json` database fields in Prisma.
*
* This is needed because Prisma's `JsonValue` is poorly implemented and does not work well with some types, such as readonly arrays.
*/
export const encodedAsPrismaJsonValue = <A, E extends JsonValue, R>(schema: Schema.Schema<A, E, R>) =>
schema as unknown as Schema.Schema<A, PrismaJson.JsonValue, R>

View File

@@ -1,6 +1,7 @@
export * from "./Class"
export * from "./composeJsonifiable"
export * from "./DateTime"
export * from "./Jsonifiable"
export * from "./encodedAsPrismaJsonValue"
export * from "./Kind"
export * as MobX from "./MobX"
export * from "./MutableClass"