1import * as Cloudflare from "@/Cloudflare";
2import * as Effect from "effect/Effect";
3import { HttpServerRequest } from "effect/http/HttpServerRequest";
4import * as HttpServerResponse from "effect/http/HttpServerResponse";
5import { ExternalContainerObject } from "./object.ts";
6
7export default class ExternalContainerWorker extends Cloudflare.Worker<ExternalContainerWorker>()(
8 "ExternalContainerWorker",
9 {
10 main: import.meta.url,
11 },
12 Effect.gen(function* () {
13 const objects = yield* ExternalContainerObject;
14
15 return {
16 fetch: Effect.gen(function* () {
17 const request = yield* HttpServerRequest;
18 const url = new URL(request.url, "http://x");
19
20 if (url.pathname === "/hello") {
21 const text = yield* objects
22 .getByName("default")
23 .hello()
24 .pipe(Effect.orDie);
25 return HttpServerResponse.text(text);
26 }
27
28 return HttpServerResponse.text("ok");
29 }),
30 };
31 }),
32) {}