Issues with lifting dependencies in Effect Typescript library

I wanted to "lift" my PgDB dependency into a higher scope so that each rpc route isn't responsible for importing it, eg
export const appRouter = RpcRouter.make(
  Rpc.effect(PlaygroundList, () =>
    Effect.gen(function* () {
      const db = yield* PgDB;
      return yield* db.selectFrom("app_public.playgrounds").selectAll();
    }).pipe(Effect.mapError((e) => e.toString())),
  ),
);
is now
export const appRouter = Effect.gen(function* () {
  const db = yield* PgDB;
  return RpcRouter.make(
    Rpc.effect(PlaygroundList, () =>
      db
        .selectFrom("app_public.playgrounds")
        .selectAll()
        .pipe(Effect.mapError((e) => e.toString())),
    ),
  );
});
but I can't figure out how to make the consumer happy:
  HttpRouter.post("/rpc", toHttpApp(appRouter)),
                       // ^?  Type 'Effect<RpcRouter<PlaygroundList, never>, never, PgDB>' is missing the following properties from type 'RpcRouter<any, any>': rpcs, [TypeId] [2769]
NodeRuntime.runMain(Layer.launch(HttpLive));
                 // ^? Argument of type 'Effect<never, SqlError | ConfigError | ServeError, unknown>' is not assignable to parameter of type 'Effect<never, SqlError | ConfigError | ServeError, never>'.
Was this page helpful?