Schema guards
All checks were successful
Lint / lint (push) Successful in 14s

This commit is contained in:
Julien Valverdé
2025-04-14 02:49:50 +02:00
parent b7b4abcbe2
commit d48f20a59d

View File

@@ -0,0 +1,14 @@
import { Array, Predicate, Record, Schema } from "effect"
export const isStruct = (u: unknown): u is Schema.Struct<any> => (
Schema.isSchema(u) &&
Predicate.hasProperty(u, "fields") && Predicate.isObject(u.fields) &&
Predicate.hasProperty(u, "record") && Array.isArray(u.record) && Array.isEmptyArray(u.record)
)
export const isRecord = (u: unknown): u is Schema.Record$<any, any> => (
Schema.isSchema(u) &&
Predicate.hasProperty(u, "fields") && Predicate.isObject(u.fields) && Record.isEmptyRecord(u.fields) &&
Predicate.hasProperty(u, "record") && Array.isArray(u.record)
)