Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 72264e2

Browse files
committedNov 10, 2024
let's make the scoping part of the consumers instead of the Events service.
1 parent caa9b78 commit 72264e2

File tree

5 files changed

+15
-16
lines changed

5 files changed

+15
-16
lines changed
 

‎api/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
"@azure/cosmos": "^4.1.1",
6060
"@azure/service-bus": "^7.9.5",
6161
"@azure/storage-blob": "^12.25.0",
62-
"@effect-app/infra": "2.24.1",
62+
"@effect-app/infra": "2.25.0",
6363
"effect-app": "^2.13.1",
6464
"@effect/platform": "^0.69.20",
6565
"@effect/opentelemetry": "^0.39.13",

‎api/src/lib/middleware/events.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { makeSSE } from "@effect-app/infra/api/middlewares"
22
import { Events } from "api/services.js"
3-
import { Effect, Stream } from "effect-app"
3+
import { Effect } from "effect-app"
44
import { ClientEvents } from "resources.js"
55

6-
export const makeEvents = Events.pipe(
7-
Effect.map((events) => makeSSE(Stream.unwrapScoped(events.stream), ClientEvents))
8-
)
6+
export const makeEvents = Events
7+
.use((_) => _.stream)
8+
.pipe(
9+
Effect.map(makeSSE(ClientEvents))
10+
)

‎api/src/router.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Events } from "./services.js"
77

88
class RootAppRouter extends HttpRouter.Tag("RootAppRouter")<RootAppRouter>() {}
99
const AllRoutes = RootAppRouter
10-
.use((router) =>
10+
.useScoped((router) =>
1111
Effect.gen(function*() {
1212
const cfg = yield* BaseConfig
1313
yield* router.get("/events", yield* MW.makeEvents)

‎api/src/services/Events.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@ import type { ClientEvents } from "resources.js"
55

66
export class Events extends Effect.Service<Events>()("Events", {
77
accessors: true,
8-
scoped: Effect.gen(function*() {
8+
effect: Effect.gen(function*() {
99
const q = yield* PubSub.unbounded<{ evt: ClientEvents; namespace: string }>()
10-
// we would prefer the http server interrupting the stream processing as part of its shutdown
11-
// but that's not happening, and this is the next best thing
12-
yield* Effect.addFinalizer(() => q.shutdown)
1310
const svc = {
1411
publish: (...evts: NonEmptyReadonlyArray<ClientEvents>) =>
1512
storeId.pipe(FiberRef.get, Effect.andThen((namespace) => q.offerAll(evts.map((evt) => ({ evt, namespace }))))),

‎pnpm-lock.yaml

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.