@gravito/radiance 1.0.0-alpha.2 → 1.0.0-alpha.5

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.
package/README.md CHANGED
@@ -1,27 +1,27 @@
1
1
  # @gravito/radiance
2
2
 
3
- 輕量、高效的廣播系統,支援多種驅動(Pusher、Ably、Redis、WebSocket)。借鑑 Laravel 架構但保持 Gravito 的核心價值(高效能、低耗、輕量、AI 友善)。
3
+ Lightweight, high-performance broadcasting for Gravito with multiple drivers (Pusher, Ably, Redis, WebSocket).
4
4
 
5
- > **狀態**:v0.1.0 - 核心功能已完成,支援多種廣播驅動
5
+ **Status**: v0.1.0 - core features complete with multiple broadcast drivers.
6
6
 
7
- ## 特性
7
+ ## Features
8
8
 
9
- - **零運行時開銷**:純類型包裝,直接委派給驅動
10
- - **多驅動支援**:PusherAblyRedisWebSocket
11
- - **完全模組化**:按需安裝驅動,核心包極小
12
- - **與 Events 整合**:事件可實作 `ShouldBroadcast` 自動廣播
13
- - **頻道授權**:支援私有頻道和存在頻道授權
14
- - **AI 友善**:完整的型別推導、清晰的 JSDoc、直觀的 API
9
+ - **Zero runtime overhead**: Pure type wrappers that delegate to drivers
10
+ - **Multi-driver support**: Pusher, Ably, Redis, WebSocket
11
+ - **Modular**: Install only the driver you need
12
+ - **Events integration**: Events can implement `ShouldBroadcast`
13
+ - **Channel authorization**: Private and presence channels supported
14
+ - **AI-friendly**: Strong typing, clear JSDoc, and predictable APIs
15
15
 
16
- ## 安裝
16
+ ## Installation
17
17
 
18
18
  ```bash
19
19
  bun add @gravito/radiance
20
20
  ```
21
21
 
22
- ## 快速開始
22
+ ## Quick Start
23
23
 
24
- ### 1. 配置 OrbitRadiance
24
+ ### 1. Configure OrbitRadiance
25
25
 
26
26
  ```typescript
27
27
  import { PlanetCore } from 'gravito-core'
@@ -38,7 +38,7 @@ const core = await PlanetCore.boot({
38
38
  cluster: 'mt1',
39
39
  },
40
40
  authorizeChannel: async (channel, socketId, userId) => {
41
- // 實作頻道授權邏輯
41
+ // Implement channel auth logic here
42
42
  return true
43
43
  },
44
44
  }),
@@ -46,7 +46,7 @@ const core = await PlanetCore.boot({
46
46
  })
47
47
  ```
48
48
 
49
- ### 2. 創建可廣播事件
49
+ ### 2. Create a broadcastable event
50
50
 
51
51
  ```typescript
52
52
  import { Event, ShouldBroadcast } from 'gravito-core'
@@ -75,14 +75,13 @@ class OrderShipped extends Event implements ShouldBroadcast {
75
75
  }
76
76
  ```
77
77
 
78
- ### 3. 分發事件(自動廣播)
78
+ ### 3. Dispatch events (auto broadcast)
79
79
 
80
80
  ```typescript
81
- // 分發事件時會自動廣播
82
81
  await core.events.dispatch(new OrderShipped(order))
83
82
  ```
84
83
 
85
- ### 4. 手動廣播
84
+ ### 4. Manual broadcast
86
85
 
87
86
  ```typescript
88
87
  const broadcast = c.get('broadcast') as BroadcastManager
@@ -95,7 +94,7 @@ await broadcast.broadcast(
95
94
  )
96
95
  ```
97
96
 
98
- ## 驅動
97
+ ## Drivers
99
98
 
100
99
  ### Pusher
101
100
 
@@ -106,8 +105,8 @@ OrbitRadiance.configure({
106
105
  appId: 'your-app-id',
107
106
  key: 'your-key',
108
107
  secret: 'your-secret',
109
- cluster: 'mt1', // 可選
110
- useTLS: true, // 可選
108
+ cluster: 'mt1',
109
+ useTLS: true,
111
110
  },
112
111
  })
113
112
  ```
@@ -128,19 +127,17 @@ OrbitRadiance.configure({
128
127
  ```typescript
129
128
  import { RedisDriver } from '@gravito/radiance'
130
129
 
131
- // 需要先設置 Redis 客戶端
132
130
  const redisDriver = new RedisDriver({
133
131
  url: 'redis://localhost:6379',
134
132
  })
135
133
 
136
- // 設置 Redis 客戶端
137
134
  redisDriver.setRedisClient(redisClient)
138
135
 
139
136
  OrbitRadiance.configure({
140
137
  driver: 'redis',
141
138
  config: {
142
139
  url: 'redis://localhost:6379',
143
- keyPrefix: 'gravito:broadcast:', // 可選
140
+ keyPrefix: 'gravito:broadcast:',
144
141
  },
145
142
  })
146
143
  ```
@@ -152,11 +149,9 @@ OrbitRadiance.configure({
152
149
  driver: 'websocket',
153
150
  config: {
154
151
  getConnections: () => {
155
- // 返回所有 WebSocket 連接
156
152
  return Array.from(websocketConnections.values())
157
153
  },
158
154
  filterConnectionsByChannel: (channel) => {
159
- // 根據頻道過濾連接(可選)
160
155
  return Array.from(websocketConnections.values()).filter(
161
156
  (conn) => conn.subscribedChannels.includes(channel)
162
157
  )
@@ -165,9 +160,9 @@ OrbitRadiance.configure({
165
160
  })
166
161
  ```
167
162
 
168
- ## 頻道類型
163
+ ## Channel Types
169
164
 
170
- ### 公開頻道
165
+ ### Public
171
166
 
172
167
  ```typescript
173
168
  import { PublicChannel } from '@gravito/radiance'
@@ -179,7 +174,7 @@ class PublicEvent extends Event implements ShouldBroadcast {
179
174
  }
180
175
  ```
181
176
 
182
- ### 私有頻道
177
+ ### Private
183
178
 
184
179
  ```typescript
185
180
  import { PrivateChannel } from '@gravito/radiance'
@@ -191,7 +186,7 @@ class PrivateEvent extends Event implements ShouldBroadcast {
191
186
  }
192
187
  ```
193
188
 
194
- ### 存在頻道
189
+ ### Presence
195
190
 
196
191
  ```typescript
197
192
  import { PresenceChannel } from '@gravito/radiance'
@@ -203,16 +198,15 @@ class PresenceEvent extends Event implements ShouldBroadcast {
203
198
  }
204
199
  ```
205
200
 
206
- ## 頻道授權
201
+ ## Channel Authorization
207
202
 
208
- 私有頻道和存在頻道需要授權。在配置中提供 `authorizeChannel` 回調:
203
+ Private and presence channels require authorization.
209
204
 
210
205
  ```typescript
211
206
  OrbitRadiance.configure({
212
207
  driver: 'pusher',
213
208
  config: { /* ... */ },
214
209
  authorizeChannel: async (channel, socketId, userId) => {
215
- // 檢查使用者是否有權限存取此頻道
216
210
  if (channel.startsWith('private-user.')) {
217
211
  const channelUserId = channel.replace('private-user.', '')
218
212
  return userId?.toString() === channelUserId
@@ -222,26 +216,25 @@ OrbitRadiance.configure({
222
216
  })
223
217
  ```
224
218
 
225
- ## API 參考
219
+ ## API Reference
226
220
 
227
221
  ### BroadcastManager
228
222
 
229
- #### 方法
223
+ #### Methods
230
224
 
231
- - `broadcast(event, channel, data, eventName): Promise<void>` - 廣播事件
232
- - `authorizeChannel(channel, socketId, userId): Promise<{ auth, channel_data? } | null>` - 授權頻道存取
233
- - `setDriver(driver: BroadcastDriver): void` - 設置廣播驅動
234
- - `setAuthCallback(callback: ChannelAuthorizationCallback): void` - 設置授權回調
225
+ - `broadcast(event, channel, data, eventName): Promise<void>` - Broadcast an event
226
+ - `authorizeChannel(channel, socketId, userId): Promise<{ auth, channel_data? } | null>` - Authorize channel access
227
+ - `setDriver(driver: BroadcastDriver): void` - Set the broadcast driver
228
+ - `setAuthCallback(callback: ChannelAuthorizationCallback): void` - Set the auth callback
235
229
 
236
230
  ### ShouldBroadcast
237
231
 
238
- 事件實作此介面可自動廣播:
232
+ Events implementing `ShouldBroadcast` will be broadcast automatically:
239
233
 
240
- - `broadcastOn(): string | Channel` - 指定廣播頻道(必須實作)
241
- - `broadcastWith?(): Record<string, unknown>` - 指定廣播資料(可選)
242
- - `broadcastAs?(): string` - 指定廣播事件名稱(可選)
234
+ - `broadcastOn(): string | Channel` - Broadcast channel (required)
235
+ - `broadcastWith?(): Record<string, unknown>` - Payload (optional)
236
+ - `broadcastAs?(): string` - Event name (optional)
243
237
 
244
- ## 授權
238
+ ## License
245
239
 
246
240
  MIT © Carl Lee
247
-
@@ -0,0 +1,30 @@
1
+ # @gravito/radiance
2
+
3
+ > Gravito 的廣播模組,支援 Pusher、Ably、Redis、WebSocket 等驅動。
4
+
5
+ ## 安裝
6
+
7
+ ```bash
8
+ bun add @gravito/radiance
9
+ ```
10
+
11
+ ## 快速開始
12
+
13
+ ```typescript
14
+ import { PlanetCore } from 'gravito-core'
15
+ import { OrbitRadiance } from '@gravito/radiance'
16
+
17
+ const core = await PlanetCore.boot({
18
+ orbits: [
19
+ OrbitRadiance.configure({
20
+ driver: 'pusher',
21
+ config: {
22
+ appId: 'your-app-id',
23
+ key: 'your-key',
24
+ secret: 'your-secret',
25
+ cluster: 'mt1',
26
+ },
27
+ }),
28
+ ],
29
+ })
30
+ ```
package/dist/index.js.map CHANGED
@@ -2,7 +2,7 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/BroadcastManager.ts", "../src/channels/Channel.ts", "../src/drivers/AblyDriver.ts", "../src/drivers/PusherDriver.ts", "../src/drivers/RedisDriver.ts", "../src/drivers/WebSocketDriver.ts", "../src/OrbitRadiance.ts"],
4
4
  "sourcesContent": [
5
- "import type { PlanetCore } from 'gravito-core'\nimport type { BroadcastDriver } from './drivers/BroadcastDriver'\n\n/**\n * Channel authorization callback.\n */\nexport type ChannelAuthorizationCallback = (\n channel: string,\n socketId: string,\n userId?: string | number\n) => Promise<boolean>\n\n/**\n * Broadcast manager.\n *\n * Responsible for managing the broadcast driver and handling broadcast requests.\n */\nexport class BroadcastManager {\n private driver: BroadcastDriver | null = null\n private authCallback?: ChannelAuthorizationCallback\n\n constructor(private core: PlanetCore) {}\n\n /**\n * Set the broadcast driver.\n */\n setDriver(driver: BroadcastDriver): void {\n this.driver = driver\n }\n\n /**\n * Set the channel authorization callback.\n */\n setAuthCallback(callback: ChannelAuthorizationCallback): void {\n this.authCallback = callback\n }\n\n /**\n * Broadcast an event.\n *\n * @param event - Event instance\n * @param channel - Channel object\n * @param data - Event payload\n * @param eventName - Event name\n */\n async broadcast(\n _event: unknown,\n channel: { name: string; type: string },\n data: Record<string, unknown>,\n eventName: string\n ): Promise<void> {\n if (!this.driver) {\n this.core.logger.warn('[BroadcastManager] No broadcast driver set, skipping broadcast')\n return\n }\n\n try {\n await this.driver.broadcast(channel, eventName, data)\n } catch (error) {\n this.core.logger.error(`[BroadcastManager] Failed to broadcast event ${eventName}:`, error)\n throw error\n }\n }\n\n /**\n * Authorize channel access.\n *\n * @param channel - Channel name\n * @param socketId - Socket ID\n * @param userId - User ID (optional)\n * @returns Authorization payload\n */\n async authorizeChannel(\n channel: string,\n socketId: string,\n userId?: string | number\n ): Promise<{ auth: string; channel_data?: string } | null> {\n // Check authorization callback first.\n if (this.authCallback) {\n const authorized = await this.authCallback(channel, socketId, userId)\n if (!authorized) {\n return null\n }\n }\n\n // If the driver supports authorization, use it.\n if (this.driver?.authorizeChannel) {\n return await this.driver.authorizeChannel(channel, socketId, userId)\n }\n\n // Default deny for private/presence channels.\n if (channel.startsWith('private-') || channel.startsWith('presence-')) {\n return null\n }\n\n // Public channels do not require authorization.\n return { auth: '' }\n }\n}\n",
5
+ "import type { PlanetCore } from 'gravito-core'\nimport type { BroadcastDriver } from './drivers/BroadcastDriver'\n\n/**\n * Channel authorization callback.\n */\nexport type ChannelAuthorizationCallback = (\n channel: string,\n socketId: string,\n userId?: string | number\n) => Promise<boolean>\n\n/**\n * Broadcast manager.\n *\n * Responsible for managing the broadcast driver and handling broadcast requests.\n */\nexport class BroadcastManager {\n private driver: BroadcastDriver | null = null\n private authCallback?: ChannelAuthorizationCallback\n\n constructor(private core: PlanetCore) {}\n\n /**\n * Set the broadcast driver.\n *\n * @param driver - The broadcast driver to use.\n */\n setDriver(driver: BroadcastDriver): void {\n this.driver = driver\n }\n\n /**\n * Set the channel authorization callback.\n *\n * @param callback - The callback function for channel authorization.\n */\n setAuthCallback(callback: ChannelAuthorizationCallback): void {\n this.authCallback = callback\n }\n\n /**\n * Broadcast an event.\n *\n * @param _event - Event instance (unused in current implementation, but kept for signature compatibility).\n * @param channel - Channel object containing name and type.\n * @param data - Event payload.\n * @param eventName - Event name.\n * @returns A promise that resolves when the event is broadcast.\n */\n async broadcast(\n _event: unknown,\n channel: { name: string; type: string },\n data: Record<string, unknown>,\n eventName: string\n ): Promise<void> {\n if (!this.driver) {\n this.core.logger.warn('[BroadcastManager] No broadcast driver set, skipping broadcast')\n return\n }\n\n try {\n await this.driver.broadcast(channel, eventName, data)\n } catch (error) {\n this.core.logger.error(`[BroadcastManager] Failed to broadcast event ${eventName}:`, error)\n throw error\n }\n }\n\n /**\n * Authorize channel access.\n *\n * @param channel - Channel name.\n * @param socketId - Socket ID.\n * @param userId - User ID (optional).\n * @returns A promise resolving to the authorization payload or null if unauthorized.\n */\n async authorizeChannel(\n channel: string,\n socketId: string,\n userId?: string | number\n ): Promise<{ auth: string; channel_data?: string } | null> {\n // Check authorization callback first.\n if (this.authCallback) {\n const authorized = await this.authCallback(channel, socketId, userId)\n if (!authorized) {\n return null\n }\n }\n\n // If the driver supports authorization, use it.\n if (this.driver?.authorizeChannel) {\n return await this.driver.authorizeChannel(channel, socketId, userId)\n }\n\n // Default deny for private/presence channels.\n if (channel.startsWith('private-') || channel.startsWith('presence-')) {\n return null\n }\n\n // Public channels do not require authorization.\n return { auth: '' }\n }\n}\n",
6
6
  "/**\n * Base channel interface.\n */\nexport interface Channel {\n /**\n * Channel name.\n */\n name: string\n\n /**\n * Channel type.\n */\n type: 'public' | 'private' | 'presence'\n}\n\n/**\n * Public channel.\n */\nexport class PublicChannel implements Channel {\n type = 'public' as const\n\n constructor(public name: string) {}\n}\n\n/**\n * Private channel.\n */\nexport class PrivateChannel implements Channel {\n type = 'private' as const\n\n constructor(public name: string) {}\n}\n\n/**\n * Presence channel (can track online users).\n */\nexport class PresenceChannel implements Channel {\n type = 'presence' as const\n\n constructor(public name: string) {}\n}\n",
7
7
  "import type { BroadcastDriver } from './BroadcastDriver'\n\n/**\n * Ably driver configuration.\n */\nexport interface AblyDriverConfig {\n apiKey: string\n}\n\n/**\n * Ably driver.\n *\n * Broadcasts through the Ably service.\n */\nexport class AblyDriver implements BroadcastDriver {\n private baseUrl = 'https://rest.ably.io'\n\n constructor(private config: AblyDriverConfig) {}\n\n async broadcast(\n channel: { name: string; type: string },\n event: string,\n data: Record<string, unknown>\n ): Promise<void> {\n const path = `/channels/${channel.name}/messages`\n const auth = btoa(this.config.apiKey)\n\n const response = await fetch(`${this.baseUrl}${path}`, {\n method: 'POST',\n headers: {\n Authorization: `Basic ${auth}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n name: event,\n data,\n }),\n })\n\n if (!response.ok) {\n const error = await response.text()\n throw new Error(`Failed to broadcast via Ably: ${error}`)\n }\n }\n\n async authorizeChannel(\n channel: string,\n _socketId: string,\n userId?: string | number\n ): Promise<{ auth: string; channel_data?: string }> {\n // Ably uses a different authorization mechanism.\n // This is only a basic implementation.\n return {\n auth: this.config.apiKey,\n ...(channel.startsWith('presence-') && userId\n ? {\n channel_data: JSON.stringify({\n clientId: userId.toString(),\n }),\n }\n : {}),\n }\n }\n}\n",
8
8
  "import type { BroadcastDriver } from './BroadcastDriver'\n\n/**\n * Pusher driver configuration.\n */\nexport interface PusherDriverConfig {\n appId: string\n key: string\n secret: string\n cluster?: string\n useTLS?: boolean\n}\n\n/**\n * Pusher driver.\n *\n * Broadcasts through the Pusher service.\n */\nexport class PusherDriver implements BroadcastDriver {\n private baseUrl: string\n\n constructor(private config: PusherDriverConfig) {\n const cluster = this.config.cluster || 'mt1'\n this.baseUrl = `https://api-${cluster}.pusher.com`\n }\n\n async broadcast(\n channel: { name: string; type: string },\n event: string,\n data: Record<string, unknown>\n ): Promise<void> {\n const path = `/apps/${this.config.appId}/events`\n const body = {\n name: event,\n channel: channel.name,\n data: JSON.stringify(data),\n }\n\n const timestamp = Math.floor(Date.now() / 1000)\n const queryString = new URLSearchParams({\n auth_key: this.config.key,\n auth_timestamp: timestamp.toString(),\n auth_version: '1.0',\n body_md5: this.md5(JSON.stringify(body)),\n })\n\n const authString = `POST\\n${path}\\n${queryString.toString()}`\n const authSignature = await this.hmacSHA256(authString, this.config.secret)\n\n queryString.append('auth_signature', authSignature)\n\n const response = await fetch(`${this.baseUrl}${path}?${queryString.toString()}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n\n if (!response.ok) {\n const error = await response.text()\n throw new Error(`Failed to broadcast via Pusher: ${error}`)\n }\n }\n\n async authorizeChannel(\n channel: string,\n socketId: string,\n userId?: string | number\n ): Promise<{ auth: string; channel_data?: string }> {\n const stringToSign = `${socketId}:${channel}`\n const signature = await this.hmacSHA256(stringToSign, this.config.secret)\n\n if (channel.startsWith('presence-')) {\n const channelData = JSON.stringify({\n user_id: userId?.toString(),\n user_info: {},\n })\n return {\n auth: `${this.config.key}:${signature}`,\n channel_data: channelData,\n }\n }\n\n return {\n auth: `${this.config.key}:${signature}`,\n }\n }\n\n private async hmacSHA256(message: string, secret: string): Promise<string> {\n // Uses the Web Crypto API.\n const encoder = new TextEncoder()\n const keyData = encoder.encode(secret)\n const messageData = encoder.encode(message)\n\n const key = await crypto.subtle.importKey(\n 'raw',\n keyData,\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign']\n )\n\n const signature = await crypto.subtle.sign('HMAC', key, messageData)\n const hashArray = Array.from(new Uint8Array(signature))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n }\n\n private md5(text: string): string {\n // Simplified MD5 implementation (production should use a proper MD5 implementation).\n return btoa(text).replace(/[+/=]/g, '').substring(0, 32)\n }\n}\n",
@@ -10,7 +10,7 @@
10
10
  "import type { BroadcastDriver } from './BroadcastDriver'\n\n/**\n * WebSocket connection interface.\n */\nexport interface WebSocketConnection {\n send(data: string): void\n close(): void\n readyState: number\n}\n\n/**\n * WebSocket driver configuration.\n */\nexport interface WebSocketDriverConfig {\n /**\n * Get all active connections.\n */\n getConnections(): WebSocketConnection[]\n\n /**\n * Filter connections by channel (optional).\n */\n filterConnectionsByChannel?(channel: string): WebSocketConnection[]\n}\n\n/**\n * WebSocket driver.\n *\n * Broadcasts via WebSocket.\n * Suitable for single-node deployments or when direct WebSocket connections are required.\n */\nexport class WebSocketDriver implements BroadcastDriver {\n constructor(private config: WebSocketDriverConfig) {}\n\n async broadcast(\n channel: { name: string; type: string },\n event: string,\n data: Record<string, unknown>\n ): Promise<void> {\n const message = JSON.stringify({\n channel: channel.name,\n event,\n data,\n })\n\n let connections = this.config.getConnections()\n\n // If channel filtering is supported, use it.\n if (this.config.filterConnectionsByChannel) {\n connections = this.config.filterConnectionsByChannel(channel.name)\n }\n\n // Send to all connections.\n for (const connection of connections) {\n if (connection.readyState === 1) {\n // WebSocket.OPEN\n try {\n connection.send(message)\n } catch (error) {\n // Ignore failed sends.\n console.error('Failed to send WebSocket message:', error)\n }\n }\n }\n }\n}\n",
11
11
  "import type { GravitoOrbit, PlanetCore } from 'gravito-core'\nimport { BroadcastManager } from './BroadcastManager'\nimport type { AblyDriverConfig } from './drivers/AblyDriver'\nimport { AblyDriver } from './drivers/AblyDriver'\nimport type { BroadcastDriver } from './drivers/BroadcastDriver'\nimport type { PusherDriverConfig } from './drivers/PusherDriver'\nimport { PusherDriver } from './drivers/PusherDriver'\nimport type { RedisDriverConfig } from './drivers/RedisDriver'\nimport { RedisDriver } from './drivers/RedisDriver'\nimport type { WebSocketDriverConfig } from './drivers/WebSocketDriver'\nimport { WebSocketDriver } from './drivers/WebSocketDriver'\n\n/**\n * OrbitRadiance options.\n */\nexport interface OrbitRadianceOptions {\n /**\n * Driver type.\n */\n driver: 'pusher' | 'ably' | 'redis' | 'websocket'\n\n /**\n * Driver configuration.\n */\n config: PusherDriverConfig | AblyDriverConfig | RedisDriverConfig | WebSocketDriverConfig\n\n /**\n * Channel authorization callback (optional).\n */\n authorizeChannel?: (\n channel: string,\n socketId: string,\n userId?: string | number\n ) => Promise<boolean>\n}\n\n/**\n * Broadcasting Orbit\n *\n * Provides broadcasting capabilities with multiple drivers (Pusher, Ably, Redis, WebSocket).\n */\nexport class OrbitRadiance implements GravitoOrbit {\n private options: OrbitRadianceOptions\n\n constructor(options: OrbitRadianceOptions) {\n this.options = options\n }\n\n /**\n * Configure OrbitRadiance.\n */\n static configure(options: OrbitRadianceOptions): OrbitRadiance {\n return new OrbitRadiance(options)\n }\n\n async install(core: PlanetCore): Promise<void> {\n const manager = new BroadcastManager(core)\n\n // Create and set driver.\n let driver: BroadcastDriver\n\n switch (this.options.driver) {\n case 'pusher':\n driver = new PusherDriver(this.options.config as PusherDriverConfig)\n break\n case 'ably':\n driver = new AblyDriver(this.options.config as AblyDriverConfig)\n break\n case 'redis': {\n driver = new RedisDriver(this.options.config as RedisDriverConfig)\n // If a Redis client is provided via core services, set it.\n const redisClient = core.services.get('redis') as\n | { publish(channel: string, message: string): Promise<number> }\n | undefined\n if (redisClient) {\n ;(driver as RedisDriver).setRedisClient(redisClient)\n }\n break\n }\n case 'websocket':\n driver = new WebSocketDriver(this.options.config as WebSocketDriverConfig)\n break\n default:\n throw new Error(`Unsupported broadcast driver: ${this.options.driver}`)\n }\n\n manager.setDriver(driver)\n\n // Set auth callback.\n if (this.options.authorizeChannel) {\n manager.setAuthCallback(this.options.authorizeChannel)\n }\n\n // Register into core services.\n core.services.set('broadcast', manager)\n\n // Integrate with EventManager.\n if (core.events) {\n core.events.setBroadcastManager({\n broadcast: async (event: any, channel: any, data: any, eventName: any) => {\n await manager.broadcast(event, channel, data, eventName)\n },\n })\n }\n\n core.logger.info(`[OrbitRadiance] Installed with ${this.options.driver} driver`)\n }\n}\n"
12
12
  ],
13
- "mappings": ";AAiBO,MAAM,iBAAiB;AAAA,EAIR;AAAA,EAHZ,SAAiC;AAAA,EACjC;AAAA,EAER,WAAW,CAAS,MAAkB;AAAA,IAAlB;AAAA;AAAA,EAKpB,SAAS,CAAC,QAA+B;AAAA,IACvC,KAAK,SAAS;AAAA;AAAA,EAMhB,eAAe,CAAC,UAA8C;AAAA,IAC5D,KAAK,eAAe;AAAA;AAAA,OAWhB,UAAS,CACb,QACA,SACA,MACA,WACe;AAAA,IACf,IAAI,CAAC,KAAK,QAAQ;AAAA,MAChB,KAAK,KAAK,OAAO,KAAK,gEAAgE;AAAA,MACtF;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,KAAK,OAAO,UAAU,SAAS,WAAW,IAAI;AAAA,MACpD,OAAO,OAAO;AAAA,MACd,KAAK,KAAK,OAAO,MAAM,gDAAgD,cAAc,KAAK;AAAA,MAC1F,MAAM;AAAA;AAAA;AAAA,OAYJ,iBAAgB,CACpB,SACA,UACA,QACyD;AAAA,IAEzD,IAAI,KAAK,cAAc;AAAA,MACrB,MAAM,aAAa,MAAM,KAAK,aAAa,SAAS,UAAU,MAAM;AAAA,MACpE,IAAI,CAAC,YAAY;AAAA,QACf,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,QAAQ,kBAAkB;AAAA,MACjC,OAAO,MAAM,KAAK,OAAO,iBAAiB,SAAS,UAAU,MAAM;AAAA,IACrE;AAAA,IAGA,IAAI,QAAQ,WAAW,UAAU,KAAK,QAAQ,WAAW,WAAW,GAAG;AAAA,MACrE,OAAO;AAAA,IACT;AAAA,IAGA,OAAO,EAAE,MAAM,GAAG;AAAA;AAEtB;;AChFO,MAAM,cAAiC;AAAA,EAGzB;AAAA,EAFnB,OAAO;AAAA,EAEP,WAAW,CAAQ,MAAc;AAAA,IAAd;AAAA;AACrB;AAAA;AAKO,MAAM,eAAkC;AAAA,EAG1B;AAAA,EAFnB,OAAO;AAAA,EAEP,WAAW,CAAQ,MAAc;AAAA,IAAd;AAAA;AACrB;AAAA;AAKO,MAAM,gBAAmC;AAAA,EAG3B;AAAA,EAFnB,OAAO;AAAA,EAEP,WAAW,CAAQ,MAAc;AAAA,IAAd;AAAA;AACrB;;AC1BO,MAAM,WAAsC;AAAA,EAG7B;AAAA,EAFZ,UAAU;AAAA,EAElB,WAAW,CAAS,QAA0B;AAAA,IAA1B;AAAA;AAAA,OAEd,UAAS,CACb,SACA,OACA,MACe;AAAA,IACf,MAAM,OAAO,aAAa,QAAQ;AAAA,IAClC,MAAM,OAAO,KAAK,KAAK,OAAO,MAAM;AAAA,IAEpC,MAAM,WAAW,MAAM,MAAM,GAAG,KAAK,UAAU,QAAQ;AAAA,MACrD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,eAAe,SAAS;AAAA,QACxB,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACnB,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,MAAM,QAAQ,MAAM,SAAS,KAAK;AAAA,MAClC,MAAM,IAAI,MAAM,iCAAiC,OAAO;AAAA,IAC1D;AAAA;AAAA,OAGI,iBAAgB,CACpB,SACA,WACA,QACkD;AAAA,IAGlD,OAAO;AAAA,MACL,MAAM,KAAK,OAAO;AAAA,SACd,QAAQ,WAAW,WAAW,KAAK,SACnC;AAAA,QACE,cAAc,KAAK,UAAU;AAAA,UAC3B,UAAU,OAAO,SAAS;AAAA,QAC5B,CAAC;AAAA,MACH,IACA,CAAC;AAAA,IACP;AAAA;AAEJ;;AC7CO,MAAM,aAAwC;AAAA,EAG/B;AAAA,EAFZ;AAAA,EAER,WAAW,CAAS,QAA4B;AAAA,IAA5B;AAAA,IAClB,MAAM,UAAU,KAAK,OAAO,WAAW;AAAA,IACvC,KAAK,UAAU,eAAe;AAAA;AAAA,OAG1B,UAAS,CACb,SACA,OACA,MACe;AAAA,IACf,MAAM,OAAO,SAAS,KAAK,OAAO;AAAA,IAClC,MAAM,OAAO;AAAA,MACX,MAAM;AAAA,MACN,SAAS,QAAQ;AAAA,MACjB,MAAM,KAAK,UAAU,IAAI;AAAA,IAC3B;AAAA,IAEA,MAAM,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,IAAI;AAAA,IAC9C,MAAM,cAAc,IAAI,gBAAgB;AAAA,MACtC,UAAU,KAAK,OAAO;AAAA,MACtB,gBAAgB,UAAU,SAAS;AAAA,MACnC,cAAc;AAAA,MACd,UAAU,KAAK,IAAI,KAAK,UAAU,IAAI,CAAC;AAAA,IACzC,CAAC;AAAA,IAED,MAAM,aAAa;AAAA,EAAS;AAAA,EAAS,YAAY,SAAS;AAAA,IAC1D,MAAM,gBAAgB,MAAM,KAAK,WAAW,YAAY,KAAK,OAAO,MAAM;AAAA,IAE1E,YAAY,OAAO,kBAAkB,aAAa;AAAA,IAElD,MAAM,WAAW,MAAM,MAAM,GAAG,KAAK,UAAU,QAAQ,YAAY,SAAS,KAAK;AAAA,MAC/E,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,UAAU,IAAI;AAAA,IAC3B,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,MAAM,QAAQ,MAAM,SAAS,KAAK;AAAA,MAClC,MAAM,IAAI,MAAM,mCAAmC,OAAO;AAAA,IAC5D;AAAA;AAAA,OAGI,iBAAgB,CACpB,SACA,UACA,QACkD;AAAA,IAClD,MAAM,eAAe,GAAG,YAAY;AAAA,IACpC,MAAM,YAAY,MAAM,KAAK,WAAW,cAAc,KAAK,OAAO,MAAM;AAAA,IAExE,IAAI,QAAQ,WAAW,WAAW,GAAG;AAAA,MACnC,MAAM,cAAc,KAAK,UAAU;AAAA,QACjC,SAAS,QAAQ,SAAS;AAAA,QAC1B,WAAW,CAAC;AAAA,MACd,CAAC;AAAA,MACD,OAAO;AAAA,QACL,MAAM,GAAG,KAAK,OAAO,OAAO;AAAA,QAC5B,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,MAAM,GAAG,KAAK,OAAO,OAAO;AAAA,IAC9B;AAAA;AAAA,OAGY,WAAU,CAAC,SAAiB,QAAiC;AAAA,IAEzE,MAAM,UAAU,IAAI;AAAA,IACpB,MAAM,UAAU,QAAQ,OAAO,MAAM;AAAA,IACrC,MAAM,cAAc,QAAQ,OAAO,OAAO;AAAA,IAE1C,MAAM,MAAM,MAAM,OAAO,OAAO,UAC9B,OACA,SACA,EAAE,MAAM,QAAQ,MAAM,UAAU,GAChC,OACA,CAAC,MAAM,CACT;AAAA,IAEA,MAAM,YAAY,MAAM,OAAO,OAAO,KAAK,QAAQ,KAAK,WAAW;AAAA,IACnE,MAAM,YAAY,MAAM,KAAK,IAAI,WAAW,SAAS,CAAC;AAAA,IACtD,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA;AAAA,EAG9D,GAAG,CAAC,MAAsB;AAAA,IAEhC,OAAO,KAAK,IAAI,EAAE,QAAQ,UAAU,EAAE,EAAE,UAAU,GAAG,EAAE;AAAA;AAE3D;;AC5FO,MAAM,YAAuC;AAAA,EAK9B;AAAA,EAJZ,QAEG;AAAA,EAEX,WAAW,CAAS,QAA2B;AAAA,IAA3B;AAAA;AAAA,EAQpB,cAAc,CAAC,QAA8E;AAAA,IAC3F,KAAK,QAAQ;AAAA;AAAA,OAGT,UAAS,CACb,SACA,OACA,MACe;AAAA,IACf,IAAI,CAAC,KAAK,OAAO;AAAA,MACf,MAAM,IAAI,MACR,+EACF;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,KAAK,OAAO,aAAa;AAAA,IACxC,MAAM,cAAc,GAAG,SAAS,QAAQ;AAAA,IACxC,MAAM,UAAU,KAAK,UAAU;AAAA,MAC7B;AAAA,MACA;AAAA,MACA,SAAS,QAAQ;AAAA,MACjB,MAAM,QAAQ;AAAA,IAChB,CAAC;AAAA,IAED,MAAM,KAAK,MAAM,QAAQ,aAAa,OAAO;AAAA;AAEjD;;AC3BO,MAAM,gBAA2C;AAAA,EAClC;AAAA,EAApB,WAAW,CAAS,QAA+B;AAAA,IAA/B;AAAA;AAAA,OAEd,UAAS,CACb,SACA,OACA,MACe;AAAA,IACf,MAAM,UAAU,KAAK,UAAU;AAAA,MAC7B,SAAS,QAAQ;AAAA,MACjB;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IAED,IAAI,cAAc,KAAK,OAAO,eAAe;AAAA,IAG7C,IAAI,KAAK,OAAO,4BAA4B;AAAA,MAC1C,cAAc,KAAK,OAAO,2BAA2B,QAAQ,IAAI;AAAA,IACnE;AAAA,IAGA,WAAW,cAAc,aAAa;AAAA,MACpC,IAAI,WAAW,eAAe,GAAG;AAAA,QAE/B,IAAI;AAAA,UACF,WAAW,KAAK,OAAO;AAAA,UACvB,OAAO,OAAO;AAAA,UAEd,QAAQ,MAAM,qCAAqC,KAAK;AAAA;AAAA,MAE5D;AAAA,IACF;AAAA;AAEJ;;ACzBO,MAAM,cAAsC;AAAA,EACzC;AAAA,EAER,WAAW,CAAC,SAA+B;AAAA,IACzC,KAAK,UAAU;AAAA;AAAA,SAMV,SAAS,CAAC,SAA8C;AAAA,IAC7D,OAAO,IAAI,cAAc,OAAO;AAAA;AAAA,OAG5B,QAAO,CAAC,MAAiC;AAAA,IAC7C,MAAM,UAAU,IAAI,iBAAiB,IAAI;AAAA,IAGzC,IAAI;AAAA,IAEJ,QAAQ,KAAK,QAAQ;AAAA,WACd;AAAA,QACH,SAAS,IAAI,aAAa,KAAK,QAAQ,MAA4B;AAAA,QACnE;AAAA,WACG;AAAA,QACH,SAAS,IAAI,WAAW,KAAK,QAAQ,MAA0B;AAAA,QAC/D;AAAA,WACG,SAAS;AAAA,QACZ,SAAS,IAAI,YAAY,KAAK,QAAQ,MAA2B;AAAA,QAEjE,MAAM,cAAc,KAAK,SAAS,IAAI,OAAO;AAAA,QAG7C,IAAI,aAAa;AAAA,UACb,OAAuB,eAAe,WAAW;AAAA,QACrD;AAAA,QACA;AAAA,MACF;AAAA,WACK;AAAA,QACH,SAAS,IAAI,gBAAgB,KAAK,QAAQ,MAA+B;AAAA,QACzE;AAAA;AAAA,QAEA,MAAM,IAAI,MAAM,iCAAiC,KAAK,QAAQ,QAAQ;AAAA;AAAA,IAG1E,QAAQ,UAAU,MAAM;AAAA,IAGxB,IAAI,KAAK,QAAQ,kBAAkB;AAAA,MACjC,QAAQ,gBAAgB,KAAK,QAAQ,gBAAgB;AAAA,IACvD;AAAA,IAGA,KAAK,SAAS,IAAI,aAAa,OAAO;AAAA,IAGtC,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,oBAAoB;AAAA,QAC9B,WAAW,OAAO,OAAY,SAAc,MAAW,cAAmB;AAAA,UACxE,MAAM,QAAQ,UAAU,OAAO,SAAS,MAAM,SAAS;AAAA;AAAA,MAE3D,CAAC;AAAA,IACH;AAAA,IAEA,KAAK,OAAO,KAAK,kCAAkC,KAAK,QAAQ,eAAe;AAAA;AAEnF;",
13
+ "mappings": "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",
14
14
  "debugId": "01B589AE84540A2064756E2164756E21",
15
15
  "names": []
16
16
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravito/radiance",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.5",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -39,7 +39,7 @@
39
39
  "author": "Carl Lee <carllee0520@gmail.com>",
40
40
  "license": "MIT",
41
41
  "dependencies": {
42
- "gravito-core": "1.0.0-beta.2"
42
+ "gravito-core": "1.0.0-beta.4"
43
43
  },
44
44
  "devDependencies": {
45
45
  "bun-types": "latest",