Skip to content

Commit 5459cbd

Browse files
committed
fix(graphql-ws): fix import to avoid typescript issue
Closes: #3035
1 parent 7dccf1d commit 5459cbd

File tree

20 files changed

+118
-57
lines changed

20 files changed

+118
-57
lines changed

docs/tutorials/graphql-ws.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,20 @@ This module need to be used with `@tsed/apollo` module. So, you must install it
2626

2727
::: code-group
2828

29-
```bash [Npm]
30-
npm install --save @tsed/graphql-ws graphql-ws
29+
```bash [npm]
30+
npm install --save @tsed/graphql-ws graphql-ws ws @types/ws
3131
```
3232

33-
```bash [Yarn]
34-
yarn add @tsed/graphql-ws graphql-ws
33+
```bash [yarn]
34+
yarn add @tsed/graphql-ws graphql-ws ws @types/ws
35+
```
36+
37+
```bash [pnpm]
38+
pnpm add @tsed/graphql-ws graphql-ws ws @types/ws
39+
```
40+
41+
```bash [bun]
42+
bun add @tsed/graphql-ws graphql-ws ws @types/ws
3543
```
3644

3745
:::
@@ -52,10 +60,10 @@ import {join} from "node:path";
5260
plugins: [], // Apollo plugins
5361

5462
wsServerOptions: {
55-
// See options descriptions on
63+
// See options descriptions on WS website
5664
},
5765
wsUseServerOptions: {
58-
// See options descriptions on GraphQL WS
66+
// See options descriptions on GraphQL WS website
5967
}
6068

6169
// Give custom server instance

packages/core/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,6 @@
4545
"vite": "6.0.14",
4646
"vitest": "3.0.9",
4747
"webpack": "^5.75.0"
48-
}
48+
},
49+
"peerDependencies": {}
4950
}

packages/engines/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,5 +90,6 @@
9090
"decorators",
9191
"engines",
9292
"view"
93-
]
93+
],
94+
"peerDependencies": {}
9495
}

packages/graphql/graphql-ws/package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,18 @@
3030
"@tsed/logger": "^7.0.1",
3131
"@tsed/platform-http": "workspace:*",
3232
"@tsed/typescript": "workspace:*",
33+
"@types/ws": "8.18.1",
3334
"eslint": "9.12.0",
34-
"graphql-ws": "5.16.0",
35-
"typescript": "5.4.5"
35+
"graphql-ws": "6.0.4",
36+
"typescript": "5.4.5",
37+
"ws": "8.18.1"
3638
},
3739
"peerDependencies": {
3840
"@tsed/core": ">=8.7.1",
3941
"@tsed/di": ">=8.7.1",
4042
"@tsed/logger": ">=7.0.1",
4143
"@tsed/platform-http": ">=8.7.1",
42-
"graphql-ws": ">=5.14.2"
44+
"graphql-ws": ">=6.0.4",
45+
"ws": ">=8.18.1"
4346
}
4447
}

packages/graphql/graphql-ws/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ You need to install `@tsed/apollo` before using this module.
3737
To begin, install the GraphQL WS module for TS.ED:
3838

3939
```bash
40-
npm install --save @tsed/graphql-ws graphql-ws
40+
npm install --save @tsed/graphql-ws graphql-ws ws @types/ws
4141
```
4242

4343
Now, we can configure the Ts.ED server by importing `@tsed/gr` in your Server:

packages/graphql/graphql-ws/src/GraphQLWSModule.ts

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,27 @@
11
import Http from "node:http";
22
import Https from "node:https";
33

4-
import {Constant, Inject, InjectorService, Module} from "@tsed/di";
5-
import type {Disposable} from "graphql-ws";
6-
import {useServer} from "graphql-ws/lib/use/ws";
4+
import {constant, inject, logger, Module} from "@tsed/di";
5+
import {useServer} from "graphql-ws/use/ws";
6+
import {WebSocketServer} from "ws";
77

88
import {GraphQLWSOptions} from "./GraphQLWSOptions.js";
99

1010
@Module()
1111
export class GraphQLWSModule {
12-
@Constant("graphqlWs", {})
13-
private settings: GraphQLWSOptions;
14-
15-
@Inject(Http.Server)
16-
private httpServer: Http.Server | null;
17-
18-
@Inject(Https.Server)
19-
private httpsServer: Https.Server | null;
20-
21-
@Inject()
22-
private injector: InjectorService;
12+
private settings = constant<GraphQLWSOptions>("graphqlWs", {} as GraphQLWSOptions);
13+
private httpServer = inject<Http.Server | null>(Http.Server);
14+
private httpsServer = inject<Https.Server | null>(Https.Server);
2315

2416
async createWSServer(settings: GraphQLWSOptions) {
25-
// @ts-ignore
26-
const {WebSocketServer} = await import("ws");
27-
28-
const wsServer = new WebSocketServer({
17+
const opts = {
2918
...(this.settings.wsServerOptions || {}),
3019
...settings.wsServerOptions,
3120
server: this.httpsServer || this.httpServer!,
3221
path: settings.path
33-
});
22+
};
23+
24+
const wsServer = new WebSocketServer(opts);
3425

3526
return useServer(
3627
{
@@ -45,7 +36,7 @@ export class GraphQLWSModule {
4536
async $alterApolloServerPlugins(plugins: any[], settings: GraphQLWSOptions) {
4637
const wsServer = await this.createWSServer(settings);
4738

48-
this.injector.logger.info(`Create GraphQL WS server on: ${settings.path}`);
39+
logger().info(`Create GraphQL WS server on: ${settings.path}`);
4940

5041
return plugins.concat({
5142
serverWillStart() {

packages/graphql/graphql-ws/src/GraphQLWSOptions.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
// @ts-ignore
2-
import {ServerOptions} from "graphql-ws/lib/server";
3-
import {ServerOptions as WSServerOptions} from "ws";
1+
import type {ServerOptions as UseServerOptions} from "graphql-ws";
2+
import type {ServerOptions as WSServerOptions} from "ws";
43

54
export interface GraphQLWSOptions {
65
path: string;
7-
schema: any;
8-
wsUseServerOptions?: ServerOptions;
6+
schema: UseServerOptions["schema"];
7+
wsUseServerOptions?: UseServerOptions;
98
wsServerOptions?: WSServerOptions;
109
}
1110

1211
declare global {
1312
namespace TsED {
1413
interface ApolloSettings {
15-
wsUseServerOptions?: ServerOptions;
14+
wsUseServerOptions?: UseServerOptions;
1615
wsServerOptions?: WSServerOptions;
1716
}
1817
}

packages/hooks/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,6 @@
4242
"vite": "6.0.14",
4343
"vitest": "3.0.9",
4444
"webpack": "^5.75.0"
45-
}
45+
},
46+
"peerDependencies": {}
4647
}

packages/perf/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,6 @@
2929
"@tsed/typescript": "workspace:*",
3030
"eslint": "9.12.0",
3131
"typescript": "5.4.5"
32-
}
32+
},
33+
"peerDependencies": {}
3334
}

packages/platform/platform-test-sdk/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,6 @@
4949
"@tsed/typescript": "workspace:*",
5050
"eslint": "9.12.0",
5151
"typescript": "5.4.5"
52-
}
52+
},
53+
"peerDependencies": {}
5354
}

packages/security/jwks/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,6 @@
3333
"eslint": "9.12.0",
3434
"typescript": "5.4.5",
3535
"vitest": "3.0.9"
36-
}
36+
},
37+
"peerDependencies": {}
3738
}

packages/specs/openspec/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,7 @@
3535
"@tsed/typescript": "workspace:*",
3636
"eslint": "9.12.0",
3737
"typescript": "5.4.5"
38-
}
38+
},
39+
"dependencies": {},
40+
"peerDependencies": {}
3941
}

packages/third-parties/normalize-path/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,6 @@
3333
"eslint": "9.12.0",
3434
"typescript": "5.4.5",
3535
"vitest": "3.0.9"
36-
}
36+
},
37+
"peerDependencies": {}
3738
}

tools/barrels/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@
66
"private": true,
77
"dependencies": {
88
"commander": "12.1.0"
9-
}
9+
},
10+
"devDependencies": {},
11+
"peerDependencies": {}
1012
}

tools/github-sponsors/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,7 @@
1212
},
1313
"devDependencies": {
1414
"yaml": "^2.5.1"
15-
}
15+
},
16+
"dependencies": {},
17+
"peerDependencies": {}
1618
}

tools/integration/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,7 @@
2323
"typescript": "5.4.5"
2424
},
2525
"module": "./lib/esm/index.js",
26-
"typings": "./lib/types/index.d.ts"
26+
"typings": "./lib/types/index.d.ts",
27+
"dependencies": {},
28+
"peerDependencies": {}
2729
}

tools/typescript/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,8 @@
1111
},
1212
"scripts": {
1313
"build:references": "node ./index.js"
14-
}
14+
},
15+
"dependencies": {},
16+
"devDependencies": {},
17+
"peerDependencies": {}
1518
}

tools/vitest/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,7 @@
1414
"scripts": {
1515
"generate": "node index.js",
1616
"reset:coverage": "node reset.js"
17-
}
17+
},
18+
"dependencies": {},
19+
"peerDependencies": {}
1820
}

tools/webpack/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22
"name": "@tsed/webpack-config",
33
"version": "8.7.1",
44
"private": true,
5-
"main": "webpack.config.js"
5+
"main": "webpack.config.js",
6+
"dependencies": {},
7+
"devDependencies": {},
8+
"peerDependencies": {}
69
}

yarn.lock

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7240,16 +7240,19 @@ __metadata:
72407240
"@tsed/logger": "npm:^7.0.1"
72417241
"@tsed/platform-http": "workspace:*"
72427242
"@tsed/typescript": "workspace:*"
7243+
"@types/ws": "npm:8.18.1"
72437244
eslint: "npm:9.12.0"
7244-
graphql-ws: "npm:5.16.0"
7245+
graphql-ws: "npm:6.0.4"
72457246
tslib: "npm:2.7.0"
72467247
typescript: "npm:5.4.5"
7248+
ws: "npm:8.18.1"
72477249
peerDependencies:
72487250
"@tsed/core": ">=8.7.1"
72497251
"@tsed/di": ">=8.7.1"
72507252
"@tsed/logger": ">=7.0.1"
72517253
"@tsed/platform-http": ">=8.7.1"
7252-
graphql-ws: ">=5.14.2"
7254+
graphql-ws: ">=6.0.4"
7255+
ws: ">=8.18.1"
72537256
languageName: unknown
72547257
linkType: soft
72557258

@@ -9941,6 +9944,15 @@ __metadata:
99419944
languageName: node
99429945
linkType: hard
99439946

9947+
"@types/ws@npm:8.18.1":
9948+
version: 8.18.1
9949+
resolution: "@types/ws@npm:8.18.1"
9950+
dependencies:
9951+
"@types/node": "npm:*"
9952+
checksum: 10/1ce05e3174dcacf28dae0e9b854ef1c9a12da44c7ed73617ab6897c5cbe4fccbb155a20be5508ae9a7dde2f83bd80f5cf3baa386b934fc4b40889ec963e94f3a
9953+
languageName: node
9954+
linkType: hard
9955+
99449956
"@types/ws@npm:^7.0.0, @types/ws@npm:^7.4.7":
99459957
version: 7.4.7
99469958
resolution: "@types/ws@npm:7.4.7"
@@ -17703,12 +17715,22 @@ __metadata:
1770317715
languageName: node
1770417716
linkType: hard
1770517717

17706-
"graphql-ws@npm:5.16.0":
17707-
version: 5.16.0
17708-
resolution: "graphql-ws@npm:5.16.0"
17718+
"graphql-ws@npm:6.0.4":
17719+
version: 6.0.4
17720+
resolution: "graphql-ws@npm:6.0.4"
1770917721
peerDependencies:
17710-
graphql: ">=0.11 <=16"
17711-
checksum: 10/e56d903920c78fa88966e31940d281f8b35ef8c9f4543255bfe349e47a0e972c6ca746bcb52040b1c6938d22e42560228994399972abc473cfa6bcd183aca709
17722+
"@fastify/websocket": ^10 || ^11
17723+
graphql: ^15.10.1 || ^16
17724+
uWebSockets.js: ^20
17725+
ws: ^8
17726+
peerDependenciesMeta:
17727+
"@fastify/websocket":
17728+
optional: true
17729+
uWebSockets.js:
17730+
optional: true
17731+
ws:
17732+
optional: true
17733+
checksum: 10/9cfd6bdf03a65c2b390e049b0e6ce43dd3e428eb7df74afaad45bbfe1f074687a507509f5ab3f9467fea90a7fbe468558621e8c7be06729ea9dc56e116f236da
1771217734
languageName: node
1771317735
linkType: hard
1771417736

@@ -30635,6 +30657,21 @@ __metadata:
3063530657
languageName: node
3063630658
linkType: hard
3063730659

30660+
"ws@npm:8.18.1":
30661+
version: 8.18.1
30662+
resolution: "ws@npm:8.18.1"
30663+
peerDependencies:
30664+
bufferutil: ^4.0.1
30665+
utf-8-validate: ">=5.0.2"
30666+
peerDependenciesMeta:
30667+
bufferutil:
30668+
optional: true
30669+
utf-8-validate:
30670+
optional: true
30671+
checksum: 10/3f38e9594f2af5b6324138e86b74df7d77bbb8e310bf8188679dd80bac0d1f47e51536a1923ac3365f31f3d8b25ea0b03e4ade466aa8292a86cd5defca64b19b
30672+
languageName: node
30673+
linkType: hard
30674+
3063830675
"ws@npm:^5.2.0 || ^6.0.0 || ^7.0.0":
3063930676
version: 7.5.7
3064030677
resolution: "ws@npm:7.5.7"

0 commit comments

Comments
 (0)