diff --git a/package-lock.json b/package-lock.json index bb24b07..e6f58f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -351,6 +351,15 @@ "@types/node": "*" } }, + "@types/compression": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.0.tgz", + "integrity": "sha512-3LzWUM+3k3XdWOUk/RO+uSjv7YWOatYq2QADJntK1pjkk4DfVP0KrIEPDnXRJxAAGKe0VpIPRmlINLDuCedZWw==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, "@types/connect": { "version": "3.4.33", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", @@ -1116,6 +1125,28 @@ "delayed-stream": "~1.0.0" } }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "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" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", diff --git a/package.json b/package.json index b7f64d4..d2a1c46 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "update-client-hash": "node -e \"require('fs').writeFileSync('public/misc/hash.txt', require('randomstring').generate())\"", "debug-client": "tsc-watch --project ./public/js-source", "debug-server": "tsc-watch --onSuccess \"node --enable-source-maps --use-openssl-ca --unhandled-rejections=strict ./out/index\"", - "debug": "concurrently \"npm run debug-client\" \"npm run debug-server\"", + "debug": "concurrently npm:debug-*", "build": "tsc", "production": "node --use-openssl-ca --unhandled-rejections=strict ./out/index", "install-debug": "npm install && npm run build", @@ -17,6 +17,7 @@ }, "dependencies": { "@10xjs/polyfill-analyzer": "^0.1.0", + "compression": "^1.7.4", "connect-redis": "^5.0.0", "cookie-parser": "~1.4.4", "env-var": "^6.3.0", @@ -36,6 +37,7 @@ "winston": "^3.3.3" }, "devDependencies": { + "@types/compression": "^1.7.0", "@types/connect-redis": "0.0.15", "@types/express": "^4.17.8", "@types/express-session": "^1.17.1", diff --git a/src/app.ts b/src/app.ts index e4648a1..3009616 100644 --- a/src/app.ts +++ b/src/app.ts @@ -5,10 +5,12 @@ import * as path from 'path'; import * as redisStore from 'connect-redis'; import * as session from 'express-session'; import * as sassMiddleware from 'node-sass-middleware'; +import * as compression from 'compression'; import indexRouter from './routes'; import {HttpLogger, Redis, Config, setupAuthProxy, getReloadRouter, polyfillRoute} from './utils'; import {Store} from 'express-session'; + export const app = express(); // view engine setup @@ -26,6 +28,9 @@ app.use(HttpLogger); app.use(express.json()); app.use(express.urlencoded({extended: false})); +// compression +app.use(compression); + // auth proxy middleware router.use(setupAuthProxy); // auto reloader (when running in debug mode) diff --git a/src/utils/polyfill.ts b/src/utils/polyfill.ts index 1f6a1e6..709eef7 100644 --- a/src/utils/polyfill.ts +++ b/src/utils/polyfill.ts @@ -16,7 +16,7 @@ const features = new WaitForSync(); return feats; })() .then(feats => { - Logger.debug("Polyfill analysed:", feats); + Logger.debug("Polyfill analysed:", Object.keys(feats)); features.setData(feats); }) .catch(err => features.setError(err));