Effect CommunityEC
Effect Community•4w ago•
3 replies
leke

Simplifying Middleware Application Based on Environment

Any smarter or simpler way of doing this?

const ServerLive = BunHttpServer.layerConfig(config.pipe(Config.map(({ PORT }) => ({ port: PORT }))));

const devMiddlewares = (handler: typeof router) => handler.pipe(corsMiddleware, HttpMiddleware.logger);

const middlewares = (handler: typeof router) => handler.pipe(corsMiddleware);

const HttpLive = Layer.unwrapEffect(
  Effect.gen(function* () {
    const { NODE_ENV } = yield* config;

    const applyMiddlewares = NODE_ENV === "development" ? devMiddlewares : middlewares;

    const handler = applyMiddlewares(router);

    return handler.pipe(
      HttpServer.serve(),
      HttpServer.withLogAddress,
      Layer.provide(Layer.mergeAll(NexusLive, ServerLive)),
    );
  }),
);

BunRuntime.runMain(Layer.launch(HttpLive), { disablePrettyLogger: true });


Basically I wanna mount the HttpMiddleware.logger middleware only locally, cause cloud run has their own http logger.
Was this page helpful?