瀏覽代碼

update eslint rules

Gerald 9 年之前
父節點
當前提交
4637922c3b

+ 4 - 0
.eslintrc.yml

@@ -14,6 +14,10 @@ rules:
       argsIgnorePattern: ^_
   keyword-spacing:
     - 2
+  space-before-function-paren:
+    - 2
+    - anonymous: always
+      named: never
 
 env:
   browser: true

+ 1 - 1
src/background/app.js

@@ -258,6 +258,6 @@ _.messenger = function () {
   });
 }(_.options.get('isApplied'));
 
-chrome.notifications.onClicked.addListener(function(id) {
+chrome.notifications.onClicked.addListener(function (id) {
   id == 'VM-NoGrantWarning' && tabsUtils.create('http://wiki.greasespot.net/@grant');
 });

+ 15 - 10
src/background/db.js

@@ -131,8 +131,9 @@ VMDB.prototype.getScriptsByURL = function (url) {
           script.meta.require.forEach(function (key) {
             require[key] = 1;
           });
-          for (var k in script.meta.resources)
-            cache[script.meta.resources[k]] = 1;
+          Object.keys(script.meta.resources).forEach(function (key) {
+            cache[script.meta.resources[key]] = 1;
+          });
           return true;
         }
       });
@@ -190,8 +191,9 @@ VMDB.prototype.getData = function () {
   }
   function getCache(uris) {
     return _this.getCacheB64(uris, tx).then(function (cache) {
-      for (var k in cache)
-        cache[k] = 'data:image/png;base64,' + cache[k];
+      Object.keys(cache).forEach(function (key) {
+        cache[key] = 'data:image/png;base64,' + cache[key];
+      });
       return cache;
     });
   }
@@ -371,8 +373,9 @@ VMDB.prototype.updateScriptInfo = function (id, data, custom) {
     o.get(id).onsuccess = function (e) {
       var script = e.target.result;
       if (!script) return reject();
-      for (var k in data)
-        if (k in script) script[k] = data[k];
+      Object.keys(data).forEach(function (key) {
+        if (key in script) script[key] = data[key];
+      });
       Object.assign(script.custom, custom);
       o.put(script).onsuccess = function (_e) {
         resolve(scriptUtils.getScriptInfo(script));
@@ -420,8 +423,9 @@ VMDB.prototype.vacuum = function () {
       };
       data.ids = scripts.map(function (script) {
         script.meta.require.forEach(function (uri) {data.require[uri] = 1;});
-        for (var k in script.meta.resources)
-          data.cache[script.meta.resources[k]] = 1;
+        Object.keys(scripts.meta.resources).forEach(function (key) {
+          data.cache[script.meta.resources[key]] = 1;
+        });
         if (scriptUtils.isRemote(script.meta.icon))
           data.cache[script.meta.icon] = 1;
         data.values[script.uri] = 1;
@@ -560,8 +564,9 @@ VMDB.prototype.parseScript = function (data) {
       res.cmd = 'add';
       res.data.message = _.i18n('msgInstalled');
     }
-    if (data.more) for (var k in data.more)
-      if (k in script) script[k] = data.more[k];
+    data.more && Object.keys(data.more).forEach(function (key) {
+      if (key in script) script[key] = data.more[key];
+    });
     script.meta = meta;
     script.code = data.code;
     script.uri = scriptUtils.getNameURI(script);

+ 10 - 11
src/background/requests.js

@@ -70,14 +70,12 @@ function httpRequest(details, cb) {
   try {
     xhr.open(details.method, details.url, true, details.user, details.password);
     xhr.setRequestHeader('VM-Verify', details.id);
-    if (details.headers) {
-      for (var k in details.headers) {
-        xhr.setRequestHeader(
-          ~special_headers.indexOf(k.toLowerCase()) ? 'VM-' + k : k,
-          details.headers[k]
-        );
-      }
-    }
+    details.headers && Object.keys(details.headers).forEach(function (key) {
+      xhr.setRequestHeader(
+        ~special_headers.indexOf(key.toLowerCase()) ? 'VM-' + key : key,
+        details.headers[key]
+      );
+    });
     if (details.responseType) xhr.responseType = 'blob';
     if (details.overrideMimeType) xhr.overrideMimeType(details.overrideMimeType);
     var callback = xhrCallbackWrapper(req);
@@ -146,9 +144,10 @@ chrome.webRequest.onBeforeSendHeaders.addListener(function (details) {
       delete vmHeaders['Verify'];
       verify[details.requestId] = reqId;
       req.coreId = details.requestId;
-      for (var i in vmHeaders)
-        if (~special_headers.indexOf(i.toLowerCase()))
-        newHeaders.push({name: i, value: vmHeaders[i]});
+      Object.keys(vmHeaders).forEach(function (key) {
+        ~special_headers.indexOf(key.toLowerCase())
+        && newHeaders.push({name: key, value: vmHeaders[key]});
+      });
     }
   }
   return {requestHeaders: newHeaders};

+ 6 - 6
src/background/sync/index.js

@@ -318,10 +318,10 @@ var BaseService = serviceFactory({
           headers['Content-Type'] = 'application/json';
           options.body = JSON.stringify(options.body);
         }
-        for (var k in headers) {
-          var v = headers[k];
-          v && xhr.setRequestHeader(k, v);
-        }
+        Object.keys(headers).forEach(function (key) {
+          var v = headers[key];
+          v && xhr.setRequestHeader(key, v);
+        });
         xhr.onloadend = function () {
           progress.finished ++;
           _this.onStateChange();
@@ -392,14 +392,14 @@ var BaseService = serviceFactory({
           delLocal.push(item);
         }
       });
-      for (var uri in map) {
+      Object.keys(map).forEach(function (uri) {
         var item = map[uri];
         if (outdated) {
           getRemote.push(item);
         } else {
           delRemote.push(item);
         }
-      }
+      });
       var promises = [].concat(
         getRemote.map(function (item) {
           console.log('Download script:', item.uri);

+ 1 - 3
src/background/utils/cache.js

@@ -10,9 +10,7 @@ function set(key, value) {
     };
     obj.value = value;
     if (obj.timer) clearTimeout(obj.timer);
-    obj.timer = setTimeout(function () {
-      set(key);
-    }, 3000);
+    obj.timer = setTimeout(set, 3000, key);
   } else {
     delete cache[key];
   }

+ 5 - 5
src/background/utils/script.js

@@ -7,9 +7,9 @@ module.exports = {
       var xhr = new XMLHttpRequest;
       xhr.open('GET', url, true);
       if (type) xhr.responseType = type;
-      if (headers) for (var k in headers) {
-        xhr.setRequestHeader(k, headers[k]);
-      }
+      headers && Object.keys(headers).forEach(function (key) {
+        xhr.setRequestHeader(key, headers[key]);
+      });
       xhr.onloadend = function () {
         (xhr.status > 300 ? reject : resolve)(xhr);
       };
@@ -27,7 +27,7 @@ module.exports = {
       grant: [],
     };
     var flag = -1;
-    code.replace(/(?:^|\n)\/\/\s*([@=]\S+)(.*)/g, function(_match, group1, group2) {
+    code.replace(/(?:^|\n)\/\/\s*([@=]\S+)(.*)/g, function (_match, group1, group2) {
       if (flag < 0 && group1 == '==UserScript==') {
         // start meta
         flag = 1;
@@ -46,7 +46,7 @@ module.exports = {
       }
     });
     meta.resources = {};
-    meta.resource.forEach(function(line) {
+    meta.resource.forEach(function (line) {
       var pair = line.match(/^(\w\S*)\s+(.*)/);
       if (pair) meta.resources[pair[1]] = pair[2];
     });

+ 3 - 5
src/background/utils/search.js

@@ -7,10 +7,8 @@ module.exports = {
     }, {});
   },
   dump: function (dict) {
-    var qs = [];
-    for (var k in dict) {
-      qs.push(encodeURIComponent(k) + '=' + encodeURIComponent(dict[k]));
-    }
-    return qs.join('&');
+    return Object.keys(dict).map(function (key) {
+      return encodeURIComponent(key) + '=' + encodeURIComponent(dict[key]);
+    }).join('&');
   },
 };

+ 5 - 4
src/common.js

@@ -1,4 +1,4 @@
-var _ = module.exports = {};
+var _ = exports;
 _.i18n = chrome.i18n.getMessage;
 
 _.options = function () {
@@ -27,9 +27,10 @@ _.options = function () {
   }
 
   function getAllOptions() {
-    var options = {};
-    for (var i in defaults) options[i] = getOption(i);
-    return options;
+    return Object.keys(defaults).reduce(function (res, key) {
+      res[key] = getOption(key);
+      return res;
+    }, {});
   }
 
   function parseArgs(args) {

+ 17 - 18
src/injected.js

@@ -1,4 +1,4 @@
-!function(){
+!function () {
 // Avoid running repeatedly due to new `document.documentElement`
 if (window.VM) return;
 window.VM = 1;
@@ -29,7 +29,7 @@ function forEach(arr, func, context) {
 /**
  * http://www.webtoolkit.info/javascript-utf8.html
  */
-function utf8decode (utftext) {
+function utf8decode(utftext) {
   var string = "";
   var i = 0;
   var c = 0, c2 = 0, c3 = 0;
@@ -188,7 +188,7 @@ var comm = {
   includes: includes,
   forEach: forEach,
 
-  init: function(srcId, destId) {
+  init: function (srcId, destId) {
     var comm = this;
     comm.sid = comm.vmid + srcId;
     comm.did = comm.vmid + destId;
@@ -201,11 +201,11 @@ var comm = {
       comm.injectable = false;
     }
   },
-  post: function(data) {
+  post: function (data) {
     var e = new CustomEvent(this.did, {detail: data});
     document.dispatchEvent(e);
   },
-  handleR: function(e) {
+  handleR: function (e) {
     var obj = e.detail;
     var comm = this;
     var maps = {
@@ -237,7 +237,7 @@ var comm = {
     var func = maps[obj.cmd];
     if (func) func(obj.data);
   },
-  runCode: function(name, func, wrapper) {
+  runCode: function (name, func, wrapper) {
     try {
       func.call(wrapper.window || wrapper, wrapper);
     } catch (e) {
@@ -246,7 +246,7 @@ var comm = {
       console.error(msg);
     }
   },
-  initRequest: function() {
+  initRequest: function () {
     // request functions
     function reqAbort(){
       comm.post({cmd: 'AbortRequest', data: this.id});
@@ -321,7 +321,7 @@ var comm = {
     var comm = this;
     comm.requests = {};
     comm.qrequests = [];
-    comm.Request = function(details) {
+    comm.Request = function (details) {
       var t = {
         details: details,
         callback: callback,
@@ -337,7 +337,7 @@ var comm = {
     };
   },
   getWrapper: getWrapper,
-  wrapGM: function(script, cache) {
+  wrapGM: function (script, cache) {
     function getValues() {
       return comm.values[script.uri];
     }
@@ -419,7 +419,7 @@ var comm = {
         },
       },
       GM_getValue: {
-        value: function(key, val) {
+        value: function (key, val) {
           var values = getValues();
           var v = values[key];
           if (v) {
@@ -539,7 +539,8 @@ var comm = {
       var require = script.meta.require || [];
       var wrapper = comm.wrapGM(script, data.cache);
       var vars = [];
-      comm.forEach(Object.getOwnPropertyNames(wrapper), function(name) {
+      // Must use Object.getOwnPropertyNames to list unenumerable properties
+      comm.forEach(Object.getOwnPropertyNames(wrapper), function (name) {
         vars.push(name + '=this["' + name + '"]=g["' + name + '"]');
       });
       // vars should not be empty
@@ -581,13 +582,11 @@ var comm = {
     comm.version = data.version;
     comm.values = {};
     // reset load and checkLoad
-    comm.load = function() {
+    comm.load = function () {
       run(end);
-      setTimeout(function() {
-        run(idle);
-      }, 0);
+      setTimeout(run, 0, idle);
     };
-    comm.checkLoad = function() {
+    comm.checkLoad = function () {
       if (!comm.state && comm.includes(['interactive', 'complete'], document.readyState))
         comm.state = 1;
       if (comm.state) comm.load();
@@ -597,7 +596,7 @@ var comm = {
       'document-idle': idle,
       'document-end': end,
     };
-    comm.forEach(data.scripts, function(script) {
+    comm.forEach(data.scripts, function (script) {
       comm.values[script.uri] = data.values[script.uri] || {};
       if (script && script.enabled) {
         var list = listMap[script.custom['run-at'] || script.meta['run-at']] || end;
@@ -613,7 +612,7 @@ var menus = [];
 var ids = [];
 function injectScript(data) {
   // data: [id, code]
-  var func = function(id, did, cb) {
+  var func = function (id, did, cb) {
     Object.defineProperty(window, 'VM_' + id, {
       value: cb,
       configurable: true,