typeferry 0.12.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/README.md +5 -0
  2. package/dist/application/config.d.ts +47 -39
  3. package/dist/application/config.js +29 -16
  4. package/dist/application/config.js.map +1 -1
  5. package/dist/application/native-simulator-settings.js +1 -1
  6. package/dist/application/native-simulator-settings.js.map +1 -1
  7. package/dist/application/proxy.d.ts +5 -1
  8. package/dist/application/proxy.js +25 -4
  9. package/dist/application/proxy.js.map +1 -1
  10. package/dist/application/run-tests.js +1 -1
  11. package/dist/application/run-tests.js.map +1 -1
  12. package/dist/auth/client/native-session.js +4 -2
  13. package/dist/auth/client/native-session.js.map +1 -1
  14. package/dist/auth/client/oauth/use-google-login.js +2 -0
  15. package/dist/auth/client/oauth/use-google-login.js.map +1 -1
  16. package/dist/auth/server/cookie-utils.js +4 -3
  17. package/dist/auth/server/cookie-utils.js.map +1 -1
  18. package/dist/auth/server/device-info.js +8 -8
  19. package/dist/auth/server/device-info.js.map +1 -1
  20. package/dist/auth/server/oauth/google.js +11 -7
  21. package/dist/auth/server/oauth/google.js.map +1 -1
  22. package/dist/auth/server/session-manager.js +2 -2
  23. package/dist/auth/server/session-manager.js.map +1 -1
  24. package/dist/client/client-channel.d.ts +3 -11
  25. package/dist/client/client-channel.js +11 -4
  26. package/dist/client/client-channel.js.map +1 -1
  27. package/dist/client/client-http.d.ts +2 -2
  28. package/dist/client/client-http.js.map +1 -1
  29. package/dist/client/client.d.ts +13 -13
  30. package/dist/client/client.js +24 -11
  31. package/dist/client/client.js.map +1 -1
  32. package/dist/client/context-manager.d.ts +1 -1
  33. package/dist/client/logger.d.ts +1 -0
  34. package/dist/client/logger.js +12 -15
  35. package/dist/client/logger.js.map +1 -1
  36. package/dist/client/visibility-manager.d.ts +22 -11
  37. package/dist/client/visibility-manager.js +258 -42
  38. package/dist/client/visibility-manager.js.map +1 -1
  39. package/dist/ejson/adjust-types-from-json-value.d.ts +1 -1
  40. package/dist/ejson/adjust-types-from-json-value.js +4 -2
  41. package/dist/ejson/adjust-types-from-json-value.js.map +1 -1
  42. package/dist/ejson/base64.d.ts +1 -1
  43. package/dist/ejson/base64.js +1 -1
  44. package/dist/ejson/base64.js.map +1 -1
  45. package/dist/ejson/built-in-converters.d.ts +59 -1
  46. package/dist/ejson/built-in-converters.js +109 -125
  47. package/dist/ejson/built-in-converters.js.map +1 -1
  48. package/dist/ejson/clone.js +1 -1
  49. package/dist/ejson/clone.js.map +1 -1
  50. package/dist/ejson/custom-models.d.ts +10 -10
  51. package/dist/ejson/custom-models.js +22 -2
  52. package/dist/ejson/custom-models.js.map +1 -1
  53. package/dist/ejson/custom-types.d.ts +2 -1
  54. package/dist/ejson/custom-types.js.map +1 -1
  55. package/dist/ejson/equals.d.ts +4 -1
  56. package/dist/ejson/equals.js +6 -3
  57. package/dist/ejson/equals.js.map +1 -1
  58. package/dist/ejson/from-json-value.d.ts +1 -1
  59. package/dist/ejson/from-json-value.js +1 -1
  60. package/dist/ejson/from-json-value.js.map +1 -1
  61. package/dist/ejson/helpers/adjust-types-to-json-value.d.ts +1 -1
  62. package/dist/ejson/helpers/adjust-types-to-json-value.js +4 -2
  63. package/dist/ejson/helpers/adjust-types-to-json-value.js.map +1 -1
  64. package/dist/ejson/helpers/from-json-value-helper.d.ts +1 -1
  65. package/dist/ejson/helpers/from-json-value-helper.js +5 -3
  66. package/dist/ejson/helpers/from-json-value-helper.js.map +1 -1
  67. package/dist/ejson/helpers/to-json-value-helper.d.ts +1 -1
  68. package/dist/ejson/helpers/to-json-value-helper.js +3 -1
  69. package/dist/ejson/helpers/to-json-value-helper.js.map +1 -1
  70. package/dist/ejson/index.d.ts +14 -12
  71. package/dist/ejson/index.js +3 -3
  72. package/dist/ejson/index.js.map +1 -1
  73. package/dist/ejson/is-binary.d.ts +1 -1
  74. package/dist/ejson/is-binary.js +1 -1
  75. package/dist/ejson/is-binary.js.map +1 -1
  76. package/dist/ejson/parse.d.ts +1 -1
  77. package/dist/ejson/parse.js +1 -1
  78. package/dist/ejson/parse.js.map +1 -1
  79. package/dist/ejson/stable-stringify.d.ts +1 -6
  80. package/dist/ejson/stable-stringify.js +3 -1
  81. package/dist/ejson/stable-stringify.js.map +1 -1
  82. package/dist/ejson/to-json-value.d.ts +1 -1
  83. package/dist/ejson/to-json-value.js +1 -1
  84. package/dist/ejson/to-json-value.js.map +1 -1
  85. package/dist/ejson/utils.d.ts +15 -13
  86. package/dist/ejson/utils.js +39 -37
  87. package/dist/ejson/utils.js.map +1 -1
  88. package/dist/minimongo/NOTICE.md +30 -0
  89. package/dist/minimongo/README.md +329 -0
  90. package/dist/minimongo/components.d.ts +31 -0
  91. package/dist/minimongo/components.js +53 -0
  92. package/dist/minimongo/components.js.map +1 -0
  93. package/dist/minimongo/contracts.type-test.d.ts +1 -0
  94. package/dist/minimongo/contracts.type-test.js +21 -0
  95. package/dist/minimongo/contracts.type-test.js.map +1 -0
  96. package/dist/minimongo/cursor.d.ts +67 -0
  97. package/dist/minimongo/cursor.js +157 -0
  98. package/dist/minimongo/cursor.js.map +1 -0
  99. package/dist/minimongo/document-store.d.ts +31 -0
  100. package/dist/minimongo/document-store.js +48 -0
  101. package/dist/minimongo/document-store.js.map +1 -0
  102. package/dist/minimongo/errors.d.ts +14 -0
  103. package/dist/minimongo/errors.js +16 -0
  104. package/dist/minimongo/errors.js.map +1 -0
  105. package/dist/minimongo/events.d.ts +20 -0
  106. package/dist/minimongo/events.js +80 -0
  107. package/dist/minimongo/events.js.map +1 -0
  108. package/dist/minimongo/identity.d.ts +8 -0
  109. package/dist/minimongo/identity.js +15 -0
  110. package/dist/minimongo/identity.js.map +1 -0
  111. package/dist/minimongo/immutable.d.ts +6 -0
  112. package/dist/minimongo/immutable.js +17 -0
  113. package/dist/minimongo/immutable.js.map +1 -0
  114. package/dist/minimongo/index.d.ts +7 -0
  115. package/dist/minimongo/index.js +6 -0
  116. package/dist/minimongo/index.js.map +1 -0
  117. package/dist/minimongo/local-collection.d.ts +48 -0
  118. package/dist/minimongo/local-collection.js +129 -0
  119. package/dist/minimongo/local-collection.js.map +1 -0
  120. package/dist/minimongo/matcher.d.ts +27 -0
  121. package/dist/minimongo/matcher.js +457 -0
  122. package/dist/minimongo/matcher.js.map +1 -0
  123. package/dist/minimongo/modifier.d.ts +12 -0
  124. package/dist/minimongo/modifier.js +323 -0
  125. package/dist/minimongo/modifier.js.map +1 -0
  126. package/dist/minimongo/path.d.ts +17 -0
  127. package/dist/minimongo/path.js +126 -0
  128. package/dist/minimongo/path.js.map +1 -0
  129. package/dist/minimongo/projection.d.ts +5 -0
  130. package/dist/minimongo/projection.js +100 -0
  131. package/dist/minimongo/projection.js.map +1 -0
  132. package/dist/minimongo/sorter.d.ts +16 -0
  133. package/dist/minimongo/sorter.js +140 -0
  134. package/dist/minimongo/sorter.js.map +1 -0
  135. package/dist/minimongo/transform.d.ts +4 -0
  136. package/dist/minimongo/transform.js +30 -0
  137. package/dist/minimongo/transform.js.map +1 -0
  138. package/dist/minimongo/types.d.ts +169 -0
  139. package/dist/minimongo/types.js +2 -0
  140. package/dist/minimongo/types.js.map +1 -0
  141. package/dist/minimongo/value-semantics.d.ts +8 -0
  142. package/dist/minimongo/value-semantics.js +156 -0
  143. package/dist/minimongo/value-semantics.js.map +1 -0
  144. package/dist/mongodb/change-streams.js +14 -8
  145. package/dist/mongodb/change-streams.js.map +1 -1
  146. package/dist/mongodb/decorators/collection.js +4 -1
  147. package/dist/mongodb/decorators/collection.js.map +1 -1
  148. package/dist/mongodb/decorators/metadata.js +1 -1
  149. package/dist/mongodb/decorators/metadata.js.map +1 -1
  150. package/dist/mongodb/find-one-or-create.d.ts +2 -2
  151. package/dist/mongodb/find-one-or-create.js +1 -1
  152. package/dist/mongodb/find-one-or-create.js.map +1 -1
  153. package/dist/mongodb/live/engine.js.map +1 -1
  154. package/dist/mongodb/live/source.js +11 -5
  155. package/dist/mongodb/live/source.js.map +1 -1
  156. package/dist/mongodb/live/types.d.ts +1 -1
  157. package/dist/react/components/client-provider.d.ts +3 -2
  158. package/dist/react/components/client-provider.js +1 -1
  159. package/dist/react/components/client-provider.js.map +1 -1
  160. package/dist/react/contracts.type-test.d.ts +1 -0
  161. package/dist/react/contracts.type-test.js +21 -0
  162. package/dist/react/contracts.type-test.js.map +1 -0
  163. package/dist/react/hooks/use-auth.d.ts +5 -1
  164. package/dist/react/hooks/use-auth.js +4 -2
  165. package/dist/react/hooks/use-auth.js.map +1 -1
  166. package/dist/react/hooks/use-caller.d.ts +10 -5
  167. package/dist/react/hooks/use-caller.js +12 -8
  168. package/dist/react/hooks/use-caller.js.map +1 -1
  169. package/dist/react/hooks/use-channel.d.ts +1 -1
  170. package/dist/react/hooks/use-channel.js +1 -1
  171. package/dist/react/hooks/use-channel.js.map +1 -1
  172. package/dist/react/hooks/use-circuit-breaker.d.ts +14 -6
  173. package/dist/react/hooks/use-circuit-breaker.js +5 -2
  174. package/dist/react/hooks/use-circuit-breaker.js.map +1 -1
  175. package/dist/react/hooks/use-client.d.ts +1 -1
  176. package/dist/react/hooks/use-client.js +2 -0
  177. package/dist/react/hooks/use-client.js.map +1 -1
  178. package/dist/react/hooks/use-connection-state.d.ts +4 -4
  179. package/dist/react/hooks/use-connection-state.js +2 -0
  180. package/dist/react/hooks/use-connection-state.js.map +1 -1
  181. package/dist/react/hooks/use-deps-change.d.ts +1 -1
  182. package/dist/react/hooks/use-deps-change.js.map +1 -1
  183. package/dist/react/hooks/use-local-event.d.ts +2 -2
  184. package/dist/react/hooks/use-local-event.js +2 -2
  185. package/dist/react/hooks/use-local-event.js.map +1 -1
  186. package/dist/react/hooks/use-method-refresh.d.ts +24 -15
  187. package/dist/react/hooks/use-method-refresh.js +18 -22
  188. package/dist/react/hooks/use-method-refresh.js.map +1 -1
  189. package/dist/react/hooks/use-method.d.ts +12 -11
  190. package/dist/react/hooks/use-method.js +9 -5
  191. package/dist/react/hooks/use-method.js.map +1 -1
  192. package/dist/react/hooks/use-mongodb-live-publication.js +2 -0
  193. package/dist/react/hooks/use-mongodb-live-publication.js.map +1 -1
  194. package/dist/react/hooks/use-object.d.ts +2 -2
  195. package/dist/react/hooks/use-object.js.map +1 -1
  196. package/dist/react/hooks/use-subscribe.d.ts +1 -2
  197. package/dist/react/hooks/use-subscribe.js +11 -9
  198. package/dist/react/hooks/use-subscribe.js.map +1 -1
  199. package/dist/react/hooks/use-throttled-events.d.ts +1 -1
  200. package/dist/react/hooks/use-throttled-events.js +2 -0
  201. package/dist/react/hooks/use-throttled-events.js.map +1 -1
  202. package/dist/react/hooks/use-token-refresh.js +1 -1
  203. package/dist/react/hooks/use-token-refresh.js.map +1 -1
  204. package/dist/server/client-node.d.ts +17 -10
  205. package/dist/server/client-node.js +16 -13
  206. package/dist/server/client-node.js.map +1 -1
  207. package/dist/server/decorators/register.js +10 -6
  208. package/dist/server/decorators/register.js.map +1 -1
  209. package/dist/server/method.d.ts +1 -1
  210. package/dist/server/method.js +9 -6
  211. package/dist/server/method.js.map +1 -1
  212. package/dist/server/methods.js +2 -1
  213. package/dist/server/methods.js.map +1 -1
  214. package/dist/server/server-channel.d.ts +4 -2
  215. package/dist/server/server-channel.js +33 -20
  216. package/dist/server/server-channel.js.map +1 -1
  217. package/dist/server/server.d.ts +25 -12
  218. package/dist/server/server.js +18 -17
  219. package/dist/server/server.js.map +1 -1
  220. package/dist/server/transports/node-hono-transport.d.ts +4 -4
  221. package/dist/server/transports/node-hono-transport.js +66 -14
  222. package/dist/server/transports/node-hono-transport.js.map +1 -1
  223. package/dist/server/transports/redis-transport.d.ts +5 -4
  224. package/dist/server/transports/redis-transport.js +9 -4
  225. package/dist/server/transports/redis-transport.js.map +1 -1
  226. package/dist/server/transports/websocket-transport.d.ts +1 -1
  227. package/dist/server/transports/websocket-transport.js +6 -1
  228. package/dist/server/transports/websocket-transport.js.map +1 -1
  229. package/dist/server/transports/ws-shared.d.ts +2 -1
  230. package/dist/server/transports/ws-shared.js +4 -1
  231. package/dist/server/transports/ws-shared.js.map +1 -1
  232. package/dist/utils/errors.d.ts +1 -1
  233. package/dist/utils/errors.js.map +1 -1
  234. package/dist/utils/event-emitter.d.ts +1 -1
  235. package/dist/utils/event-emitter.js.map +1 -1
  236. package/dist/utils/events.d.ts +4 -4
  237. package/dist/utils/events.js.map +1 -1
  238. package/dist/utils/helpers.d.ts +4 -4
  239. package/dist/utils/helpers.js +4 -3
  240. package/dist/utils/helpers.js.map +1 -1
  241. package/dist/utils/intercept.d.ts +1 -2
  242. package/dist/utils/intercept.js.map +1 -1
  243. package/dist/utils/iterator.d.ts +6 -8
  244. package/dist/utils/iterator.js +3 -3
  245. package/dist/utils/iterator.js.map +1 -1
  246. package/dist/utils/presentation.d.ts +1 -1
  247. package/dist/utils/presentation.js +2 -0
  248. package/dist/utils/presentation.js.map +1 -1
  249. package/dist/utils/promise.d.ts +5 -5
  250. package/dist/utils/promise.js +2 -2
  251. package/dist/utils/promise.js.map +1 -1
  252. package/package.json +9 -2
@@ -12,6 +12,7 @@ export function getRoomName(channel, eventName) {
12
12
  export const rpcOff = (server, method) => new Method(server, method, function ({ events, channel = NO_CHANNEL }) {
13
13
  if (!this.socket)
14
14
  return {};
15
+ const socket = this.socket;
15
16
  const rooms = server.webSocketTransport?.rooms;
16
17
  if (!rooms)
17
18
  return {};
@@ -22,7 +23,7 @@ export const rpcOff = (server, method) => new Method(server, method, function ({
22
23
  return { ...acc, [eventName]: false };
23
24
  }
24
25
  const roomName = getRoomName(channel, eventName);
25
- rooms.leave(this.socket, roomName);
26
+ rooms.leave(socket, roomName);
26
27
  return { ...acc, [eventName]: true };
27
28
  }, {});
28
29
  }, { protected: false });
@@ -1 +1 @@
1
- {"version":3,"file":"methods.js","sourceRoot":"","sources":["../../src/server/methods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"methods.js","sourceRoot":"","sources":["../../src/server/methods.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,11 @@ import { Event } from './event.js';
5
5
  import type { Server } from './server.js';
6
6
  export declare class ServerChannel extends EventEmitter2 {
7
7
  channelName: string;
8
- server: Server;
8
+ private attachedServer;
9
9
  constructor(channelName: string);
10
10
  setServer(server: Server): void;
11
+ get server(): Server;
12
+ private requireServer;
11
13
  /**
12
14
  * Broadcasts a pre-encoded event payload to all subscribed clients.
13
15
  * The payload already contains the wire protocol `t` field (set by
@@ -22,7 +24,7 @@ export declare class ServerChannel extends EventEmitter2 {
22
24
  addEvent(name: string, opts?: EventOptions): void;
23
25
  get list(): string[];
24
26
  get length(): number;
25
- get(event: string): Event;
27
+ get(event: string): Event | undefined;
26
28
  has(event: string): boolean;
27
29
  delete(event: string): boolean;
28
30
  /**
@@ -10,25 +10,35 @@ const SystemEvents = [
10
10
  ];
11
11
  export class ServerChannel extends EventEmitter2 {
12
12
  channelName;
13
- server;
13
+ attachedServer;
14
14
  constructor(channelName) {
15
15
  super({
16
16
  maxListeners: 1024,
17
17
  });
18
18
  this.channelName = channelName;
19
19
  this.onAny((event, value) => {
20
- if (!this.server.events.has(event) &&
20
+ if (this.attachedServer &&
21
+ !this.attachedServer.events.has(event) &&
21
22
  !SystemEvents.includes(event)) {
22
23
  console.warn('Event Not Registered:', event);
23
24
  }
24
- if (this.server.events.has(event)) {
25
- const eventObject = this.server.events.get(event);
26
- eventObject.handler(this, value);
25
+ if (this.attachedServer?.events.has(event)) {
26
+ const eventObject = this.attachedServer.events.get(event);
27
+ eventObject?.handler(this, value);
27
28
  }
28
29
  });
29
30
  }
30
31
  setServer(server) {
31
- this.server = server;
32
+ this.attachedServer = server;
33
+ }
34
+ get server() {
35
+ return this.requireServer();
36
+ }
37
+ requireServer() {
38
+ if (!this.attachedServer) {
39
+ throw new Error('Server channel is not attached to a server');
40
+ }
41
+ return this.attachedServer;
32
42
  }
33
43
  /**
34
44
  * Broadcasts a pre-encoded event payload to all subscribed clients.
@@ -37,20 +47,21 @@ export class ServerChannel extends EventEmitter2 {
37
47
  * @param excludeUuid - Optional client uuid to exclude from receiving the event
38
48
  */
39
49
  propagate(event, payload, excludeUuid) {
40
- const eventObject = this.server.events.get(event);
50
+ const server = this.requireServer();
51
+ const eventObject = server.events.get(event);
41
52
  if (!eventObject) {
42
53
  console.log('Event Not Registered:', event);
43
54
  return;
44
55
  }
45
- const transport = this.server.webSocketTransport;
56
+ const transport = server.webSocketTransport;
46
57
  if (!transport) {
47
58
  console.warn('[TypeFerry] WebSocket transport not available for propagate');
48
59
  return;
49
60
  }
50
61
  const roomName = getRoomName(this.channelName, event);
51
62
  if (excludeUuid) {
52
- const excludeClient = this.server.allClients.get(excludeUuid);
53
- transport.rooms.broadcast(roomName, payload, excludeClient?.socket);
63
+ const excludeClient = server.allClients.get(excludeUuid);
64
+ transport.rooms.broadcast(roomName, payload, excludeClient?.socket ?? undefined);
54
65
  }
55
66
  else {
56
67
  transport.rooms.broadcast(roomName, payload);
@@ -67,26 +78,27 @@ export class ServerChannel extends EventEmitter2 {
67
78
  }
68
79
  /** Declares a new event. */
69
80
  addEvent(name, opts) {
70
- if (this.server.events.has(name)) {
71
- this.server.events.delete(name);
81
+ const server = this.requireServer();
82
+ if (server.events.has(name)) {
83
+ server.events.delete(name);
72
84
  }
73
- const event = new Event(name, this.server, this, opts);
74
- this.server.events.set(name, event);
85
+ const event = new Event(name, server, this, opts);
86
+ server.events.set(name, event);
75
87
  }
76
88
  get list() {
77
- return Array.from(this.server.events.keys());
89
+ return Array.from(this.requireServer().events.keys());
78
90
  }
79
91
  get length() {
80
- return this.server.events.size;
92
+ return this.requireServer().events.size;
81
93
  }
82
94
  get(event) {
83
- return this.server.events.get(event);
95
+ return this.requireServer().events.get(event);
84
96
  }
85
97
  has(event) {
86
- return this.server.events.has(event);
98
+ return this.requireServer().events.has(event);
87
99
  }
88
100
  delete(event) {
89
- return this.server.events.delete(event);
101
+ return this.requireServer().events.delete(event);
90
102
  }
91
103
  /**
92
104
  * Checks if a client is subscribed to an event via the RoomRegistry.
@@ -94,7 +106,8 @@ export class ServerChannel extends EventEmitter2 {
94
106
  isSubscribed(client, event) {
95
107
  if (!client.socket)
96
108
  return false;
97
- const rooms = this.server.webSocketTransport?.rooms;
109
+ const server = this.requireServer();
110
+ const rooms = server.webSocketTransport?.rooms;
98
111
  if (!rooms)
99
112
  return false;
100
113
  const roomName = getRoomName(this.channelName, event.name);
@@ -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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"}
@@ -4,24 +4,25 @@ import type { RedisClientOptions } from 'redis';
4
4
  import type { z } from 'zod';
5
5
  import type { MethodParams as MethodParameters, ServerMethods } from '../utils/index.js';
6
6
  import { ClientNode } from './client-node.js';
7
+ import type { ClientNodeContext } from './client-node.js';
7
8
  import type { Event } from './event.js';
8
9
  import type { MethodFunction, MethodOptions } from './method.js';
9
10
  import { Method } from './method.js';
10
11
  import { ServerChannel } from './server-channel.js';
11
12
  import { NodeHonoTransport, RedisTransport, WebSocketTransport } from './transports/index.js';
12
13
  declare global {
13
- var TypeFerry: Server;
14
+ var TypeFerry: Server | undefined;
14
15
  }
15
16
  export type ChannelChecker = (node: ClientNode, channel: string) => Promise<boolean>;
16
- export type AuthFunction = (this: ClientNode, context: any) => any;
17
+ export type AuthFunction = (this: ClientNode, context: ClientNodeContext) => ClientNodeContext | false | null | undefined | Promise<ClientNodeContext | false | null | undefined>;
17
18
  /**
18
19
  * Configuration for server authentication.
19
20
  */
20
- export type AuthSetup = {
21
+ export type AuthSetup<TParameters = unknown, TResult = unknown> = {
21
22
  /** Authentication function called to validate tokens */
22
23
  auth: AuthFunction;
23
24
  /** Login method handler */
24
- logIn: MethodFunction;
25
+ logIn: MethodFunction<TParameters, TResult>;
25
26
  };
26
27
  export type RateLimit = boolean | {
27
28
  max: number;
@@ -29,6 +30,14 @@ export type RateLimit = boolean | {
29
30
  };
30
31
  /** Default request-body ceiling retained across the runtime migration. */
31
32
  export declare const DEFAULT_MAX_REQUEST_BODY_SIZE_BYTES: number;
33
+ /**
34
+ * A segment-scoped HTTP body ceiling selected before any body buffering.
35
+ * Matching rules only lower the global ceiling; overlapping rules use the minimum.
36
+ */
37
+ export interface RequestBodySizeLimit {
38
+ readonly pathPrefix: string;
39
+ readonly maxSize: number;
40
+ }
32
41
  export type ServerOptions = {
33
42
  host?: string;
34
43
  port?: number;
@@ -47,6 +56,11 @@ export type ServerOptions = {
47
56
  rateLimit?: RateLimit;
48
57
  /** Maximum request body accepted by the HTTP listener. */
49
58
  maxRequestBodySize?: number;
59
+ /**
60
+ * Additional route ceilings evaluated by the first HTTP middleware, including
61
+ * requests without Content-Length. Prefixes match complete path segments.
62
+ */
63
+ requestBodySizeLimits?: readonly RequestBodySizeLimit[];
50
64
  shouldAllowChannelSubscribe?: ChannelChecker;
51
65
  };
52
66
  export type ProxyMethodCreation = {
@@ -56,17 +70,17 @@ export declare class Server<Methods extends ServerMethods = ServerMethods> exten
56
70
  uuid: string;
57
71
  httpTransport: NodeHonoTransport;
58
72
  webSocketTransport: WebSocketTransport;
59
- redisTransport: RedisTransport;
73
+ redisTransport: RedisTransport | null;
60
74
  host: string;
61
75
  port: number;
62
- requestListener: RequestListener;
76
+ requestListener: RequestListener | undefined;
63
77
  allowedContextKeys: string[];
64
78
  isAuthEnabled: boolean;
65
- auth: AuthFunction;
79
+ auth: AuthFunction | undefined;
66
80
  debug: boolean;
67
81
  rateLimit: RateLimit;
68
82
  maxRequestBodySize: number;
69
- methods: Map<string, Method<any, any>>;
83
+ methods: Map<string, Method<z.ZodType, unknown>>;
70
84
  allClients: Map<string, ClientNode>;
71
85
  /** Reverse index: userId → connected client nodes for efficient user-level operations */
72
86
  private clientsByUserId;
@@ -80,9 +94,8 @@ export declare class Server<Methods extends ServerMethods = ServerMethods> exten
80
94
  handlers: Methods;
81
95
  private closePromise?;
82
96
  private initializeGlobalInstance;
83
- private initializeTransports;
84
97
  private setupHttpListening;
85
- constructor({ host, port, debug, origins, ws, redis, requestListener, globalInstance, allowedContextKeys, rateLimit, maxRequestBodySize, }?: ServerOptions);
98
+ constructor({ host, port, debug, origins, ws, redis, requestListener, globalInstance, allowedContextKeys, rateLimit, maxRequestBodySize, requestBodySizeLimits, }?: ServerOptions);
86
99
  /**
87
100
  * Resolves when startup transports have emitted their readiness signals.
88
101
  *
@@ -94,7 +107,7 @@ export declare class Server<Methods extends ServerMethods = ServerMethods> exten
94
107
  * Returns the authoritative Hono application for route registration.
95
108
  */
96
109
  get app(): Hono;
97
- setAuth({ auth, logIn }: AuthSetup): void;
110
+ setAuth<TParameters, TResult>({ auth, logIn }: AuthSetup<TParameters, TResult>): void;
98
111
  setChannelAuthorization(checker: ChannelChecker): void;
99
112
  close(): Promise<boolean>;
100
113
  private closeTransports;
@@ -102,7 +115,7 @@ export declare class Server<Methods extends ServerMethods = ServerMethods> exten
102
115
  debugger(...args: any[]): void;
103
116
  call<T = Record<string, unknown>>(method: string, parameters?: MethodParameters<T>): Promise<unknown>;
104
117
  createDefaultMethods(): void;
105
- getMethod(method: string): Method<any, any>;
118
+ getMethod(method: string): Method<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, unknown> | undefined;
106
119
  addClient(node: ClientNode): void;
107
120
  deleteClient(node: ClientNode): void;
108
121
  /** Registers a client node in the userId reverse index */
@@ -43,20 +43,15 @@ export class Server extends ServerChannel {
43
43
  global.TypeFerry = this;
44
44
  }
45
45
  }
46
- initializeTransports(origins, ws, redis) {
47
- this.httpTransport = new NodeHonoTransport(this, origins, this.rateLimit, this.maxRequestBodySize);
48
- this.webSocketTransport = new WebSocketTransport(this, origins, ws);
49
- this.redisTransport = redis ? new RedisTransport(this, redis) : null;
50
- }
51
46
  setupHttpListening() {
52
47
  this.httpTransport.http?.on('error', error => {
53
48
  this.emit(Server.ERROR_EVENT, error);
54
49
  });
55
50
  this.httpTransport.listen(() => {
56
- setTimeout(() => this.server.emit(ServerEvents.HTTP_LISTENING), 0);
51
+ setTimeout(() => this.emit(ServerEvents.HTTP_LISTENING), 0);
57
52
  });
58
53
  }
59
- constructor({ host = 'localhost', port = 80, debug = false, origins, ws, redis, requestListener, globalInstance = true, allowedContextKeys = [], rateLimit = false, maxRequestBodySize = DEFAULT_MAX_REQUEST_BODY_SIZE_BYTES, } = {}) {
54
+ constructor({ host = 'localhost', port = 80, debug = false, origins, ws, redis, requestListener, globalInstance = true, allowedContextKeys = [], rateLimit = false, maxRequestBodySize = DEFAULT_MAX_REQUEST_BODY_SIZE_BYTES, requestBodySizeLimits = [], } = {}) {
60
55
  super(NO_CHANNEL);
61
56
  this.m = createMethodProxy(this);
62
57
  this.setServer(this);
@@ -72,14 +67,16 @@ export class Server extends ServerChannel {
72
67
  this.rateLimit = rateLimit;
73
68
  this.maxRequestBodySize = maxRequestBodySize;
74
69
  this.allowedContextKeys = allowedContextKeys;
75
- this.initializeTransports(origins, ws, redis);
70
+ this.httpTransport = new NodeHonoTransport(this, origins, this.rateLimit, this.maxRequestBodySize, requestBodySizeLimits);
71
+ this.webSocketTransport = new WebSocketTransport(this, origins, ws);
72
+ this.redisTransport = redis ? new RedisTransport(this, redis) : null;
76
73
  this.setupHttpListening();
77
74
  this.addEvent(TypeFerryEvents.METHOD_REFRESH);
78
75
  this.channels.set(NO_CHANNEL, this);
79
- waitForAll(this, [
80
- ServerEvents.HTTP_LISTENING,
81
- this.redisTransport ? ServerEvents.REDIS_CONNECT : null,
82
- ].filter(Boolean))
76
+ const readinessEvents = [ServerEvents.HTTP_LISTENING];
77
+ if (this.redisTransport)
78
+ readinessEvents.push(ServerEvents.REDIS_CONNECT);
79
+ waitForAll(this, readinessEvents)
83
80
  .then(() => {
84
81
  this.ready = true;
85
82
  this.emit(ServerEvents.READY, true);
@@ -130,7 +127,7 @@ export class Server extends ServerChannel {
130
127
  await this.redisTransport?.close();
131
128
  await this.webSocketTransport?.close();
132
129
  await this.httpTransport?.close();
133
- delete global.TypeFerry;
130
+ Reflect.deleteProperty(global, 'TypeFerry');
134
131
  this.emit(ServerEvents.CLOSED);
135
132
  return true;
136
133
  }
@@ -144,6 +141,9 @@ export class Server extends ServerChannel {
144
141
  async call(method, parameters) {
145
142
  this.debugger(`[server] Calling ${method}`, parameters);
146
143
  const methodInstance = this.methods.get(method);
144
+ if (!methodInstance) {
145
+ throw new Error(`Method not found: ${method}`);
146
+ }
147
147
  const node = new ClientNode(this);
148
148
  node.isServer = true;
149
149
  return await methodInstance.exec(parameters, node);
@@ -214,7 +214,7 @@ export class Server extends ServerChannel {
214
214
  this.emit(ServerEvents.USER_DISCONNECTED, { userId, count });
215
215
  return count;
216
216
  }
217
- addMethod(method, fn, opts) {
217
+ addMethod(method, fn, opts = {}) {
218
218
  this.methods.set(method, new Method(this, method, fn, opts));
219
219
  }
220
220
  channel(name = NO_CHANNEL) {
@@ -229,10 +229,11 @@ export class Server extends ServerChannel {
229
229
  if (name === NO_CHANNEL)
230
230
  return this;
231
231
  const channelName = name;
232
- if (this.channels.has(channelName))
233
- return this.channels.get(channelName);
232
+ const existingChannel = this.channels.get(channelName);
233
+ if (existingChannel)
234
+ return existingChannel;
234
235
  const channel = new ServerChannel(channelName);
235
- channel.setServer(this.server);
236
+ channel.setServer(this);
236
237
  this.channels.set(channelName, channel);
237
238
  return channel;
238
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { MiddlewareHandler } from 'hono';
2
2
  import { Hono } from 'hono';
3
3
  import { type Server as NodeHttpServer } from 'node:http';
4
- import type { RateLimit, Server } from '../server.js';
4
+ import type { RateLimit, RequestBodySizeLimit, Server } from '../server.js';
5
5
  /**
6
6
  * Node.js HTTP transport backed by a Hono application.
7
7
  *
@@ -11,9 +11,9 @@ import type { RateLimit, Server } from '../server.js';
11
11
  export declare class NodeHonoTransport {
12
12
  server: Server;
13
13
  app: Hono;
14
- http?: NodeHttpServer;
15
- private httpRateLimiter?;
16
- constructor(server: Server, origins: string[] | undefined, limit: RateLimit, maxRequestBodySize: number);
14
+ http: NodeHttpServer | undefined;
15
+ private httpRateLimiter;
16
+ constructor(server: Server, origins: string[] | undefined, limit: RateLimit, maxRequestBodySize: number, requestBodySizeLimits?: readonly RequestBodySizeLimit[]);
17
17
  /**
18
18
  * Tees a request without allowing an optional observer to control Hono's
19
19
  * backpressure. Header-only observers receive metadata and completion without
@@ -23,10 +23,10 @@ export class NodeHonoTransport {
23
23
  app;
24
24
  http;
25
25
  httpRateLimiter;
26
- constructor(server, origins, limit, maxRequestBodySize) {
26
+ constructor(server, origins, limit, maxRequestBodySize, requestBodySizeLimits = []) {
27
27
  this.server = server;
28
28
  this.app = new Hono();
29
- this.setupMiddleware(origins, limit, maxRequestBodySize);
29
+ this.setupMiddleware(origins, limit, maxRequestBodySize, requestBodySizeLimits);
30
30
  const honoListener = getRequestListener((request, env) => this.handleFetch(request, env));
31
31
  this.http = createServer((request, response) => {
32
32
  if (!this.server.requestListener) {
@@ -45,7 +45,10 @@ export class NodeHonoTransport {
45
45
  const honoRequest = this.createRequestMirror(request);
46
46
  const observerRequest = this.createRequestMirror(request);
47
47
  void honoListener(honoRequest, response);
48
- this.server.requestListener(observerRequest, response);
48
+ const requestListener = this.server.requestListener;
49
+ if (!requestListener)
50
+ return;
51
+ requestListener(observerRequest, response);
49
52
  request.on('data', (chunk) => {
50
53
  if (!honoRequest.write(chunk))
51
54
  request.pause();
@@ -84,11 +87,12 @@ export class NodeHonoTransport {
84
87
  // ---------------------------------------------------------------------------
85
88
  // Middleware setup
86
89
  // ---------------------------------------------------------------------------
87
- setupMiddleware(origins, limit, maxRequestBodySize) {
88
- this.app.use('*', bodyLimit({
89
- maxSize: maxRequestBodySize,
90
- onError: c => c.text('Request Entity Too Large', 413),
91
- }));
90
+ setupMiddleware(origins, limit, maxRequestBodySize, requestBodySizeLimits) {
91
+ validateRequestBodyLimits(maxRequestBodySize, requestBodySizeLimits);
92
+ this.app.use('*', (c, next) => bodyLimit({
93
+ maxSize: getRequestBodyLimit(c.req.path, maxRequestBodySize, requestBodySizeLimits),
94
+ onError: context => context.text('Request Entity Too Large', 413),
95
+ })(c, next));
92
96
  if (origins?.length) {
93
97
  this.app.use('*', cors({
94
98
  origin: (origin) => origins.includes(origin) ? origin : null,
@@ -189,9 +193,10 @@ export class NodeHonoTransport {
189
193
  // Helpers
190
194
  // ---------------------------------------------------------------------------
191
195
  buildTypeFerryRequest(c) {
196
+ const ip = c.req.header('x-forwarded-for') ?? getConnInfo(c).remote.address;
192
197
  return {
193
198
  headers: Object.fromEntries(c.req.raw.headers.entries()),
194
- ip: c.req.header('x-forwarded-for') ?? getConnInfo(c).remote.address,
199
+ ...(ip === undefined ? {} : { ip }),
195
200
  path: c.req.path,
196
201
  get: (name) => c.req.header(name),
197
202
  };
@@ -216,8 +221,8 @@ export class NodeHonoTransport {
216
221
  const node = this.buildClientNodeFromContext(c);
217
222
  node.uuid = c.req.header(CLIENT_ID_HEADER_KEY) ?? '';
218
223
  const serverContext = await this.getServerContext(node, (context ?? {}));
219
- node.authenticated = Boolean(serverContext);
220
- node.setContext(serverContext);
224
+ node.authenticated = serverContext !== false;
225
+ node.setContext(serverContext === false ? null : serverContext);
221
226
  return node;
222
227
  }
223
228
  async getServerContext(clientNode, context = {}) {
@@ -226,9 +231,9 @@ export class NodeHonoTransport {
226
231
  context.token = token.replace('Bearer ', '');
227
232
  }
228
233
  if (this.server.auth instanceof Function) {
229
- let result = this.server.auth.call(clientNode, context ?? {});
234
+ let result = this.server.auth.call(clientNode, context);
230
235
  result = result instanceof Promise ? await result : result;
231
- return result;
236
+ return result || false;
232
237
  }
233
238
  return false;
234
239
  }
@@ -236,7 +241,17 @@ export class NodeHonoTransport {
236
241
  if (!body)
237
242
  return { context: null };
238
243
  try {
239
- return EJSON.parse(body);
244
+ const decoded = EJSON.parse(body);
245
+ if (!decoded || typeof decoded !== 'object')
246
+ return { context: null };
247
+ const transport = decoded;
248
+ const payload = transport.payload;
249
+ return {
250
+ ...(payload && typeof payload === 'object'
251
+ ? { payload: payload }
252
+ : {}),
253
+ context: transport.context,
254
+ };
240
255
  }
241
256
  catch {
242
257
  return { context: null };
@@ -324,4 +339,41 @@ export class NodeHonoTransport {
324
339
  this.server.emit(HttpTransportEvents.HTTP_SERVER_CLOSED);
325
340
  }
326
341
  }
342
+ /**
343
+ * Rejects invalid limits before the listener starts accepting requests.
344
+ */
345
+ function validateRequestBodyLimits(globalLimit, limits) {
346
+ for (const limit of [globalLimit, ...limits.map(rule => rule.maxSize)]) {
347
+ if (!Number.isSafeInteger(limit) || limit < 1) {
348
+ throw new Error('Request body limits must be positive safe integers');
349
+ }
350
+ }
351
+ for (const { pathPrefix } of limits) {
352
+ if (!pathPrefix.startsWith('/') ||
353
+ pathPrefix === '/' ||
354
+ pathPrefix.endsWith('/') ||
355
+ pathPrefix.includes('\0') ||
356
+ /[?#%\\\s]/u.test(pathPrefix)) {
357
+ throw new Error('Request body limit prefixes must be non-root paths without query, fragment, encoding or trailing slash');
358
+ }
359
+ }
360
+ }
361
+ /**
362
+ * Decode once because Hono route parameters decode encoded input. Otherwise
363
+ * percent-encoded equivalents could bypass a more restrictive prefix ceiling.
364
+ */
365
+ function getRequestBodyLimit(path, globalLimit, limits) {
366
+ let decodedPath;
367
+ try {
368
+ decodedPath = decodeURIComponent(path);
369
+ }
370
+ catch {
371
+ // Malformed encodings should not receive a more permissive buffering limit.
372
+ return Math.min(globalLimit, ...limits.map(rule => rule.maxSize));
373
+ }
374
+ return limits.reduce((limit, rule) => decodedPath === rule.pathPrefix ||
375
+ decodedPath.startsWith(`${rule.pathPrefix}/`)
376
+ ? Math.min(limit, rule.maxSize)
377
+ : limit, globalLimit);
378
+ }
327
379
  //# sourceMappingURL=node-hono-transport.js.map