import { Effect } from "effect";
import { MeridianClient } from "meridian-sdk";
await Effect.runPromise(
MeridianClient.create(config).pipe(
Effect.catchTag("TokenExpiredError", (e) =>
Effect.die(`Token expired at ${new Date(e.expiredAt).toISOString()}`)
),
Effect.catchTag("TokenParseError", () =>
Effect.die("Invalid token — check MERIDIAN_TOKEN")
),
Effect.flatMap((client) =>
client.http.getCrdt("my-room", "gc:views").pipe(
Effect.catchTag("HttpError", (e) =>
Effect.succeed(`Server error ${e.status}: ${e.body.message}`)
),
Effect.catchTag("NetworkError", (e) =>
Effect.succeed(`Network error: ${e.message}`)
),
)
),
)
);