// server.ts
import { HttpMiddleware, HttpRouter } from '@effect/platform';
import { BunHttpServer, BunRuntime } from '@effect/platform-bun';
import { RpcSerialization, RpcServer } from '@effect/rpc';
import { Layer } from 'effect';
import { UsersLive } from './handlers.js';
import { UserRpcs } from './request.js';
console.log('Starting RPC server');
// Create the RPC server layer
const RpcLayer = RpcServer.layer(UserRpcs).pipe(Layer.provide(UsersLive));
console.log('RPC server layer created');
// Choose the protocol and serialization format
const HttpProtocol = RpcServer.layerProtocolHttp({
path: '/rpc',
}).pipe(Layer.provide(RpcSerialization.layerJson));
console.log('HTTP protocol layer created');
// Create the main server layer with CORS and logging
const Main = HttpRouter.Default.serve(HttpMiddleware.cors()).pipe(
Layer.provide(RpcLayer),
Layer.provide(HttpProtocol),
Layer.provide(BunHttpServer.layer({ port: process.env.PORT ? parseInt(process.env.PORT) : 3001 })),
);
console.log('Main layer created');
BunRuntime.runMain(Layer.launch(Main));
console.log('RPC server started');
// server.ts
import { HttpMiddleware, HttpRouter } from '@effect/platform';
import { BunHttpServer, BunRuntime } from '@effect/platform-bun';
import { RpcSerialization, RpcServer } from '@effect/rpc';
import { Layer } from 'effect';
import { UsersLive } from './handlers.js';
import { UserRpcs } from './request.js';
console.log('Starting RPC server');
// Create the RPC server layer
const RpcLayer = RpcServer.layer(UserRpcs).pipe(Layer.provide(UsersLive));
console.log('RPC server layer created');
// Choose the protocol and serialization format
const HttpProtocol = RpcServer.layerProtocolHttp({
path: '/rpc',
}).pipe(Layer.provide(RpcSerialization.layerJson));
console.log('HTTP protocol layer created');
// Create the main server layer with CORS and logging
const Main = HttpRouter.Default.serve(HttpMiddleware.cors()).pipe(
Layer.provide(RpcLayer),
Layer.provide(HttpProtocol),
Layer.provide(BunHttpServer.layer({ port: process.env.PORT ? parseInt(process.env.PORT) : 3001 })),
);
console.log('Main layer created');
BunRuntime.runMain(Layer.launch(Main));
console.log('RPC server started');