Skip to content

Commit c2071a7

Browse files
authored
refactor: replace compression with http-compression (#146)
1 parent 8a4f3b9 commit c2071a7

5 files changed

Lines changed: 52 additions & 60 deletions

File tree

package.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@
5050
"@types/serve-static": "^2.2.0",
5151
"@types/ws": "^8.18.1",
5252
"chokidar": "^3.6.0",
53-
"connect-next": "^4.0.0",
5453
"connect-history-api-fallback": "^2.0.0",
54+
"connect-next": "^4.0.0",
5555
"http-proxy-middleware": "^3.0.5",
5656
"ipaddr.js": "^2.3.0",
57-
"serve-static": "^2.2.1",
5857
"serve-index": "^1.9.2",
58+
"serve-static": "^2.2.1",
5959
"webpack-dev-middleware": "^7.4.5",
6060
"ws": "^8.19.0"
6161
},
@@ -66,17 +66,16 @@
6666
"@rspack/core": "2.0.0-beta.5",
6767
"@rspack/plugin-react-refresh": "1.6.1",
6868
"@rstest/core": "^0.9.0",
69-
"@types/compression": "^1.8.1",
7069
"@types/mime-types": "3.0.1",
7170
"@types/node": "^24.12.0",
7271
"@types/node-forge": "^1.3.14",
7372
"@types/trusted-types": "^2.0.7",
7473
"@types/ws": "8.18.1",
75-
"express": "^5.2.1",
76-
"compression": "^1.8.1",
7774
"cross-env": "^10.1.0",
7875
"css-loader": "^7.1.4",
76+
"express": "^5.2.1",
7977
"hono": "^4.12.5",
78+
"http-compression": "^1.1.2",
8079
"http-proxy": "^1.18.1",
8180
"launch-editor": "^2.13.1",
8281
"nano-staged": "^0.9.0",

pnpm-lock.yaml

Lines changed: 9 additions & 50 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rslib.config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export default defineConfig({
1515
'serve-static': 'commonjs serve-static',
1616
'serve-index': 'commonjs serve-index',
1717
selfsigned: 'commonjs selfsigned',
18-
compression: 'commonjs compression',
1918
chokidar: 'commonjs chokidar',
2019
},
2120
},

src/http-compression.d.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
declare module 'http-compression' {
2+
import type {
3+
BrotliOptions,
4+
GzipOptions,
5+
IncomingHttpHeaders,
6+
IncomingMessage,
7+
ServerResponse,
8+
} from 'node:http';
9+
10+
interface CompressionLevelOptions {
11+
brotli?: number;
12+
gzip?: number;
13+
}
14+
15+
interface HttpCompressionOptions {
16+
threshold?: number;
17+
level?: CompressionLevelOptions;
18+
brotli?: boolean | BrotliOptions;
19+
gzip?: boolean | GzipOptions;
20+
mimes?: RegExp;
21+
}
22+
23+
type Next = (err?: unknown) => void;
24+
25+
type HttpCompressionMiddleware = (
26+
req: IncomingMessage,
27+
res: ServerResponse,
28+
next?: Next,
29+
) => void;
30+
31+
export default function compression(
32+
options?: HttpCompressionOptions,
33+
): HttpCompressionMiddleware;
34+
}

src/server.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import * as os from 'node:os';
1414
import * as path from 'node:path';
1515
import * as url from 'node:url';
1616
import * as util from 'node:util';
17+
import compression from 'http-compression';
1718
import ipaddr from 'ipaddr.js';
1819
import { getPort } from './getPort';
1920
import { WebsocketServer } from './servers/WebsocketServer';
@@ -1650,10 +1651,10 @@ class Server<
16501651

16511652
// compress is placed last and uses unshift so that it will be the first middleware used
16521653
if (this.options.compress) {
1653-
const { default: compression } = await import(
1654-
/* webpackChunkName: "compression" */ 'compression'
1655-
);
1656-
middlewares.push({ name: 'compression', middleware: compression() });
1654+
middlewares.push({
1655+
name: 'compression',
1656+
middleware: compression(),
1657+
});
16571658
}
16581659

16591660
if (typeof this.options.headers !== 'undefined') {

0 commit comments

Comments
 (0)