Skip to content

Commit e4f7463

Browse files
refactor: update to Bun 1.3
1 parent 4b3c551 commit e4f7463

File tree

5 files changed

+34
-15
lines changed

5 files changed

+34
-15
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,19 @@ jobs:
1818

1919
strategy:
2020
fail-fast: false
21+
matrix:
22+
bun-version:
23+
- 1.2
24+
- 1.3
2125

2226
steps:
2327
- name: Checkout repository
2428
uses: actions/checkout@v4
2529

2630
- name: Install Bun
2731
uses: oven-sh/setup-bun@v2
32+
with:
33+
bun-version: ${{ matrix.bun-version }}
2834

2935
- name: Install dependencies
3036
run: bun install

bun.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"": {
55
"name": "@socket.io/bun-engine",
66
"devDependencies": {
7-
"@types/bun": "^1.2.20",
7+
"@types/bun": "^1.3.0",
88
"hono": "^4.9.8",
99
"prettier": "^3.6.2",
1010
"socket.io": "^4.8.1",
@@ -17,7 +17,7 @@
1717
"packages": {
1818
"@socket.io/component-emitter": ["@socket.io/[email protected]", "", {}, "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="],
1919

20-
"@types/bun": ["@types/bun@1.2.20", "", { "dependencies": { "bun-types": "1.2.20" } }, "sha512-dX3RGzQ8+KgmMw7CsW4xT5ITBSCrSbfHc36SNT31EOUg/LA9JWq0VDdEXDRSe1InVWpd2yLUM1FUF/kEOyTzYA=="],
20+
"@types/bun": ["@types/bun@1.3.0", "", { "dependencies": { "bun-types": "1.3.0" } }, "sha512-+lAGCYjXjip2qY375xX/scJeVRmZ5cY0wyHYyCYxNcdEXrQ4AOe3gACgd4iQ8ksOslJtW4VNxBJ8llUwc3a6AA=="],
2121

2222
"@types/cors": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*" } }, "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg=="],
2323

@@ -29,7 +29,7 @@
2929

3030
"base64id": ["[email protected]", "", {}, "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="],
3131

32-
"bun-types": ["bun-types@1.2.20", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-pxTnQYOrKvdOwyiyd/7sMt9yFOenN004Y6O4lCcCUoKVej48FS5cvTw9geRaEcB9TsDZaJKAxPTVvi8tFsVuXA=="],
32+
"bun-types": ["bun-types@1.3.0", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-u8X0thhx+yJ0KmkxuEo9HAtdfgCBaM/aI9K90VQcQioAmkVp3SG3FkwWGibUFz3WdXAdcsqOcbU40lK7tbHdkQ=="],
3333

3434
"cookie": ["[email protected]", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],
3535

lib/server.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import { EventEmitter } from "./event-emitter";
22
import { Socket } from "./socket";
33
import { Polling } from "./transports/polling";
4-
import { WS, type BunWebSocket } from "./transports/websocket";
4+
import {
5+
WS,
6+
type BunWebSocket,
7+
type WebSocketData,
8+
} from "./transports/websocket";
59
import { addCorsHeaders, type CorsOptions } from "./cors";
610
import { Transport } from "./transport";
711
import { generateId } from "./util";
@@ -42,7 +46,10 @@ export interface ServerOptions {
4246
* A function that receives a given handshake or upgrade request as its first parameter,
4347
* and can decide whether to continue or not.
4448
*/
45-
allowRequest?: (req: Request, server: Bun.Server) => Promise<void>;
49+
allowRequest?: (
50+
req: Request,
51+
server: Bun.Server<WebSocketData>,
52+
) => Promise<void>;
4653
/**
4754
* The options related to Cross-Origin Resource Sharing (CORS)
4855
*/
@@ -53,15 +60,15 @@ export interface ServerOptions {
5360
editHandshakeHeaders?: (
5461
responseHeaders: Headers,
5562
req: Request,
56-
server: Bun.Server,
63+
server: Bun.Server<WebSocketData>,
5764
) => void | Promise<void>;
5865
/**
5966
* A function that allows to edit the response headers of all requests
6067
*/
6168
editResponseHeaders?: (
6269
responseHeaders: Headers,
6370
req: Request,
64-
server: Bun.Server,
71+
server: Bun.Server<WebSocketData>,
6572
) => void | Promise<void>;
6673
}
6774

@@ -73,7 +80,11 @@ interface ConnectionError {
7380
}
7481

7582
interface ServerReservedEvents {
76-
connection: (socket: Socket, request: Request, server: Bun.Server) => void;
83+
connection: (
84+
socket: Socket,
85+
request: Request,
86+
server: Bun.Server<WebSocketData>,
87+
) => void;
7788
connection_error: (err: ConnectionError) => void;
7889
}
7990

@@ -127,7 +138,7 @@ export class Server extends EventEmitter<
127138
*/
128139
public async handleRequest(
129140
req: Request,
130-
server: Bun.Server,
141+
server: Bun.Server<WebSocketData>,
131142
): Promise<Response> {
132143
const url = new URL(req.url);
133144

@@ -321,7 +332,7 @@ export class Server extends EventEmitter<
321332
*/
322333
private async handshake(
323334
req: Request,
324-
server: Bun.Server,
335+
server: Bun.Server<WebSocketData>,
325336
responseHeaders: Headers,
326337
): Promise<Response> {
327338
const id = generateId();
@@ -338,7 +349,7 @@ export class Server extends EventEmitter<
338349
const isSuccess = server.upgrade(req, {
339350
headers: responseHeaders,
340351
data: {
341-
transport,
352+
transport: transport as WS,
342353
},
343354
});
344355

@@ -415,7 +426,7 @@ export class Server extends EventEmitter<
415426
const idleTimeoutInSeconds = Math.ceil((2 * this.opts.pingInterval) / 1000);
416427

417428
return {
418-
fetch: (req: Request, server: Bun.Server) => {
429+
fetch: (req: Request, server: Bun.Server<WebSocketData>) => {
419430
const url = new URL(req.url);
420431

421432
if (url.pathname === this.opts.path) {

lib/transports/websocket.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import { debuglog } from "node:util";
44

55
const debug = debuglog("engine.io:websocket");
66

7-
export type BunWebSocket = Bun.ServerWebSocket<{
7+
export type WebSocketData = {
88
transport: WS;
9-
}>;
9+
};
10+
11+
export type BunWebSocket = Bun.ServerWebSocket<WebSocketData>;
1012

1113
export class WS extends Transport {
1214
private socket?: BunWebSocket;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"format:fix": "prettier --write \"lib/**/*.ts\" \"test/**/*.ts\""
1414
},
1515
"devDependencies": {
16-
"@types/bun": "^1.2.20",
16+
"@types/bun": "^1.3.0",
1717
"hono": "^4.9.8",
1818
"prettier": "^3.6.2",
1919
"socket.io": "^4.8.1"

0 commit comments

Comments
 (0)