Skip to content

Commit d2c736b

Browse files
committed
Enable compression for HTTP responses
1 parent 6587949 commit d2c736b

File tree

3 files changed

+164
-6
lines changed

3 files changed

+164
-6
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"@aws-sdk/client-s3": "^3.440.0",
3838
"@aws-sdk/s3-request-presigner": "^3.440.0",
3939
"@faker-js/faker": "^8.2.0",
40+
"@fastify/compress": "^7.0.3",
4041
"@fastify/cookie": "^9.4.0",
4142
"@fastify/cors": "^9.0.1",
4243
"@ffprobe-installer/ffprobe": "^2.1.2",

src/core/http/http.adapter.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import compression from '@fastify/compress';
12
import cookieParser from '@fastify/cookie';
23
import cors from '@fastify/cors';
34
// eslint-disable-next-line @seedcompany/no-restricted-imports
@@ -6,6 +7,7 @@ import {
67
FastifyAdapter,
78
NestFastifyApplication,
89
} from '@nestjs/platform-fastify';
10+
import * as zlib from 'node:zlib';
911
import { ConfigService } from '~/core/config/config.service';
1012
import type { CookieOptions, CorsOptions, IResponse } from './types';
1113

@@ -20,6 +22,15 @@ export class HttpAdapterHost extends HttpAdapterHostImpl<HttpAdapter> {}
2022

2123
export class HttpAdapter extends FastifyAdapter {
2224
async configure(app: NestFastifyApplication, config: ConfigService) {
25+
await app.register(compression, {
26+
brotliOptions: {
27+
params: {
28+
// This API returns text (JSON), so optimize for that
29+
[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,
30+
},
31+
},
32+
});
33+
2334
await app.register(cors, {
2435
// typecast to undo deep readonly
2536
...(config.cors as CorsOptions),

yarn.lock

Lines changed: 152 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1596,6 +1596,13 @@ __metadata:
15961596
languageName: node
15971597
linkType: hard
15981598

1599+
"@fastify/accept-negotiator@npm:^1.1.0":
1600+
version: 1.1.0
1601+
resolution: "@fastify/accept-negotiator@npm:1.1.0"
1602+
checksum: 10c0/1cb9a298c992b812869158ddc6093557a877b30e5f77618a7afea985a0667c50bc7113593bf0f7f9dc9b82b94c16e8ab127a0afc3efde6677fd645539f6d08e5
1603+
languageName: node
1604+
linkType: hard
1605+
15991606
"@fastify/ajv-compiler@npm:^3.5.0":
16001607
version: 3.6.0
16011608
resolution: "@fastify/ajv-compiler@npm:3.6.0"
@@ -1607,6 +1614,22 @@ __metadata:
16071614
languageName: node
16081615
linkType: hard
16091616

1617+
"@fastify/compress@npm:^7.0.3":
1618+
version: 7.0.3
1619+
resolution: "@fastify/compress@npm:7.0.3"
1620+
dependencies:
1621+
"@fastify/accept-negotiator": "npm:^1.1.0"
1622+
fastify-plugin: "npm:^4.5.0"
1623+
mime-db: "npm:^1.52.0"
1624+
minipass: "npm:^7.0.2"
1625+
peek-stream: "npm:^1.1.3"
1626+
pump: "npm:^3.0.0"
1627+
pumpify: "npm:^2.0.1"
1628+
readable-stream: "npm:^4.5.2"
1629+
checksum: 10c0/0c914ca347944d4fb893c5d08503ae7d3f1ecc2ec6812b4b837753587009e0b6a13531c7f9cb86750ed891c8b0b728fc2e98b42a072a0153b4504686e41b6a16
1630+
languageName: node
1631+
linkType: hard
1632+
16101633
"@fastify/cookie@npm:^9.4.0":
16111634
version: 9.4.0
16121635
resolution: "@fastify/cookie@npm:9.4.0"
@@ -5410,6 +5433,7 @@ __metadata:
54105433
"@aws-sdk/s3-request-presigner": "npm:^3.440.0"
54115434
"@edgedb/generate": "github:CarsonF/edgedb-js#workspace=@edgedb/generate&head=temp-host"
54125435
"@faker-js/faker": "npm:^8.2.0"
5436+
"@fastify/compress": "npm:^7.0.3"
54135437
"@fastify/cookie": "npm:^9.4.0"
54145438
"@fastify/cors": "npm:^9.0.1"
54155439
"@ffprobe-installer/ffprobe": "npm:^2.1.2"
@@ -5536,7 +5560,7 @@ __metadata:
55365560
languageName: node
55375561
linkType: hard
55385562

5539-
"core-util-is@npm:^1.0.3":
5563+
"core-util-is@npm:^1.0.3, core-util-is@npm:~1.0.0":
55405564
version: 1.0.3
55415565
resolution: "core-util-is@npm:1.0.3"
55425566
checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9
@@ -6027,6 +6051,30 @@ __metadata:
60276051
languageName: node
60286052
linkType: hard
60296053

6054+
"duplexify@npm:^3.5.0":
6055+
version: 3.7.1
6056+
resolution: "duplexify@npm:3.7.1"
6057+
dependencies:
6058+
end-of-stream: "npm:^1.0.0"
6059+
inherits: "npm:^2.0.1"
6060+
readable-stream: "npm:^2.0.0"
6061+
stream-shift: "npm:^1.0.0"
6062+
checksum: 10c0/59d1440c1b4e3a4db35ae96933392703ce83518db1828d06b9b6322920d6cbbf0b7159e88be120385fe459e77f1eb0c7622f26e9ec1f47c9ff05c2b35747dbd3
6063+
languageName: node
6064+
linkType: hard
6065+
6066+
"duplexify@npm:^4.1.1":
6067+
version: 4.1.3
6068+
resolution: "duplexify@npm:4.1.3"
6069+
dependencies:
6070+
end-of-stream: "npm:^1.4.1"
6071+
inherits: "npm:^2.0.3"
6072+
readable-stream: "npm:^3.1.1"
6073+
stream-shift: "npm:^1.0.2"
6074+
checksum: 10c0/8a7621ae95c89f3937f982fe36d72ea997836a708471a75bb2a0eecde3330311b1e128a6dad510e0fd64ace0c56bff3484ed2e82af0e465600c82117eadfbda5
6075+
languageName: node
6076+
linkType: hard
6077+
60306078
"eastasianwidth@npm:^0.2.0":
60316079
version: 0.2.0
60326080
resolution: "eastasianwidth@npm:0.2.0"
@@ -6144,7 +6192,7 @@ __metadata:
61446192
languageName: node
61456193
linkType: hard
61466194

6147-
"end-of-stream@npm:^1.1.0":
6195+
"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1":
61486196
version: 1.4.4
61496197
resolution: "end-of-stream@npm:1.4.4"
61506198
dependencies:
@@ -6911,7 +6959,7 @@ __metadata:
69116959
languageName: node
69126960
linkType: hard
69136961

6914-
"fastify-plugin@npm:^4.0.0, fastify-plugin@npm:^4.4.0":
6962+
"fastify-plugin@npm:^4.0.0, fastify-plugin@npm:^4.4.0, fastify-plugin@npm:^4.5.0":
69156963
version: 4.5.1
69166964
resolution: "fastify-plugin@npm:4.5.1"
69176965
checksum: 10c0/f58f79cd9d3c88fd7f79a3270276c6339fc57bbe72ef14d20b73779193c404e317ac18e8eae2c5071b3909ebee45d7eb6871da4e65464ac64ed0d9746b4e9b9f
@@ -8361,6 +8409,13 @@ __metadata:
83618409
languageName: node
83628410
linkType: hard
83638411

8412+
"isarray@npm:~1.0.0":
8413+
version: 1.0.0
8414+
resolution: "isarray@npm:1.0.0"
8415+
checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d
8416+
languageName: node
8417+
linkType: hard
8418+
83648419
"isexe@npm:^2.0.0":
83658420
version: 2.0.0
83668421
resolution: "isexe@npm:2.0.0"
@@ -9667,6 +9722,13 @@ __metadata:
96679722
languageName: node
96689723
linkType: hard
96699724

9725+
"mime-db@npm:^1.52.0":
9726+
version: 1.53.0
9727+
resolution: "mime-db@npm:1.53.0"
9728+
checksum: 10c0/1dcc37ba8ed5d1c179f5c6f0837e8db19371d5f2ea3690c3c2f3fa8c3858f976851d3460b172b4dee78ebd606762cbb407aa398545fbacd539e519f858cd7bf4
9729+
languageName: node
9730+
linkType: hard
9731+
96709732
"mime-types@npm:^2.1.12, mime-types@npm:~2.1.24":
96719733
version: 2.1.35
96729734
resolution: "mime-types@npm:2.1.35"
@@ -11054,6 +11116,17 @@ __metadata:
1105411116
languageName: node
1105511117
linkType: hard
1105611118

11119+
"peek-stream@npm:^1.1.3":
11120+
version: 1.1.3
11121+
resolution: "peek-stream@npm:1.1.3"
11122+
dependencies:
11123+
buffer-from: "npm:^1.0.0"
11124+
duplexify: "npm:^3.5.0"
11125+
through2: "npm:^2.0.3"
11126+
checksum: 10c0/3c35d1951b8640036f93b1b5628a90f849e49ca4f2e6aba393ff4978413931d9c491c83f71a92f878d5ea4c670af0bba04dfcfb79b310ead22601db7c1420e36
11127+
languageName: node
11128+
linkType: hard
11129+
1105711130
"picocolors@npm:^1.0.0":
1105811131
version: 1.0.0
1105911132
resolution: "picocolors@npm:1.0.0"
@@ -11235,6 +11308,13 @@ __metadata:
1123511308
languageName: node
1123611309
linkType: hard
1123711310

11311+
"process-nextick-args@npm:~2.0.0":
11312+
version: 2.0.1
11313+
resolution: "process-nextick-args@npm:2.0.1"
11314+
checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367
11315+
languageName: node
11316+
linkType: hard
11317+
1123811318
"process-warning@npm:^3.0.0":
1123911319
version: 3.0.0
1124011320
resolution: "process-warning@npm:3.0.0"
@@ -11314,6 +11394,17 @@ __metadata:
1131411394
languageName: node
1131511395
linkType: hard
1131611396

11397+
"pumpify@npm:^2.0.1":
11398+
version: 2.0.1
11399+
resolution: "pumpify@npm:2.0.1"
11400+
dependencies:
11401+
duplexify: "npm:^4.1.1"
11402+
inherits: "npm:^2.0.3"
11403+
pump: "npm:^3.0.0"
11404+
checksum: 10c0/f9c12190dc65f8c347fe82e993708e4d14ce82c96f7cbd24b52f488cfa4dbc2ebbcc49e0f54655f1ca118fea59ddeec6ca5a34ef45558c8bb1de2f1ffa307198
11405+
languageName: node
11406+
linkType: hard
11407+
1131711408
"punycode@npm:^2.1.0":
1131811409
version: 2.3.1
1131911410
resolution: "punycode@npm:2.3.1"
@@ -11423,7 +11514,22 @@ __metadata:
1142311514
languageName: node
1142411515
linkType: hard
1142511516

11426-
"readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0":
11517+
"readable-stream@npm:^2.0.0, readable-stream@npm:~2.3.6":
11518+
version: 2.3.8
11519+
resolution: "readable-stream@npm:2.3.8"
11520+
dependencies:
11521+
core-util-is: "npm:~1.0.0"
11522+
inherits: "npm:~2.0.3"
11523+
isarray: "npm:~1.0.0"
11524+
process-nextick-args: "npm:~2.0.0"
11525+
safe-buffer: "npm:~5.1.1"
11526+
string_decoder: "npm:~1.1.1"
11527+
util-deprecate: "npm:~1.0.1"
11528+
checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa
11529+
languageName: node
11530+
linkType: hard
11531+
11532+
"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0":
1142711533
version: 3.6.2
1142811534
resolution: "readable-stream@npm:3.6.2"
1142911535
dependencies:
@@ -11434,7 +11540,7 @@ __metadata:
1143411540
languageName: node
1143511541
linkType: hard
1143611542

11437-
"readable-stream@npm:^4.0.0":
11543+
"readable-stream@npm:^4.0.0, readable-stream@npm:^4.5.2":
1143811544
version: 4.5.2
1143911545
resolution: "readable-stream@npm:4.5.2"
1144011546
dependencies:
@@ -11810,6 +11916,13 @@ __metadata:
1181011916
languageName: node
1181111917
linkType: hard
1181211918

11919+
"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1":
11920+
version: 5.1.2
11921+
resolution: "safe-buffer@npm:5.1.2"
11922+
checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21
11923+
languageName: node
11924+
linkType: hard
11925+
1181311926
"safe-regex-test@npm:^1.0.0":
1181411927
version: 1.0.0
1181511928
resolution: "safe-regex-test@npm:1.0.0"
@@ -12214,6 +12327,13 @@ __metadata:
1221412327
languageName: node
1221512328
linkType: hard
1221612329

12330+
"stream-shift@npm:^1.0.0, stream-shift@npm:^1.0.2":
12331+
version: 1.0.3
12332+
resolution: "stream-shift@npm:1.0.3"
12333+
checksum: 10c0/939cd1051ca750d240a0625b106a2b988c45fb5a3be0cebe9a9858cb01bc1955e8c7b9fac17a9462976bea4a7b704e317c5c2200c70f0ca715a3363b9aa4fd3b
12334+
languageName: node
12335+
linkType: hard
12336+
1221712337
"streamsearch@npm:^1.1.0":
1221812338
version: 1.1.0
1221912339
resolution: "streamsearch@npm:1.1.0"
@@ -12328,6 +12448,15 @@ __metadata:
1232812448
languageName: node
1232912449
linkType: hard
1233012450

12451+
"string_decoder@npm:~1.1.1":
12452+
version: 1.1.1
12453+
resolution: "string_decoder@npm:1.1.1"
12454+
dependencies:
12455+
safe-buffer: "npm:~5.1.0"
12456+
checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e
12457+
languageName: node
12458+
linkType: hard
12459+
1233112460
"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
1233212461
version: 6.0.1
1233312462
resolution: "strip-ansi@npm:6.0.1"
@@ -12513,6 +12642,16 @@ __metadata:
1251312642
languageName: node
1251412643
linkType: hard
1251512644

12645+
"through2@npm:^2.0.3":
12646+
version: 2.0.5
12647+
resolution: "through2@npm:2.0.5"
12648+
dependencies:
12649+
readable-stream: "npm:~2.3.6"
12650+
xtend: "npm:~4.0.1"
12651+
checksum: 10c0/cbfe5b57943fa12b4f8c043658c2a00476216d79c014895cef1ac7a1d9a8b31f6b438d0e53eecbb81054b93128324a82ecd59ec1a4f91f01f7ac113dcb14eade
12652+
languageName: node
12653+
linkType: hard
12654+
1251612655
"through@npm:^2.3.6":
1251712656
version: 2.3.8
1251812657
resolution: "through@npm:2.3.8"
@@ -13054,7 +13193,7 @@ __metadata:
1305413193
languageName: node
1305513194
linkType: hard
1305613195

13057-
"util-deprecate@npm:^1.0.1":
13196+
"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1":
1305813197
version: 1.0.2
1305913198
resolution: "util-deprecate@npm:1.0.2"
1306013199
checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942
@@ -13426,6 +13565,13 @@ __metadata:
1342613565
languageName: node
1342713566
linkType: hard
1342813567

13568+
"xtend@npm:~4.0.1":
13569+
version: 4.0.2
13570+
resolution: "xtend@npm:4.0.2"
13571+
checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e
13572+
languageName: node
13573+
linkType: hard
13574+
1342913575
"y18n@npm:^5.0.5":
1343013576
version: 5.0.8
1343113577
resolution: "y18n@npm:5.0.8"

0 commit comments

Comments
 (0)