raffel 1.0.10 → 1.0.12-next.1aa337a
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 +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/websocket.d.ts +100 -1
- package/dist/adapters/websocket.d.ts.map +1 -1
- package/dist/adapters/websocket.js +466 -25
- package/dist/adapters/websocket.js.map +1 -1
- package/dist/channels/channel-manager.d.ts.map +1 -1
- package/dist/channels/channel-manager.js +265 -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 +267 -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 +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- 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/package.json +10 -1
package/dist/adapters/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* @deprecated Import from 'adapters/inbound' or 'adapters/outbound' for hexagonal clarity.
|
|
12
12
|
*/
|
|
13
13
|
export { createWebSocketAdapter } from './websocket.js';
|
|
14
|
-
export type { WebSocketAdapter, WebSocketAdapterOptions } from './websocket.js';
|
|
14
|
+
export type { WebSocketAdapter, WebSocketAdapterOptions, WebSocketClientInfo } from './websocket.js';
|
|
15
15
|
export { createHttpAdapter } from './http.js';
|
|
16
16
|
export type { HttpAdapter, HttpAdapterOptions, HttpMiddleware } from './http.js';
|
|
17
17
|
export { createTcpAdapter, createTcpClient } from './tcp.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAGpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGhF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC5D,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAG7D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC5D,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAG7D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACtF,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,YAAY,GACb,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGhG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGjJ,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAA;AACpG,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA"}
|
|
@@ -8,7 +8,8 @@ import { WebSocket } from 'ws';
|
|
|
8
8
|
import type { IncomingMessage, Server } from 'node:http';
|
|
9
9
|
import type { Router } from '../core/router.js';
|
|
10
10
|
import type { ContextSeed } from '../types/index.js';
|
|
11
|
-
import { type ChannelOptions, type ChannelManager } from '../channels/index.js';
|
|
11
|
+
import { type ChannelOptions, type ChannelManager, type WebSocketAuthConfig, type BackpressureConfig } from '../channels/index.js';
|
|
12
|
+
import { type ConnectionRecoveryPort } from '../channels/recovery.js';
|
|
12
13
|
import { type WebSocketConnectionFilter } from './utils/connection-filter.js';
|
|
13
14
|
/**
|
|
14
15
|
* WebSocket adapter configuration
|
|
@@ -54,6 +55,78 @@ export interface WebSocketAdapterOptions {
|
|
|
54
55
|
channels?: ChannelOptions;
|
|
55
56
|
/** Inbound connection filter — controls which source IPs/origins may connect */
|
|
56
57
|
filter?: WebSocketConnectionFilter;
|
|
58
|
+
/** WebSocket authentication (ticket, bearer, or custom) */
|
|
59
|
+
auth?: WebSocketAuthConfig;
|
|
60
|
+
/** Backpressure handling for slow consumers */
|
|
61
|
+
backpressure?: BackpressureConfig;
|
|
62
|
+
/** Enable per-message compression (default: false) */
|
|
63
|
+
compression?: boolean | {
|
|
64
|
+
/** Minimum payload size in bytes to compress (default: 1024) */
|
|
65
|
+
threshold?: number;
|
|
66
|
+
/** zlib compression level 1-9 (default: 1) */
|
|
67
|
+
level?: number;
|
|
68
|
+
};
|
|
69
|
+
/** Connection state recovery (requires channels to be enabled) */
|
|
70
|
+
recovery?: {
|
|
71
|
+
/** Enable connection recovery (default: false) */
|
|
72
|
+
enabled: boolean;
|
|
73
|
+
/** TTL in ms for recovery sessions (default: 120000 = 2 minutes) */
|
|
74
|
+
ttl?: number;
|
|
75
|
+
/** Custom recovery store (default: in-memory) */
|
|
76
|
+
store?: ConnectionRecoveryPort;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Raw message handler — called BEFORE any Raffel processing.
|
|
80
|
+
* Return `true` to indicate the message was handled (skip default processing).
|
|
81
|
+
* Return `false` to let Raffel process it normally.
|
|
82
|
+
*
|
|
83
|
+
* Use this to implement your own protocol on top of WebSocket,
|
|
84
|
+
* or to intercept/modify messages before they reach the router.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* onMessage: (socketId, raw, send) => {
|
|
89
|
+
* const msg = JSON.parse(raw)
|
|
90
|
+
* if (msg.type === 'my-custom-type') {
|
|
91
|
+
* send({ type: 'my-response', data: 'handled' })
|
|
92
|
+
* return true // Handled, skip Raffel
|
|
93
|
+
* }
|
|
94
|
+
* return false // Let Raffel handle it
|
|
95
|
+
* }
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
onMessage?: (socketId: string, raw: string | Buffer, send: (message: unknown) => void) => boolean | Promise<boolean>;
|
|
99
|
+
/**
|
|
100
|
+
* Called when a new client connects (after auth + filter).
|
|
101
|
+
* Receives the socket ID and a send function for the connection.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* onConnection: (socketId, send, req) => {
|
|
106
|
+
* send({ type: 'welcome', socketId })
|
|
107
|
+
* }
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
onConnection?: (socketId: string, send: (message: unknown) => void, req: IncomingMessage) => void | Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* Called when a client disconnects.
|
|
113
|
+
*/
|
|
114
|
+
onClose?: (socketId: string, code: number, reason: string) => void | Promise<void>;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Minimal client info exposed by the adapter
|
|
118
|
+
*/
|
|
119
|
+
export interface WebSocketClientInfo {
|
|
120
|
+
/** Unique socket ID */
|
|
121
|
+
id: string;
|
|
122
|
+
/** Remote IP address */
|
|
123
|
+
remoteAddress?: string;
|
|
124
|
+
/** Connection metadata (headers) */
|
|
125
|
+
metadata: Record<string, string>;
|
|
126
|
+
/** Auth context seed (if authenticated) */
|
|
127
|
+
authSeed?: ContextSeed;
|
|
128
|
+
/** When the client connected */
|
|
129
|
+
connectedAt: number;
|
|
57
130
|
}
|
|
58
131
|
/**
|
|
59
132
|
* WebSocket Adapter
|
|
@@ -70,6 +143,32 @@ export interface WebSocketAdapter {
|
|
|
70
143
|
* Only available when `channels` option is provided.
|
|
71
144
|
*/
|
|
72
145
|
readonly channels: ChannelManager | null;
|
|
146
|
+
/**
|
|
147
|
+
* Send a raw message to a specific client by socket ID.
|
|
148
|
+
* Works regardless of channel subscriptions.
|
|
149
|
+
*/
|
|
150
|
+
send(socketId: string, message: unknown): void;
|
|
151
|
+
/**
|
|
152
|
+
* Send raw data (string or Buffer) to a specific client.
|
|
153
|
+
* Bypasses JSON serialization — use for binary or custom protocols.
|
|
154
|
+
*/
|
|
155
|
+
sendRaw(socketId: string, data: string | Buffer): void;
|
|
156
|
+
/**
|
|
157
|
+
* Broadcast a message to ALL connected clients.
|
|
158
|
+
*/
|
|
159
|
+
broadcast(message: unknown, except?: string): void;
|
|
160
|
+
/**
|
|
161
|
+
* Get info about a specific connected client.
|
|
162
|
+
*/
|
|
163
|
+
getClient(socketId: string): WebSocketClientInfo | undefined;
|
|
164
|
+
/**
|
|
165
|
+
* Get all connected clients.
|
|
166
|
+
*/
|
|
167
|
+
getClients(): WebSocketClientInfo[];
|
|
168
|
+
/**
|
|
169
|
+
* Disconnect a specific client.
|
|
170
|
+
*/
|
|
171
|
+
disconnect(socketId: string, code?: number, reason?: string): void;
|
|
73
172
|
}
|
|
74
173
|
/**
|
|
75
174
|
* Create a WebSocket adapter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/adapters/websocket.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAmB,SAAS,EAAE,MAAM,IAAI,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAqB,WAAW,EAAE,MAAM,mBAAmB,CAAA;AASvE,OAAO,
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/adapters/websocket.ts"],"names":[],"mappings":"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"}
|