effect-orpc router.
router.ts
What to copy
Copy this shape when you need:- one base Effect layer
- one reusable procedure builder
- direct invocation
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
A small router with one Effect procedure.
effect-orpc router.
import { Context, Effect, Layer } from "effect";
import { eos } from "effect-orpc";
import * as z from "zod";
class Greeter extends Context.Service<
Greeter,
{ readonly greet: (name: string) => Effect.Effect<string> }
>()("Greeter") {}
const GreeterLive = Layer.succeed(Greeter, {
greet: (name) => Effect.succeed(`Hello, ${name}!`),
});
const procedure = eos.provide(GreeterLive);
export const router = {
greet: procedure
.input(z.object({ name: z.string() }))
.output(z.string())
.effect(function* ({ input }) {
const greeter = yield* Greeter;
return yield* greeter.greet(input.name);
}),
};
const greet = router.greet.callable();
console.log(await greet({ name: "Ada" }));
Was this page helpful?