CB-12895 : added eslint to repo
Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/c75e8059 Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/c75e8059 Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/c75e8059 Branch: refs/heads/master Commit: c75e8059114255d1dbae1ede398e6626708ee9f3 Parents: 74a4adc Author: Audrey So <[email protected]> Authored: Mon Sep 25 14:06:08 2017 -0700 Committer: Audrey So <[email protected]> Committed: Wed Sep 27 16:28:23 2017 -0700 ---------------------------------------------------------------------- .eslintignore | 1 + .eslintrc.yml | 10 ++ package.json | 10 +- src/common/argscheck.js | 21 ++- src/common/base64.js | 36 ++--- src/common/builder.js | 26 +-- src/common/channel.js | 152 +++++++++--------- src/common/exec/proxy.js | 13 +- src/common/init.js | 40 +++-- src/common/init_b.js | 39 +++-- src/common/modulemapper.js | 35 ++-- src/common/modulemapper_b.js | 33 ++-- src/common/pluginloader.js | 34 ++-- src/common/pluginloader_b.js | 9 +- src/common/urlutil.js | 4 +- src/common/utils.js | 61 ++++--- src/cordova.js | 104 ++++++------ src/cordova_b.js | 99 ++++++------ src/legacy-exec/test/exec.js | 2 +- src/legacy-exec/test/platform.js | 4 +- src/legacy-exec/test/test/mockxhr.js | 36 ++--- src/legacy-exec/test/test/modulereplacer.js | 9 +- src/legacy-exec/test/test/propertyreplacer.js | 10 +- src/legacy-exec/test/test/testmodule.js | 2 +- src/scripts/require.js | 48 +++--- test/.eslintrc.yml | 2 + test/android/test.exec.js | 125 +++++++-------- test/ios/test.exec.js | 19 +-- test/test.argscheck.js | 44 +++--- test/test.base64.js | 55 +++---- test/test.builder.js | 51 +++--- test/test.channel.js | 176 ++++++++++----------- test/test.modulemapper.js | 63 ++++---- test/test.pluginloader.js | 65 ++++---- test/test.require.js | 132 ++++++++-------- test/test.urlutil.js | 8 +- test/test.utils.js | 100 ++++++------ 37 files changed, 836 insertions(+), 842 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/.eslintignore ---------------------------------------------------------------------- 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 http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/.eslintrc.yml ---------------------------------------------------------------------- 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 http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/package.json ---------------------------------------------------------------------- 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", http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/argscheck.js ---------------------------------------------------------------------- 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 @@ var typeMap = { '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 @@ function checkArgs(spec, functionName, args, opt_callee) { 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; - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/base64.js ---------------------------------------------------------------------- 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 += '=='; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/builder.js ---------------------------------------------------------------------- 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 each(objects, func, context) { } } -function clobber(obj, key, value) { +function clobber (obj, key, value) { exports.replaceHookForTesting(obj, key); var needsProperty = false; try { @@ -39,15 +39,15 @@ function clobber(obj, key, value) { } // 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 assignOrWrapInDeprecateGetter(obj, key, value, message) { } } -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 @@ function include(parent, objects, clobber, merge) { 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 @@ function include(parent, objects, clobber, merge) { 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 @@ function include(parent, objects, clobber, merge) { * @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 @@ function recursiveMerge(target, src) { } } -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 () {}; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/channel.js ---------------------------------------------------------------------- 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 @@ var utils = require('cordova/utils'), * @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 @@ var Channel = function(type, sticky) { // 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: {}, + 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: {}, - /** - * 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 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(); - } + /** + * 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") { +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 @@ function checkSubscriptionArgument(argument) { * 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 @@ Channel.prototype.subscribe = function(eventListenerOrFunction, eventListener) { 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 @@ Channel.prototype.subscribe = function(eventListenerOrFunction, eventListener) { 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 @@ Channel.prototype.subscribe = function(eventListenerOrFunction, eventListener) { /** * 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 @@ Channel.prototype.unsubscribe = function(eventListenerOrFunction) { /** * 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 @@ Channel.prototype.fire = function(e) { 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 @@ Channel.prototype.fire = function(e) { } }; - // 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'); http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/exec/proxy.js ---------------------------------------------------------------------- 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 +}; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/init.js ---------------------------------------------------------------------- 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 utils = require('cordova/utils'); 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 @@ window.setTimeout(function() { // 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.navigator) { 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.onActivated = cordova.addDocumentEventHandler('activated'); 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 @@ platform.bootstrap && platform.bootstrap(); // 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 @@ setTimeout(function() { /** * 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 @@ channel.join(function() { // 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); - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/init_b.js ---------------------------------------------------------------------- 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 @@ var platformInitChannelsArray = [channel.onDOMContentLoaded, channel.onNativeRea // 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 @@ window.setTimeout(function() { // 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.navigator) { 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.onActivated = cordova.addDocumentEventHandler('activated'); 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 @@ platform.bootstrap && platform.bootstrap(); // 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 @@ setTimeout(function() { /** * 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 @@ channel.join(function() { // 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); http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/modulemapper.js ---------------------------------------------------------------------- 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 @@ function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) { } // 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 @@ exports.mapModules = function(context) { 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 @@ exports.mapModules = function(context) { 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.mapModules = function(context) { } }; -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.getOriginalSymbol = function(context, symbolPath) { }; exports.reset(); - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/modulemapper_b.js ---------------------------------------------------------------------- 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 @@ function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) { } // 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 @@ exports.mapModules = function(context) { 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 @@ exports.mapModules = function(context) { 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.mapModules = function(context) { } }; -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.getOriginalSymbol = function(context, symbolPath) { }; exports.reset(); - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/pluginloader.js ---------------------------------------------------------------------- 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 @@ exports.injectScript = function(url, onload, onerror) { 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 injectIfNecessary(id, url, onload, onerror) { } } -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 @@ function onScriptLoadingComplete(moduleList, finishPluginLoading) { // 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 @@ function handlePluginsObject(path, moduleList, finishPluginLoading) { finishPluginLoading(); return; } - function scriptLoadedCallback() { + function scriptLoadedCallback () { if (!--scriptCounter) { onScriptLoadingComplete(moduleList, finishPluginLoading); } @@ -96,13 +95,13 @@ function handlePluginsObject(path, moduleList, finishPluginLoading) { } } -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 @@ function findCordovaPath() { // 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); }; - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/pluginloader_b.js ---------------------------------------------------------------------- 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 @@ var modulemapper = require('cordova/modulemapper'); // 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 @@ function handlePluginsObject(moduleList) { // 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(); }; - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/urlutil.js ---------------------------------------------------------------------- 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; }; - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/common/utils.js ---------------------------------------------------------------------- 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 @@ var utils = exports; /** * 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.defineGetterSetter = function(obj, key, getFunc, opt_setFunc) { */ 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 @@ utils.arrayIndexOf = function(a, item) { /** * 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 @@ utils.typeName = function(val) { * 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 @@ utils.clone = function(obj) { /** * 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 @@ function UUIDcreatePart(length) { /** * Create a UUID */ -utils.createUUID = function() { +utils.createUUID = function () { return UUIDcreatePart(4) + '-' + UUIDcreatePart(2) + '-' + UUIDcreatePart(2) + '-' + @@ -152,16 +152,15 @@ utils.createUUID = function() { 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 @@ utils.extend = (function() { /** * 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); } }; - - - - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/cordova.js ---------------------------------------------------------------------- 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 @@ var m_window_removeEventListener = window.removeEventListener; /** * 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 @@ function createEvent(type, data) { 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 @@ var cordova = { * * @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 @@ var cordova = { 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 @@ var cordova = { // 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 @@ var cordova = { /** * 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 @@ var cordova = { /** * 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 @@ var cordova = { 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; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/cordova_b.js ---------------------------------------------------------------------- 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 @@ var m_window_removeEventListener = window.removeEventListener; /** * 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 @@ function createEvent(type, data) { 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 @@ var cordova = { * * @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 @@ var cordova = { 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 @@ var cordova = { // 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 @@ var cordova = { /** * 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 @@ var cordova = { /** * 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 @@ var cordova = { 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); } }); } http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/legacy-exec/test/exec.js ---------------------------------------------------------------------- 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 http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/legacy-exec/test/platform.js ---------------------------------------------------------------------- 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. http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/legacy-exec/test/test/mockxhr.js ---------------------------------------------------------------------- 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 @@ function MockXhr() { this.clearResponse_(); } -MockXhr.prototype.clearResponse_ = function() { +MockXhr.prototype.clearResponse_ = function () { this.url = null; this.method = null; this.async = null; @@ -47,12 +47,12 @@ MockXhr.prototype.clearResponse_ = function() { 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 @@ MockXhr.prototype.open = function(method, url, async) { 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 @@ MockXhr.prototype.send = function(payload) { 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 @@ MockXhr.prototype.simulateResponse = function(statusCode, responseText, response 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; } http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/legacy-exec/test/test/modulereplacer.js ---------------------------------------------------------------------- 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 */ http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/legacy-exec/test/test/propertyreplacer.js ---------------------------------------------------------------------- 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 @@ exports.stub = function(obj, key, value) { }); obj[key] = value; }; - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/legacy-exec/test/test/testmodule.js ---------------------------------------------------------------------- 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' } http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/src/scripts/require.js ---------------------------------------------------------------------- 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 @@ var require, 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 @@ var require, define = function (id, factory) { if (modules[id]) { - throw "module " + id + " already defined"; + throw 'module ' + id + ' already defined'; } modules[id] = { @@ -89,8 +87,8 @@ var require, 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; } http://git-wip-us.apache.org/repos/asf/cordova-js/blob/c75e8059/test/.eslintrc.yml ---------------------------------------------------------------------- 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 --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
