From c1b3a7f2c6318f232cadd8db0970040c00d8256a Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Tue, 1 Oct 2019 10:18:59 +0200 Subject: [PATCH] bugfix: file preview decoding content --- deploy/app.js | 3 +- deploy/compression/index.js | 59 -------------------------------- deploy/compression/index.spec.js | 39 --------------------- deploy/nehubaConfig/index.js | 2 +- deploy/nehubaConfig/query.js | 2 +- deploy/package.json | 1 + deploy/templates/index.js | 2 +- deploy/templates/query.js | 2 +- 8 files changed, 7 insertions(+), 103 deletions(-) delete mode 100644 deploy/compression/index.js delete mode 100644 deploy/compression/index.spec.js diff --git a/deploy/app.js b/deploy/app.js index bb74e13f8..d753d3b1c 100644 --- a/deploy/app.js +++ b/deploy/app.js @@ -82,7 +82,8 @@ app.use(require('./devBanner')) * this allows locally built aot to be served without errors */ -const { compressionMiddleware } = require('./compression') +const { compressionMiddleware } = require('nomiseco') + app.use(compressionMiddleware, express.static(PUBLIC_PATH)) const jsonMiddleware = (req, res, next) => { diff --git a/deploy/compression/index.js b/deploy/compression/index.js deleted file mode 100644 index bc5d2acb4..000000000 --- a/deploy/compression/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const BROTLI = `br` -const GZIP = `gzip` - -const detEncoding = (acceptEncoding = '') => { - if (process.env.NODE_ENV !== 'production') return null - - return /br/i.test(acceptEncoding) - ? BROTLI - : /gzip/i.test(acceptEncoding) - ? GZIP - : null -} - -const mimeMap = new Map([ - ['.png', 'image/png'], - ['.gif', 'image/gif'], - ['.jpg', 'image/jpeg'], - ['.jpeg', 'image/jpeg'], - ['.css', 'text/css'], - ['.html', 'text/html'], - ['.js', 'text/javascript'] -]) - -exports.BROTLI = BROTLI - -exports.GZIP = GZIP - -exports.detEncoding = detEncoding - -exports.compressionMiddleware = (req, res, next) => { - const acceptEncoding = req.get('Accept-Encoding') - const encoding = detEncoding(acceptEncoding) - - // if no encoding is accepted - // or in dev mode, do not use compression - if (!encoding) return next() - - const ext = /(\.\w*?)$/.exec(req.url) - - // if cannot determine mime-type, do not use encoding - // as Content-Type header is required for browser to understand response - if (!ext || !mimeMap.get(ext[1])) return next() - - res.set('Content-Type', mimeMap.get(ext[1])) - - if (encoding === BROTLI) { - req.url = req.url + '.br' - res.set('Content-Encoding', encoding) - return next() - } - - if (encoding === GZIP) { - req.url = req.url + '.gz' - res.set('Content-Encoding', encoding) - return next() - } - - next() -} \ No newline at end of file diff --git a/deploy/compression/index.spec.js b/deploy/compression/index.spec.js deleted file mode 100644 index 3c1a3826f..000000000 --- a/deploy/compression/index.spec.js +++ /dev/null @@ -1,39 +0,0 @@ -const mocha = require('mocha') -const chai = require('chai') -const expect = chai.expect - -const { detEncoding, GZIP, BROTLI } = require('./index') - -const gzip = 'gzip' -const gzipDeflate = 'gzip, deflate' -const gzipDeflateBr = 'gzip, deflate, br' - -describe('compression/index.js', () => { - let nodeEnv - - before(() => { - nodeEnv = process.env.NODE_ENV - }) - - after(() => { - process.env.NODE_ENV = nodeEnv - }) - - describe('#detEncoding', () => { - it('When NODE_ENV is set to production, returns appropriate encoding', () => { - process.env.NODE_ENV = 'production' - expect(detEncoding(null)).to.equal(null) - expect(detEncoding(gzip)).to.equal(GZIP) - expect(detEncoding(gzipDeflate)).to.equal(GZIP) - expect(detEncoding(gzipDeflateBr)).to.equal(BROTLI) - }) - - it('When NODE_ENV is set to non production, returns null always', () => { - process.env.NODE_ENV = 'development' - expect(detEncoding(null)).to.equal(null) - expect(detEncoding(gzip)).to.equal(null) - expect(detEncoding(gzipDeflate)).to.equal(null) - expect(detEncoding(gzipDeflateBr)).to.equal(null) - }) - }) -}) \ No newline at end of file diff --git a/deploy/nehubaConfig/index.js b/deploy/nehubaConfig/index.js index 145441ee8..fab68127a 100644 --- a/deploy/nehubaConfig/index.js +++ b/deploy/nehubaConfig/index.js @@ -1,6 +1,6 @@ const express = require('express') const { getTemplateNehubaConfig } = require('./query') -const { detEncoding } = require('../compression') +const { detEncoding } = require('nomiseco') const nehubaConfigRouter = express.Router() diff --git a/deploy/nehubaConfig/query.js b/deploy/nehubaConfig/query.js index 23a6132ba..a6340ecc7 100644 --- a/deploy/nehubaConfig/query.js +++ b/deploy/nehubaConfig/query.js @@ -1,6 +1,6 @@ const fs = require('fs') const path = require('path') -const { BROTLI, GZIP } = require('../compression') +const { BROTLI, GZIP } = require('nomiseco') const getFileAsPromise = filepath => new Promise((resolve, reject) => { fs.readFile(filepath, 'utf-8', (err, data) => { diff --git a/deploy/package.json b/deploy/package.json index f65ac9c51..e32f647bd 100644 --- a/deploy/package.json +++ b/deploy/package.json @@ -20,6 +20,7 @@ "helmet-csp": "^2.8.0", "jwt-decode": "^2.2.0", "memorystore": "^1.6.1", + "nomiseco": "0.0.2", "openid-client": "^2.4.5", "passport": "^0.4.0", "request": "^2.88.0" diff --git a/deploy/templates/index.js b/deploy/templates/index.js index d9fbeb831..7fe831604 100644 --- a/deploy/templates/index.js +++ b/deploy/templates/index.js @@ -1,7 +1,7 @@ const router = require('express').Router() const query = require('./query') const path = require('path') -const { detEncoding } = require('../compression') +const { detEncoding } = require('nomiseco') /** * root path fetches all templates diff --git a/deploy/templates/query.js b/deploy/templates/query.js index c1886db02..b7f6f4589 100644 --- a/deploy/templates/query.js +++ b/deploy/templates/query.js @@ -1,6 +1,6 @@ const fs = require('fs') const path = require('path') -const { BROTLI, GZIP } = require('../compression') +const { BROTLI, GZIP } = require('nomiseco') exports.getAllTemplates = () => new Promise((resolve, reject) => { -- GitLab