@nestjs/websockets
Advanced tools
Comparing version 9.2.1 to 9.3.0-beta.1
{ | ||
"name": "@nestjs/websockets", | ||
"version": "9.2.1", | ||
"version": "9.3.0-beta.1", | ||
"description": "Nest - modern, fast, powerful node.js web framework (@websockets)", | ||
@@ -20,4 +20,4 @@ "author": "Kamil Mysliwiec", | ||
"devDependencies": { | ||
"@nestjs/common": "9.2.1", | ||
"@nestjs/core": "9.2.1" | ||
"@nestjs/common": "^9.3.0-beta.1", | ||
"@nestjs/core": "^9.3.0-beta.1" | ||
}, | ||
@@ -24,0 +24,0 @@ "peerDependencies": { |
@@ -83,3 +83,4 @@ <p align="center"> | ||
<td> | ||
<a href="https://ridicorp.com/career/" target="_blank"><img src="https://nestjs.com/img/ridi-logo.svg" width="105" valign="middle" /></a></td></</tr></table> | ||
<a href="https://ridicorp.com/career/" target="_blank"><img src="https://nestjs.com/img/ridi-logo.svg" width="105" valign="middle" /></a></td><td> | ||
<a href="https://www.movavi.com/imovie-for-windows.html" target="_blank"><img src="https://nestjs.com/img/movavi-logo.svg" width="105" valign="middle" /></a></td></</tr></table> | ||
@@ -97,3 +98,4 @@ #### Silver Sponsors | ||
<td><a href="https://bilberrry.com/" target="_blank"><img src="https://nestjs.com/img/bilberrry-logo.svg" width="180" valign="middle" /></td> | ||
<td><a href="https://ipinfo.ai/" target="_blank"><img src="https://nestjs.com/img/ipinfo-logo.png" width="130" valign="middle" /></td></tr> | ||
<td><a href="https://ipinfo.ai/" target="_blank"><img src="https://nestjs.com/img/ipinfo-logo.png" width="130" valign="middle" /></td> | ||
<td><a href="https://chax.at" target="_blank"><img src="https://nestjs.com/img/chaxat-logo.png" width="100" valign="middle" /></td></tr> | ||
</table> | ||
@@ -139,3 +141,4 @@ | ||
<td align="center" valign="middle"><a href="https://www.mobilefactory.jp/" target="_blank"><img src="https://nestjs.com/img/mobilefactory-logo.png" width="100" valign="middle" /></a></td> | ||
<td align="center" valign="middle"><a href="https://db.nordbot.app/" target="_blank"><img src="https://nestjs.com/img/nord-logo.png" width="50" valign="middle" /></a></td> | ||
<td align="center" valign="middle"><a href="https://nordbot.app/" target="_blank"><img src="https://nestjs.com/img/nordbot-logo.png" width="120" valign="middle" /></a></td> | ||
<td align="center" valign="middle"><a href="https://doppio.sh/" target="_blank"><img src="https://nestjs.com/img/dopiosh-logo.png" width="50" valign="middle" /></a></td> | ||
</tr></table> | ||
@@ -142,0 +145,0 @@ |
import { Injectable } from '@nestjs/common/interfaces/injectable.interface'; | ||
import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; | ||
import { ApplicationConfig } from '@nestjs/core/application-config'; | ||
@@ -6,3 +7,4 @@ import { NestContainer } from '@nestjs/core/injector/container'; | ||
import { InstanceToken } from '@nestjs/core/injector/module'; | ||
export declare class SocketModule<HttpServer = any> { | ||
import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; | ||
export declare class SocketModule<THttpServer = any, TAppOptions extends NestApplicationContextOptions = NestApplicationContextOptions> { | ||
private readonly socketsContainer; | ||
@@ -13,3 +15,4 @@ private applicationConfig; | ||
private httpServer; | ||
register(container: NestContainer, config: ApplicationConfig, httpServer?: HttpServer): void; | ||
private appOptions; | ||
register(container: NestContainer, applicationConfig: ApplicationConfig, graphInspector: GraphInspector, appOptions: TAppOptions, httpServer?: THttpServer): void; | ||
connectAllGateways(providers: Map<InstanceToken, InstanceWrapper<Injectable>>, moduleName: string): void; | ||
@@ -16,0 +19,0 @@ connectGatewayToServer(wrapper: InstanceWrapper<Injectable>, moduleName: string): void; |
@@ -23,8 +23,9 @@ "use strict"; | ||
} | ||
register(container, config, httpServer) { | ||
this.applicationConfig = config; | ||
register(container, applicationConfig, graphInspector, appOptions, httpServer) { | ||
this.applicationConfig = applicationConfig; | ||
this.appOptions = appOptions; | ||
this.httpServer = httpServer; | ||
const contextCreator = this.getContextCreator(container); | ||
const serverProvider = new socket_server_provider_1.SocketServerProvider(this.socketsContainer, config); | ||
this.webSocketsController = new web_sockets_controller_1.WebSocketsController(serverProvider, config, contextCreator); | ||
const serverProvider = new socket_server_provider_1.SocketServerProvider(this.socketsContainer, applicationConfig); | ||
this.webSocketsController = new web_sockets_controller_1.WebSocketsController(serverProvider, applicationConfig, contextCreator, graphInspector, this.appOptions); | ||
const modules = container.getModules(); | ||
@@ -47,3 +48,3 @@ modules.forEach(({ providers }, moduleName) => this.connectAllGateways(providers, moduleName)); | ||
} | ||
this.webSocketsController.connectGatewayToServer(instance, metatype, moduleName); | ||
this.webSocketsController.connectGatewayToServer(instance, metatype, moduleName, wrapper.id); | ||
} | ||
@@ -50,0 +51,0 @@ async close() { |
@@ -0,3 +1,5 @@ | ||
import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; | ||
import { Type } from '@nestjs/common/interfaces/type.interface'; | ||
import { ApplicationConfig } from '@nestjs/core/application-config'; | ||
import { GraphInspector } from '@nestjs/core/inspector/graph-inspector'; | ||
import { Observable, Subject } from 'rxjs'; | ||
@@ -14,7 +16,9 @@ import { WsContextCreator } from './context/ws-context-creator'; | ||
private readonly contextCreator; | ||
private readonly graphInspector; | ||
private readonly appOptions; | ||
private readonly logger; | ||
private readonly metadataExplorer; | ||
constructor(socketServerProvider: SocketServerProvider, config: ApplicationConfig, contextCreator: WsContextCreator); | ||
connectGatewayToServer(instance: NestGateway, metatype: Type<unknown> | Function, moduleKey: string): void; | ||
subscribeToServerEvents<T extends GatewayMetadata>(instance: NestGateway, options: T, port: number, moduleKey: string): void; | ||
constructor(socketServerProvider: SocketServerProvider, config: ApplicationConfig, contextCreator: WsContextCreator, graphInspector: GraphInspector, appOptions?: NestApplicationContextOptions); | ||
connectGatewayToServer(instance: NestGateway, metatype: Type<unknown> | Function, moduleKey: string, instanceWrapperId: string): void; | ||
subscribeToServerEvents<T extends GatewayMetadata>(instance: NestGateway, options: T, port: number, moduleKey: string, instanceWrapperId: string): void; | ||
subscribeEvents(instance: NestGateway, subscribersMap: MessageMappingProperties[], observableServer: ServerAndEventStreamsHost): void; | ||
@@ -27,4 +31,5 @@ getConnectionHandler(context: WebSocketsController, instance: NestGateway, subscribersMap: MessageMappingProperties[], disconnect: Subject<any>, connection: Subject<any>): (...args: unknown[]) => void; | ||
pickResult(deferredResult: Promise<any>): Promise<Observable<any>>; | ||
inspectEntrypointDefinitions(instance: NestGateway, port: number, messageHandlers: MessageMappingProperties[], instanceWrapperId: string): void; | ||
private assignServerToProperties; | ||
private printSubscriptionLogs; | ||
} |
@@ -13,6 +13,8 @@ "use strict"; | ||
class WebSocketsController { | ||
constructor(socketServerProvider, config, contextCreator) { | ||
constructor(socketServerProvider, config, contextCreator, graphInspector, appOptions = {}) { | ||
this.socketServerProvider = socketServerProvider; | ||
this.config = config; | ||
this.contextCreator = contextCreator; | ||
this.graphInspector = graphInspector; | ||
this.appOptions = appOptions; | ||
this.logger = new logger_service_1.Logger(WebSocketsController.name, { | ||
@@ -23,3 +25,3 @@ timestamp: true, | ||
} | ||
connectGatewayToServer(instance, metatype, moduleKey) { | ||
connectGatewayToServer(instance, metatype, moduleKey, instanceWrapperId) { | ||
const options = Reflect.getMetadata(constants_1.GATEWAY_OPTIONS, metatype) || {}; | ||
@@ -30,5 +32,5 @@ const port = Reflect.getMetadata(constants_1.PORT_METADATA, metatype) || 0; | ||
} | ||
this.subscribeToServerEvents(instance, options, port, moduleKey); | ||
this.subscribeToServerEvents(instance, options, port, moduleKey, instanceWrapperId); | ||
} | ||
subscribeToServerEvents(instance, options, port, moduleKey) { | ||
subscribeToServerEvents(instance, options, port, moduleKey, instanceWrapperId) { | ||
const nativeMessageHandlers = this.metadataExplorer.explore(instance); | ||
@@ -40,2 +42,6 @@ const messageHandlers = nativeMessageHandlers.map(({ callback, message, methodName }) => ({ | ||
})); | ||
this.inspectEntrypointDefinitions(instance, port, messageHandlers, instanceWrapperId); | ||
if (this.appOptions.preview) { | ||
return; | ||
} | ||
const observableServer = this.socketServerProvider.scanForSocketServer(options, port); | ||
@@ -103,2 +109,18 @@ this.assignServerToProperties(instance, observableServer.server); | ||
} | ||
inspectEntrypointDefinitions(instance, port, messageHandlers, instanceWrapperId) { | ||
messageHandlers.forEach(handler => { | ||
var _a; | ||
this.graphInspector.insertEntrypointDefinition({ | ||
type: 'websocket', | ||
methodName: handler.methodName, | ||
className: (_a = instance.constructor) === null || _a === void 0 ? void 0 : _a.name, | ||
classNodeId: instanceWrapperId, | ||
metadata: { | ||
port, | ||
key: handler.message, | ||
message: handler.message, | ||
}, | ||
}, instanceWrapperId); | ||
}); | ||
} | ||
assignServerToProperties(instance, server) { | ||
@@ -105,0 +127,0 @@ for (const propertyKey of this.metadataExplorer.scanForServerHooks(instance)) { |
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
83281
88
1389
156
2