Examples
Examples and checks
Section titled “Examples and checks”The Effect entrypoint takes the same ports as Effect values:
import * as Effect from "effect/Effect";import { make } from "@fungi.computer/bird-dog/effect";
const room = await Effect.runPromise( make({ outbox: { put: () => Effect.void, read: () => Effect.succeed(undefined), list: () => Effect.succeed([]), delete: () => Effect.void, }, post: () => Effect.succeed(true), scheduleWake: () => Effect.void, now: () => Date.now(), }),);await Effect.runPromise(room.drainOutbox());Use the schemas to parse mail that arrives from outside your process:
import * as Schema from "effect/Schema";import { BirdDogMailSchema } from "@fungi.computer/bird-dog/effect";
const mail = Schema.decodeUnknownSync(BirdDogMailSchema)(JSON.parse(body));The package tests cover job translation, payload decoding, replayed settlement after a restart, quiet cancellation, retry re-arming after reopen, bounded paging past full pages, retry exhaustion, receipt walks, wake failure after fan-out, and parity between the Promise and Effect schemas. From the package directory:
pnpm test