Skip to content
Permalink
Browse files

Fix #13355. Tweak Uglify options and var order for gzip. Close gh-1151.

Change uglify-js options for compressor
Change variables initialization sequence for some declarations
  • Loading branch information...
markelog authored and dmethvin committed Jan 29, 2013
1 parent e392e55 commit d79bf3517eda9b74883c68c255e82067449d3274
Showing with 63 additions and 57 deletions.
  1. +6 −0 Gruntfile.js
  2. +14 −14 src/ajax.js
  3. +1 −5 src/ajax/xhr.js
  4. +1 −1 src/attributes.js
  5. +4 −4 src/callbacks.js
  6. +5 −5 src/core.js
  7. +3 −3 src/css.js
  8. +3 −4 src/data.js
  9. +4 −2 src/effects.js
  10. +12 −13 src/event.js
  11. +7 −5 src/manipulation.js
  12. +3 −1 src/support.js
@@ -101,6 +101,12 @@ module.exports = function( grunt ) {
options: {
banner: "/*! jQuery v<%= pkg.version %> | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */",
sourceMap: "dist/jquery.min.map",
compress: {
hoist_funs: false,
join_vars: false,
loops: false,
unused: false
},
beautify: {
ascii_only: true
}
@@ -2,7 +2,6 @@ var
// Document location
ajaxLocParts,
ajaxLocation,

ajax_nonce = jQuery.now(),

ajax_rquery = /\?/,
@@ -115,7 +114,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
// that takes "flat" options (not to be deep extended)
// Fixes #9887
function ajaxExtend( target, src ) {
var key, deep,
var deep, key,
flatOptions = jQuery.ajaxSettings.flatOptions || {};

for ( key in src ) {
@@ -135,7 +134,7 @@ jQuery.fn.load = function( url, params, callback ) {
return _load.apply( this, arguments );
}

var selector, type, response,
var selector, response, type,
self = this,
off = url.indexOf(" ");

@@ -316,20 +315,23 @@ jQuery.extend({
// Force options to be an object
options = options || {};

var transport,
var // Cross-domain detection vars
parts,
// Loop variable
i,
// URL without anti-cache param
cacheURL,
// Response headers
// Response headers as string
responseHeadersString,
responseHeaders,
// timeout handle
timeoutTimer,
// Cross-domain detection vars
parts,

// To know if global events are to be dispatched
fireGlobals,
// Loop variable
i,

transport,
// Response headers
responseHeaders,

This comment has been minimized.

@jaubourg

jaubourg Jan 31, 2013

Member

So, this is what I was talking about: related variables separated (responseHeaders, responseHeadersString). Reason? Unknown unless you dig down the commit history.

The whole declaration part is a mess now because it's impossible to determine what belongs together.

// Create the final options object
s = jQuery.ajaxSetup( {}, options ),
// Callbacks context
@@ -704,8 +706,7 @@ jQuery.extend({
* - returns the corresponding response
*/
function ajaxHandleResponses( s, jqXHR, responses ) {

var ct, type, finalDataType, firstDataType,
var firstDataType, ct, finalDataType, type,
contents = s.contents,
dataTypes = s.dataTypes,
responseFields = s.responseFields;
@@ -766,8 +767,7 @@ function ajaxHandleResponses( s, jqXHR, responses ) {

// Chain conversions given the request and the original response
function ajaxConvert( s, response ) {

var conv, conv2, current, tmp,
var conv2, current, conv, tmp,
converters = {},
i = 0,
// Work with a copy of dataTypes in case we need to modify it for conversion
@@ -101,11 +101,7 @@ if ( xhrSupported ) {

// Listener
callback = function( _, isAbort ) {

var status,
statusText,
responseHeaders,
responses;
var status, responseHeaders, statusText, responses;

This comment has been minimized.

@jaubourg

jaubourg Jan 31, 2013

Member

status and statusText separated, why? Unknown by reading the code. That's what I meant by disruptive. Again.

This comment has been minimized.

@scottgonzalez

scottgonzalez Jan 31, 2013

Member

Who is looking at the order of variables that have already been declared and losing time over the chosen algorithm for the existing grouping? Do you honestly look at this and worry about it every time you work on ajax code?

This comment has been minimized.

@jaubourg

jaubourg Jan 31, 2013

Member

No, I expect code to make logical sense. So, when I code, I group variables given their meaning/semantics, yes. Sorry you don't care about that, I do. I don't understand why the declarations are separated here while they are clearly related and the names of the variable clearly state they are. By your line of reasonning, who cares about the chosen algorithm for naming variables?

I do care about this kind of things everytime I code (in ajax, jQuery, or any other project) because I want to understand things when I come back 3 months later. This kind of silly out of order declarations are a distraction when I come back to the code to fix something and, so, quite disruptive. I don't wanna have to care about this, which is the whole point I'm making here.

Logical order of declaration is as much a stylistic help than whitespacing stuff properly. Except everybody seems to care about whitespaces but not the actual flow of declarations (or code in general). Which is quite puzzling, if not sad, if you ask me.


// Firefox throws exceptions when accessing properties
// of an xhr when a network error occurred
@@ -290,7 +290,7 @@ jQuery.extend({
},

attr: function( elem, name, value ) {
var ret, hooks, notxml,
var hooks, notxml, ret,
nType = elem.nodeType;

// don't get/set attributes on text, comment and attribute nodes
@@ -46,12 +46,12 @@ jQuery.Callbacks = function( options ) {
memory,
// Flag to know if list was already fired
fired,
// First callback to fire (used internally by add and fireWith)
firingStart,
// Index of currently firing callback (modified by remove if needed)
firingIndex,
// End of the loop when firing
firingLength,
// Index of currently firing callback (modified by remove if needed)
firingIndex,
// First callback to fire (used internally by add and fireWith)
firingStart,
// Actual callback list
list = [],
// Stack of fire calls for repeatable lists
@@ -1,10 +1,10 @@
var
// A central reference to the root jQuery(document)
rootjQuery,

// The deferred used on DOM ready
readyList,

// A central reference to the root jQuery(document)
rootjQuery,

// Support: IE<9
// For `typeof node.method` instead of `node.method !== undefined`
core_strundefined = typeof undefined,
@@ -93,7 +93,7 @@ jQuery.fn = jQuery.prototype = {

constructor: jQuery,
init: function( selector, context, rootjQuery ) {
var elem, match;
var match, elem;

// HANDLE: $(""), $(null), $(undefined), $(false)
if ( !selector ) {
@@ -288,7 +288,7 @@ jQuery.fn = jQuery.prototype = {
jQuery.fn.init.prototype = jQuery.fn;

jQuery.extend = jQuery.fn.extend = function() {
var copy, options, src, copyIsArray, name, clone,
var src, copyIsArray, copy, name, options, clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
@@ -1,4 +1,4 @@
var curCSS, getStyles, iframe,
var iframe, getStyles, curCSS,
ralpha = /alpha\([^)]*\)/i,
ropacity = /opacity\s*=\s*([^)]*)/,
rposition = /^(top|right|bottom|left)$/,
@@ -98,7 +98,7 @@ function showHide( elements, show ) {
jQuery.fn.extend({
css: function( name, value ) {
return jQuery.access( this, function( elem, name, value ) {
var styles, len,
var len, styles,
map = {},
i = 0;

@@ -239,7 +239,7 @@ jQuery.extend({
},

css: function( elem, name, extra, styles ) {
var val, num, hooks,
var num, val, hooks,
origName = jQuery.camelCase( name );

// Make sure that we're working with the right name
@@ -1,7 +1,7 @@
var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
rmultiDash = /([A-Z])/g;

function internalData( elem, name, data, pvt ) {
function internalData( elem, name, data, pvt /* Internal Use Only */ ){
if ( !jQuery.acceptData( elem ) ) {
return;
}
@@ -100,8 +100,7 @@ function internalRemoveData( elem, name, pvt ) {
return;
}

var thisCache, i, l,

var i, l, thisCache,
isNode = elem.nodeType,

// See jQuery.data for more information
@@ -216,7 +215,7 @@ jQuery.extend({
_data: function( elem, name, data ) {
return internalData( elem, name, data, true );
},

_removeData: function( elem, name ) {
return internalRemoveData( elem, name, true );
},
@@ -175,7 +175,7 @@ function Animation( elem, properties, options ) {
}

function propFilter( props, specialEasing ) {
var index, name, easing, value, hooks;
var value, name, index, easing, hooks;

// camelCase, specialEasing and expand cssHook pass
for ( index in props ) {
@@ -243,7 +243,9 @@ jQuery.Animation = jQuery.extend( Animation, {

function defaultPrefilter( elem, props, opts ) {
/*jshint validthis:true */
var index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,
var prop, index, length,
value, dataShow, toggle,
tween, hooks, oldfire,
anim = this,
style = elem.style,
orig = {},
@@ -21,10 +21,9 @@ jQuery.event = {
global: {},

add: function( elem, types, handler, data, selector ) {

var handleObjIn, tmp, eventHandle,
t, handleObj, special,
events, handlers, type, namespaces, origType,
var tmp, events, t, handleObjIn,
special, eventHandle, handleObj,
handlers, type, namespaces, origType,
elemData = jQuery._data( elem );

// Don't attach events to noData or text/comment nodes (but allow plain objects)
@@ -132,10 +131,10 @@ jQuery.event = {

// Detach an event or set of events from an element
remove: function( elem, types, handler, selector, mappedTypes ) {

var events, handleObj, tmp,
j, t, origCount,
special, handlers, type, namespaces, origType,
var j, handleObj, tmp,
origCount, t, events,
special, handlers, type,
namespaces, origType,
elemData = jQuery.hasData( elem ) && jQuery._data( elem );

if ( !elemData || !(events = elemData.events) ) {
@@ -205,8 +204,8 @@ jQuery.event = {
},

trigger: function( event, data, elem, onlyHandlers ) {

var i, handle, ontype, bubbleType, tmp, special, cur,
var handle, ontype, cur,
bubbleType, special, tmp, i,
eventPath = [ elem || document ],
type = event.type || event,
namespaces = event.namespace ? event.namespace.split(".") : [];
@@ -343,7 +342,7 @@ jQuery.event = {
// Make a writable jQuery.Event from the native event object
event = jQuery.event.fix( event );

var ret, j, handleObj, matched, i,
var i, ret, handleObj, matched, j,
handlerQueue = [],
args = core_slice.call( arguments ),
handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
@@ -398,7 +397,7 @@ jQuery.event = {
},

handlers: function( event, handlers ) {
var i, matches, sel, handleObj,
var sel, handleObj, matches, i,
handlerQueue = [],
delegateCount = handlers.delegateCount,
cur = event.target;
@@ -511,7 +510,7 @@ jQuery.event = {
mouseHooks: {
props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
filter: function( event, original ) {
var eventDoc, doc, body,
var body, eventDoc, doc,
button = original.button,
fromElement = original.fromElement;

@@ -285,7 +285,8 @@ jQuery.fn.extend({
// Flatten any nested arrays
args = core_concat.apply( [], args );

var scripts, node, doc, fragment, hasScripts, first,
var first, node, hasScripts,
scripts, doc, fragment,
i = 0,
l = this.length,
set = this,
@@ -436,7 +437,7 @@ function cloneCopyEvent( src, dest ) {
}

function fixCloneNodeIssues( src, dest ) {
var nodeName, data, e;
var nodeName, e, data;

// We do not need to do anything for non-Elements
if ( dest.nodeType !== 1 ) {
@@ -559,7 +560,7 @@ function fixDefaultChecked( elem ) {

jQuery.extend({
clone: function( elem, dataAndEvents, deepDataAndEvents ) {
var clone, node, srcElements, i, destElements,
var destElements, node, clone, i, srcElements,
inPage = jQuery.contains( elem.ownerDocument, elem );

if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
@@ -614,7 +615,8 @@ jQuery.extend({
},

buildFragment: function( elems, context, scripts, selection ) {
var contains, elem, j, tmp, tag, wrap, tbody,
var j, elem, contains,
tmp, tag, tbody, wrap,
l = elems.length,

// Ensure a safe fragment
@@ -740,7 +742,7 @@ jQuery.extend({
},

cleanData: function( elems, /* internal */ acceptData ) {
var elem, id, type, data,
var elem, type, id, data,
i = 0,
internalKey = jQuery.expando,
cache = jQuery.cache,
@@ -1,6 +1,8 @@
jQuery.support = (function() {

var support, all, a, select, opt, input, fragment, eventName, isSupported, i,
var support, all, a,
input, select, fragment,
opt, eventName, isSupported, i,
div = document.createElement("div");

// Setup

0 comments on commit d79bf35

Please sign in to comment.
You can’t perform that action at this time.