summaryrefslogtreecommitdiff
path: root/server/hono_proxy.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/hono_proxy.ts')
-rw-r--r--server/hono_proxy.ts71
1 files changed, 0 insertions, 71 deletions
diff --git a/server/hono_proxy.ts b/server/hono_proxy.ts
deleted file mode 100644
index f729819..0000000
--- a/server/hono_proxy.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import {
- BaseRequest,
- Either,
- IEither,
- LogMetricTraceable,
- Metric,
- PenguenoRequest,
- Server,
- Signals,
- TraceUtil,
-} from '@emprespresso/pengueno';
-
-import { serve, ServerType } from '@hono/node-server';
-import { Hono } from 'hono';
-
-const AppLifetimeMetric = Metric.fromName('HonoAppLifetime').asResult();
-const AppRequestMetric = Metric.fromName('HonoAppRequest');
-
-export class HonoProxy {
- private readonly app = LogMetricTraceable.of(new Hono())
- .flatMap(TraceUtil.withTrace(`AppId = ${crypto.randomUUID()}`))
- .flatMap(TraceUtil.withMetricTrace(AppLifetimeMetric));
-
- constructor(private readonly server: Server) {}
-
- public async serve(port: number, hostname: string): Promise<IEither<Error, void>> {
- return this.app
- .map((tApp) =>
- Either.fromFailable<Error, ServerType>(() => {
- const app = tApp.get();
- app.all('*', async (c) =>
- tApp
- .flatMap(TraceUtil.withMetricTrace(AppRequestMetric))
- .move(<BaseRequest>c.req)
- .flatMap((tRequest) => PenguenoRequest.from(tRequest))
- .map((req) => this.server.serve(req))
- .map(
- TraceUtil.promiseify((tResponse) => {
- tResponse.trace.trace(AppRequestMetric.count.withValue(1.0));
- return new Response(tResponse.get().body(), tResponse.get());
- }),
- )
- .get(),
- );
- return serve({
- fetch: (_r) => app.fetch(_r),
- port,
- hostname,
- });
- }),
- )
- .peek(TraceUtil.traceResultingEither())
- .peek((tServe) =>
- tServe
- .get()
- .mapRight(() =>
- tServe.trace.trace(
- `haii im still listening at http://${hostname}:${port} ~uwu dont think i forgot`,
- ),
- ),
- )
- .map((tEitherServer) =>
- tEitherServer
- .get()
- .mapRight((server) => tEitherServer.move(server))
- .flatMapAsync((tServer) => Signals.awaitClose(tServer)),
- )
- .peek(TraceUtil.promiseify(TraceUtil.traceResultingEither(AppLifetimeMetric)))
- .get();
- }
-}