CB-12895 : added eslint to repo
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..5711f17
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1 @@
+pkg/**
\ No newline at end of file
diff --git a/.eslintrc.yml b/.eslintrc.yml
new file mode 100644
index 0000000..0cccb8c
--- /dev/null
+++ b/.eslintrc.yml
@@ -0,0 +1,10 @@
+root: true
+extends: semistandard
+rules:
+  indent:
+    - error
+    - 4
+  camelcase: off
+  padded-blocks: off
+  operator-linebreak: off
+  no-throw-literal: off
\ No newline at end of file
diff --git a/package.json b/package.json
index 0bcf5c2..1f90bc3 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,8 @@
     "url": "https://issues.apache.org/jira/browse/CB"
   },
   "scripts": {
-    "test": "grunt test",
+    "eslint": "eslint src test pkg",
+    "test": "grunt test && npm run eslint",
     "build": "grunt compile",
     "build-browserify": "grunt compile-browserify"
   },
@@ -68,6 +69,13 @@
   ],
   "devDependencies": {
     "connect": "^3.5.0",
+    "eslint": "^4.7.2",
+    "eslint-config-semistandard": "^11.0.0",
+    "eslint-config-standard": "^10.2.1",
+    "eslint-plugin-import": "^2.7.0",
+    "eslint-plugin-node": "^5.1.1",
+    "eslint-plugin-promise": "^3.5.0",
+    "eslint-plugin-standard": "^3.0.1",
     "grunt": "^1.0.1",
     "grunt-contrib-clean": "^1.0.0",
     "grunt-contrib-jshint": "^1.0.0",
diff --git a/src/common/argscheck.js b/src/common/argscheck.js
index f987270..07a2297 100644
--- a/src/common/argscheck.js
+++ b/src/common/argscheck.js
@@ -32,29 +32,29 @@
     'O': 'Object'
 };
 
-function extractParamName(callee, argIndex) {
+function extractParamName (callee, argIndex) {
     return (/.*?\((.*?)\)/).exec(callee)[1].split(', ')[argIndex];
 }
 
-function checkArgs(spec, functionName, args, opt_callee) {
+function checkArgs (spec, functionName, args, opt_callee) {
     if (!moduleExports.enableChecks) {
         return;
     }
     var errMsg = null;
     var typeName;
     for (var i = 0; i < spec.length; ++i) {
-        var c = spec.charAt(i),
-            cUpper = c.toUpperCase(),
-            arg = args[i];
+        var c = spec.charAt(i);
+        var cUpper = c.toUpperCase();
+        var arg = args[i];
         // Asterix means allow anything.
-        if (c == '*') {
+        if (c === '*') {
             continue;
         }
         typeName = utils.typeName(arg);
-        if ((arg === null || arg === undefined) && c == cUpper) {
+        if ((arg === null || arg === undefined) && c === cUpper) {
             continue;
         }
-        if (typeName != typeMap[cUpper]) {
+        if (typeName !== typeMap[cUpper]) {
             errMsg = 'Expected ' + typeMap[cUpper];
             break;
         }
@@ -63,18 +63,17 @@
         errMsg += ', but got ' + typeName + '.';
         errMsg = 'Wrong type for parameter "' + extractParamName(opt_callee || args.callee, i) + '" of ' + functionName + ': ' + errMsg;
         // Don't log when running unit tests.
-        if (typeof jasmine == 'undefined') {
+        if (typeof jasmine === 'undefined') {
             console.error(errMsg);
         }
         throw TypeError(errMsg);
     }
 }
 
-function getValue(value, defaultValue) {
+function getValue (value, defaultValue) {
     return value === undefined ? defaultValue : value;
 }
 
 moduleExports.checkArgs = checkArgs;
 moduleExports.getValue = getValue;
 moduleExports.enableChecks = true;
-
diff --git a/src/common/base64.js b/src/common/base64.js
index 5181390..e15dc4c 100644
--- a/src/common/base64.js
+++ b/src/common/base64.js
@@ -21,58 +21,58 @@
 
 var base64 = exports;
 
-base64.fromArrayBuffer = function(arrayBuffer) {
+base64.fromArrayBuffer = function (arrayBuffer) {
     var array = new Uint8Array(arrayBuffer);
     return uint8ToBase64(array);
 };
 
-base64.toArrayBuffer = function(str) {
-    var decodedStr = typeof atob != 'undefined' ? atob(str) : new Buffer(str,'base64').toString('binary');
+base64.toArrayBuffer = function (str) {
+    var decodedStr = typeof atob !== 'undefined' ? atob(str) : Buffer.from(str, 'base64').toString('binary'); // eslint-disable-line no-undef
     var arrayBuffer = new ArrayBuffer(decodedStr.length);
     var array = new Uint8Array(arrayBuffer);
-    for (var i=0, len=decodedStr.length; i < len; i++) {
+    for (var i = 0, len = decodedStr.length; i < len; i++) {
         array[i] = decodedStr.charCodeAt(i);
     }
     return arrayBuffer;
 };
 
-//------------------------------------------------------------------------------
+// ------------------------------------------------------------------------------
 
 /* This code is based on the performance tests at http://jsperf.com/b64tests
  * This 12-bit-at-a-time algorithm was the best performing version on all
  * platforms tested.
  */
 
-var b64_6bit = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+var b64_6bit = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 var b64_12bit;
 
-var b64_12bitTable = function() {
+var b64_12bitTable = function () {
     b64_12bit = [];
-    for (var i=0; i<64; i++) {
-        for (var j=0; j<64; j++) {
-            b64_12bit[i*64+j] = b64_6bit[i] + b64_6bit[j];
+    for (var i = 0; i < 64; i++) {
+        for (var j = 0; j < 64; j++) {
+            b64_12bit[i * 64 + j] = b64_6bit[i] + b64_6bit[j];
         }
     }
-    b64_12bitTable = function() { return b64_12bit; };
+    b64_12bitTable = function () { return b64_12bit; };
     return b64_12bit;
 };
 
-function uint8ToBase64(rawData) {
+function uint8ToBase64 (rawData) {
     var numBytes = rawData.byteLength;
-    var output="";
+    var output = '';
     var segment;
     var table = b64_12bitTable();
-    for (var i=0;i<numBytes-2;i+=3) {
-        segment = (rawData[i] << 16) + (rawData[i+1] << 8) + rawData[i+2];
+    for (var i = 0; i < numBytes - 2; i += 3) {
+        segment = (rawData[i] << 16) + (rawData[i + 1] << 8) + rawData[i + 2];
         output += table[segment >> 12];
         output += table[segment & 0xfff];
     }
-    if (numBytes - i == 2) {
-        segment = (rawData[i] << 16) + (rawData[i+1] << 8);
+    if (numBytes - i === 2) {
+        segment = (rawData[i] << 16) + (rawData[i + 1] << 8);
         output += table[segment >> 12];
         output += b64_6bit[(segment & 0xfff) >> 6];
         output += '=';
-    } else if (numBytes - i == 1) {
+    } else if (numBytes - i === 1) {
         segment = (rawData[i] << 16);
         output += table[segment >> 12];
         output += '==';
diff --git a/src/common/builder.js b/src/common/builder.js
index 75d3ea7..29b7307 100644
--- a/src/common/builder.js
+++ b/src/common/builder.js
@@ -21,7 +21,7 @@
 
 var utils = require('cordova/utils');
 
-function each(objects, func, context) {
+function each (objects, func, context) {
     for (var prop in objects) {
         if (objects.hasOwnProperty(prop)) {
             func.apply(context, [objects[prop], prop]);
@@ -29,7 +29,7 @@
     }
 }
 
-function clobber(obj, key, value) {
+function clobber (obj, key, value) {
     exports.replaceHookForTesting(obj, key);
     var needsProperty = false;
     try {
@@ -39,15 +39,15 @@
     }
     // Getters can only be overridden by getters.
     if (needsProperty || obj[key] !== value) {
-        utils.defineGetter(obj, key, function() {
+        utils.defineGetter(obj, key, function () {
             return value;
         });
     }
 }
 
-function assignOrWrapInDeprecateGetter(obj, key, value, message) {
+function assignOrWrapInDeprecateGetter (obj, key, value, message) {
     if (message) {
-        utils.defineGetter(obj, key, function() {
+        utils.defineGetter(obj, key, function () {
             console.log(message);
             delete obj[key];
             clobber(obj, key, value);
@@ -58,7 +58,7 @@
     }
 }
 
-function include(parent, objects, clobber, merge) {
+function include (parent, objects, clobber, merge) {
     each(objects, function (obj, key) {
         try {
             var result = obj.path ? require(obj.path) : {};
@@ -78,7 +78,7 @@
                 result = parent[key];
             } else {
                 // Overwrite if not currently defined.
-                if (typeof parent[key] == 'undefined') {
+                if (typeof parent[key] === 'undefined') {
                     assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
                 } else {
                     // Set result to what already exists, so we can build children into it if they exist.
@@ -89,7 +89,7 @@
             if (obj.children) {
                 include(result, obj.children, clobber, merge);
             }
-        } catch(e) {
+        } catch (e) {
             utils.alert('Exception building Cordova JS globals: ' + e + ' for key "' + key + '"');
         }
     });
@@ -102,7 +102,7 @@
  * @param target Object to merge properties into.
  * @param src Object to merge properties from.
  */
-function recursiveMerge(target, src) {
+function recursiveMerge (target, src) {
     for (var prop in src) {
         if (src.hasOwnProperty(prop)) {
             if (target.prototype && target.prototype.constructor === target) {
@@ -119,15 +119,15 @@
     }
 }
 
-exports.buildIntoButDoNotClobber = function(objects, target) {
+exports.buildIntoButDoNotClobber = function (objects, target) {
     include(target, objects, false, false);
 };
-exports.buildIntoAndClobber = function(objects, target) {
+exports.buildIntoAndClobber = function (objects, target) {
     include(target, objects, true, false);
 };
-exports.buildIntoAndMerge = function(objects, target) {
+exports.buildIntoAndMerge = function (objects, target) {
     include(target, objects, true, true);
 };
 exports.recursiveMerge = recursiveMerge;
 exports.assignOrWrapInDeprecateGetter = assignOrWrapInDeprecateGetter;
-exports.replaceHookForTesting = function() {};
+exports.replaceHookForTesting = function () {};
diff --git a/src/common/channel.js b/src/common/channel.js
index 1e8674e..9182968 100644
--- a/src/common/channel.js
+++ b/src/common/channel.js
@@ -19,8 +19,8 @@
  *
 */
 
-var utils = require('cordova/utils'),
-    nextGuid = 1;
+var utils = require('cordova/utils');
+var nextGuid = 1;
 
 /**
  * Custom pub-sub "channel" that can have functions subscribed to it
@@ -60,7 +60,7 @@
  * @constructor
  * @param type  String the channel name
  */
-var Channel = function(type, sticky) {
+var Channel = function (type, sticky) {
     this.type = type;
     // Map of guid -> function.
     this.handlers = {};
@@ -73,72 +73,73 @@
     // Function that is called when the first listener is subscribed, or when
     // the last listener is unsubscribed.
     this.onHasSubscribersChange = null;
-},
-    channel = {
-        /**
-         * Calls the provided function only after all of the channels specified
-         * have been fired. All channels must be sticky channels.
-         */
-        join: function(h, c) {
-            var len = c.length,
-                i = len,
-                f = function() {
-                    if (!(--i)) h();
-                };
-            for (var j=0; j<len; j++) {
-                if (c[j].state === 0) {
-                    throw Error('Can only use join with sticky channels.');
-                }
-                c[j].subscribe(f);
+};
+var channel = {
+    /**
+     * Calls the provided function only after all of the channels specified
+     * have been fired. All channels must be sticky channels.
+     */
+    join: function (h, c) {
+        var len = c.length;
+        var i = len;
+        var f = function () {
+            if (!(--i)) h();
+        };
+        for (var j = 0; j < len; j++) {
+            if (c[j].state === 0) {
+                throw Error('Can only use join with sticky channels.');
             }
-            if (!len) h();
-        },
-        create: function(type) {
-            return channel[type] = new Channel(type, false);
-        },
-        createSticky: function(type) {
-            return channel[type] = new Channel(type, true);
-        },
-
-        /**
-         * cordova Channels that must fire before "deviceready" is fired.
-         */
-        deviceReadyChannelsArray: [],
-        deviceReadyChannelsMap: {},
-
-        /**
-         * Indicate that a feature needs to be initialized before it is ready to be used.
-         * This holds up Cordova's "deviceready" event until the feature has been initialized
-         * and Cordova.initComplete(feature) is called.
-         *
-         * @param feature {String}     The unique feature name
-         */
-        waitForInitialization: function(feature) {
-            if (feature) {
-                var c = channel[feature] || this.createSticky(feature);
-                this.deviceReadyChannelsMap[feature] = c;
-                this.deviceReadyChannelsArray.push(c);
-            }
-        },
-
-        /**
-         * Indicate that initialization code has completed and the feature is ready to be used.
-         *
-         * @param feature {String}     The unique feature name
-         */
-        initializationComplete: function(feature) {
-            var c = this.deviceReadyChannelsMap[feature];
-            if (c) {
-                c.fire();
-            }
+            c[j].subscribe(f);
         }
-    };
+        if (!len) h();
+    },
+    /* eslint-disable no-return-assign */
+    create: function (type) {
+        return channel[type] = new Channel(type, false);
+    },
+    createSticky: function (type) {
+        return channel[type] = new Channel(type, true);
+    },
+    /* eslint-enable no-return-assign */
+    /**
+     * cordova Channels that must fire before "deviceready" is fired.
+     */
+    deviceReadyChannelsArray: [],
+    deviceReadyChannelsMap: {},
 
-function checkSubscriptionArgument(argument) {
-    if (typeof argument !== "function" && typeof argument.handleEvent !== "function") {
+    /**
+     * Indicate that a feature needs to be initialized before it is ready to be used.
+     * This holds up Cordova's "deviceready" event until the feature has been initialized
+     * and Cordova.initComplete(feature) is called.
+     *
+     * @param feature {String}     The unique feature name
+     */
+    waitForInitialization: function (feature) {
+        if (feature) {
+            var c = channel[feature] || this.createSticky(feature);
+            this.deviceReadyChannelsMap[feature] = c;
+            this.deviceReadyChannelsArray.push(c);
+        }
+    },
+
+    /**
+     * Indicate that initialization code has completed and the feature is ready to be used.
+     *
+     * @param feature {String}     The unique feature name
+     */
+    initializationComplete: function (feature) {
+        var c = this.deviceReadyChannelsMap[feature];
+        if (c) {
+            c.fire();
+        }
+    }
+};
+
+function checkSubscriptionArgument (argument) {
+    if (typeof argument !== 'function' && typeof argument.handleEvent !== 'function') {
         throw new Error(
-                "Must provide a function or an EventListener object " +
-                "implementing the handleEvent interface."
+            'Must provide a function or an EventListener object ' +
+                'implementing the handleEvent interface.'
         );
     }
 }
@@ -150,11 +151,11 @@
  * and a guid that can be used to stop subscribing to the channel.
  * Returns the guid.
  */
-Channel.prototype.subscribe = function(eventListenerOrFunction, eventListener) {
+Channel.prototype.subscribe = function (eventListenerOrFunction, eventListener) {
     checkSubscriptionArgument(eventListenerOrFunction);
     var handleEvent, guid;
 
-    if (eventListenerOrFunction && typeof eventListenerOrFunction === "object") {
+    if (eventListenerOrFunction && typeof eventListenerOrFunction === 'object') {
         // Received an EventListener object implementing the handleEvent interface
         handleEvent = eventListenerOrFunction.handleEvent;
         eventListener = eventListenerOrFunction;
@@ -163,13 +164,13 @@
         handleEvent = eventListenerOrFunction;
     }
 
-    if (this.state == 2) {
+    if (this.state === 2) {
         handleEvent.apply(eventListener || this, this.fireArgs);
         return;
     }
 
     guid = eventListenerOrFunction.observer_guid;
-    if (typeof eventListener === "object") {
+    if (typeof eventListener === 'object') {
         handleEvent = utils.close(eventListener, handleEvent);
     }
 
@@ -184,7 +185,7 @@
     if (!this.handlers[guid]) {
         this.handlers[guid] = handleEvent;
         this.numHandlers++;
-        if (this.numHandlers == 1) {
+        if (this.numHandlers === 1) {
             this.onHasSubscribersChange && this.onHasSubscribersChange();
         }
     }
@@ -193,11 +194,11 @@
 /**
  * Unsubscribes the function with the given guid from the channel.
  */
-Channel.prototype.unsubscribe = function(eventListenerOrFunction) {
+Channel.prototype.unsubscribe = function (eventListenerOrFunction) {
     checkSubscriptionArgument(eventListenerOrFunction);
     var handleEvent, guid, handler;
 
-    if (eventListenerOrFunction && typeof eventListenerOrFunction === "object") {
+    if (eventListenerOrFunction && typeof eventListenerOrFunction === 'object') {
         // Received an EventListener object implementing the handleEvent interface
         handleEvent = eventListenerOrFunction.handleEvent;
     } else {
@@ -219,11 +220,11 @@
 /**
  * Calls all functions subscribed to this channel.
  */
-Channel.prototype.fire = function(e) {
-    var fail = false,
-        fireArgs = Array.prototype.slice.call(arguments);
+Channel.prototype.fire = function (e) {
+    var fail = false; // eslint-disable-line no-unused-vars
+    var fireArgs = Array.prototype.slice.call(arguments);
     // Apply stickiness.
-    if (this.state == 1) {
+    if (this.state === 1) {
         this.state = 2;
         this.fireArgs = fireArgs;
     }
@@ -237,7 +238,7 @@
         for (var i = 0; i < toCall.length; ++i) {
             toCall[i].apply(this, fireArgs);
         }
-        if (this.state == 2 && this.numHandlers) {
+        if (this.state === 2 && this.numHandlers) {
             this.numHandlers = 0;
             this.handlers = {};
             this.onHasSubscribersChange && this.onHasSubscribersChange();
@@ -245,7 +246,6 @@
     }
 };
 
-
 // defining them here so they are ready super fast!
 // DOM event that is received when the web page is loaded and parsed.
 channel.createSticky('onDOMContentLoaded');
diff --git a/src/common/exec/proxy.js b/src/common/exec/proxy.js
index e640003..ffbb0c4 100644
--- a/src/common/exec/proxy.js
+++ b/src/common/exec/proxy.js
@@ -19,28 +19,27 @@
  *
 */
 
-
 // internal map of proxy function
 var CommandProxyMap = {};
 
 module.exports = {
 
     // example: cordova.commandProxy.add("Accelerometer",{getCurrentAcceleration: function(successCallback, errorCallback, options) {...},...);
-    add:function(id,proxyObj) {
-        console.log("adding proxy for " + id);
+    add: function (id, proxyObj) {
+        console.log('adding proxy for ' + id);
         CommandProxyMap[id] = proxyObj;
         return proxyObj;
     },
 
     // cordova.commandProxy.remove("Accelerometer");
-    remove:function(id) {
+    remove: function (id) {
         var proxy = CommandProxyMap[id];
         delete CommandProxyMap[id];
         CommandProxyMap[id] = null;
         return proxy;
     },
 
-    get:function(service,action) {
-        return ( CommandProxyMap[service] ? CommandProxyMap[service][action] : null );
+    get: function (service, action) {
+        return (CommandProxyMap[service] ? CommandProxyMap[service][action] : null);
     }
-};
\ No newline at end of file
+};
diff --git a/src/common/init.js b/src/common/init.js
index 8d86288..34b253c 100644
--- a/src/common/init.js
+++ b/src/common/init.js
@@ -28,16 +28,16 @@
 
 var platformInitChannelsArray = [channel.onNativeReady, channel.onPluginsReady];
 
-function logUnfiredChannels(arr) {
+function logUnfiredChannels (arr) {
     for (var i = 0; i < arr.length; ++i) {
-        if (arr[i].state != 2) {
+        if (arr[i].state !== 2) {
             console.log('Channel not fired: ' + arr[i].type);
         }
     }
 }
 
-window.setTimeout(function() {
-    if (channel.onDeviceReady.state != 2) {
+window.setTimeout(function () {
+    if (channel.onDeviceReady.state !== 2) {
         console.log('deviceready has not fired after 5 seconds.');
         logUnfiredChannels(platformInitChannelsArray);
         logUnfiredChannels(channel.deviceReadyChannelsArray);
@@ -46,20 +46,19 @@
 
 // Replace navigator before any modules are required(), to ensure it happens as soon as possible.
 // We replace it so that properties that can't be clobbered can instead be overridden.
-function replaceNavigator(origNavigator) {
-    var CordovaNavigator = function() {};
+function replaceNavigator (origNavigator) {
+    var CordovaNavigator = function () {};
     CordovaNavigator.prototype = origNavigator;
     var newNavigator = new CordovaNavigator();
     // This work-around really only applies to new APIs that are newer than Function.bind.
     // Without it, APIs such as getGamepads() break.
     if (CordovaNavigator.bind) {
         for (var key in origNavigator) {
-            if (typeof origNavigator[key] == 'function') {
+            if (typeof origNavigator[key] === 'function') {
                 newNavigator[key] = origNavigator[key].bind(origNavigator);
-            }
-            else {
-                (function(k) {
-                    utils.defineGetterSetter(newNavigator,key,function() {
+            } else {
+                (function (k) {
+                    utils.defineGetterSetter(newNavigator, key, function () {
                         return origNavigator[k];
                     });
                 })(key);
@@ -75,12 +74,12 @@
 
 if (!window.console) {
     window.console = {
-        log: function(){}
+        log: function () {}
     };
 }
 if (!window.console.warn) {
-    window.console.warn = function(msg) {
-        this.log("warn: " + msg);
+    window.console.warn = function (msg) {
+        this.log('warn: ' + msg);
     };
 }
 
@@ -91,10 +90,10 @@
 channel.onDeviceReady = cordova.addStickyDocumentEventHandler('deviceready');
 
 // Listen for DOMContentLoaded and notify our channel subscribers.
-if (document.readyState == 'complete' || document.readyState == 'interactive') {
+if (document.readyState === 'complete' || document.readyState === 'interactive') {
     channel.onDOMContentLoaded.fire();
 } else {
-    document.addEventListener('DOMContentLoaded', function() {
+    document.addEventListener('DOMContentLoaded', function () {
         channel.onDOMContentLoaded.fire();
     }, false);
 }
@@ -115,8 +114,8 @@
 
 // Wrap in a setTimeout to support the use-case of having plugin JS appended to cordova.js.
 // The delay allows the attached modules to be defined before the plugin loader looks for them.
-setTimeout(function() {
-    pluginloader.load(function() {
+setTimeout(function () {
+    pluginloader.load(function () {
         channel.onPluginsReady.fire();
     });
 }, 0);
@@ -124,7 +123,7 @@
 /**
  * Create all cordova objects once native side is ready.
  */
-channel.join(function() {
+channel.join(function () {
     modulemapper.mapModules(window);
 
     platform.initialize && platform.initialize();
@@ -135,9 +134,8 @@
     // Fire onDeviceReady event once page has fully loaded, all
     // constructors have run and cordova info has been received from native
     // side.
-    channel.join(function() {
+    channel.join(function () {
         require('cordova').fireDocumentEvent('deviceready');
     }, channel.deviceReadyChannelsArray);
 
 }, platformInitChannelsArray);
-
diff --git a/src/common/init_b.js b/src/common/init_b.js
index 8a805d1..336f098 100644
--- a/src/common/init_b.js
+++ b/src/common/init_b.js
@@ -31,16 +31,16 @@
 // setting exec
 cordova.exec = require('cordova/exec');
 
-function logUnfiredChannels(arr) {
+function logUnfiredChannels (arr) {
     for (var i = 0; i < arr.length; ++i) {
-        if (arr[i].state != 2) {
+        if (arr[i].state !== 2) {
             console.log('Channel not fired: ' + arr[i].type);
         }
     }
 }
 
-window.setTimeout(function() {
-    if (channel.onDeviceReady.state != 2) {
+window.setTimeout(function () {
+    if (channel.onDeviceReady.state !== 2) {
         console.log('deviceready has not fired after 5 seconds.');
         logUnfiredChannels(platformInitChannelsArray);
         logUnfiredChannels(channel.deviceReadyChannelsArray);
@@ -49,20 +49,19 @@
 
 // Replace navigator before any modules are required(), to ensure it happens as soon as possible.
 // We replace it so that properties that can't be clobbered can instead be overridden.
-function replaceNavigator(origNavigator) {
-    var CordovaNavigator = function() {};
+function replaceNavigator (origNavigator) {
+    var CordovaNavigator = function () {};
     CordovaNavigator.prototype = origNavigator;
     var newNavigator = new CordovaNavigator();
     // This work-around really only applies to new APIs that are newer than Function.bind.
     // Without it, APIs such as getGamepads() break.
     if (CordovaNavigator.bind) {
         for (var key in origNavigator) {
-            if (typeof origNavigator[key] == 'function') {
+            if (typeof origNavigator[key] === 'function') {
                 newNavigator[key] = origNavigator[key].bind(origNavigator);
-            }
-            else {
-                (function(k) {
-                    utils.defineGetterSetter(newNavigator,key,function() {
+            } else {
+                (function (k) {
+                    utils.defineGetterSetter(newNavigator, key, function () {
                         return origNavigator[k];
                     });
                 })(key);
@@ -77,12 +76,12 @@
 
 if (!window.console) {
     window.console = {
-        log: function(){}
+        log: function () {}
     };
 }
 if (!window.console.warn) {
-    window.console.warn = function(msg) {
-        this.log("warn: " + msg);
+    window.console.warn = function (msg) {
+        this.log('warn: ' + msg);
     };
 }
 
@@ -93,10 +92,10 @@
 channel.onDeviceReady = cordova.addStickyDocumentEventHandler('deviceready');
 
 // Listen for DOMContentLoaded and notify our channel subscribers.
-if (document.readyState == 'complete' || document.readyState == 'interactive') {
+if (document.readyState === 'complete' || document.readyState === 'interactive') {
     channel.onDOMContentLoaded.fire();
 } else {
-    document.addEventListener('DOMContentLoaded', function() {
+    document.addEventListener('DOMContentLoaded', function () {
         channel.onDOMContentLoaded.fire();
     }, false);
 }
@@ -113,8 +112,8 @@
 
 // Wrap in a setTimeout to support the use-case of having plugin JS appended to cordova.js.
 // The delay allows the attached modules to be defined before the plugin loader looks for them.
-setTimeout(function() {
-    pluginloader.load(function() {
+setTimeout(function () {
+    pluginloader.load(function () {
         channel.onPluginsReady.fire();
     });
 }, 0);
@@ -122,7 +121,7 @@
 /**
  * Create all cordova objects once native side is ready.
  */
-channel.join(function() {
+channel.join(function () {
     modulemapper.mapModules(window);
 
     platform.initialize && platform.initialize();
@@ -133,7 +132,7 @@
     // Fire onDeviceReady event once page has fully loaded, all
     // constructors have run and cordova info has been received from native
     // side.
-    channel.join(function() {
+    channel.join(function () {
         require('cordova').fireDocumentEvent('deviceready');
     }, channel.deviceReadyChannelsArray);
 
diff --git a/src/common/modulemapper.js b/src/common/modulemapper.js
index ea14c2a..a280d16 100644
--- a/src/common/modulemapper.js
+++ b/src/common/modulemapper.js
@@ -18,17 +18,17 @@
  *
 */
 
-var builder = require('cordova/builder'),
-    moduleMap = define.moduleMap,
-    symbolList,
-    deprecationMap;
+var builder = require('cordova/builder');
+var moduleMap = define.moduleMap; // eslint-disable-line no-undef
+var symbolList;
+var deprecationMap;
 
-exports.reset = function() {
+exports.reset = function () {
     symbolList = [];
     deprecationMap = {};
 };
 
-function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {
+function addEntry (strategy, moduleName, symbolPath, opt_deprecationMessage) {
     if (!(moduleName in moduleMap)) {
         throw new Error('Module ' + moduleName + ' does not exist.');
     }
@@ -39,35 +39,35 @@
 }
 
 // Note: Android 2.3 does have Function.bind().
-exports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {
+exports.clobbers = function (moduleName, symbolPath, opt_deprecationMessage) {
     addEntry('c', moduleName, symbolPath, opt_deprecationMessage);
 };
 
-exports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {
+exports.merges = function (moduleName, symbolPath, opt_deprecationMessage) {
     addEntry('m', moduleName, symbolPath, opt_deprecationMessage);
 };
 
-exports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {
+exports.defaults = function (moduleName, symbolPath, opt_deprecationMessage) {
     addEntry('d', moduleName, symbolPath, opt_deprecationMessage);
 };
 
-exports.runs = function(moduleName) {
+exports.runs = function (moduleName) {
     addEntry('r', moduleName, null);
 };
 
-function prepareNamespace(symbolPath, context) {
+function prepareNamespace (symbolPath, context) {
     if (!symbolPath) {
         return context;
     }
     var parts = symbolPath.split('.');
     var cur = context;
-    for (var i = 0, part; part = parts[i]; ++i) {
+    for (var i = 0, part; part = parts[i]; ++i) { // eslint-disable-line no-cond-assign
         cur = cur[part] = cur[part] || {};
     }
     return cur;
 }
 
-exports.mapModules = function(context) {
+exports.mapModules = function (context) {
     var origSymbols = {};
     context.CDV_origSymbols = origSymbols;
     for (var i = 0, len = symbolList.length; i < len; i += 3) {
@@ -75,7 +75,7 @@
         var moduleName = symbolList[i + 1];
         var module = require(moduleName);
         // <runs/>
-        if (strategy == 'r') {
+        if (strategy === 'r') {
             continue;
         }
         var symbolPath = symbolList[i + 2];
@@ -87,9 +87,9 @@
         var parentObj = prepareNamespace(namespace, context);
         var target = parentObj[lastName];
 
-        if (strategy == 'm' && target) {
+        if (strategy === 'm' && target) {
             builder.recursiveMerge(target, module);
-        } else if ((strategy == 'd' && !target) || (strategy != 'd')) {
+        } else if ((strategy === 'd' && !target) || (strategy !== 'd')) {
             if (!(symbolPath in origSymbols)) {
                 origSymbols[symbolPath] = target;
             }
@@ -98,7 +98,7 @@
     }
 };
 
-exports.getOriginalSymbol = function(context, symbolPath) {
+exports.getOriginalSymbol = function (context, symbolPath) {
     var origSymbols = context.CDV_origSymbols;
     if (origSymbols && (symbolPath in origSymbols)) {
         return origSymbols[symbolPath];
@@ -112,4 +112,3 @@
 };
 
 exports.reset();
-
diff --git a/src/common/modulemapper_b.js b/src/common/modulemapper_b.js
index 98d82d3..46dd1d3 100644
--- a/src/common/modulemapper_b.js
+++ b/src/common/modulemapper_b.js
@@ -18,16 +18,16 @@
  *
 */
 
-var builder = require('cordova/builder'),
-    symbolList = [],
-    deprecationMap;
+var builder = require('cordova/builder');
+var symbolList = [];
+var deprecationMap;
 
-exports.reset = function() {
+exports.reset = function () {
     symbolList = [];
     deprecationMap = {};
 };
 
-function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {
+function addEntry (strategy, moduleName, symbolPath, opt_deprecationMessage) {
     symbolList.push(strategy, moduleName, symbolPath);
     if (opt_deprecationMessage) {
         deprecationMap[symbolPath] = opt_deprecationMessage;
@@ -35,35 +35,35 @@
 }
 
 // Note: Android 2.3 does have Function.bind().
-exports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {
+exports.clobbers = function (moduleName, symbolPath, opt_deprecationMessage) {
     addEntry('c', moduleName, symbolPath, opt_deprecationMessage);
 };
 
-exports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {
+exports.merges = function (moduleName, symbolPath, opt_deprecationMessage) {
     addEntry('m', moduleName, symbolPath, opt_deprecationMessage);
 };
 
-exports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {
+exports.defaults = function (moduleName, symbolPath, opt_deprecationMessage) {
     addEntry('d', moduleName, symbolPath, opt_deprecationMessage);
 };
 
-exports.runs = function(moduleName) {
+exports.runs = function (moduleName) {
     addEntry('r', moduleName, null);
 };
 
-function prepareNamespace(symbolPath, context) {
+function prepareNamespace (symbolPath, context) {
     if (!symbolPath) {
         return context;
     }
     var parts = symbolPath.split('.');
     var cur = context;
-    for (var i = 0, part; part = parts[i]; ++i) {
+    for (var i = 0, part; part = parts[i]; ++i) { // eslint-disable-line no-cond-assign
         cur = cur[part] = cur[part] || {};
     }
     return cur;
 }
 
-exports.mapModules = function(context) {
+exports.mapModules = function (context) {
     var origSymbols = {};
     context.CDV_origSymbols = origSymbols;
     for (var i = 0, len = symbolList.length; i < len; i += 3) {
@@ -71,7 +71,7 @@
         var moduleName = symbolList[i + 1];
         var module = require(moduleName);
         // <runs/>
-        if (strategy == 'r') {
+        if (strategy === 'r') {
             continue;
         }
         var symbolPath = symbolList[i + 2];
@@ -83,9 +83,9 @@
         var parentObj = prepareNamespace(namespace, context);
         var target = parentObj[lastName];
 
-        if (strategy == 'm' && target) {
+        if (strategy === 'm' && target) {
             builder.recursiveMerge(target, module);
-        } else if ((strategy == 'd' && !target) || (strategy != 'd')) {
+        } else if ((strategy === 'd' && !target) || (strategy !== 'd')) {
             if (!(symbolPath in origSymbols)) {
                 origSymbols[symbolPath] = target;
             }
@@ -94,7 +94,7 @@
     }
 };
 
-exports.getOriginalSymbol = function(context, symbolPath) {
+exports.getOriginalSymbol = function (context, symbolPath) {
     var origSymbols = context.CDV_origSymbols;
     if (origSymbols && (symbolPath in origSymbols)) {
         return origSymbols[symbolPath];
@@ -108,4 +108,3 @@
 };
 
 exports.reset();
-
diff --git a/src/common/pluginloader.js b/src/common/pluginloader.js
index f2d34e0..c8c4fa3 100644
--- a/src/common/pluginloader.js
+++ b/src/common/pluginloader.js
@@ -20,12 +20,11 @@
 */
 
 var modulemapper = require('cordova/modulemapper');
-var urlutil = require('cordova/urlutil');
 
 // Helper function to inject a <script> tag.
 // Exported for testing.
-exports.injectScript = function(url, onload, onerror) {
-    var script = document.createElement("script");
+exports.injectScript = function (url, onload, onerror) {
+    var script = document.createElement('script');
     // onload fires even when script fails loads with an error.
     script.onload = onload;
     // onerror fires for malformed URLs.
@@ -34,13 +33,13 @@
     document.head.appendChild(script);
 };
 
-function injectIfNecessary(id, url, onload, onerror) {
+function injectIfNecessary (id, url, onload, onerror) {
     onerror = onerror || onload;
-    if (id in define.moduleMap) {
+    if (id in define.moduleMap) { // eslint-disable-line no-undef
         onload();
     } else {
-        exports.injectScript(url, function() {
-            if (id in define.moduleMap) {
+        exports.injectScript(url, function () {
+            if (id in define.moduleMap) { // eslint-disable-line no-undef
                 onload();
             } else {
                 onerror();
@@ -49,9 +48,9 @@
     }
 }
 
-function onScriptLoadingComplete(moduleList, finishPluginLoading) {
+function onScriptLoadingComplete (moduleList, finishPluginLoading) {
     // Loop through all the plugins and then through their clobbers and merges.
-    for (var i = 0, module; module = moduleList[i]; i++) {
+    for (var i = 0, module; module = moduleList[i]; i++) { // eslint-disable-line no-cond-assign
         if (module.clobbers && module.clobbers.length) {
             for (var j = 0; j < module.clobbers.length; j++) {
                 modulemapper.clobbers(module.id, module.clobbers[j]);
@@ -77,7 +76,7 @@
 // See plugman's plugin_loader.js for the details of this object.
 // This function is only called if the really is a plugins array that isn't empty.
 // Otherwise the onerror response handler will just call finishPluginLoading().
-function handlePluginsObject(path, moduleList, finishPluginLoading) {
+function handlePluginsObject (path, moduleList, finishPluginLoading) {
     // Now inject the scripts.
     var scriptCounter = moduleList.length;
 
@@ -85,7 +84,7 @@
         finishPluginLoading();
         return;
     }
-    function scriptLoadedCallback() {
+    function scriptLoadedCallback () {
         if (!--scriptCounter) {
             onScriptLoadingComplete(moduleList, finishPluginLoading);
         }
@@ -96,13 +95,13 @@
     }
 }
 
-function findCordovaPath() {
+function findCordovaPath () {
     var path = null;
     var scripts = document.getElementsByTagName('script');
     var term = '/cordova.js';
-    for (var n = scripts.length-1; n>-1; n--) {
+    for (var n = scripts.length - 1; n > -1; n--) {
         var src = scripts[n].src.replace(/\?.*$/, ''); // Strip any query param (CB-6007).
-        if (src.indexOf(term) == (src.length - term.length)) {
+        if (src.indexOf(term) === (src.length - term.length)) {
             path = src.substring(0, src.length - term.length) + '/';
             break;
         }
@@ -113,15 +112,14 @@
 // Tries to load all plugins' js-modules.
 // This is an async process, but onDeviceReady is blocked on onPluginsReady.
 // onPluginsReady is fired when there are no plugins to load, or they are all done.
-exports.load = function(callback) {
+exports.load = function (callback) {
     var pathPrefix = findCordovaPath();
     if (pathPrefix === null) {
         console.log('Could not find cordova.js script tag. Plugin loading may fail.');
         pathPrefix = '';
     }
-    injectIfNecessary('cordova/plugin_list', pathPrefix + 'cordova_plugins.js', function() {
-        var moduleList = require("cordova/plugin_list");
+    injectIfNecessary('cordova/plugin_list', pathPrefix + 'cordova_plugins.js', function () {
+        var moduleList = require('cordova/plugin_list');
         handlePluginsObject(pathPrefix, moduleList, callback);
     }, callback);
 };
-
diff --git a/src/common/pluginloader_b.js b/src/common/pluginloader_b.js
index 46e4446..418dc54 100644
--- a/src/common/pluginloader_b.js
+++ b/src/common/pluginloader_b.js
@@ -23,14 +23,14 @@
 
 // Handler for the cordova_plugins.js content.
 // See plugman's plugin_loader.js for the details of this object.
-function handlePluginsObject(moduleList) {
+function handlePluginsObject (moduleList) {
     // if moduleList is not defined or empty, we've nothing to do
     if (!moduleList || !moduleList.length) {
         return;
     }
 
     // Loop through all the modules and then through their clobbers and merges.
-    for (var i = 0, module; module = moduleList[i]; i++) {
+    for (var i = 0, module; module = moduleList[i]; i++) { // eslint-disable-line no-cond-assign
         if (module.clobbers && module.clobbers.length) {
             for (var j = 0; j < module.clobbers.length; j++) {
                 modulemapper.clobbers(module.id, module.clobbers[j]);
@@ -54,10 +54,9 @@
 // but the method accepts callback to be compatible with non-browserify flow.
 // onDeviceReady is blocked on onPluginsReady. onPluginsReady is fired when there are
 // no plugins to load, or they are all done.
-exports.load = function(callback) {
-    var moduleList = require("cordova/plugin_list");
+exports.load = function (callback) {
+    var moduleList = require('cordova/plugin_list');
     handlePluginsObject(moduleList);
 
     callback();
 };
-
diff --git a/src/common/urlutil.js b/src/common/urlutil.js
index 09ebc62..2cadbea 100644
--- a/src/common/urlutil.js
+++ b/src/common/urlutil.js
@@ -19,14 +19,12 @@
  *
 */
 
-
 /**
  * For already absolute URLs, returns what is passed in.
  * For relative URLs, converts them to absolute ones.
  */
-exports.makeAbsolute = function makeAbsolute(url) {
+exports.makeAbsolute = function makeAbsolute (url) {
     var anchorEl = document.createElement('a');
     anchorEl.href = url;
     return anchorEl.href;
 };
-
diff --git a/src/common/utils.js b/src/common/utils.js
index 6bb38b1..febfd91 100644
--- a/src/common/utils.js
+++ b/src/common/utils.js
@@ -24,7 +24,7 @@
 /**
  * Defines a property getter / setter for obj[key].
  */
-utils.defineGetterSetter = function(obj, key, getFunc, opt_setFunc) {
+utils.defineGetterSetter = function (obj, key, getFunc, opt_setFunc) {
     if (Object.defineProperty) {
         var desc = {
             get: getFunc,
@@ -47,13 +47,13 @@
  */
 utils.defineGetter = utils.defineGetterSetter;
 
-utils.arrayIndexOf = function(a, item) {
+utils.arrayIndexOf = function (a, item) {
     if (a.indexOf) {
         return a.indexOf(item);
     }
     var len = a.length;
     for (var i = 0; i < len; ++i) {
-        if (a[i] == item) {
+        if (a[i] === item) {
             return i;
         }
     }
@@ -63,15 +63,15 @@
 /**
  * Returns whether the item was found in the array.
  */
-utils.arrayRemove = function(a, item) {
+utils.arrayRemove = function (a, item) {
     var index = utils.arrayIndexOf(a, item);
-    if (index != -1) {
+    if (index !== -1) {
         a.splice(index, 1);
     }
-    return index != -1;
+    return index !== -1;
 };
 
-utils.typeName = function(val) {
+utils.typeName = function (val) {
     return Object.prototype.toString.call(val).slice(8, -1);
 };
 
@@ -79,39 +79,39 @@
  * Returns an indication of whether the argument is an array or not
  */
 utils.isArray = Array.isArray ||
-                function(a) {return utils.typeName(a) == 'Array';};
+                function (a) { return utils.typeName(a) === 'Array'; };
 
 /**
  * Returns an indication of whether the argument is a Date or not
  */
-utils.isDate = function(d) {
+utils.isDate = function (d) {
     return (d instanceof Date);
 };
 
 /**
  * Does a deep clone of the object.
  */
-utils.clone = function(obj) {
-    if(!obj || typeof obj == 'function' || utils.isDate(obj) || typeof obj != 'object') {
+utils.clone = function (obj) {
+    if (!obj || typeof obj === 'function' || utils.isDate(obj) || typeof obj !== 'object') {
         return obj;
     }
 
     var retVal, i;
 
-    if(utils.isArray(obj)){
+    if (utils.isArray(obj)) {
         retVal = [];
-        for(i = 0; i < obj.length; ++i){
+        for (i = 0; i < obj.length; ++i) {
             retVal.push(utils.clone(obj[i]));
         }
         return retVal;
     }
 
     retVal = {};
-    for(i in obj){
+    for (i in obj) {
         // https://issues.apache.org/jira/browse/CB-11522 'unknown' type may be returned in
         // custom protocol activation case on Windows Phone 8.1 causing "No such interface supported" exception
         // on cloning.
-        if((!(i in retVal) || retVal[i] != obj[i]) && typeof obj[i] != 'undefined' && typeof obj[i] != 'unknown') {
+        if ((!(i in retVal) || retVal[i] !== obj[i]) && typeof obj[i] !== 'undefined' && typeof obj[i] !== 'unknown') { // eslint-disable-line valid-typeof
             retVal[i] = utils.clone(obj[i]);
         }
     }
@@ -121,20 +121,20 @@
 /**
  * Returns a wrapped version of the function
  */
-utils.close = function(context, func, params) {
-    return function() {
+utils.close = function (context, func, params) {
+    return function () {
         var args = params || arguments;
         return func.apply(context, args);
     };
 };
 
-//------------------------------------------------------------------------------
-function UUIDcreatePart(length) {
-    var uuidpart = "";
-    for (var i=0; i<length; i++) {
+// ------------------------------------------------------------------------------
+function UUIDcreatePart (length) {
+    var uuidpart = '';
+    for (var i = 0; i < length; i++) {
         var uuidchar = parseInt((Math.random() * 256), 10).toString(16);
-        if (uuidchar.length == 1) {
-            uuidchar = "0" + uuidchar;
+        if (uuidchar.length === 1) {
+            uuidchar = '0' + uuidchar;
         }
         uuidpart += uuidchar;
     }
@@ -144,7 +144,7 @@
 /**
  * Create a UUID
  */
-utils.createUUID = function() {
+utils.createUUID = function () {
     return UUIDcreatePart(4) + '-' +
         UUIDcreatePart(2) + '-' +
         UUIDcreatePart(2) + '-' +
@@ -152,16 +152,15 @@
         UUIDcreatePart(6);
 };
 
-
 /**
  * Extends a child object from a parent object using classical inheritance
  * pattern.
  */
-utils.extend = (function() {
+utils.extend = (function () {
     // proxy used to establish prototype chain
-    var F = function() {};
+    var F = function () {};
     // extend Child from Parent
-    return function(Child, Parent) {
+    return function (Child, Parent) {
 
         F.prototype = Parent.prototype;
         Child.prototype = new F();
@@ -173,14 +172,10 @@
 /**
  * Alerts a message in any available way: alert or console.log.
  */
-utils.alert = function(msg) {
+utils.alert = function (msg) {
     if (window.alert) {
         window.alert(msg);
     } else if (console && console.log) {
         console.log(msg);
     }
 };
-
-
-
-
diff --git a/src/cordova.js b/src/cordova.js
index b2d2a55..6297c4e 100644
--- a/src/cordova.js
+++ b/src/cordova.js
@@ -21,15 +21,13 @@
 
 // Workaround for Windows 10 in hosted environment case
 // http://www.w3.org/html/wg/drafts/html/master/browsers.html#named-access-on-the-window-object
-if (window.cordova && !(window.cordova instanceof HTMLElement)) {
-    throw new Error("cordova already defined");
+if (window.cordova && !(window.cordova instanceof HTMLElement)) { // eslint-disable-line no-undef
+    throw new Error('cordova already defined');
 }
 
-
 var channel = require('cordova/channel');
 var platform = require('cordova/platform');
 
-
 /**
  * Intercept calls to addEventListener + removeEventListener and handle deviceready,
  * resume, and pause events.
@@ -42,48 +40,48 @@
 /**
  * Houses custom event handlers to intercept on document + window event listeners.
  */
-var documentEventHandlers = {},
-    windowEventHandlers = {};
+var documentEventHandlers = {};
+var windowEventHandlers = {};
 
-document.addEventListener = function(evt, handler, capture) {
+document.addEventListener = function (evt, handler, capture) {
     var e = evt.toLowerCase();
-    if (typeof documentEventHandlers[e] != 'undefined') {
+    if (typeof documentEventHandlers[e] !== 'undefined') {
         documentEventHandlers[e].subscribe(handler);
     } else {
         m_document_addEventListener.call(document, evt, handler, capture);
     }
 };
 
-window.addEventListener = function(evt, handler, capture) {
+window.addEventListener = function (evt, handler, capture) {
     var e = evt.toLowerCase();
-    if (typeof windowEventHandlers[e] != 'undefined') {
+    if (typeof windowEventHandlers[e] !== 'undefined') {
         windowEventHandlers[e].subscribe(handler);
     } else {
         m_window_addEventListener.call(window, evt, handler, capture);
     }
 };
 
-document.removeEventListener = function(evt, handler, capture) {
+document.removeEventListener = function (evt, handler, capture) {
     var e = evt.toLowerCase();
     // If unsubscribing from an event that is handled by a plugin
-    if (typeof documentEventHandlers[e] != "undefined") {
+    if (typeof documentEventHandlers[e] !== 'undefined') {
         documentEventHandlers[e].unsubscribe(handler);
     } else {
         m_document_removeEventListener.call(document, evt, handler, capture);
     }
 };
 
-window.removeEventListener = function(evt, handler, capture) {
+window.removeEventListener = function (evt, handler, capture) {
     var e = evt.toLowerCase();
     // If unsubscribing from an event that is handled by a plugin
-    if (typeof windowEventHandlers[e] != "undefined") {
+    if (typeof windowEventHandlers[e] !== 'undefined') {
         windowEventHandlers[e].unsubscribe(handler);
     } else {
         m_window_removeEventListener.call(window, evt, handler, capture);
     }
 };
 
-function createEvent(type, data) {
+function createEvent (type, data) {
     var event = document.createEvent('Events');
     event.initEvent(type, false, false);
     if (data) {
@@ -96,29 +94,32 @@
     return event;
 }
 
-
+/* eslint-disable no-undef */
 var cordova = {
-    define:define,
-    require:require,
-    version:PLATFORM_VERSION_BUILD_LABEL,
-    platformVersion:PLATFORM_VERSION_BUILD_LABEL,
-    platformId:platform.id,
+    define: define,
+    require: require,
+    version: PLATFORM_VERSION_BUILD_LABEL,
+    platformVersion: PLATFORM_VERSION_BUILD_LABEL,
+    platformId: platform.id,
+
+    /* eslint-enable no-undef */
+
     /**
      * Methods to add/remove your own addEventListener hijacking on document + window.
      */
-    addWindowEventHandler:function(event) {
+    addWindowEventHandler: function (event) {
         return (windowEventHandlers[event] = channel.create(event));
     },
-    addStickyDocumentEventHandler:function(event) {
+    addStickyDocumentEventHandler: function (event) {
         return (documentEventHandlers[event] = channel.createSticky(event));
     },
-    addDocumentEventHandler:function(event) {
+    addDocumentEventHandler: function (event) {
         return (documentEventHandlers[event] = channel.create(event));
     },
-    removeWindowEventHandler:function(event) {
+    removeWindowEventHandler: function (event) {
         delete windowEventHandlers[event];
     },
-    removeDocumentEventHandler:function(event) {
+    removeDocumentEventHandler: function (event) {
         delete documentEventHandlers[event];
     },
     /**
@@ -126,24 +127,23 @@
      *
      * @return object
      */
-    getOriginalHandlers: function() {
+    getOriginalHandlers: function () {
         return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener},
-        'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}};
+            'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}};
     },
     /**
      * Method to fire event from native code
      * bNoDetach is required for events which cause an exception which needs to be caught in native code
      */
-    fireDocumentEvent: function(type, data, bNoDetach) {
+    fireDocumentEvent: function (type, data, bNoDetach) {
         var evt = createEvent(type, data);
-        if (typeof documentEventHandlers[type] != 'undefined') {
-            if( bNoDetach ) {
+        if (typeof documentEventHandlers[type] !== 'undefined') {
+            if (bNoDetach) {
                 documentEventHandlers[type].fire(evt);
-            }
-            else {
-                setTimeout(function() {
+            } else {
+                setTimeout(function () {
                     // Fire deviceready on listeners that were registered before cordova.js was loaded.
-                    if (type == 'deviceready') {
+                    if (type === 'deviceready') {
                         document.dispatchEvent(evt);
                     }
                     documentEventHandlers[type].fire(evt);
@@ -153,10 +153,10 @@
             document.dispatchEvent(evt);
         }
     },
-    fireWindowEvent: function(type, data) {
-        var evt = createEvent(type,data);
-        if (typeof windowEventHandlers[type] != 'undefined') {
-            setTimeout(function() {
+    fireWindowEvent: function (type, data) {
+        var evt = createEvent(type, data);
+        if (typeof windowEventHandlers[type] !== 'undefined') {
+            setTimeout(function () {
                 windowEventHandlers[type].fire(evt);
             }, 0);
         } else {
@@ -170,7 +170,7 @@
     // Randomize the starting callbackId to avoid collisions after refreshing or navigating.
     // This way, it's very unlikely that any new callback would get the same callbackId as an old callback.
     callbackId: Math.floor(Math.random() * 2000000000),
-    callbacks:  {},
+    callbacks: {},
     callbackStatus: {
         NO_RESULT: 0,
         OK: 1,
@@ -187,14 +187,14 @@
     /**
      * Called by native code when returning successful result from an action.
      */
-    callbackSuccess: function(callbackId, args) {
+    callbackSuccess: function (callbackId, args) {
         cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback);
     },
 
     /**
      * Called by native code when returning error result from an action.
      */
-    callbackError: function(callbackId, args) {
+    callbackError: function (callbackId, args) {
         // TODO: Deprecate callbackSuccess and callbackError in favour of callbackFromNative.
         // Derive success from status.
         cordova.callbackFromNative(callbackId, false, args.status, [args.message], args.keepCallback);
@@ -203,11 +203,11 @@
     /**
      * Called by native code when returning the result from an action.
      */
-    callbackFromNative: function(callbackId, isSuccess, status, args, keepCallback) {
+    callbackFromNative: function (callbackId, isSuccess, status, args, keepCallback) {
         try {
             var callback = cordova.callbacks[callbackId];
             if (callback) {
-                if (isSuccess && status == cordova.callbackStatus.OK) {
+                if (isSuccess && status === cordova.callbackStatus.OK) {
                     callback.success && callback.success.apply(null, args);
                 } else if (!isSuccess) {
                     callback.fail && callback.fail.apply(null, args);
@@ -224,24 +224,22 @@
                     delete cordova.callbacks[callbackId];
                 }
             }
-        }
-        catch (err) {
-            var msg = "Error in " + (isSuccess ? "Success" : "Error") + " callbackId: " + callbackId + " : " + err;
+        } catch (err) {
+            var msg = 'Error in ' + (isSuccess ? 'Success' : 'Error') + ' callbackId: ' + callbackId + ' : ' + err;
             console && console.log && console.log(msg);
-            cordova.fireWindowEvent("cordovacallbackerror", { 'message': msg });
+            cordova.fireWindowEvent('cordovacallbackerror', { 'message': msg });
             throw err;
         }
     },
-    addConstructor: function(func) {
-        channel.onCordovaReady.subscribe(function() {
+    addConstructor: function (func) {
+        channel.onCordovaReady.subscribe(function () {
             try {
                 func();
-            } catch(e) {
-                console.log("Failed to run constructor: " + e);
+            } catch (e) {
+                console.log('Failed to run constructor: ' + e);
             }
         });
     }
 };
 
-
 module.exports = cordova;
diff --git a/src/cordova_b.js b/src/cordova_b.js
index a66a106..4e918f5 100644
--- a/src/cordova_b.js
+++ b/src/cordova_b.js
@@ -21,12 +21,10 @@
 
 // Workaround for Windows 10 in hosted environment case
 // http://www.w3.org/html/wg/drafts/html/master/browsers.html#named-access-on-the-window-object
-if (window.cordova && !(window.cordova instanceof HTMLElement)) {
-    throw new Error("cordova already defined");
+if (window.cordova && !(window.cordova instanceof HTMLElement)) { // eslint-disable-line no-undef
+    throw new Error('cordova already defined');
 }
 
-/*global symbolList*/
-
 var channel = require('cordova/channel');
 var platform = require('cordova/platform');
 
@@ -42,48 +40,48 @@
 /**
  * Houses custom event handlers to intercept on document + window event listeners.
  */
-var documentEventHandlers = {},
-    windowEventHandlers = {};
+var documentEventHandlers = {};
+var windowEventHandlers = {};
 
-document.addEventListener = function(evt, handler, capture) {
+document.addEventListener = function (evt, handler, capture) {
     var e = evt.toLowerCase();
-    if (typeof documentEventHandlers[e] != 'undefined') {
+    if (typeof documentEventHandlers[e] !== 'undefined') {
         documentEventHandlers[e].subscribe(handler);
     } else {
         m_document_addEventListener.call(document, evt, handler, capture);
     }
 };
 
-window.addEventListener = function(evt, handler, capture) {
+window.addEventListener = function (evt, handler, capture) {
     var e = evt.toLowerCase();
-    if (typeof windowEventHandlers[e] != 'undefined') {
+    if (typeof windowEventHandlers[e] !== 'undefined') {
         windowEventHandlers[e].subscribe(handler);
     } else {
         m_window_addEventListener.call(window, evt, handler, capture);
     }
 };
 
-document.removeEventListener = function(evt, handler, capture) {
+document.removeEventListener = function (evt, handler, capture) {
     var e = evt.toLowerCase();
     // If unsubscribing from an event that is handled by a plugin
-    if (typeof documentEventHandlers[e] != "undefined") {
+    if (typeof documentEventHandlers[e] !== 'undefined') {
         documentEventHandlers[e].unsubscribe(handler);
     } else {
         m_document_removeEventListener.call(document, evt, handler, capture);
     }
 };
 
-window.removeEventListener = function(evt, handler, capture) {
+window.removeEventListener = function (evt, handler, capture) {
     var e = evt.toLowerCase();
     // If unsubscribing from an event that is handled by a plugin
-    if (typeof windowEventHandlers[e] != "undefined") {
+    if (typeof windowEventHandlers[e] !== 'undefined') {
         windowEventHandlers[e].unsubscribe(handler);
     } else {
         m_window_removeEventListener.call(window, evt, handler, capture);
     }
 };
 
-function createEvent(type, data) {
+function createEvent (type, data) {
     var event = document.createEvent('Events');
     event.initEvent(type, false, false);
     if (data) {
@@ -96,28 +94,31 @@
     return event;
 }
 
-
+/* eslint-disable no-undef */
 var cordova = {
-    platformVersion:PLATFORM_VERSION_BUILD_LABEL,
-    version:PLATFORM_VERSION_BUILD_LABEL,
+    platformVersion: PLATFORM_VERSION_BUILD_LABEL,
+    version: PLATFORM_VERSION_BUILD_LABEL,
     require: require,
-    platformId:platform.id,
+    platformId: platform.id,
+
+    /* eslint-enable no-undef */
+
     /**
      * Methods to add/remove your own addEventListener hijacking on document + window.
      */
-    addWindowEventHandler:function(event) {
+    addWindowEventHandler: function (event) {
         return (windowEventHandlers[event] = channel.create(event));
     },
-    addStickyDocumentEventHandler:function(event) {
+    addStickyDocumentEventHandler: function (event) {
         return (documentEventHandlers[event] = channel.createSticky(event));
     },
-    addDocumentEventHandler:function(event) {
+    addDocumentEventHandler: function (event) {
         return (documentEventHandlers[event] = channel.create(event));
     },
-    removeWindowEventHandler:function(event) {
+    removeWindowEventHandler: function (event) {
         delete windowEventHandlers[event];
     },
-    removeDocumentEventHandler:function(event) {
+    removeDocumentEventHandler: function (event) {
         delete documentEventHandlers[event];
     },
     /**
@@ -125,24 +126,23 @@
      *
      * @return object
      */
-    getOriginalHandlers: function() {
+    getOriginalHandlers: function () {
         return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener},
-        'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}};
+            'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}};
     },
     /**
      * Method to fire event from native code
      * bNoDetach is required for events which cause an exception which needs to be caught in native code
      */
-    fireDocumentEvent: function(type, data, bNoDetach) {
+    fireDocumentEvent: function (type, data, bNoDetach) {
         var evt = createEvent(type, data);
-        if (typeof documentEventHandlers[type] != 'undefined') {
-            if( bNoDetach ) {
+        if (typeof documentEventHandlers[type] !== 'undefined') {
+            if (bNoDetach) {
                 documentEventHandlers[type].fire(evt);
-            }
-            else {
-                setTimeout(function() {
+            } else {
+                setTimeout(function () {
                     // Fire deviceready on listeners that were registered before cordova.js was loaded.
-                    if (type == 'deviceready') {
+                    if (type === 'deviceready') {
                         document.dispatchEvent(evt);
                     }
                     documentEventHandlers[type].fire(evt);
@@ -152,10 +152,10 @@
             document.dispatchEvent(evt);
         }
     },
-    fireWindowEvent: function(type, data) {
-        var evt = createEvent(type,data);
-        if (typeof windowEventHandlers[type] != 'undefined') {
-            setTimeout(function() {
+    fireWindowEvent: function (type, data) {
+        var evt = createEvent(type, data);
+        if (typeof windowEventHandlers[type] !== 'undefined') {
+            setTimeout(function () {
                 windowEventHandlers[type].fire(evt);
             }, 0);
         } else {
@@ -169,7 +169,7 @@
     // Randomize the starting callbackId to avoid collisions after refreshing or navigating.
     // This way, it's very unlikely that any new callback would get the same callbackId as an old callback.
     callbackId: Math.floor(Math.random() * 2000000000),
-    callbacks:  {},
+    callbacks: {},
     callbackStatus: {
         NO_RESULT: 0,
         OK: 1,
@@ -185,13 +185,13 @@
     /**
      * Called by native code when returning successful result from an action.
      */
-    callbackSuccess: function(callbackId, args) {
+    callbackSuccess: function (callbackId, args) {
         this.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback);
     },
     /**
      * Called by native code when returning error result from an action.
      */
-    callbackError: function(callbackId, args) {
+    callbackError: function (callbackId, args) {
         // TODO: Deprecate callbackSuccess and callbackError in favour of callbackFromNative.
         // Derive success from status.
         this.callbackFromNative(callbackId, false, args.status, [args.message], args.keepCallback);
@@ -199,11 +199,11 @@
     /**
      * Called by native code when returning the result from an action.
      */
-    callbackFromNative: function(callbackId, isSuccess, status, args, keepCallback) {
+    callbackFromNative: function (callbackId, isSuccess, status, args, keepCallback) {
         try {
             var callback = cordova.callbacks[callbackId];
             if (callback) {
-                if (isSuccess && status == cordova.callbackStatus.OK) {
+                if (isSuccess && status === cordova.callbackStatus.OK) {
                     callback.success && callback.success.apply(null, args);
                 } else if (!isSuccess) {
                     callback.fail && callback.fail.apply(null, args);
@@ -221,20 +221,19 @@
                     delete cordova.callbacks[callbackId];
                 }
             }
-        }
-        catch(err) {
-            var msg = "Error in " + (isSuccess ? "Success" : "Error") + " callbackId: " + callbackId + " : " + err;
+        } catch (err) {
+            var msg = 'Error in ' + (isSuccess ? 'Success' : 'Error') + ' callbackId: ' + callbackId + ' : ' + err;
             console && console.log && console.log(msg);
-            this.fireWindowEvent("cordovacallbackerror", { 'message': msg });
+            this.fireWindowEvent('cordovacallbackerror', { 'message': msg });
             throw err;
         }
     },
-    addConstructor: function(func) {
-        channel.onCordovaReady.subscribe(function() {
+    addConstructor: function (func) {
+        channel.onCordovaReady.subscribe(function () {
             try {
                 func();
-            } catch(e) {
-                console.log("Failed to run constructor: " + e);
+            } catch (e) {
+                console.log('Failed to run constructor: ' + e);
             }
         });
     }
diff --git a/src/legacy-exec/test/exec.js b/src/legacy-exec/test/exec.js
index a5ea8e8..566d681 100644
--- a/src/legacy-exec/test/exec.js
+++ b/src/legacy-exec/test/exec.js
@@ -19,4 +19,4 @@
  *
 */
 
-module.exports = jasmine.createSpy();
+module.exports = jasmine.createSpy(); // eslint-disable-line no-undef
diff --git a/src/legacy-exec/test/platform.js b/src/legacy-exec/test/platform.js
index b0ff2d7..08bb635 100644
--- a/src/legacy-exec/test/platform.js
+++ b/src/legacy-exec/test/platform.js
@@ -21,10 +21,10 @@
 
 module.exports = {
     id: 'test platform',
-    bootstrap: function() {
+    bootstrap: function () {
         var propertyreplacer = require('cordova/test/propertyreplacer');
 
-        require('cordova/builder').replaceHookForTesting = function(obj, key) {
+        require('cordova/builder').replaceHookForTesting = function (obj, key) {
             // This doesn't clean up non-clobbering assignments, nor does it work for
             // getters. It does work to un-clobber clobbered / merged symbols, which
             // is generally good enough for tests.
diff --git a/src/legacy-exec/test/test/mockxhr.js b/src/legacy-exec/test/test/mockxhr.js
index 871811d..c016523 100644
--- a/src/legacy-exec/test/test/mockxhr.js
+++ b/src/legacy-exec/test/test/mockxhr.js
@@ -19,14 +19,14 @@
  *
 */
 
-/*jshint -W020 */
+/* jshint -W020 */
 
 var utils = require('cordova/utils');
 var activeXhrs = [];
 var isInstalled = false;
 var origXhr = this.XMLHttpRequest;
 
-function MockXhr() {
+function MockXhr () {
     this.requestHeaders = {};
     this.readyState = 0;
 
@@ -36,7 +36,7 @@
     this.clearResponse_();
 }
 
-MockXhr.prototype.clearResponse_ = function() {
+MockXhr.prototype.clearResponse_ = function () {
     this.url = null;
     this.method = null;
     this.async = null;
@@ -47,12 +47,12 @@
     this.responseHeaders = {};
 };
 
-MockXhr.prototype.setReadyState_ = function(value) {
+MockXhr.prototype.setReadyState_ = function (value) {
     this.readyState = value;
     this.onreadystatechange && this.onreadystatechange();
 };
 
-MockXhr.prototype.open = function(method, url, async) {
+MockXhr.prototype.open = function (method, url, async) {
     if (this.readyState !== 0 && this.readyState !== 4) {
         throw Error('Tried to open MockXhr while request in progress.');
     }
@@ -63,15 +63,15 @@
     this.setReadyState_(1);
 };
 
-MockXhr.prototype.setRequestHeader = function(key, val) {
-    if (this.readyState != 1) {
+MockXhr.prototype.setRequestHeader = function (key, val) {
+    if (this.readyState !== 1) {
         throw Error('Tried to setRequestHeader() without call to open()');
     }
     this.requestHeaders[key] = String(val);
 };
 
-MockXhr.prototype.send = function(payload) {
-    if (this.readyState != 1) {
+MockXhr.prototype.send = function (payload) {
+    if (this.readyState !== 1) {
         throw Error('Tried to send MockXhr without call to open().');
     }
     this.requestPayload = payload;
@@ -80,21 +80,21 @@
     activeXhrs.push(this);
 };
 
-MockXhr.prototype.simulateResponse = function(statusCode, responseText, responseHeaders) {
-    if (this.readyState != 2) {
+MockXhr.prototype.simulateResponse = function (statusCode, responseText, responseHeaders) {
+    if (this.readyState !== 2) {
         throw Error('Call to simulateResponse() when MockXhr is in state ' + this.readyState);
     }
     for (var i = this.readyState; i <= 4; i++) {
-        if (i == 2) {
+        if (i === 2) {
             this.statusCode = statusCode;
             this.responseHeaders = responseHeaders || this.responseHeaders;
         }
-        if (i == 4) {
+        if (i === 4) {
             this.responseText = responseText;
         }
         this.setReadyState_(i);
     }
-    if (statusCode == 200) {
+    if (statusCode === 200) {
         this.onload && this.onload();
     } else {
         this.onerror && this.onerror();
@@ -102,17 +102,17 @@
     utils.arrayRemove(activeXhrs, this);
 };
 
-function install() {
+function install () {
     if (isInstalled) {
         throw Error('mockxhr.install called without uninstall.');
     }
     isInstalled = true;
     activeXhrs.length = 0;
-    XMLHttpRequest = MockXhr;
+    XMLHttpRequest = MockXhr; // eslint-disable-line no-undef
 }
 
-function uninstall() {
-    XMLHttpRequest = origXhr;
+function uninstall () {
+    XMLHttpRequest = origXhr; // eslint-disable-line no-undef
     isInstalled = false;
 }
 
diff --git a/src/legacy-exec/test/test/modulereplacer.js b/src/legacy-exec/test/test/modulereplacer.js
index f9f1c0c..cc3abd7 100644
--- a/src/legacy-exec/test/test/modulereplacer.js
+++ b/src/legacy-exec/test/test/modulereplacer.js
@@ -19,15 +19,14 @@
  *
 */
 
-/*global spyOn:false */
-
+/* eslint-disable no-undef */
 var propertyreplacer = require('cordova/test/propertyreplacer');
 
-exports.replace = function(moduleName, newValue) {
+exports.replace = function (moduleName, newValue) {
     propertyreplacer.stub(define.moduleMap, moduleName, null);
     define.remove(moduleName);
-    define(moduleName, function(require, exports, module) {
+    define(moduleName, function (require, exports, module) {
         module.exports = newValue;
     });
 };
-
+/* eslint-enable no-undef */
diff --git a/src/legacy-exec/test/test/propertyreplacer.js b/src/legacy-exec/test/test/propertyreplacer.js
index 18c5d3b..57f7c34 100644
--- a/src/legacy-exec/test/test/propertyreplacer.js
+++ b/src/legacy-exec/test/test/propertyreplacer.js
@@ -19,23 +19,22 @@
  *
 */
 
-
 // Use this helper module to stub out properties within Jasmine tests.
 // Original values will be restored after each test.
 
 var curStubs = null;
 
-function removeAllStubs() {
-    for (var i = curStubs.length - 1, stub; stub = curStubs[i]; --i) {
+function removeAllStubs () {
+    for (var i = curStubs.length - 1, stub; stub = curStubs[i]; --i) { // eslint-disable-line no-cond-assign
         stub.obj[stub.key] = stub.value;
     }
     curStubs = null;
 }
 
-exports.stub = function(obj, key, value) {
+exports.stub = function (obj, key, value) {
     if (!curStubs) {
         curStubs = [];
-        jasmine.getEnv().currentSpec.after(removeAllStubs);
+        jasmine.getEnv().currentSpec.after(removeAllStubs); // eslint-disable-line no-undef
     }
 
     curStubs.push({
@@ -45,4 +44,3 @@
     });
     obj[key] = value;
 };
-
diff --git a/src/legacy-exec/test/test/testmodule.js b/src/legacy-exec/test/test/testmodule.js
index 80eaf94..4a238d4 100644
--- a/src/legacy-exec/test/test/testmodule.js
+++ b/src/legacy-exec/test/test/testmodule.js
@@ -20,7 +20,7 @@
 */
 
 module.exports = {
-    func: function() {},
+    func: function () {},
     num: 2,
     obj: { str: 'hello' },
     subObj: { str: 'testSubObj' }
diff --git a/src/scripts/require.js b/src/scripts/require.js
index 93d01c4..5c9bcd2 100644
--- a/src/scripts/require.js
+++ b/src/scripts/require.js
@@ -19,32 +19,30 @@
  *
 */
 
-/*jshint -W079 */
-/*jshint -W020 */
+/* jshint -W079 */
+/* jshint -W020 */
 
-var require,
-    define;
+var require;
+var define;
 
 (function () {
-    var modules = {},
+    var modules = {};
     // Stack of moduleIds currently being built.
-        requireStack = [],
+    var requireStack = [];
     // Map of module ID -> index into requireStack of modules currently being built.
-        inProgressModules = {},
-        SEPARATOR = ".";
+    var inProgressModules = {};
+    var SEPARATOR = '.';
 
-
-
-    function build(module) {
-        var factory = module.factory,
-            localRequire = function (id) {
-                var resultantId = id;
-                //Its a relative path, so lop off the last portion and add the id (minus "./")
-                if (id.charAt(0) === ".") {
-                    resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2);
-                }
-                return require(resultantId);
-            };
+    function build (module) {
+        var factory = module.factory;
+        var localRequire = function (id) {
+            var resultantId = id;
+            // Its a relative path, so lop off the last portion and add the id (minus "./")
+            if (id.charAt(0) === '.') {
+                resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2);
+            }
+            return require(resultantId);
+        };
         module.exports = {};
         delete module.factory;
         factory(localRequire, module.exports, module);
@@ -53,10 +51,10 @@
 
     require = function (id) {
         if (!modules[id]) {
-            throw "module " + id + " not found";
+            throw 'module ' + id + ' not found';
         } else if (id in inProgressModules) {
             var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;
-            throw "Cycle in require graph: " + cycle;
+            throw 'Cycle in require graph: ' + cycle;
         }
         if (modules[id].factory) {
             try {
@@ -73,7 +71,7 @@
 
     define = function (id, factory) {
         if (modules[id]) {
-            throw "module " + id + " already defined";
+            throw 'module ' + id + ' already defined';
         }
 
         modules[id] = {
@@ -89,8 +87,8 @@
     define.moduleMap = modules;
 })();
 
-//Export for use in node
-if (typeof module === "object" && typeof require === "function") {
+// Export for use in node
+if (typeof module === 'object' && typeof require === 'function') {
     module.exports.require = require;
     module.exports.define = define;
 }
diff --git a/test/.eslintrc.yml b/test/.eslintrc.yml
new file mode 100644
index 0000000..6afba65
--- /dev/null
+++ b/test/.eslintrc.yml
@@ -0,0 +1,2 @@
+env:
+    jasmine: true
\ No newline at end of file
diff --git a/test/android/test.exec.js b/test/android/test.exec.js
index a8e0b24..0f0cd9e 100644
--- a/test/android/test.exec.js
+++ b/test/android/test.exec.js
@@ -20,35 +20,36 @@
 */
 
 describe('android exec.processMessages', function () {
-    var cordova = require('cordova'),
-        exec = require('cordova/android/exec'),
-        nativeApiProvider = require('cordova/android/nativeapiprovider'),
-        origNativeApi = nativeApiProvider.get();
+    var cordova = require('cordova');
+    var exec = require('cordova/android/exec');
+    var nativeApiProvider = require('cordova/android/nativeapiprovider');
+    var origNativeApi = nativeApiProvider.get();
 
     var nativeApi = {
         exec: jasmine.createSpy('nativeApi.exec'),
-        retrieveJsMessages: jasmine.createSpy('nativeApi.retrieveJsMessages'),
+        retrieveJsMessages: jasmine.createSpy('nativeApi.retrieveJsMessages')
     };
 
-
-    beforeEach(function() {
+    beforeEach(function () {
         nativeApi.exec.reset();
         nativeApi.retrieveJsMessages.reset();
         // Avoid a log message warning about the lack of _nativeApi.
         exec.setJsToNativeBridgeMode(exec.jsToNativeModes.PROMPT);
         nativeApiProvider.set(nativeApi);
-        var origPrompt = typeof prompt == 'undefined' ? undefined : prompt;
-        prompt = function() { return 1234; };
+        /* eslint-disable no-undef */
+        var origPrompt = typeof prompt === 'undefined' ? undefined : prompt;
+        prompt = function () { return 1234; };
         exec.init();
         prompt = origPrompt;
+        /* eslint-enable no-undef */
     });
 
-    afterEach(function() {
+    afterEach(function () {
         nativeApiProvider.set(origNativeApi);
         cordova.callbacks = {};
     });
 
-    function createCallbackMessage(success, keepCallback, status, callbackId, encodedPayload) {
+    function createCallbackMessage (success, keepCallback, status, callbackId, encodedPayload) {
         var ret = '';
         ret += success ? 'S' : 'F';
         ret += keepCallback ? '1' : '0';
@@ -59,18 +60,18 @@
         return ret;
     }
 
-    describe('exec', function() {
-        it('should process messages in order even when called recursively', function() {
+    describe('exec', function () {
+        it('should process messages in order even when called recursively', function () {
             var firstCallbackId = null;
             var callCount = 0;
-            nativeApi.exec.andCallFake(function(secret, service, action, callbackId, argsJson) {
+            nativeApi.exec.andCallFake(function (secret, service, action, callbackId, argsJson) {
                 expect(secret).toBe(1234);
                 ++callCount;
-                if (callCount == 1) {
+                if (callCount === 1) {
                     firstCallbackId = callbackId;
                     return '';
                 }
-                if (callCount == 2) {
+                if (callCount === 2) {
                     return createCallbackMessage(true, false, 1, firstCallbackId, 't') +
                            createCallbackMessage(true, false, 1, callbackId, 'stwo');
                 }
@@ -80,13 +81,13 @@
             var win2Called = false;
             var winSpy3 = jasmine.createSpy('win3');
 
-            function win1(value) {
+            function win1 (value) {
                 expect(value).toBe(true);
                 exec(winSpy3, null, 'Service', 'action', []);
                 expect(win2Called).toBe(false, 'win1 should finish before win2 starts');
             }
 
-            function win2(value) {
+            function win2 (value) {
                 win2Called = true;
                 expect(value).toBe('two');
                 expect(winSpy3).not.toHaveBeenCalled();
@@ -94,13 +95,13 @@
 
             exec(win1, null, 'Service', 'action', []);
             exec(win2, null, 'Service', 'action', []);
-            waitsFor(function() { return winSpy3.wasCalled }, 200);
-            runs(function() {
+            waitsFor(function () { return winSpy3.wasCalled; }, 200);
+            runs(function () {
                 expect(winSpy3).toHaveBeenCalledWith('three');
             });
         });
-        it('should process messages asynchronously', function() {
-            nativeApi.exec.andCallFake(function(secret, service, action, callbackId, argsJson) {
+        it('should process messages asynchronously', function () {
+            nativeApi.exec.andCallFake(function (secret, service, action, callbackId, argsJson) {
                 expect(secret).toBe(1234);
                 return createCallbackMessage(true, false, 1, callbackId, 'stwo');
             });
@@ -109,138 +110,138 @@
 
             exec(winSpy, null, 'Service', 'action', []);
             expect(winSpy).not.toHaveBeenCalled();
-            waitsFor(function() { return winSpy.wasCalled }, 200);
+            waitsFor(function () { return winSpy.wasCalled; }, 200);
         });
     });
 
-    describe('processMessages', function() {
-        var origCallbackFromNative = cordova.callbackFromNative,
-            callbackSpy = jasmine.createSpy('callbackFromNative');
+    describe('processMessages', function () {
+        var origCallbackFromNative = cordova.callbackFromNative;
+        var callbackSpy = jasmine.createSpy('callbackFromNative');
 
-        beforeEach(function() {
+        beforeEach(function () {
             callbackSpy.reset();
             cordova.callbackFromNative = callbackSpy;
         });
 
-        afterEach(function() {
+        afterEach(function () {
             cordova.callbackFromNative = origCallbackFromNative;
         });
 
-        function performExecAndReturn(messages) {
+        function performExecAndReturn (messages) {
 
-            nativeApi.exec.andCallFake(function(secret, service, action, callbackId, argsJson) {
+            nativeApi.exec.andCallFake(function (secret, service, action, callbackId, argsJson) {
                 return messages;
             });
 
             exec(null, null, 'Service', 'action', []);
             // note: sometimes we need to wait for multiple callbacks, this returns after one
             // see 'should handle multiple messages' below
-            waitsFor(function() { return callbackSpy.wasCalled }, 200);
+            waitsFor(function () { return callbackSpy.wasCalled; }, 200);
         }
 
-        it('should handle payloads of false', function() {
+        it('should handle payloads of false', function () {
             var messages = createCallbackMessage(true, true, 1, 'id', 'f');
             performExecAndReturn(messages);
-            runs(function() {
+            runs(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, [false], true);
             });
         });
-        it('should handle payloads of true', function() {
+        it('should handle payloads of true', function () {
             var messages = createCallbackMessage(true, true, 1, 'id', 't');
             performExecAndReturn(messages);
-            runs(function() {
+            runs(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, [true], true);
             });
         });
-        it('should handle payloads of null', function() {
+        it('should handle payloads of null', function () {
             var messages = createCallbackMessage(true, true, 1, 'id', 'N');
             performExecAndReturn(messages);
-            runs(function() {
+            runs(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, [null], true);
             });
         });
-        it('should handle payloads of numbers', function() {
+        it('should handle payloads of numbers', function () {
             var messages = createCallbackMessage(true, true, 1, 'id', 'n-3.3');
             performExecAndReturn(messages);
-            runs(function() {
+            runs(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, [-3.3], true);
             });
         });
-        it('should handle payloads of strings', function() {
+        it('should handle payloads of strings', function () {
             var messages = createCallbackMessage(true, true, 1, 'id', 'sHello world');
             performExecAndReturn(messages);
-            runs(function() {
+            runs(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, ['Hello world'], true);
             });
         });
-        it('should handle payloads of JSON objects', function() {
+        it('should handle payloads of JSON objects', function () {
             var messages = createCallbackMessage(true, true, 1, 'id', '{"a":1}');
             performExecAndReturn(messages);
-            runs(function() {
-                expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, [{a:1}], true);
+            runs(function () {
+                expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, [{a: 1}], true);
             });
         });
-        it('should handle payloads of JSON arrays', function() {
+        it('should handle payloads of JSON arrays', function () {
             var messages = createCallbackMessage(true, true, 1, 'id', '[1]');
             performExecAndReturn(messages);
-            runs(function() {
+            runs(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, [[1]], true);
             });
         });
-        it('should handle other callback opts', function() {
+        it('should handle other callback opts', function () {
             var messages = createCallbackMessage(false, false, 3, 'id', 'sfoo');
             performExecAndReturn(messages);
-            runs(function() {
+            runs(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', false, 3, ['foo'], false);
             });
         });
-        it('should handle multiple messages', function() {
+        it('should handle multiple messages', function () {
             var message1 = createCallbackMessage(false, false, 3, 'id', 'sfoo');
             var message2 = createCallbackMessage(true, true, 1, 'id', 'f');
             var messages = message1 + message2;
             performExecAndReturn(messages);
 
             // need to wait for ALL the callbacks before we check our expects
-            waitsFor(function(){
+            waitsFor(function () {
                 return callbackSpy.calls.length > 1;
-            },200);
+            }, 200);
 
-            runs(function() {
+            runs(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', false, 3, ['foo'], false);
                 expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, [false], true);
             });
         });
-        it('should poll for more messages when hitting an *', function() {
+        it('should poll for more messages when hitting an *', function () {
             var message1 = createCallbackMessage(false, false, 3, 'id', 'sfoo');
             var message2 = createCallbackMessage(true, true, 1, 'id', 'f');
-            nativeApi.retrieveJsMessages.andCallFake(function() {
+            nativeApi.retrieveJsMessages.andCallFake(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', false, 3, ['foo'], false);
                 callbackSpy.reset();
                 return message2;
             });
             performExecAndReturn(message1 + '*');
-            waitsFor(function() { return nativeApi.retrieveJsMessages.wasCalled }, 500);
-            runs(function() {
+            waitsFor(function () { return nativeApi.retrieveJsMessages.wasCalled; }, 500);
+            runs(function () {
                 expect(callbackSpy).toHaveBeenCalledWith('id', true, 1, [false], true);
             });
         });
-        it('should call callbacks in order when one callback enqueues another.', function() {
+        it('should call callbacks in order when one callback enqueues another.', function () {
             var message1 = createCallbackMessage(false, false, 3, 'id', 'scall1');
             var message2 = createCallbackMessage(false, false, 3, 'id', 'scall2');
             var message3 = createCallbackMessage(false, false, 3, 'id', 'scall3');
 
-            callbackSpy.andCallFake(function() {
-                if (callbackSpy.calls.length == 1) {
+            callbackSpy.andCallFake(function () {
+                if (callbackSpy.calls.length === 1) {
                     performExecAndReturn(message3);
                 }
             });
             performExecAndReturn(message1 + message2);
             // need to wait for ALL the callbacks before we check our expects
-            waitsFor(function(){
+            waitsFor(function () {
                 return callbackSpy.calls.length > 2;
-            },200);
+            }, 200);
 
-            runs(function() {
+            runs(function () {
                 expect(callbackSpy.argsForCall.length).toEqual(3);
                 expect(callbackSpy.argsForCall[0]).toEqual(['id', false, 3, ['call1'], false]);
                 expect(callbackSpy.argsForCall[1]).toEqual(['id', false, 3, ['call2'], false]);
diff --git a/test/ios/test.exec.js b/test/ios/test.exec.js
index 8006277..ac18d86 100644
--- a/test/ios/test.exec.js
+++ b/test/ios/test.exec.js
@@ -19,31 +19,26 @@
  *
 */
 
-/*jshint jasmine:true*/
+/* jshint jasmine:true */
 
 describe('iOS exec', function () {
-    var SERVICE = 'TestService';
-    var ACTION = 'TestAction';
-    var VC_ADDR = '1234';
-
-    var cordova = require('cordova');
     var exec = require('cordova/ios/exec');
     var winSpy = jasmine.createSpy('win');
     var failSpy = jasmine.createSpy('fail');
     var origUserAgent = navigator.userAgent;
 
-    beforeEach(function() {
+    beforeEach(function () {
         winSpy.reset();
         failSpy.reset();
     });
 
-    afterEach(function() {
-        navigator.__defineGetter__('userAgent', function(){
+    afterEach(function () {
+        navigator.__defineGetter__('userAgent', function () {
             return origUserAgent;
         });
     });
 
-    function simulateNativeBehaviour(codes) {
+    function simulateNativeBehaviour (codes) { // eslint-disable-line no-unused-vars
         var execPayload = JSON.parse(exec.nativeFetchMessages());
         while (execPayload.length && codes.length) {
             var curPayload = execPayload.shift();
@@ -56,8 +51,8 @@
         expect(codes.length).toBe(0, 'Wrong number of results.');
     }
 
-    describe('exec', function() {
-        it('should return "" from nativeFetchMessages work when nothing is pending.', function() {
+    describe('exec', function () {
+        it('should return "" from nativeFetchMessages work when nothing is pending.', function () {
             var execPayload = exec.nativeFetchMessages();
             expect(execPayload).toBe('');
         });
diff --git a/test/test.argscheck.js b/test/test.argscheck.js
index 10a4175..441bd38 100644
--- a/test/test.argscheck.js
+++ b/test/test.argscheck.js
@@ -19,61 +19,61 @@
  *
 */
 
-describe('argscheck', function() {
+describe('argscheck', function () {
     var argscheck = require('cordova/argscheck');
 
-    function createTestFunc(allowNull) {
-        return function testFunc(num, obj, arr, str, date, func) {
+    function createTestFunc (allowNull) {
+        return function testFunc (num, obj, arr, str, date, func) {
             var spec = allowNull ? 'NOASDF*' : 'noasdf*';
             argscheck.checkArgs(spec, 'testFunc', arguments);
         };
     }
-    afterEach(function() {
-      argscheck.enableChecks = true;
+    afterEach(function () {
+        argscheck.enableChecks = true;
     });
 
-    it('should not throw when given valid args', function() {
+    it('should not throw when given valid args', function () {
         var testFunc = createTestFunc(false);
         testFunc(0, {}, [], '', new Date(), testFunc, 1);
     });
-    it('should not throw when given valid optional args', function() {
+    it('should not throw when given valid optional args', function () {
         var testFunc = createTestFunc(true);
         testFunc(0, {}, [], '', new Date(), testFunc, '');
     });
-    it('should not throw when given missing optional args', function() {
+    it('should not throw when given missing optional args', function () {
         var testFunc = createTestFunc(true);
         testFunc();
     });
-    it('should not throw when given null optional args', function() {
+    it('should not throw when given null optional args', function () {
         var testFunc = createTestFunc(true);
         testFunc(null, null, null, null, null, null, null);
     });
-    it('should throw when given invalid number', function() {
+    it('should throw when given invalid number', function () {
         var testFunc = createTestFunc(true);
-        expect(function() { testFunc('foo', null, null, null, null, null) }).toThrow('Wrong type for parameter "num" of testFunc: Expected Number, but got String.');
+        expect(function () { testFunc('foo', null, null, null, null, null); }).toThrow('Wrong type for parameter "num" of testFunc: Expected Number, but got String.');
     });
-    it('should throw when given invalid object', function() {
+    it('should throw when given invalid object', function () {
         var testFunc = createTestFunc(true);
         // Do not allow arrays for objects since we're usually dealing with JSON when expecting objects.
-        expect(function() { testFunc(null, [], null, null, null, null) }).toThrow('Wrong type for parameter "obj" of testFunc: Expected Object, but got Array.');
+        expect(function () { testFunc(null, [], null, null, null, null); }).toThrow('Wrong type for parameter "obj" of testFunc: Expected Object, but got Array.');
     });
-    it('should throw when given invalid array', function() {
+    it('should throw when given invalid array', function () {
         var testFunc = createTestFunc(true);
-        expect(function() { testFunc(null, null, {}, null, null, null) }).toThrow('Wrong type for parameter "arr" of testFunc: Expected Array, but got Object.');
+        expect(function () { testFunc(null, null, {}, null, null, null); }).toThrow('Wrong type for parameter "arr" of testFunc: Expected Array, but got Object.');
     });
-    it('should throw when given invalid string', function() {
+    it('should throw when given invalid string', function () {
         var testFunc = createTestFunc(true);
-        expect(function() { testFunc(null, null, null, 5, null, null) }).toThrow('Wrong type for parameter "str" of testFunc: Expected String, but got Number.');
+        expect(function () { testFunc(null, null, null, 5, null, null); }).toThrow('Wrong type for parameter "str" of testFunc: Expected String, but got Number.');
     });
-    it('should throw when given invalid date', function() {
+    it('should throw when given invalid date', function () {
         var testFunc = createTestFunc(true);
-        expect(function() { testFunc(null, null, null, null, 233, null) }).toThrow('Wrong type for parameter "date" of testFunc: Expected Date, but got Number.');
+        expect(function () { testFunc(null, null, null, null, 233, null); }).toThrow('Wrong type for parameter "date" of testFunc: Expected Date, but got Number.');
     });
-    it('should throw when given invalid function', function() {
+    it('should throw when given invalid function', function () {
         var testFunc = createTestFunc(true);
-        expect(function() { testFunc(null, null, null, null, null, new Date) }).toThrow('Wrong type for parameter "func" of testFunc: Expected Function, but got Date.');
+        expect(function () { testFunc(null, null, null, null, null, new Date()); }).toThrow('Wrong type for parameter "func" of testFunc: Expected Function, but got Date.');
     });
-    it('should not throw when checking is disabled', function() {
+    it('should not throw when checking is disabled', function () {
         var testFunc = createTestFunc(false);
         argscheck.enableChecks = false;
         testFunc();
diff --git a/test/test.base64.js b/test/test.base64.js
index 6248a36..317fe26 100644
--- a/test/test.base64.js
+++ b/test/test.base64.js
@@ -19,40 +19,41 @@
  *
 */
 
-describe("base64", function () {
+describe('base64', function () {
     var base64 = require('cordova/base64');
 
-    it("can base64 encode strings correctly", function () {
-        var arrayBuffer = new ArrayBuffer(6),
-            view = new Uint8Array(arrayBuffer);
+    it('can base64 encode strings correctly', function () {
+        var arrayBuffer = new ArrayBuffer(6);
+        var view = new Uint8Array(arrayBuffer);
         for (var i = 0; i < view.length; i++) {
             view[i] = i;
         }
-        expect(base64.fromArrayBuffer(arrayBuffer.slice(0,1))).toBe('AA==');
-        expect(base64.fromArrayBuffer(arrayBuffer.slice(0,2))).toBe('AAE=');
-        expect(base64.fromArrayBuffer(arrayBuffer.slice(0,3))).toBe('AAEC');
-        expect(base64.fromArrayBuffer(arrayBuffer.slice(0,4))).toBe('AAECAw==');
-        expect(base64.fromArrayBuffer(arrayBuffer.slice(0,5))).toBe('AAECAwQ=');
+        expect(base64.fromArrayBuffer(arrayBuffer.slice(0, 1))).toBe('AA==');
+        expect(base64.fromArrayBuffer(arrayBuffer.slice(0, 2))).toBe('AAE=');
+        expect(base64.fromArrayBuffer(arrayBuffer.slice(0, 3))).toBe('AAEC');
+        expect(base64.fromArrayBuffer(arrayBuffer.slice(0, 4))).toBe('AAECAw==');
+        expect(base64.fromArrayBuffer(arrayBuffer.slice(0, 5))).toBe('AAECAwQ=');
         expect(base64.fromArrayBuffer(arrayBuffer)).toBe('AAECAwQF');
     });
 
-    it("can base64 encode a binary string in an ArrayBuffer", function () {
-      var arrayBuffer = new ArrayBuffer(256),
-          view = new Uint8Array(arrayBuffer);
-          base64string = 'AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w=='
+    it('can base64 encode a binary string in an ArrayBuffer', function () {
+        var arrayBuffer = new ArrayBuffer(256);
+        var view = new Uint8Array(arrayBuffer);
+        /* eslint-disable no-undef */
+        base64string = 'AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==';
 
-      for (var i = 0; i < view.length; i++) {
-        view[i] = i;
-      }
+        for (var i = 0; i < view.length; i++) {
+            view[i] = i;
+        }
 
-      expect(base64.fromArrayBuffer(arrayBuffer)).toBe(base64string);
+        expect(base64.fromArrayBuffer(arrayBuffer)).toBe(base64string);
     });
 
-    it("can base64 encode an text string in an ArrayBuffer", function () {
-        var orig = 'Some Awesome Test This Is!'
-            , base64string = typeof btoa != 'undefined' ? btoa(orig) : new Buffer('Some Awesome Test This Is!', 'binary').toString('base64')
-            , arrayBuffer = new ArrayBuffer(orig.length)
-            , view = new Uint8Array(arrayBuffer);
+    it('can base64 encode an text string in an ArrayBuffer', function () {
+        var orig = 'Some Awesome Test This Is!';
+        var base64string = typeof btoa !== 'undefined' ? btoa(orig) : Buffer.from('Some Awesome Test This Is!', 'binary').toString('base64');
+        var arrayBuffer = new ArrayBuffer(orig.length);
+        var view = new Uint8Array(arrayBuffer);
 
         for (var i = 0; i < orig.length; i++) {
             view[i] = orig.charCodeAt(i);
@@ -61,13 +62,13 @@
         expect(base64.fromArrayBuffer(arrayBuffer)).toBe(base64string);
     });
 
-    it("can decode a base64-encoded text string into an ArrayBuffer", function () {
-        var orig = 'Some Awesome Test This Is!',
-            base64string = typeof btoa != 'undefined' ? btoa(orig) : new Buffer(orig, 'binary').toString('base64');
-
+    it('can decode a base64-encoded text string into an ArrayBuffer', function () {
+        var orig = 'Some Awesome Test This Is!';
+        var base64string = typeof btoa !== 'undefined' ? btoa(orig) : Buffer.from(orig, 'binary').toString('base64');
+        /* eslint-enable no-undef */
         var arrayBuffer = base64.toArrayBuffer(base64string);
 
-        var testString = "";
+        var testString = '';
         var view = new Uint8Array(arrayBuffer);
         for (var i = 0; i < view.byteLength; i++) {
             testString += String.fromCharCode(view[i]);
diff --git a/test/test.builder.js b/test/test.builder.js
index 19f4769..324e00d 100644
--- a/test/test.builder.js
+++ b/test/test.builder.js
@@ -19,48 +19,47 @@
  *
 */
 
-describe("builder", function () {
+describe('builder', function () {
 
     var builder = require('cordova/builder');
 
-    it("includes the module into the target", function () {
+    it('includes the module into the target', function () {
 
-        var target = {},
-            objects = {
-                foo: {
-                    path: "cordova/builder"
-                }
-            };
-
+        var target = {};
+        var objects = {
+            foo: {
+                path: 'cordova/builder'
+            }
+        };
 
         builder.buildIntoAndClobber(objects, target);
         expect(target.foo).toBeDefined();
-        expect(target.foo).toBe(require("cordova/builder"));
+        expect(target.foo).toBe(require('cordova/builder'));
     });
 
-    it("returns an empty object literal if no path", function () {
-        var target = {},
-            objects = {cat: {}};
+    it('returns an empty object literal if no path', function () {
+        var target = {};
+        var objects = {cat: {}};
 
         builder.buildIntoButDoNotClobber(objects, target);
 
         expect(target.cat).toBeDefined();
     });
 
-    it("builds out the children", function () {
+    it('builds out the children', function () {
 
-        var target = {},
-            objects = {
-               homer: {
-                   children: {
-                       bart: {},
-                       lisa: {},
-                       maggie: {
-                           path: "cordova/builder"
-                       }
-                   }
-               }
-            };
+        var target = {};
+        var objects = {
+            homer: {
+                children: {
+                    bart: {},
+                    lisa: {},
+                    maggie: {
+                        path: 'cordova/builder'
+                    }
+                }
+            }
+        };
 
         builder.buildIntoButDoNotClobber(objects, target);
 
diff --git a/test/test.channel.js b/test/test.channel.js
index dcd6700..c50fcf1 100644
--- a/test/test.channel.js
+++ b/test/test.channel.js
@@ -19,66 +19,66 @@
  *
 */
 
-describe("channel", function () {
-    var channel = require('cordova/channel'),
-        multiChannel,
-        stickyChannel;
+describe('channel', function () {
+    var channel = require('cordova/channel');
+    var multiChannel;
+    var stickyChannel;
 
-    function callCount(spy) {
+    function callCount (spy) {
         return spy.argsForCall.length;
     }
-    function expectCallCount(spy, count) {
+    function expectCallCount (spy, count) {
         expect(callCount(spy)).toEqual(count);
     }
-    beforeEach(function() {
+    beforeEach(function () {
         multiChannel = channel.create('multiChannel');
         stickyChannel = channel.createSticky('stickyChannel');
     });
 
-    describe("subscribe method", function() {
-        it("should throw an exception if no arguments are provided", function() {
-            expect(function() {
+    describe('subscribe method', function () {
+        it('should throw an exception if no arguments are provided', function () {
+            expect(function () {
                 multiChannel.subscribe();
             }).toThrow();
 
-            expect(function() {
+            expect(function () {
                 multiChannel.subscribe(null);
             }).toThrow();
 
-            expect(function() {
+            expect(function () {
                 multiChannel.subscribe(undefined);
             }).toThrow();
         });
-        it("should accept a function or an EventListener object implementing the handleEvent interface", function() {
-            expect(function() {
+        it('should accept a function or an EventListener object implementing the handleEvent interface', function () {
+            expect(function () {
                 multiChannel.subscribe(function () {});
             }).not.toThrow();
 
-            expect(function() {
+            expect(function () {
                 multiChannel.subscribe({handleEvent: function () {}});
             }).not.toThrow();
 
-            expect(function() {
-                multiChannel.subscribe({apply:function(){},call:function(){}});
+            expect(function () {
+                multiChannel.subscribe({apply: function () {}, call: function () {}});
             }).toThrow();
         });
-        it("should not change number of handlers if no function is provided", function() {
+        it('should not change number of handlers if no function is provided', function () {
             var initialLength = multiChannel.numHandlers;
 
             try {
                 multiChannel.subscribe();
-            } catch(e) {}
+            } catch (e) {}
 
             expect(multiChannel.numHandlers).toEqual(initialLength);
 
             try {
                 multiChannel.subscribe(null);
-            } catch(e) {}
+            } catch (e) {}
 
             expect(multiChannel.numHandlers).toEqual(initialLength);
         });
-        it("should not change number of handlers when subscribing same function multiple times", function() {
-            var handler = function(){};
+        it('should not change number of handlers when subscribing same function multiple times', function () {
+            var handler = function () {};
 
             multiChannel.subscribe(handler);
             multiChannel.subscribe(handler);
@@ -90,38 +90,38 @@
         });
     });
 
-    describe("unsubscribe method", function() {
-        it("should throw an exception if no arguments are provided", function() {
-            expect(function() {
+    describe('unsubscribe method', function () {
+        it('should throw an exception if no arguments are provided', function () {
+            expect(function () {
                 multiChannel.unsubscribe();
             }).toThrow();
 
-            expect(function() {
+            expect(function () {
                 multiChannel.unsubscribe(null);
             }).toThrow();
         });
-        it("should accept a function or an EventListener object implementing the handleEvent interface", function() {
-            expect(function() {
+        it('should accept a function or an EventListener object implementing the handleEvent interface', function () {
+            expect(function () {
                 multiChannel.unsubscribe(function () {});
             }).not.toThrow();
 
-            expect(function() {
+            expect(function () {
                 multiChannel.unsubscribe({handleEvent: function () {}});
             }).not.toThrow();
 
-            expect(function() {
-                multiChannel.unsubscribe({apply:function(){},call:function(){}});
+            expect(function () {
+                multiChannel.unsubscribe({apply: function () {}, call: function () {}});
             }).toThrow();
         });
-        it("should not decrement numHandlers if unsubscribing something that does not exist", function() {
-            multiChannel.subscribe(function() {});
-            multiChannel.unsubscribe(function() {});
+        it('should not decrement numHandlers if unsubscribing something that does not exist', function () {
+            multiChannel.subscribe(function () {});
+            multiChannel.unsubscribe(function () {});
             expect(multiChannel.numHandlers).toEqual(1);
         });
-        it("should change the handlers length appropriately", function() {
-            var firstHandler = function() {};
-            var secondHandler = function() {};
-            var thirdHandler = function() {};
+        it('should change the handlers length appropriately', function () {
+            var firstHandler = function () {};
+            var secondHandler = function () {};
+            var thirdHandler = function () {};
 
             multiChannel.subscribe(firstHandler);
             multiChannel.subscribe(secondHandler);
@@ -136,8 +136,8 @@
 
             expect(multiChannel.numHandlers).toEqual(0);
         });
-        it("should not decrement handlers length more than once if unsubscribing a single handler", function() {
-            var firstHandler = function(){};
+        it('should not decrement handlers length more than once if unsubscribing a single handler', function () {
+            var firstHandler = function () {};
             multiChannel.subscribe(firstHandler);
 
             expect(multiChannel.numHandlers).toEqual(1);
@@ -149,9 +149,9 @@
 
             expect(multiChannel.numHandlers).toEqual(0);
         });
-        it("should not unregister a function registered with a different handler", function() {
-            var cHandler = function(){};
-            var c2Handler = function(){};
+        it('should not unregister a function registered with a different handler', function () {
+            var cHandler = function () {};
+            var c2Handler = function () {};
             var c2 = channel.create('jables');
             multiChannel.subscribe(cHandler);
             c2.subscribe(c2Handler);
@@ -167,8 +167,8 @@
         });
     });
 
-    function commonFireTests(multi) {
-        it("should fire all subscribed handlers", function() {
+    function commonFireTests (multi) {
+        it('should fire all subscribed handlers', function () {
             var testChannel = multi ? multiChannel : stickyChannel;
             var handler = jasmine.createSpy();
             var anotherOne = jasmine.createSpy();
@@ -181,16 +181,16 @@
             expectCallCount(handler, 1);
             expectCallCount(anotherOne, 1);
         });
-        it("should pass params to handlers", function() {
+        it('should pass params to handlers', function () {
             var testChannel = multi ? multiChannel : stickyChannel;
             var handler = jasmine.createSpy();
 
             testChannel.subscribe(handler);
 
             testChannel.fire(1, 2, 3);
-            expect(handler.argsForCall[0]).toEqual({0:1, 1:2, 2:3});
+            expect(handler.argsForCall[0]).toEqual({0: 1, 1: 2, 2: 3});
         });
-        it("should not fire a handler that was unsubscribed", function() {
+        it('should not fire a handler that was unsubscribed', function () {
             var testChannel = multi ? multiChannel : stickyChannel;
             var handler = jasmine.createSpy();
             var anotherOne = jasmine.createSpy();
@@ -204,7 +204,7 @@
             expectCallCount(handler, 0);
             expectCallCount(anotherOne, 1);
         });
-        it("should not fire a handler more than once if it was subscribed more than once", function() {
+        it('should not fire a handler more than once if it was subscribed more than once', function () {
             var testChannel = multi ? multiChannel : stickyChannel;
             var handler = jasmine.createSpy();
 
@@ -216,7 +216,7 @@
 
             expectCallCount(handler, 1);
         });
-        it("handler should be called when subscribed, removed, and subscribed again", function() {
+        it('handler should be called when subscribed, removed, and subscribed again', function () {
             var testChannel = multi ? multiChannel : stickyChannel;
             var handler = jasmine.createSpy();
 
@@ -228,9 +228,9 @@
 
             expectCallCount(handler, 1);
         });
-        it("should not prevent a callback from firing when it is removed during firing.", function() {
+        it('should not prevent a callback from firing when it is removed during firing.', function () {
             var testChannel = multi ? multiChannel : stickyChannel;
-            var handler = jasmine.createSpy().andCallFake(function() { testChannel.unsubscribe(handler2); });
+            var handler = jasmine.createSpy().andCallFake(function () { testChannel.unsubscribe(handler2); });
             var handler2 = jasmine.createSpy();
             testChannel.subscribe(handler);
             testChannel.subscribe(handler2);
@@ -239,11 +239,11 @@
             expectCallCount(handler2, 1);
         });
     }
-    describe("fire method for sticky channels", function() {
+    describe('fire method for sticky channels', function () {
         commonFireTests(false);
-        it("should instantly trigger the callback if the event has already been fired", function () {
-            var before = jasmine.createSpy('before'),
-                after = jasmine.createSpy('after');
+        it('should instantly trigger the callback if the event has already been fired', function () {
+            var before = jasmine.createSpy('before');
+            var after = jasmine.createSpy('after');
 
             stickyChannel.subscribe(before);
             stickyChannel.fire(1, 2, 3);
@@ -251,18 +251,18 @@
 
             expectCallCount(before, 1);
             expectCallCount(after, 1);
-            expect(after.argsForCall[0]).toEqual({0:1, 1:2, 2:3});
+            expect(after.argsForCall[0]).toEqual({0: 1, 1: 2, 2: 3});
         });
-        it("should instantly trigger the callback if the event is currently being fired.", function () {
-            var handler1 = jasmine.createSpy().andCallFake(function() { stickyChannel.subscribe(handler2); }),
-                handler2 = jasmine.createSpy().andCallFake(function(arg1) { expect(arg1).toEqual('foo');});
+        it('should instantly trigger the callback if the event is currently being fired.', function () {
+            var handler1 = jasmine.createSpy().andCallFake(function () { stickyChannel.subscribe(handler2); });
+            var handler2 = jasmine.createSpy().andCallFake(function (arg1) { expect(arg1).toEqual('foo'); });
 
             stickyChannel.subscribe(handler1);
             stickyChannel.fire('foo');
 
             expectCallCount(handler2, 1);
         });
-        it("should unregister all handlers after being fired.", function() {
+        it('should unregister all handlers after being fired.', function () {
             var handler = jasmine.createSpy();
             stickyChannel.subscribe(handler);
             stickyChannel.fire();
@@ -270,11 +270,11 @@
             expectCallCount(handler, 1);
         });
     });
-    describe("fire method for multi channels", function() {
+    describe('fire method for multi channels', function () {
         commonFireTests(true);
-        it("should not trigger the callback if the event has already been fired", function () {
-            var before = jasmine.createSpy('before'),
-                after = jasmine.createSpy('after');
+        it('should not trigger the callback if the event has already been fired', function () {
+            var before = jasmine.createSpy('before');
+            var after = jasmine.createSpy('after');
 
             multiChannel.subscribe(before);
             multiChannel.fire();
@@ -283,9 +283,9 @@
             expectCallCount(before, 1);
             expectCallCount(after, 0);
         });
-        it("should not trigger the callback if the event is currently being fired.", function () {
-            var handler1 = jasmine.createSpy().andCallFake(function() { multiChannel.subscribe(handler2); }),
-                handler2 = jasmine.createSpy();
+        it('should not trigger the callback if the event is currently being fired.', function () {
+            var handler1 = jasmine.createSpy().andCallFake(function () { multiChannel.subscribe(handler2); });
+            var handler2 = jasmine.createSpy();
 
             multiChannel.subscribe(handler1);
             multiChannel.fire();
@@ -294,7 +294,7 @@
             expectCallCount(handler1, 2);
             expectCallCount(handler2, 1);
         });
-        it("should not unregister handlers after being fired.", function() {
+        it('should not unregister handlers after being fired.', function () {
             var handler = jasmine.createSpy();
             multiChannel.subscribe(handler);
             multiChannel.fire();
@@ -302,10 +302,10 @@
             expectCallCount(handler, 2);
         });
     });
-    describe("channel.join()", function() {
-        it("should be called when all functions start unfired", function() {
-            var handler = jasmine.createSpy(),
-                stickyChannel2 = channel.createSticky('stickyChannel');
+    describe('channel.join()', function () {
+        it('should be called when all functions start unfired', function () {
+            var handler = jasmine.createSpy();
+            var stickyChannel2 = channel.createSticky('stickyChannel');
             channel.join(handler, [stickyChannel, stickyChannel2]);
             expectCallCount(handler, 0);
             stickyChannel.fire();
@@ -313,41 +313,41 @@
             stickyChannel2.fire();
             expectCallCount(handler, 1);
         });
-        it("should be called when one functions start fired", function() {
-            var handler = jasmine.createSpy(),
-                stickyChannel2 = channel.createSticky('stickyChannel');
+        it('should be called when one functions start fired', function () {
+            var handler = jasmine.createSpy();
+            var stickyChannel2 = channel.createSticky('stickyChannel');
             stickyChannel.fire();
             channel.join(handler, [stickyChannel, stickyChannel2]);
             expectCallCount(handler, 0);
             stickyChannel2.fire();
             expectCallCount(handler, 1);
         });
-        it("should be called when all functions start fired", function() {
-            var handler = jasmine.createSpy(),
-                stickyChannel2 = channel.createSticky('stickyChannel');
+        it('should be called when all functions start fired', function () {
+            var handler = jasmine.createSpy();
+            var stickyChannel2 = channel.createSticky('stickyChannel');
             stickyChannel.fire();
             stickyChannel2.fire();
             channel.join(handler, [stickyChannel, stickyChannel2]);
             expectCallCount(handler, 1);
         });
-        it("should throw if a channel is not sticky", function() {
-            expect(function() {
-                channel.join(function(){}, [stickyChannel, multiChannel]);
+        it('should throw if a channel is not sticky', function () {
+            expect(function () {
+                channel.join(function () {}, [stickyChannel, multiChannel]);
             }).toThrow();
         });
     });
-    describe("onHasSubscribersChange", function() {
-        it("should be called only when the first subscriber is added and last subscriber is removed.", function() {
-            var handler = jasmine.createSpy().andCallFake(function() {
-                if (callCount(handler) == 1) {
+    describe('onHasSubscribersChange', function () {
+        it('should be called only when the first subscriber is added and last subscriber is removed.', function () {
+            var handler = jasmine.createSpy().andCallFake(function () {
+                if (callCount(handler) === 1) {
                     expect(this.numHandlers).toEqual(1);
                 } else {
                     expect(this.numHandlers).toEqual(0);
                 }
             });
             multiChannel.onHasSubscribersChange = handler;
-            function foo1() {}
-            function foo2() {}
+            function foo1 () {}
+            function foo2 () {}
             multiChannel.subscribe(foo1);
             multiChannel.subscribe(foo2);
             multiChannel.unsubscribe(foo1);
diff --git a/test/test.modulemapper.js b/test/test.modulemapper.js
index 2891099..8e6eb4c 100644
--- a/test/test.modulemapper.js
+++ b/test/test.modulemapper.js
@@ -18,33 +18,33 @@
  *
 */
 
-describe('modulemapper', function() {
-    var modulemapper = require('cordova/modulemapper'),
-        testmodule = require('cordova/test/testmodule'),
-        utils = require('cordova/utils');
+describe('modulemapper', function () {
+    var modulemapper = require('cordova/modulemapper');
+    var testmodule = require('cordova/test/testmodule');
+    var utils = require('cordova/utils');
     var context;
 
-    beforeEach(function() {
-        function TestClass() {}
-        TestClass.prototype.method1 = function() { return 'orig'; };
+    beforeEach(function () {
+        function TestClass () {}
+        TestClass.prototype.method1 = function () { return 'orig'; };
 
         context = {
-            func: function() {},
+            func: function () {},
             num: 1,
             obj: { str: 'hello', num: 8, subObj: {num: 9} },
             TestClass: TestClass
         };
-        utils.defineGetter(context, 'getme', function() { return 'getter' });
+        utils.defineGetter(context, 'getme', function () { return 'getter'; });
     });
 
-    afterEach(function() {
+    afterEach(function () {
         modulemapper.reset();
     });
 
-    it('should throw in module does not exist', function() {
-        expect(function() { modulemapper.clobbers('cordova/invalid', 'newProp'); }).toThrow();
+    it('should throw in module does not exist', function () {
+        expect(function () { modulemapper.clobbers('cordova/invalid', 'newProp'); }).toThrow();
     });
-    it('should properly set a new top-level property', function() {
+    it('should properly set a new top-level property', function () {
         modulemapper.clobbers('cordova/test/testmodule', 'newProp1');
         modulemapper.defaults('cordova/test/testmodule', 'newProp2');
         modulemapper.merges('cordova/test/testmodule', 'newProp3');
@@ -53,7 +53,7 @@
         expect(context.newProp2).toBe(testmodule);
         expect(context.newProp3).toBe(testmodule);
     });
-    it('should properly set a new non-top-level property', function() {
+    it('should properly set a new non-top-level property', function () {
         modulemapper.clobbers('cordova/test/testmodule', 'foo1.newProp');
         modulemapper.defaults('cordova/test/testmodule', 'foo2.newProp');
         modulemapper.merges('cordova/test/testmodule', 'foo3.newProp');
@@ -62,7 +62,7 @@
         expect(context.foo2.newProp).toBe(testmodule);
         expect(context.foo3.newProp).toBe(testmodule);
     });
-    it('should properly set a new non-top-level property #2', function() {
+    it('should properly set a new non-top-level property #2', function () {
         modulemapper.clobbers('cordova/test/testmodule', 'foo1.bar.newProp');
         modulemapper.defaults('cordova/test/testmodule', 'foo2.bar.newProp');
         modulemapper.merges('cordova/test/testmodule', 'foo3.bar.newProp');
@@ -71,7 +71,7 @@
         expect(context.foo2.bar.newProp).toBe(testmodule);
         expect(context.foo3.bar.newProp).toBe(testmodule);
     });
-    it('should properly set a non-new non-top-level property', function() {
+    it('should properly set a non-new non-top-level property', function () {
         modulemapper.clobbers('cordova/test/testmodule', 'obj.newProp1');
         modulemapper.defaults('cordova/test/testmodule', 'obj.newProp2');
         modulemapper.merges('cordova/test/testmodule', 'obj.newProp3');
@@ -80,7 +80,7 @@
         expect(context.obj.newProp2).toBe(testmodule);
         expect(context.obj.newProp3).toBe(testmodule);
     });
-    it('should clobber existing properties', function() {
+    it('should clobber existing properties', function () {
         modulemapper.clobbers('cordova/test/testmodule', 'num');
         modulemapper.clobbers('cordova/test/testmodule', 'obj.str');
         modulemapper.clobbers('cordova/test/testmodule', 'getme');
@@ -91,7 +91,7 @@
         expect(context.getme).toBe(testmodule);
         expect(context.TestClass).toBe(testmodule);
     });
-    it('should not clobber existing properties when using defaults', function() {
+    it('should not clobber existing properties when using defaults', function () {
         modulemapper.defaults('cordova/test/testmodule', 'num');
         modulemapper.defaults('cordova/test/testmodule', 'obj.str');
         modulemapper.defaults('cordova/test/testmodule', 'obj.getme');
@@ -102,17 +102,17 @@
         expect(context.getme).not.toBe(testmodule);
         expect(context.TestClass).not.toBe(testmodule);
     });
-    it('should throw when namespace is a non-object', function() {
-        expect(function() {
+    it('should throw when namespace is a non-object', function () {
+        expect(function () {
             modulemapper.merges('cordova/test/testmodule', 'num');
             modulemapper.mapModules(context);
         }).toThrow();
     });
-    it('should merge into objects', function() {
+    it('should merge into objects', function () {
         modulemapper.merges('cordova/test/testmodule', 'obj');
         modulemapper.mapModules(context);
         for (var k in testmodule) {
-            if (k != 'subObj') {
+            if (k !== 'subObj') {
                 expect(context.obj[k]).toBe(testmodule[k]);
             }
         }
@@ -120,20 +120,20 @@
         expect(context.obj.subObj.num).toBe(9);
         expect(context.obj.subObj.str).toBe(testmodule.subObj.str);
     });
-    it('should merge into constructor prototypes', function() {
+    it('should merge into constructor prototypes', function () {
         modulemapper.merges('cordova/test/testmodule', 'TestClass');
         modulemapper.mapModules(context);
         for (var k in testmodule) {
             expect(context.TestClass.prototype[k]).toBe(testmodule[k]);
         }
     });
-    it('should maintain order of calls', function() {
+    it('should maintain order of calls', function () {
         modulemapper.merges('cordova/test/testmodule', 'obj');
         modulemapper.clobbers('cordova/test/testmodule', 'obj');
         modulemapper.mapModules(context);
         expect(context.obj).toBe(testmodule);
     });
-    it('should maintain order of calls2', function() {
+    it('should maintain order of calls2', function () {
         modulemapper.merges('cordova/test/testmodule', 'obj.foo');
         modulemapper.clobbers('cordova/test/testmodule', 'obj');
         modulemapper.merges('cordova/test/testmodule', 'obj.obj');
@@ -143,33 +143,33 @@
         expect(context.obj).not.toBe(testmodule.obj);
         expect(context.obj.obj).toBe(testmodule.obj);
     });
-    it('should return undefined for getOriginalSymbol("unknown")', function() {
+    it('should return undefined for getOriginalSymbol("unknown")', function () {
         expect(modulemapper.getOriginalSymbol(context, 'blah')).toBeUndefined();
         modulemapper.mapModules(context);
         expect(modulemapper.getOriginalSymbol(context, 'obj.foo.bar')).toBeUndefined('obj.foo.bar');
     });
-    it('should remember original symbols when clobbering', function() {
+    it('should remember original symbols when clobbering', function () {
         var orig = context.obj;
         modulemapper.clobbers('cordova/test/testmodule', 'obj');
         modulemapper.mapModules(context);
         expect(modulemapper.getOriginalSymbol(context, 'obj')).toBe(orig);
     });
-    it('should remember original symbols when double clobbering', function() {
+    it('should remember original symbols when double clobbering', function () {
         var orig = context.obj;
         modulemapper.clobbers('cordova/test/testmodule', 'obj');
         modulemapper.clobbers('cordova/test/testmodule', 'obj');
         modulemapper.mapModules(context);
         expect(modulemapper.getOriginalSymbol(context, 'obj')).toBe(orig);
     });
-    it('should return original symbols when symbol was not clobbered', function() {
+    it('should return original symbols when symbol was not clobbered', function () {
         modulemapper.mapModules(context);
         expect(modulemapper.getOriginalSymbol(context, 'obj')).toBe(context.obj);
         expect(modulemapper.getOriginalSymbol(context, 'obj.str')).toBe(context.obj.str);
     });
-    it('should log about deprecated property access', function() {
+    it('should log about deprecated property access', function () {
         var origConsoleLog = console.log;
         console.log = jasmine.createSpy('console.log');
-        this.after(function() {
+        this.after(function () {
             console.log = origConsoleLog;
         });
         modulemapper.clobbers('cordova/test/testmodule', 'obj', 'Use foo instead');
@@ -183,4 +183,3 @@
         expect(console.log.callCount).toBe(2);
     });
 });
-
diff --git a/test/test.pluginloader.js b/test/test.pluginloader.js
index bb36f13..283f3b2 100644
--- a/test/test.pluginloader.js
+++ b/test/test.pluginloader.js
@@ -19,13 +19,13 @@
  *
 */
 
-describe('pluginloader', function() {
+describe('pluginloader', function () {
     var pluginloader = require('cordova/pluginloader');
     var injectScript;
     var cdvScript;
     var done;
     var success;
-    beforeEach(function() {
+    beforeEach(function () {
         injectScript = spyOn(pluginloader, 'injectScript');
         var el = document.createElement('script');
         el.setAttribute('type', 'foo');
@@ -35,28 +35,31 @@
         done = false;
         success = false;
     });
-    afterEach(function() {
+    afterEach(function () {
         if (cdvScript) {
             cdvScript.parentNode.removeChild(cdvScript);
             cdvScript = null;
         }
+        /* eslint-disable no-undef */
         define.remove('cordova/plugin_list');
         define.remove('some.id');
+        /* eslint-enable no-undef */
     });
 
-    function setDone() {
+    function setDone () {
         done = true;
     }
 
-    it('should inject cordova_plugins.js when it is not already there', function() {
-        injectScript.andCallFake(function(url, onload, onerror) {
+    it('should inject cordova_plugins.js when it is not already there', function () {
+        injectScript.andCallFake(function (url, onload, onerror) {
             // jsdom deficiencies:
-            if (typeof location != 'undefined') {
-                expect(url).toBe(window.location.href.replace(/\/[^\/]*?$/, '/foo/cordova_plugins.js'));
+            if (typeof location !== 'undefined') {
+                expect(url).toBe(window.location.href.replace(/\/[^\/]*?$/, '/foo/cordova_plugins.js')); // eslint-disable-line no-useless-escape
             } else {
                 expect(url).toBe('foo/cordova_plugins.js');
             }
-            define('cordova/plugin_list', function(require, exports, module) {
+            /* eslint-disable no-undef */
+            define('cordova/plugin_list', function (require, exports, module) {
                 module.exports = [];
             });
             success = true;
@@ -64,59 +67,59 @@
         });
 
         pluginloader.load(setDone);
-        waitsFor(function() { return done });
-        runs(function() {
+        waitsFor(function () { return done; });
+        runs(function () {
             expect(success).toBe(true);
         });
     });
 
-    it('should not inject cordova_plugins.js when it is already there', function() {
-        define('cordova/plugin_list', function(require, exports, module) {
+    it('should not inject cordova_plugins.js when it is already there', function () {
+        define('cordova/plugin_list', function (require, exports, module) {
             module.exports = [];
         });
         pluginloader.load(setDone);
-        waitsFor(function() { return done });
-        runs(function() {
+        waitsFor(function () { return done; });
+        runs(function () {
             expect(injectScript).not.toHaveBeenCalled();
         });
     });
-
-    it('should inject plugin scripts when they are not already there', function() {
-        define('cordova/plugin_list', function(require, exports, module) {
+    it('should inject plugin scripts when they are not already there', function () {
+        define('cordova/plugin_list', function (require, exports, module) {
             module.exports = [
-                { "file": "some/path.js", "id": "some.id" }
+                { 'file': 'some/path.js', 'id': 'some.id' }
             ];
         });
-        injectScript.andCallFake(function(url, onload, onerror) {
+        injectScript.andCallFake(function (url, onload, onerror) {
             // jsdom deficiencies:
-            if (typeof location != 'undefined') {
-                expect(url).toBe(window.location.href.replace(/\/[^\/]*?$/, '/foo/some/path.js'));
+            if (typeof location !== 'undefined') {
+                expect(url).toBe(window.location.href.replace(/\/[^\/]*?$/, '/foo/some/path.js')); // eslint-disable-line no-useless-escape
             } else {
                 expect(url).toBe('foo/some/path.js');
             }
-            define('some.id', function(require, exports, module) {
+            define('some.id', function (require, exports, module) {
             });
             success = true;
             onload();
         });
         pluginloader.load(setDone);
-        waitsFor(function() { return done });
-        runs(function() {
+        waitsFor(function () { return done; });
+        runs(function () {
             expect(success).toBe(true);
         });
     });
 
-    it('should not inject plugin scripts when they are already there', function() {
-        define('cordova/plugin_list', function(require, exports, module) {
+    it('should not inject plugin scripts when they are already there', function () {
+        define('cordova/plugin_list', function (require, exports, module) {
             module.exports = [
-                { "file": "some/path.js", "id": "some.id" }
+                { 'file': 'some/path.js', 'id': 'some.id' }
             ];
         });
-        define('some.id', function(require, exports, module) {
+        define('some.id', function (require, exports, module) {
         });
+        /* eslint-enable no-undef */
         pluginloader.load(setDone);
-        waitsFor(function() { return done });
-        runs(function() {
+        waitsFor(function () { return done; });
+        runs(function () {
             expect(injectScript).not.toHaveBeenCalled();
         });
     });
diff --git a/test/test.require.js b/test/test.require.js
index ec40a24..7bde4a4 100644
--- a/test/test.require.js
+++ b/test/test.require.js
@@ -18,142 +18,142 @@
  * under the License.
  *
 */
-
-describe("require + define", function () {
-    it("exists off of cordova", function () {
+/* eslint-disable no-undef */
+describe('require + define', function () {
+    it('exists off of cordova', function () {
         var cordova = require('cordova');
         expect(cordova.require).toBeDefined();
         expect(cordova.define).toBeDefined();
     });
 
-    describe("when defining", function () {
-        it("can define and remove module", function () {
-            define("a", jasmine.createSpy());
-            define.remove("a");
+    describe('when defining', function () {
+        it('can define and remove module', function () {
+            define('a', jasmine.createSpy());
+            define.remove('a');
         });
 
         it("can remove a module that doesn't exist", function () {
             define.remove("can't touch this");
         });
 
-        it("throws an error the module already exists", function () {
+        it('throws an error the module already exists', function () {
             expect(function () {
-                define("cordova", function () {});
-            }).toThrow("module cordova already defined");
+                define('cordova', function () {});
+            }).toThrow('module cordova already defined');
         });
 
         it("doesn't call the factory method when defining", function () {
             var factory = jasmine.createSpy();
-            define("ff", factory);
+            define('ff', factory);
             expect(factory).not.toHaveBeenCalled();
         });
     });
 
-    describe("when requiring", function () {
+    describe('when requiring', function () {
         it("throws an exception when module doesn't exist", function () {
             expect(function () {
-                require("your mom");
-            }).toThrow("module your mom not found");
+                require('your mom');
+            }).toThrow('module your mom not found');
         });
 
-        it("throws an exception when modules depend on each other", function () {
-            define("ModuleA", function(require, exports, module) {
-                require("ModuleB");
+        it('throws an exception when modules depend on each other', function () {
+            define('ModuleA', function (require, exports, module) {
+                require('ModuleB');
             });
-            define("ModuleB", function(require, exports, module) {
-                require("ModuleA");
+            define('ModuleB', function (require, exports, module) {
+                require('ModuleA');
             });
             expect(function () {
-                require("ModuleA");
-            }).toThrow("Cycle in require graph: ModuleA->ModuleB->ModuleA");
-            define.remove("ModuleA");
-            define.remove("ModuleB");
+                require('ModuleA');
+            }).toThrow('Cycle in require graph: ModuleA->ModuleB->ModuleA');
+            define.remove('ModuleA');
+            define.remove('ModuleB');
         });
 
-        it("throws an exception when a cycle of requires occurs", function () {
-            define("ModuleA", function(require, exports, module) {
-                require("ModuleB");
+        it('throws an exception when a cycle of requires occurs', function () {
+            define('ModuleA', function (require, exports, module) {
+                require('ModuleB');
             });
-            define("ModuleB", function(require, exports, module) {
-                require("ModuleC");
+            define('ModuleB', function (require, exports, module) {
+                require('ModuleC');
             });
-            define("ModuleC", function(require, exports, module) {
-                require("ModuleA");
+            define('ModuleC', function (require, exports, module) {
+                require('ModuleA');
             });
             expect(function () {
-                require("ModuleA");
-            }).toThrow("Cycle in require graph: ModuleA->ModuleB->ModuleC->ModuleA");
-            define.remove("ModuleA");
-            define.remove("ModuleB");
-            define.remove("ModuleC");
+                require('ModuleA');
+            }).toThrow('Cycle in require graph: ModuleA->ModuleB->ModuleC->ModuleA');
+            define.remove('ModuleA');
+            define.remove('ModuleB');
+            define.remove('ModuleC');
         });
 
-        it("calls the factory method when requiring", function () {
+        it('calls the factory method when requiring', function () {
             var factory = jasmine.createSpy();
-            define("dino", factory);
-            require("dino");
+            define('dino', factory);
+            require('dino');
 
             expect(factory).toHaveBeenCalledWith(jasmine.any(Function),
                 {}, {
-                    id: "dino",
+                    id: 'dino',
                     exports: {}
                 });
 
-            define.remove("dino");
+            define.remove('dino');
         });
 
-        it("returns the exports object", function () {
-            define("a", function (require, exports, module) {
-                exports.stuff = "asdf";
+        it('returns the exports object', function () {
+            define('a', function (require, exports, module) {
+                exports.stuff = 'asdf';
             });
 
-            var v = require("a");
-            expect(v.stuff).toBe("asdf");
-            define.remove("a");
+            var v = require('a');
+            expect(v.stuff).toBe('asdf');
+            define.remove('a');
         });
 
-        it("can use both the exports and module.exports object", function () {
-            define("a", function (require, exports, module) {
-                exports.a = "a";
-                module.exports.b = "b";
+        it('can use both the exports and module.exports object', function () {
+            define('a', function (require, exports, module) {
+                exports.a = 'a';
+                module.exports.b = 'b';
             });
 
-            var v = require("a");
-            expect(v.a).toBe("a");
-            expect(v.b).toBe("b");
-            define.remove("a");
+            var v = require('a');
+            expect(v.a).toBe('a');
+            expect(v.b).toBe('b');
+            define.remove('a');
         });
 
-        it("returns was is assigned to module.exports", function () {
+        it('returns was is assigned to module.exports', function () {
             var Foo = function () { };
-            define("a", function (require, exports, module) {
+            define('a', function (require, exports, module) {
                 module.exports = new Foo();
             });
 
-            var v = require("a");
+            var v = require('a');
             expect(v instanceof Foo).toBe(true);
-            define.remove("a");
+            define.remove('a');
         });
 
-        it("has the id and exports values but not the factory on the module object", function () {
+        it('has the id and exports values but not the factory on the module object', function () {
             var factory = function (require, exports, module) {
-                expect(module.id).toBe("a");
+                expect(module.id).toBe('a');
                 expect(module.exports).toBeDefined();
                 expect(module.factory).not.toBeDefined();
             };
 
-            define("a", factory);
-            require("a");
+            define('a', factory);
+            require('a');
         });
 
         it("can handle multiple defined modules that use cordova's unique handling of relative require paths", function () {
-            define("plugin.ios.foo", function (require, exports, module) {
-                module.exports = require("./bar") * 2;
+            define('plugin.ios.foo', function (require, exports, module) {
+                module.exports = require('./bar') * 2;
             });
-            define("plugin.ios.bar", function (require, exports, module) {
+            define('plugin.ios.bar', function (require, exports, module) {
                 module.exports = 2;
             });
-            expect(require("plugin.ios.foo")).toEqual(4);
+            expect(require('plugin.ios.foo')).toEqual(4);
         });
     });
 });
diff --git a/test/test.urlutil.js b/test/test.urlutil.js
index a3142d0..4d18aab 100644
--- a/test/test.urlutil.js
+++ b/test/test.urlutil.js
@@ -21,7 +21,7 @@
 
 describe('urlutil', function () {
     var urlutil = require('cordova/urlutil');
-    if (typeof process != 'undefined') {
+    if (typeof process !== 'undefined') {
         // Tests don't work under jsdom.
         return;
     }
@@ -32,7 +32,7 @@
         expect(urlutil.makeAbsolute('http://www.foo.com/%20hi')).toBe('http://www.foo.com/%20hi');
     });
 
-    function testRootRelative(url) {
+    function testRootRelative (url) {
         var rootUrl = url.slice(0, 10) + url.slice(10).replace(/[?#].*/, '').replace(/\/.*/, '') + '/';
         expect(urlutil.makeAbsolute('/')).toBe(rootUrl);
         expect(urlutil.makeAbsolute('/foo?a#b')).toBe(rootUrl + 'foo?a#b');
@@ -43,7 +43,7 @@
     });
 
     it('can handle relative URLs', function () {
-        var rootUrl = window.location.href.replace(/[?#].*/, '').replace(/[^\/]*$/, '');
+        var rootUrl = window.location.href.replace(/[?#].*/, '').replace(/[^\/]*$/, ''); // eslint-disable-line no-useless-escape
         expect(urlutil.makeAbsolute('foo?a#b')).toBe(rootUrl + 'foo?a#b');
         expect(urlutil.makeAbsolute('foo/b%20ar')).toBe(rootUrl + 'foo/b%20ar');
     });
@@ -53,7 +53,7 @@
         var baseTag = document.createElement('base');
         baseTag.href = rootUrl;
         document.head.appendChild(baseTag);
-        this.after(function() {
+        this.after(function () {
             document.head.removeChild(baseTag);
         });
         expect(urlutil.makeAbsolute('foo?a#b')).toBe(rootUrl + 'foo?a#b');
diff --git a/test/test.utils.js b/test/test.utils.js
index 00f4da9..abf2a9b 100644
--- a/test/test.utils.js
+++ b/test/test.utils.js
@@ -19,158 +19,158 @@
  *
 */
 
-describe("utils", function () {
+describe('utils', function () {
     var utils = require('cordova/utils');
 
-    describe("utils.arrayIndexOf", function() {
-        it("should return -1 when not found", function() {
-            expect(utils.arrayIndexOf([1,2,3], 4)).toBe(-1);
+    describe('utils.arrayIndexOf', function () {
+        it('should return -1 when not found', function () {
+            expect(utils.arrayIndexOf([1, 2, 3], 4)).toBe(-1);
         });
-        it("should return 0 for first item", function() {
-            expect(utils.arrayIndexOf([1,2,3], 1)).toBe(0);
+        it('should return 0 for first item', function () {
+            expect(utils.arrayIndexOf([1, 2, 3], 1)).toBe(0);
         });
-        it("should return 2 for last item", function() {
-            expect(utils.arrayIndexOf([1,2,3], 3)).toBe(2);
+        it('should return 2 for last item', function () {
+            expect(utils.arrayIndexOf([1, 2, 3], 3)).toBe(2);
         });
-        it("should return index of first occurance", function() {
-            expect(utils.arrayIndexOf([1,2,1], 1)).toBe(0);
+        it('should return index of first occurance', function () {
+            expect(utils.arrayIndexOf([1, 2, 1], 1)).toBe(0);
         });
     });
 
-    describe("utils.arrayRemove", function() {
-        it("should return true when removed.", function() {
+    describe('utils.arrayRemove', function () {
+        it('should return true when removed.', function () {
             var a = [1, 2, 3];
             expect(utils.arrayRemove(a, 2)).toBe(true);
             expect(a).toEqual([1, 3]);
         });
-        it("should return false when item was not there.", function() {
+        it('should return false when item was not there.', function () {
             var a = [1, 2, 3];
             expect(utils.arrayRemove(a, 4)).toBe(false);
             expect(a).toEqual([1, 2, 3]);
         });
-        it("should remove only first occurance", function() {
+        it('should remove only first occurance', function () {
             var a = [1, 2, 1];
             expect(utils.arrayRemove(a, 1)).toBe(true);
             expect(a).toEqual([2, 1]);
         });
     });
 
-    describe("isArray",function() {
-        it("should return true for [].", function() {
+    describe('isArray', function () {
+        it('should return true for [].', function () {
             var isArray = utils.isArray([]);
             expect(isArray).toBe(true);
         });
-        it("should return true for new Array().", function() {
-            var isArray = utils.isArray(new Array());
+        it('should return true for new Array().', function () {
+            var isArray = utils.isArray(new Array()); // eslint-disable-line no-array-constructor
             expect(isArray).toBe(true);
         });
-        it("should return false for {}.", function() {
+        it('should return false for {}.', function () {
             var isArray = utils.isArray({});
             expect(isArray).toBe(false);
         });
     });
 
-    describe("isDate",function() {
-        it("should return true for new Date().", function() {
+    describe('isDate', function () {
+        it('should return true for new Date().', function () {
             var isDate = utils.isDate(new Date());
             expect(isDate).toBe(true);
         });
-        it("should return false for {}.", function() {
+        it('should return false for {}.', function () {
             var isDate = utils.isDate({});
             expect(isDate).toBe(false);
         });
     });
 
-    describe("when cloning", function () {
-        it("can clone an array", function () {
-            var orig = [1, 2, 3, {four: 4}, "5"];
+    describe('when cloning', function () {
+        it('can clone an array', function () {
+            var orig = [1, 2, 3, {four: 4}, '5'];
 
             expect(utils.clone(orig)).toEqual(orig);
             expect(utils.clone(orig)).not.toBe(orig);
         });
 
-        it("can clone null", function () {
+        it('can clone null', function () {
             expect(utils.clone(null)).toBeNull();
         });
 
-        it("can clone undefined", function () {
+        it('can clone undefined', function () {
             expect(utils.clone(undefined)).not.toBeDefined();
         });
 
-        it("can clone a function", function () {
+        it('can clone a function', function () {
             var f = function () { return 4; };
             expect(utils.clone(f)).toBe(f);
         });
 
-        it("can clone a number", function () {
+        it('can clone a number', function () {
             expect(utils.clone(4)).toBe(4);
         });
 
-        it("can clone a string", function () {
-            expect(utils.clone("why")).toBe("why");
+        it('can clone a string', function () {
+            expect(utils.clone('why')).toBe('why');
         });
 
-        it("can clone a date", function () {
+        it('can clone a date', function () {
             var d = Date.now();
             expect(utils.clone(d)).toBe(d);
         });
 
-        it("can clone an object", function () {
+        it('can clone an object', function () {
 
             var orig = {
                 a: {
                     b: {
-                        c: "d"
-                    },
+                        c: 'd'
+                    }
                 },
-                e: "f",
-                g: "unit"
-            },
-            expected = {
+                e: 'f',
+                g: 'unit'
+            };
+            var expected = {
                 a: {
                     b: {
-                        c: "d"
-                    },
+                        c: 'd'
+                    }
                 },
-                e: "f",
-                g: "unit"
+                e: 'f',
+                g: 'unit'
             };
 
             expect(utils.clone(orig)).toEqual(expected);
         });
     });
 
-    describe("when closing around a function", function () {
-        it("calls the original function when calling the closed function", function () {
+    describe('when closing around a function', function () {
+        it('calls the original function when calling the closed function', function () {
             var f = jasmine.createSpy();
             utils.close(null, f)();
             expect(f).toHaveBeenCalled();
         });
 
-        it("uses the correct context for the closed function", function () {
+        it('uses the correct context for the closed function', function () {
             var context = {};
             utils.close(context, function () {
                 expect(this).toBe(context);
             })();
         });
 
-        it("passes the arguments to the closed function", function () {
+        it('passes the arguments to the closed function', function () {
             utils.close(null, function (arg) {
                 expect(arg).toBe(1);
             })(1);
         });
 
-        it("overrides the arguments when provided", function () {
+        it('overrides the arguments when provided', function () {
             utils.close(null, function (arg) {
                 expect(arg).toBe(42);
             }, [42])(16);
         });
     });
 
-    it("can create a uuid", function () {
+    it('can create a uuid', function () {
         var uuid = utils.createUUID();
         expect(uuid).toMatch(/^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$/);
         expect(uuid).not.toEqual(utils.createUUID());
     });
-    
+
 });