From d48f20a59d593840214dae424d85aef315bfffd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 14 Apr 2025 02:49:50 +0200 Subject: [PATCH] Schema guards --- packages/extension-form/src/internal/guards.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 packages/extension-form/src/internal/guards.ts diff --git a/packages/extension-form/src/internal/guards.ts b/packages/extension-form/src/internal/guards.ts new file mode 100644 index 0000000..73fd7c5 --- /dev/null +++ b/packages/extension-form/src/internal/guards.ts @@ -0,0 +1,14 @@ +import { Array, Predicate, Record, Schema } from "effect" + + +export const isStruct = (u: unknown): u is Schema.Struct => ( + 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$ => ( + Schema.isSchema(u) && + Predicate.hasProperty(u, "fields") && Predicate.isObject(u.fields) && Record.isEmptyRecord(u.fields) && + Predicate.hasProperty(u, "record") && Array.isArray(u.record) +)