diff --git a/node_modules/eslint-module-utils/ModuleCache.js b/node_modules/eslint-module-utils/ModuleCache.js
index b910a58..a06616d 100644
--- a/node_modules/eslint-module-utils/ModuleCache.js
+++ b/node_modules/eslint-module-utils/ModuleCache.js
@@ -1,11 +1,11 @@
-'use strict'
-exports.__esModule = true
+'use strict';
+exports.__esModule = true;
 
-const log = require('debug')('eslint-module-utils:ModuleCache')
+const log = require('debug')('eslint-module-utils:ModuleCache');
 
 class ModuleCache {
   constructor(map) {
-    this.map = map || new Map()
+    this.map = map || new Map();
   }
 
   /**
@@ -14,19 +14,19 @@
    * @param {[type]} result   [description]
    */
   set(cacheKey, result) {
-    this.map.set(cacheKey, { result, lastSeen: process.hrtime() })
-    log('setting entry for', cacheKey)
-    return result
+    this.map.set(cacheKey, { result, lastSeen: process.hrtime() });
+    log('setting entry for', cacheKey);
+    return result;
   }
 
   get(cacheKey, settings) {
     if (this.map.has(cacheKey)) {
-      const f = this.map.get(cacheKey)
+      const f = this.map.get(cacheKey);
       // check freshness
-      if (process.hrtime(f.lastSeen)[0] < settings.lifetime) return f.result
-    } else log('cache miss for', cacheKey)
+      if (process.hrtime(f.lastSeen)[0] < settings.lifetime) return f.result;
+    } else log('cache miss for', cacheKey);
     // cache miss
-    return undefined
+    return undefined;
   }
 
 }
@@ -34,14 +34,14 @@
 ModuleCache.getSettings = function (settings) {
   const cacheSettings = Object.assign({
     lifetime: 30,  // seconds
-  }, settings['import/cache'])
+  }, settings['import/cache']);
 
   // parse infinity
   if (cacheSettings.lifetime === '∞' || cacheSettings.lifetime === 'Infinity') {
-    cacheSettings.lifetime = Infinity
+    cacheSettings.lifetime = Infinity;
   }
 
-  return cacheSettings
-}
+  return cacheSettings;
+};
 
-exports.default = ModuleCache
+exports.default = ModuleCache;
