© 2026 Hedgehog Software, LLC
import { Schema as S } from '@effect/schema'; import * as Sentry from '@sentry/serverless'; import { Effect, pipe } from 'effect'; import { effectToPromise } from './effectToPromise'; export const validateSchemaAsPromise = <T>(schema: S.Schema<T>) => (data: unknown): Promise<T> => pipe( Effect.succeed(data), Effect.tryMap({ try: (_) => S.decodeUnknownSync(schema)(_, { errors: 'all' }), catch: (e) => { console.error(e); Sentry.captureException(e, { tags: { schema: schema.name, }, }); return new Error('Invalid schema'); }, }), effectToPromise, );
export class Foo extends S.Class<Foo>('Foo')({ bar: S.String }) {}
S.decodeUnknownSync
schema.name
TS2339: Property name does not exist on type Schema<T, T, never>
schema
name