t3-code-android-nightly/.repos/alchemy-effect/packages/alchemy/test/Fly/fixtures/sprite.ts
Julius Marminge 6f9cea00ae
chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (#16170)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:22:30 -07:00

41 lines
1.2 KiB
TypeScript

import * as Fly from "@/Fly";
import * as Effect from "effect/Effect";
import * as FileSystem from "effect/FileSystem";
import { HttpServerRequest } from "effect/http/HttpServerRequest";
import * as HttpServerResponse from "effect/http/HttpServerResponse";
/**
* HTTP Sprite: writes a marker during init and serves it back.
*/
export default class Box extends Fly.Sprite<Box>()(
"Box",
{
main: import.meta.url,
urlAuth: "public",
port: 3000,
},
Effect.gen(function* () {
const fs = yield* FileSystem.FileSystem;
return {
fetch: Effect.gen(function* () {
const request = yield* HttpServerRequest;
const url = new URL(request.url, "http://sprite");
if (url.pathname === "/health") {
return yield* HttpServerResponse.json({ ok: true });
}
yield* fs.makeDirectory("/tmp", { recursive: true }).pipe(Effect.orDie);
yield* fs
.writeFileString("/tmp/alchemy-sprite.txt", "hello-from-sprite")
.pipe(Effect.orDie);
const text = yield* fs
.readFileString("/tmp/alchemy-sprite.txt")
.pipe(Effect.orDie);
return yield* HttpServerResponse.json({
ok: true,
text,
});
}),
};
}),
) {}