| 1 | import * as Context from "effect/Context"; |
| 2 | import type * as Effect from "effect/Effect"; |
| 3 | import * as Layer from "effect/Layer"; |
| 4 | import type * as Stream from "effect/Stream"; |
| 5 | |
| 6 | import type { NetworkStatus } from "./model.ts"; |
| 7 | |
| 8 | export class Connectivity extends Context.Service< |
| 9 | Connectivity, |
| 10 | { |
| 11 | readonly status: Effect.Effect<NetworkStatus>; |
| 12 | readonly changes: Stream.Stream<NetworkStatus>; |
| 13 | } |
| 14 | >()("@t3tools/client-runtime/connection/connectivity") {} |
| 15 | |
| 16 | const make = (service: Connectivity["Service"]) => Connectivity.of(service); |
| 17 | |
| 18 | export const layer = (service: Connectivity["Service"]) => |
| 19 | Layer.succeed(Connectivity, make(service)); |