import { Context, Effect, Layer, Option } from "effect";
import { Schema } from "@effect/schema";
class Message extends Context.Tag("Message")<Message, string>() {}
const msg = Layer.succeed(Message, Message.of("Hello, World!"));
const schema = Schema.String.annotations({
message: () =>
Effect.map(
Effect.serviceOption(Message),
Option.getOrElse(() => "default")
)
});
const result = Schema.decodeUnknown(schema)(1).pipe(
Effect.map(() => Effect.void),
Effect.flip,
Effect.map((err) => err.message),
Effect.provide(msg),
Effect.runSync
);
console.log(result); // "default"
import { Context, Effect, Layer, Option } from "effect";
import { Schema } from "@effect/schema";
class Message extends Context.Tag("Message")<Message, string>() {}
const msg = Layer.succeed(Message, Message.of("Hello, World!"));
const schema = Schema.String.annotations({
message: () =>
Effect.map(
Effect.serviceOption(Message),
Option.getOrElse(() => "default")
)
});
const result = Schema.decodeUnknown(schema)(1).pipe(
Effect.map(() => Effect.void),
Effect.flip,
Effect.map((err) => err.message),
Effect.provide(msg),
Effect.runSync
);
console.log(result); // "default"