Gerald %!s(int64=9) %!d(string=hai) anos
pai
achega
d661ead94e
Modificáronse 6 ficheiros con 41 adicións e 9 borrados
  1. 12 2
      .eslintrc.yml
  2. 9 1
      gulpfile.js
  3. 14 0
      scripts/wrap.js
  4. 3 1
      src/background/requests.js
  5. 2 4
      src/injected.js
  6. 1 1
      src/options/views/confirm.js

+ 12 - 2
.eslintrc.yml

@@ -1,4 +1,16 @@
 rules:
+  indent:
+    - 2
+    - 2
+  quotes:
+    - 2
+    - single
+  linebreak-style:
+    - 2
+    - unix
+  semi:
+    - 2
+    - always
   comma-dangle:
     - 0
   no-console:
@@ -6,8 +18,6 @@ rules:
     - allow:
       - warn
       - error
-  no-empty:
-    - 0
   no-unused-vars:
     - 2
     - args: all

+ 9 - 1
gulpfile.js

@@ -11,6 +11,7 @@ const svgSprite = require('gulp-svg-sprite');
 const definePack = require('define-commonjs/pack/gulp');
 const templateCache = require('./scripts/templateCache');
 const i18n = require('./scripts/i18n');
+const wrap = require('./scripts/wrap');
 const pkg = require('./package.json');
 const isProd = process.env.NODE_ENV === 'production';
 
@@ -130,9 +131,16 @@ gulp.task('manifest', () => (
 ));
 
 gulp.task('copy-files', () => {
+  const injectedFilter = gulpFilter(['**/injected.js'], {restore: true});
   const jsFilter = gulpFilter(['**/*.js'], {restore: true});
   const cssFilter = gulpFilter(['**/*.css'], {restore: true});
-  var stream = gulp.src(paths.copy);
+  var stream = gulp.src(paths.copy)
+  .pipe(injectedFilter)
+  .pipe(wrap({
+    header: '!function(){\n',
+    footer: '\n}();',
+  }))
+  .pipe(injectedFilter.restore);
   if (isProd) stream = stream
   .pipe(jsFilter)
   .pipe(uglify())

+ 14 - 0
scripts/wrap.js

@@ -0,0 +1,14 @@
+const gutil = require('gulp-util');
+const through = require('through2');
+
+module.exports = function (options) {
+  return through.obj(function (file, enc, cb) {
+    if (file.isNull()) return cb();
+    if (file.isStream()) return this.emit('error', new gutil.PluginError('VM-wrap', 'Stream is not supported.'));
+    const header = options.header || '';
+    const contents = String(file.contents);
+    const footer = options.footer || '';
+    file.contents = new Buffer(header + contents + footer);
+    cb(null, file);
+  });
+};

+ 3 - 1
src/background/requests.js

@@ -39,7 +39,9 @@ function xhrCallbackWrapper(req) {
     };
     try {
       data.responseText = xhr.responseText;
-    } catch (e) {}
+    } catch (e) {
+      // ignore if responseText is unreachable
+    }
     if (evt.type === 'loadend') clearRequest(req);
     lastPromise = lastPromise.then(function () {
       return new Promise(function (resolve, _reject) {

+ 2 - 4
src/injected.js

@@ -1,4 +1,3 @@
-!function () {
 // Avoid running repeatedly due to new `document.documentElement`
 if (window.VM) return;
 window.VM = 1;
@@ -30,7 +29,7 @@ function forEach(arr, func, context) {
  * http://www.webtoolkit.info/javascript-utf8.html
  */
 function utf8decode(utftext) {
-  var string = "";
+  var string = '';
   var i = 0;
   var c = 0, c2 = 0, c3 = 0;
   while ( i < utftext.length ) {
@@ -706,7 +705,7 @@ function objEncode(obj) {
   return '{' + list.join(',') + '}';
 }
 function inject(code) {
-  var script = document.createElement('script')
+  var script = document.createElement('script');
   var doc = document.body || document.documentElement;
   script.innerHTML = code;
   doc.appendChild(script);
@@ -734,4 +733,3 @@ function initCommunicator() {
   sendMessage({cmd: 'GetInjected', data: location.href}).then(loadScript);
 }
 initCommunicator();
-}();

+ 1 - 1
src/options/views/confirm.js

@@ -46,7 +46,7 @@ module.exports = {
       .then(function (code) {
         if (changedOnly && oldCode === code) return Promise.reject();
         _this.code = code;
-      })
+      });
     },
     parseMeta: function () {
       var _this = this;