opinionated-machine 6.10.1 → 6.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +283 -1
  2. package/dist/lib/resolverFunctions.d.ts +14 -0
  3. package/dist/lib/resolverFunctions.js +14 -2
  4. package/dist/lib/resolverFunctions.js.map +1 -1
  5. package/dist/lib/routes/fastifyRouteTypes.d.ts +23 -0
  6. package/dist/lib/routes/fastifyRouteTypes.js.map +1 -1
  7. package/dist/lib/routes/fastifyRouteUtils.d.ts +3 -0
  8. package/dist/lib/routes/fastifyRouteUtils.js +20 -0
  9. package/dist/lib/routes/fastifyRouteUtils.js.map +1 -1
  10. package/dist/lib/sse/AbstractSSEController.d.ts +142 -1
  11. package/dist/lib/sse/AbstractSSEController.js +224 -0
  12. package/dist/lib/sse/AbstractSSEController.js.map +1 -1
  13. package/dist/lib/sse/index.d.ts +2 -1
  14. package/dist/lib/sse/index.js +3 -1
  15. package/dist/lib/sse/index.js.map +1 -1
  16. package/dist/lib/sse/rooms/SSERoomBroadcaster.d.ts +79 -0
  17. package/dist/lib/sse/rooms/SSERoomBroadcaster.js +113 -0
  18. package/dist/lib/sse/rooms/SSERoomBroadcaster.js.map +1 -0
  19. package/dist/lib/sse/rooms/SSERoomManager.d.ts +134 -0
  20. package/dist/lib/sse/rooms/SSERoomManager.js +234 -0
  21. package/dist/lib/sse/rooms/SSERoomManager.js.map +1 -0
  22. package/dist/lib/sse/rooms/adapters/InMemoryAdapter.d.ts +18 -0
  23. package/dist/lib/sse/rooms/adapters/InMemoryAdapter.js +35 -0
  24. package/dist/lib/sse/rooms/adapters/InMemoryAdapter.js.map +1 -0
  25. package/dist/lib/sse/rooms/defineRoom.d.ts +31 -0
  26. package/dist/lib/sse/rooms/defineRoom.js +33 -0
  27. package/dist/lib/sse/rooms/defineRoom.js.map +1 -0
  28. package/dist/lib/sse/rooms/index.d.ts +5 -0
  29. package/dist/lib/sse/rooms/index.js +7 -0
  30. package/dist/lib/sse/rooms/index.js.map +1 -0
  31. package/dist/lib/sse/rooms/types.d.ts +122 -0
  32. package/dist/lib/sse/rooms/types.js +2 -0
  33. package/dist/lib/sse/rooms/types.js.map +1 -0
  34. package/dist/lib/sse/sseTypes.d.ts +23 -0
  35. package/dist/lib/sse/sseTypes.js +7 -1
  36. package/dist/lib/sse/sseTypes.js.map +1 -1
  37. package/package.json +6 -2
package/README.md CHANGED
@@ -49,6 +49,15 @@ Very opinionated DI framework for fastify, built on top of awilix
49
49
  - [Testing SSE Controllers](#testing-sse-controllers)
50
50
  - [SSESessionSpy API](#ssesessionspy-api)
51
51
  - [Session Monitoring](#session-monitoring)
52
+ - [SSE Rooms](#sse-rooms)
53
+ - [Enabling Rooms](#enabling-rooms)
54
+ - [Session Room Operations](#session-room-operations)
55
+ - [Broadcasting to Rooms](#broadcasting-to-rooms)
56
+ - [Room Broadcaster (Decoupled Broadcasting)](#room-broadcaster-decoupled-broadcasting)
57
+ - [Room Name Helpers](#room-name-helpers)
58
+ - [Room Query Methods](#room-query-methods)
59
+ - [Auto-Leave on Disconnect](#auto-leave-on-disconnect)
60
+ - [Multi-Node Deployments with Redis](#multi-node-deployments-with-redis)
52
61
  - [SSE Test Utilities](#sse-test-utilities)
53
62
  - [Quick Reference](#quick-reference)
54
63
  - [Inject vs HTTP Comparison](#inject-vs-http-comparison)
@@ -350,7 +359,8 @@ s3Client: asSingletonFunction(
350
359
  You can use concrete types instead of indexed access when the return type is dynamic or difficult to spell out explicitly. Because concrete types don't reference `InferModuleDependencies`, there is no circularity, so TypeScript can infer the return type for you:
351
360
 
352
361
  ```ts
353
- // Return type inferred automatically — no explicit annotation needed
362
+ // Return type inferred automatically — Config is a concrete type that doesn't
363
+ // reference InferModuleDependencies, so there's no circular reference.
354
364
  redisConfig: asSingletonFunction(
355
365
  ({ config }: { config: Config }) => {
356
366
  return config.getRedisConfig()
@@ -1464,6 +1474,278 @@ if (this.hasConnectionSpy()) {
1464
1474
  }
1465
1475
  ```
1466
1476
 
1477
+ ### SSE Rooms
1478
+
1479
+ SSE Rooms provide Socket.IO-style room functionality for grouping connections and broadcasting messages to specific groups. Common use cases include:
1480
+
1481
+ - **Multi-tenant systems** - Broadcast announcements to all users within an organization or team
1482
+ - **Live dashboards** - Multiple users viewing the same dashboard join a room to receive real-time metric updates
1483
+ - **Stock tickers** - Users subscribe to specific symbols; each symbol is a room receiving price updates
1484
+ - **Sports/game scores** - Users following specific matches join those rooms for live score updates
1485
+
1486
+ #### Enabling Rooms
1487
+
1488
+ Enable rooms by passing a `rooms` configuration to `asSSEControllerClass`:
1489
+
1490
+ ```ts
1491
+ import { AbstractSSEController, asSSEControllerClass, buildHandler } from 'opinionated-machine'
1492
+
1493
+ class DashboardSSEController extends AbstractSSEController<typeof contracts> {
1494
+ public static contracts = { dashboardStream: dashboardStreamContract } as const
1495
+
1496
+ constructor(deps: Dependencies, sseConfig?: SSEControllerConfig) {
1497
+ super(deps, sseConfig)
1498
+ }
1499
+
1500
+ // ... handlers
1501
+ }
1502
+
1503
+ // In your module — distributed mode (production)
1504
+ // Resolves `sseRoomAdapter` from the DI cradle at construction time
1505
+ resolveControllers(diOptions: DependencyInjectionOptions) {
1506
+ return {
1507
+ dashboardController: asSSEControllerClass(DashboardSSEController, {
1508
+ diOptions,
1509
+ rooms: true,
1510
+ }),
1511
+ }
1512
+ }
1513
+ ```
1514
+
1515
+ ```ts
1516
+ // In your module — local mode (dev/test)
1517
+ // Uses InMemoryAdapter, no DI lookup required
1518
+ resolveControllers(diOptions: DependencyInjectionOptions) {
1519
+ return {
1520
+ dashboardController: asSSEControllerClass(DashboardSSEController, {
1521
+ diOptions,
1522
+ rooms: { distributed: false },
1523
+ }),
1524
+ }
1525
+ }
1526
+ ```
1527
+
1528
+ The `rooms` option accepts:
1529
+ - `true` — shorthand for `{ distributed: true }`. Resolves `sseRoomAdapter` from the DI container (awilix throws if not registered).
1530
+ - `{ distributed: true }` — same as `true`. Production-optimized: adapter comes from DI.
1531
+ - `{ distributed: false }` — uses the built-in InMemoryAdapter with no DI lookup. Ideal for dev/test environments.
1532
+
1533
+ #### Session Room Operations
1534
+
1535
+ When rooms are enabled, each SSE session has access to room operations via `session.rooms`:
1536
+
1537
+ ```ts
1538
+ private handleDashboardStream = buildHandler(dashboardStreamContract, {
1539
+ sse: async (request, sse) => {
1540
+ const session = sse.start('keepAlive')
1541
+
1542
+ // Join one or more rooms
1543
+ session.rooms.join(`dashboard:${request.params.dashboardId}`)
1544
+ session.rooms.join(['org:acme', 'plan:enterprise']) // Multiple rooms
1545
+
1546
+ // Leave rooms
1547
+ session.rooms.leave('plan:enterprise')
1548
+ },
1549
+ })
1550
+ ```
1551
+
1552
+ #### Broadcasting to Rooms
1553
+
1554
+ Use `broadcastToRoom()` from your controller to send type-safe messages to all connections in a room. Event names and data are validated against your contract schemas at compile time:
1555
+
1556
+ ```ts
1557
+ class DashboardSSEController extends AbstractSSEController<typeof contracts> {
1558
+ // Send metrics update to everyone viewing the dashboard
1559
+ // Event name and data are type-checked against contract's sseEvents
1560
+ async broadcastMetricsUpdate(dashboardId: string, metrics: DashboardMetrics) {
1561
+ const count = await this.broadcastToRoom(
1562
+ `dashboard:${dashboardId}`,
1563
+ 'metricsUpdate', // Must be a valid event name from contracts
1564
+ metrics, // Must match the schema for 'metricsUpdate'
1565
+ )
1566
+ console.log(`Metrics sent to ${count} viewers`)
1567
+ }
1568
+
1569
+ // Broadcast to a room
1570
+ async broadcastChange(dashboardId: string, change: DashboardChange) {
1571
+ await this.broadcastToRoom(
1572
+ `dashboard:${dashboardId}`,
1573
+ 'change',
1574
+ change,
1575
+ )
1576
+ }
1577
+
1578
+ // Broadcast to multiple rooms (connections in any room receive it, de-duplicated)
1579
+ async announceFeature(feature: string) {
1580
+ const count = await this.broadcastToRoom(
1581
+ ['premium', 'beta-testers'],
1582
+ 'featureFlag',
1583
+ { flag: feature, enabled: true },
1584
+ )
1585
+ // Each connection receives the message only once, even if in multiple rooms
1586
+ }
1587
+
1588
+ // Local-only broadcast (skip Redis propagation in multi-node setups)
1589
+ async localAnnouncement(room: string, message: string) {
1590
+ await this.broadcastToRoom(room, 'announcement', { message }, { local: true })
1591
+ }
1592
+ }
1593
+ ```
1594
+
1595
+ #### Room Broadcaster (Decoupled Broadcasting)
1596
+
1597
+ The `broadcastToRoom()` method on the controller is `protected`, which means domain services (use cases, event handlers, message queue consumers) can't call it directly. The `SSERoomBroadcaster` solves this by providing a standalone object you can inject via DI:
1598
+
1599
+ ```ts
1600
+ import type { SSERoomBroadcaster } from 'opinionated-machine'
1601
+
1602
+ // 1. Register the broadcaster in resolveDependencies() (NOT resolveControllers)
1603
+ class DashboardModule extends AbstractModule<DashboardModuleDependencies> {
1604
+ resolveDependencies() {
1605
+ return {
1606
+ // Broadcaster extracted from controller — lazy resolution avoids circular deps
1607
+ dashboardRoomBroadcaster: asSingletonFunction(
1608
+ (cradle) => cradle.dashboardController.roomBroadcaster,
1609
+ ),
1610
+ metricsService: asSingletonFunction(
1611
+ (cradle) => new MetricsService(cradle),
1612
+ ),
1613
+ }
1614
+ }
1615
+
1616
+ resolveControllers(diOptions: DependencyInjectionOptions) {
1617
+ return {
1618
+ dashboardController: asSSEControllerClass(DashboardSSEController, {
1619
+ diOptions,
1620
+ rooms: true,
1621
+ }),
1622
+ }
1623
+ }
1624
+ }
1625
+
1626
+ // 2. Inject into domain services
1627
+ class MetricsService {
1628
+ private broadcaster: SSERoomBroadcaster<typeof DashboardSSEController.contracts>
1629
+
1630
+ constructor(deps: { dashboardRoomBroadcaster: SSERoomBroadcaster<typeof DashboardSSEController.contracts> }) {
1631
+ this.broadcaster = deps.dashboardRoomBroadcaster
1632
+ }
1633
+
1634
+ async onMetricsUpdate(dashboardId: string, metrics: DashboardMetrics) {
1635
+ // Same type-safe API as the controller's broadcastToRoom
1636
+ await this.broadcaster.broadcastToRoom(
1637
+ `dashboard:${dashboardId}`,
1638
+ 'metricsUpdate',
1639
+ metrics,
1640
+ )
1641
+ }
1642
+ }
1643
+ ```
1644
+
1645
+ The broadcaster provides the same type-safe `broadcastToRoom()` signature as the controller, plus room query methods (`getConnectionsInRoom`, `getConnectionCountInRoom`).
1646
+
1647
+ #### Room Name Helpers
1648
+
1649
+ Room names are plain strings (like Socket.IO), but `defineRoom()` adds type-safe resolvers that ensure consistent naming across controllers and domain services:
1650
+
1651
+ ```ts
1652
+ import { defineRoom } from 'opinionated-machine'
1653
+
1654
+ // Define typed room name resolvers
1655
+ const dashboardRoom = defineRoom<{ dashboardId: string }>(
1656
+ ({ dashboardId }) => `dashboard:${dashboardId}`,
1657
+ )
1658
+
1659
+ const projectChannelRoom = defineRoom<{ projectId: string; channelId: string }>(
1660
+ ({ projectId, channelId }) => `project:${projectId}:channel:${channelId}`,
1661
+ )
1662
+
1663
+ // In controller handler — params are type-checked
1664
+ session.rooms.join(dashboardRoom({ dashboardId: request.params.dashboardId }))
1665
+
1666
+ // In domain service — same resolver, same type safety
1667
+ await broadcaster.broadcastToRoom(
1668
+ dashboardRoom({ dashboardId }),
1669
+ 'metricsUpdate',
1670
+ metrics,
1671
+ )
1672
+ ```
1673
+
1674
+ `defineRoom()` is a zero-overhead identity wrapper — it simply returns the function you pass in, typed as `RoomNameResolver<TParams>`. The value is purely at compile time: typos in room name patterns become type errors, and refactoring a room's naming scheme only requires changing one place.
1675
+
1676
+ #### Room Query Methods
1677
+
1678
+ Controllers have access to room query methods:
1679
+
1680
+ ```ts
1681
+ class DashboardSSEController extends AbstractSSEController<typeof contracts> {
1682
+ // Get all connection IDs in a room
1683
+ getDashboardViewers(dashboardId: string): string[] {
1684
+ return this.getConnectionsInRoom(`dashboard:${dashboardId}`)
1685
+ }
1686
+
1687
+ // Get count of connections in a room
1688
+ getDashboardViewerCount(dashboardId: string): number {
1689
+ return this.getConnectionCountInRoom(`dashboard:${dashboardId}`)
1690
+ }
1691
+
1692
+ // Get all rooms a specific connection is in
1693
+ getConnectionRooms(connectionId: string): string[] {
1694
+ return this.getRooms(connectionId)
1695
+ }
1696
+
1697
+ // Manually join/leave rooms from controller (useful for admin operations)
1698
+ moveToRoom(connectionId: string, fromRoom: string, toRoom: string) {
1699
+ this.leaveRoom(connectionId, fromRoom)
1700
+ this.joinRoom(connectionId, toRoom)
1701
+ }
1702
+ }
1703
+ ```
1704
+
1705
+ #### Auto-Leave on Disconnect
1706
+
1707
+ When a connection closes (client disconnect or server close), it automatically leaves all rooms. No manual cleanup is required.
1708
+
1709
+ #### Multi-Node Deployments with Redis
1710
+
1711
+ For multi-node deployments where connections are distributed across servers, register a Redis adapter as `sseRoomAdapter` in your DI container. The controller auto-resolves it when `rooms: true` (the default):
1712
+
1713
+ ```ts
1714
+ import { RedisAdapter } from '@opinionated-machine/sse-rooms-redis'
1715
+ import Redis from 'ioredis'
1716
+
1717
+ class InfraModule extends AbstractModule {
1718
+ resolveDependencies() {
1719
+ return {
1720
+ // Register the adapter under the well-known label 'sseRoomAdapter'
1721
+ sseRoomAdapter: asSingletonFunction((cradle: { redis: Redis }) =>
1722
+ new RedisAdapter({
1723
+ pubClient: cradle.redis,
1724
+ subClient: cradle.redis.duplicate(),
1725
+ channelPrefix: 'myapp:sse:room:', // Optional, default: 'sse:room:'
1726
+ }),
1727
+ ),
1728
+ }
1729
+ }
1730
+ }
1731
+
1732
+ class DashboardModule extends AbstractModule {
1733
+ resolveControllers(diOptions: DependencyInjectionOptions) {
1734
+ return {
1735
+ // rooms: true → resolves 'sseRoomAdapter' from DI cradle automatically
1736
+ dashboardController: asSSEControllerClass(DashboardSSEController, {
1737
+ diOptions,
1738
+ rooms: true,
1739
+ }),
1740
+ }
1741
+ }
1742
+ }
1743
+ ```
1744
+
1745
+ The Redis adapter uses Pub/Sub for cross-node message propagation. When you call `broadcastToRoom()`, the message is published to Redis and delivered to all nodes that have connections in that room. If `sseRoomAdapter` is not registered in the DI container, awilix throws naturally at controller construction time.
1746
+
1747
+ See the [@opinionated-machine/sse-rooms-redis](./packages/sse-rooms-redis/README.md) package for detailed documentation on Redis adapter configuration and usage.
1748
+
1467
1749
  ### SSE Test Utilities
1468
1750
 
1469
1751
  The library provides utilities for testing SSE endpoints.
@@ -60,6 +60,17 @@ export declare function asRepositoryClass<T = object>(Type: ClassValue<T>, opts?
60
60
  export declare function asControllerClass<T = object>(Type: ClassValue<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
61
61
  export type SSEControllerModuleOptions = {
62
62
  diOptions: DependencyInjectionOptions;
63
+ /**
64
+ * Enable room support for this controller.
65
+ *
66
+ * - `true` — shorthand for `{ distributed: true }` (resolve adapter from DI)
67
+ * - `{ distributed: true }` — resolve `sseRoomAdapter` from DI cradle (production default)
68
+ * - `{ distributed: false }` — InMemoryAdapter, no DI lookup (dev/test)
69
+ * - omitted `distributed` — defaults to `true`
70
+ */
71
+ rooms?: true | {
72
+ distributed?: boolean;
73
+ };
63
74
  };
64
75
  /**
65
76
  * Register an SSE controller class with the DI container.
@@ -77,6 +88,9 @@ export type SSEControllerModuleOptions = {
77
88
  *
78
89
  * // With test mode (enables connection spy)
79
90
  * notificationsSSEController: asSSEControllerClass(NotificationsSSEController, { diOptions }),
91
+ *
92
+ * // With rooms enabled
93
+ * dashboardController: asSSEControllerClass(DashboardSSEController, { diOptions, rooms: {} }),
80
94
  * ```
81
95
  */
82
96
  export declare function asSSEControllerClass<T = object>(Type: ClassValue<T>, sseOptions?: SSEControllerModuleOptions, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
@@ -74,12 +74,24 @@ export function asControllerClass(Type, opts) {
74
74
  *
75
75
  * // With test mode (enables connection spy)
76
76
  * notificationsSSEController: asSSEControllerClass(NotificationsSSEController, { diOptions }),
77
+ *
78
+ * // With rooms enabled
79
+ * dashboardController: asSSEControllerClass(DashboardSSEController, { diOptions, rooms: {} }),
77
80
  * ```
78
81
  */
79
82
  export function asSSEControllerClass(Type, sseOptions, opts) {
80
83
  const enableConnectionSpy = sseOptions?.diOptions.isTestMode ?? false;
81
- const sseConfig = enableConnectionSpy ? { enableConnectionSpy: true } : undefined;
82
- return asClassWithConfig(Type, sseConfig, {
84
+ // Normalize rooms option into SSERoomDIConfig
85
+ let roomsDIConfig;
86
+ if (sseOptions?.rooms != null) {
87
+ const distributed = sseOptions.rooms === true || (sseOptions.rooms.distributed ?? true);
88
+ roomsDIConfig = { distributed };
89
+ }
90
+ const sseConfig = {
91
+ ...(enableConnectionSpy && { enableConnectionSpy: true }),
92
+ ...(roomsDIConfig && { rooms: roomsDIConfig }),
93
+ };
94
+ return asClassWithConfig(Type, Object.keys(sseConfig).length > 0 ? sseConfig : undefined, {
83
95
  public: false,
84
96
  isSSEController: true,
85
97
  asyncDispose: 'closeAllConnections',
@@ -1 +1 @@
1
- {"version":3,"file":"resolverFunctions.js","sourceRoot":"","sources":["../../lib/resolverFunctions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolverFunctions.js","sourceRoot":"","sources":["../../lib/resolverFunctions.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { AnyDualModeContractDefinition, AnySSEContractDefinition, HttpStatu
2
2
  import type { FastifyReply, FastifyRequest } from 'fastify';
3
3
  import type { z } from 'zod';
4
4
  import type { DualModeType } from '../dualmode/dualModeTypes.ts';
5
+ import type { SSERoomOperations } from '../sse/rooms/types.ts';
5
6
  import type { SSEEventSchemas, SSEEventSender, SSELogger, SSEMessage } from '../sse/sseTypes.ts';
6
7
  import type { SSECloseReason } from './fastifyRouteUtils.ts';
7
8
  /**
@@ -149,12 +150,34 @@ export type SSESession<Events extends SSEEventSchemas = SSEEventSchemas, Context
149
150
  * ```
150
151
  */
151
152
  sendStream: (messages: AsyncIterable<SSEStreamMessage<Events>>) => Promise<void>;
153
+ /**
154
+ * Room operations for this connection.
155
+ * Only available when rooms are enabled in the controller config.
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * // Join rooms based on route parameters or business logic
160
+ * session.rooms.join(`dashboard:${request.params.dashboardId}`)
161
+ * session.rooms.join(['project:123', 'team:engineering'])
162
+ *
163
+ * // Leave rooms when context changes
164
+ * session.rooms.leave('project:123')
165
+ * ```
166
+ */
167
+ rooms: SSERoomOperations;
152
168
  /**
153
169
  * Zod schemas for validating event data.
154
170
  * Map of event name to Zod schema. Used by sendEvent for runtime validation.
155
171
  * @internal
156
172
  */
157
173
  eventSchemas?: SSEEventSchemas;
174
+ /**
175
+ * Cache of recently received message IDs for deduplication.
176
+ * Used to prevent duplicate delivery when a connection is in multiple rooms
177
+ * that all receive the same broadcast.
178
+ * @internal
179
+ */
180
+ recentMessageIds?: Set<string>;
158
181
  };
159
182
  /**
160
183
  * Options for starting an SSE connection.
@@ -1 +1 @@
1
- {"version":3,"file":"fastifyRouteTypes.js","sourceRoot":"","sources":["../../../lib/routes/fastifyRouteTypes.ts"],"names":[],"mappings":"AAs3BA,MAAM,UAAU,YAAY,CAG1B,QAAkB,EAClB,QAAuC,EACvC,OAA8D;IAE9D,6FAA6F;IAC7F,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACpD,OAAO;YACL,MAAM,EAAE,sBAAsB;YAC9B,QAAQ,EAAE,QAAyC;YACnD,QAAQ,EAAE,QAAgE;YAC1E,OAAO,EAAE,OAAsC;SAChD,CAAA;IACH,CAAC;IAED,oBAAoB;IACpB,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,QAAoC;QAC9C,4GAA4G;QAC5G,QAAQ,EAAE,QAAe;QACzB,OAAO,EAAE,OAAiC;KAC3C,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"fastifyRouteTypes.js","sourceRoot":"","sources":["../../../lib/routes/fastifyRouteTypes.ts"],"names":[],"mappings":"AA64BA,MAAM,UAAU,YAAY,CAG1B,QAAkB,EAClB,QAAuC,EACvC,OAA8D;IAE9D,6FAA6F;IAC7F,IAAI,YAAY,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACpD,OAAO;YACL,MAAM,EAAE,sBAAsB;YAC9B,QAAQ,EAAE,QAAyC;YACnD,QAAQ,EAAE,QAAgE;YAC1E,OAAO,EAAE,OAAsC;SAChD,CAAA;IACH,CAAC;IAED,oBAAoB;IACpB,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,QAAoC;QAC9C,4GAA4G;QAC5G,QAAQ,EAAE,QAAe;QACzB,OAAO,EAAE,OAAiC;KAC3C,CAAA;AACH,CAAC"}
@@ -2,6 +2,7 @@ import type { SSEReplyInterface } from '@fastify/sse';
2
2
  import type { FastifyReply, FastifyRequest } from 'fastify';
3
3
  import type { z } from 'zod';
4
4
  import type { DualModeType } from '../dualmode/dualModeTypes.ts';
5
+ import type { SSERoomManager } from '../sse/rooms/SSERoomManager.ts';
5
6
  import type { SSEEventSchemas, SSELogger, SSEMessage } from '../sse/sseTypes.ts';
6
7
  import type { SSEContext, SSESession, SSESessionMode } from './fastifyRouteTypes.ts';
7
8
  /**
@@ -18,6 +19,8 @@ export type SSEControllerLike = {
18
19
  _sendEventRaw(connectionId: string, message: SSEMessage): Promise<boolean>;
19
20
  registerConnection(connection: SSESession): void;
20
21
  unregisterConnection(connectionId: string): void;
22
+ /** Room manager, if rooms are enabled */
23
+ _internalRoomManager?: SSERoomManager;
21
24
  };
22
25
  /**
23
26
  * Reason why the SSE connection was closed.
@@ -102,6 +102,23 @@ export async function handleSSEError(sseReply, controller, connectionId, err) {
102
102
  }
103
103
  controller.unregisterConnection(connectionId);
104
104
  }
105
+ /**
106
+ * Create room operations object for the session.
107
+ * If room manager is not available, returns no-op functions.
108
+ */
109
+ function createRoomOperations(connectionId, roomManager) {
110
+ if (!roomManager) {
111
+ // Return no-op operations when rooms are not enabled
112
+ return {
113
+ join: () => { },
114
+ leave: () => { },
115
+ };
116
+ }
117
+ return {
118
+ join: (room) => roomManager.join(connectionId, room),
119
+ leave: (room) => roomManager.leave(connectionId, room),
120
+ };
121
+ }
105
122
  /**
106
123
  * Create an SSE connection object with all helpers.
107
124
  * This is an internal helper used by createSSEContext.
@@ -142,6 +159,8 @@ function createSSESessionInternal(connectionId, request, reply, sseReply, eventS
142
159
  });
143
160
  }
144
161
  };
162
+ // Create room operations
163
+ const rooms = createRoomOperations(connectionId, controller._internalRoomManager);
145
164
  return {
146
165
  id: connectionId,
147
166
  request,
@@ -152,6 +171,7 @@ function createSSESessionInternal(connectionId, request, reply, sseReply, eventS
152
171
  isConnected: () => sseReply.sse.isConnected,
153
172
  getStream: () => sseReply.sse.stream(),
154
173
  sendStream,
174
+ rooms,
155
175
  eventSchemas,
156
176
  };
157
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fastifyRouteUtils.js","sourceRoot":"","sources":["../../../lib/routes/fastifyRouteUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fastifyRouteUtils.js","sourceRoot":"","sources":["../../../lib/routes/fastifyRouteUtils.ts"],"names":[],"mappings":"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"}