typeferry 0.14.0 → 0.15.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.
- package/dist/server/event.d.ts +8 -0
- package/dist/server/event.js +2 -0
- package/dist/server/event.js.map +1 -1
- package/dist/server/room-registry.d.ts +12 -3
- package/dist/server/room-registry.js +50 -6
- package/dist/server/room-registry.js.map +1 -1
- package/dist/server/server-channel.js +25 -0
- package/dist/server/server-channel.js.map +1 -1
- package/dist/server/server.d.ts +6 -0
- package/dist/server/server.js +10 -0
- package/dist/server/server.js.map +1 -1
- package/package.json +5 -5
package/dist/server/event.d.ts
CHANGED
|
@@ -6,6 +6,13 @@ export type EventOptions = {
|
|
|
6
6
|
* Requires authentication to subscribe to this event.
|
|
7
7
|
*/
|
|
8
8
|
protected?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Recheck authentication, channel authorization and shouldSubscribe before
|
|
11
|
+
* each delivery, including on receiving Redis instances. Denial or a thrown
|
|
12
|
+
* predicate removes only this event/channel subscription. Defaults to false.
|
|
13
|
+
* Application predicates must read current access; decisions are not cached.
|
|
14
|
+
*/
|
|
15
|
+
revalidateOnDelivery?: boolean;
|
|
9
16
|
/**
|
|
10
17
|
* Only allow user to subscribe to this event on his own channel. Automatically makes the event protected.
|
|
11
18
|
*/
|
|
@@ -32,6 +39,7 @@ export declare class Event {
|
|
|
32
39
|
server: Server;
|
|
33
40
|
cluster: boolean;
|
|
34
41
|
excludeOriginator: boolean;
|
|
42
|
+
revalidateOnDelivery: boolean;
|
|
35
43
|
shouldSubscribe: (client: ClientNode, eventName: string, channel: string) => Promise<boolean>;
|
|
36
44
|
constructor(name: string, server: Server, channel: ServerChannel, opts?: EventOptions);
|
|
37
45
|
/**
|
package/dist/server/event.js
CHANGED
|
@@ -7,6 +7,7 @@ export class Event {
|
|
|
7
7
|
server;
|
|
8
8
|
cluster;
|
|
9
9
|
excludeOriginator;
|
|
10
|
+
revalidateOnDelivery;
|
|
10
11
|
shouldSubscribe = async () => true;
|
|
11
12
|
constructor(name, server, channel, opts) {
|
|
12
13
|
this.uuid = Presentation.uuid();
|
|
@@ -14,6 +15,7 @@ export class Event {
|
|
|
14
15
|
this.server = server;
|
|
15
16
|
this.channel = channel;
|
|
16
17
|
this.isProtected = opts?.protected ?? false;
|
|
18
|
+
this.revalidateOnDelivery = opts?.revalidateOnDelivery ?? false;
|
|
17
19
|
if (opts?.user) {
|
|
18
20
|
this.isProtected = true;
|
|
19
21
|
this.shouldSubscribe = async function (client, event, channel) {
|
package/dist/server/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/server/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/server/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AA6CpD,MAAM,OAAO,KAAK;IAChB,IAAI,CAAQ;IACZ,IAAI,CAAQ;IACZ,WAAW,CAAS;IACpB,OAAO,CAAe;IACtB,MAAM,CAAQ;IACd,OAAO,CAAS;IAChB,iBAAiB,CAAS;IAC1B,oBAAoB,CAAS;IAE7B,eAAe,GAIS,KAAK,IAAI,EAAE,CAAC,IAAI,CAAA;IAExC,YACE,IAAY,EACZ,MAAc,EACd,OAAsB,EACtB,IAAmB;QAEnB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,SAAS,IAAI,KAAK,CAAA;QAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,EAAE,oBAAoB,IAAI,KAAK,CAAA;QAE/D,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;YAEvB,IAAI,CAAC,eAAe,GAAG,KAAK,WAAW,MAAM,EAAE,KAAK,EAAE,OAAO;gBAC3D,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,OAAO,KAAK,CAAA;gBAEhC,OAAO,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;YAC7C,CAAC,CAAA;QACH,CAAC;QAED,IAAI,IAAI,EAAE,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;QAC7C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACrC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;IAC3D,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,OAAsB,EAAE,MAA8B;QAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;YAClC,CAAC,EAAE,WAAW,CAAC,KAAK;YACpB,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YACzB,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,OAAO,EAAE,OAAO,CAAC,WAAW;YAC5B,MAAM;SACP,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAEpE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,cAAc;iBACvB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC;iBAC7D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAEvB,OAAM;QACR,CAAC;QAED,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IACpD,CAAC;CACF"}
|
|
@@ -2,11 +2,13 @@ import type { TypeFerrySocket } from './types.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* In-memory room/subscription registry replacing Socket.IO's room system.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Indexed join/leave is O(1); broadcasting visits only the room's recipients,
|
|
6
|
+
* and disconnect cleanup visits only the socket's joined rooms.
|
|
7
7
|
*/
|
|
8
8
|
export declare class RoomRegistry {
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Room name to socket memberships; identity invalidates pending deliveries.
|
|
11
|
+
*/
|
|
10
12
|
private rooms;
|
|
11
13
|
/** socket → set of rooms it has joined (reverse index for fast cleanup) */
|
|
12
14
|
private socketRooms;
|
|
@@ -21,6 +23,13 @@ export declare class RoomRegistry {
|
|
|
21
23
|
* Optionally excludes a single socket (e.g. the originator).
|
|
22
24
|
*/
|
|
23
25
|
broadcast(room: string, data: string, exclude?: TypeFerrySocket): void;
|
|
26
|
+
/**
|
|
27
|
+
* Authorizes immediately before sending, in FIFO order per membership.
|
|
28
|
+
* Independent recipients progress concurrently. Leaving and rejoining creates
|
|
29
|
+
* a new membership so a stale check cannot send to or evict that subscription.
|
|
30
|
+
* Authorization failures deny delivery and evict only the captured membership.
|
|
31
|
+
*/
|
|
32
|
+
broadcastAuthorized(room: string, data: string, authorize: (socket: TypeFerrySocket) => Promise<boolean>, exclude?: TypeFerrySocket): Promise<void>;
|
|
24
33
|
/** Returns true if `ws` is a member of `room`. */
|
|
25
34
|
has(ws: TypeFerrySocket, room: string): boolean;
|
|
26
35
|
/** Returns the number of sockets in a room. */
|
|
@@ -2,11 +2,13 @@ import { SocketState } from './types.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* In-memory room/subscription registry replacing Socket.IO's room system.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Indexed join/leave is O(1); broadcasting visits only the room's recipients,
|
|
6
|
+
* and disconnect cleanup visits only the socket's joined rooms.
|
|
7
7
|
*/
|
|
8
8
|
export class RoomRegistry {
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Room name to socket memberships; identity invalidates pending deliveries.
|
|
11
|
+
*/
|
|
10
12
|
rooms = new Map();
|
|
11
13
|
/** socket → set of rooms it has joined (reverse index for fast cleanup) */
|
|
12
14
|
socketRooms = new Map();
|
|
@@ -14,10 +16,11 @@ export class RoomRegistry {
|
|
|
14
16
|
join(ws, room) {
|
|
15
17
|
let members = this.rooms.get(room);
|
|
16
18
|
if (!members) {
|
|
17
|
-
members = new
|
|
19
|
+
members = new Map();
|
|
18
20
|
this.rooms.set(room, members);
|
|
19
21
|
}
|
|
20
|
-
members.
|
|
22
|
+
if (!members.has(ws))
|
|
23
|
+
members.set(ws, { pending: Promise.resolve() });
|
|
21
24
|
let joined = this.socketRooms.get(ws);
|
|
22
25
|
if (!joined) {
|
|
23
26
|
joined = new Set();
|
|
@@ -63,7 +66,7 @@ export class RoomRegistry {
|
|
|
63
66
|
const members = this.rooms.get(room);
|
|
64
67
|
if (!members)
|
|
65
68
|
return;
|
|
66
|
-
for (const ws of members) {
|
|
69
|
+
for (const ws of members.keys()) {
|
|
67
70
|
if (ws === exclude)
|
|
68
71
|
continue;
|
|
69
72
|
if (ws.readyState === SocketState.OPEN) {
|
|
@@ -71,6 +74,47 @@ export class RoomRegistry {
|
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Authorizes immediately before sending, in FIFO order per membership.
|
|
79
|
+
* Independent recipients progress concurrently. Leaving and rejoining creates
|
|
80
|
+
* a new membership so a stale check cannot send to or evict that subscription.
|
|
81
|
+
* Authorization failures deny delivery and evict only the captured membership.
|
|
82
|
+
*/
|
|
83
|
+
async broadcastAuthorized(room, data, authorize, exclude) {
|
|
84
|
+
const members = this.rooms.get(room);
|
|
85
|
+
if (!members)
|
|
86
|
+
return;
|
|
87
|
+
const deliveries = [];
|
|
88
|
+
for (const [ws, membership] of members) {
|
|
89
|
+
if (ws === exclude)
|
|
90
|
+
continue;
|
|
91
|
+
const isCurrent = () => this.rooms.get(room)?.get(ws) === membership &&
|
|
92
|
+
ws.readyState === SocketState.OPEN;
|
|
93
|
+
const delivery = membership.pending.then(async () => {
|
|
94
|
+
if (!isCurrent())
|
|
95
|
+
return;
|
|
96
|
+
let allowed = false;
|
|
97
|
+
try {
|
|
98
|
+
allowed = await authorize(ws);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Predicate errors may contain private context; never log their value.
|
|
102
|
+
console.warn('[TypeFerry] Event delivery authorization failed');
|
|
103
|
+
}
|
|
104
|
+
if (!isCurrent())
|
|
105
|
+
return;
|
|
106
|
+
if (!allowed) {
|
|
107
|
+
this.leave(ws, room);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
ws.send(data);
|
|
111
|
+
});
|
|
112
|
+
// A failed socket send must not poison the subscription's later work.
|
|
113
|
+
membership.pending = delivery.catch(() => undefined);
|
|
114
|
+
deliveries.push(delivery);
|
|
115
|
+
}
|
|
116
|
+
await Promise.all(deliveries);
|
|
117
|
+
}
|
|
74
118
|
/** Returns true if `ws` is a member of `room`. */
|
|
75
119
|
has(ws, room) {
|
|
76
120
|
return this.rooms.get(room)?.has(ws) ?? false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room-registry.js","sourceRoot":"","sources":["../../src/server/room-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"room-registry.js","sourceRoot":"","sources":["../../src/server/room-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,31 @@ export class ServerChannel extends EventEmitter2 {
|
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
const roomName = getRoomName(this.channelName, event);
|
|
62
|
+
if (eventObject.revalidateOnDelivery) {
|
|
63
|
+
const excludeSocket = excludeUuid
|
|
64
|
+
? server.allClients.get(excludeUuid)?.socket ?? undefined
|
|
65
|
+
: undefined;
|
|
66
|
+
transport.rooms.broadcastAuthorized(roomName, payload, async (socket) => {
|
|
67
|
+
const client = server.getClientBySocket(socket);
|
|
68
|
+
if (!client || (eventObject.isProtected && !client.authenticated)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
const userId = client.userId;
|
|
72
|
+
if (!(await server.shouldAllowChannelSubscribe(client, this.channelName))) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
if (!(await eventObject.shouldSubscribe(client, event, this.channelName))) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
// Logout or event removal can happen while an application check awaits.
|
|
79
|
+
return (server.events.get(event) === eventObject &&
|
|
80
|
+
client.userId === userId &&
|
|
81
|
+
(!eventObject.isProtected || client.authenticated));
|
|
82
|
+
}, excludeSocket).catch(() => {
|
|
83
|
+
console.warn('[TypeFerry] Event delivery failed', event);
|
|
84
|
+
});
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
62
87
|
if (excludeUuid) {
|
|
63
88
|
const excludeClient = server.allClients.get(excludeUuid);
|
|
64
89
|
transport.rooms.broadcast(roomName, payload, excludeClient?.socket ?? undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-channel.js","sourceRoot":"","sources":["../../src/server/server-channel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server-channel.js","sourceRoot":"","sources":["../../src/server/server-channel.ts"],"names":[],"mappings":"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"}
|
package/dist/server/server.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import type { Event } from './event.js';
|
|
|
9
9
|
import type { MethodFunction, MethodOptions } from './method.js';
|
|
10
10
|
import { Method } from './method.js';
|
|
11
11
|
import { ServerChannel } from './server-channel.js';
|
|
12
|
+
import type { TypeFerrySocket } from './types.js';
|
|
12
13
|
import { NodeHonoTransport, RedisTransport, WebSocketTransport } from './transports/index.js';
|
|
13
14
|
declare global {
|
|
14
15
|
var TypeFerry: Server | undefined;
|
|
@@ -89,6 +90,7 @@ export declare class Server<Methods extends ServerMethods = ServerMethods> exten
|
|
|
89
90
|
maxRequestBodySize: number;
|
|
90
91
|
methods: Map<string, Method<z.ZodType, unknown>>;
|
|
91
92
|
allClients: Map<string, ClientNode>;
|
|
93
|
+
private clientsBySocket;
|
|
92
94
|
/** Reverse index: userId → connected client nodes for efficient user-level operations */
|
|
93
95
|
private clientsByUserId;
|
|
94
96
|
channels: Map<string, ServerChannel>;
|
|
@@ -124,6 +126,10 @@ export declare class Server<Methods extends ServerMethods = ServerMethods> exten
|
|
|
124
126
|
createDefaultMethods(): void;
|
|
125
127
|
getMethod(method: string): Method<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, unknown> | undefined;
|
|
126
128
|
addClient(node: ClientNode): void;
|
|
129
|
+
/**
|
|
130
|
+
* Resolves the live client owning a transport socket without scanning peers.
|
|
131
|
+
*/
|
|
132
|
+
getClientBySocket(socket: TypeFerrySocket): ClientNode | undefined;
|
|
127
133
|
deleteClient(node: ClientNode): void;
|
|
128
134
|
/** Registers a client node in the userId reverse index */
|
|
129
135
|
indexClientByUserId(node: ClientNode): void;
|
package/dist/server/server.js
CHANGED
|
@@ -24,6 +24,7 @@ export class Server extends ServerChannel {
|
|
|
24
24
|
maxRequestBodySize;
|
|
25
25
|
methods = new Map();
|
|
26
26
|
allClients = new Map();
|
|
27
|
+
clientsBySocket = new WeakMap();
|
|
27
28
|
/** Reverse index: userId → connected client nodes for efficient user-level operations */
|
|
28
29
|
clientsByUserId = new Map();
|
|
29
30
|
channels = new Map();
|
|
@@ -156,11 +157,20 @@ export class Server extends ServerChannel {
|
|
|
156
157
|
}
|
|
157
158
|
addClient(node) {
|
|
158
159
|
this.allClients.set(node.uuid, node);
|
|
160
|
+
if (node.socket)
|
|
161
|
+
this.clientsBySocket.set(node.socket, node);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Resolves the live client owning a transport socket without scanning peers.
|
|
165
|
+
*/
|
|
166
|
+
getClientBySocket(socket) {
|
|
167
|
+
return this.clientsBySocket.get(socket);
|
|
159
168
|
}
|
|
160
169
|
deleteClient(node) {
|
|
161
170
|
this.allClients.delete(node.uuid);
|
|
162
171
|
this.removeClientFromUserIndex(node);
|
|
163
172
|
if (node.socket) {
|
|
173
|
+
this.clientsBySocket.delete(node.socket);
|
|
164
174
|
this.webSocketTransport?.rooms?.leaveAll(node.socket);
|
|
165
175
|
}
|
|
166
176
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAQhC,OAAO,EACL,eAAe,EACf,OAAO,EACP,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typeferry",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Type-safe real-time RPC framework for TypeScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -110,8 +110,8 @@
|
|
|
110
110
|
"@rollup/plugin-babel": "^7.1.0",
|
|
111
111
|
"@tailwindcss/vite": "^4.3.3",
|
|
112
112
|
"@vitejs/plugin-react": "^6.1.1",
|
|
113
|
-
"@vitest/browser": "4.1.
|
|
114
|
-
"@vitest/browser-playwright": "4.1.
|
|
113
|
+
"@vitest/browser": "4.1.12",
|
|
114
|
+
"@vitest/browser-playwright": "4.1.12",
|
|
115
115
|
"esbuild": "0.28.1",
|
|
116
116
|
"fast-deep-equal": "^3.1.3",
|
|
117
117
|
"google-auth-library": "^10.9.0",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"ua-parser-js": "^2.0.10",
|
|
129
129
|
"use-debounce": "^10.1.1",
|
|
130
130
|
"vite": "^8.2.2",
|
|
131
|
-
"vitest": "4.1.
|
|
131
|
+
"vitest": "4.1.12",
|
|
132
132
|
"ws": "^8.21.3",
|
|
133
133
|
"zod": "^4.4.3"
|
|
134
134
|
},
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
"@types/sinon": "^10.0.16",
|
|
169
169
|
"@types/ua-parser-js": "^0.7.39",
|
|
170
170
|
"@types/ws": "^8",
|
|
171
|
-
"@vitest/coverage-v8": "
|
|
171
|
+
"@vitest/coverage-v8": "4.1.12",
|
|
172
172
|
"eslint": "^10.9.0",
|
|
173
173
|
"eslint-plugin-security": "^4.0.1",
|
|
174
174
|
"globals": "^17.7.0",
|