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