@fluojs/websockets 1.0.0-beta.1 → 1.0.0-beta.3

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.
@@ -1,5 +1,11 @@
1
1
  import type { WebSocketModuleOptions as SharedWebSocketModuleOptions } from '../types.js';
2
+ /**
3
+ * Defines the bun web socket message type.
4
+ */
2
5
  export type BunWebSocketMessage = string | ArrayBuffer | Uint8Array;
6
+ /**
7
+ * Describes the bun server web socket contract.
8
+ */
3
9
  export interface BunServerWebSocket<TData = unknown> {
4
10
  readonly data: TData;
5
11
  readonly readyState: number;
@@ -13,6 +19,9 @@ export interface BunServerWebSocket<TData = unknown> {
13
19
  subscribe(topic: string): void;
14
20
  unsubscribe(topic: string): void;
15
21
  }
22
+ /**
23
+ * Describes the bun server like contract.
24
+ */
16
25
  export interface BunServerLike {
17
26
  fetch?(request: Request): Response | Promise<Response> | undefined | Promise<Response | undefined>;
18
27
  hostname?: string;
@@ -24,6 +33,9 @@ export interface BunServerLike {
24
33
  }): boolean;
25
34
  url?: URL;
26
35
  }
36
+ /**
37
+ * Describes the bun web socket handler contract.
38
+ */
27
39
  export interface BunWebSocketHandler<TData = unknown> {
28
40
  backpressureLimit?: number;
29
41
  close?(socket: BunServerWebSocket<TData>, code: number, reason: string): void | Promise<void>;
@@ -42,17 +54,32 @@ export interface BunWebSocketHandler<TData = unknown> {
42
54
  publishToSelf?: boolean;
43
55
  sendPings?: boolean;
44
56
  }
57
+ /**
58
+ * Describes the bun web socket binding contract.
59
+ */
45
60
  export interface BunWebSocketBinding<TData = unknown> {
46
61
  fetch(request: Request, server: BunServerLike): Response | Promise<Response> | undefined | Promise<Response | undefined>;
47
62
  websocket: BunWebSocketHandler<TData>;
48
63
  }
64
+ /**
65
+ * Describes the bun web socket binding host contract.
66
+ */
49
67
  export interface BunWebSocketBindingHost {
50
68
  configureWebSocketBinding<TData>(binding: BunWebSocketBinding<TData> | undefined): void;
51
69
  }
70
+ /**
71
+ * Defines the typed on message handler type.
72
+ */
52
73
  export type TypedOnMessageHandler<TEvents extends Record<string, unknown>, K extends keyof TEvents> = (payload: TEvents[K], socket: BunServerWebSocket, request: Request) => void | Promise<void>;
74
+ /**
75
+ * Describes the web socket gateway context contract.
76
+ */
53
77
  export interface WebSocketGatewayContext {
54
78
  request: Request;
55
79
  socket: BunServerWebSocket;
56
80
  }
81
+ /**
82
+ * Defines the web socket module options type.
83
+ */
57
84
  export type WebSocketModuleOptions = SharedWebSocketModuleOptions;
58
85
  //# sourceMappingURL=bun-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bun-types.d.ts","sourceRoot":"","sources":["../../src/bun/bun-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bun-types.d.ts","sourceRoot":"","sources":["../../src/bun/bun-types.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,7 @@ function isHttpExceptionLike(error) {
37
37
  }
38
38
  function resolveMessageByteLength(message) {
39
39
  if (typeof message === 'string') {
40
- return Buffer.byteLength(message);
40
+ return new TextEncoder().encode(message).byteLength;
41
41
  }
42
42
  if (message instanceof Blob) {
43
43
  return message.size;
@@ -1,30 +1,60 @@
1
1
  import type { WebSocketModuleOptions as SharedWebSocketModuleOptions } from '../types.js';
2
+ /**
3
+ * Defines the cloudflare worker web socket message type.
4
+ */
2
5
  export type CloudflareWorkerWebSocketMessage = ArrayBuffer | ArrayBufferView | Blob | string;
6
+ /**
7
+ * Describes the cloudflare worker web socket contract.
8
+ */
3
9
  export interface CloudflareWorkerWebSocket extends Pick<WebSocket, 'addEventListener' | 'close' | 'removeEventListener' | 'send'> {
4
10
  readonly readyState: number;
5
11
  accept(): void;
6
12
  }
13
+ /**
14
+ * Describes the cloudflare worker web socket pair contract.
15
+ */
7
16
  export interface CloudflareWorkerWebSocketPair {
8
17
  0: CloudflareWorkerWebSocket;
9
18
  1: CloudflareWorkerWebSocket;
10
19
  }
20
+ /**
21
+ * Describes the cloudflare worker web socket upgrade result contract.
22
+ */
11
23
  export interface CloudflareWorkerWebSocketUpgradeResult {
12
24
  response: Response;
13
25
  serverSocket: CloudflareWorkerWebSocket;
14
26
  }
27
+ /**
28
+ * Describes the cloudflare worker web socket upgrade host contract.
29
+ */
15
30
  export interface CloudflareWorkerWebSocketUpgradeHost {
16
31
  upgrade(request: Request): CloudflareWorkerWebSocketUpgradeResult;
17
32
  }
33
+ /**
34
+ * Describes the cloudflare worker web socket binding contract.
35
+ */
18
36
  export interface CloudflareWorkerWebSocketBinding {
19
37
  fetch(request: Request, host: CloudflareWorkerWebSocketUpgradeHost): Response | Promise<Response>;
20
38
  }
39
+ /**
40
+ * Describes the cloudflare worker web socket binding host contract.
41
+ */
21
42
  export interface CloudflareWorkerWebSocketBindingHost {
22
43
  configureWebSocketBinding(binding: CloudflareWorkerWebSocketBinding | undefined): void;
23
44
  }
45
+ /**
46
+ * Defines the typed on message handler type.
47
+ */
24
48
  export type TypedOnMessageHandler<TEvents extends Record<string, unknown>, K extends keyof TEvents> = (payload: TEvents[K], socket: CloudflareWorkerWebSocket, request: Request) => void | Promise<void>;
49
+ /**
50
+ * Describes the web socket gateway context contract.
51
+ */
25
52
  export interface WebSocketGatewayContext {
26
53
  request: Request;
27
54
  socket: CloudflareWorkerWebSocket;
28
55
  }
56
+ /**
57
+ * Defines the web socket module options type.
58
+ */
29
59
  export type WebSocketModuleOptions = SharedWebSocketModuleOptions;
30
60
  //# sourceMappingURL=cloudflare-workers-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-workers-types.d.ts","sourceRoot":"","sources":["../../src/cloudflare-workers/cloudflare-workers-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,IAAI,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE1F,MAAM,MAAM,gCAAgC,GAAG,WAAW,GAAG,eAAe,GAAG,IAAI,GAAG,MAAM,CAAC;AAE7F,MAAM,WAAW,yBACf,SAAQ,IAAI,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,GAAG,qBAAqB,GAAG,MAAM,CAAC;IACtF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,6BAA6B;IAC5C,CAAC,EAAE,yBAAyB,CAAC;IAC7B,CAAC,EAAE,yBAAyB,CAAC;CAC9B;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,yBAAyB,CAAC;CACzC;AAED,MAAM,WAAW,oCAAoC;IACnD,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,sCAAsC,CAAC;CACnE;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,oCAAoC,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnG;AAED,MAAM,WAAW,oCAAoC;IACnD,yBAAyB,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,GAAG,IAAI,CAAC;CACxF;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,OAAO,IAAI,CACpG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,OAAO,KACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAED,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,CAAC"}
1
+ {"version":3,"file":"cloudflare-workers-types.d.ts","sourceRoot":"","sources":["../../src/cloudflare-workers/cloudflare-workers-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,IAAI,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG,WAAW,GAAG,eAAe,GAAG,IAAI,GAAG,MAAM,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,yBACf,SAAQ,IAAI,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,GAAG,qBAAqB,GAAG,MAAM,CAAC;IACtF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,CAAC,EAAE,yBAAyB,CAAC;IAC7B,CAAC,EAAE,yBAAyB,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,sCAAsC;IACrD,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,yBAAyB,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,oCAAoC;IACnD,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,sCAAsC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,oCAAoC,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnG;AAED;;GAEG;AACH,MAAM,WAAW,oCAAoC;IACnD,yBAAyB,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,GAAG,IAAI,CAAC;CACxF;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,OAAO,IAAI,CACpG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,OAAO,KACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,CAAC"}
@@ -37,7 +37,7 @@ function isHttpExceptionLike(error) {
37
37
  }
38
38
  function resolveMessageByteLength(message) {
39
39
  if (typeof message === 'string') {
40
- return Buffer.byteLength(message);
40
+ return new TextEncoder().encode(message).byteLength;
41
41
  }
42
42
  return message.size;
43
43
  }
@@ -1,25 +1,52 @@
1
1
  import type { WebSocketModuleOptions as SharedWebSocketModuleOptions } from '../types.js';
2
+ /**
3
+ * Defines the deno web socket message type.
4
+ */
2
5
  export type DenoWebSocketMessage = Blob | string;
6
+ /**
7
+ * Describes the deno server web socket contract.
8
+ */
3
9
  export interface DenoServerWebSocket extends Pick<WebSocket, 'addEventListener' | 'close' | 'removeEventListener' | 'send'> {
4
10
  readonly readyState: number;
5
11
  }
12
+ /**
13
+ * Describes the deno web socket upgrade result contract.
14
+ */
6
15
  export interface DenoWebSocketUpgradeResult<TSocket extends DenoServerWebSocket = DenoServerWebSocket> {
7
16
  response: Response;
8
17
  socket: TSocket;
9
18
  }
19
+ /**
20
+ * Describes the deno web socket upgrade host contract.
21
+ */
10
22
  export interface DenoWebSocketUpgradeHost<TSocket extends DenoServerWebSocket = DenoServerWebSocket> {
11
23
  upgrade(request: Request): DenoWebSocketUpgradeResult<TSocket>;
12
24
  }
25
+ /**
26
+ * Describes the deno web socket binding contract.
27
+ */
13
28
  export interface DenoWebSocketBinding<TSocket extends DenoServerWebSocket = DenoServerWebSocket> {
14
29
  fetch(request: Request, host: DenoWebSocketUpgradeHost<TSocket>): Response | Promise<Response>;
15
30
  }
31
+ /**
32
+ * Describes the deno web socket binding host contract.
33
+ */
16
34
  export interface DenoWebSocketBindingHost<TSocket extends DenoServerWebSocket = DenoServerWebSocket> {
17
35
  configureWebSocketBinding(binding: DenoWebSocketBinding<TSocket> | undefined): void;
18
36
  }
37
+ /**
38
+ * Defines the typed on message handler type.
39
+ */
19
40
  export type TypedOnMessageHandler<TEvents extends Record<string, unknown>, K extends keyof TEvents> = (payload: TEvents[K], socket: DenoServerWebSocket, request: Request) => void | Promise<void>;
41
+ /**
42
+ * Describes the web socket gateway context contract.
43
+ */
20
44
  export interface WebSocketGatewayContext {
21
45
  request: Request;
22
46
  socket: DenoServerWebSocket;
23
47
  }
48
+ /**
49
+ * Defines the web socket module options type.
50
+ */
24
51
  export type WebSocketModuleOptions = SharedWebSocketModuleOptions;
25
52
  //# sourceMappingURL=deno-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deno-types.d.ts","sourceRoot":"","sources":["../../src/deno/deno-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,IAAI,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE1F,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,GAAG,qBAAqB,GAAG,MAAM,CAAC;IACzH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB;IACnG,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB;IACjG,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB;IAC7F,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAChG;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB;IACjG,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CACrF;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,OAAO,IAAI,CACpG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,OAAO,KACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,CAAC"}
1
+ {"version":3,"file":"deno-types.d.ts","sourceRoot":"","sources":["../../src/deno/deno-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,IAAI,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,MAAM,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,GAAG,qBAAqB,GAAG,MAAM,CAAC;IACzH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB;IACnG,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB;IACjG,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB;IAC7F,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAChG;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB;IACjG,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CACrF;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,OAAO,IAAI,CACpG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,OAAO,KACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,CAAC"}
@@ -2,27 +2,108 @@ import type { Token } from '@fluojs/core';
2
2
  import type { Container } from '@fluojs/di';
3
3
  import type { ApplicationLogger, CompiledModule } from '@fluojs/runtime';
4
4
  import type { WebSocketGatewayDescriptor, WebSocketGatewayHandlerDescriptor } from '../types.js';
5
+ /**
6
+ * Describes the discovery candidate contract.
7
+ */
5
8
  export interface DiscoveryCandidate {
6
9
  moduleName: string;
7
10
  scope: 'request' | 'singleton' | 'transient';
8
11
  targetType: Function;
9
12
  token: Token;
10
13
  }
14
+ /**
15
+ * Describes the resolved gateway instance contract.
16
+ */
11
17
  export interface ResolvedGatewayInstance {
12
18
  descriptor: WebSocketGatewayDescriptor;
13
19
  instance: unknown;
14
20
  }
21
+ /**
22
+ * Defines the parsed web socket message type.
23
+ */
15
24
  export type ParsedWebSocketMessage = {
16
25
  event?: string;
17
26
  payload: unknown;
18
27
  };
28
+ /**
29
+ * Defines the shared web socket incoming message type.
30
+ */
19
31
  export type SharedWebSocketIncomingMessage = ArrayBuffer | ArrayBufferView | Uint8Array[] | string;
32
+ /**
33
+ * Is finite positive integer.
34
+ *
35
+ * @param value The value.
36
+ * @returns The is finite positive integer result.
37
+ */
20
38
  export declare function isFinitePositiveInteger(value: unknown): value is number;
39
+ /**
40
+ * Normalize gateway path.
41
+ *
42
+ * @param path The path.
43
+ * @returns The normalize gateway path result.
44
+ */
21
45
  export declare function normalizeGatewayPath(path: string): string;
46
+ /**
47
+ * Parse incoming message.
48
+ *
49
+ * @param data The data.
50
+ * @returns The parse incoming message result.
51
+ */
22
52
  export declare function parseIncomingMessage(data: SharedWebSocketIncomingMessage): ParsedWebSocketMessage;
53
+ /**
54
+ * Discover gateway descriptors.
55
+ *
56
+ * @param compiledModules The compiled modules.
57
+ * @param logger The logger.
58
+ * @param loggerContext The logger context.
59
+ * @returns The discover gateway descriptors result.
60
+ */
23
61
  export declare function discoverGatewayDescriptors(compiledModules: readonly CompiledModule[], logger: ApplicationLogger, loggerContext: string): WebSocketGatewayDescriptor[];
62
+ /**
63
+ * Resolve gateway instance.
64
+ *
65
+ * @param runtimeContainer The runtime container.
66
+ * @param descriptor The descriptor.
67
+ * @param logger The logger.
68
+ * @param loggerContext The logger context.
69
+ * @returns The resolve gateway instance result.
70
+ */
24
71
  export declare function resolveGatewayInstance(runtimeContainer: Container, descriptor: WebSocketGatewayDescriptor, logger: ApplicationLogger, loggerContext: string): Promise<unknown | undefined>;
72
+ /**
73
+ * Dispatch gateway message.
74
+ *
75
+ * @param resolved The resolved.
76
+ * @param socket The socket.
77
+ * @param request The request.
78
+ * @param data The data.
79
+ * @param logger The logger.
80
+ * @param loggerContext The logger context.
81
+ * @returns The dispatch gateway message result.
82
+ */
25
83
  export declare function dispatchGatewayMessage<TSocket, TRequest>(resolved: readonly ResolvedGatewayInstance[], socket: TSocket, request: TRequest, data: SharedWebSocketIncomingMessage, logger: ApplicationLogger, loggerContext: string): Promise<void>;
84
+ /**
85
+ * Dispatch gateway disconnect.
86
+ *
87
+ * @param resolved The resolved.
88
+ * @param socket The socket.
89
+ * @param code The code.
90
+ * @param reason The reason.
91
+ * @param socketId The socket id.
92
+ * @param logger The logger.
93
+ * @param loggerContext The logger context.
94
+ * @returns The dispatch gateway disconnect result.
95
+ */
26
96
  export declare function dispatchGatewayDisconnect<TSocket>(resolved: readonly ResolvedGatewayInstance[], socket: TSocket, code: number, reason: string, socketId: string, logger: ApplicationLogger, loggerContext: string): Promise<void>;
97
+ /**
98
+ * Run gateway handlers.
99
+ *
100
+ * @param instance The instance.
101
+ * @param descriptor The descriptor.
102
+ * @param type The type.
103
+ * @param args The args.
104
+ * @param logger The logger.
105
+ * @param loggerContext The logger context.
106
+ * @returns The run gateway handlers result.
107
+ */
27
108
  export declare function runGatewayHandlers(instance: unknown, descriptor: WebSocketGatewayDescriptor, type: WebSocketGatewayHandlerDescriptor['type'], args: unknown[], logger: ApplicationLogger, loggerContext: string): Promise<void>;
28
109
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/internal/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,KAAK,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,KAAK,EACV,0BAA0B,EAC1B,iCAAiC,EAClC,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,UAAU,EAAE,QAAQ,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;CACd;AAQD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,0BAA0B,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GACtC,WAAW,GACX,eAAe,GACf,UAAU,EAAE,GACZ,MAAM,CAAC;AAEX,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,8BAA8B,GAAG,sBAAsB,CA4CjG;AAED,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,SAAS,cAAc,EAAE,EAC1C,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,0BAA0B,EAAE,CA4B9B;AAED,wBAAsB,sBAAsB,CAC1C,gBAAgB,EAAE,SAAS,EAC3B,UAAU,EAAE,0BAA0B,EACtC,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAW9B;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAC5D,QAAQ,EAAE,SAAS,uBAAuB,EAAE,EAC5C,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,8BAA8B,EACpC,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EACrD,QAAQ,EAAE,SAAS,uBAAuB,EAAE,EAC5C,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,0BAA0B,EACtC,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,EAC/C,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAMf"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/internal/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,KAAK,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,KAAK,EACV,0BAA0B,EAC1B,iCAAiC,EAClC,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,UAAU,EAAE,QAAQ,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;CACd;AAQD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,0BAA0B,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,8BAA8B,GACtC,WAAW,GACX,eAAe,GACf,UAAU,EAAE,GACZ,MAAM,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,8BAA8B,GAAG,sBAAsB,CA4CjG;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,SAAS,cAAc,EAAE,EAC1C,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,0BAA0B,EAAE,CA4B9B;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,gBAAgB,EAAE,SAAS,EAC3B,UAAU,EAAE,0BAA0B,EACtC,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAW9B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAC5D,QAAQ,EAAE,SAAS,uBAAuB,EAAE,EAC5C,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,8BAA8B,EACpC,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EACrD,QAAQ,EAAE,SAAS,uBAAuB,EAAE,EAC5C,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,0BAA0B,EACtC,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,EAC/C,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -1,9 +1,39 @@
1
1
  import { getClassDiMetadata } from '@fluojs/core/internal';
2
2
  import { getWebSocketGatewayMetadata, getWebSocketHandlerMetadataEntries } from '../metadata.js';
3
3
  const textDecoder = new TextDecoder();
4
+
5
+ /**
6
+ * Describes the discovery candidate contract.
7
+ */
8
+
9
+ /**
10
+ * Describes the resolved gateway instance contract.
11
+ */
12
+
13
+ /**
14
+ * Defines the parsed web socket message type.
15
+ */
16
+
17
+ /**
18
+ * Defines the shared web socket incoming message type.
19
+ */
20
+
21
+ /**
22
+ * Is finite positive integer.
23
+ *
24
+ * @param value The value.
25
+ * @returns The is finite positive integer result.
26
+ */
4
27
  export function isFinitePositiveInteger(value) {
5
28
  return typeof value === 'number' && Number.isFinite(value) && value > 0 && Number.isInteger(value);
6
29
  }
30
+
31
+ /**
32
+ * Normalize gateway path.
33
+ *
34
+ * @param path The path.
35
+ * @returns The normalize gateway path result.
36
+ */
7
37
  export function normalizeGatewayPath(path) {
8
38
  if (path === '/') {
9
39
  return '/';
@@ -11,6 +41,13 @@ export function normalizeGatewayPath(path) {
11
41
  const normalized = `/${path.replace(/^\/+/, '').replace(/\/+$/, '')}`;
12
42
  return normalized === '' ? '/' : normalized;
13
43
  }
44
+
45
+ /**
46
+ * Parse incoming message.
47
+ *
48
+ * @param data The data.
49
+ * @returns The parse incoming message result.
50
+ */
14
51
  export function parseIncomingMessage(data) {
15
52
  let text;
16
53
  if (typeof data === 'string') {
@@ -50,6 +87,15 @@ export function parseIncomingMessage(data) {
50
87
  payload: parsed
51
88
  };
52
89
  }
90
+
91
+ /**
92
+ * Discover gateway descriptors.
93
+ *
94
+ * @param compiledModules The compiled modules.
95
+ * @param logger The logger.
96
+ * @param loggerContext The logger context.
97
+ * @returns The discover gateway descriptors result.
98
+ */
53
99
  export function discoverGatewayDescriptors(compiledModules, logger, loggerContext) {
54
100
  const seenTargets = new Set();
55
101
  const descriptors = [];
@@ -70,6 +116,16 @@ export function discoverGatewayDescriptors(compiledModules, logger, loggerContex
70
116
  }
71
117
  return descriptors;
72
118
  }
119
+
120
+ /**
121
+ * Resolve gateway instance.
122
+ *
123
+ * @param runtimeContainer The runtime container.
124
+ * @param descriptor The descriptor.
125
+ * @param logger The logger.
126
+ * @param loggerContext The logger context.
127
+ * @returns The resolve gateway instance result.
128
+ */
73
129
  export async function resolveGatewayInstance(runtimeContainer, descriptor, logger, loggerContext) {
74
130
  try {
75
131
  return await runtimeContainer.resolve(descriptor.token);
@@ -78,6 +134,18 @@ export async function resolveGatewayInstance(runtimeContainer, descriptor, logge
78
134
  return undefined;
79
135
  }
80
136
  }
137
+
138
+ /**
139
+ * Dispatch gateway message.
140
+ *
141
+ * @param resolved The resolved.
142
+ * @param socket The socket.
143
+ * @param request The request.
144
+ * @param data The data.
145
+ * @param logger The logger.
146
+ * @param loggerContext The logger context.
147
+ * @returns The dispatch gateway message result.
148
+ */
81
149
  export async function dispatchGatewayMessage(resolved, socket, request, data, logger, loggerContext) {
82
150
  const parsed = parseIncomingMessage(data);
83
151
  for (const {
@@ -90,6 +158,19 @@ export async function dispatchGatewayMessage(resolved, socket, request, data, lo
90
158
  }
91
159
  }
92
160
  }
161
+
162
+ /**
163
+ * Dispatch gateway disconnect.
164
+ *
165
+ * @param resolved The resolved.
166
+ * @param socket The socket.
167
+ * @param code The code.
168
+ * @param reason The reason.
169
+ * @param socketId The socket id.
170
+ * @param logger The logger.
171
+ * @param loggerContext The logger context.
172
+ * @returns The dispatch gateway disconnect result.
173
+ */
93
174
  export async function dispatchGatewayDisconnect(resolved, socket, code, reason, socketId, logger, loggerContext) {
94
175
  for (const {
95
176
  descriptor,
@@ -98,6 +179,18 @@ export async function dispatchGatewayDisconnect(resolved, socket, code, reason,
98
179
  await runGatewayHandlers(instance, descriptor, 'disconnect', [socket, code, reason, socketId], logger, loggerContext);
99
180
  }
100
181
  }
182
+
183
+ /**
184
+ * Run gateway handlers.
185
+ *
186
+ * @param instance The instance.
187
+ * @param descriptor The descriptor.
188
+ * @param type The type.
189
+ * @param args The args.
190
+ * @param logger The logger.
191
+ * @param loggerContext The logger context.
192
+ * @returns The run gateway handlers result.
193
+ */
101
194
  export async function runGatewayHandlers(instance, descriptor, type, args, logger, loggerContext) {
102
195
  const handlers = descriptor.handlers.filter(handler => handler.type === type);
103
196
  for (const handler of handlers) {
@@ -1,13 +1,51 @@
1
1
  import type { MetadataPropertyKey } from '@fluojs/core';
2
2
  import type { WebSocketGatewayHandlerMetadata, WebSocketGatewayMetadata } from './types.js';
3
+ /**
4
+ * Define web socket gateway metadata.
5
+ *
6
+ * @param target The target.
7
+ * @param metadata The metadata.
8
+ */
3
9
  export declare function defineWebSocketGatewayMetadata(target: object, metadata: WebSocketGatewayMetadata): void;
10
+ /**
11
+ * Get web socket gateway metadata.
12
+ *
13
+ * @param target The target.
14
+ * @returns The get web socket gateway metadata result.
15
+ */
4
16
  export declare function getWebSocketGatewayMetadata(target: object): WebSocketGatewayMetadata | undefined;
17
+ /**
18
+ * Define web socket handler metadata.
19
+ *
20
+ * @param target The target.
21
+ * @param propertyKey The property key.
22
+ * @param metadata The metadata.
23
+ */
5
24
  export declare function defineWebSocketHandlerMetadata(target: object, propertyKey: MetadataPropertyKey, metadata: WebSocketGatewayHandlerMetadata): void;
25
+ /**
26
+ * Get web socket handler metadata.
27
+ *
28
+ * @param target The target.
29
+ * @param propertyKey The property key.
30
+ * @returns The get web socket handler metadata result.
31
+ */
6
32
  export declare function getWebSocketHandlerMetadata(target: object, propertyKey: MetadataPropertyKey): WebSocketGatewayHandlerMetadata | undefined;
33
+ /**
34
+ * Get web socket handler metadata entries.
35
+ *
36
+ * @param target The target.
37
+ * @returns The get web socket handler metadata entries result.
38
+ */
7
39
  export declare function getWebSocketHandlerMetadataEntries(target: object): Array<{
8
40
  metadata: WebSocketGatewayHandlerMetadata;
9
41
  propertyKey: MetadataPropertyKey;
10
42
  }>;
43
+ /**
44
+ * Provides the web socket gateway metadata symbol value.
45
+ */
11
46
  export declare const webSocketGatewayMetadataSymbol: symbol;
47
+ /**
48
+ * Provides the web socket handler metadata symbol value.
49
+ */
12
50
  export declare const webSocketHandlerMetadataSymbol: symbol;
13
51
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EACV,+BAA+B,EAC/B,wBAAwB,EACzB,MAAM,YAAY,CAAC;AA2EpB,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAEvG;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAShG;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EAAE,+BAA+B,GACxC,IAAI,CAEN;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,mBAAmB,GAC/B,+BAA+B,GAAG,SAAS,CAS7C;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,MAAM,GACb,KAAK,CAAC;IAAE,QAAQ,EAAE,+BAA+B,CAAC;IAAC,WAAW,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAcxF;AAED,eAAO,MAAM,8BAA8B,QAAsC,CAAC;AAClF,eAAO,MAAM,8BAA8B,QAAsC,CAAC"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,KAAK,EACV,+BAA+B,EAC/B,wBAAwB,EACzB,MAAM,YAAY,CAAC;AA2DpB;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAEvG;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAShG;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EAAE,+BAA+B,GACxC,IAAI,CAEN;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,mBAAmB,GAC/B,+BAA+B,GAAG,SAAS,CAS7C;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,MAAM,GACb,KAAK,CAAC;IAAE,QAAQ,EAAE,+BAA+B,CAAC;IAAC,WAAW,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAcxF;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,QAAsC,CAAC;AAClF;;GAEG;AACH,eAAO,MAAM,8BAA8B,QAAsC,CAAC"}
package/dist/metadata.js CHANGED
@@ -1,11 +1,5 @@
1
- const symbolWithMetadata = Symbol;
2
- const metadataSymbol = symbolWithMetadata.metadata ?? Symbol.for('fluo.symbol.metadata');
3
- if (!symbolWithMetadata.metadata) {
4
- Object.defineProperty(Symbol, 'metadata', {
5
- configurable: true,
6
- value: metadataSymbol
7
- });
8
- }
1
+ import { ensureSymbolMetadataPolyfill, getStandardConstructorMetadataBag, getStandardMetadataBag } from '@fluojs/core/internal';
2
+ void ensureSymbolMetadataPolyfill();
9
3
  const standardWebSocketGatewayMetadataKey = Symbol.for('fluo.websocket.standard.gateway');
10
4
  const standardWebSocketHandlerMetadataKey = Symbol.for('fluo.websocket.standard.handler');
11
5
  const gatewayMetadataStore = new WeakMap();
@@ -24,9 +18,6 @@ function cloneHandlerMetadata(metadata) {
24
18
  type: metadata.type
25
19
  };
26
20
  }
27
- function getStandardMetadataBag(target) {
28
- return target[metadataSymbol];
29
- }
30
21
  function getStandardGatewayMetadata(target) {
31
22
  const metadata = getStandardMetadataBag(target)?.[standardWebSocketGatewayMetadataKey];
32
23
  if (!metadata) {
@@ -35,8 +26,7 @@ function getStandardGatewayMetadata(target) {
35
26
  return cloneGatewayMetadata(metadata);
36
27
  }
37
28
  function getStandardHandlerMap(target) {
38
- const constructor = target.constructor;
39
- return constructor ? getStandardMetadataBag(constructor)?.[standardWebSocketHandlerMetadataKey] : undefined;
29
+ return getStandardConstructorMetadataBag(target)?.[standardWebSocketHandlerMetadataKey];
40
30
  }
41
31
  function getOrCreateHandlerMetadataMap(target) {
42
32
  let map = handlerMetadataStore.get(target);
@@ -46,9 +36,23 @@ function getOrCreateHandlerMetadataMap(target) {
46
36
  }
47
37
  return map;
48
38
  }
39
+
40
+ /**
41
+ * Define web socket gateway metadata.
42
+ *
43
+ * @param target The target.
44
+ * @param metadata The metadata.
45
+ */
49
46
  export function defineWebSocketGatewayMetadata(target, metadata) {
50
47
  gatewayMetadataStore.set(target, cloneGatewayMetadata(metadata));
51
48
  }
49
+
50
+ /**
51
+ * Get web socket gateway metadata.
52
+ *
53
+ * @param target The target.
54
+ * @returns The get web socket gateway metadata result.
55
+ */
52
56
  export function getWebSocketGatewayMetadata(target) {
53
57
  const stored = gatewayMetadataStore.get(target);
54
58
  const standard = getStandardGatewayMetadata(target);
@@ -57,9 +61,25 @@ export function getWebSocketGatewayMetadata(target) {
57
61
  }
58
62
  return cloneGatewayMetadata(stored ?? standard);
59
63
  }
64
+
65
+ /**
66
+ * Define web socket handler metadata.
67
+ *
68
+ * @param target The target.
69
+ * @param propertyKey The property key.
70
+ * @param metadata The metadata.
71
+ */
60
72
  export function defineWebSocketHandlerMetadata(target, propertyKey, metadata) {
61
73
  getOrCreateHandlerMetadataMap(target).set(propertyKey, cloneHandlerMetadata(metadata));
62
74
  }
75
+
76
+ /**
77
+ * Get web socket handler metadata.
78
+ *
79
+ * @param target The target.
80
+ * @param propertyKey The property key.
81
+ * @returns The get web socket handler metadata result.
82
+ */
63
83
  export function getWebSocketHandlerMetadata(target, propertyKey) {
64
84
  const stored = handlerMetadataStore.get(target)?.get(propertyKey);
65
85
  const standard = getStandardHandlerMap(target)?.get(propertyKey);
@@ -68,6 +88,13 @@ export function getWebSocketHandlerMetadata(target, propertyKey) {
68
88
  }
69
89
  return cloneHandlerMetadata(stored ?? standard);
70
90
  }
91
+
92
+ /**
93
+ * Get web socket handler metadata entries.
94
+ *
95
+ * @param target The target.
96
+ * @returns The get web socket handler metadata entries result.
97
+ */
71
98
  export function getWebSocketHandlerMetadataEntries(target) {
72
99
  const stored = handlerMetadataStore.get(target) ?? new Map();
73
100
  const standard = getStandardHandlerMap(target) ?? new Map();
@@ -77,5 +104,12 @@ export function getWebSocketHandlerMetadataEntries(target) {
77
104
  propertyKey
78
105
  })).filter(entry => entry.metadata !== undefined);
79
106
  }
107
+
108
+ /**
109
+ * Provides the web socket gateway metadata symbol value.
110
+ */
80
111
  export const webSocketGatewayMetadataSymbol = standardWebSocketGatewayMetadataKey;
112
+ /**
113
+ * Provides the web socket handler metadata symbol value.
114
+ */
81
115
  export const webSocketHandlerMetadataSymbol = standardWebSocketHandlerMetadataKey;
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "realtime",
10
10
  "upgrade"
11
11
  ],
12
- "version": "1.0.0-beta.1",
12
+ "version": "1.0.0-beta.3",
13
13
  "private": false,
14
14
  "license": "MIT",
15
15
  "repository": {
@@ -69,17 +69,17 @@
69
69
  ],
70
70
  "dependencies": {
71
71
  "ws": "^8.18.3",
72
- "@fluojs/core": "^1.0.0-beta.1",
73
- "@fluojs/di": "^1.0.0-beta.1",
74
- "@fluojs/http": "^1.0.0-beta.1",
75
- "@fluojs/runtime": "^1.0.0-beta.1"
72
+ "@fluojs/di": "^1.0.0-beta.4",
73
+ "@fluojs/core": "^1.0.0-beta.2",
74
+ "@fluojs/http": "^1.0.0-beta.3",
75
+ "@fluojs/runtime": "^1.0.0-beta.4"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@types/ws": "^8.18.1",
79
79
  "vitest": "^3.2.4",
80
- "@fluojs/platform-fastify": "^1.0.0-beta.1",
81
- "@fluojs/platform-express": "^1.0.0-beta.1",
82
- "@fluojs/platform-bun": "^1.0.0-beta.1"
80
+ "@fluojs/platform-bun": "^1.0.0-beta.3",
81
+ "@fluojs/platform-express": "^1.0.0-beta.3",
82
+ "@fluojs/platform-fastify": "^1.0.0-beta.4"
83
83
  },
84
84
  "scripts": {
85
85
  "prebuild": "node ../../tooling/scripts/clean-dist.mjs",