diff --git a/ExpressAPI/package-lock.json b/ExpressAPI/package-lock.json index 11db0421d71b8906ebdfc3d4f5e8c0f756428197..097800a4de8f60e891a35492815ebe57a03fb6b7 100644 --- a/ExpressAPI/package-lock.json +++ b/ExpressAPI/package-lock.json @@ -11,6 +11,7 @@ "@prisma/client": "^5.0.0", "axios": "^1.4.0", "bcryptjs": "^2.4.3", + "compression": "^1.7.4", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", @@ -31,6 +32,7 @@ }, "devDependencies": { "@types/bcryptjs": "^2.4.2", + "@types/compression": "^1.7.2", "@types/cors": "^2.8.13", "@types/express": "^4.17.17", "@types/jsonwebtoken": "^9.0.2", @@ -173,6 +175,15 @@ "@types/node": "*" } }, + "node_modules/@types/compression": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz", + "integrity": "sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -612,6 +623,47 @@ "node": "^12.20.0 || >=14" } }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", diff --git a/ExpressAPI/package.json b/ExpressAPI/package.json index 445d334da53cd4592c7c2749d55a8ee52f5cc155..3593ffa2837654a3e474dde83fcfba12253a4cbb 100644 --- a/ExpressAPI/package.json +++ b/ExpressAPI/package.json @@ -22,6 +22,7 @@ "@prisma/client" : "^5.0.0", "axios" : "^1.4.0", "bcryptjs" : "^2.4.3", + "compression" : "^1.7.4", "cors" : "^2.8.5", "dotenv" : "^16.0.3", "express" : "^4.18.2", @@ -42,6 +43,7 @@ }, "devDependencies": { "@types/bcryptjs" : "^2.4.2", + "@types/compression" : "^1.7.2", "@types/cors" : "^2.8.13", "@types/express" : "^4.17.17", "@types/jsonwebtoken" : "^9.0.2", diff --git a/ExpressAPI/src/express/API.ts b/ExpressAPI/src/express/API.ts index be90d0238b450065ad8199623846832dab8c84b0..b705aa666f8bbad996baa5670369a469f5725fb7 100644 --- a/ExpressAPI/src/express/API.ts +++ b/ExpressAPI/src/express/API.ts @@ -12,6 +12,7 @@ import Config from '../config/Config'; import logger from '../shared/logging/WinstonLogger'; import ParamsCallbackManager from '../middlewares/ParamsCallbackManager'; import ApiRoutesManager from '../routes/ApiRoutesManager'; +import compression from 'compression'; class API implements WorkerTask { @@ -27,6 +28,7 @@ class API implements WorkerTask { this.backend.use(morganMiddleware); //Log API accesses this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/ this.backend.use(cors()); //Allow CORS requests + this.backend.use(compression()); //Compress responses ParamsCallbackManager.register(this.backend);