raffel 1.0.8 → 1.0.10-next.22f4d4e
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/dist/adapters/index.d.ts +3 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +2 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/smtp.d.ts +152 -0
- package/dist/adapters/smtp.d.ts.map +1 -0
- package/dist/adapters/smtp.js +1143 -0
- package/dist/adapters/smtp.js.map +1 -0
- package/dist/adapters/websocket.d.ts +100 -1
- package/dist/adapters/websocket.d.ts.map +1 -1
- package/dist/adapters/websocket.js +461 -16
- package/dist/adapters/websocket.js.map +1 -1
- package/dist/channels/channel-manager.d.ts.map +1 -1
- package/dist/channels/channel-manager.js +542 -4
- package/dist/channels/channel-manager.js.map +1 -1
- package/dist/channels/history.d.ts +54 -0
- package/dist/channels/history.d.ts.map +1 -0
- package/dist/channels/history.js +78 -0
- package/dist/channels/history.js.map +1 -0
- package/dist/channels/index.d.ts +9 -1
- package/dist/channels/index.d.ts.map +1 -1
- package/dist/channels/index.js +8 -1
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/recovery.d.ts +57 -0
- package/dist/channels/recovery.d.ts.map +1 -0
- package/dist/channels/recovery.js +58 -0
- package/dist/channels/recovery.js.map +1 -0
- package/dist/channels/rest-api.d.ts +32 -0
- package/dist/channels/rest-api.d.ts.map +1 -0
- package/dist/channels/rest-api.js +197 -0
- package/dist/channels/rest-api.js.map +1 -0
- package/dist/channels/ticket-store.d.ts +25 -0
- package/dist/channels/ticket-store.d.ts.map +1 -0
- package/dist/channels/ticket-store.js +70 -0
- package/dist/channels/ticket-store.js.map +1 -0
- package/dist/channels/types.d.ts +421 -5
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/channels/types.js +15 -1
- package/dist/channels/types.js.map +1 -1
- package/dist/client/index.d.ts +39 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +531 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/reconnect.d.ts +33 -0
- package/dist/client/reconnect.d.ts.map +1 -0
- package/dist/client/reconnect.js +60 -0
- package/dist/client/reconnect.js.map +1 -0
- package/dist/client/types.d.ts +107 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +5 -0
- package/dist/client/types.js.map +1 -0
- package/dist/index.d.ts +13 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptors/field-filter.d.ts +51 -0
- package/dist/middleware/interceptors/field-filter.d.ts.map +1 -0
- package/dist/middleware/interceptors/field-filter.js +81 -0
- package/dist/middleware/interceptors/field-filter.js.map +1 -0
- package/dist/middleware/interceptors/guard.d.ts +51 -0
- package/dist/middleware/interceptors/guard.d.ts.map +1 -0
- package/dist/middleware/interceptors/guard.js +45 -0
- package/dist/middleware/interceptors/guard.js.map +1 -0
- package/dist/middleware/interceptors/index.d.ts +4 -0
- package/dist/middleware/interceptors/index.d.ts.map +1 -1
- package/dist/middleware/interceptors/index.js +4 -0
- package/dist/middleware/interceptors/index.js.map +1 -1
- package/dist/resource-module/index.d.ts +44 -0
- package/dist/resource-module/index.d.ts.map +1 -0
- package/dist/resource-module/index.js +146 -0
- package/dist/resource-module/index.js.map +1 -0
- package/dist/resource-module/types.d.ts +109 -0
- package/dist/resource-module/types.d.ts.map +1 -0
- package/dist/resource-module/types.js +7 -0
- package/dist/resource-module/types.js.map +1 -0
- package/dist/resource-module/watch-helpers.d.ts +16 -0
- package/dist/resource-module/watch-helpers.d.ts.map +1 -0
- package/dist/resource-module/watch-helpers.js +65 -0
- package/dist/resource-module/watch-helpers.js.map +1 -0
- package/dist/server/types.d.ts +27 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/smtp/client.d.ts +12 -0
- package/dist/smtp/client.d.ts.map +1 -0
- package/dist/smtp/client.js +424 -0
- package/dist/smtp/client.js.map +1 -0
- package/dist/smtp/index.d.ts +13 -0
- package/dist/smtp/index.d.ts.map +1 -0
- package/dist/smtp/index.js +14 -0
- package/dist/smtp/index.js.map +1 -0
- package/dist/smtp/relay.d.ts +14 -0
- package/dist/smtp/relay.d.ts.map +1 -0
- package/dist/smtp/relay.js +418 -0
- package/dist/smtp/relay.js.map +1 -0
- package/dist/smtp/types.d.ts +194 -0
- package/dist/smtp/types.d.ts.map +1 -0
- package/dist/smtp/types.js +7 -0
- package/dist/smtp/types.js.map +1 -0
- package/dist/types/context.d.ts +15 -1
- package/dist/types/context.d.ts.map +1 -1
- package/dist/types/context.js +3 -0
- package/dist/types/context.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/ui/types/context.d.ts +15 -1
- package/dist/ui/types/context.d.ts.map +1 -1
- package/dist/ui/types/index.d.ts +1 -1
- package/dist/ui/types/index.d.ts.map +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Memory Ticket Store
|
|
3
|
+
*
|
|
4
|
+
* Default implementation of TicketStore for connection ticket auth.
|
|
5
|
+
* Tickets are single-use, short-lived tokens generated via HTTP
|
|
6
|
+
* and consumed on WebSocket connect.
|
|
7
|
+
*/
|
|
8
|
+
import type { ConnectionTicket, TicketStore } from './types.js';
|
|
9
|
+
export interface MemoryTicketStoreOptions {
|
|
10
|
+
/** GC interval in ms (default: 10000) */
|
|
11
|
+
gcInterval?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function createMemoryTicketStore(options?: MemoryTicketStoreOptions): TicketStore & {
|
|
14
|
+
dispose(): void;
|
|
15
|
+
size: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Helper: generate a ticket for a user
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateTicket(userId: string, options?: {
|
|
21
|
+
ttl?: number;
|
|
22
|
+
permissions?: string[];
|
|
23
|
+
metadata?: Record<string, unknown>;
|
|
24
|
+
}): ConnectionTicket;
|
|
25
|
+
//# sourceMappingURL=ticket-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket-store.d.ts","sourceRoot":"","sources":["../../src/channels/ticket-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE/D,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAA6B,GACrC,WAAW,GAAG;IAAE,OAAO,IAAI,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAuDjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IACR,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC,GACA,gBAAgB,CASlB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Memory Ticket Store
|
|
3
|
+
*
|
|
4
|
+
* Default implementation of TicketStore for connection ticket auth.
|
|
5
|
+
* Tickets are single-use, short-lived tokens generated via HTTP
|
|
6
|
+
* and consumed on WebSocket connect.
|
|
7
|
+
*/
|
|
8
|
+
import { sid } from '../utils/id/index.js';
|
|
9
|
+
export function createMemoryTicketStore(options = {}) {
|
|
10
|
+
const { gcInterval = 10_000 } = options;
|
|
11
|
+
const tickets = new Map();
|
|
12
|
+
// Periodic GC for expired tickets
|
|
13
|
+
const timer = setInterval(() => {
|
|
14
|
+
const now = Date.now();
|
|
15
|
+
for (const [id, ticket] of tickets) {
|
|
16
|
+
if (ticket.expiresAt < now || ticket.usedAt) {
|
|
17
|
+
tickets.delete(id);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}, gcInterval);
|
|
21
|
+
if (timer.unref)
|
|
22
|
+
timer.unref();
|
|
23
|
+
return {
|
|
24
|
+
async create(ticket) {
|
|
25
|
+
tickets.set(ticket.id, { ...ticket });
|
|
26
|
+
},
|
|
27
|
+
async consume(ticketId) {
|
|
28
|
+
const ticket = tickets.get(ticketId);
|
|
29
|
+
if (!ticket)
|
|
30
|
+
return null;
|
|
31
|
+
// Check expiration
|
|
32
|
+
if (ticket.expiresAt < Date.now()) {
|
|
33
|
+
tickets.delete(ticketId);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
// Check single-use
|
|
37
|
+
if (ticket.usedAt) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
// Mark as used and return
|
|
41
|
+
ticket.usedAt = Date.now();
|
|
42
|
+
tickets.delete(ticketId); // Remove after consumption
|
|
43
|
+
return ticket;
|
|
44
|
+
},
|
|
45
|
+
async revoke(ticketId) {
|
|
46
|
+
tickets.delete(ticketId);
|
|
47
|
+
},
|
|
48
|
+
dispose() {
|
|
49
|
+
clearInterval(timer);
|
|
50
|
+
tickets.clear();
|
|
51
|
+
},
|
|
52
|
+
get size() {
|
|
53
|
+
return tickets.size;
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Helper: generate a ticket for a user
|
|
59
|
+
*/
|
|
60
|
+
export function generateTicket(userId, options) {
|
|
61
|
+
const ttl = options?.ttl ?? 30_000;
|
|
62
|
+
return {
|
|
63
|
+
id: sid(),
|
|
64
|
+
userId,
|
|
65
|
+
permissions: options?.permissions,
|
|
66
|
+
expiresAt: Date.now() + ttl,
|
|
67
|
+
metadata: options?.metadata,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=ticket-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket-store.js","sourceRoot":"","sources":["../../src/channels/ticket-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAQ1C,MAAM,UAAU,uBAAuB,CACrC,UAAoC,EAAE;IAEtC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,GAAG,OAAO,CAAA;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAA;IAEnD,kCAAkC;IAClC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;IACH,CAAC,EAAE,UAAU,CAAC,CAAA;IAEd,IAAI,KAAK,CAAC,KAAK;QAAE,KAAK,CAAC,KAAK,EAAE,CAAA;IAE9B,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,MAAwB;YACnC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QACvC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,QAAgB;YAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACpC,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAA;YAExB,mBAAmB;YACnB,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAClC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACxB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,mBAAmB;YACnB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,0BAA0B;YAC1B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC,2BAA2B;YACpD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,QAAgB;YAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1B,CAAC;QAED,OAAO;YACL,aAAa,CAAC,KAAK,CAAC,CAAA;YACpB,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;QAED,IAAI,IAAI;YACN,OAAO,OAAO,CAAC,IAAI,CAAA;QACrB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,OAIC;IAED,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,MAAM,CAAA;IAClC,OAAO;QACL,EAAE,EAAE,GAAG,EAAE;QACT,MAAM;QACN,WAAW,EAAE,OAAO,EAAE,WAAW;QACjC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG;QAC3B,QAAQ,EAAE,OAAO,EAAE,QAAQ;KAC5B,CAAA;AACH,CAAC"}
|
package/dist/channels/types.d.ts
CHANGED
|
@@ -12,7 +12,171 @@ import type { Context } from '../types/index.js';
|
|
|
12
12
|
/**
|
|
13
13
|
* Channel type based on name prefix
|
|
14
14
|
*/
|
|
15
|
-
export type ChannelType = 'public' | 'private' | 'presence';
|
|
15
|
+
export type ChannelType = 'public' | 'private' | 'presence' | 'queue';
|
|
16
|
+
/**
|
|
17
|
+
* A short-lived, single-use connection ticket.
|
|
18
|
+
* Generated server-side via HTTP, consumed on WS connect.
|
|
19
|
+
*/
|
|
20
|
+
export interface ConnectionTicket {
|
|
21
|
+
/** Unique ticket ID */
|
|
22
|
+
id: string;
|
|
23
|
+
/** User/principal identifier */
|
|
24
|
+
userId: string;
|
|
25
|
+
/** Allowed channel patterns (glob-like: 'private-user-123', 'presence-*') */
|
|
26
|
+
permissions?: string[];
|
|
27
|
+
/** Expiration timestamp (ms since epoch) */
|
|
28
|
+
expiresAt: number;
|
|
29
|
+
/** Whether this ticket has been consumed */
|
|
30
|
+
usedAt?: number;
|
|
31
|
+
/** Custom metadata carried into the connection context */
|
|
32
|
+
metadata?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Storage backend for connection tickets (port interface).
|
|
36
|
+
* Default: in-memory. Can be backed by Redis for multi-instance.
|
|
37
|
+
*/
|
|
38
|
+
export interface TicketStore {
|
|
39
|
+
/** Store a new ticket */
|
|
40
|
+
create(ticket: ConnectionTicket): Promise<void>;
|
|
41
|
+
/** Consume a ticket (single-use). Returns null if not found, expired, or already used. */
|
|
42
|
+
consume(ticketId: string): Promise<ConnectionTicket | null>;
|
|
43
|
+
/** Revoke a ticket before use */
|
|
44
|
+
revoke(ticketId: string): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* WebSocket authentication configuration
|
|
48
|
+
*/
|
|
49
|
+
export interface WebSocketAuthConfig {
|
|
50
|
+
/**
|
|
51
|
+
* Auth mode:
|
|
52
|
+
* - 'ticket': single-use token from HTTP endpoint (recommended for browsers)
|
|
53
|
+
* - 'bearer': JWT/token in query param or first message
|
|
54
|
+
* - 'custom': your own extraction logic
|
|
55
|
+
*/
|
|
56
|
+
mode: 'ticket' | 'bearer' | 'custom';
|
|
57
|
+
/** Ticket store (required for 'ticket' mode, default: in-memory) */
|
|
58
|
+
ticketStore?: TicketStore;
|
|
59
|
+
/** Ticket TTL in ms (default: 30000 = 30s) */
|
|
60
|
+
ticketTTL?: number;
|
|
61
|
+
/**
|
|
62
|
+
* Extract auth token from the HTTP upgrade request.
|
|
63
|
+
* Default: reads `?ticket=xxx` or `?token=xxx` from query string,
|
|
64
|
+
* or `Authorization: Bearer xxx` header.
|
|
65
|
+
*/
|
|
66
|
+
extractToken?: (req: import('http').IncomingMessage) => string | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Validate a token and return auth context seed.
|
|
69
|
+
* Called for 'bearer' and 'custom' modes.
|
|
70
|
+
* Return null to reject the connection.
|
|
71
|
+
*/
|
|
72
|
+
validateToken?: (token: string) => import('../types/index.js').ContextSeed | null | Promise<import('../types/index.js').ContextSeed | null>;
|
|
73
|
+
/**
|
|
74
|
+
* Validate a refresh token sent mid-connection.
|
|
75
|
+
* Return new context seed or null to reject.
|
|
76
|
+
*/
|
|
77
|
+
refreshToken?: (token: string) => import('../types/index.js').ContextSeed | null | Promise<import('../types/index.js').ContextSeed | null>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Per-connection rate limits for WebSocket operations
|
|
81
|
+
*/
|
|
82
|
+
export interface ChannelRateLimits {
|
|
83
|
+
/** Max channels a single client can subscribe to (default: 100) */
|
|
84
|
+
maxChannelsPerClient?: number;
|
|
85
|
+
/** Max subscribe operations per second per client (default: 10) */
|
|
86
|
+
maxSubscribesPerSecond?: number;
|
|
87
|
+
/** Max publish operations per second per client (default: 10) */
|
|
88
|
+
maxPublishesPerSecond?: number;
|
|
89
|
+
/** Max total messages per second per client (default: 50) */
|
|
90
|
+
maxMessagesPerSecond?: number;
|
|
91
|
+
/** Called when a client is rate-limited */
|
|
92
|
+
onRateLimited?: (socketId: string, operation: string, limit: number) => void;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Backpressure handling for slow consumers
|
|
96
|
+
*/
|
|
97
|
+
export interface BackpressureConfig {
|
|
98
|
+
/** Max bytes buffered in the socket's write queue before action (default: 1MB) */
|
|
99
|
+
maxBufferedAmount?: number;
|
|
100
|
+
/** What to do when buffer exceeds limit */
|
|
101
|
+
strategy?: 'drop' | 'disconnect';
|
|
102
|
+
/** Called when a slow consumer is detected */
|
|
103
|
+
onSlowConsumer?: (socketId: string, bufferedAmount: number) => void;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Connected client info exposed via the manager
|
|
107
|
+
*/
|
|
108
|
+
export interface ClientInfo {
|
|
109
|
+
/** Socket/connection ID */
|
|
110
|
+
id: string;
|
|
111
|
+
/** User ID from auth context (if available) */
|
|
112
|
+
userId?: string;
|
|
113
|
+
/** Custom data attached at connect time */
|
|
114
|
+
data: Record<string, unknown>;
|
|
115
|
+
/** Channels this client is subscribed to */
|
|
116
|
+
channels: string[];
|
|
117
|
+
/** When the client connected */
|
|
118
|
+
connectedAt: number;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Room: a private 1:1 channel between exactly two clients
|
|
122
|
+
*/
|
|
123
|
+
export interface RoomInfo {
|
|
124
|
+
/** Auto-generated room name */
|
|
125
|
+
name: string;
|
|
126
|
+
/** The two participant socket IDs */
|
|
127
|
+
participants: [string, string];
|
|
128
|
+
/** When the room was created */
|
|
129
|
+
createdAt: number;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Group: a named collection of N clients for targeted messaging
|
|
133
|
+
*/
|
|
134
|
+
export interface GroupInfo {
|
|
135
|
+
/** Group name */
|
|
136
|
+
name: string;
|
|
137
|
+
/** Member socket IDs */
|
|
138
|
+
members: Set<string>;
|
|
139
|
+
/** Custom metadata */
|
|
140
|
+
data: Record<string, unknown>;
|
|
141
|
+
/** When the group was created */
|
|
142
|
+
createdAt: number;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Lifecycle event data passed to hooks
|
|
146
|
+
*/
|
|
147
|
+
export interface ClientConnectEvent {
|
|
148
|
+
socketId: string;
|
|
149
|
+
remoteAddress?: string;
|
|
150
|
+
headers: Record<string, string>;
|
|
151
|
+
}
|
|
152
|
+
export interface ClientDisconnectEvent {
|
|
153
|
+
socketId: string;
|
|
154
|
+
code: number;
|
|
155
|
+
reason: string;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Webhook-ready lifecycle hooks
|
|
159
|
+
*/
|
|
160
|
+
export interface ChannelLifecycleHooks {
|
|
161
|
+
/** Called when a client connects (after auth/filter) */
|
|
162
|
+
onConnect?: (event: ClientConnectEvent) => void | Promise<void>;
|
|
163
|
+
/** Called when a client disconnects */
|
|
164
|
+
onDisconnect?: (event: ClientDisconnectEvent) => void | Promise<void>;
|
|
165
|
+
/** Called after a successful subscribe */
|
|
166
|
+
onSubscribe?: (socketId: string, channel: string) => void | Promise<void>;
|
|
167
|
+
/** Called after unsubscribe */
|
|
168
|
+
onUnsubscribe?: (socketId: string, channel: string) => void | Promise<void>;
|
|
169
|
+
/** Called when a member joins a presence channel */
|
|
170
|
+
onMemberAdded?: (channel: string, member: ChannelMember) => void | Promise<void>;
|
|
171
|
+
/** Called when a member leaves a presence channel */
|
|
172
|
+
onMemberRemoved?: (channel: string, member: ChannelMember) => void | Promise<void>;
|
|
173
|
+
/** Called after a successful publish to a channel */
|
|
174
|
+
onPublish?: (socketId: string, channel: string, event: string, data: unknown) => void | Promise<void>;
|
|
175
|
+
/** Called when a new channel is created (first subscriber) */
|
|
176
|
+
onChannelCreated?: (channel: string, type: ChannelType) => void | Promise<void>;
|
|
177
|
+
/** Called when a channel is destroyed (last subscriber left) */
|
|
178
|
+
onChannelDestroyed?: (channel: string, type: ChannelType) => void | Promise<void>;
|
|
179
|
+
}
|
|
16
180
|
/**
|
|
17
181
|
* Configuration options for channels
|
|
18
182
|
*/
|
|
@@ -69,6 +233,62 @@ export interface ChannelOptions {
|
|
|
69
233
|
* @returns true to allow, false to reject
|
|
70
234
|
*/
|
|
71
235
|
onPublish?: (socketId: string, channel: string, event: string, data: unknown, ctx: Context) => boolean | Promise<boolean>;
|
|
236
|
+
/** Lifecycle hooks for webhook integration */
|
|
237
|
+
hooks?: ChannelLifecycleHooks;
|
|
238
|
+
/** Custom data to attach to clients on connect */
|
|
239
|
+
clientData?: (socketId: string, ctx: Context) => Record<string, unknown>;
|
|
240
|
+
/** Per-connection rate limits */
|
|
241
|
+
rateLimits?: ChannelRateLimits;
|
|
242
|
+
/**
|
|
243
|
+
* Message history configuration for catchup on reconnect.
|
|
244
|
+
* When enabled, recent messages are stored and can be replayed
|
|
245
|
+
* to clients that provide a `since` field in their subscribe message.
|
|
246
|
+
*/
|
|
247
|
+
history?: {
|
|
248
|
+
/** Enable message history (default: false) */
|
|
249
|
+
enabled: boolean;
|
|
250
|
+
/** Max entries per channel (default: 100) */
|
|
251
|
+
maxSize?: number;
|
|
252
|
+
/** TTL in ms for history entries (default: 300000 = 5 minutes) */
|
|
253
|
+
ttl?: number;
|
|
254
|
+
};
|
|
255
|
+
/**
|
|
256
|
+
* Transform messages before broadcast.
|
|
257
|
+
* Return null to drop the message.
|
|
258
|
+
* Return modified data to transform.
|
|
259
|
+
*/
|
|
260
|
+
transform?: (channel: string, event: string, data: unknown, ctx: {
|
|
261
|
+
socketId: string;
|
|
262
|
+
userId?: string;
|
|
263
|
+
}) => unknown | null | Promise<unknown | null>;
|
|
264
|
+
/**
|
|
265
|
+
* Maximum subscribers per channel.
|
|
266
|
+
* Can be a fixed number or a function that returns the limit per channel name.
|
|
267
|
+
*/
|
|
268
|
+
maxSubscribersPerChannel?: number | ((channel: string) => number);
|
|
269
|
+
/**
|
|
270
|
+
* Typing indicator configuration
|
|
271
|
+
*/
|
|
272
|
+
typing?: {
|
|
273
|
+
/** Enable typing indicators (default: false) */
|
|
274
|
+
enabled?: boolean;
|
|
275
|
+
/** Auto-stop typing after ms (default: 5000) */
|
|
276
|
+
timeout?: number;
|
|
277
|
+
};
|
|
278
|
+
/**
|
|
279
|
+
* REST API configuration for server-side publishing.
|
|
280
|
+
* When enabled, mounts HTTP endpoints for channel management.
|
|
281
|
+
*/
|
|
282
|
+
restApi?: {
|
|
283
|
+
/** Enable REST API (default: false) */
|
|
284
|
+
enabled: boolean;
|
|
285
|
+
/** Base path for REST endpoints (default: '/channels') */
|
|
286
|
+
path?: string;
|
|
287
|
+
/** API key for authentication (simple string check) */
|
|
288
|
+
apiKey?: string;
|
|
289
|
+
/** Custom auth function (overrides apiKey) */
|
|
290
|
+
auth?: (req: import('http').IncomingMessage) => boolean | Promise<boolean>;
|
|
291
|
+
};
|
|
72
292
|
}
|
|
73
293
|
/**
|
|
74
294
|
* A member in a presence channel
|
|
@@ -97,6 +317,12 @@ export interface ChannelState {
|
|
|
97
317
|
members?: Map<string, ChannelMember>;
|
|
98
318
|
/** When channel was created */
|
|
99
319
|
createdAt: number;
|
|
320
|
+
/** Monotonically increasing sequence number for message ordering */
|
|
321
|
+
sequence: number;
|
|
322
|
+
/** Epoch identifier — changes on server restart (for detecting stale offsets) */
|
|
323
|
+
epoch: string;
|
|
324
|
+
/** Round-robin index for queue channels */
|
|
325
|
+
roundRobinIndex?: number;
|
|
100
326
|
}
|
|
101
327
|
/**
|
|
102
328
|
* Result of a subscribe operation
|
|
@@ -118,9 +344,13 @@ export interface SubscribeResult {
|
|
|
118
344
|
*/
|
|
119
345
|
export interface ChannelManager {
|
|
120
346
|
/**
|
|
121
|
-
* Subscribe a socket to a channel
|
|
347
|
+
* Subscribe a socket to a channel.
|
|
348
|
+
* Optionally pass `since` to replay missed messages from history.
|
|
122
349
|
*/
|
|
123
|
-
subscribe(socketId: string, channel: string, ctx: Context
|
|
350
|
+
subscribe(socketId: string, channel: string, ctx: Context, since?: {
|
|
351
|
+
seq: number;
|
|
352
|
+
epoch: string;
|
|
353
|
+
}): Promise<SubscribeResult>;
|
|
124
354
|
/**
|
|
125
355
|
* Unsubscribe a socket from a channel
|
|
126
356
|
*/
|
|
@@ -182,6 +412,114 @@ export interface ChannelManager {
|
|
|
182
412
|
* Get subscriber count for a channel
|
|
183
413
|
*/
|
|
184
414
|
getSubscriberCount(channel: string): number;
|
|
415
|
+
/**
|
|
416
|
+
* Register a connected client (called by WS adapter on connect)
|
|
417
|
+
*/
|
|
418
|
+
registerClient(socketId: string, info?: Partial<Pick<ClientInfo, 'userId' | 'data'>>): void;
|
|
419
|
+
/**
|
|
420
|
+
* Remove a connected client (called by WS adapter on disconnect)
|
|
421
|
+
*/
|
|
422
|
+
removeClient(socketId: string): void;
|
|
423
|
+
/**
|
|
424
|
+
* Get info about a specific client
|
|
425
|
+
*/
|
|
426
|
+
getClient(socketId: string): ClientInfo | undefined;
|
|
427
|
+
/**
|
|
428
|
+
* Get all connected clients
|
|
429
|
+
*/
|
|
430
|
+
getClients(): ClientInfo[];
|
|
431
|
+
/**
|
|
432
|
+
* Get total connected client count
|
|
433
|
+
*/
|
|
434
|
+
getClientCount(): number;
|
|
435
|
+
/**
|
|
436
|
+
* Send an event directly to a client (no channel needed)
|
|
437
|
+
*/
|
|
438
|
+
sendToClient(socketId: string, event: string, data: unknown): void;
|
|
439
|
+
/**
|
|
440
|
+
* Broadcast an event to ALL connected clients
|
|
441
|
+
*/
|
|
442
|
+
broadcastAll(event: string, data: unknown, except?: string): void;
|
|
443
|
+
/**
|
|
444
|
+
* Create a private room between exactly two clients.
|
|
445
|
+
* Both clients are auto-subscribed and can exchange messages.
|
|
446
|
+
*/
|
|
447
|
+
createRoom(socketA: string, socketB: string): RoomInfo;
|
|
448
|
+
/**
|
|
449
|
+
* Send an event to a room (both participants receive it)
|
|
450
|
+
*/
|
|
451
|
+
sendToRoom(roomName: string, event: string, data: unknown, except?: string): void;
|
|
452
|
+
/**
|
|
453
|
+
* Get room info
|
|
454
|
+
*/
|
|
455
|
+
getRoom(roomName: string): RoomInfo | undefined;
|
|
456
|
+
/**
|
|
457
|
+
* Get all rooms a client is in
|
|
458
|
+
*/
|
|
459
|
+
getClientRooms(socketId: string): RoomInfo[];
|
|
460
|
+
/**
|
|
461
|
+
* Close a room (unsubscribe both participants)
|
|
462
|
+
*/
|
|
463
|
+
closeRoom(roomName: string): void;
|
|
464
|
+
/**
|
|
465
|
+
* Create a named group
|
|
466
|
+
*/
|
|
467
|
+
createGroup(name: string, data?: Record<string, unknown>): GroupInfo;
|
|
468
|
+
/**
|
|
469
|
+
* Add a client to a group
|
|
470
|
+
*/
|
|
471
|
+
joinGroup(groupName: string, socketId: string): void;
|
|
472
|
+
/**
|
|
473
|
+
* Remove a client from a group
|
|
474
|
+
*/
|
|
475
|
+
leaveGroup(groupName: string, socketId: string): void;
|
|
476
|
+
/**
|
|
477
|
+
* Send an event to all members of a group
|
|
478
|
+
*/
|
|
479
|
+
sendToGroup(groupName: string, event: string, data: unknown, except?: string): void;
|
|
480
|
+
/**
|
|
481
|
+
* Get group info
|
|
482
|
+
*/
|
|
483
|
+
getGroup(groupName: string): GroupInfo | undefined;
|
|
484
|
+
/**
|
|
485
|
+
* Get all groups
|
|
486
|
+
*/
|
|
487
|
+
getGroups(): GroupInfo[];
|
|
488
|
+
/**
|
|
489
|
+
* Get all groups a client belongs to
|
|
490
|
+
*/
|
|
491
|
+
getClientGroups(socketId: string): GroupInfo[];
|
|
492
|
+
/**
|
|
493
|
+
* Delete a group
|
|
494
|
+
*/
|
|
495
|
+
deleteGroup(groupName: string): void;
|
|
496
|
+
/**
|
|
497
|
+
* Recover a client's subscriptions from a previous session.
|
|
498
|
+
* Re-subscribes the new socket to all channels and replays
|
|
499
|
+
* missed messages from history (if available).
|
|
500
|
+
*/
|
|
501
|
+
recoverClient(oldSocketId: string, newSocketId: string, channels: {
|
|
502
|
+
name: string;
|
|
503
|
+
lastSeq: number;
|
|
504
|
+
}[]): void;
|
|
505
|
+
/**
|
|
506
|
+
* Replay missed messages from history for a specific channel.
|
|
507
|
+
* Called after subscribe+subscribed to send catchup messages.
|
|
508
|
+
*/
|
|
509
|
+
replayHistory(socketId: string, channel: string, sinceSeq: number, epoch: string): void;
|
|
510
|
+
/**
|
|
511
|
+
* Get the current epoch for the server (used for history queries).
|
|
512
|
+
*/
|
|
513
|
+
getEpoch(): string;
|
|
514
|
+
/**
|
|
515
|
+
* Get the current sequence number for a channel.
|
|
516
|
+
*/
|
|
517
|
+
getSequence(channel: string): number;
|
|
518
|
+
/**
|
|
519
|
+
* Handle a typing indicator for a socket on a channel.
|
|
520
|
+
* Only works when typing indicators are enabled in options.
|
|
521
|
+
*/
|
|
522
|
+
handleTyping(socketId: string, channel: string, isTyping: boolean): void;
|
|
185
523
|
}
|
|
186
524
|
/**
|
|
187
525
|
* Client → Server: Subscribe to a channel
|
|
@@ -190,6 +528,18 @@ export interface SubscribeMessage {
|
|
|
190
528
|
id: string;
|
|
191
529
|
type: 'subscribe';
|
|
192
530
|
channel: string;
|
|
531
|
+
/** Resume from a specific sequence (for catchup on reconnect) */
|
|
532
|
+
since?: {
|
|
533
|
+
seq: number;
|
|
534
|
+
epoch: string;
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Client → Server: Recover a previous session
|
|
539
|
+
*/
|
|
540
|
+
export interface RecoverMessage {
|
|
541
|
+
type: 'recover';
|
|
542
|
+
recoveryToken: string;
|
|
193
543
|
}
|
|
194
544
|
/**
|
|
195
545
|
* Server → Client: Subscription successful
|
|
@@ -235,6 +585,68 @@ export interface ChannelEventMessage {
|
|
|
235
585
|
channel: string;
|
|
236
586
|
event: string;
|
|
237
587
|
data: unknown;
|
|
588
|
+
/** Sequence number (monotonically increasing per channel) */
|
|
589
|
+
seq?: number;
|
|
590
|
+
/** Server epoch (changes on restart, used to detect stale offsets) */
|
|
591
|
+
epoch?: string;
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Client → Server: Refresh auth token mid-connection
|
|
595
|
+
*/
|
|
596
|
+
export interface AuthRefreshMessage {
|
|
597
|
+
id: string;
|
|
598
|
+
type: 'auth:refresh';
|
|
599
|
+
token: string;
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Server → Client: Auth refresh result
|
|
603
|
+
*/
|
|
604
|
+
export interface AuthRefreshedMessage {
|
|
605
|
+
id: string;
|
|
606
|
+
type: 'auth:refreshed';
|
|
607
|
+
}
|
|
608
|
+
/**
|
|
609
|
+
* Client → Server: Batch subscribe to multiple channels
|
|
610
|
+
*/
|
|
611
|
+
export interface BatchSubscribeMessage {
|
|
612
|
+
id: string;
|
|
613
|
+
type: 'subscribe:batch';
|
|
614
|
+
channels: Array<{
|
|
615
|
+
channel: string;
|
|
616
|
+
since?: {
|
|
617
|
+
seq: number;
|
|
618
|
+
epoch: string;
|
|
619
|
+
};
|
|
620
|
+
}>;
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Server → Client: Batch subscription results
|
|
624
|
+
*/
|
|
625
|
+
export interface BatchSubscribedMessage {
|
|
626
|
+
id: string;
|
|
627
|
+
type: 'subscribed:batch';
|
|
628
|
+
results: Record<string, SubscribeResult>;
|
|
629
|
+
}
|
|
630
|
+
/**
|
|
631
|
+
* Client → Server: Batch publish to multiple channels
|
|
632
|
+
*/
|
|
633
|
+
export interface BatchPublishMessage {
|
|
634
|
+
id: string;
|
|
635
|
+
type: 'publish:batch';
|
|
636
|
+
messages: Array<{
|
|
637
|
+
channel: string;
|
|
638
|
+
event: string;
|
|
639
|
+
data: unknown;
|
|
640
|
+
}>;
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Client → Server: Typing indicator
|
|
644
|
+
*/
|
|
645
|
+
export interface TypingMessage {
|
|
646
|
+
id: string;
|
|
647
|
+
type: 'typing';
|
|
648
|
+
channel: string;
|
|
649
|
+
isTyping: boolean;
|
|
238
650
|
}
|
|
239
651
|
/**
|
|
240
652
|
* Server → Client: Channel error
|
|
@@ -249,11 +661,15 @@ export interface ChannelErrorMessage {
|
|
|
249
661
|
/**
|
|
250
662
|
* All channel-related message types
|
|
251
663
|
*/
|
|
252
|
-
export type ChannelMessage = SubscribeMessage | SubscribedMessage | UnsubscribeMessage | UnsubscribedMessage | PublishMessage | ChannelEventMessage | ChannelErrorMessage;
|
|
664
|
+
export type ChannelMessage = SubscribeMessage | SubscribedMessage | UnsubscribeMessage | UnsubscribedMessage | PublishMessage | ChannelEventMessage | ChannelErrorMessage | AuthRefreshMessage | AuthRefreshedMessage | RecoverMessage | BatchSubscribeMessage | BatchSubscribedMessage | BatchPublishMessage | TypingMessage;
|
|
253
665
|
/**
|
|
254
666
|
* Check if a message is a channel-related message
|
|
255
667
|
*/
|
|
256
|
-
export declare function isChannelMessage(message: unknown): message is SubscribeMessage | UnsubscribeMessage | PublishMessage;
|
|
668
|
+
export declare function isChannelMessage(message: unknown): message is SubscribeMessage | UnsubscribeMessage | PublishMessage | BatchSubscribeMessage | BatchPublishMessage | TypingMessage;
|
|
669
|
+
/**
|
|
670
|
+
* Check if a message is a recovery message
|
|
671
|
+
*/
|
|
672
|
+
export declare function isRecoverMessage(message: unknown): message is RecoverMessage;
|
|
257
673
|
/**
|
|
258
674
|
* Get channel type from name
|
|
259
675
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/channels/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/channels/types.ts"],"names":[],"mappings":"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"}
|
package/dist/channels/types.js
CHANGED
|
@@ -17,7 +17,19 @@ export function isChannelMessage(message) {
|
|
|
17
17
|
const msg = message;
|
|
18
18
|
return (msg.type === 'subscribe' ||
|
|
19
19
|
msg.type === 'unsubscribe' ||
|
|
20
|
-
msg.type === 'publish'
|
|
20
|
+
msg.type === 'publish' ||
|
|
21
|
+
msg.type === 'subscribe:batch' ||
|
|
22
|
+
msg.type === 'publish:batch' ||
|
|
23
|
+
msg.type === 'typing');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if a message is a recovery message
|
|
27
|
+
*/
|
|
28
|
+
export function isRecoverMessage(message) {
|
|
29
|
+
if (!message || typeof message !== 'object')
|
|
30
|
+
return false;
|
|
31
|
+
const msg = message;
|
|
32
|
+
return msg.type === 'recover' && typeof msg.recoveryToken === 'string';
|
|
21
33
|
}
|
|
22
34
|
/**
|
|
23
35
|
* Get channel type from name
|
|
@@ -27,6 +39,8 @@ export function getChannelType(name) {
|
|
|
27
39
|
return 'presence';
|
|
28
40
|
if (name.startsWith('private-'))
|
|
29
41
|
return 'private';
|
|
42
|
+
if (name.startsWith('queue-'))
|
|
43
|
+
return 'queue';
|
|
30
44
|
return 'public';
|
|
31
45
|
}
|
|
32
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/channels/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/channels/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAm0BH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgB;IAEhB,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACzD,MAAM,GAAG,GAAG,OAAkC,CAAA;IAC9C,OAAO,CACL,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,GAAG,CAAC,IAAI,KAAK,aAAa;QAC1B,GAAG,CAAC,IAAI,KAAK,SAAS;QACtB,GAAG,CAAC,IAAI,KAAK,iBAAiB;QAC9B,GAAG,CAAC,IAAI,KAAK,eAAe;QAC5B,GAAG,CAAC,IAAI,KAAK,QAAQ,CACtB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgB;IAEhB,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACzD,MAAM,GAAG,GAAG,OAAkC,CAAA;IAC9C,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAA;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAA;IACnD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAA;IACjD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAA;IAC7C,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACpC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,CAAA;AAClD,CAAC"}
|