From 5ba36ee421a1ec1bc95b72e76b7185672355899b Mon Sep 17 00:00:00 2001
From: Jafar Akhondali <jafar.akhondali@yahoo.com>
Date: Wed, 14 Oct 2020 18:46:27 +0330
Subject: [PATCH] refactor: server code (#2545)

+ Remove duplicated await
+ Replace some legacy codes with ES6
+ Fix some of eslint problems
---
 server/core/db.js                                     |  3 +--
 server/graph/resolvers/asset.js                       |  2 +-
 server/master.js                                      |  6 +++---
 server/models/assetFolders.js                         |  3 +--
 server/models/pages.js                                | 10 +++++-----
 .../modules/rendering/html-image-prefetch/renderer.js |  2 +-
 server/modules/rendering/markdown-core/underline.js   | 10 +++++-----
 server/modules/rendering/markdown-kroki/renderer.js   |  9 ++-------
 .../modules/rendering/markdown-plantuml/renderer.js   | 11 +++--------
 server/modules/search/elasticsearch/engine.js         |  2 +-
 server/setup.js                                       |  2 +-
 server/test/helpers/page.test.js                      |  6 +++---
 12 files changed, 27 insertions(+), 39 deletions(-)

diff --git a/server/core/db.js b/server/core/db.js
index 019dfd1e..6ae657a8 100644
--- a/server/core/db.js
+++ b/server/core/db.js
@@ -43,8 +43,7 @@ module.exports = {
     let sslOptions = null
     if (dbUseSSL && _.isPlainObject(dbConfig) && _.get(WIKI.config.db, 'sslOptions.auto', null) === false) {
       sslOptions = WIKI.config.db.sslOptions
-      // eslint-disable-next-line no-unneeded-ternary
-      sslOptions.rejectUnauthorized = sslOptions.rejectUnauthorized === false ? false : true
+      sslOptions.rejectUnauthorized = sslOptions.rejectUnauthorized !== false
       if (sslOptions.ca && sslOptions.ca.indexOf('-----') !== 0) {
         sslOptions.ca = fs.readFileSync(path.resolve(WIKI.ROOTPATH, sslOptions.ca))
       }
diff --git a/server/graph/resolvers/asset.js b/server/graph/resolvers/asset.js
index 05b3d921..91efbdda 100644
--- a/server/graph/resolvers/asset.js
+++ b/server/graph/resolvers/asset.js
@@ -39,7 +39,7 @@ module.exports = {
       const parentPath = parentHierarchy.map(h => h.slug).join('/')
       return _.filter(results, r => {
         const path = parentPath ? `${parentPath}/${r.slug}` : r.slug
-        return WIKI.auth.checkAccess(context.req.user, ['read:assets'], { path });
+        return WIKI.auth.checkAccess(context.req.user, ['read:assets'], { path })
       })
     }
   },
diff --git a/server/master.js b/server/master.js
index eabb570b..84192611 100644
--- a/server/master.js
+++ b/server/master.js
@@ -26,8 +26,8 @@ module.exports = async () => {
   // Load middlewares
   // ----------------------------------------
 
-  var mw = autoload(path.join(WIKI.SERVERPATH, '/middlewares'))
-  var ctrl = autoload(path.join(WIKI.SERVERPATH, '/controllers'))
+  const mw = autoload(path.join(WIKI.SERVERPATH, '/middlewares'))
+  const ctrl = autoload(path.join(WIKI.SERVERPATH, '/controllers'))
 
   // ----------------------------------------
   // Define Express App
@@ -169,7 +169,7 @@ module.exports = async () => {
   // ----------------------------------------
 
   app.use((req, res, next) => {
-    var err = new Error('Not Found')
+    const err = new Error('Not Found')
     err.status = 404
     next(err)
   })
diff --git a/server/models/assetFolders.js b/server/models/assetFolders.js
index 965eb40c..4acb496c 100644
--- a/server/models/assetFolders.js
+++ b/server/models/assetFolders.js
@@ -47,8 +47,7 @@ module.exports = class AssetFolder extends Model {
           sqb.select('a.id', 'a.name', 'a.slug', 'a.parentId').from('assetFolders AS a').join('ancestors', 'ancestors.parentId', 'a.id')
         })
       }).select('*').from('ancestors')
-    }
-    else {
+    } else {
       hier = await WIKI.models.knex.withRecursive('ancestors', qb => {
         qb.select('id', 'name', 'slug', 'parentId').from('assetFolders').where('id', folderId).union(sqb => {
           sqb.select('a.id', 'a.name', 'a.slug', 'a.parentId').from('assetFolders AS a').join('ancestors', 'ancestors.parentId', 'a.id')
diff --git a/server/models/pages.js b/server/models/pages.js
index 04ac6f34..c452365e 100644
--- a/server/models/pages.js
+++ b/server/models/pages.js
@@ -231,7 +231,7 @@ module.exports = class Page extends Model {
    */
   static async createPage(opts) {
     // -> Validate path
-    if (opts.path.indexOf('.') >= 0 || opts.path.indexOf(' ') >= 0 || opts.path.indexOf('\\') >= 0 || opts.path.indexOf('//') >= 0) {
+    if (opts.path.includes('.') || opts.path.includes(' ') || opts.path.includes('\\') || opts.path.includes('//')) {
       throw new WIKI.Error.PageIllegalPath()
     }
 
@@ -484,7 +484,7 @@ module.exports = class Page extends Model {
     }
 
     // -> Validate path
-    if (opts.destinationPath.indexOf('.') >= 0 || opts.destinationPath.indexOf(' ') >= 0 || opts.destinationPath.indexOf('\\') >= 0 || opts.destinationPath.indexOf('//') >= 0) {
+    if (opts.destinationPath.includes('.') || opts.destinationPath.includes(' ') || opts.destinationPath.includes('\\') || opts.destinationPath.includes('//')) {
       throw new WIKI.Error.PageIllegalPath()
     }
 
@@ -514,7 +514,7 @@ module.exports = class Page extends Model {
     }
 
     // -> Check for existing page at destination path
-    const destPage = await await WIKI.models.pages.query().findOne({
+    const destPage = await WIKI.models.pages.query().findOne({
       path: opts.destinationPath,
       localeCode: opts.destinationLocale
     })
@@ -575,7 +575,7 @@ module.exports = class Page extends Model {
       path: opts.destinationPath,
       mode: 'move'
     })
-   
+
     // -> Reconnect Links : Validate invalid links to the new path
     await WIKI.models.pages.reconnectLinks({
       locale: opts.destinationLocale,
@@ -595,7 +595,7 @@ module.exports = class Page extends Model {
     if (_.has(opts, 'id')) {
       page = await WIKI.models.pages.query().findById(opts.id)
     } else {
-      page = await await WIKI.models.pages.query().findOne({
+      page = await WIKI.models.pages.query().findOne({
         path: opts.path,
         localeCode: opts.locale
       })
diff --git a/server/modules/rendering/html-image-prefetch/renderer.js b/server/modules/rendering/html-image-prefetch/renderer.js
index 12733e3a..07b8afa7 100644
--- a/server/modules/rendering/html-image-prefetch/renderer.js
+++ b/server/modules/rendering/html-image-prefetch/renderer.js
@@ -17,7 +17,7 @@ const prefetch = async (element) => {
   const contentType = response.headers[`content-type`]
   const image = Buffer.from(response.body).toString('base64')
   element.attr('src', `data:${contentType};base64,${image}`)
-  element.removeClass('prefetch-candidate');
+  element.removeClass('prefetch-candidate')
 }
 
 module.exports = {
diff --git a/server/modules/rendering/markdown-core/underline.js b/server/modules/rendering/markdown-core/underline.js
index c840ea0b..a7bc47f8 100644
--- a/server/modules/rendering/markdown-core/underline.js
+++ b/server/modules/rendering/markdown-core/underline.js
@@ -1,12 +1,12 @@
 const renderEm = (tokens, idx, opts, env, slf) => {
-  const token = tokens[idx];
+  const token = tokens[idx]
   if (token.markup === '_') {
-    token.tag = 'u';
+    token.tag = 'u'
   }
-  return slf.renderToken(tokens, idx, opts);
+  return slf.renderToken(tokens, idx, opts)
 }
 
 module.exports = (md) => {
-  md.renderer.rules.em_open = renderEm;
-  md.renderer.rules.em_close = renderEm;
+  md.renderer.rules.em_open = renderEm
+  md.renderer.rules.em_close = renderEm
 }
diff --git a/server/modules/rendering/markdown-kroki/renderer.js b/server/modules/rendering/markdown-kroki/renderer.js
index f066bf4c..1487f737 100644
--- a/server/modules/rendering/markdown-kroki/renderer.js
+++ b/server/modules/rendering/markdown-kroki/renderer.js
@@ -73,13 +73,8 @@ module.exports = {
             continue
           }
 
-          var closeMarkerMatched = true
-          for (i = 0; i < closeMarker.length; ++i) {
-            if (closeMarker[i] !== state.src[start + i]) {
-              closeMarkerMatched = false
-              break
-            }
-          }
+          const i = closeMarker.findIndex(item => item !== state.src[start + i])
+          const closeMarkerMatched = i !== -1
 
           if (!closeMarkerMatched) {
             continue
diff --git a/server/modules/rendering/markdown-plantuml/renderer.js b/server/modules/rendering/markdown-plantuml/renderer.js
index 62a56a7a..0ad67e9e 100644
--- a/server/modules/rendering/markdown-plantuml/renderer.js
+++ b/server/modules/rendering/markdown-plantuml/renderer.js
@@ -74,13 +74,8 @@ module.exports = {
             continue
           }
 
-          var closeMarkerMatched = true
-          for (i = 0; i < closeMarker.length; ++i) {
-            if (closeMarker[i] !== state.src[start + i]) {
-              closeMarkerMatched = false
-              break
-            }
-          }
+          const i = closeMarker.findIndex(item => item !== state.src[start + i])
+          const closeMarkerMatched = i !== -1
 
           if (!closeMarkerMatched) {
             continue
@@ -112,7 +107,7 @@ module.exports = {
           altToken
         )
 
-        var zippedCode = encode64(zlib.deflateRawSync('@startuml\n' + contents + '\n@enduml').toString('binary'))
+        const zippedCode = encode64(zlib.deflateRawSync('@startuml\n' + contents + '\n@enduml').toString('binary'))
 
         token = state.push('uml_diagram', 'img', 0)
         // alt is constructed from children. No point in populating it here.
diff --git a/server/modules/search/elasticsearch/engine.js b/server/modules/search/elasticsearch/engine.js
index 0a97ed79..33e277aa 100644
--- a/server/modules/search/elasticsearch/engine.js
+++ b/server/modules/search/elasticsearch/engine.js
@@ -104,7 +104,7 @@ module.exports = {
                       },
                       {
                         query_string: {
-                          query: "*" + q + "*"
+                          query: `*${q}*`
                         }
                       }
                     ],
diff --git a/server/setup.js b/server/setup.js
index 57daf5ac..44fb9d5d 100644
--- a/server/setup.js
+++ b/server/setup.js
@@ -378,7 +378,7 @@ module.exports = () => {
   // ----------------------------------------
 
   app.use(function (req, res, next) {
-    var err = new Error('Not Found')
+    const err = new Error('Not Found')
     err.status = 404
     next(err)
   })
diff --git a/server/test/helpers/page.test.js b/server/test/helpers/page.test.js
index 1ff66e7d..49c27bad 100644
--- a/server/test/helpers/page.test.js
+++ b/server/test/helpers/page.test.js
@@ -7,7 +7,7 @@ describe('helpers/page/injectPageMetadata', () => {
     isPublished: true,
     updatedAt: new Date(),
     content: 'TEST CONTENT',
-    createdAt: new Date('2019-01-01'),
+    createdAt: new Date('2019-01-01')
   }
 
   it('returns the page content by default when content type is unknown', () => {
@@ -20,7 +20,7 @@ describe('helpers/page/injectPageMetadata', () => {
     const markdownPage = {
       ...page,
       contentType: 'markdown',
-      editorKey: 'markdown',
+      editorKey: 'markdown'
     }
 
     const expected = `---
@@ -42,7 +42,7 @@ TEST CONTENT`
     const htmlPage = {
       ...page,
       contentType: 'html',
-      editorKey: 'html',
+      editorKey: 'html'
     }
 
     const expected = `<!--
-- 
GitLab