From 064f95f530f807ef2ff8c2e9c4077618f4feaaea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 30 Jun 2014 10:54:05 +0200 Subject: [PATCH 01/24] Remove the IE 11 fullscreen externs declarations They are defined in recent versions of Closure Compiler. --- externs/closure-compiler.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/externs/closure-compiler.js b/externs/closure-compiler.js index a7bd61fd62..449348d6b7 100644 --- a/externs/closure-compiler.js +++ b/externs/closure-compiler.js @@ -45,18 +45,6 @@ DeviceOrientationEvent.prototype.webkitCompassAccuracy; DeviceOrientationEvent.prototype.webkitCompassHeading; -// IE 11 fullscreen API -// http://msdn.microsoft.com/en-us/library/ie/dn265028(v=vs.85).aspx - - -/** @return {void} */ -Element.prototype.msRequestFullscreen = function() {}; - - -/** @return {void} */ -Element.prototype.msExitFullscreen = function() {}; - - /** @type {boolean} */ Document.prototype.msFullscreenEnabled; From 04e60a9d37436028bbe19720b8fefde599055198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 30 Jun 2014 10:55:13 +0200 Subject: [PATCH 02/24] Use build.js for ol.js --- build.py | 8 ++-- buildcfg/ol.json | 98 ++++++++++++++++++++++++++++++------------------ 2 files changed, 64 insertions(+), 42 deletions(-) diff --git a/build.py b/build.py index 54918a65ed..0129d55881 100755 --- a/build.py +++ b/build.py @@ -172,11 +172,9 @@ def build_ol_css(t): t.touch() -@target('build/ol.js', PLOVR_JAR, SRC, EXPORTS, SHADER_SRC, - 'buildcfg/base.json', 'buildcfg/ol.json') -def build_ol_js(t): - t.output('%(JAVA)s', '-server', '-XX:+TieredCompilation', '-jar', - PLOVR_JAR, 'build', 'buildcfg/ol.json') +@target('build/ol.js', SRC, SHADER_SRC, 'buildcfg/ol.json') +def build_ol_new_js(t): + t.run('node', 'tasks/build.js', 'buildcfg/ol.json', 'build/ol.js') report_sizes(t) diff --git a/buildcfg/ol.json b/buildcfg/ol.json index 77513d9363..fb704efba2 100644 --- a/buildcfg/ol.json +++ b/buildcfg/ol.json @@ -1,39 +1,63 @@ { - - "id": "ol", - - "css-allowed-unrecognized-properties": [ - "user-select" - ], - - "css-inputs": [ - "../css/ol.css" - ], - - "css-output-file": "../build/ol.css", - - "externs": [ - "../externs/bingmaps.js", - "../externs/closure-compiler.js", - "../externs/geojson.js", - "../externs/oli.js", - "../externs/olx.js", - "../externs/proj4js.js", - "../externs/tilejson.js", - "../externs/topojson.js", - "../externs/vbarray.js" - ], - - "inherits": "base.json", - - "inputs": [ - "../build/exports.js" - ], - - "output-wrapper": "// OpenLayers 3. see http://ol3js.org/\n(function(){%output%})();", - - "paths": [ - "../src" - ] - + "exports": ["*"], + "src": ["src/**/*.js"], + "compile": { + "externs": [ + "externs/bingmaps.js", + "externs/closure-compiler.js", + "externs/geojson.js", + "externs/oli.js", + "externs/olx.js", + "externs/proj4js.js", + "externs/tilejson.js", + "externs/topojson.js", + "externs/vbarray.js" + ], + "define": [ + "goog.dom.ASSUME_STANDARDS_MODE=true", + "goog.DEBUG=false" + ], + "jscomp_error": [ + "accessControls", + "ambiguousFunctionDecl", + "checkDebuggerStatement", + "checkEventfulObjectDisposal", + "checkProvides", + "checkRegExp", + "checkStructDictInheritance", + "checkTypes", + "checkVars", + "const", + "constantProperty", + "deprecated", + "duplicate", + "duplicateMessage", + "es3", + "externsValidation", + "fileoverviewTags", + "globalThis", + "internetExplorerChecks", + "invalidCasts", + "misplacedTypeAnnotation", + "missingProperties", + "nonStandardJsDocs", + "strictModuleDepCheck", + "suspiciousCode", + "typeInvalidation", + "tweakValidation", + "undefinedNames", + "undefinedVars", + "unknownDefines", + "uselessCode", + "violatedModuleDep", + "visibility" + ], + "jscomp_off": [ + "es5Strict" + ], + "compilation_level": "ADVANCED_OPTIMIZATIONS", + "output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();", + "use_types_for_optimization": true, + "manage_closure_dependencies": true + } } From 3ea304f5bf0c8ac9a2b2961b31693385be40c04b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 30 Jun 2014 12:09:10 +0200 Subject: [PATCH 03/24] Use build.js for ol-simple.js --- build.py | 6 +-- buildcfg/ol-simple.json | 98 +++++++++++++++++++++++++---------------- 2 files changed, 63 insertions(+), 41 deletions(-) diff --git a/build.py b/build.py index 0129d55881..9b6adc08e8 100755 --- a/build.py +++ b/build.py @@ -178,11 +178,9 @@ def build_ol_new_js(t): report_sizes(t) -@target('build/ol-simple.js', PLOVR_JAR, SRC, EXPORTS, SHADER_SRC, - 'buildcfg/base.json', 'buildcfg/ol.json', 'buildcfg/ol-simple.json') +@target('build/ol-simple.js', SRC, SHADER_SRC, 'buildcfg/ol-simple.json') def build_ol_simple_js(t): - t.output('%(JAVA)s', '-server', '-XX:+TieredCompilation', '-jar', - PLOVR_JAR, 'build', 'buildcfg/ol-simple.json') + t.run('node', 'tasks/build.js', 'buildcfg/ol-simple.json', 'build/ol-simple.js') report_sizes(t) diff --git a/buildcfg/ol-simple.json b/buildcfg/ol-simple.json index 5cb4be99de..9ea2246179 100644 --- a/buildcfg/ol-simple.json +++ b/buildcfg/ol-simple.json @@ -1,39 +1,63 @@ { - - // If ambiguate-properties and disambiguate-properties are set to true - // we get function names like "ol_control_Control_prototype$setMap" in - // the compiled code when using the SIMPLE compilation. It looks like - // "ambiguate-properties" and "disambiguate-properties" are only - // appropriate for ADVANCED compilation. - - "ambiguate-properties": false, - - "disambiguate-properties": false, - - "id": "ol-simple", - - "externs": [ - "../externs/bingmaps.js", - "../externs/closure-compiler.js", - "../externs/geojson.js", - "../externs/oli.js", - "../externs/olx.js", - "../externs/proj4js.js", - "../externs/tilejson.js", - "../externs/topojson.js", - "../externs/vbarray.js" - ], - - "inherits": "ol.json", - - "inputs": [ - "../build/exports.js" - ], - - "mode": "SIMPLE", - - // Note: we can't have a (function(){%output%})() output wrapper with - // WHITESPACE and SIMPLE modes. See this link for explanations: - // https://groups.google.com/forum/#!topic/plovr/gQyZEa2NpsU - "output-wrapper": "%output%" + "exports": ["*"], + "src": ["src/**/*.js"], + "compile": { + "externs": [ + "externs/bingmaps.js", + "externs/closure-compiler.js", + "externs/geojson.js", + "externs/oli.js", + "externs/olx.js", + "externs/proj4js.js", + "externs/tilejson.js", + "externs/topojson.js", + "externs/vbarray.js" + ], + "define": [ + "goog.dom.ASSUME_STANDARDS_MODE=true", + "goog.DEBUG=false" + ], + "jscomp_error": [ + "accessControls", + "ambiguousFunctionDecl", + "checkDebuggerStatement", + "checkEventfulObjectDisposal", + "checkProvides", + "checkRegExp", + "checkStructDictInheritance", + "checkTypes", + "checkVars", + "const", + "constantProperty", + "deprecated", + "duplicate", + "duplicateMessage", + "es3", + "externsValidation", + "fileoverviewTags", + "globalThis", + "internetExplorerChecks", + "invalidCasts", + "misplacedTypeAnnotation", + "missingProperties", + "nonStandardJsDocs", + "strictModuleDepCheck", + "suspiciousCode", + "typeInvalidation", + "tweakValidation", + "undefinedNames", + "undefinedVars", + "unknownDefines", + "uselessCode", + "violatedModuleDep", + "visibility" + ], + "jscomp_off": [ + "es5Strict" + ], + "compilation_level": "SIMPLE_OPTIMIZATIONS", + "output_wrapper": "%output%", + "use_types_for_optimization": false, + "manage_closure_dependencies": true + } } From 4e8c9c5470465504ecfa7f8c9a99c15922aa2ec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 30 Jun 2014 12:09:28 +0200 Subject: [PATCH 04/24] Use build.js for ol-whitespace.js --- build.py | 7 +-- buildcfg/ol-whitespace.json | 101 ++++++++++++++++++++++-------------- 2 files changed, 63 insertions(+), 45 deletions(-) diff --git a/build.py b/build.py index 9b6adc08e8..f6b8101d9b 100755 --- a/build.py +++ b/build.py @@ -184,12 +184,9 @@ def build_ol_simple_js(t): report_sizes(t) -@target('build/ol-whitespace.js', PLOVR_JAR, SRC, EXPORTS, - SHADER_SRC, 'buildcfg/base.json', 'buildcfg/ol.json', - 'buildcfg/ol-whitespace.json') +@target('build/ol-whitespace.js', SRC, SHADER_SRC, 'buildcfg/ol-whitespace.json') def build_ol_whitespace_js(t): - t.output('%(JAVA)s', '-server', '-XX:+TieredCompilation', '-jar', - PLOVR_JAR, 'build', 'buildcfg/ol-whitespace.json') + t.run('node', 'tasks/build.js', 'buildcfg/ol-whitespace.json', 'build/ol-whitespace.js') report_sizes(t) diff --git a/buildcfg/ol-whitespace.json b/buildcfg/ol-whitespace.json index c409225de4..77959e60a5 100644 --- a/buildcfg/ol-whitespace.json +++ b/buildcfg/ol-whitespace.json @@ -1,42 +1,63 @@ { - - "id": "ol-whitespace", - - // If ambiguate-properties and disambiguate-properties are set to true - // we get function names like "ol_control_Control_prototype$setMap" in - // the compiled code when using the SIMPLE compilation. It looks like - // "ambiguate-properties" and "disambiguate-properties" are only - // appropriate for ADVANCED compilation. To be sure we also don't - // set them for WHITESPACE. - - "ambiguate-properties": false, - - "disambiguate-properties": false, - - "externs": [ - "../externs/bingmaps.js", - "../externs/closure-compiler.js", - "../externs/geojson.js", - "../externs/oli.js", - "../externs/olx.js", - "../externs/proj4js.js", - "../externs/tilejson.js", - "../externs/topojson.js", - "../externs/vbarray.js" - ], - - "inherits": "ol.json", - - "inputs": [ - "../build/exports.js" - ], - - "mode": "WHITESPACE", - - "output-wrapper": [ - "var CLOSURE_NO_DEPS = true;\n", - "%output%" - ], - - "pretty-print": true + "exports": ["*"], + "src": ["src/**/*.js"], + "compile": { + "externs": [ + "externs/bingmaps.js", + "externs/closure-compiler.js", + "externs/geojson.js", + "externs/oli.js", + "externs/olx.js", + "externs/proj4js.js", + "externs/tilejson.js", + "externs/topojson.js", + "externs/vbarray.js" + ], + "define": [ + "goog.dom.ASSUME_STANDARDS_MODE=true", + "goog.DEBUG=false" + ], + "jscomp_error": [ + "accessControls", + "ambiguousFunctionDecl", + "checkDebuggerStatement", + "checkEventfulObjectDisposal", + "checkProvides", + "checkRegExp", + "checkStructDictInheritance", + "checkTypes", + "checkVars", + "const", + "constantProperty", + "deprecated", + "duplicate", + "duplicateMessage", + "es3", + "externsValidation", + "fileoverviewTags", + "globalThis", + "internetExplorerChecks", + "invalidCasts", + "misplacedTypeAnnotation", + "missingProperties", + "nonStandardJsDocs", + "strictModuleDepCheck", + "suspiciousCode", + "typeInvalidation", + "tweakValidation", + "undefinedNames", + "undefinedVars", + "unknownDefines", + "uselessCode", + "violatedModuleDep", + "visibility" + ], + "jscomp_off": [ + "es5Strict" + ], + "compilation_level": "WHITESPACE_ONLY", + "output_wrapper": "var CLOSURE_DEPS = false;\n%output%", + "use_types_for_optimization": false, + "manage_closure_dependencies": true + } } From f89abb53a906484639d458303d71a054e28ba3bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 30 Jun 2014 18:07:18 +0200 Subject: [PATCH 05/24] Use build.js for ol-all.js --- build.py | 6 ++-- buildcfg/ol-all.json | 81 ++++++++++++++++++++++++++++++++------------ 2 files changed, 62 insertions(+), 25 deletions(-) diff --git a/build.py b/build.py index f6b8101d9b..ebaa5e9a44 100755 --- a/build.py +++ b/build.py @@ -193,11 +193,9 @@ def build_ol_whitespace_js(t): virtual('build-all', 'build/ol-all.js') -@target('build/ol-all.js', PLOVR_JAR, SRC, EXPORTS, SHADER_SRC, - 'buildcfg/base.json', 'buildcfg/ol-all.json') +@target('build/ol-all.js', SRC, SHADER_SRC, 'buildcfg/ol-all.json') def build_ol_all_js(t): - t.output('%(JAVA)s', '-server', '-XX:+TieredCompilation', '-jar', - PLOVR_JAR, 'build', 'buildcfg/ol-all.json') + t.run('node', 'tasks/build.js', 'buildcfg/ol-all.json', 'build/ol-all.js') @target(EXPORTS, SRC) diff --git a/buildcfg/ol-all.json b/buildcfg/ol-all.json index 7ce2c28f73..2df2d9a430 100644 --- a/buildcfg/ol-all.json +++ b/buildcfg/ol-all.json @@ -1,23 +1,62 @@ { - - "id": "ol-all", - - "externs": [ - "../externs/bingmaps.js", - "../externs/closure-compiler.js", - "../externs/geojson.js", - "../externs/oli.js", - "../externs/olx.js", - "../externs/proj4js.js", - "../externs/tilejson.js", - "../externs/topojson.js", - "../externs/vbarray.js" - ], - - "inherits": "base.json", - - "inputs": [ - "../build/exports.js" - ] - + "exports": ["*"], + "src": ["src/**/*.js"], + "compile": { + "externs": [ + "externs/bingmaps.js", + "externs/closure-compiler.js", + "externs/geojson.js", + "externs/oli.js", + "externs/olx.js", + "externs/proj4js.js", + "externs/tilejson.js", + "externs/topojson.js", + "externs/vbarray.js" + ], + "define": [ + "goog.dom.ASSUME_STANDARDS_MODE=true", + "goog.DEBUG=false" + ], + "jscomp_error": [ + "accessControls", + "ambiguousFunctionDecl", + "checkDebuggerStatement", + "checkEventfulObjectDisposal", + "checkProvides", + "checkRegExp", + "checkStructDictInheritance", + "checkTypes", + "checkVars", + "const", + "constantProperty", + "deprecated", + "duplicate", + "duplicateMessage", + "es3", + "externsValidation", + "fileoverviewTags", + "globalThis", + "internetExplorerChecks", + "invalidCasts", + "misplacedTypeAnnotation", + "missingProperties", + "nonStandardJsDocs", + "strictModuleDepCheck", + "suspiciousCode", + "typeInvalidation", + "tweakValidation", + "undefinedNames", + "undefinedVars", + "unknownDefines", + "uselessCode", + "violatedModuleDep", + "visibility" + ], + "jscomp_off": [ + "es5Strict" + ], + "compilation_level": "ADVANCED_OPTIMIZATIONS", + "output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();", + "use_types_for_optimization": true + } } From 992e0fa2182ac621c40de7f5726850b0b2f3db2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 30 Jun 2014 18:13:34 +0200 Subject: [PATCH 06/24] Use serve.js instead of the Plovr server --- build.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.py b/build.py index ebaa5e9a44..359be58244 100755 --- a/build.py +++ b/build.py @@ -306,10 +306,9 @@ def examples_star_combined_js(name, match): return Target(name, action=action, dependencies=dependencies) -@target('serve', PLOVR_JAR, 'test-deps', 'examples') +@target('serve', 'test-deps', 'examples') def serve(t): - t.run('%(JAVA)s', '-jar', PLOVR_JAR, 'serve', 'buildcfg/ol.json', - 'buildcfg/ol-all.json', EXAMPLES_JSON, 'buildcfg/test.json') + t.run('node', 'tasks/serve.js') @target('serve-integration-test', PLOVR_JAR) From 152b434f1bd120fc5461c7963aa704744b9aad65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 1 Jul 2014 18:13:44 +0200 Subject: [PATCH 07/24] Add jquery-1.7 externs --- externs/jquery-1.7.js | 2296 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2296 insertions(+) create mode 100644 externs/jquery-1.7.js diff --git a/externs/jquery-1.7.js b/externs/jquery-1.7.js new file mode 100644 index 0000000000..c0486a7cbd --- /dev/null +++ b/externs/jquery-1.7.js @@ -0,0 +1,2296 @@ +/* + * Copyright 2011 The Closure Compiler Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Externs for jQuery 1.7.2 + * + * Note that some functions use different return types depending on the number + * of parameters passed in. In these cases, you may need to annotate the type + * of the result in your code, so the JSCompiler understands which type you're + * expecting. For example: + * var elt = /** @type {Element} * / (foo.get(0)); + * + * @see http://api.jquery.com/ + * @externs + */ + +/** + * @typedef {(Window|Document|Element|Array.|string|jQuery| + * NodeList)} + */ +var jQuerySelector; + +/** @typedef {function(...)|Array.} */ +var jQueryCallback; + +/** + * @constructor + * @param {(jQuerySelector|Element|Object|Array.|jQuery|string| + * function())=} arg1 + * @param {(Element|jQuery|Document| + * Object.)=} arg2 + * @return {!jQuery} + */ +function jQuery(arg1, arg2) {} + +/** + * @constructor + * @extends {jQuery} + * @param {(jQuerySelector|Element|Object|Array.|jQuery|string| + * function())=} arg1 + * @param {(Element|jQuery|Document| + * Object.)=} arg2 + * @return {!jQuery} + */ +function $(arg1, arg2) {} + +/** + * @param {(jQuerySelector|Array.|string|jQuery)} arg1 + * @param {Element=} context + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.add = function(arg1, context) {}; + +/** + * @param {(string|function(number,String))} arg1 + * @return {!jQuery} + */ +jQuery.prototype.addClass = function(arg1) {}; + +/** + * @param {(string|Element|jQuery|function(number))} arg1 + * @param {(string|Element|Array.|jQuery)=} content + * @return {!jQuery} + */ +jQuery.prototype.after = function(arg1, content) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {Object.=} settings + * @return {jQuery.jqXHR} + */ +jQuery.ajax = function(arg1, settings) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {Object.=} settings + * @return {jQuery.jqXHR} + */ +$.ajax = function(arg1, settings) {}; + +/** + * @param {function(!jQuery.event,XMLHttpRequest,Object.)} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxComplete = function(handler) {}; + +/** + * @param {function(!jQuery.event,jQuery.jqXHR,Object.,*)} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxError = function(handler) {}; + +/** + * @param {(string| + * function(Object.,Object.,jQuery.jqXHR))} dataTypes + * @param {function(Object.,Object.,jQuery.jqXHR)=} handler + */ +jQuery.ajaxPrefilter = function(dataTypes, handler) {}; + +/** + * @param {(string| + * function(Object.,Object.,jQuery.jqXHR))} dataTypes + * @param {function(Object.,Object.,jQuery.jqXHR)=} handler + */ +$.ajaxPrefilter = function(dataTypes, handler) {}; + +/** + * @param {function(!jQuery.event,jQuery.jqXHR,Object.)} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxSend = function(handler) {}; + +/** @const */ +jQuery.ajaxSettings = {}; + +/** @const */ +$.ajaxSettings = {}; + +/** @type {Object.} */ +jQuery.ajaxSettings.accepts = {}; + +/** @type {Object.} */ +$.ajaxSettings.accepts = {}; + +/** @type {boolean} */ +jQuery.ajaxSettings.async; + +/** @type {boolean} */ +$.ajaxSettings.async; + +/** @type {Object.} */ +jQuery.ajaxSettings.contents = {}; + +/** @type {Object.} */ +$.ajaxSettings.contents = {}; + +/** @type {string} */ +jQuery.ajaxSettings.contentType; + +/** @type {string} */ +$.ajaxSettings.contentType; + +/** @type {Object.} */ +jQuery.ajaxSettings.converters = {}; + +/** @type {Object.} */ +$.ajaxSettings.converters = {}; + +/** @type {Object.} */ +jQuery.ajaxSettings.flatOptions = {}; + +/** @type {Object.} */ +$.ajaxSettings.flatOptions = {}; + +/** @type {boolean} */ +jQuery.ajaxSettings.global; + +/** @type {boolean} */ +$.ajaxSettings.global; + +/** @type {boolean} */ +jQuery.ajaxSettings.isLocal; + +/** @type {boolean} */ +$.ajaxSettings.isLocal; + +/** @type {boolean} */ +jQuery.ajaxSettings.processData; + +/** @type {boolean} */ +$.ajaxSettings.processData; + +/** @type {Object.} */ +jQuery.ajaxSettings.responseFields = {}; + +/** @type {Object.} */ +$.ajaxSettings.responseFields = {}; + +/** @type {boolean} */ +jQuery.ajaxSettings.traditional; + +/** @type {boolean} */ +$.ajaxSettings.traditional; + +/** @type {string} */ +jQuery.ajaxSettings.type; + +/** @type {string} */ +$.ajaxSettings.type; + +/** @type {string} */ +jQuery.ajaxSettings.url; + +/** @type {string} */ +$.ajaxSettings.url; + +/** @return {XMLHttpRequest|ActiveXObject} */ +jQuery.ajaxSettings.xhr = function() {}; + +/** @return {XMLHttpRequest|ActiveXObject} */ +$.ajaxSettings.xhr = function() {}; + +/** @param {Object.} options */ +jQuery.ajaxSetup = function(options) {}; + +/** @param {Object.} options */ +$.ajaxSetup = function(options) {}; + +/** + * @param {function()} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxStart = function(handler) {}; + +/** + * @param {function()} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxStop = function(handler) {}; + +/** + * @param {function(!jQuery.event,XMLHttpRequest,Object.)} handler + * @return {!jQuery} + */ +jQuery.prototype.ajaxSuccess = function(handler) {}; + +/** + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.andSelf = function() {}; + +/** + * @param {Object.} properties + * @param {(string|number|function()|Object.)=} arg2 + * @param {(string|function())=} easing + * @param {function()=} complete + * @return {!jQuery} + */ +jQuery.prototype.animate = function(properties, arg2, easing, complete) {}; + +/** + * @param {(string|Element|jQuery|function(number,string))} arg1 + * @param {(string|Element|Array.|jQuery)=} content + * @return {!jQuery} + */ +jQuery.prototype.append = function(arg1, content) {}; + +/** + * @param {(jQuerySelector|Element|jQuery)} target + * @return {!jQuery} + */ +jQuery.prototype.appendTo = function(target) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {(string|number|boolean|function(number,string))=} arg2 + * @return {(string|!jQuery)} + */ +jQuery.prototype.attr = function(arg1, arg2) {}; + +/** + * @param {(string|Element|jQuery|function())} arg1 + * @param {(string|Element|Array.|jQuery)=} content + * @return {!jQuery} + */ +jQuery.prototype.before = function(arg1, content) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {(Object.|function(!jQuery.event=)|boolean)=} eventData + * @param {(function(!jQuery.event=)|boolean)=} arg3 + * @return {!jQuery} + */ +jQuery.prototype.bind = function(arg1, eventData, arg3) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.blur = function(arg1, handler) {}; + +/** @type {boolean} */ +jQuery.boxModel; + +/** @type {boolean} */ +$.boxModel; + +/** @type {Object.} */ +jQuery.browser; + +/** @type {Object.} */ +$.browser; + +/** + * @type {boolean} + * @const + */ +jQuery.browser.mozilla; + +/** + * @type {boolean} + * @const + */ +$.browser.mozilla; + +/** + * @type {boolean} + * @const + */ +jQuery.browser.msie; + +/** + * @type {boolean} + * @const + */ +$.browser.msie; + +/** + * @type {boolean} + * @const + */ +jQuery.browser.opera; + +/** + * @type {boolean} + * @const + */ +$.browser.opera; + +/** + * @deprecated + * @type {boolean} + * @const + */ +jQuery.browser.safari; + +/** + * @deprecated + * @type {boolean} + * @const + */ +$.browser.safari; + +/** @type {string} */ +jQuery.browser.version; + +/** @type {string} */ +$.browser.version; + +/** + * @type {boolean} + * @const + */ +jQuery.browser.webkit; + +/** + * @type {boolean} + * @const + */ +$.browser.webkit; + +/** + * @constructor + * @private + */ +jQuery.callbacks = function () {}; + +/** + * @param {string=} flags + * @return {jQuery.callbacks} + */ +jQuery.Callbacks = function (flags) {}; + +/** @param {function()} callbacks */ +jQuery.callbacks.prototype.add = function(callbacks) {}; + +/** @return {undefined} */ +jQuery.callbacks.prototype.disable = function() {}; + +/** @return {undefined} */ +jQuery.callbacks.prototype.empty = function() {}; + +/** @param {...*} var_args */ +jQuery.callbacks.prototype.fire = function(var_args) {}; + +/** @return {boolean} */ +jQuery.callbacks.prototype.fired = function() {}; + +/** @param {...*} var_args */ +jQuery.callbacks.prototype.fireWith = function(var_args) {}; + +/** + * @param {function()} callback + * @return {boolean} + * @nosideeffects + */ +jQuery.callbacks.prototype.has = function(callback) {}; + +/** @return {undefined} */ +jQuery.callbacks.prototype.lock = function() {}; + +/** @return {boolean} */ +jQuery.callbacks.prototype.locked = function() {}; + +/** @param {function()} callbacks */ +jQuery.callbacks.prototype.remove = function(callbacks) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.change = function(arg1, handler) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.children = function(selector) {}; + +/** + * @param {string=} queueName + * @return {!jQuery} + */ +jQuery.prototype.clearQueue = function(queueName) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.click = function(arg1, handler) {}; + +/** + * @param {boolean=} withDataAndEvents + * @param {boolean=} deepWithDataAndEvents + * @return {!jQuery} + * @suppress {checkTypes} see issue 583 + */ +jQuery.prototype.clone = function(withDataAndEvents, deepWithDataAndEvents) {}; + +/** + * @param {(jQuerySelector|jQuery|Element|string|Array.)} arg1 + * @param {Element=} context + * @return {(!jQuery|Array.)} + * @nosideeffects + */ +jQuery.prototype.closest = function(arg1, context) {}; + +/** + * @param {Element} container + * @param {Element} contained + * @return {boolean} + */ +jQuery.contains = function(container, contained) {}; + +/** + * @param {Element} container + * @param {Element} contained + * @return {boolean} + */ +$.contains = function(container, contained) {}; + +/** + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.contents = function() {}; + +/** @type {Element} */ +jQuery.prototype.context; + +/** + * @param {(string|Object.)} arg1 + * @param {(string|number|function(number,*))=} arg2 + * @return {(string|!jQuery)} + */ +jQuery.prototype.css = function(arg1, arg2) {}; + +/** @type {Object.} */ +jQuery.cssHooks; + +/** @type {Object.} */ +$.cssHooks; + +/** + * @param {Element} elem + * @param {string=} key + * @param {*=} value + * @return {*} + */ +jQuery.data = function(elem, key, value) {}; + +/** + * @param {(string|Object.)=} arg1 + * @param {*=} value + * @return {*} + */ +jQuery.prototype.data = function(arg1, value) {}; + +/** + * @param {Element} elem + * @param {string=} key + * @param {*=} value + * @return {*} + */ +$.data = function(elem, key, value) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.dblclick = function(arg1, handler) {}; + +/** + * @constructor + * @implements {jQuery.Promise} + * @param {function()=} opt_fn + * @see http://api.jquery.com/category/deferred-object/ + */ +jQuery.deferred = function(opt_fn) {}; + +/** + * @constructor + * @extends {jQuery.deferred} + * @param {function()=} opt_fn + * @return {jQuery.Deferred} + */ +jQuery.Deferred = function(opt_fn) {}; + +/** + * @constructor + * @extends {jQuery.deferred} + * @param {function()=} opt_fn + * @see http://api.jquery.com/category/deferred-object/ + */ +$.deferred = function(opt_fn) {}; + +/** + * @constructor + * @extends {jQuery.deferred} + * @param {function()=} opt_fn + * @return {jQuery.deferred} + */ +$.Deferred = function(opt_fn) {}; + +/** + * @override + * @param {jQueryCallback} alwaysCallbacks + * @param {jQueryCallback=} alwaysCallbacks2 + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.always + = function(alwaysCallbacks, alwaysCallbacks2) {}; + +/** + * @override + * @param {jQueryCallback} doneCallbacks + * @param {jQueryCallback=} doneCallbacks2 + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.done = function(doneCallbacks, doneCallbacks2) {}; + +/** + * @override + * @param {jQueryCallback} failCallbacks + * @param {jQueryCallback=} failCallbacks2 + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.fail = function(failCallbacks, failCallbacks2) {}; + +/** + * @deprecated + * @override + * @return {boolean} + * @nosideeffects + */ +jQuery.deferred.prototype.isRejected = function() {}; + +/** + * @deprecated + * @override + * @return {boolean} + * @nosideeffects + */ +jQuery.deferred.prototype.isResolved = function() {}; + +/** + * @param {...*} var_args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.notify = function(var_args) {}; + +/** + * @param {Object} context + * @param {...*} var_args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.notifyWith = function(context, var_args) {}; + +/** + * @override + * @param {function()=} doneFilter + * @param {function()=} failFilter + * @param {function()=} progressFilter + * @return {jQuery.Promise} + */ +jQuery.deferred.prototype.pipe + = function(doneFilter, failFilter, progressFilter) {}; + +/** + * @param {function()} progressCallbacks + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.progress = function(progressCallbacks) {}; + +/** + * @param {Object=} target + * @return {jQuery.Promise} + */ +jQuery.deferred.prototype.promise = function(target) {}; + +/** + * @param {...*} var_args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.reject = function(var_args) {}; + +/** + * @param {Object} context + * @param {Array.<*>=} args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.rejectWith = function(context, args) {}; + +/** + * @param {...*} var_args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.resolve = function(var_args) {}; + +/** + * @param {Object} context + * @param {Array.<*>=} args + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.resolveWith = function(context, args) {}; + +/** @return {string} */ +jQuery.deferred.prototype.state = function() {}; + +/** + * @override + * @param {jQueryCallback} doneCallbacks + * @param {jQueryCallback=} failCallbacks + * @param {jQueryCallback=} progressCallbacks + * @return {jQuery.deferred} + */ +jQuery.deferred.prototype.then + = function(doneCallbacks, failCallbacks, progressCallbacks) {}; + +/** + * @param {number} duration + * @param {string=} queueName + * @return {!jQuery} + */ +jQuery.prototype.delay = function(duration, queueName) {}; + +/** + * @param {string} selector + * @param {(string|Object.)} arg2 + * @param {(function(!jQuery.event=)|Object.)=} arg3 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.delegate = function(selector, arg2, arg3, handler) {}; + +/** + * @param {Element} elem + * @param {string=} queueName + */ +jQuery.dequeue = function(elem, queueName) {}; + +/** + * @param {string=} queueName + * @return {!jQuery} + */ +jQuery.prototype.dequeue = function(queueName) {}; + +/** + * @param {Element} elem + * @param {string=} queueName + */ +$.dequeue = function(elem, queueName) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + */ +jQuery.prototype.detach = function(selector) {}; + +/** + * @deprecated + * @param {(string|Object.)=} arg1 + * @param {string=} handler + * @return {!jQuery} + */ +jQuery.prototype.die = function(arg1, handler) {}; + +/** + * @param {Object} collection + * @param {function((number|string),?)} callback + * @return {Object} + */ +jQuery.each = function(collection, callback) {}; + +/** + * @param {function(number,Element)} fnc + * @return {!jQuery} + */ +jQuery.prototype.each = function(fnc) {}; + +/** + * @param {Object} collection + * @param {function((number|string),?)} callback + * @return {Object} + */ +$.each = function(collection, callback) {}; + +/** @return {!jQuery} */ +jQuery.prototype.empty = function() {}; + +/** + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.end = function() {}; + +/** + * @param {number} arg1 + * @return {!jQuery} + */ +jQuery.prototype.eq = function(arg1) {}; + +/** @param {string} message */ +jQuery.error = function(message) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.error = function(arg1, handler) {}; + +/** @param {string} message */ +$.error = function(message) {}; + +/** + * @constructor + * @param {string} eventType + */ +jQuery.event = function(eventType) {}; + +/** + * @constructor + * @extends {jQuery.event} + * @param {string} eventType + * @param {Object=} properties + * @return {jQuery.Event} + */ +jQuery.Event = function(eventType, properties) {}; + +/** + * @constructor + * @extends {jQuery.event} + * @param {string} eventType + */ +$.event = function(eventType) {}; + +/** + * @constructor + * @extends {jQuery.event} + * @param {string} eventType + * @param {Object=} properties + * @return {$.Event} + */ +$.Event = function(eventType, properties) {}; + +/** @type {Element} */ +jQuery.event.prototype.currentTarget; + +/** @type {Object.} */ +jQuery.event.prototype.data; + +/** @type {Element} */ +jQuery.event.prototype.delegateTarget; + +/** + * @return {boolean} + * @nosideeffects + */ +jQuery.event.prototype.isDefaultPrevented = function() {}; + +/** + * @return {boolean} + * @nosideeffects + */ +jQuery.event.prototype.isImmediatePropagationStopped = function() {}; + +/** + * @return {boolean} + * @nosideeffects + */ +jQuery.event.prototype.isPropagationStopped = function() {}; + +/** @type {string} */ +jQuery.event.prototype.namespace; + +/** @type {Event} */ +jQuery.event.prototype.originalEvent; + +/** @type {number} */ +jQuery.event.prototype.pageX; + +/** @type {number} */ +jQuery.event.prototype.pageY; + +/** @return {undefined} */ +jQuery.event.prototype.preventDefault = function() {}; + +/** @type {Object.} */ +jQuery.event.prototype.props; + +/** @type {Element} */ +jQuery.event.prototype.relatedTarget; + +/** @type {*} */ +jQuery.event.prototype.result; + +/** @return {undefined} */ +jQuery.event.prototype.stopImmediatePropagation = function() {}; + +/** @return {undefined} */ +jQuery.event.prototype.stopPropagation = function() {}; + +/** @type {Element} */ +jQuery.event.prototype.target; + +/** @type {number} */ +jQuery.event.prototype.timeStamp; + +/** @type {string} */ +jQuery.event.prototype.type; + +/** @type {number} */ +jQuery.event.prototype.which; + +/** + * @param {(Object|boolean)} arg1 + * @param {...*} var_args + * @return {Object} + */ +jQuery.extend = function(arg1, var_args) {}; + +/** + * @param {(Object|boolean)} arg1 + * @param {...*} var_args + * @return {Object} + */ +jQuery.prototype.extend = function(arg1, var_args) {}; + +/** + * @param {(Object|boolean)} arg1 + * @param {...*} var_args + * @return {Object} + */ +$.extend = function(arg1, var_args) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.fadeIn = function(duration, arg2, callback) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.fadeOut = function(duration, arg2, callback) {}; + +/** + * @param {(string|number)} duration + * @param {number} opacity + * @param {(function()|string)=} arg3 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.fadeTo = function(duration, opacity, arg3, callback) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(string|function())=} easing + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.fadeToggle = function(duration, easing, callback) {}; + +/** + * @param {(jQuerySelector|function(number)|Element|jQuery)} arg1 + * @return {!jQuery} + */ +jQuery.prototype.filter = function(arg1) {}; + +/** + * @param {(jQuerySelector|jQuery|Element)} arg1 + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.find = function(arg1) {}; + +/** @return {!jQuery} */ +jQuery.prototype.first = function() {}; + +/** @see http://docs.jquery.com/Plugins/Authoring */ +jQuery.fn; + +/** @see http://docs.jquery.com/Plugins/Authoring */ +$.fn; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.focus = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.focusin = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.focusout = function(arg1, handler) {}; + +/** @const */ +jQuery.fx = {}; + +/** @const */ +$.fx = {}; + +/** @type {number} */ +jQuery.fx.interval; + +/** @type {number} */ +$.fx.interval; + +/** @type {boolean} */ +jQuery.fx.off; + +/** @type {boolean} */ +$.fx.off; + +/** + * @param {string} url + * @param {(Object.|string| + * function(string,string,jQuery.jqXHR))=} data + * @param {(function(string,string,jQuery.jqXHR)|string)=} success + * @param {string=} dataType + * @return {jQuery.jqXHR} + */ +jQuery.get = function(url, data, success, dataType) {}; + +/** + * @param {number=} index + * @return {(Element|Array.)} + * @nosideeffects + */ +jQuery.prototype.get = function(index) {}; + +/** + * @param {string} url + * @param {(Object.|string| + * function(string,string,jQuery.jqXHR))=} data + * @param {(function(string,string,jQuery.jqXHR)|string)=} success + * @param {string=} dataType + * @return {jQuery.jqXHR} + */ +$.get = function(url, data, success, dataType) {}; + +/** + * @param {string} url + * @param {(Object.|function(string,string,jQuery.jqXHR))=} data + * @param {function(string,string,jQuery.jqXHR)=} success + * @return {jQuery.jqXHR} + */ +jQuery.getJSON = function(url, data, success) {}; + +/** + * @param {string} url + * @param {(Object.|function(string,string,jQuery.jqXHR))=} data + * @param {function(string,string,jQuery.jqXHR)=} success + * @return {jQuery.jqXHR} + */ +$.getJSON = function(url, data, success) {}; + +/** + * @param {string} url + * @param {function(Node,string,jQuery.jqXHR)=} success + * @return {jQuery.jqXHR} + */ +jQuery.getScript = function(url, success) {}; + +/** + * @param {string} url + * @param {function(Node,string,jQuery.jqXHR)=} success + * @return {jQuery.jqXHR} + */ +$.getScript = function(url, success) {}; + +/** @param {string} code */ +jQuery.globalEval = function(code) {}; + +/** @param {string} code */ +$.globalEval = function(code) {}; + +/** + * @param {Array.<*>} arr + * @param {function(*,number)} fnc + * @param {boolean=} invert + * @return {Array.<*>} + */ +jQuery.grep = function(arr, fnc, invert) {}; + +/** + * @param {Array.<*>} arr + * @param {function(*,number)} fnc + * @param {boolean=} invert + * @return {Array.<*>} + */ +$.grep = function(arr, fnc, invert) {}; + +/** + * @param {(string|Element)} arg1 + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.has = function(arg1) {}; + +/** + * @param {string} className + * @return {boolean} + * @nosideeffects + */ +jQuery.prototype.hasClass = function(className) {}; + +/** + * @param {Element} elem + * @return {boolean} + * @nosideeffects + */ +jQuery.hasData = function(elem) {}; + +/** + * @param {Element} elem + * @return {boolean} + * @nosideeffects + */ +$.hasData = function(elem) {}; + +/** + * @param {(string|number|function(number,number))=} arg1 + * @return {(number|!jQuery)} + */ +jQuery.prototype.height = function(arg1) {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.hide = function(duration, arg2, callback) {}; + +/** @param {boolean} hold */ +jQuery.holdReady = function(hold) {}; + +/** @param {boolean} hold */ +$.holdReady = function(hold) {}; + +/** + * @param {function(!jQuery.event=)} arg1 + * @param {function(!jQuery.event=)=} handlerOut + * @return {!jQuery} + */ +jQuery.prototype.hover = function(arg1, handlerOut) {}; + +/** + * @param {(string|function(number,string))=} arg1 + * @return {(string|!jQuery)} + */ +jQuery.prototype.html = function(arg1) {}; + +/** + * @param {*} value + * @param {Array.<*>} arr + * @param {number=} fromIndex + * @return {number} + * @nosideeffects + */ +jQuery.inArray = function(value, arr, fromIndex) {}; + +/** + * @param {*} value + * @param {Array.<*>} arr + * @param {number=} fromIndex + * @return {number} + * @nosideeffects + */ +$.inArray = function(value, arr, fromIndex) {}; + +/** + * @param {(jQuerySelector|Element|jQuery)=} arg1 + * @return {number} + */ +jQuery.prototype.index = function(arg1) {}; + +/** + * @return {number} + * @nosideeffects + */ +jQuery.prototype.innerHeight = function() {}; + +/** + * @return {number} + * @nosideeffects + */ +jQuery.prototype.innerWidth = function() {}; + +/** + * @param {(jQuerySelector|Element|jQuery)} target + * @return {!jQuery} + */ +jQuery.prototype.insertAfter = function(target) {}; + +/** + * @param {(jQuerySelector|Element|jQuery)} target + * @return {!jQuery} + */ +jQuery.prototype.insertBefore = function(target) {}; + +/** + * @param {(jQuerySelector|function(number)|jQuery|Element)} arg1 + * @return {boolean} + */ +jQuery.prototype.is = function(arg1) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isArray = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +$.isArray = function(obj) {}; + +/** + * @param {Object} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isEmptyObject = function(obj) {}; + +/** + * @param {Object} obj + * @return {boolean} + * @nosideeffects + */ +$.isEmptyObject = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isFunction = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +$.isFunction = function(obj) {}; + +/** + * @param {*} value + * @return {boolean} + * @nosideeffects + */ +jQuery.isNumeric = function(value) {}; + +/** + * @param {*} value + * @return {boolean} + * @nosideeffects + */ +$.isNumeric = function(value) {}; + +/** + * @param {Object} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isPlainObject = function(obj) {}; + +/** + * @param {Object} obj + * @return {boolean} + * @nosideeffects + */ +$.isPlainObject = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +jQuery.isWindow = function(obj) {}; + +/** + * @param {*} obj + * @return {boolean} + * @nosideeffects + */ +$.isWindow = function(obj) {}; + +/** + * @param {Element} node + * @return {boolean} + * @nosideeffects + */ +jQuery.isXMLDoc = function(node) {}; + +/** + * @param {Element} node + * @return {boolean} + * @nosideeffects + */ +$.isXMLDoc = function(node) {}; + +/** @type {string} */ +jQuery.prototype.jquery; + +/** + * @constructor + * @extends {XMLHttpRequest} + * @implements {jQuery.Promise} + * @private + * @see http://api.jquery.com/jQuery.ajax/#jqXHR + */ +jQuery.jqXHR = function () {}; + +/** + * @override + * @param {jQueryCallback} alwaysCallbacks + * @param {jQueryCallback=} alwaysCallbacks2 + * @return {jQuery.jqXHR} + */ +jQuery.jqXHR.prototype.always = + function(alwaysCallbacks, alwaysCallbacks2) {}; + +/** + * @deprecated + * @param {function()} callback + * @return {jQuery.jqXHR} +*/ +jQuery.jqXHR.prototype.complete = function (callback) {}; + +/** + * @override + * @param {jQueryCallback} doneCallbacks + * @return {jQuery.jqXHR} + */ +jQuery.jqXHR.prototype.done = function(doneCallbacks) {}; + +/** + * @deprecated + * @param {function()} callback + * @return {jQuery.jqXHR} +*/ +jQuery.jqXHR.prototype.error = function (callback) {}; + +/** + * @override + * @param {jQueryCallback} failCallbacks + * @return {jQuery.jqXHR} + */ +jQuery.jqXHR.prototype.fail = function(failCallbacks) {}; + +/** + * @deprecated + * @override + * @return {boolean} + * @nosideeffects + */ +jQuery.jqXHR.prototype.isRejected = function() {}; + +/** + * @deprecated + * @override + * @return {boolean} + * @nosideeffects + */ +jQuery.jqXHR.prototype.isResolved = function() {}; + +/** + * @deprecated + * @override + */ +jQuery.jqXHR.prototype.onreadystatechange = function (callback) {}; + +/** + * @param {function()=} doneFilter + * @param {function()=} failFilter + * @param {function()=} progressFilter + * @return {jQuery.jqXHR} + */ +jQuery.jqXHR.prototype.pipe = + function(doneFilter, failFilter, progressFilter) {}; + +/** + * @deprecated + * @param {function()} callback + * @return {jQuery.jqXHR} +*/ +jQuery.jqXHR.prototype.success = function (callback) {}; + +/** + * @override + * @param {jQueryCallback} doneCallbacks + * @param {jQueryCallback=} failCallbacks + * @param {jQueryCallback=} progressCallbacks + * @return {jQuery.jqXHR} + */ +jQuery.jqXHR.prototype.then = + function(doneCallbacks, failCallbacks, progressCallbacks) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.keydown = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.keypress = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.keyup = function(arg1, handler) {}; + +/** @return {!jQuery} */ +jQuery.prototype.last = function() {}; + +/** @type {number} */ +jQuery.prototype.length; + +/** + * @deprecated + * @param {(string|Object)} arg1 + * @param {(function(!jQuery.event=)|Object)=} arg2 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.live = function(arg1, arg2, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.|string)} arg1 + * @param {(function(!jQuery.event=)|Object.|string)=} arg2 + * @param {function(string,string,XMLHttpRequest)=} complete + * @return {!jQuery} + */ +jQuery.prototype.load = function(arg1, arg2, complete) {}; + +/** + * @param {*} obj + * @return {Array.<*>} + */ +jQuery.makeArray = function(obj) {}; + +/** + * @param {*} obj + * @return {Array.<*>} + */ +$.makeArray = function(obj) {}; + +/** + * @param {(Array.<*>|Object.)} arg1 + * @param {(function(*,number)|function(*,(string|number)))} callback + * @return {Array.<*>} + */ +jQuery.map = function(arg1, callback) {}; + +/** + * @param {function(number,Element)} callback + * @return {!jQuery} + */ +jQuery.prototype.map = function(callback) {}; + +/** + * @param {(Array.<*>|Object.)} arg1 + * @param {(function(*,number)|function(*,(string|number)))} callback + * @return {Array.<*>} + */ +$.map = function(arg1, callback) {}; + +/** + * @param {Array.<*>} first + * @param {Array.<*>} second + * @return {Array.<*>} + */ +jQuery.merge = function(first, second) {}; + +/** + * @param {Array.<*>} first + * @param {Array.<*>} second + * @return {Array.<*>} + */ +$.merge = function(first, second) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mousedown = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseenter = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseleave = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mousemove = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseout = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseover = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.mouseup = function(arg1, handler) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.next = function(selector) {}; + +/** + * @param {string=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.nextAll = function(selector) {}; + +/** + * @param {(jQuerySelector|Element)=} arg1 + * @param {jQuerySelector=} filter + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.nextUntil = function(arg1, filter) {}; + +/** + * @param {boolean=} removeAll + * @return {Object} + */ +jQuery.noConflict = function(removeAll) {}; + +/** + * @param {boolean=} removeAll + * @return {Object} + */ +$.noConflict = function(removeAll) {}; + +/** + * @return {function()} + * @nosideeffects + */ +jQuery.noop = function() {}; + +/** + * @return {function()} + * @nosideeffects + */ +$.noop = function() {}; + +/** + * @param {(jQuerySelector|Array.|function(number)|jQuery)} arg1 + * @return {!jQuery} + */ +jQuery.prototype.not = function(arg1) {}; + +/** + * @return {number} + * @nosideeffects + */ +jQuery.now = function() {}; + +/** + * @return {number} + * @nosideeffects + */ +$.now = function() {}; + +/** + * @param {(string|Object.)=} arg1 + * @param {(string|function(!jQuery.event=))=} selector + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.off = function(arg1, selector, handler) {}; + +/** + * @param {({left:number,top:number}| + * function(number,{top:number,left:number}))=} arg1 + * @return {({left:number,top:number}|!jQuery)} + */ +jQuery.prototype.offset = function(arg1) {}; + +/** + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.offsetParent = function() {}; + +/** + * @param {(string|Object.)} arg1 + * @param {*=} selector + * @param {*=} data + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.on = function(arg1, selector, data, handler) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {*=} arg2 + * @param {*=} arg3 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.one = function(arg1, arg2, arg3, handler) {}; + +/** + * @param {boolean=} includeMargin + * @return {number} + * @nosideeffects + */ +jQuery.prototype.outerHeight = function(includeMargin) {}; + +/** + * @param {boolean=} includeMargin + * @return {number} + * @nosideeffects + */ +jQuery.prototype.outerWidth = function(includeMargin) {}; + +/** + * @param {(Object.|Array.>)} obj + * @param {boolean=} traditional + * @return {string} + */ +jQuery.param = function(obj, traditional) {}; + +/** + * @param {(Object.|Array.>)} obj + * @param {boolean=} traditional + * @return {string} + */ +$.param = function(obj, traditional) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.parent = function(selector) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.parents = function(selector) {}; + +/** + * @param {(jQuerySelector|Element)=} arg1 + * @param {jQuerySelector=} filter + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.parentsUntil = function(arg1, filter) {}; + +/** + * @param {string} json + * @return {Object.} + */ +jQuery.parseJSON = function(json) {}; + +/** + * @param {string} json + * @return {Object.} + */ +$.parseJSON = function(json) {}; + +/** + * @param {string} data + * @return {Document} + */ +jQuery.parseXML = function(data) {}; + +/** + * @param {string} data + * @return {Document} + */ +$.parseXML = function(data) {}; + +/** + * @return {{left:number,top:number}} + * @nosideeffects + */ +jQuery.prototype.position = function() {}; + +/** + * @param {string} url + * @param {(Object.|string| + * function(string,string,jQuery.jqXHR))=} data + * @param {(function(string,string,jQuery.jqXHR)|string)=} success + * @param {string=} dataType + * @return {jQuery.jqXHR} + */ +jQuery.post = function(url, data, success, dataType) {}; + +/** + * @param {string} url + * @param {(Object.|string| + * function(string,string,jQuery.jqXHR))=} data + * @param {(function(string,string,jQuery.jqXHR)|string)=} success + * @param {string=} dataType + * @return {jQuery.jqXHR} + */ +$.post = function(url, data, success, dataType) {}; + +/** + * @param {(string|Element|jQuery|function(number,string))} arg1 + * @param {(string|Element|jQuery)=} content + * @return {!jQuery} + */ +jQuery.prototype.prepend = function(arg1, content) {}; + +/** + * @param {(jQuerySelector|Element|jQuery)} target + * @return {!jQuery} + */ +jQuery.prototype.prependTo = function(target) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.prev = function(selector) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.prevAll = function(selector) {}; + +/** + * @param {(jQuerySelector|Element)=} arg1 + * @param {jQuerySelector=} filter + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.prevUntil = function(arg1, filter) {}; + +/** + * @param {(string|Object)=} type + * @param {Object=} target + * @return {jQuery.Promise} + */ +jQuery.prototype.promise = function(type, target) {}; + +/** + * @interface + * @private + * @see http://api.jquery.com/Types/#Promise + */ +jQuery.Promise = function () {}; + +/** + * @param {jQueryCallback} alwaysCallbacks + * @param {jQueryCallback=} alwaysCallbacks2 + * @return {jQuery.Promise} + */ +jQuery.Promise.prototype.always = + function(alwaysCallbacks, alwaysCallbacks2) {}; + +/** + * @param {jQueryCallback} doneCallbacks + * @return {jQuery.Promise} + */ +jQuery.Promise.prototype.done = function(doneCallbacks) {}; + +/** + * @param {jQueryCallback} failCallbacks + * @return {jQuery.Promise} + */ +jQuery.Promise.prototype.fail = function(failCallbacks) {}; + +/** + * @deprecated + * @return {boolean} + * @nosideeffects + */ +jQuery.Promise.prototype.isRejected = function() {}; + +/** + * @deprecated + * @return {boolean} + * @nosideeffects + */ +jQuery.Promise.prototype.isResolved = function() {}; + +/** + * @param {function()=} doneFilter + * @param {function()=} failFilter + * @param {function()=} progressFilter + * @return {jQuery.Promise} + */ +jQuery.Promise.prototype.pipe = + function(doneFilter, failFilter, progressFilter) {}; + +/** + * @param {jQueryCallback} doneCallbacks + * @param {jQueryCallback=} failCallbacks + * @param {jQueryCallback=} progressCallbacks + * @return {jQuery.Promise} + */ +jQuery.Promise.prototype.then = + function(doneCallbacks, failCallbacks, progressCallbacks) {}; + +/** + * @param {(string|Object.)} arg1 + * @param {(string|number|boolean|function(number,String))=} arg2 + * @return {(string|boolean|!jQuery)} + */ +jQuery.prototype.prop = function(arg1, arg2) {}; + +/** + * @param {...*} var_args + * @return {function()} + */ +jQuery.proxy = function(var_args) {}; + +/** + * @param {...*} var_args + * @return {function()} + */ +$.proxy = function(var_args) {}; + +/** + * @param {Array.} elements + * @param {string=} name + * @param {Array.<*>=} args + * @return {!jQuery} + */ +jQuery.prototype.pushStack = function(elements, name, args) {}; + +/** + * @param {(string|Array.|function(function()))=} queueName + * @param {(Array.|function(function()))=} arg2 + * @return {(Array.|!jQuery)} + */ +jQuery.prototype.queue = function(queueName, arg2) {}; + +/** + * @param {Element} elem + * @param {string=} queueName + * @param {(Array.|function())=} arg3 + * @return {(Array.|!jQuery)} + */ +jQuery.queue = function(elem, queueName, arg3) {}; + +/** + * @param {Element} elem + * @param {string=} queueName + * @param {(Array.|function())=} arg3 + * @return {(Array.|!jQuery)} + */ +$.queue = function(elem, queueName, arg3) {}; + +/** + * @param {function()} handler + * @return {!jQuery} + */ +jQuery.prototype.ready = function(handler) {}; + +/** + * @param {string=} selector + * @return {!jQuery} + */ +jQuery.prototype.remove = function(selector) {}; + +/** + * @param {string} attributeName + * @return {!jQuery} + */ +jQuery.prototype.removeAttr = function(attributeName) {}; + +/** + * @param {(string|function(number,string))=} arg1 + * @return {!jQuery} + */ +jQuery.prototype.removeClass = function(arg1) {}; + +/** + * @param {(string|Array.)=} arg1 + * @return {!jQuery} + */ +jQuery.prototype.removeData = function(arg1) {}; + +/** + * @param {Element} elem + * @param {string=} name + * @return {!jQuery} + */ +jQuery.removeData = function(elem, name) {}; + +/** + * @param {Element} elem + * @param {string=} name + * @return {!jQuery} + */ +$.removeData = function(elem, name) {}; + +/** + * @param {string} propertyName + * @return {!jQuery} + */ +jQuery.prototype.removeProp = function(propertyName) {}; + +/** + * @param {jQuerySelector} target + * @return {!jQuery} + */ +jQuery.prototype.replaceAll = function(target) {}; + +/** + * @param {(string|Element|jQuery|function())} arg1 + * @return {!jQuery} + */ +jQuery.prototype.replaceWith = function(arg1) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.resize = function(arg1, handler) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.scroll = function(arg1, handler) {}; + +/** + * @param {number=} value + * @return {(number|!jQuery)} + */ +jQuery.prototype.scrollLeft = function(value) {}; + +/** + * @param {number=} value + * @return {(number|!jQuery)} + */ +jQuery.prototype.scrollTop = function(value) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.select = function(arg1, handler) {}; + +/** + * @return {string} + * @nosideeffects + */ +jQuery.prototype.serialize = function() {}; + +/** + * @return {Array.>} + * @nosideeffects + */ +jQuery.prototype.serializeArray = function() {}; + +/** + * @param {(string|number|function())=} duration + * @param {(function()|string)=} arg2 + * @param {function()=} callback + * @return {!jQuery} + */ +jQuery.prototype.show = function(duration, arg2, callback) {}; + +/** + * @param {jQuerySelector=} selector + * @return {!jQuery} + * @nosideeffects + */ +jQuery.prototype.siblings = function(selector) {}; + +/** + * @return {number} + * @nosideeffects + */ +jQuery.prototype.size = function() {}; + +/** + * @param {number} start + * @param {number=} end + * @return {!jQuery} + */ +jQuery.prototype.slice = function(start, end) {}; + +/** + * @param {(Object.|string|number)=} optionsOrDuration + * @param {(function()|string)=} completeOrEasing + * @param {function()=} complete + * @return {!jQuery} + */ +jQuery.prototype.slideDown = + function(optionsOrDuration, completeOrEasing, complete) {}; + +/** + * @param {(Object.|string|number)=} optionsOrDuration + * @param {(function()|string)=} completeOrEasing + * @param {function()=} complete + * @return {!jQuery} + */ +jQuery.prototype.slideToggle = + function(optionsOrDuration, completeOrEasing, complete) {}; + +/** + * @param {(Object.|string|number)=} optionsOrDuration + * @param {(function()|string)=} completeOrEasing + * @param {function()=} complete + * @return {!jQuery} + */ +jQuery.prototype.slideUp = + function(optionsOrDuration, completeOrEasing, complete) {}; + +/** + * @param {(boolean|string)=} arg1 + * @param {boolean=} arg2 + * @param {boolean=} jumpToEnd + * @return {!jQuery} + */ +jQuery.prototype.stop = function(arg1, arg2, jumpToEnd) {}; + +/** + * @deprecated + * @return {!jQuery} + * @nosideeffects + */ +jQuery.sub = function() {}; + +/** + * @deprecated + * @return {!jQuery} + * @nosideeffects + */ +$.sub = function() {}; + +/** + * @param {(function(!jQuery.event=)|Object.)=} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.submit = function(arg1, handler) {}; + +/** @type {Object.} */ +jQuery.support; + +/** @type {Object.} */ +$.support; + +/** @type {boolean} */ +jQuery.support.boxModel; + +/** @type {boolean} */ +$.support.boxModel; + +/** @type {boolean} */ +jQuery.support.changeBubbles; + +/** @type {boolean} */ +$.support.changeBubbles; + +/** @type {boolean} */ +jQuery.support.cssFloat; + +/** @type {boolean} */ +$.support.cssFloat; + +/** @type {boolean} */ +jQuery.support.fixedPosition; + +/** @type {boolean} */ +$.support.fixedPosition; + +/** @type {boolean} */ +jQuery.support.hrefNormalized; + +/** @type {boolean} */ +$.support.hrefNormalized; + +/** @type {boolean} */ +jQuery.support.htmlSerialize; + +/** @type {boolean} */ +$.support.htmlSerialize; + +/** @type {boolean} */ +jQuery.support.leadingWhitespace; + +/** @type {boolean} */ +$.support.leadingWhitespace; + +/** @type {boolean} */ +jQuery.support.noCloneEvent; + +/** @type {boolean} */ +$.support.noCloneEvent; + +/** @type {boolean} */ +jQuery.support.opacity; + +/** @type {boolean} */ +$.support.opacity; + +/** @type {boolean} */ +jQuery.support.scriptEval; + +/** @type {boolean} */ +$.support.scriptEval; + +/** @type {boolean} */ +jQuery.support.style; + +/** @type {boolean} */ +$.support.style; + +/** @type {boolean} */ +jQuery.support.submitBubbles; + +/** @type {boolean} */ +$.support.submitBubbles; + +/** @type {boolean} */ +jQuery.support.tbody; + +/** @type {boolean} */ +$.support.tbody; + +/** + * @param {(string|function(number,string))=} arg1 + * @return {(string|!jQuery)} + */ +jQuery.prototype.text = function(arg1) {}; + +/** + * @return {Array.} + * @nosideeffects + */ +jQuery.prototype.toArray = function() {}; + +/** + * @param {(function(!jQuery.event=)|string|number|function()|boolean)=} arg1 + * @param {(function(!jQuery.event=)|function()|string)=} arg2 + * @param {(function(!jQuery.event=)|function())=} arg3 + * @return {!jQuery} + */ +jQuery.prototype.toggle = function(arg1, arg2, arg3) {}; + +/** + * @param {(string|boolean|function(number,string,boolean))=} arg1 + * @param {boolean=} flag + * @return {!jQuery} + */ +jQuery.prototype.toggleClass = function(arg1, flag) {}; + +/** + * @param {(string|jQuery.event)} arg1 + * @param {...*} var_args + * @return {!jQuery} + */ +jQuery.prototype.trigger = function(arg1, var_args) {}; + +/** + * @param {string|jQuery.event} eventType + * @param {Array.<*>=} extraParameters + * @return {*} + */ +jQuery.prototype.triggerHandler = function(eventType, extraParameters) {}; + +/** + * @param {string} str + * @return {string} + * @nosideeffects + */ +jQuery.trim = function(str) {}; + +/** + * @param {string} str + * @return {string} + * @nosideeffects + */ +$.trim = function(str) {}; + +/** + * @param {*} obj + * @return {string} + * @nosideeffects + */ +jQuery.type = function(obj) {}; + +/** + * @param {*} obj + * @return {string} + * @nosideeffects + */ +$.type = function(obj) {}; + +/** + * @param {(string|function(!jQuery.event=)|jQuery.event)=} arg1 + * @param {(function(!jQuery.event=)|boolean)=} arg2 + * @return {!jQuery} + */ +jQuery.prototype.unbind = function(arg1, arg2) {}; + +/** + * @param {string=} arg1 + * @param {(string|Object.)=} arg2 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.undelegate = function(arg1, arg2, handler) {}; + +/** + * @param {Array.} arr + * @return {Array.} + */ +jQuery.unique = function(arr) {}; + +/** + * @param {Array.} arr + * @return {Array.} + */ +$.unique = function(arr) {}; + +/** + * @param {(function(!jQuery.event=)|Object.)} arg1 + * @param {function(!jQuery.event=)=} handler + * @return {!jQuery} + */ +jQuery.prototype.unload = function(arg1, handler) {}; + +/** @return {!jQuery} */ +jQuery.prototype.unwrap = function() {}; + +/** + * @param {(string|Array.|function(number,*))=} arg1 + * @return {(string|number|Array.|!jQuery)} + */ +jQuery.prototype.val = function(arg1) {}; + +/** + * @param {jQuery.deferred} deferred + * @param {...jQuery.deferred} deferreds + * @return {jQuery.Promise} + */ +jQuery.when = function(deferred, deferreds) {}; + +/** + * @param {jQuery.deferred} deferred + * @param {...jQuery.deferred} deferreds + * @return {jQuery.Promise} + */ +$.when = function(deferred, deferreds) {}; + +/** + * @param {(string|number|function(number,number))=} arg1 + * @return {(number|!jQuery)} + */ +jQuery.prototype.width = function(arg1) {}; + +/** + * @param {(string|jQuerySelector|Element|jQuery|function(number))} arg1 + * @return {!jQuery} + */ +jQuery.prototype.wrap = function(arg1) {}; + +/** + * @param {(string|jQuerySelector|Element|jQuery)} wrappingElement + * @return {!jQuery} + */ +jQuery.prototype.wrapAll = function(wrappingElement) {}; + +/** + * @param {(string|function(number))} arg1 + * @return {!jQuery} + */ +jQuery.prototype.wrapInner = function(arg1) {}; From 0ae1cd7cf562f0b2a5dd8254d0b6bcc9ea2036dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 2 Jul 2014 07:37:27 +0200 Subject: [PATCH 08/24] Fix a type issue in jquery-1.7 externs See https://github.com/google/closure-compiler/issues/176 --- externs/jquery-1.7.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/externs/jquery-1.7.js b/externs/jquery-1.7.js index c0486a7cbd..554d9a01d3 100644 --- a/externs/jquery-1.7.js +++ b/externs/jquery-1.7.js @@ -1017,16 +1017,16 @@ $.get = function(url, data, success, dataType) {}; /** * @param {string} url - * @param {(Object.|function(string,string,jQuery.jqXHR))=} data - * @param {function(string,string,jQuery.jqXHR)=} success + * @param {(Object.|function(Object,string,jQuery.jqXHR))=} data + * @param {function(Object,string,jQuery.jqXHR)=} success * @return {jQuery.jqXHR} */ jQuery.getJSON = function(url, data, success) {}; /** * @param {string} url - * @param {(Object.|function(string,string,jQuery.jqXHR))=} data - * @param {function(string,string,jQuery.jqXHR)=} success + * @param {(Object.|function(Object,string,jQuery.jqXHR))=} data + * @param {function(Object,string,jQuery.jqXHR)=} success * @return {jQuery.jqXHR} */ $.getJSON = function(url, data, success) {}; From 35888d1dc654e69b6d436b15483e18b17fe450e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 1 Jul 2014 18:15:27 +0200 Subject: [PATCH 09/24] Use build.js for compiling the examples --- build.py | 89 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 66 insertions(+), 23 deletions(-) diff --git a/build.py b/build.py index 359be58244..23f91ce884 100755 --- a/build.py +++ b/build.py @@ -267,40 +267,83 @@ def examples_star_json(name, match): # Note that we use the proper way in buildcfg/examples-all.json, which # is only used to check the examples code using the compiler. content = json.dumps({ - 'id': match.group('id'), - 'inherits': '../../buildcfg/base.json', - 'inputs': [ - '../examples/%(id)s.js' % match.groupdict() + "exports": [], + "src": ["src/**/*.js", "examples/%(id)s.js" % match.groupdict()], + "compile": { + "externs": [ + "externs/bingmaps.js", + "externs/bootstrap.js", + "externs/closure-compiler.js", + "externs/example.js", + "externs/geojson.js", + "externs/jquery-1.7.js", + "externs/oli.js", + "externs/olx.js", + "externs/proj4js.js", + "externs/tilejson.js", + "externs/topojson.js", + "externs/vbarray.js" ], - 'externs': [ - '//jquery-1.7.js', - '../externs/bingmaps.js', - '../externs/bootstrap.js', - '../externs/closure-compiler.js', - '../externs/example.js', - '../externs/geojson.js', - '../externs/oli.js', - '../externs/olx.js', - '../externs/proj4js.js', - '../externs/tilejson.js', - '../externs/topojson.js', - '../externs/vbarray.js', + "define": [ + "goog.dom.ASSUME_STANDARDS_MODE=true", + "goog.DEBUG=false" ], + "jscomp_error": [ + "accessControls", + "ambiguousFunctionDecl", + "checkDebuggerStatement", + "checkEventfulObjectDisposal", + "checkProvides", + "checkRegExp", + "checkStructDictInheritance", + "checkTypes", + "checkVars", + "const", + "constantProperty", + "deprecated", + "duplicate", + "duplicateMessage", + "es3", + "externsValidation", + "fileoverviewTags", + "globalThis", + "internetExplorerChecks", + "invalidCasts", + "misplacedTypeAnnotation", + "missingProperties", + "nonStandardJsDocs", + "strictModuleDepCheck", + "suspiciousCode", + "typeInvalidation", + "tweakValidation", + "undefinedNames", + "undefinedVars", + "unknownDefines", + "uselessCode", + "violatedModuleDep", + "visibility" + ], + "jscomp_off": [ + "es5Strict" + ], + "compilation_level": "ADVANCED_OPTIMIZATIONS", + "output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();", + "use_types_for_optimization": True, + "manage_closure_dependencies": True + } }) with open(t.name, 'wb') as f: f.write(content) - dependencies = [__file__, 'buildcfg/base.json'] - return Target(name, action=action, dependencies=dependencies) + return Target(name, action=action, dependencies=[__file__]) @rule(r'\Abuild/examples/(?P.*).combined.js\Z') def examples_star_combined_js(name, match): def action(t): - t.output('%(JAVA)s', '-server', '-XX:+TieredCompilation', '-jar', - PLOVR_JAR, 'build', 'build/examples/%(id)s.json' % - match.groupdict()) + config = 'build/examples/%(id)s.json' % match.groupdict() + t.run('node', 'tasks/build.js', config, name) report_sizes(t) - dependencies = [PLOVR_JAR, SRC, SHADER_SRC, 'buildcfg/base.json', + dependencies = [SRC, SHADER_SRC, 'examples/%(id)s.js' % match.groupdict(), 'build/examples/%(id)s.json' % match.groupdict()] return Target(name, action=action, dependencies=dependencies) From 8c4a55cc650586133e01738d7029b8e3e83ec8b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 1 Jul 2014 18:36:58 +0200 Subject: [PATCH 10/24] Use build.js for compiling the examples all at once --- build.py | 8 ++-- buildcfg/examples-all.json | 82 +++++++++++++++++++++++++++++--------- 2 files changed, 68 insertions(+), 22 deletions(-) diff --git a/build.py b/build.py index 23f91ce884..6d197aa730 100755 --- a/build.py +++ b/build.py @@ -245,11 +245,11 @@ def examples_examples_list_js(t): t.run('%(PYTHON)s', 'bin/exampleparser.py', 'examples', 'examples') -@target('build/examples/all.combined.js', 'build/examples/all.js', PLOVR_JAR, - SRC, SHADER_SRC, 'buildcfg/base.json', 'build/examples/all.json') +@target('build/examples/all.combined.js', 'build/examples/all.js', + SRC, SHADER_SRC, 'buildcfg/examples-all.json') def build_examples_all_combined_js(t): - t.output('%(JAVA)s', '-server', '-XX:+TieredCompilation', '-jar', - PLOVR_JAR, 'build', 'buildcfg/examples-all.json') + t.run('node', 'tasks/build.js', 'buildcfg/examples-all.json', + 'build/examples/all.combined.js') report_sizes(t) diff --git a/buildcfg/examples-all.json b/buildcfg/examples-all.json index e0c671503c..b02dc3bc66 100644 --- a/buildcfg/examples-all.json +++ b/buildcfg/examples-all.json @@ -1,21 +1,67 @@ { + "exports": [], + "src": ["src/**/*.js", "build/examples/all.js"], + "compile": { "externs": [ - "//jquery-1.7.js", - "../externs/bingmaps.js", - "../externs/bootstrap.js", - "../externs/closure-compiler.js", - "../externs/example.js", - "../externs/geojson.js", - "../externs/oli.js", - "../externs/proj4js.js", - "../externs/tilejson.js", - "../externs/topojson.js", - "../externs/vbarray.js" - ], - "id": "simple", - "inherits": "base.json", - "inputs": [ - "../build/examples/all.js", - "../externs/olx.js" - ] + "externs/bingmaps.js", + "externs/bootstrap.js", + "externs/closure-compiler.js", + "externs/example.js", + "externs/geojson.js", + "externs/jquery-1.7.js", + "externs/oli.js", + "externs/olx.js", + "externs/proj4js.js", + "externs/tilejson.js", + "externs/topojson.js", + "externs/vbarray.js" + ], + "define": [ + "goog.dom.ASSUME_STANDARDS_MODE=true", + "goog.DEBUG=false" + ], + "jscomp_error": [ + "accessControls", + "ambiguousFunctionDecl", + "checkDebuggerStatement", + "checkEventfulObjectDisposal", + "checkProvides", + "checkRegExp", + "checkStructDictInheritance", + "checkTypes", + "checkVars", + "const", + "constantProperty", + "deprecated", + "duplicate", + "duplicateMessage", + "es3", + "externsValidation", + "fileoverviewTags", + "globalThis", + "internetExplorerChecks", + "invalidCasts", + "misplacedTypeAnnotation", + "missingProperties", + "nonStandardJsDocs", + "strictModuleDepCheck", + "suspiciousCode", + "typeInvalidation", + "tweakValidation", + "undefinedNames", + "undefinedVars", + "unknownDefines", + "uselessCode", + "violatedModuleDep", + "visibility" + ], + "jscomp_off": [ + "es5Strict" + ], + "compilation_level": "ADVANCED_OPTIMIZATIONS", + "output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();", + "use_types_for_optimization": true, + "manage_closure_dependencies": true + + } } From 167d13b4f61bb899eed5a19b5f6b117a05522f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 2 Jul 2014 08:15:50 +0200 Subject: [PATCH 11/24] Use closure-util's Closure lib for the check-requires target --- build.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/build.py b/build.py index 6d197aa730..6028de2761 100755 --- a/build.py +++ b/build.py @@ -408,19 +408,19 @@ def _strip_comments(lines): @target('build/check-requires-timestamp', SRC, EXAMPLES_SRC, SHADER_SRC, SPEC) def build_check_requires_timestamp(t): - from zipfile import ZipFile unused_count = 0 all_provides = set() - zf = ZipFile(PLOVR_JAR) - for zi in zf.infolist(): - if zi.filename.endswith('.js'): - if not zi.filename.startswith('closure/goog/'): + closure_lib_path = output('node', '-e', + 'process.stdout.write(require("closure-util").getLibraryPath())') + for filename in ifind(closure_lib_path): + if filename.endswith('.js'): + if not re.match(r'.*/closure/goog/', filename): continue # Skip goog.i18n because it contains so many modules that it causes # the generated regular expression to exceed Python's limits - if zi.filename.startswith('closure/goog/i18n/'): + if re.match(r'.*/closure/goog/i18n/', filename): continue - for line in zf.open(zi, 'rU'): + for line in open(filename, 'rU'): m = re.match(r'goog.provide\(\'(.*)\'\);', line) if m: all_provides.add(m.group(1)) From a157ecd788eea1c1a605d61b2014e04cb529b55f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 2 Jul 2014 10:46:19 +0200 Subject: [PATCH 12/24] Make compiler happy by replacing 0e6 by 0 --- examples/geojson.js | 4 ++-- examples/modify-test.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/geojson.js b/examples/geojson.js index fe22fd08e0..1f1dea970b 100644 --- a/examples/geojson.js +++ b/examples/geojson.js @@ -144,7 +144,7 @@ var vectorSource = new ol.source.GeoJSON( 'type': 'MultiPolygon', 'coordinates': [ [[[-5e6, 6e6], [-5e6, 8e6], [-3e6, 8e6], [-3e6, 6e6]]], - [[[-2e6, 6e6], [-2e6, 8e6], [0e6, 8e6], [0e6, 6e6]]], + [[[-2e6, 6e6], [-2e6, 8e6], [0, 8e6], [0, 6e6]]], [[[1e6, 6e6], [1e6, 8e6], [3e6, 8e6], [3e6, 6e6]]] ] } @@ -156,7 +156,7 @@ var vectorSource = new ol.source.GeoJSON( 'geometries': [ { 'type': 'LineString', - 'coordinates': [[-5e6, -5e6], [0e6, -5e6]] + 'coordinates': [[-5e6, -5e6], [0, -5e6]] }, { 'type': 'Point', diff --git a/examples/modify-test.js b/examples/modify-test.js index 230889d67f..d0f46dd0f9 100644 --- a/examples/modify-test.js +++ b/examples/modify-test.js @@ -127,8 +127,8 @@ var source = new ol.source.GeoJSON( 'coordinates': [ [[[-5e6, 6e6], [-5e6, 8e6], [-3e6, 8e6], [-3e6, 6e6], [-5e6, 6e6]]], - [[[-2e6, 6e6], [-2e6, 8e6], [0e6, 8e6], - [0e6, 6e6], [-2e6, 6e6]]], + [[[-2e6, 6e6], [-2e6, 8e6], [0, 8e6], + [0, 6e6], [-2e6, 6e6]]], [[[1e6, 6e6], [1e6, 8e6], [3e6, 8e6], [3e6, 6e6], [1e6, 6e6]]] ] @@ -141,7 +141,7 @@ var source = new ol.source.GeoJSON( 'geometries': [ { 'type': 'LineString', - 'coordinates': [[-5e6, -5e6], [0e6, -5e6]] + 'coordinates': [[-5e6, -5e6], [0, -5e6]] }, { 'type': 'Point', From f54398eda3bb404c4c8798b8e816c39b0a255a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 2 Jul 2014 12:20:48 +0200 Subject: [PATCH 13/24] compilation_level is now just ADVANCED and SIMPLE --- build.py | 2 +- buildcfg/examples-all.json | 2 +- buildcfg/ol-all.json | 2 +- buildcfg/ol-simple.json | 2 +- buildcfg/ol.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.py b/build.py index 6028de2761..56077ab14a 100755 --- a/build.py +++ b/build.py @@ -326,7 +326,7 @@ def examples_star_json(name, match): "jscomp_off": [ "es5Strict" ], - "compilation_level": "ADVANCED_OPTIMIZATIONS", + "compilation_level": "ADVANCED", "output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();", "use_types_for_optimization": True, "manage_closure_dependencies": True diff --git a/buildcfg/examples-all.json b/buildcfg/examples-all.json index b02dc3bc66..3e43d1227a 100644 --- a/buildcfg/examples-all.json +++ b/buildcfg/examples-all.json @@ -58,7 +58,7 @@ "jscomp_off": [ "es5Strict" ], - "compilation_level": "ADVANCED_OPTIMIZATIONS", + "compilation_level": "ADVANCED", "output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();", "use_types_for_optimization": true, "manage_closure_dependencies": true diff --git a/buildcfg/ol-all.json b/buildcfg/ol-all.json index 2df2d9a430..549941a437 100644 --- a/buildcfg/ol-all.json +++ b/buildcfg/ol-all.json @@ -55,7 +55,7 @@ "jscomp_off": [ "es5Strict" ], - "compilation_level": "ADVANCED_OPTIMIZATIONS", + "compilation_level": "ADVANCED", "output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();", "use_types_for_optimization": true } diff --git a/buildcfg/ol-simple.json b/buildcfg/ol-simple.json index 9ea2246179..17ee131547 100644 --- a/buildcfg/ol-simple.json +++ b/buildcfg/ol-simple.json @@ -55,7 +55,7 @@ "jscomp_off": [ "es5Strict" ], - "compilation_level": "SIMPLE_OPTIMIZATIONS", + "compilation_level": "SIMPLE", "output_wrapper": "%output%", "use_types_for_optimization": false, "manage_closure_dependencies": true diff --git a/buildcfg/ol.json b/buildcfg/ol.json index fb704efba2..fb9644e890 100644 --- a/buildcfg/ol.json +++ b/buildcfg/ol.json @@ -55,7 +55,7 @@ "jscomp_off": [ "es5Strict" ], - "compilation_level": "ADVANCED_OPTIMIZATIONS", + "compilation_level": "ADVANCED", "output_wrapper": "// OpenLayers 3. See http://ol3.js.org/\n(function(){%output%})();", "use_types_for_optimization": true, "manage_closure_dependencies": true From 234dd91ff275bfef3248bcb44624c4a01bf833e3 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 2 Jul 2014 11:35:29 +0200 Subject: [PATCH 14/24] Remove some externs declarations All these declarations are defined in recent versions of Closure Compiler. --- externs/closure-compiler.js | 45 ------------------------------------- 1 file changed, 45 deletions(-) diff --git a/externs/closure-compiler.js b/externs/closure-compiler.js index 449348d6b7..b9c546b0ae 100644 --- a/externs/closure-compiler.js +++ b/externs/closure-compiler.js @@ -8,51 +8,6 @@ * @externs */ -// @see https://code.google.com/p/closure-compiler/issues/detail?id=1060 - - -/** @type {Date} */ -HTMLInputElement.prototype.valueAsDate; - - -/** @type {number} */ -HTMLInputElement.prototype.valueAsNumber; - - -// @see https://code.google.com/p/closure-compiler/issues/detail?id=1084 - - -/** @type {?number} */ -DeviceRotationRate.prototype.alpha; - - -/** @type {?number} */ -DeviceRotationRate.prototype.beta; - - -/** @type {?number} */ -DeviceRotationRate.prototype.gamma; - - -// @see https://code.google.com/p/closure-compiler/issues/detail?id=1088 - - -/** @type {?number} */ -DeviceOrientationEvent.prototype.webkitCompassAccuracy; - - -/** @type {?number} */ -DeviceOrientationEvent.prototype.webkitCompassHeading; - - -/** @type {boolean} */ -Document.prototype.msFullscreenEnabled; - - -/** @type {Element} */ -Document.prototype.msFullscreenElement; - - /** @type {number} */ Touch.prototype.force; From 1129e0d9343f6c551d060158f57071b84cfa8b44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 2 Jul 2014 18:15:25 +0200 Subject: [PATCH 15/24] Get Closure Library from closure-util for host-examples --- build.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/build.py b/build.py index 56077ab14a..a0a51d8777 100755 --- a/build.py +++ b/build.py @@ -646,6 +646,8 @@ def host_examples(t): examples_dir = 'build/hosted/%(BRANCH)s/examples' build_dir = 'build/hosted/%(BRANCH)s/build' css_dir = 'build/hosted/%(BRANCH)s/css' + closure_lib_path = output('node', '-e', + 'process.stdout.write(require("closure-util").getLibraryPath())') t.rm_rf(examples_dir) t.makedirs(examples_dir) t.rm_rf(build_dir) @@ -664,10 +666,7 @@ def host_examples(t): 'examples/example-list.xml', 'examples/Jugl.js', 'examples/jquery.min.js', examples_dir) t.rm_rf('build/hosted/%(BRANCH)s/closure-library') - t.makedirs('build/hosted/%(BRANCH)s/closure-library') - with t.chdir('build/hosted/%(BRANCH)s/closure-library'): - t.run('%(JAR)s', 'xf', '../../../../' + PLOVR_JAR, 'closure') - t.run('%(JAR)s', 'xf', '../../../../' + PLOVR_JAR, 'third_party') + t.cp_r(closure_lib_path, 'build/hosted/%(BRANCH)s/closure-library') t.rm_rf('build/hosted/%(BRANCH)s/ol') t.makedirs('build/hosted/%(BRANCH)s/ol') t.cp_r('src/ol', 'build/hosted/%(BRANCH)s/ol/ol') From 2064d0860252b87ecfab56f85ecddaa8259a58dc Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 2 Jul 2014 15:43:06 +0200 Subject: [PATCH 16/24] Refresh the compiler error list Based on https://github.com/openlayers/closure-util/blob/master/compiler-options.txt --- buildcfg/examples-all.json | 12 ++++++------ buildcfg/ol-all.json | 12 ++++++------ buildcfg/ol-simple.json | 12 ++++++------ buildcfg/ol-whitespace.json | 12 ++++++------ buildcfg/ol.json | 12 ++++++------ 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/buildcfg/examples-all.json b/buildcfg/examples-all.json index 3e43d1227a..254399c730 100644 --- a/buildcfg/examples-all.json +++ b/buildcfg/examples-all.json @@ -23,9 +23,7 @@ "jscomp_error": [ "accessControls", "ambiguousFunctionDecl", - "checkDebuggerStatement", "checkEventfulObjectDisposal", - "checkProvides", "checkRegExp", "checkStructDictInheritance", "checkTypes", @@ -33,7 +31,6 @@ "const", "constantProperty", "deprecated", - "duplicate", "duplicateMessage", "es3", "externsValidation", @@ -42,17 +39,20 @@ "internetExplorerChecks", "invalidCasts", "misplacedTypeAnnotation", + "missingGetCssName", "missingProperties", + "missingProvide", + "missingRequire", + "missingReturn", + "newCheckTypes", "nonStandardJsDocs", - "strictModuleDepCheck", "suspiciousCode", + "strictModuleDepCheck", "typeInvalidation", - "tweakValidation", "undefinedNames", "undefinedVars", "unknownDefines", "uselessCode", - "violatedModuleDep", "visibility" ], "jscomp_off": [ diff --git a/buildcfg/ol-all.json b/buildcfg/ol-all.json index 549941a437..2df1769dce 100644 --- a/buildcfg/ol-all.json +++ b/buildcfg/ol-all.json @@ -20,9 +20,7 @@ "jscomp_error": [ "accessControls", "ambiguousFunctionDecl", - "checkDebuggerStatement", "checkEventfulObjectDisposal", - "checkProvides", "checkRegExp", "checkStructDictInheritance", "checkTypes", @@ -30,7 +28,6 @@ "const", "constantProperty", "deprecated", - "duplicate", "duplicateMessage", "es3", "externsValidation", @@ -39,17 +36,20 @@ "internetExplorerChecks", "invalidCasts", "misplacedTypeAnnotation", + "missingGetCssName", "missingProperties", + "missingProvide", + "missingRequire", + "missingReturn", + "newCheckTypes", "nonStandardJsDocs", - "strictModuleDepCheck", "suspiciousCode", + "strictModuleDepCheck", "typeInvalidation", - "tweakValidation", "undefinedNames", "undefinedVars", "unknownDefines", "uselessCode", - "violatedModuleDep", "visibility" ], "jscomp_off": [ diff --git a/buildcfg/ol-simple.json b/buildcfg/ol-simple.json index 17ee131547..bd45f77f79 100644 --- a/buildcfg/ol-simple.json +++ b/buildcfg/ol-simple.json @@ -20,9 +20,7 @@ "jscomp_error": [ "accessControls", "ambiguousFunctionDecl", - "checkDebuggerStatement", "checkEventfulObjectDisposal", - "checkProvides", "checkRegExp", "checkStructDictInheritance", "checkTypes", @@ -30,7 +28,6 @@ "const", "constantProperty", "deprecated", - "duplicate", "duplicateMessage", "es3", "externsValidation", @@ -39,17 +36,20 @@ "internetExplorerChecks", "invalidCasts", "misplacedTypeAnnotation", + "missingGetCssName", "missingProperties", + "missingProvide", + "missingRequire", + "missingReturn", + "newCheckTypes", "nonStandardJsDocs", - "strictModuleDepCheck", "suspiciousCode", + "strictModuleDepCheck", "typeInvalidation", - "tweakValidation", "undefinedNames", "undefinedVars", "unknownDefines", "uselessCode", - "violatedModuleDep", "visibility" ], "jscomp_off": [ diff --git a/buildcfg/ol-whitespace.json b/buildcfg/ol-whitespace.json index 77959e60a5..9e3a6eea36 100644 --- a/buildcfg/ol-whitespace.json +++ b/buildcfg/ol-whitespace.json @@ -20,9 +20,7 @@ "jscomp_error": [ "accessControls", "ambiguousFunctionDecl", - "checkDebuggerStatement", "checkEventfulObjectDisposal", - "checkProvides", "checkRegExp", "checkStructDictInheritance", "checkTypes", @@ -30,7 +28,6 @@ "const", "constantProperty", "deprecated", - "duplicate", "duplicateMessage", "es3", "externsValidation", @@ -39,17 +36,20 @@ "internetExplorerChecks", "invalidCasts", "misplacedTypeAnnotation", + "missingGetCssName", "missingProperties", + "missingProvide", + "missingRequire", + "missingReturn", + "newCheckTypes", "nonStandardJsDocs", - "strictModuleDepCheck", "suspiciousCode", + "strictModuleDepCheck", "typeInvalidation", - "tweakValidation", "undefinedNames", "undefinedVars", "unknownDefines", "uselessCode", - "violatedModuleDep", "visibility" ], "jscomp_off": [ diff --git a/buildcfg/ol.json b/buildcfg/ol.json index fb9644e890..f457a49072 100644 --- a/buildcfg/ol.json +++ b/buildcfg/ol.json @@ -20,9 +20,7 @@ "jscomp_error": [ "accessControls", "ambiguousFunctionDecl", - "checkDebuggerStatement", "checkEventfulObjectDisposal", - "checkProvides", "checkRegExp", "checkStructDictInheritance", "checkTypes", @@ -30,7 +28,6 @@ "const", "constantProperty", "deprecated", - "duplicate", "duplicateMessage", "es3", "externsValidation", @@ -39,17 +36,20 @@ "internetExplorerChecks", "invalidCasts", "misplacedTypeAnnotation", + "missingGetCssName", "missingProperties", + "missingProvide", + "missingRequire", + "missingReturn", + "newCheckTypes", "nonStandardJsDocs", - "strictModuleDepCheck", "suspiciousCode", + "strictModuleDepCheck", "typeInvalidation", - "tweakValidation", "undefinedNames", "undefinedVars", "unknownDefines", "uselessCode", - "violatedModuleDep", "visibility" ], "jscomp_off": [ From 1626399c08c4774fbb72814676e403127f125eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Fri, 4 Jul 2014 09:05:12 +0200 Subject: [PATCH 17/24] Use serve.js as the test server --- build.py | 12 +++++------- test/index.html | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/build.py b/build.py index a0a51d8777..b7683da9d1 100755 --- a/build.py +++ b/build.py @@ -349,7 +349,7 @@ def examples_star_combined_js(name, match): return Target(name, action=action, dependencies=dependencies) -@target('serve', 'test-deps', 'examples') +@target('serve', PROJ4JS, 'examples') def serve(t): t.run('node', 'tasks/serve.js') @@ -706,12 +706,10 @@ def proj4js_zip(t): t.info('downloaded %r', t.name) -virtual('test-deps', PROJ4JS, 'build/test/requireall.js') - - -@target('test', 'test-deps', phony=True) +@target('test', PROJ4JS, phony=True) def test(t): - t.run('%(PHANTOMJS)s', 'test/mocha-phantomjs.js', 'test/ol.html') + t.run('%(PHANTOMJS)s', 'test/mocha-phantomjs.js', + 'http://localhost:3000/test/index.html') @target('fixme', phony=True) @@ -772,7 +770,7 @@ There is one option: -c - Cleans up the repository from previous builds. The most common targets are: - serve - Serves files through plovr, usually on port 9810. + serve - Serves files, on port 3000. lint - Runs gjslint on all sourcefiles to enforce specific syntax. build - Builds singlefile versions of OpenLayers JavaScript and CSS. This is also the default build target which runs when diff --git a/test/index.html b/test/index.html index 57d7f9eb76..d7c982ba5d 100644 --- a/test/index.html +++ b/test/index.html @@ -23,7 +23,7 @@ - +