From 65d1c605472b563019c45ce708dfaae3e7d65709 Mon Sep 17 00:00:00 2001 From: Stanley Ng Date: Tue, 13 May 2014 23:45:05 -0700 Subject: [PATCH 1/7] Resolve "Uncaught TypeError: undefined is not a function" error when both *timeout* and *failure* are defined. Fixes #1817 [stanleyhlng] --- build/jsonp-url/jsonp-url-coverage.js | 2 +- build/jsonp-url/jsonp-url-debug.js | 1 + build/jsonp-url/jsonp-url.js | 1 + build/jsonp/jsonp-coverage.js | 4 +-- build/jsonp/jsonp-debug.js | 41 ++++++++++++++++++++++----- build/jsonp/jsonp-min.js | 2 +- build/jsonp/jsonp.js | 24 ++++++++++++---- src/jsonp/HISTORY.md | 2 +- src/jsonp/js/jsonp-url.js | 1 + src/jsonp/js/jsonp.js | 41 ++++++++++++++++++++++----- 10 files changed, 95 insertions(+), 24 deletions(-) diff --git a/build/jsonp-url/jsonp-url-coverage.js b/build/jsonp-url/jsonp-url-coverage.js index 20f53b7a325..db16ad388be 100644 --- a/build/jsonp-url/jsonp-url-coverage.js +++ b/build/jsonp-url/jsonp-url-coverage.js @@ -1,6 +1,6 @@ if (typeof __coverage__ === 'undefined') { __coverage__ = {}; } if (!__coverage__['build/jsonp-url/jsonp-url.js']) { - __coverage__['build/jsonp-url/jsonp-url.js'] = {"path":"build/jsonp-url/jsonp-url.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":40}}},"2":{"name":"(anonymous_2)","line":5,"loc":{"start":{"line":5,"column":19},"end":{"line":5,"column":31}}},"3":{"name":"(anonymous_3)","line":54,"loc":{"start":{"line":54,"column":22},"end":{"line":54,"column":37}}},"4":{"name":"(anonymous_4)","line":64,"loc":{"start":{"line":64,"column":20},"end":{"line":64,"column":41}}},"5":{"name":"(anonymous_5)","line":69,"loc":{"start":{"line":69,"column":20},"end":{"line":69,"column":37}}},"6":{"name":"(anonymous_6)","line":108,"loc":{"start":{"line":108,"column":13},"end":{"line":108,"column":35}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":132,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":5,"column":34}},"3":{"start":{"line":17,"column":0},"end":{"line":129,"column":9}},"4":{"start":{"line":55,"column":8},"end":{"line":58,"column":36}},"5":{"start":{"line":60,"column":8},"end":{"line":90,"column":9}},"6":{"start":{"line":62,"column":12},"end":{"line":73,"column":36}},"7":{"start":{"line":65,"column":24},"end":{"line":65,"column":37}},"8":{"start":{"line":66,"column":24},"end":{"line":66,"column":44}},"9":{"start":{"line":70,"column":24},"end":{"line":70,"column":55}},"10":{"start":{"line":71,"column":24},"end":{"line":71,"column":44}},"11":{"start":{"line":76,"column":12},"end":{"line":89,"column":13}},"12":{"start":{"line":77,"column":16},"end":{"line":77,"column":42}},"13":{"start":{"line":78,"column":16},"end":{"line":82,"column":17}},"14":{"start":{"line":79,"column":20},"end":{"line":81,"column":21}},"15":{"start":{"line":80,"column":24},"end":{"line":80,"column":72}},"16":{"start":{"line":86,"column":16},"end":{"line":88,"column":55}},"17":{"start":{"line":92,"column":8},"end":{"line":92,"column":32}},"18":{"start":{"line":109,"column":8},"end":{"line":110,"column":31}},"19":{"start":{"line":112,"column":8},"end":{"line":114,"column":9}},"20":{"start":{"line":113,"column":12},"end":{"line":113,"column":50}},"21":{"start":{"line":116,"column":8},"end":{"line":116,"column":61}},"22":{"start":{"line":118,"column":8},"end":{"line":126,"column":9}},"23":{"start":{"line":119,"column":12},"end":{"line":119,"column":56}},"24":{"start":{"line":121,"column":12},"end":{"line":121,"column":37}},"25":{"start":{"line":122,"column":12},"end":{"line":124,"column":13}},"26":{"start":{"line":123,"column":16},"end":{"line":123,"column":59}},"27":{"start":{"line":125,"column":12},"end":{"line":125,"column":34}}},"branchMap":{"1":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"2":{"line":76,"type":"if","locations":[{"start":{"line":76,"column":12},"end":{"line":76,"column":12}},{"start":{"line":76,"column":12},"end":{"line":76,"column":12}}]},"3":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":20},"end":{"line":79,"column":20}},{"start":{"line":79,"column":20},"end":{"line":79,"column":20}}]},"4":{"line":86,"type":"binary-expr","locations":[{"start":{"line":86,"column":27},"end":{"line":86,"column":56}},{"start":{"line":87,"column":27},"end":{"line":87,"column":45}},{"start":{"line":88,"column":27},"end":{"line":88,"column":54}}]},"5":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":15},"end":{"line":92,"column":23}},{"start":{"line":92,"column":27},"end":{"line":92,"column":31}}]},"6":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":8},"end":{"line":112,"column":8}},{"start":{"line":112,"column":8},"end":{"line":112,"column":8}}]},"7":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":8},"end":{"line":118,"column":8}},{"start":{"line":118,"column":8},"end":{"line":118,"column":8}}]},"8":{"line":122,"type":"if","locations":[{"start":{"line":122,"column":12},"end":{"line":122,"column":12}},{"start":{"line":122,"column":12},"end":{"line":122,"column":12}}]},"9":{"line":122,"type":"binary-expr","locations":[{"start":{"line":122,"column":16},"end":{"line":122,"column":32}},{"start":{"line":122,"column":36},"end":{"line":122,"column":52}}]},"10":{"line":123,"type":"cond-expr","locations":[{"start":{"line":123,"column":49},"end":{"line":123,"column":52}},{"start":{"line":123,"column":55},"end":{"line":123,"column":58}}]}},"code":["(function () { YUI.add('jsonp-url', function (Y, NAME) {","","var JSONPRequest = Y.JSONPRequest,"," getByPath = Y.Object.getValue,"," noop = function () {};","","/**"," * Adds support for parsing complex callback identifiers from the jsonp url."," * This includes callback=foo[1]bar.baz[\"goo\"] as well as referencing methods"," * in the YUI instance."," *"," * @module jsonp"," * @submodule jsonp-url"," * @for JSONPRequest"," */","","Y.mix(JSONPRequest.prototype, {"," /**"," * RegExp used by the default URL formatter to insert the generated callback"," * name into the JSONP url. Looks for a query param callback=. If a value"," * is assigned, it will be clobbered."," *"," * @property _pattern"," * @type RegExp"," * @default /\\bcallback=.*?(?=&|$)/i"," * @protected"," */"," _pattern: /\\bcallback=(.*?)(?=&|$)/i,",""," /**"," * Template used by the default URL formatter to add the callback function"," * name to the url."," *"," * @property _template"," * @type String"," * @default \"callback={callback}\""," * @protected"," */"," _template: \"callback={callback}\",",""," /**"," *

Parses the url for a callback named explicitly in the string."," * Override this if the target JSONP service uses a different query"," * parameter or url format.

"," *"," *

If the callback is declared inline, the corresponding function will"," * be returned. Otherwise null.

"," *"," * @method _defaultCallback"," * @param url {String} the url to search in"," * @return {Function} the callback function if found, or null"," * @protected"," */"," _defaultCallback: function (url) {"," var match = url.match(this._pattern),"," keys = [],"," i = 0,"," locator, path, callback;",""," if (match) {"," // Strip the [\"string keys\"] and [1] array indexes"," locator = match[1]"," .replace(/\\[(['\"])(.*?)\\1\\]/g,"," function (x, $1, $2) {"," keys[i] = $2;"," return '.@' + (i++);"," })"," .replace(/\\[(\\d+)\\]/g,"," function (x, $1) {"," keys[i] = parseInt($1, 10) | 0;"," return '.@' + (i++);"," })"," .replace(/^\\./, ''); // remove leading dot",""," // Validate against problematic characters."," if (!/[^\\w\\.\\$@]/.test(locator)) {"," path = locator.split('.');"," for (i = path.length - 1; i >= 0; --i) {"," if (path[i].charAt(0) === '@') {"," path[i] = keys[parseInt(path[i].substr(1), 10)];"," }"," }",""," // First look for a global function, then the Y, then try the Y"," // again from the second token (to support \"callback=Y.handler\")"," callback = getByPath(Y.config.win, path) ||"," getByPath(Y, path) ||"," getByPath(Y, path.slice(1));"," }"," }",""," return callback || noop;"," },",""," /**"," * URL formatter that looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," var callbackRE = /\\{callback\\}/,"," callback, lastChar;",""," if (callbackRE.test(url)) {"," return url.replace(callbackRE, proxy);"," }",""," callback = this._template.replace(callbackRE, proxy);",""," if (this._pattern.test(url)) {"," return url.replace(this._pattern, callback);"," } else {"," lastChar = url.slice(-1);"," if (lastChar !== '&' && lastChar !== '?') {"," url += (url.indexOf('?') > -1) ? '&' : '?';"," }"," return url + callback;"," }"," }","","}, true);","","","}, '@VERSION@', {\"requires\": [\"jsonp\"]});","","}());"]}; + __coverage__['build/jsonp-url/jsonp-url.js'] = {"path":"build/jsonp-url/jsonp-url.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":40}}},"2":{"name":"(anonymous_2)","line":5,"loc":{"start":{"line":5,"column":19},"end":{"line":5,"column":31}}},"3":{"name":"(anonymous_3)","line":54,"loc":{"start":{"line":54,"column":22},"end":{"line":54,"column":37}}},"4":{"name":"(anonymous_4)","line":64,"loc":{"start":{"line":64,"column":20},"end":{"line":64,"column":41}}},"5":{"name":"(anonymous_5)","line":69,"loc":{"start":{"line":69,"column":20},"end":{"line":69,"column":37}}},"6":{"name":"(anonymous_6)","line":109,"loc":{"start":{"line":109,"column":13},"end":{"line":109,"column":35}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":133,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":5,"column":34}},"3":{"start":{"line":17,"column":0},"end":{"line":130,"column":9}},"4":{"start":{"line":55,"column":8},"end":{"line":58,"column":36}},"5":{"start":{"line":60,"column":8},"end":{"line":91,"column":9}},"6":{"start":{"line":62,"column":12},"end":{"line":74,"column":36}},"7":{"start":{"line":65,"column":24},"end":{"line":65,"column":37}},"8":{"start":{"line":66,"column":24},"end":{"line":66,"column":44}},"9":{"start":{"line":71,"column":24},"end":{"line":71,"column":55}},"10":{"start":{"line":72,"column":24},"end":{"line":72,"column":44}},"11":{"start":{"line":77,"column":12},"end":{"line":90,"column":13}},"12":{"start":{"line":78,"column":16},"end":{"line":78,"column":42}},"13":{"start":{"line":79,"column":16},"end":{"line":83,"column":17}},"14":{"start":{"line":80,"column":20},"end":{"line":82,"column":21}},"15":{"start":{"line":81,"column":24},"end":{"line":81,"column":72}},"16":{"start":{"line":87,"column":16},"end":{"line":89,"column":55}},"17":{"start":{"line":93,"column":8},"end":{"line":93,"column":32}},"18":{"start":{"line":110,"column":8},"end":{"line":111,"column":31}},"19":{"start":{"line":113,"column":8},"end":{"line":115,"column":9}},"20":{"start":{"line":114,"column":12},"end":{"line":114,"column":50}},"21":{"start":{"line":117,"column":8},"end":{"line":117,"column":61}},"22":{"start":{"line":119,"column":8},"end":{"line":127,"column":9}},"23":{"start":{"line":120,"column":12},"end":{"line":120,"column":56}},"24":{"start":{"line":122,"column":12},"end":{"line":122,"column":37}},"25":{"start":{"line":123,"column":12},"end":{"line":125,"column":13}},"26":{"start":{"line":124,"column":16},"end":{"line":124,"column":59}},"27":{"start":{"line":126,"column":12},"end":{"line":126,"column":34}}},"branchMap":{"1":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"2":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":12},"end":{"line":77,"column":12}},{"start":{"line":77,"column":12},"end":{"line":77,"column":12}}]},"3":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":20},"end":{"line":80,"column":20}},{"start":{"line":80,"column":20},"end":{"line":80,"column":20}}]},"4":{"line":87,"type":"binary-expr","locations":[{"start":{"line":87,"column":27},"end":{"line":87,"column":56}},{"start":{"line":88,"column":27},"end":{"line":88,"column":45}},{"start":{"line":89,"column":27},"end":{"line":89,"column":54}}]},"5":{"line":93,"type":"binary-expr","locations":[{"start":{"line":93,"column":15},"end":{"line":93,"column":23}},{"start":{"line":93,"column":27},"end":{"line":93,"column":31}}]},"6":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":8},"end":{"line":113,"column":8}},{"start":{"line":113,"column":8},"end":{"line":113,"column":8}}]},"7":{"line":119,"type":"if","locations":[{"start":{"line":119,"column":8},"end":{"line":119,"column":8}},{"start":{"line":119,"column":8},"end":{"line":119,"column":8}}]},"8":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":12},"end":{"line":123,"column":12}},{"start":{"line":123,"column":12},"end":{"line":123,"column":12}}]},"9":{"line":123,"type":"binary-expr","locations":[{"start":{"line":123,"column":16},"end":{"line":123,"column":32}},{"start":{"line":123,"column":36},"end":{"line":123,"column":52}}]},"10":{"line":124,"type":"cond-expr","locations":[{"start":{"line":124,"column":49},"end":{"line":124,"column":52}},{"start":{"line":124,"column":55},"end":{"line":124,"column":58}}]}},"code":["(function () { YUI.add('jsonp-url', function (Y, NAME) {","","var JSONPRequest = Y.JSONPRequest,"," getByPath = Y.Object.getValue,"," noop = function () {};","","/**"," * Adds support for parsing complex callback identifiers from the jsonp url."," * This includes callback=foo[1]bar.baz[\"goo\"] as well as referencing methods"," * in the YUI instance."," *"," * @module jsonp"," * @submodule jsonp-url"," * @for JSONPRequest"," */","","Y.mix(JSONPRequest.prototype, {"," /**"," * RegExp used by the default URL formatter to insert the generated callback"," * name into the JSONP url. Looks for a query param callback=. If a value"," * is assigned, it will be clobbered."," *"," * @property _pattern"," * @type RegExp"," * @default /\\bcallback=.*?(?=&|$)/i"," * @protected"," */"," _pattern: /\\bcallback=(.*?)(?=&|$)/i,",""," /**"," * Template used by the default URL formatter to add the callback function"," * name to the url."," *"," * @property _template"," * @type String"," * @default \"callback={callback}\""," * @protected"," */"," _template: \"callback={callback}\",",""," /**"," *

Parses the url for a callback named explicitly in the string."," * Override this if the target JSONP service uses a different query"," * parameter or url format.

"," *"," *

If the callback is declared inline, the corresponding function will"," * be returned. Otherwise null.

"," *"," * @method _defaultCallback"," * @param url {String} the url to search in"," * @return {Function} the callback function if found, or null"," * @protected"," */"," _defaultCallback: function (url) {"," var match = url.match(this._pattern),"," keys = [],"," i = 0,"," locator, path, callback;",""," if (match) {"," // Strip the [\"string keys\"] and [1] array indexes"," locator = match[1]"," .replace(/\\[(['\"])(.*?)\\1\\]/g,"," function (x, $1, $2) {"," keys[i] = $2;"," return '.@' + (i++);"," })"," .replace(/\\[(\\d+)\\]/g,"," function (x, $1) {"," /*jslint bitwise: true */"," keys[i] = parseInt($1, 10) | 0;"," return '.@' + (i++);"," })"," .replace(/^\\./, ''); // remove leading dot",""," // Validate against problematic characters."," if (!/[^\\w\\.\\$@]/.test(locator)) {"," path = locator.split('.');"," for (i = path.length - 1; i >= 0; --i) {"," if (path[i].charAt(0) === '@') {"," path[i] = keys[parseInt(path[i].substr(1), 10)];"," }"," }",""," // First look for a global function, then the Y, then try the Y"," // again from the second token (to support \"callback=Y.handler\")"," callback = getByPath(Y.config.win, path) ||"," getByPath(Y, path) ||"," getByPath(Y, path.slice(1));"," }"," }",""," return callback || noop;"," },",""," /**"," * URL formatter that looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," var callbackRE = /\\{callback\\}/,"," callback, lastChar;",""," if (callbackRE.test(url)) {"," return url.replace(callbackRE, proxy);"," }",""," callback = this._template.replace(callbackRE, proxy);",""," if (this._pattern.test(url)) {"," return url.replace(this._pattern, callback);"," } else {"," lastChar = url.slice(-1);"," if (lastChar !== '&' && lastChar !== '?') {"," url += (url.indexOf('?') > -1) ? '&' : '?';"," }"," return url + callback;"," }"," }","","}, true);","","","}, '@VERSION@', {\"requires\": [\"jsonp\"]});","","}());"]}; } var __cov_5w$_gf1Mn7SBKiyuo2Kxgw = __coverage__['build/jsonp-url/jsonp-url.js']; __cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['1']++;YUI.add('jsonp-url',function(Y,NAME){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['1']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['2']++;var JSONPRequest=Y.JSONPRequest,getByPath=Y.Object.getValue,noop=function(){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['2']++;};__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['3']++;Y.mix(JSONPRequest.prototype,{_pattern:/\bcallback=(.*?)(?=&|$)/i,_template:'callback={callback}',_defaultCallback:function(url){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['3']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['4']++;var match=url.match(this._pattern),keys=[],i=0,locator,path,callback;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['5']++;if(match){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['1'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['6']++;locator=match[1].replace(/\[(['"])(.*?)\1\]/g,function(x,$1,$2){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['4']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['7']++;keys[i]=$2;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['8']++;return'.@'+i++;}).replace(/\[(\d+)\]/g,function(x,$1){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['5']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['9']++;keys[i]=parseInt($1,10)|0;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['10']++;return'.@'+i++;}).replace(/^\./,'');__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['11']++;if(!/[^\w\.\$@]/.test(locator)){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['2'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['12']++;path=locator.split('.');__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['13']++;for(i=path.length-1;i>=0;--i){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['14']++;if(path[i].charAt(0)==='@'){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['3'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['15']++;path[i]=keys[parseInt(path[i].substr(1),10)];}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['3'][1]++;}}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['16']++;callback=(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['4'][0]++,getByPath(Y.config.win,path))||(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['4'][1]++,getByPath(Y,path))||(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['4'][2]++,getByPath(Y,path.slice(1)));}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['2'][1]++;}}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['1'][1]++;}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['17']++;return(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['5'][0]++,callback)||(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['5'][1]++,noop);},_format:function(url,proxy){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['6']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['18']++;var callbackRE=/\{callback\}/,callback,lastChar;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['19']++;if(callbackRE.test(url)){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['6'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['20']++;return url.replace(callbackRE,proxy);}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['6'][1]++;}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['21']++;callback=this._template.replace(callbackRE,proxy);__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['22']++;if(this._pattern.test(url)){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['7'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['23']++;return url.replace(this._pattern,callback);}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['7'][1]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['24']++;lastChar=url.slice(-1);__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['25']++;if((__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['9'][0]++,lastChar!=='&')&&(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['9'][1]++,lastChar!=='?')){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['8'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['26']++;url+=url.indexOf('?')>-1?(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['10'][0]++,'&'):(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['10'][1]++,'?');}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['8'][1]++;}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['27']++;return url+callback;}}},true);},'@VERSION@',{'requires':['jsonp']}); diff --git a/build/jsonp-url/jsonp-url-debug.js b/build/jsonp-url/jsonp-url-debug.js index 61316bc4d2e..fb43d164be2 100644 --- a/build/jsonp-url/jsonp-url-debug.js +++ b/build/jsonp-url/jsonp-url-debug.js @@ -67,6 +67,7 @@ Y.mix(JSONPRequest.prototype, { }) .replace(/\[(\d+)\]/g, function (x, $1) { + /*jslint bitwise: true */ keys[i] = parseInt($1, 10) | 0; return '.@' + (i++); }) diff --git a/build/jsonp-url/jsonp-url.js b/build/jsonp-url/jsonp-url.js index 61316bc4d2e..fb43d164be2 100644 --- a/build/jsonp-url/jsonp-url.js +++ b/build/jsonp-url/jsonp-url.js @@ -67,6 +67,7 @@ Y.mix(JSONPRequest.prototype, { }) .replace(/\[(\d+)\]/g, function (x, $1) { + /*jslint bitwise: true */ keys[i] = parseInt($1, 10) | 0; return '.@' + (i++); }) diff --git a/build/jsonp/jsonp-coverage.js b/build/jsonp/jsonp-coverage.js index 7e2d688b279..9ebbc9ead38 100644 --- a/build/jsonp/jsonp-coverage.js +++ b/build/jsonp/jsonp-coverage.js @@ -1,6 +1,6 @@ if (typeof __coverage__ === 'undefined') { __coverage__ = {}; } if (!__coverage__['build/jsonp/jsonp.js']) { - __coverage__['build/jsonp/jsonp.js'] = {"path":"build/jsonp/jsonp.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":36}}},"2":{"name":"JSONPRequest","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}}},"3":{"name":"(anonymous_3)","line":58,"loc":{"start":{"line":58,"column":12},"end":{"line":58,"column":37}}},"4":{"name":"(anonymous_4)","line":118,"loc":{"start":{"line":118,"column":22},"end":{"line":118,"column":34}}},"5":{"name":"(anonymous_5)","line":128,"loc":{"start":{"line":128,"column":11},"end":{"line":128,"column":23}}},"6":{"name":"wrap","line":156,"loc":{"start":{"line":156,"column":8},"end":{"line":156,"column":37}}},"7":{"name":"(anonymous_7)","line":158,"loc":{"start":{"line":158,"column":16},"end":{"line":158,"column":32}}},"8":{"name":"(anonymous_8)","line":222,"loc":{"start":{"line":222,"column":13},"end":{"line":222,"column":35}}},"9":{"name":"(anonymous_9)","line":241,"loc":{"start":{"line":241,"column":10},"end":{"line":241,"column":27}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":251,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":35}},"3":{"start":{"line":42,"column":0},"end":{"line":44,"column":1}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":38}},"5":{"start":{"line":46,"column":0},"end":{"line":225,"column":2}},"6":{"start":{"line":59,"column":8},"end":{"line":59,"column":23}},"7":{"start":{"line":72,"column":8},"end":{"line":72,"column":28}},"8":{"start":{"line":85,"column":8},"end":{"line":85,"column":28}},"9":{"start":{"line":88,"column":8},"end":{"line":90,"column":27}},"10":{"start":{"line":92,"column":8},"end":{"line":92,"column":37}},"11":{"start":{"line":94,"column":8},"end":{"line":96,"column":9}},"12":{"start":{"line":95,"column":12},"end":{"line":95,"column":64}},"13":{"start":{"line":99,"column":8},"end":{"line":104,"column":39}},"14":{"start":{"line":129,"column":8},"end":{"line":133,"column":16}},"15":{"start":{"line":136,"column":8},"end":{"line":138,"column":9}},"16":{"start":{"line":137,"column":12},"end":{"line":137,"column":32}},"17":{"start":{"line":140,"column":8},"end":{"line":142,"column":9}},"18":{"start":{"line":141,"column":12},"end":{"line":141,"column":38}},"19":{"start":{"line":143,"column":8},"end":{"line":145,"column":9}},"20":{"start":{"line":144,"column":12},"end":{"line":144,"column":38}},"21":{"start":{"line":146,"column":8},"end":{"line":146,"column":32}},"22":{"start":{"line":149,"column":8},"end":{"line":149,"column":57}},"23":{"start":{"line":150,"column":8},"end":{"line":150,"column":46}},"24":{"start":{"line":152,"column":8},"end":{"line":154,"column":9}},"25":{"start":{"line":153,"column":12},"end":{"line":153,"column":24}},"26":{"start":{"line":156,"column":8},"end":{"line":187,"column":9}},"27":{"start":{"line":157,"column":12},"end":{"line":186,"column":21}},"28":{"start":{"line":159,"column":20},"end":{"line":160,"column":46}},"29":{"start":{"line":166,"column":24},"end":{"line":175,"column":25}},"30":{"start":{"line":167,"column":28},"end":{"line":167,"column":52}},"31":{"start":{"line":168,"column":28},"end":{"line":168,"column":52}},"32":{"start":{"line":170,"column":28},"end":{"line":173,"column":29}},"33":{"start":{"line":171,"column":32},"end":{"line":171,"column":48}},"34":{"start":{"line":172,"column":32},"end":{"line":172,"column":54}},"35":{"start":{"line":174,"column":28},"end":{"line":174,"column":51}},"36":{"start":{"line":178,"column":20},"end":{"line":180,"column":21}},"37":{"start":{"line":179,"column":24},"end":{"line":179,"column":52}},"38":{"start":{"line":182,"column":20},"end":{"line":184,"column":21}},"39":{"start":{"line":183,"column":24},"end":{"line":183,"column":77}},"40":{"start":{"line":191,"column":8},"end":{"line":191,"column":55}},"41":{"start":{"line":196,"column":8},"end":{"line":203,"column":21}},"42":{"start":{"line":205,"column":8},"end":{"line":205,"column":20}},"43":{"start":{"line":223,"column":8},"end":{"line":223,"column":50}},"44":{"start":{"line":227,"column":0},"end":{"line":227,"column":30}},"45":{"start":{"line":241,"column":0},"end":{"line":244,"column":2}},"46":{"start":{"line":242,"column":4},"end":{"line":242,"column":40}},"47":{"start":{"line":243,"column":4},"end":{"line":243,"column":60}},"48":{"start":{"line":246,"column":0},"end":{"line":248,"column":1}},"49":{"start":{"line":247,"column":4},"end":{"line":247,"column":23}}},"branchMap":{"1":{"line":88,"type":"cond-expr","locations":[{"start":{"line":89,"column":12},"end":{"line":89,"column":41}},{"start":{"line":90,"column":12},"end":{"line":90,"column":26}}]},"2":{"line":90,"type":"binary-expr","locations":[{"start":{"line":90,"column":12},"end":{"line":90,"column":20}},{"start":{"line":90,"column":24},"end":{"line":90,"column":26}}]},"3":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":19},"end":{"line":92,"column":30}},{"start":{"line":92,"column":34},"end":{"line":92,"column":36}}]},"4":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":8},"end":{"line":94,"column":8}},{"start":{"line":94,"column":8},"end":{"line":94,"column":8}}]},"5":{"line":132,"type":"binary-expr","locations":[{"start":{"line":132,"column":21},"end":{"line":132,"column":32}},{"start":{"line":132,"column":36},"end":{"line":132,"column":44}}]},"6":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":8},"end":{"line":136,"column":8}},{"start":{"line":136,"column":8},"end":{"line":136,"column":8}}]},"7":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":8},"end":{"line":140,"column":8}},{"start":{"line":140,"column":8},"end":{"line":140,"column":8}}]},"8":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":8}},{"start":{"line":143,"column":8},"end":{"line":143,"column":8}}]},"9":{"line":152,"type":"if","locations":[{"start":{"line":152,"column":8},"end":{"line":152,"column":8}},{"start":{"line":152,"column":8},"end":{"line":152,"column":8}}]},"10":{"line":157,"type":"cond-expr","locations":[{"start":{"line":158,"column":16},"end":{"line":185,"column":17}},{"start":{"line":186,"column":16},"end":{"line":186,"column":20}}]},"11":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":24},"end":{"line":166,"column":24}},{"start":{"line":166,"column":24},"end":{"line":166,"column":24}}]},"12":{"line":170,"type":"if","locations":[{"start":{"line":170,"column":28},"end":{"line":170,"column":28}},{"start":{"line":170,"column":28},"end":{"line":170,"column":28}}]},"13":{"line":178,"type":"if","locations":[{"start":{"line":178,"column":20},"end":{"line":178,"column":20}},{"start":{"line":178,"column":20},"end":{"line":178,"column":20}}]},"14":{"line":178,"type":"binary-expr","locations":[{"start":{"line":178,"column":24},"end":{"line":178,"column":46}},{"start":{"line":178,"column":50},"end":{"line":178,"column":72}}]},"15":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":20},"end":{"line":182,"column":20}},{"start":{"line":182,"column":20},"end":{"line":182,"column":20}}]},"16":{"line":246,"type":"if","locations":[{"start":{"line":246,"column":0},"end":{"line":246,"column":0}},{"start":{"line":246,"column":0},"end":{"line":246,"column":0}}]}},"code":["(function () { YUI.add('jsonp', function (Y, NAME) {","","var isFunction = Y.Lang.isFunction;","","/**"," *

Provides a JSONPRequest class for repeated JSONP calls, and a convenience"," * method Y.jsonp(url, callback) to instantiate and send a JSONP request.

"," *"," *

Both the constructor as well as the convenience function take two"," * parameters: a url string and a callback.

"," *"," *

The url provided must include the placeholder string"," * "{callback}" which will be replaced by a dynamically"," * generated routing function to pass the data to your callback function."," * An example url might look like"," * "http://example.com/service?callback={callback}".

"," *"," *

The second parameter can be a callback function that accepts the JSON"," * payload as its argument, or a configuration object supporting the keys:

"," * "," *"," * @module jsonp"," * @class JSONPRequest"," * @constructor"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} the default callback configuration or"," * success handler"," */","function JSONPRequest() {"," this._init.apply(this, arguments);","}","","JSONPRequest.prototype = {"," /**"," * Set up the success and failure handlers and the regex pattern used"," * to insert the temporary callback name in the url."," *"," * @method _init"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} Optional success callback or config"," * object containing success and failure functions and"," * the url regex."," * @protected"," */"," _init : function (url, callback) {"," this.url = url;",""," /**"," * Map of the number of requests currently pending responses per"," * generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _requests"," * @private"," * @type {Object}"," */"," this._requests = {};",""," /**"," * Map of the number of timeouts received from the destination url"," * by generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _timeouts"," * @private"," * @type {Object}"," */"," this._timeouts = {};",""," // Accept a function, an object, or nothing"," callback = (isFunction(callback)) ?"," { on: { success: callback } } :"," callback || {};",""," var subs = callback.on || {};",""," if (!subs.success) {"," subs.success = this._defaultCallback(url, callback);"," }",""," // Apply defaults and store"," this._config = Y.merge({"," context: this,"," args : [],"," format : this._format,"," allowCache: false"," }, callback, { on: subs });"," },",""," /**"," * Override this method to provide logic to default the success callback if"," * it is not provided at construction. This is overridden by jsonp-url to"," * parse the callback from the url string."," *"," * @method _defaultCallback"," * @param url {String} the url passed at construction"," * @param config {Object} (optional) the config object passed at"," * construction"," * @return {Function}"," */"," _defaultCallback: function () {},",""," /**"," * Issues the JSONP request."," *"," * @method send"," * @param args* {any} any additional arguments to pass to the url formatter"," * beyond the base url and the proxy function name"," * @chainable"," */"," send : function () {"," var self = this,"," args = Y.Array(arguments, 0, true),"," config = self._config,"," proxy = self._proxy || Y.guid(),"," url;",""," // TODO: support allowCache as time value"," if (config.allowCache) {"," self._proxy = proxy;"," }",""," if (self._requests[proxy] === undefined) {"," self._requests[proxy] = 0;"," }"," if (self._timeouts[proxy] === undefined) {"," self._timeouts[proxy] = 0;"," }"," self._requests[proxy]++;","",""," args.unshift(self.url, 'YUI.Env.JSONP.' + proxy);"," url = config.format.apply(self, args);",""," if (!config.on.success) {"," return self;"," }",""," function wrap(fn, isTimeout) {"," return (isFunction(fn)) ?"," function (data) {"," var execute = true,"," counter = '_requests';",""," //if (config.allowCache) {"," // A lot of wrangling to make sure timeouts result in"," // fewer success callbacks, but the proxy is properly"," // cleaned up."," if (isTimeout) {"," ++self._timeouts[proxy];"," --self._requests[proxy];"," } else {"," if (!self._requests[proxy]) {"," execute = false;"," counter = '_timeouts';"," }"," --self[counter][proxy];"," }"," //}",""," if (!self._requests[proxy] && !self._timeouts[proxy]) {"," delete YUI.Env.JSONP[proxy];"," }",""," if (execute) {"," fn.apply(config.context, [data].concat(config.args));"," }"," } :"," null;"," }",""," // Temporary un-sandboxed function alias"," // TODO: queuing"," YUI.Env.JSONP[proxy] = wrap(config.on.success);",""," // Y.Get transactions block each other by design, but can easily"," // be made non-blocking by just calling execute() on the transaction."," // https://github.com/yui/yui3/pull/393#issuecomment-11961608"," Y.Get.js(url, {"," onFailure : wrap(config.on.failure),"," onTimeout : wrap(config.on.timeout, true),"," timeout : config.timeout,"," charset : config.charset,"," attributes: config.attributes,"," async : config.async"," }).execute();",""," return self;"," },",""," /**"," * Default url formatter. Looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @param args* {any} additional args passed to send()"," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," return url.replace(/\\{callback\\}/, proxy);"," }","};","","Y.JSONPRequest = JSONPRequest;","","/**"," *"," * @method jsonp"," * @param url {String} the url of the JSONP service with the {callback}"," * placeholder where the callback function name typically goes."," * @param c {Function|Object} Callback function accepting the JSON payload"," * as its argument, or a configuration object (see above)."," * @param args* {any} additional arguments to pass to send()"," * @return {JSONPRequest}"," * @static"," * @for YUI"," */","Y.jsonp = function (url,c) {"," var req = new Y.JSONPRequest(url,c);"," return req.send.apply(req, Y.Array(arguments, 2, true));","};","","if (!YUI.Env.JSONP) {"," YUI.Env.JSONP = {};","}","","","}, '@VERSION@', {\"requires\": [\"get\", \"oop\"]});","","}());"]}; + __coverage__['build/jsonp/jsonp.js'] = {"path":"build/jsonp/jsonp.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0,0],"20":[0,0],"21":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":36}}},"2":{"name":"JSONPRequest","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}}},"3":{"name":"(anonymous_3)","line":58,"loc":{"start":{"line":58,"column":12},"end":{"line":58,"column":37}}},"4":{"name":"(anonymous_4)","line":118,"loc":{"start":{"line":118,"column":22},"end":{"line":118,"column":34}}},"5":{"name":"(anonymous_5)","line":128,"loc":{"start":{"line":128,"column":11},"end":{"line":128,"column":23}}},"6":{"name":"wrap","line":159,"loc":{"start":{"line":159,"column":8},"end":{"line":159,"column":48}}},"7":{"name":"(anonymous_7)","line":161,"loc":{"start":{"line":161,"column":16},"end":{"line":161,"column":32}}},"8":{"name":"(anonymous_8)","line":236,"loc":{"start":{"line":236,"column":13},"end":{"line":236,"column":35}}},"9":{"name":"(anonymous_9)","line":255,"loc":{"start":{"line":255,"column":10},"end":{"line":255,"column":27}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":265,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":35}},"3":{"start":{"line":42,"column":0},"end":{"line":44,"column":1}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":38}},"5":{"start":{"line":46,"column":0},"end":{"line":239,"column":2}},"6":{"start":{"line":59,"column":8},"end":{"line":59,"column":23}},"7":{"start":{"line":72,"column":8},"end":{"line":72,"column":28}},"8":{"start":{"line":85,"column":8},"end":{"line":85,"column":28}},"9":{"start":{"line":88,"column":8},"end":{"line":90,"column":27}},"10":{"start":{"line":92,"column":8},"end":{"line":92,"column":37}},"11":{"start":{"line":94,"column":8},"end":{"line":96,"column":9}},"12":{"start":{"line":95,"column":12},"end":{"line":95,"column":64}},"13":{"start":{"line":99,"column":8},"end":{"line":104,"column":39}},"14":{"start":{"line":129,"column":8},"end":{"line":133,"column":16}},"15":{"start":{"line":136,"column":8},"end":{"line":138,"column":9}},"16":{"start":{"line":137,"column":12},"end":{"line":137,"column":32}},"17":{"start":{"line":140,"column":8},"end":{"line":142,"column":9}},"18":{"start":{"line":141,"column":12},"end":{"line":141,"column":38}},"19":{"start":{"line":143,"column":8},"end":{"line":145,"column":9}},"20":{"start":{"line":144,"column":12},"end":{"line":144,"column":38}},"21":{"start":{"line":146,"column":8},"end":{"line":148,"column":9}},"22":{"start":{"line":147,"column":12},"end":{"line":147,"column":38}},"23":{"start":{"line":149,"column":8},"end":{"line":149,"column":32}},"24":{"start":{"line":152,"column":8},"end":{"line":152,"column":57}},"25":{"start":{"line":153,"column":8},"end":{"line":153,"column":46}},"26":{"start":{"line":155,"column":8},"end":{"line":157,"column":9}},"27":{"start":{"line":156,"column":12},"end":{"line":156,"column":24}},"28":{"start":{"line":159,"column":8},"end":{"line":201,"column":9}},"29":{"start":{"line":160,"column":12},"end":{"line":200,"column":21}},"30":{"start":{"line":162,"column":20},"end":{"line":163,"column":46}},"31":{"start":{"line":169,"column":24},"end":{"line":189,"column":25}},"32":{"start":{"line":170,"column":28},"end":{"line":170,"column":52}},"33":{"start":{"line":171,"column":28},"end":{"line":171,"column":52}},"34":{"start":{"line":172,"column":31},"end":{"line":189,"column":25}},"35":{"start":{"line":173,"column":28},"end":{"line":173,"column":52}},"36":{"start":{"line":174,"column":28},"end":{"line":178,"column":29}},"37":{"start":{"line":175,"column":32},"end":{"line":175,"column":56}},"38":{"start":{"line":177,"column":32},"end":{"line":177,"column":56}},"39":{"start":{"line":180,"column":28},"end":{"line":187,"column":29}},"40":{"start":{"line":181,"column":32},"end":{"line":181,"column":48}},"41":{"start":{"line":182,"column":32},"end":{"line":186,"column":33}},"42":{"start":{"line":183,"column":36},"end":{"line":183,"column":58}},"43":{"start":{"line":184,"column":39},"end":{"line":186,"column":33}},"44":{"start":{"line":185,"column":36},"end":{"line":185,"column":58}},"45":{"start":{"line":188,"column":28},"end":{"line":188,"column":51}},"46":{"start":{"line":192,"column":20},"end":{"line":194,"column":21}},"47":{"start":{"line":193,"column":24},"end":{"line":193,"column":52}},"48":{"start":{"line":196,"column":20},"end":{"line":198,"column":21}},"49":{"start":{"line":197,"column":24},"end":{"line":197,"column":77}},"50":{"start":{"line":205,"column":8},"end":{"line":205,"column":55}},"51":{"start":{"line":210,"column":8},"end":{"line":217,"column":21}},"52":{"start":{"line":219,"column":8},"end":{"line":219,"column":20}},"53":{"start":{"line":237,"column":8},"end":{"line":237,"column":50}},"54":{"start":{"line":241,"column":0},"end":{"line":241,"column":30}},"55":{"start":{"line":255,"column":0},"end":{"line":258,"column":2}},"56":{"start":{"line":256,"column":4},"end":{"line":256,"column":40}},"57":{"start":{"line":257,"column":4},"end":{"line":257,"column":60}},"58":{"start":{"line":260,"column":0},"end":{"line":262,"column":1}},"59":{"start":{"line":261,"column":4},"end":{"line":261,"column":23}}},"branchMap":{"1":{"line":88,"type":"cond-expr","locations":[{"start":{"line":89,"column":12},"end":{"line":89,"column":41}},{"start":{"line":90,"column":12},"end":{"line":90,"column":26}}]},"2":{"line":90,"type":"binary-expr","locations":[{"start":{"line":90,"column":12},"end":{"line":90,"column":20}},{"start":{"line":90,"column":24},"end":{"line":90,"column":26}}]},"3":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":19},"end":{"line":92,"column":30}},{"start":{"line":92,"column":34},"end":{"line":92,"column":36}}]},"4":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":8},"end":{"line":94,"column":8}},{"start":{"line":94,"column":8},"end":{"line":94,"column":8}}]},"5":{"line":132,"type":"binary-expr","locations":[{"start":{"line":132,"column":21},"end":{"line":132,"column":32}},{"start":{"line":132,"column":36},"end":{"line":132,"column":44}}]},"6":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":8},"end":{"line":136,"column":8}},{"start":{"line":136,"column":8},"end":{"line":136,"column":8}}]},"7":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":8},"end":{"line":140,"column":8}},{"start":{"line":140,"column":8},"end":{"line":140,"column":8}}]},"8":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":8}},{"start":{"line":143,"column":8},"end":{"line":143,"column":8}}]},"9":{"line":146,"type":"if","locations":[{"start":{"line":146,"column":8},"end":{"line":146,"column":8}},{"start":{"line":146,"column":8},"end":{"line":146,"column":8}}]},"10":{"line":155,"type":"if","locations":[{"start":{"line":155,"column":8},"end":{"line":155,"column":8}},{"start":{"line":155,"column":8},"end":{"line":155,"column":8}}]},"11":{"line":160,"type":"cond-expr","locations":[{"start":{"line":161,"column":16},"end":{"line":199,"column":17}},{"start":{"line":200,"column":16},"end":{"line":200,"column":20}}]},"12":{"line":169,"type":"if","locations":[{"start":{"line":169,"column":24},"end":{"line":169,"column":24}},{"start":{"line":169,"column":24},"end":{"line":169,"column":24}}]},"13":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":31},"end":{"line":172,"column":31}},{"start":{"line":172,"column":31},"end":{"line":172,"column":31}}]},"14":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":28},"end":{"line":174,"column":28}},{"start":{"line":174,"column":28},"end":{"line":174,"column":28}}]},"15":{"line":180,"type":"if","locations":[{"start":{"line":180,"column":28},"end":{"line":180,"column":28}},{"start":{"line":180,"column":28},"end":{"line":180,"column":28}}]},"16":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":32},"end":{"line":182,"column":32}},{"start":{"line":182,"column":32},"end":{"line":182,"column":32}}]},"17":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":39},"end":{"line":184,"column":39}},{"start":{"line":184,"column":39},"end":{"line":184,"column":39}}]},"18":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":20},"end":{"line":192,"column":20}},{"start":{"line":192,"column":20},"end":{"line":192,"column":20}}]},"19":{"line":192,"type":"binary-expr","locations":[{"start":{"line":192,"column":24},"end":{"line":192,"column":46}},{"start":{"line":192,"column":50},"end":{"line":192,"column":72}},{"start":{"line":192,"column":76},"end":{"line":192,"column":98}}]},"20":{"line":196,"type":"if","locations":[{"start":{"line":196,"column":20},"end":{"line":196,"column":20}},{"start":{"line":196,"column":20},"end":{"line":196,"column":20}}]},"21":{"line":260,"type":"if","locations":[{"start":{"line":260,"column":0},"end":{"line":260,"column":0}},{"start":{"line":260,"column":0},"end":{"line":260,"column":0}}]}},"code":["(function () { YUI.add('jsonp', function (Y, NAME) {","","var isFunction = Y.Lang.isFunction;","","/**"," *

Provides a JSONPRequest class for repeated JSONP calls, and a convenience"," * method Y.jsonp(url, callback) to instantiate and send a JSONP request.

"," *"," *

Both the constructor as well as the convenience function take two"," * parameters: a url string and a callback.

"," *"," *

The url provided must include the placeholder string"," * "{callback}" which will be replaced by a dynamically"," * generated routing function to pass the data to your callback function."," * An example url might look like"," * "http://example.com/service?callback={callback}".

"," *"," *

The second parameter can be a callback function that accepts the JSON"," * payload as its argument, or a configuration object supporting the keys:

"," * "," *"," * @module jsonp"," * @class JSONPRequest"," * @constructor"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} the default callback configuration or"," * success handler"," */","function JSONPRequest() {"," this._init.apply(this, arguments);","}","","JSONPRequest.prototype = {"," /**"," * Set up the success and failure handlers and the regex pattern used"," * to insert the temporary callback name in the url."," *"," * @method _init"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} Optional success callback or config"," * object containing success and failure functions and"," * the url regex."," * @protected"," */"," _init : function (url, callback) {"," this.url = url;",""," /**"," * Map of the number of requests currently pending responses per"," * generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _requests"," * @private"," * @type {Object}"," */"," this._requests = {};",""," /**"," * Map of the number of timeouts received from the destination url"," * by generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _timeouts"," * @private"," * @type {Object}"," */"," this._timeouts = {};",""," // Accept a function, an object, or nothing"," callback = (isFunction(callback)) ?"," { on: { success: callback } } :"," callback || {};",""," var subs = callback.on || {};",""," if (!subs.success) {"," subs.success = this._defaultCallback(url, callback);"," }",""," // Apply defaults and store"," this._config = Y.merge({"," context: this,"," args : [],"," format : this._format,"," allowCache: false"," }, callback, { on: subs });"," },",""," /**"," * Override this method to provide logic to default the success callback if"," * it is not provided at construction. This is overridden by jsonp-url to"," * parse the callback from the url string."," *"," * @method _defaultCallback"," * @param url {String} the url passed at construction"," * @param config {Object} (optional) the config object passed at"," * construction"," * @return {Function}"," */"," _defaultCallback: function () {},",""," /**"," * Issues the JSONP request."," *"," * @method send"," * @param args* {any} any additional arguments to pass to the url formatter"," * beyond the base url and the proxy function name"," * @chainable"," */"," send : function () {"," var self = this,"," args = Y.Array(arguments, 0, true),"," config = self._config,"," proxy = self._proxy || Y.guid(),"," url;",""," // TODO: support allowCache as time value"," if (config.allowCache) {"," self._proxy = proxy;"," }",""," if (self._requests[proxy] === undefined) {"," self._requests[proxy] = 0;"," }"," if (self._timeouts[proxy] === undefined) {"," self._timeouts[proxy] = 0;"," }"," if (self._failures[proxy] === undefined) {"," self._failures[proxy] = 0;"," }"," self._requests[proxy]++;","",""," args.unshift(self.url, 'YUI.Env.JSONP.' + proxy);"," url = config.format.apply(self, args);",""," if (!config.on.success) {"," return self;"," }",""," function wrap(fn, isTimeout, isFailure) {"," return (isFunction(fn)) ?"," function (data) {"," var execute = true,"," counter = '_requests';",""," //if (config.allowCache) {"," // A lot of wrangling to make sure timeouts result in"," // fewer success callbacks, but the proxy is properly"," // cleaned up."," if (isTimeout) {"," ++self._timeouts[proxy];"," --self._requests[proxy];"," } else if (isFailure) {"," ++self._failures[proxy];"," if (self._timeouts[proxy] > 0) {"," --self._timeouts[proxy];"," } else {"," --self._requests[proxy];"," }"," } else {"," if (!self._requests[proxy]) {"," execute = false;"," if (self._timeouts[proxy] > 0) {"," counter = '_timeouts';"," } else if (self._failures[proxy] > 0) {"," counter = '_failures';"," }"," }"," --self[counter][proxy];"," }"," //}",""," if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) {"," delete YUI.Env.JSONP[proxy];"," }",""," if (execute) {"," fn.apply(config.context, [data].concat(config.args));"," }"," } :"," null;"," }",""," // Temporary un-sandboxed function alias"," // TODO: queuing"," YUI.Env.JSONP[proxy] = wrap(config.on.success);",""," // Y.Get transactions block each other by design, but can easily"," // be made non-blocking by just calling execute() on the transaction."," // https://github.com/yui/yui3/pull/393#issuecomment-11961608"," Y.Get.js(url, {"," onFailure : wrap(config.on.failure, false, true),"," onTimeout : wrap(config.on.timeout, true, false),"," timeout : config.timeout,"," charset : config.charset,"," attributes: config.attributes,"," async : config.async"," }).execute();",""," return self;"," },",""," /**"," * Default url formatter. Looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @param args* {any} additional args passed to send()"," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," return url.replace(/\\{callback\\}/, proxy);"," }","};","","Y.JSONPRequest = JSONPRequest;","","/**"," *"," * @method jsonp"," * @param url {String} the url of the JSONP service with the {callback}"," * placeholder where the callback function name typically goes."," * @param c {Function|Object} Callback function accepting the JSON payload"," * as its argument, or a configuration object (see above)."," * @param args* {any} additional arguments to pass to send()"," * @return {JSONPRequest}"," * @static"," * @for YUI"," */","Y.jsonp = function (url,c) {"," var req = new Y.JSONPRequest(url,c);"," return req.send.apply(req, Y.Array(arguments, 2, true));","};","","if (!YUI.Env.JSONP) {"," YUI.Env.JSONP = {};","}","","","}, '@VERSION@', {\"requires\": [\"get\", \"oop\"]});","","}());"]}; } var __cov_ujvKiDWGSwwCzJBwq2DGWA = __coverage__['build/jsonp/jsonp.js']; -__cov_ujvKiDWGSwwCzJBwq2DGWA.s['1']++;YUI.add('jsonp',function(Y,NAME){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['1']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['2']++;var isFunction=Y.Lang.isFunction;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['3']++;function JSONPRequest(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['2']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['4']++;this._init.apply(this,arguments);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['5']++;JSONPRequest.prototype={_init:function(url,callback){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['3']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['6']++;this.url=url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['7']++;this._requests={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['8']++;this._timeouts={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['9']++;callback=isFunction(callback)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][0]++,{on:{success:callback}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][1]++,(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][0]++,callback)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][1]++,{}));__cov_ujvKiDWGSwwCzJBwq2DGWA.s['10']++;var subs=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][0]++,callback.on)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][1]++,{});__cov_ujvKiDWGSwwCzJBwq2DGWA.s['11']++;if(!subs.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['12']++;subs.success=this._defaultCallback(url,callback);}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['13']++;this._config=Y.merge({context:this,args:[],format:this._format,allowCache:false},callback,{on:subs});},_defaultCallback:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['4']++;},send:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['5']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['14']++;var self=this,args=Y.Array(arguments,0,true),config=self._config,proxy=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][0]++,self._proxy)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][1]++,Y.guid()),url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['15']++;if(config.allowCache){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['16']++;self._proxy=proxy;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['17']++;if(self._requests[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['18']++;self._requests[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['19']++;if(self._timeouts[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['20']++;self._timeouts[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['21']++;self._requests[proxy]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['22']++;args.unshift(self.url,'YUI.Env.JSONP.'+proxy);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['23']++;url=config.format.apply(self,args);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['24']++;if(!config.on.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['25']++;return self;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['26']++;function wrap(fn,isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['6']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['27']++;return isFunction(fn)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][0]++,function(data){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['7']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['28']++;var execute=true,counter='_requests';__cov_ujvKiDWGSwwCzJBwq2DGWA.s['29']++;if(isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['30']++;++self._timeouts[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['31']++;--self._requests[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['32']++;if(!self._requests[proxy]){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['33']++;execute=false;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['34']++;counter='_timeouts';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['35']++;--self[counter][proxy];}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['36']++;if((__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][0]++,!self._requests[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][1]++,!self._timeouts[proxy])){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['37']++;delete YUI.Env.JSONP[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['38']++;if(execute){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['39']++;fn.apply(config.context,[data].concat(config.args));}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][1]++;}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][1]++,null);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['40']++;YUI.Env.JSONP[proxy]=wrap(config.on.success);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['41']++;Y.Get.js(url,{onFailure:wrap(config.on.failure),onTimeout:wrap(config.on.timeout,true),timeout:config.timeout,charset:config.charset,attributes:config.attributes,async:config.async}).execute();__cov_ujvKiDWGSwwCzJBwq2DGWA.s['42']++;return self;},_format:function(url,proxy){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['8']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['43']++;return url.replace(/\{callback\}/,proxy);}};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['44']++;Y.JSONPRequest=JSONPRequest;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['45']++;Y.jsonp=function(url,c){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['9']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['46']++;var req=new Y.JSONPRequest(url,c);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['47']++;return req.send.apply(req,Y.Array(arguments,2,true));};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['48']++;if(!YUI.Env.JSONP){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['49']++;YUI.Env.JSONP={};}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][1]++;}},'@VERSION@',{'requires':['get','oop']}); +__cov_ujvKiDWGSwwCzJBwq2DGWA.s['1']++;YUI.add('jsonp',function(Y,NAME){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['1']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['2']++;var isFunction=Y.Lang.isFunction;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['3']++;function JSONPRequest(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['2']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['4']++;this._init.apply(this,arguments);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['5']++;JSONPRequest.prototype={_init:function(url,callback){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['3']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['6']++;this.url=url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['7']++;this._requests={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['8']++;this._timeouts={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['9']++;callback=isFunction(callback)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][0]++,{on:{success:callback}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][1]++,(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][0]++,callback)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][1]++,{}));__cov_ujvKiDWGSwwCzJBwq2DGWA.s['10']++;var subs=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][0]++,callback.on)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][1]++,{});__cov_ujvKiDWGSwwCzJBwq2DGWA.s['11']++;if(!subs.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['12']++;subs.success=this._defaultCallback(url,callback);}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['13']++;this._config=Y.merge({context:this,args:[],format:this._format,allowCache:false},callback,{on:subs});},_defaultCallback:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['4']++;},send:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['5']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['14']++;var self=this,args=Y.Array(arguments,0,true),config=self._config,proxy=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][0]++,self._proxy)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][1]++,Y.guid()),url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['15']++;if(config.allowCache){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['16']++;self._proxy=proxy;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['17']++;if(self._requests[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['18']++;self._requests[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['19']++;if(self._timeouts[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['20']++;self._timeouts[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['21']++;if(self._failures[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['22']++;self._failures[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['23']++;self._requests[proxy]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['24']++;args.unshift(self.url,'YUI.Env.JSONP.'+proxy);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['25']++;url=config.format.apply(self,args);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['26']++;if(!config.on.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['27']++;return self;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['28']++;function wrap(fn,isTimeout,isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['6']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['29']++;return isFunction(fn)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][0]++,function(data){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['7']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['30']++;var execute=true,counter='_requests';__cov_ujvKiDWGSwwCzJBwq2DGWA.s['31']++;if(isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['32']++;++self._timeouts[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['33']++;--self._requests[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['34']++;if(isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['35']++;++self._failures[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['36']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['37']++;--self._timeouts[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['38']++;--self._requests[proxy];}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['39']++;if(!self._requests[proxy]){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['40']++;execute=false;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['41']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['42']++;counter='_timeouts';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['43']++;if(self._failures[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['44']++;counter='_failures';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][1]++;}}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['45']++;--self[counter][proxy];}}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['46']++;if((__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][0]++,!self._requests[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][1]++,!self._timeouts[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][2]++,!self._failures[proxy])){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['47']++;delete YUI.Env.JSONP[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['48']++;if(execute){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['49']++;fn.apply(config.context,[data].concat(config.args));}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][1]++;}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][1]++,null);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['50']++;YUI.Env.JSONP[proxy]=wrap(config.on.success);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['51']++;Y.Get.js(url,{onFailure:wrap(config.on.failure,false,true),onTimeout:wrap(config.on.timeout,true,false),timeout:config.timeout,charset:config.charset,attributes:config.attributes,async:config.async}).execute();__cov_ujvKiDWGSwwCzJBwq2DGWA.s['52']++;return self;},_format:function(url,proxy){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['8']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['53']++;return url.replace(/\{callback\}/,proxy);}};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['54']++;Y.JSONPRequest=JSONPRequest;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['55']++;Y.jsonp=function(url,c){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['9']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['56']++;var req=new Y.JSONPRequest(url,c);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['57']++;return req.send.apply(req,Y.Array(arguments,2,true));};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['58']++;if(!YUI.Env.JSONP){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['59']++;YUI.Env.JSONP={};}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][1]++;}},'@VERSION@',{'requires':['get','oop']}); diff --git a/build/jsonp/jsonp-debug.js b/build/jsonp/jsonp-debug.js index 4ee0cf0c8f3..f1e3c8cd88c 100644 --- a/build/jsonp/jsonp-debug.js +++ b/build/jsonp/jsonp-debug.js @@ -143,6 +143,9 @@ JSONPRequest.prototype = { if (self._timeouts[proxy] === undefined) { self._timeouts[proxy] = 0; } + if (self._failures[proxy] === undefined) { + self._failures[proxy] = 0; + } self._requests[proxy]++; Y.log('sending ' + proxy); @@ -155,7 +158,7 @@ JSONPRequest.prototype = { return self; } - function wrap(fn, isTimeout) { + function wrap(fn, isTimeout, isFailure) { return (isFunction(fn)) ? function (data) { var execute = true, @@ -168,18 +171,42 @@ JSONPRequest.prototype = { if (isTimeout) { ++self._timeouts[proxy]; --self._requests[proxy]; - Y.log(proxy + ' timed out - timeouts(' + self._timeouts[proxy] + ') requests(' + self._requests[proxy] + ')'); + Y.log(proxy + + ' timed out - timeouts(' + self._timeouts[proxy] + + ') failures(' + self._failures[proxy] + + ') requests(' + self._requests[proxy] + + ')'); + } else if (isFailure) { + ++self._failures[proxy]; + if (self._timeouts[proxy] > 0) { + --self._timeouts[proxy]; + } else { + --self._requests[proxy]; + } + Y.log(proxy + + ' failure - timeouts(' + self._timeouts[proxy] + + ') failures(' + self._failures[proxy] + + ') requests(' + self._requests[proxy] + + ')'); } else { if (!self._requests[proxy]) { execute = false; - counter = '_timeouts'; + if (self._timeouts[proxy] > 0) { + counter = '_timeouts'; + } else if (self._failures[proxy] > 0) { + counter = '_failures'; + } } --self[counter][proxy]; - Y.log(proxy + ' response received - timeouts(' + self._timeouts[proxy] + ') requests(' + self._requests[proxy] + ')'); + Y.log(proxy + + ' response received - timeouts(' + self._timeouts[proxy] + + ') failures(' + self._failures[proxy] + + ') requests(' + self._requests[proxy] + + ')'); } //} - if (!self._requests[proxy] && !self._timeouts[proxy]) { + if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) { Y.log('deleting ' + proxy); delete YUI.Env.JSONP[proxy]; } @@ -199,8 +226,8 @@ JSONPRequest.prototype = { // be made non-blocking by just calling execute() on the transaction. // https://github.com/yui/yui3/pull/393#issuecomment-11961608 Y.Get.js(url, { - onFailure : wrap(config.on.failure), - onTimeout : wrap(config.on.timeout, true), + onFailure : wrap(config.on.failure, false, true), + onTimeout : wrap(config.on.timeout, true, false), timeout : config.timeout, charset : config.charset, attributes: config.attributes, diff --git a/build/jsonp/jsonp-min.js b/build/jsonp/jsonp-min.js index 5500e983e9b..56868f2a257 100644 --- a/build/jsonp/jsonp-min.js +++ b/build/jsonp/jsonp-min.js @@ -1 +1 @@ -YUI.add("jsonp",function(e,t){function r(){this._init.apply(this,arguments)}var n=e.Lang.isFunction;r.prototype={_init:function(t,r){this.url=t,this._requests={},this._timeouts={},r=n(r)?{on:{success:r}}:r||{};var i=r.on||{};i.success||(i.success=this._defaultCallback(t,r)),this._config=e.merge({context:this,args:[],format:this._format,allowCache:!1},r,{on:i})},_defaultCallback:function(){},send:function(){function u(e,r){return n(e)?function(n){var o=!0,u="_requests";r?(++t._timeouts[s],--t._requests[s]):(t._requests[s]||(o=!1,u="_timeouts"),--t[u][s]),!t._requests[s]&&!t._timeouts[s]&&delete YUI.Env.JSONP[s],o&&e.apply(i.context,[n].concat(i.args))}:null}var t=this,r=e.Array(arguments,0,!0),i=t._config,s=t._proxy||e.guid(),o;return i.allowCache&&(t._proxy=s),t._requests[s]===undefined&&(t._requests[s]=0),t._timeouts[s]===undefined&&(t._timeouts[s]=0),t._requests[s]++,r.unshift(t.url,"YUI.Env.JSONP."+s),o=i.format.apply(t,r),i.on.success?(YUI.Env.JSONP[s]=u(i.on.success),e.Get.js(o,{onFailure:u(i.on.failure),onTimeout:u(i.on.timeout,!0),timeout:i.timeout,charset:i.charset,attributes:i.attributes,async:i.async}).execute(),t):t},_format:function(e,t){return e.replace(/\{callback\}/,t)}},e.JSONPRequest=r,e.jsonp=function(t,n){var r=new e.JSONPRequest(t,n);return r.send.apply(r,e.Array(arguments,2,!0))},YUI.Env.JSONP||(YUI.Env.JSONP={})},"@VERSION@",{requires:["get","oop"]}); +YUI.add("jsonp",function(e,t){function r(){this._init.apply(this,arguments)}var n=e.Lang.isFunction;r.prototype={_init:function(t,r){this.url=t,this._requests={},this._timeouts={},r=n(r)?{on:{success:r}}:r||{};var i=r.on||{};i.success||(i.success=this._defaultCallback(t,r)),this._config=e.merge({context:this,args:[],format:this._format,allowCache:!1},r,{on:i})},_defaultCallback:function(){},send:function(){function u(e,r,o){return n(e)?function(n){var u=!0,a="_requests";r?(++t._timeouts[s],--t._requests[s]):o?(++t._failures[s],t._timeouts[s]>0?--t._timeouts[s]:--t._requests[s]):(t._requests[s]||(u=!1,t._timeouts[s]>0?a="_timeouts":t._failures[s]>0&&(a="_failures")),--t[a][s]),!t._requests[s]&&!t._timeouts[s]&&!t._failures[s]&&delete YUI.Env.JSONP[s],u&&e.apply(i.context,[n].concat(i.args))}:null}var t=this,r=e.Array(arguments,0,!0),i=t._config,s=t._proxy||e.guid(),o;return i.allowCache&&(t._proxy=s),t._requests[s]===undefined&&(t._requests[s]=0),t._timeouts[s]===undefined&&(t._timeouts[s]=0),t._failures[s]===undefined&&(t._failures[s]=0),t._requests[s]++,r.unshift(t.url,"YUI.Env.JSONP."+s),o=i.format.apply(t,r),i.on.success?(YUI.Env.JSONP[s]=u(i.on.success),e.Get.js(o,{onFailure:u(i.on.failure,!1,!0),onTimeout:u(i.on.timeout,!0,!1),timeout:i.timeout,charset:i.charset,attributes:i.attributes,async:i.async}).execute(),t):t},_format:function(e,t){return e.replace(/\{callback\}/,t)}},e.JSONPRequest=r,e.jsonp=function(t,n){var r=new e.JSONPRequest(t,n);return r.send.apply(r,e.Array(arguments,2,!0))},YUI.Env.JSONP||(YUI.Env.JSONP={})},"@VERSION@",{requires:["get","oop"]}); diff --git a/build/jsonp/jsonp.js b/build/jsonp/jsonp.js index 997f412df92..0b0a23db3a5 100644 --- a/build/jsonp/jsonp.js +++ b/build/jsonp/jsonp.js @@ -143,6 +143,9 @@ JSONPRequest.prototype = { if (self._timeouts[proxy] === undefined) { self._timeouts[proxy] = 0; } + if (self._failures[proxy] === undefined) { + self._failures[proxy] = 0; + } self._requests[proxy]++; @@ -153,7 +156,7 @@ JSONPRequest.prototype = { return self; } - function wrap(fn, isTimeout) { + function wrap(fn, isTimeout, isFailure) { return (isFunction(fn)) ? function (data) { var execute = true, @@ -166,16 +169,27 @@ JSONPRequest.prototype = { if (isTimeout) { ++self._timeouts[proxy]; --self._requests[proxy]; + } else if (isFailure) { + ++self._failures[proxy]; + if (self._timeouts[proxy] > 0) { + --self._timeouts[proxy]; + } else { + --self._requests[proxy]; + } } else { if (!self._requests[proxy]) { execute = false; - counter = '_timeouts'; + if (self._timeouts[proxy] > 0) { + counter = '_timeouts'; + } else if (self._failures[proxy] > 0) { + counter = '_failures'; + } } --self[counter][proxy]; } //} - if (!self._requests[proxy] && !self._timeouts[proxy]) { + if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) { delete YUI.Env.JSONP[proxy]; } @@ -194,8 +208,8 @@ JSONPRequest.prototype = { // be made non-blocking by just calling execute() on the transaction. // https://github.com/yui/yui3/pull/393#issuecomment-11961608 Y.Get.js(url, { - onFailure : wrap(config.on.failure), - onTimeout : wrap(config.on.timeout, true), + onFailure : wrap(config.on.failure, false, true), + onTimeout : wrap(config.on.timeout, true, false), timeout : config.timeout, charset : config.charset, attributes: config.attributes, diff --git a/src/jsonp/HISTORY.md b/src/jsonp/HISTORY.md index 85c3a20f97f..5d7ba270b0e 100644 --- a/src/jsonp/HISTORY.md +++ b/src/jsonp/HISTORY.md @@ -4,7 +4,7 @@ JSONP Change History @VERSION@ ------ -* No changes. +* Resolve "Uncaught TypeError: undefined is not a function" error when both *timeout* and *failure* are defined. Fixes #1817 [stanleyhlng] 3.16.0 ------ diff --git a/src/jsonp/js/jsonp-url.js b/src/jsonp/js/jsonp-url.js index a7ca6b48718..f4fdb5d142a 100644 --- a/src/jsonp/js/jsonp-url.js +++ b/src/jsonp/js/jsonp-url.js @@ -65,6 +65,7 @@ Y.mix(JSONPRequest.prototype, { }) .replace(/\[(\d+)\]/g, function (x, $1) { + /*jslint bitwise: true */ keys[i] = parseInt($1, 10) | 0; return '.@' + (i++); }) diff --git a/src/jsonp/js/jsonp.js b/src/jsonp/js/jsonp.js index 19893bd2d33..19cf5dbac05 100644 --- a/src/jsonp/js/jsonp.js +++ b/src/jsonp/js/jsonp.js @@ -141,6 +141,9 @@ JSONPRequest.prototype = { if (self._timeouts[proxy] === undefined) { self._timeouts[proxy] = 0; } + if (self._failures[proxy] === undefined) { + self._failures[proxy] = 0; + } self._requests[proxy]++; Y.log('sending ' + proxy); @@ -153,7 +156,7 @@ JSONPRequest.prototype = { return self; } - function wrap(fn, isTimeout) { + function wrap(fn, isTimeout, isFailure) { return (isFunction(fn)) ? function (data) { var execute = true, @@ -166,18 +169,42 @@ JSONPRequest.prototype = { if (isTimeout) { ++self._timeouts[proxy]; --self._requests[proxy]; - Y.log(proxy + ' timed out - timeouts(' + self._timeouts[proxy] + ') requests(' + self._requests[proxy] + ')'); + Y.log(proxy + + ' timed out - timeouts(' + self._timeouts[proxy] + + ') failures(' + self._failures[proxy] + + ') requests(' + self._requests[proxy] + + ')'); + } else if (isFailure) { + ++self._failures[proxy]; + if (self._timeouts[proxy] > 0) { + --self._timeouts[proxy]; + } else { + --self._requests[proxy]; + } + Y.log(proxy + + ' failure - timeouts(' + self._timeouts[proxy] + + ') failures(' + self._failures[proxy] + + ') requests(' + self._requests[proxy] + + ')'); } else { if (!self._requests[proxy]) { execute = false; - counter = '_timeouts'; + if (self._timeouts[proxy] > 0) { + counter = '_timeouts'; + } else if (self._failures[proxy] > 0) { + counter = '_failures'; + } } --self[counter][proxy]; - Y.log(proxy + ' response received - timeouts(' + self._timeouts[proxy] + ') requests(' + self._requests[proxy] + ')'); + Y.log(proxy + + ' response received - timeouts(' + self._timeouts[proxy] + + ') failures(' + self._failures[proxy] + + ') requests(' + self._requests[proxy] + + ')'); } //} - if (!self._requests[proxy] && !self._timeouts[proxy]) { + if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) { Y.log('deleting ' + proxy); delete YUI.Env.JSONP[proxy]; } @@ -197,8 +224,8 @@ JSONPRequest.prototype = { // be made non-blocking by just calling execute() on the transaction. // https://github.com/yui/yui3/pull/393#issuecomment-11961608 Y.Get.js(url, { - onFailure : wrap(config.on.failure), - onTimeout : wrap(config.on.timeout, true), + onFailure : wrap(config.on.failure, false, true), + onTimeout : wrap(config.on.timeout, true, false), timeout : config.timeout, charset : config.charset, attributes: config.attributes, From da3ce8aade51b726051a137b4f6c290a69c4b294 Mon Sep 17 00:00:00 2001 From: Stanley Ng Date: Wed, 14 May 2014 01:19:21 -0700 Subject: [PATCH 2/7] resolve undefined object self._failures[proxy]. Fixes #1817 [stanleyhlng] --- build/jsonp/jsonp-coverage.js | 4 ++-- build/jsonp/jsonp-debug.js | 2 ++ build/jsonp/jsonp-min.js | 2 +- build/jsonp/jsonp.js | 2 ++ src/jsonp/js/jsonp.js | 2 ++ 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/build/jsonp/jsonp-coverage.js b/build/jsonp/jsonp-coverage.js index 9ebbc9ead38..8871ddff9c2 100644 --- a/build/jsonp/jsonp-coverage.js +++ b/build/jsonp/jsonp-coverage.js @@ -1,6 +1,6 @@ if (typeof __coverage__ === 'undefined') { __coverage__ = {}; } if (!__coverage__['build/jsonp/jsonp.js']) { - __coverage__['build/jsonp/jsonp.js'] = {"path":"build/jsonp/jsonp.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0,0],"20":[0,0],"21":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":36}}},"2":{"name":"JSONPRequest","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}}},"3":{"name":"(anonymous_3)","line":58,"loc":{"start":{"line":58,"column":12},"end":{"line":58,"column":37}}},"4":{"name":"(anonymous_4)","line":118,"loc":{"start":{"line":118,"column":22},"end":{"line":118,"column":34}}},"5":{"name":"(anonymous_5)","line":128,"loc":{"start":{"line":128,"column":11},"end":{"line":128,"column":23}}},"6":{"name":"wrap","line":159,"loc":{"start":{"line":159,"column":8},"end":{"line":159,"column":48}}},"7":{"name":"(anonymous_7)","line":161,"loc":{"start":{"line":161,"column":16},"end":{"line":161,"column":32}}},"8":{"name":"(anonymous_8)","line":236,"loc":{"start":{"line":236,"column":13},"end":{"line":236,"column":35}}},"9":{"name":"(anonymous_9)","line":255,"loc":{"start":{"line":255,"column":10},"end":{"line":255,"column":27}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":265,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":35}},"3":{"start":{"line":42,"column":0},"end":{"line":44,"column":1}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":38}},"5":{"start":{"line":46,"column":0},"end":{"line":239,"column":2}},"6":{"start":{"line":59,"column":8},"end":{"line":59,"column":23}},"7":{"start":{"line":72,"column":8},"end":{"line":72,"column":28}},"8":{"start":{"line":85,"column":8},"end":{"line":85,"column":28}},"9":{"start":{"line":88,"column":8},"end":{"line":90,"column":27}},"10":{"start":{"line":92,"column":8},"end":{"line":92,"column":37}},"11":{"start":{"line":94,"column":8},"end":{"line":96,"column":9}},"12":{"start":{"line":95,"column":12},"end":{"line":95,"column":64}},"13":{"start":{"line":99,"column":8},"end":{"line":104,"column":39}},"14":{"start":{"line":129,"column":8},"end":{"line":133,"column":16}},"15":{"start":{"line":136,"column":8},"end":{"line":138,"column":9}},"16":{"start":{"line":137,"column":12},"end":{"line":137,"column":32}},"17":{"start":{"line":140,"column":8},"end":{"line":142,"column":9}},"18":{"start":{"line":141,"column":12},"end":{"line":141,"column":38}},"19":{"start":{"line":143,"column":8},"end":{"line":145,"column":9}},"20":{"start":{"line":144,"column":12},"end":{"line":144,"column":38}},"21":{"start":{"line":146,"column":8},"end":{"line":148,"column":9}},"22":{"start":{"line":147,"column":12},"end":{"line":147,"column":38}},"23":{"start":{"line":149,"column":8},"end":{"line":149,"column":32}},"24":{"start":{"line":152,"column":8},"end":{"line":152,"column":57}},"25":{"start":{"line":153,"column":8},"end":{"line":153,"column":46}},"26":{"start":{"line":155,"column":8},"end":{"line":157,"column":9}},"27":{"start":{"line":156,"column":12},"end":{"line":156,"column":24}},"28":{"start":{"line":159,"column":8},"end":{"line":201,"column":9}},"29":{"start":{"line":160,"column":12},"end":{"line":200,"column":21}},"30":{"start":{"line":162,"column":20},"end":{"line":163,"column":46}},"31":{"start":{"line":169,"column":24},"end":{"line":189,"column":25}},"32":{"start":{"line":170,"column":28},"end":{"line":170,"column":52}},"33":{"start":{"line":171,"column":28},"end":{"line":171,"column":52}},"34":{"start":{"line":172,"column":31},"end":{"line":189,"column":25}},"35":{"start":{"line":173,"column":28},"end":{"line":173,"column":52}},"36":{"start":{"line":174,"column":28},"end":{"line":178,"column":29}},"37":{"start":{"line":175,"column":32},"end":{"line":175,"column":56}},"38":{"start":{"line":177,"column":32},"end":{"line":177,"column":56}},"39":{"start":{"line":180,"column":28},"end":{"line":187,"column":29}},"40":{"start":{"line":181,"column":32},"end":{"line":181,"column":48}},"41":{"start":{"line":182,"column":32},"end":{"line":186,"column":33}},"42":{"start":{"line":183,"column":36},"end":{"line":183,"column":58}},"43":{"start":{"line":184,"column":39},"end":{"line":186,"column":33}},"44":{"start":{"line":185,"column":36},"end":{"line":185,"column":58}},"45":{"start":{"line":188,"column":28},"end":{"line":188,"column":51}},"46":{"start":{"line":192,"column":20},"end":{"line":194,"column":21}},"47":{"start":{"line":193,"column":24},"end":{"line":193,"column":52}},"48":{"start":{"line":196,"column":20},"end":{"line":198,"column":21}},"49":{"start":{"line":197,"column":24},"end":{"line":197,"column":77}},"50":{"start":{"line":205,"column":8},"end":{"line":205,"column":55}},"51":{"start":{"line":210,"column":8},"end":{"line":217,"column":21}},"52":{"start":{"line":219,"column":8},"end":{"line":219,"column":20}},"53":{"start":{"line":237,"column":8},"end":{"line":237,"column":50}},"54":{"start":{"line":241,"column":0},"end":{"line":241,"column":30}},"55":{"start":{"line":255,"column":0},"end":{"line":258,"column":2}},"56":{"start":{"line":256,"column":4},"end":{"line":256,"column":40}},"57":{"start":{"line":257,"column":4},"end":{"line":257,"column":60}},"58":{"start":{"line":260,"column":0},"end":{"line":262,"column":1}},"59":{"start":{"line":261,"column":4},"end":{"line":261,"column":23}}},"branchMap":{"1":{"line":88,"type":"cond-expr","locations":[{"start":{"line":89,"column":12},"end":{"line":89,"column":41}},{"start":{"line":90,"column":12},"end":{"line":90,"column":26}}]},"2":{"line":90,"type":"binary-expr","locations":[{"start":{"line":90,"column":12},"end":{"line":90,"column":20}},{"start":{"line":90,"column":24},"end":{"line":90,"column":26}}]},"3":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":19},"end":{"line":92,"column":30}},{"start":{"line":92,"column":34},"end":{"line":92,"column":36}}]},"4":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":8},"end":{"line":94,"column":8}},{"start":{"line":94,"column":8},"end":{"line":94,"column":8}}]},"5":{"line":132,"type":"binary-expr","locations":[{"start":{"line":132,"column":21},"end":{"line":132,"column":32}},{"start":{"line":132,"column":36},"end":{"line":132,"column":44}}]},"6":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":8},"end":{"line":136,"column":8}},{"start":{"line":136,"column":8},"end":{"line":136,"column":8}}]},"7":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":8},"end":{"line":140,"column":8}},{"start":{"line":140,"column":8},"end":{"line":140,"column":8}}]},"8":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":8}},{"start":{"line":143,"column":8},"end":{"line":143,"column":8}}]},"9":{"line":146,"type":"if","locations":[{"start":{"line":146,"column":8},"end":{"line":146,"column":8}},{"start":{"line":146,"column":8},"end":{"line":146,"column":8}}]},"10":{"line":155,"type":"if","locations":[{"start":{"line":155,"column":8},"end":{"line":155,"column":8}},{"start":{"line":155,"column":8},"end":{"line":155,"column":8}}]},"11":{"line":160,"type":"cond-expr","locations":[{"start":{"line":161,"column":16},"end":{"line":199,"column":17}},{"start":{"line":200,"column":16},"end":{"line":200,"column":20}}]},"12":{"line":169,"type":"if","locations":[{"start":{"line":169,"column":24},"end":{"line":169,"column":24}},{"start":{"line":169,"column":24},"end":{"line":169,"column":24}}]},"13":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":31},"end":{"line":172,"column":31}},{"start":{"line":172,"column":31},"end":{"line":172,"column":31}}]},"14":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":28},"end":{"line":174,"column":28}},{"start":{"line":174,"column":28},"end":{"line":174,"column":28}}]},"15":{"line":180,"type":"if","locations":[{"start":{"line":180,"column":28},"end":{"line":180,"column":28}},{"start":{"line":180,"column":28},"end":{"line":180,"column":28}}]},"16":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":32},"end":{"line":182,"column":32}},{"start":{"line":182,"column":32},"end":{"line":182,"column":32}}]},"17":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":39},"end":{"line":184,"column":39}},{"start":{"line":184,"column":39},"end":{"line":184,"column":39}}]},"18":{"line":192,"type":"if","locations":[{"start":{"line":192,"column":20},"end":{"line":192,"column":20}},{"start":{"line":192,"column":20},"end":{"line":192,"column":20}}]},"19":{"line":192,"type":"binary-expr","locations":[{"start":{"line":192,"column":24},"end":{"line":192,"column":46}},{"start":{"line":192,"column":50},"end":{"line":192,"column":72}},{"start":{"line":192,"column":76},"end":{"line":192,"column":98}}]},"20":{"line":196,"type":"if","locations":[{"start":{"line":196,"column":20},"end":{"line":196,"column":20}},{"start":{"line":196,"column":20},"end":{"line":196,"column":20}}]},"21":{"line":260,"type":"if","locations":[{"start":{"line":260,"column":0},"end":{"line":260,"column":0}},{"start":{"line":260,"column":0},"end":{"line":260,"column":0}}]}},"code":["(function () { YUI.add('jsonp', function (Y, NAME) {","","var isFunction = Y.Lang.isFunction;","","/**"," *

Provides a JSONPRequest class for repeated JSONP calls, and a convenience"," * method Y.jsonp(url, callback) to instantiate and send a JSONP request.

"," *"," *

Both the constructor as well as the convenience function take two"," * parameters: a url string and a callback.

"," *"," *

The url provided must include the placeholder string"," * "{callback}" which will be replaced by a dynamically"," * generated routing function to pass the data to your callback function."," * An example url might look like"," * "http://example.com/service?callback={callback}".

"," *"," *

The second parameter can be a callback function that accepts the JSON"," * payload as its argument, or a configuration object supporting the keys:

"," * "," *"," * @module jsonp"," * @class JSONPRequest"," * @constructor"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} the default callback configuration or"," * success handler"," */","function JSONPRequest() {"," this._init.apply(this, arguments);","}","","JSONPRequest.prototype = {"," /**"," * Set up the success and failure handlers and the regex pattern used"," * to insert the temporary callback name in the url."," *"," * @method _init"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} Optional success callback or config"," * object containing success and failure functions and"," * the url regex."," * @protected"," */"," _init : function (url, callback) {"," this.url = url;",""," /**"," * Map of the number of requests currently pending responses per"," * generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _requests"," * @private"," * @type {Object}"," */"," this._requests = {};",""," /**"," * Map of the number of timeouts received from the destination url"," * by generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _timeouts"," * @private"," * @type {Object}"," */"," this._timeouts = {};",""," // Accept a function, an object, or nothing"," callback = (isFunction(callback)) ?"," { on: { success: callback } } :"," callback || {};",""," var subs = callback.on || {};",""," if (!subs.success) {"," subs.success = this._defaultCallback(url, callback);"," }",""," // Apply defaults and store"," this._config = Y.merge({"," context: this,"," args : [],"," format : this._format,"," allowCache: false"," }, callback, { on: subs });"," },",""," /**"," * Override this method to provide logic to default the success callback if"," * it is not provided at construction. This is overridden by jsonp-url to"," * parse the callback from the url string."," *"," * @method _defaultCallback"," * @param url {String} the url passed at construction"," * @param config {Object} (optional) the config object passed at"," * construction"," * @return {Function}"," */"," _defaultCallback: function () {},",""," /**"," * Issues the JSONP request."," *"," * @method send"," * @param args* {any} any additional arguments to pass to the url formatter"," * beyond the base url and the proxy function name"," * @chainable"," */"," send : function () {"," var self = this,"," args = Y.Array(arguments, 0, true),"," config = self._config,"," proxy = self._proxy || Y.guid(),"," url;",""," // TODO: support allowCache as time value"," if (config.allowCache) {"," self._proxy = proxy;"," }",""," if (self._requests[proxy] === undefined) {"," self._requests[proxy] = 0;"," }"," if (self._timeouts[proxy] === undefined) {"," self._timeouts[proxy] = 0;"," }"," if (self._failures[proxy] === undefined) {"," self._failures[proxy] = 0;"," }"," self._requests[proxy]++;","",""," args.unshift(self.url, 'YUI.Env.JSONP.' + proxy);"," url = config.format.apply(self, args);",""," if (!config.on.success) {"," return self;"," }",""," function wrap(fn, isTimeout, isFailure) {"," return (isFunction(fn)) ?"," function (data) {"," var execute = true,"," counter = '_requests';",""," //if (config.allowCache) {"," // A lot of wrangling to make sure timeouts result in"," // fewer success callbacks, but the proxy is properly"," // cleaned up."," if (isTimeout) {"," ++self._timeouts[proxy];"," --self._requests[proxy];"," } else if (isFailure) {"," ++self._failures[proxy];"," if (self._timeouts[proxy] > 0) {"," --self._timeouts[proxy];"," } else {"," --self._requests[proxy];"," }"," } else {"," if (!self._requests[proxy]) {"," execute = false;"," if (self._timeouts[proxy] > 0) {"," counter = '_timeouts';"," } else if (self._failures[proxy] > 0) {"," counter = '_failures';"," }"," }"," --self[counter][proxy];"," }"," //}",""," if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) {"," delete YUI.Env.JSONP[proxy];"," }",""," if (execute) {"," fn.apply(config.context, [data].concat(config.args));"," }"," } :"," null;"," }",""," // Temporary un-sandboxed function alias"," // TODO: queuing"," YUI.Env.JSONP[proxy] = wrap(config.on.success);",""," // Y.Get transactions block each other by design, but can easily"," // be made non-blocking by just calling execute() on the transaction."," // https://github.com/yui/yui3/pull/393#issuecomment-11961608"," Y.Get.js(url, {"," onFailure : wrap(config.on.failure, false, true),"," onTimeout : wrap(config.on.timeout, true, false),"," timeout : config.timeout,"," charset : config.charset,"," attributes: config.attributes,"," async : config.async"," }).execute();",""," return self;"," },",""," /**"," * Default url formatter. Looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @param args* {any} additional args passed to send()"," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," return url.replace(/\\{callback\\}/, proxy);"," }","};","","Y.JSONPRequest = JSONPRequest;","","/**"," *"," * @method jsonp"," * @param url {String} the url of the JSONP service with the {callback}"," * placeholder where the callback function name typically goes."," * @param c {Function|Object} Callback function accepting the JSON payload"," * as its argument, or a configuration object (see above)."," * @param args* {any} additional arguments to pass to send()"," * @return {JSONPRequest}"," * @static"," * @for YUI"," */","Y.jsonp = function (url,c) {"," var req = new Y.JSONPRequest(url,c);"," return req.send.apply(req, Y.Array(arguments, 2, true));","};","","if (!YUI.Env.JSONP) {"," YUI.Env.JSONP = {};","}","","","}, '@VERSION@', {\"requires\": [\"get\", \"oop\"]});","","}());"]}; + __coverage__['build/jsonp/jsonp.js'] = {"path":"build/jsonp/jsonp.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0,0],"20":[0,0],"21":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":36}}},"2":{"name":"JSONPRequest","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}}},"3":{"name":"(anonymous_3)","line":58,"loc":{"start":{"line":58,"column":12},"end":{"line":58,"column":37}}},"4":{"name":"(anonymous_4)","line":120,"loc":{"start":{"line":120,"column":22},"end":{"line":120,"column":34}}},"5":{"name":"(anonymous_5)","line":130,"loc":{"start":{"line":130,"column":11},"end":{"line":130,"column":23}}},"6":{"name":"wrap","line":161,"loc":{"start":{"line":161,"column":8},"end":{"line":161,"column":48}}},"7":{"name":"(anonymous_7)","line":163,"loc":{"start":{"line":163,"column":16},"end":{"line":163,"column":32}}},"8":{"name":"(anonymous_8)","line":238,"loc":{"start":{"line":238,"column":13},"end":{"line":238,"column":35}}},"9":{"name":"(anonymous_9)","line":257,"loc":{"start":{"line":257,"column":10},"end":{"line":257,"column":27}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":267,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":35}},"3":{"start":{"line":42,"column":0},"end":{"line":44,"column":1}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":38}},"5":{"start":{"line":46,"column":0},"end":{"line":241,"column":2}},"6":{"start":{"line":59,"column":8},"end":{"line":59,"column":23}},"7":{"start":{"line":72,"column":8},"end":{"line":72,"column":28}},"8":{"start":{"line":85,"column":8},"end":{"line":85,"column":28}},"9":{"start":{"line":87,"column":8},"end":{"line":87,"column":28}},"10":{"start":{"line":90,"column":8},"end":{"line":92,"column":27}},"11":{"start":{"line":94,"column":8},"end":{"line":94,"column":37}},"12":{"start":{"line":96,"column":8},"end":{"line":98,"column":9}},"13":{"start":{"line":97,"column":12},"end":{"line":97,"column":64}},"14":{"start":{"line":101,"column":8},"end":{"line":106,"column":39}},"15":{"start":{"line":131,"column":8},"end":{"line":135,"column":16}},"16":{"start":{"line":138,"column":8},"end":{"line":140,"column":9}},"17":{"start":{"line":139,"column":12},"end":{"line":139,"column":32}},"18":{"start":{"line":142,"column":8},"end":{"line":144,"column":9}},"19":{"start":{"line":143,"column":12},"end":{"line":143,"column":38}},"20":{"start":{"line":145,"column":8},"end":{"line":147,"column":9}},"21":{"start":{"line":146,"column":12},"end":{"line":146,"column":38}},"22":{"start":{"line":148,"column":8},"end":{"line":150,"column":9}},"23":{"start":{"line":149,"column":12},"end":{"line":149,"column":38}},"24":{"start":{"line":151,"column":8},"end":{"line":151,"column":32}},"25":{"start":{"line":154,"column":8},"end":{"line":154,"column":57}},"26":{"start":{"line":155,"column":8},"end":{"line":155,"column":46}},"27":{"start":{"line":157,"column":8},"end":{"line":159,"column":9}},"28":{"start":{"line":158,"column":12},"end":{"line":158,"column":24}},"29":{"start":{"line":161,"column":8},"end":{"line":203,"column":9}},"30":{"start":{"line":162,"column":12},"end":{"line":202,"column":21}},"31":{"start":{"line":164,"column":20},"end":{"line":165,"column":46}},"32":{"start":{"line":171,"column":24},"end":{"line":191,"column":25}},"33":{"start":{"line":172,"column":28},"end":{"line":172,"column":52}},"34":{"start":{"line":173,"column":28},"end":{"line":173,"column":52}},"35":{"start":{"line":174,"column":31},"end":{"line":191,"column":25}},"36":{"start":{"line":175,"column":28},"end":{"line":175,"column":52}},"37":{"start":{"line":176,"column":28},"end":{"line":180,"column":29}},"38":{"start":{"line":177,"column":32},"end":{"line":177,"column":56}},"39":{"start":{"line":179,"column":32},"end":{"line":179,"column":56}},"40":{"start":{"line":182,"column":28},"end":{"line":189,"column":29}},"41":{"start":{"line":183,"column":32},"end":{"line":183,"column":48}},"42":{"start":{"line":184,"column":32},"end":{"line":188,"column":33}},"43":{"start":{"line":185,"column":36},"end":{"line":185,"column":58}},"44":{"start":{"line":186,"column":39},"end":{"line":188,"column":33}},"45":{"start":{"line":187,"column":36},"end":{"line":187,"column":58}},"46":{"start":{"line":190,"column":28},"end":{"line":190,"column":51}},"47":{"start":{"line":194,"column":20},"end":{"line":196,"column":21}},"48":{"start":{"line":195,"column":24},"end":{"line":195,"column":52}},"49":{"start":{"line":198,"column":20},"end":{"line":200,"column":21}},"50":{"start":{"line":199,"column":24},"end":{"line":199,"column":77}},"51":{"start":{"line":207,"column":8},"end":{"line":207,"column":55}},"52":{"start":{"line":212,"column":8},"end":{"line":219,"column":21}},"53":{"start":{"line":221,"column":8},"end":{"line":221,"column":20}},"54":{"start":{"line":239,"column":8},"end":{"line":239,"column":50}},"55":{"start":{"line":243,"column":0},"end":{"line":243,"column":30}},"56":{"start":{"line":257,"column":0},"end":{"line":260,"column":2}},"57":{"start":{"line":258,"column":4},"end":{"line":258,"column":40}},"58":{"start":{"line":259,"column":4},"end":{"line":259,"column":60}},"59":{"start":{"line":262,"column":0},"end":{"line":264,"column":1}},"60":{"start":{"line":263,"column":4},"end":{"line":263,"column":23}}},"branchMap":{"1":{"line":90,"type":"cond-expr","locations":[{"start":{"line":91,"column":12},"end":{"line":91,"column":41}},{"start":{"line":92,"column":12},"end":{"line":92,"column":26}}]},"2":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":12},"end":{"line":92,"column":20}},{"start":{"line":92,"column":24},"end":{"line":92,"column":26}}]},"3":{"line":94,"type":"binary-expr","locations":[{"start":{"line":94,"column":19},"end":{"line":94,"column":30}},{"start":{"line":94,"column":34},"end":{"line":94,"column":36}}]},"4":{"line":96,"type":"if","locations":[{"start":{"line":96,"column":8},"end":{"line":96,"column":8}},{"start":{"line":96,"column":8},"end":{"line":96,"column":8}}]},"5":{"line":134,"type":"binary-expr","locations":[{"start":{"line":134,"column":21},"end":{"line":134,"column":32}},{"start":{"line":134,"column":36},"end":{"line":134,"column":44}}]},"6":{"line":138,"type":"if","locations":[{"start":{"line":138,"column":8},"end":{"line":138,"column":8}},{"start":{"line":138,"column":8},"end":{"line":138,"column":8}}]},"7":{"line":142,"type":"if","locations":[{"start":{"line":142,"column":8},"end":{"line":142,"column":8}},{"start":{"line":142,"column":8},"end":{"line":142,"column":8}}]},"8":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":8},"end":{"line":145,"column":8}},{"start":{"line":145,"column":8},"end":{"line":145,"column":8}}]},"9":{"line":148,"type":"if","locations":[{"start":{"line":148,"column":8},"end":{"line":148,"column":8}},{"start":{"line":148,"column":8},"end":{"line":148,"column":8}}]},"10":{"line":157,"type":"if","locations":[{"start":{"line":157,"column":8},"end":{"line":157,"column":8}},{"start":{"line":157,"column":8},"end":{"line":157,"column":8}}]},"11":{"line":162,"type":"cond-expr","locations":[{"start":{"line":163,"column":16},"end":{"line":201,"column":17}},{"start":{"line":202,"column":16},"end":{"line":202,"column":20}}]},"12":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":24},"end":{"line":171,"column":24}},{"start":{"line":171,"column":24},"end":{"line":171,"column":24}}]},"13":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":31},"end":{"line":174,"column":31}},{"start":{"line":174,"column":31},"end":{"line":174,"column":31}}]},"14":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":28},"end":{"line":176,"column":28}},{"start":{"line":176,"column":28},"end":{"line":176,"column":28}}]},"15":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":28},"end":{"line":182,"column":28}},{"start":{"line":182,"column":28},"end":{"line":182,"column":28}}]},"16":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":32},"end":{"line":184,"column":32}},{"start":{"line":184,"column":32},"end":{"line":184,"column":32}}]},"17":{"line":186,"type":"if","locations":[{"start":{"line":186,"column":39},"end":{"line":186,"column":39}},{"start":{"line":186,"column":39},"end":{"line":186,"column":39}}]},"18":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":20},"end":{"line":194,"column":20}},{"start":{"line":194,"column":20},"end":{"line":194,"column":20}}]},"19":{"line":194,"type":"binary-expr","locations":[{"start":{"line":194,"column":24},"end":{"line":194,"column":46}},{"start":{"line":194,"column":50},"end":{"line":194,"column":72}},{"start":{"line":194,"column":76},"end":{"line":194,"column":98}}]},"20":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":20},"end":{"line":198,"column":20}},{"start":{"line":198,"column":20},"end":{"line":198,"column":20}}]},"21":{"line":262,"type":"if","locations":[{"start":{"line":262,"column":0},"end":{"line":262,"column":0}},{"start":{"line":262,"column":0},"end":{"line":262,"column":0}}]}},"code":["(function () { YUI.add('jsonp', function (Y, NAME) {","","var isFunction = Y.Lang.isFunction;","","/**"," *

Provides a JSONPRequest class for repeated JSONP calls, and a convenience"," * method Y.jsonp(url, callback) to instantiate and send a JSONP request.

"," *"," *

Both the constructor as well as the convenience function take two"," * parameters: a url string and a callback.

"," *"," *

The url provided must include the placeholder string"," * "{callback}" which will be replaced by a dynamically"," * generated routing function to pass the data to your callback function."," * An example url might look like"," * "http://example.com/service?callback={callback}".

"," *"," *

The second parameter can be a callback function that accepts the JSON"," * payload as its argument, or a configuration object supporting the keys:

"," * "," *"," * @module jsonp"," * @class JSONPRequest"," * @constructor"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} the default callback configuration or"," * success handler"," */","function JSONPRequest() {"," this._init.apply(this, arguments);","}","","JSONPRequest.prototype = {"," /**"," * Set up the success and failure handlers and the regex pattern used"," * to insert the temporary callback name in the url."," *"," * @method _init"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} Optional success callback or config"," * object containing success and failure functions and"," * the url regex."," * @protected"," */"," _init : function (url, callback) {"," this.url = url;",""," /**"," * Map of the number of requests currently pending responses per"," * generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _requests"," * @private"," * @type {Object}"," */"," this._requests = {};",""," /**"," * Map of the number of timeouts received from the destination url"," * by generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _timeouts"," * @private"," * @type {Object}"," */"," this._timeouts = {};",""," this._failures = {};",""," // Accept a function, an object, or nothing"," callback = (isFunction(callback)) ?"," { on: { success: callback } } :"," callback || {};",""," var subs = callback.on || {};",""," if (!subs.success) {"," subs.success = this._defaultCallback(url, callback);"," }",""," // Apply defaults and store"," this._config = Y.merge({"," context: this,"," args : [],"," format : this._format,"," allowCache: false"," }, callback, { on: subs });"," },",""," /**"," * Override this method to provide logic to default the success callback if"," * it is not provided at construction. This is overridden by jsonp-url to"," * parse the callback from the url string."," *"," * @method _defaultCallback"," * @param url {String} the url passed at construction"," * @param config {Object} (optional) the config object passed at"," * construction"," * @return {Function}"," */"," _defaultCallback: function () {},",""," /**"," * Issues the JSONP request."," *"," * @method send"," * @param args* {any} any additional arguments to pass to the url formatter"," * beyond the base url and the proxy function name"," * @chainable"," */"," send : function () {"," var self = this,"," args = Y.Array(arguments, 0, true),"," config = self._config,"," proxy = self._proxy || Y.guid(),"," url;",""," // TODO: support allowCache as time value"," if (config.allowCache) {"," self._proxy = proxy;"," }",""," if (self._requests[proxy] === undefined) {"," self._requests[proxy] = 0;"," }"," if (self._timeouts[proxy] === undefined) {"," self._timeouts[proxy] = 0;"," }"," if (self._failures[proxy] === undefined) {"," self._failures[proxy] = 0;"," }"," self._requests[proxy]++;","",""," args.unshift(self.url, 'YUI.Env.JSONP.' + proxy);"," url = config.format.apply(self, args);",""," if (!config.on.success) {"," return self;"," }",""," function wrap(fn, isTimeout, isFailure) {"," return (isFunction(fn)) ?"," function (data) {"," var execute = true,"," counter = '_requests';",""," //if (config.allowCache) {"," // A lot of wrangling to make sure timeouts result in"," // fewer success callbacks, but the proxy is properly"," // cleaned up."," if (isTimeout) {"," ++self._timeouts[proxy];"," --self._requests[proxy];"," } else if (isFailure) {"," ++self._failures[proxy];"," if (self._timeouts[proxy] > 0) {"," --self._timeouts[proxy];"," } else {"," --self._requests[proxy];"," }"," } else {"," if (!self._requests[proxy]) {"," execute = false;"," if (self._timeouts[proxy] > 0) {"," counter = '_timeouts';"," } else if (self._failures[proxy] > 0) {"," counter = '_failures';"," }"," }"," --self[counter][proxy];"," }"," //}",""," if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) {"," delete YUI.Env.JSONP[proxy];"," }",""," if (execute) {"," fn.apply(config.context, [data].concat(config.args));"," }"," } :"," null;"," }",""," // Temporary un-sandboxed function alias"," // TODO: queuing"," YUI.Env.JSONP[proxy] = wrap(config.on.success);",""," // Y.Get transactions block each other by design, but can easily"," // be made non-blocking by just calling execute() on the transaction."," // https://github.com/yui/yui3/pull/393#issuecomment-11961608"," Y.Get.js(url, {"," onFailure : wrap(config.on.failure, false, true),"," onTimeout : wrap(config.on.timeout, true, false),"," timeout : config.timeout,"," charset : config.charset,"," attributes: config.attributes,"," async : config.async"," }).execute();",""," return self;"," },",""," /**"," * Default url formatter. Looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @param args* {any} additional args passed to send()"," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," return url.replace(/\\{callback\\}/, proxy);"," }","};","","Y.JSONPRequest = JSONPRequest;","","/**"," *"," * @method jsonp"," * @param url {String} the url of the JSONP service with the {callback}"," * placeholder where the callback function name typically goes."," * @param c {Function|Object} Callback function accepting the JSON payload"," * as its argument, or a configuration object (see above)."," * @param args* {any} additional arguments to pass to send()"," * @return {JSONPRequest}"," * @static"," * @for YUI"," */","Y.jsonp = function (url,c) {"," var req = new Y.JSONPRequest(url,c);"," return req.send.apply(req, Y.Array(arguments, 2, true));","};","","if (!YUI.Env.JSONP) {"," YUI.Env.JSONP = {};","}","","","}, '@VERSION@', {\"requires\": [\"get\", \"oop\"]});","","}());"]}; } var __cov_ujvKiDWGSwwCzJBwq2DGWA = __coverage__['build/jsonp/jsonp.js']; -__cov_ujvKiDWGSwwCzJBwq2DGWA.s['1']++;YUI.add('jsonp',function(Y,NAME){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['1']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['2']++;var isFunction=Y.Lang.isFunction;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['3']++;function JSONPRequest(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['2']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['4']++;this._init.apply(this,arguments);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['5']++;JSONPRequest.prototype={_init:function(url,callback){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['3']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['6']++;this.url=url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['7']++;this._requests={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['8']++;this._timeouts={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['9']++;callback=isFunction(callback)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][0]++,{on:{success:callback}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][1]++,(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][0]++,callback)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][1]++,{}));__cov_ujvKiDWGSwwCzJBwq2DGWA.s['10']++;var subs=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][0]++,callback.on)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][1]++,{});__cov_ujvKiDWGSwwCzJBwq2DGWA.s['11']++;if(!subs.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['12']++;subs.success=this._defaultCallback(url,callback);}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['13']++;this._config=Y.merge({context:this,args:[],format:this._format,allowCache:false},callback,{on:subs});},_defaultCallback:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['4']++;},send:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['5']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['14']++;var self=this,args=Y.Array(arguments,0,true),config=self._config,proxy=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][0]++,self._proxy)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][1]++,Y.guid()),url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['15']++;if(config.allowCache){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['16']++;self._proxy=proxy;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['17']++;if(self._requests[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['18']++;self._requests[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['19']++;if(self._timeouts[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['20']++;self._timeouts[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['21']++;if(self._failures[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['22']++;self._failures[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['23']++;self._requests[proxy]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['24']++;args.unshift(self.url,'YUI.Env.JSONP.'+proxy);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['25']++;url=config.format.apply(self,args);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['26']++;if(!config.on.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['27']++;return self;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['28']++;function wrap(fn,isTimeout,isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['6']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['29']++;return isFunction(fn)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][0]++,function(data){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['7']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['30']++;var execute=true,counter='_requests';__cov_ujvKiDWGSwwCzJBwq2DGWA.s['31']++;if(isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['32']++;++self._timeouts[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['33']++;--self._requests[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['34']++;if(isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['35']++;++self._failures[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['36']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['37']++;--self._timeouts[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['38']++;--self._requests[proxy];}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['39']++;if(!self._requests[proxy]){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['40']++;execute=false;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['41']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['42']++;counter='_timeouts';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['43']++;if(self._failures[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['44']++;counter='_failures';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][1]++;}}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['45']++;--self[counter][proxy];}}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['46']++;if((__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][0]++,!self._requests[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][1]++,!self._timeouts[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][2]++,!self._failures[proxy])){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['47']++;delete YUI.Env.JSONP[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['48']++;if(execute){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['49']++;fn.apply(config.context,[data].concat(config.args));}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][1]++;}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][1]++,null);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['50']++;YUI.Env.JSONP[proxy]=wrap(config.on.success);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['51']++;Y.Get.js(url,{onFailure:wrap(config.on.failure,false,true),onTimeout:wrap(config.on.timeout,true,false),timeout:config.timeout,charset:config.charset,attributes:config.attributes,async:config.async}).execute();__cov_ujvKiDWGSwwCzJBwq2DGWA.s['52']++;return self;},_format:function(url,proxy){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['8']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['53']++;return url.replace(/\{callback\}/,proxy);}};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['54']++;Y.JSONPRequest=JSONPRequest;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['55']++;Y.jsonp=function(url,c){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['9']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['56']++;var req=new Y.JSONPRequest(url,c);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['57']++;return req.send.apply(req,Y.Array(arguments,2,true));};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['58']++;if(!YUI.Env.JSONP){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['59']++;YUI.Env.JSONP={};}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][1]++;}},'@VERSION@',{'requires':['get','oop']}); +__cov_ujvKiDWGSwwCzJBwq2DGWA.s['1']++;YUI.add('jsonp',function(Y,NAME){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['1']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['2']++;var isFunction=Y.Lang.isFunction;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['3']++;function JSONPRequest(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['2']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['4']++;this._init.apply(this,arguments);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['5']++;JSONPRequest.prototype={_init:function(url,callback){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['3']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['6']++;this.url=url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['7']++;this._requests={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['8']++;this._timeouts={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['9']++;this._failures={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['10']++;callback=isFunction(callback)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][0]++,{on:{success:callback}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][1]++,(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][0]++,callback)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][1]++,{}));__cov_ujvKiDWGSwwCzJBwq2DGWA.s['11']++;var subs=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][0]++,callback.on)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][1]++,{});__cov_ujvKiDWGSwwCzJBwq2DGWA.s['12']++;if(!subs.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['13']++;subs.success=this._defaultCallback(url,callback);}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['14']++;this._config=Y.merge({context:this,args:[],format:this._format,allowCache:false},callback,{on:subs});},_defaultCallback:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['4']++;},send:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['5']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['15']++;var self=this,args=Y.Array(arguments,0,true),config=self._config,proxy=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][0]++,self._proxy)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][1]++,Y.guid()),url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['16']++;if(config.allowCache){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['17']++;self._proxy=proxy;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['18']++;if(self._requests[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['19']++;self._requests[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['20']++;if(self._timeouts[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['21']++;self._timeouts[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['22']++;if(self._failures[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['23']++;self._failures[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['24']++;self._requests[proxy]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['25']++;args.unshift(self.url,'YUI.Env.JSONP.'+proxy);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['26']++;url=config.format.apply(self,args);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['27']++;if(!config.on.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['28']++;return self;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['29']++;function wrap(fn,isTimeout,isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['6']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['30']++;return isFunction(fn)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][0]++,function(data){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['7']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['31']++;var execute=true,counter='_requests';__cov_ujvKiDWGSwwCzJBwq2DGWA.s['32']++;if(isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['33']++;++self._timeouts[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['34']++;--self._requests[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['35']++;if(isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['36']++;++self._failures[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['37']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['38']++;--self._timeouts[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['39']++;--self._requests[proxy];}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['40']++;if(!self._requests[proxy]){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['41']++;execute=false;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['42']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['43']++;counter='_timeouts';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['44']++;if(self._failures[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['45']++;counter='_failures';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][1]++;}}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['46']++;--self[counter][proxy];}}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['47']++;if((__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][0]++,!self._requests[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][1]++,!self._timeouts[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][2]++,!self._failures[proxy])){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['48']++;delete YUI.Env.JSONP[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['49']++;if(execute){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['50']++;fn.apply(config.context,[data].concat(config.args));}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][1]++;}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][1]++,null);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['51']++;YUI.Env.JSONP[proxy]=wrap(config.on.success);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['52']++;Y.Get.js(url,{onFailure:wrap(config.on.failure,false,true),onTimeout:wrap(config.on.timeout,true,false),timeout:config.timeout,charset:config.charset,attributes:config.attributes,async:config.async}).execute();__cov_ujvKiDWGSwwCzJBwq2DGWA.s['53']++;return self;},_format:function(url,proxy){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['8']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['54']++;return url.replace(/\{callback\}/,proxy);}};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['55']++;Y.JSONPRequest=JSONPRequest;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['56']++;Y.jsonp=function(url,c){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['9']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['57']++;var req=new Y.JSONPRequest(url,c);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['58']++;return req.send.apply(req,Y.Array(arguments,2,true));};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['59']++;if(!YUI.Env.JSONP){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['60']++;YUI.Env.JSONP={};}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][1]++;}},'@VERSION@',{'requires':['get','oop']}); diff --git a/build/jsonp/jsonp-debug.js b/build/jsonp/jsonp-debug.js index f1e3c8cd88c..4c46a7dd4b5 100644 --- a/build/jsonp/jsonp-debug.js +++ b/build/jsonp/jsonp-debug.js @@ -84,6 +84,8 @@ JSONPRequest.prototype = { */ this._timeouts = {}; + this._failures = {}; + // Accept a function, an object, or nothing callback = (isFunction(callback)) ? { on: { success: callback } } : diff --git a/build/jsonp/jsonp-min.js b/build/jsonp/jsonp-min.js index 56868f2a257..c39c8690fdf 100644 --- a/build/jsonp/jsonp-min.js +++ b/build/jsonp/jsonp-min.js @@ -1 +1 @@ -YUI.add("jsonp",function(e,t){function r(){this._init.apply(this,arguments)}var n=e.Lang.isFunction;r.prototype={_init:function(t,r){this.url=t,this._requests={},this._timeouts={},r=n(r)?{on:{success:r}}:r||{};var i=r.on||{};i.success||(i.success=this._defaultCallback(t,r)),this._config=e.merge({context:this,args:[],format:this._format,allowCache:!1},r,{on:i})},_defaultCallback:function(){},send:function(){function u(e,r,o){return n(e)?function(n){var u=!0,a="_requests";r?(++t._timeouts[s],--t._requests[s]):o?(++t._failures[s],t._timeouts[s]>0?--t._timeouts[s]:--t._requests[s]):(t._requests[s]||(u=!1,t._timeouts[s]>0?a="_timeouts":t._failures[s]>0&&(a="_failures")),--t[a][s]),!t._requests[s]&&!t._timeouts[s]&&!t._failures[s]&&delete YUI.Env.JSONP[s],u&&e.apply(i.context,[n].concat(i.args))}:null}var t=this,r=e.Array(arguments,0,!0),i=t._config,s=t._proxy||e.guid(),o;return i.allowCache&&(t._proxy=s),t._requests[s]===undefined&&(t._requests[s]=0),t._timeouts[s]===undefined&&(t._timeouts[s]=0),t._failures[s]===undefined&&(t._failures[s]=0),t._requests[s]++,r.unshift(t.url,"YUI.Env.JSONP."+s),o=i.format.apply(t,r),i.on.success?(YUI.Env.JSONP[s]=u(i.on.success),e.Get.js(o,{onFailure:u(i.on.failure,!1,!0),onTimeout:u(i.on.timeout,!0,!1),timeout:i.timeout,charset:i.charset,attributes:i.attributes,async:i.async}).execute(),t):t},_format:function(e,t){return e.replace(/\{callback\}/,t)}},e.JSONPRequest=r,e.jsonp=function(t,n){var r=new e.JSONPRequest(t,n);return r.send.apply(r,e.Array(arguments,2,!0))},YUI.Env.JSONP||(YUI.Env.JSONP={})},"@VERSION@",{requires:["get","oop"]}); +YUI.add("jsonp",function(e,t){function r(){this._init.apply(this,arguments)}var n=e.Lang.isFunction;r.prototype={_init:function(t,r){this.url=t,this._requests={},this._timeouts={},this._failures={},r=n(r)?{on:{success:r}}:r||{};var i=r.on||{};i.success||(i.success=this._defaultCallback(t,r)),this._config=e.merge({context:this,args:[],format:this._format,allowCache:!1},r,{on:i})},_defaultCallback:function(){},send:function(){function u(e,r,o){return n(e)?function(n){var u=!0,a="_requests";r?(++t._timeouts[s],--t._requests[s]):o?(++t._failures[s],t._timeouts[s]>0?--t._timeouts[s]:--t._requests[s]):(t._requests[s]||(u=!1,t._timeouts[s]>0?a="_timeouts":t._failures[s]>0&&(a="_failures")),--t[a][s]),!t._requests[s]&&!t._timeouts[s]&&!t._failures[s]&&delete YUI.Env.JSONP[s],u&&e.apply(i.context,[n].concat(i.args))}:null}var t=this,r=e.Array(arguments,0,!0),i=t._config,s=t._proxy||e.guid(),o;return i.allowCache&&(t._proxy=s),t._requests[s]===undefined&&(t._requests[s]=0),t._timeouts[s]===undefined&&(t._timeouts[s]=0),t._failures[s]===undefined&&(t._failures[s]=0),t._requests[s]++,r.unshift(t.url,"YUI.Env.JSONP."+s),o=i.format.apply(t,r),i.on.success?(YUI.Env.JSONP[s]=u(i.on.success),e.Get.js(o,{onFailure:u(i.on.failure,!1,!0),onTimeout:u(i.on.timeout,!0,!1),timeout:i.timeout,charset:i.charset,attributes:i.attributes,async:i.async}).execute(),t):t},_format:function(e,t){return e.replace(/\{callback\}/,t)}},e.JSONPRequest=r,e.jsonp=function(t,n){var r=new e.JSONPRequest(t,n);return r.send.apply(r,e.Array(arguments,2,!0))},YUI.Env.JSONP||(YUI.Env.JSONP={})},"@VERSION@",{requires:["get","oop"]}); diff --git a/build/jsonp/jsonp.js b/build/jsonp/jsonp.js index 0b0a23db3a5..d00d96541d4 100644 --- a/build/jsonp/jsonp.js +++ b/build/jsonp/jsonp.js @@ -84,6 +84,8 @@ JSONPRequest.prototype = { */ this._timeouts = {}; + this._failures = {}; + // Accept a function, an object, or nothing callback = (isFunction(callback)) ? { on: { success: callback } } : diff --git a/src/jsonp/js/jsonp.js b/src/jsonp/js/jsonp.js index 19cf5dbac05..9f47c001d27 100644 --- a/src/jsonp/js/jsonp.js +++ b/src/jsonp/js/jsonp.js @@ -82,6 +82,8 @@ JSONPRequest.prototype = { */ this._timeouts = {}; + this._failures = {}; + // Accept a function, an object, or nothing callback = (isFunction(callback)) ? { on: { success: callback } } : From 107aafe6a8866fa37959f38e3879c912002e28da Mon Sep 17 00:00:00 2001 From: Stanley Ng Date: Wed, 18 Jun 2014 21:16:57 -0700 Subject: [PATCH 3/7] rollback to an old commit build files --- build/jsonp-url/jsonp-url-coverage.js | 2 +- build/jsonp-url/jsonp-url-debug.js | 1 - build/jsonp-url/jsonp-url.js | 1 - build/jsonp/jsonp-coverage.js | 4 +-- build/jsonp/jsonp-debug.js | 43 +++++---------------------- build/jsonp/jsonp-min.js | 2 +- build/jsonp/jsonp.js | 26 ++++------------ 7 files changed, 16 insertions(+), 63 deletions(-) diff --git a/build/jsonp-url/jsonp-url-coverage.js b/build/jsonp-url/jsonp-url-coverage.js index db16ad388be..20f53b7a325 100644 --- a/build/jsonp-url/jsonp-url-coverage.js +++ b/build/jsonp-url/jsonp-url-coverage.js @@ -1,6 +1,6 @@ if (typeof __coverage__ === 'undefined') { __coverage__ = {}; } if (!__coverage__['build/jsonp-url/jsonp-url.js']) { - __coverage__['build/jsonp-url/jsonp-url.js'] = {"path":"build/jsonp-url/jsonp-url.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":40}}},"2":{"name":"(anonymous_2)","line":5,"loc":{"start":{"line":5,"column":19},"end":{"line":5,"column":31}}},"3":{"name":"(anonymous_3)","line":54,"loc":{"start":{"line":54,"column":22},"end":{"line":54,"column":37}}},"4":{"name":"(anonymous_4)","line":64,"loc":{"start":{"line":64,"column":20},"end":{"line":64,"column":41}}},"5":{"name":"(anonymous_5)","line":69,"loc":{"start":{"line":69,"column":20},"end":{"line":69,"column":37}}},"6":{"name":"(anonymous_6)","line":109,"loc":{"start":{"line":109,"column":13},"end":{"line":109,"column":35}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":133,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":5,"column":34}},"3":{"start":{"line":17,"column":0},"end":{"line":130,"column":9}},"4":{"start":{"line":55,"column":8},"end":{"line":58,"column":36}},"5":{"start":{"line":60,"column":8},"end":{"line":91,"column":9}},"6":{"start":{"line":62,"column":12},"end":{"line":74,"column":36}},"7":{"start":{"line":65,"column":24},"end":{"line":65,"column":37}},"8":{"start":{"line":66,"column":24},"end":{"line":66,"column":44}},"9":{"start":{"line":71,"column":24},"end":{"line":71,"column":55}},"10":{"start":{"line":72,"column":24},"end":{"line":72,"column":44}},"11":{"start":{"line":77,"column":12},"end":{"line":90,"column":13}},"12":{"start":{"line":78,"column":16},"end":{"line":78,"column":42}},"13":{"start":{"line":79,"column":16},"end":{"line":83,"column":17}},"14":{"start":{"line":80,"column":20},"end":{"line":82,"column":21}},"15":{"start":{"line":81,"column":24},"end":{"line":81,"column":72}},"16":{"start":{"line":87,"column":16},"end":{"line":89,"column":55}},"17":{"start":{"line":93,"column":8},"end":{"line":93,"column":32}},"18":{"start":{"line":110,"column":8},"end":{"line":111,"column":31}},"19":{"start":{"line":113,"column":8},"end":{"line":115,"column":9}},"20":{"start":{"line":114,"column":12},"end":{"line":114,"column":50}},"21":{"start":{"line":117,"column":8},"end":{"line":117,"column":61}},"22":{"start":{"line":119,"column":8},"end":{"line":127,"column":9}},"23":{"start":{"line":120,"column":12},"end":{"line":120,"column":56}},"24":{"start":{"line":122,"column":12},"end":{"line":122,"column":37}},"25":{"start":{"line":123,"column":12},"end":{"line":125,"column":13}},"26":{"start":{"line":124,"column":16},"end":{"line":124,"column":59}},"27":{"start":{"line":126,"column":12},"end":{"line":126,"column":34}}},"branchMap":{"1":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"2":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":12},"end":{"line":77,"column":12}},{"start":{"line":77,"column":12},"end":{"line":77,"column":12}}]},"3":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":20},"end":{"line":80,"column":20}},{"start":{"line":80,"column":20},"end":{"line":80,"column":20}}]},"4":{"line":87,"type":"binary-expr","locations":[{"start":{"line":87,"column":27},"end":{"line":87,"column":56}},{"start":{"line":88,"column":27},"end":{"line":88,"column":45}},{"start":{"line":89,"column":27},"end":{"line":89,"column":54}}]},"5":{"line":93,"type":"binary-expr","locations":[{"start":{"line":93,"column":15},"end":{"line":93,"column":23}},{"start":{"line":93,"column":27},"end":{"line":93,"column":31}}]},"6":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":8},"end":{"line":113,"column":8}},{"start":{"line":113,"column":8},"end":{"line":113,"column":8}}]},"7":{"line":119,"type":"if","locations":[{"start":{"line":119,"column":8},"end":{"line":119,"column":8}},{"start":{"line":119,"column":8},"end":{"line":119,"column":8}}]},"8":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":12},"end":{"line":123,"column":12}},{"start":{"line":123,"column":12},"end":{"line":123,"column":12}}]},"9":{"line":123,"type":"binary-expr","locations":[{"start":{"line":123,"column":16},"end":{"line":123,"column":32}},{"start":{"line":123,"column":36},"end":{"line":123,"column":52}}]},"10":{"line":124,"type":"cond-expr","locations":[{"start":{"line":124,"column":49},"end":{"line":124,"column":52}},{"start":{"line":124,"column":55},"end":{"line":124,"column":58}}]}},"code":["(function () { YUI.add('jsonp-url', function (Y, NAME) {","","var JSONPRequest = Y.JSONPRequest,"," getByPath = Y.Object.getValue,"," noop = function () {};","","/**"," * Adds support for parsing complex callback identifiers from the jsonp url."," * This includes callback=foo[1]bar.baz[\"goo\"] as well as referencing methods"," * in the YUI instance."," *"," * @module jsonp"," * @submodule jsonp-url"," * @for JSONPRequest"," */","","Y.mix(JSONPRequest.prototype, {"," /**"," * RegExp used by the default URL formatter to insert the generated callback"," * name into the JSONP url. Looks for a query param callback=. If a value"," * is assigned, it will be clobbered."," *"," * @property _pattern"," * @type RegExp"," * @default /\\bcallback=.*?(?=&|$)/i"," * @protected"," */"," _pattern: /\\bcallback=(.*?)(?=&|$)/i,",""," /**"," * Template used by the default URL formatter to add the callback function"," * name to the url."," *"," * @property _template"," * @type String"," * @default \"callback={callback}\""," * @protected"," */"," _template: \"callback={callback}\",",""," /**"," *

Parses the url for a callback named explicitly in the string."," * Override this if the target JSONP service uses a different query"," * parameter or url format.

"," *"," *

If the callback is declared inline, the corresponding function will"," * be returned. Otherwise null.

"," *"," * @method _defaultCallback"," * @param url {String} the url to search in"," * @return {Function} the callback function if found, or null"," * @protected"," */"," _defaultCallback: function (url) {"," var match = url.match(this._pattern),"," keys = [],"," i = 0,"," locator, path, callback;",""," if (match) {"," // Strip the [\"string keys\"] and [1] array indexes"," locator = match[1]"," .replace(/\\[(['\"])(.*?)\\1\\]/g,"," function (x, $1, $2) {"," keys[i] = $2;"," return '.@' + (i++);"," })"," .replace(/\\[(\\d+)\\]/g,"," function (x, $1) {"," /*jslint bitwise: true */"," keys[i] = parseInt($1, 10) | 0;"," return '.@' + (i++);"," })"," .replace(/^\\./, ''); // remove leading dot",""," // Validate against problematic characters."," if (!/[^\\w\\.\\$@]/.test(locator)) {"," path = locator.split('.');"," for (i = path.length - 1; i >= 0; --i) {"," if (path[i].charAt(0) === '@') {"," path[i] = keys[parseInt(path[i].substr(1), 10)];"," }"," }",""," // First look for a global function, then the Y, then try the Y"," // again from the second token (to support \"callback=Y.handler\")"," callback = getByPath(Y.config.win, path) ||"," getByPath(Y, path) ||"," getByPath(Y, path.slice(1));"," }"," }",""," return callback || noop;"," },",""," /**"," * URL formatter that looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," var callbackRE = /\\{callback\\}/,"," callback, lastChar;",""," if (callbackRE.test(url)) {"," return url.replace(callbackRE, proxy);"," }",""," callback = this._template.replace(callbackRE, proxy);",""," if (this._pattern.test(url)) {"," return url.replace(this._pattern, callback);"," } else {"," lastChar = url.slice(-1);"," if (lastChar !== '&' && lastChar !== '?') {"," url += (url.indexOf('?') > -1) ? '&' : '?';"," }"," return url + callback;"," }"," }","","}, true);","","","}, '@VERSION@', {\"requires\": [\"jsonp\"]});","","}());"]}; + __coverage__['build/jsonp-url/jsonp-url.js'] = {"path":"build/jsonp-url/jsonp-url.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":40}}},"2":{"name":"(anonymous_2)","line":5,"loc":{"start":{"line":5,"column":19},"end":{"line":5,"column":31}}},"3":{"name":"(anonymous_3)","line":54,"loc":{"start":{"line":54,"column":22},"end":{"line":54,"column":37}}},"4":{"name":"(anonymous_4)","line":64,"loc":{"start":{"line":64,"column":20},"end":{"line":64,"column":41}}},"5":{"name":"(anonymous_5)","line":69,"loc":{"start":{"line":69,"column":20},"end":{"line":69,"column":37}}},"6":{"name":"(anonymous_6)","line":108,"loc":{"start":{"line":108,"column":13},"end":{"line":108,"column":35}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":132,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":5,"column":34}},"3":{"start":{"line":17,"column":0},"end":{"line":129,"column":9}},"4":{"start":{"line":55,"column":8},"end":{"line":58,"column":36}},"5":{"start":{"line":60,"column":8},"end":{"line":90,"column":9}},"6":{"start":{"line":62,"column":12},"end":{"line":73,"column":36}},"7":{"start":{"line":65,"column":24},"end":{"line":65,"column":37}},"8":{"start":{"line":66,"column":24},"end":{"line":66,"column":44}},"9":{"start":{"line":70,"column":24},"end":{"line":70,"column":55}},"10":{"start":{"line":71,"column":24},"end":{"line":71,"column":44}},"11":{"start":{"line":76,"column":12},"end":{"line":89,"column":13}},"12":{"start":{"line":77,"column":16},"end":{"line":77,"column":42}},"13":{"start":{"line":78,"column":16},"end":{"line":82,"column":17}},"14":{"start":{"line":79,"column":20},"end":{"line":81,"column":21}},"15":{"start":{"line":80,"column":24},"end":{"line":80,"column":72}},"16":{"start":{"line":86,"column":16},"end":{"line":88,"column":55}},"17":{"start":{"line":92,"column":8},"end":{"line":92,"column":32}},"18":{"start":{"line":109,"column":8},"end":{"line":110,"column":31}},"19":{"start":{"line":112,"column":8},"end":{"line":114,"column":9}},"20":{"start":{"line":113,"column":12},"end":{"line":113,"column":50}},"21":{"start":{"line":116,"column":8},"end":{"line":116,"column":61}},"22":{"start":{"line":118,"column":8},"end":{"line":126,"column":9}},"23":{"start":{"line":119,"column":12},"end":{"line":119,"column":56}},"24":{"start":{"line":121,"column":12},"end":{"line":121,"column":37}},"25":{"start":{"line":122,"column":12},"end":{"line":124,"column":13}},"26":{"start":{"line":123,"column":16},"end":{"line":123,"column":59}},"27":{"start":{"line":125,"column":12},"end":{"line":125,"column":34}}},"branchMap":{"1":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"2":{"line":76,"type":"if","locations":[{"start":{"line":76,"column":12},"end":{"line":76,"column":12}},{"start":{"line":76,"column":12},"end":{"line":76,"column":12}}]},"3":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":20},"end":{"line":79,"column":20}},{"start":{"line":79,"column":20},"end":{"line":79,"column":20}}]},"4":{"line":86,"type":"binary-expr","locations":[{"start":{"line":86,"column":27},"end":{"line":86,"column":56}},{"start":{"line":87,"column":27},"end":{"line":87,"column":45}},{"start":{"line":88,"column":27},"end":{"line":88,"column":54}}]},"5":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":15},"end":{"line":92,"column":23}},{"start":{"line":92,"column":27},"end":{"line":92,"column":31}}]},"6":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":8},"end":{"line":112,"column":8}},{"start":{"line":112,"column":8},"end":{"line":112,"column":8}}]},"7":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":8},"end":{"line":118,"column":8}},{"start":{"line":118,"column":8},"end":{"line":118,"column":8}}]},"8":{"line":122,"type":"if","locations":[{"start":{"line":122,"column":12},"end":{"line":122,"column":12}},{"start":{"line":122,"column":12},"end":{"line":122,"column":12}}]},"9":{"line":122,"type":"binary-expr","locations":[{"start":{"line":122,"column":16},"end":{"line":122,"column":32}},{"start":{"line":122,"column":36},"end":{"line":122,"column":52}}]},"10":{"line":123,"type":"cond-expr","locations":[{"start":{"line":123,"column":49},"end":{"line":123,"column":52}},{"start":{"line":123,"column":55},"end":{"line":123,"column":58}}]}},"code":["(function () { YUI.add('jsonp-url', function (Y, NAME) {","","var JSONPRequest = Y.JSONPRequest,"," getByPath = Y.Object.getValue,"," noop = function () {};","","/**"," * Adds support for parsing complex callback identifiers from the jsonp url."," * This includes callback=foo[1]bar.baz[\"goo\"] as well as referencing methods"," * in the YUI instance."," *"," * @module jsonp"," * @submodule jsonp-url"," * @for JSONPRequest"," */","","Y.mix(JSONPRequest.prototype, {"," /**"," * RegExp used by the default URL formatter to insert the generated callback"," * name into the JSONP url. Looks for a query param callback=. If a value"," * is assigned, it will be clobbered."," *"," * @property _pattern"," * @type RegExp"," * @default /\\bcallback=.*?(?=&|$)/i"," * @protected"," */"," _pattern: /\\bcallback=(.*?)(?=&|$)/i,",""," /**"," * Template used by the default URL formatter to add the callback function"," * name to the url."," *"," * @property _template"," * @type String"," * @default \"callback={callback}\""," * @protected"," */"," _template: \"callback={callback}\",",""," /**"," *

Parses the url for a callback named explicitly in the string."," * Override this if the target JSONP service uses a different query"," * parameter or url format.

"," *"," *

If the callback is declared inline, the corresponding function will"," * be returned. Otherwise null.

"," *"," * @method _defaultCallback"," * @param url {String} the url to search in"," * @return {Function} the callback function if found, or null"," * @protected"," */"," _defaultCallback: function (url) {"," var match = url.match(this._pattern),"," keys = [],"," i = 0,"," locator, path, callback;",""," if (match) {"," // Strip the [\"string keys\"] and [1] array indexes"," locator = match[1]"," .replace(/\\[(['\"])(.*?)\\1\\]/g,"," function (x, $1, $2) {"," keys[i] = $2;"," return '.@' + (i++);"," })"," .replace(/\\[(\\d+)\\]/g,"," function (x, $1) {"," keys[i] = parseInt($1, 10) | 0;"," return '.@' + (i++);"," })"," .replace(/^\\./, ''); // remove leading dot",""," // Validate against problematic characters."," if (!/[^\\w\\.\\$@]/.test(locator)) {"," path = locator.split('.');"," for (i = path.length - 1; i >= 0; --i) {"," if (path[i].charAt(0) === '@') {"," path[i] = keys[parseInt(path[i].substr(1), 10)];"," }"," }",""," // First look for a global function, then the Y, then try the Y"," // again from the second token (to support \"callback=Y.handler\")"," callback = getByPath(Y.config.win, path) ||"," getByPath(Y, path) ||"," getByPath(Y, path.slice(1));"," }"," }",""," return callback || noop;"," },",""," /**"," * URL formatter that looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," var callbackRE = /\\{callback\\}/,"," callback, lastChar;",""," if (callbackRE.test(url)) {"," return url.replace(callbackRE, proxy);"," }",""," callback = this._template.replace(callbackRE, proxy);",""," if (this._pattern.test(url)) {"," return url.replace(this._pattern, callback);"," } else {"," lastChar = url.slice(-1);"," if (lastChar !== '&' && lastChar !== '?') {"," url += (url.indexOf('?') > -1) ? '&' : '?';"," }"," return url + callback;"," }"," }","","}, true);","","","}, '@VERSION@', {\"requires\": [\"jsonp\"]});","","}());"]}; } var __cov_5w$_gf1Mn7SBKiyuo2Kxgw = __coverage__['build/jsonp-url/jsonp-url.js']; __cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['1']++;YUI.add('jsonp-url',function(Y,NAME){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['1']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['2']++;var JSONPRequest=Y.JSONPRequest,getByPath=Y.Object.getValue,noop=function(){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['2']++;};__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['3']++;Y.mix(JSONPRequest.prototype,{_pattern:/\bcallback=(.*?)(?=&|$)/i,_template:'callback={callback}',_defaultCallback:function(url){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['3']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['4']++;var match=url.match(this._pattern),keys=[],i=0,locator,path,callback;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['5']++;if(match){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['1'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['6']++;locator=match[1].replace(/\[(['"])(.*?)\1\]/g,function(x,$1,$2){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['4']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['7']++;keys[i]=$2;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['8']++;return'.@'+i++;}).replace(/\[(\d+)\]/g,function(x,$1){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['5']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['9']++;keys[i]=parseInt($1,10)|0;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['10']++;return'.@'+i++;}).replace(/^\./,'');__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['11']++;if(!/[^\w\.\$@]/.test(locator)){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['2'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['12']++;path=locator.split('.');__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['13']++;for(i=path.length-1;i>=0;--i){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['14']++;if(path[i].charAt(0)==='@'){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['3'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['15']++;path[i]=keys[parseInt(path[i].substr(1),10)];}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['3'][1]++;}}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['16']++;callback=(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['4'][0]++,getByPath(Y.config.win,path))||(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['4'][1]++,getByPath(Y,path))||(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['4'][2]++,getByPath(Y,path.slice(1)));}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['2'][1]++;}}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['1'][1]++;}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['17']++;return(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['5'][0]++,callback)||(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['5'][1]++,noop);},_format:function(url,proxy){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['6']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['18']++;var callbackRE=/\{callback\}/,callback,lastChar;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['19']++;if(callbackRE.test(url)){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['6'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['20']++;return url.replace(callbackRE,proxy);}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['6'][1]++;}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['21']++;callback=this._template.replace(callbackRE,proxy);__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['22']++;if(this._pattern.test(url)){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['7'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['23']++;return url.replace(this._pattern,callback);}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['7'][1]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['24']++;lastChar=url.slice(-1);__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['25']++;if((__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['9'][0]++,lastChar!=='&')&&(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['9'][1]++,lastChar!=='?')){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['8'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['26']++;url+=url.indexOf('?')>-1?(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['10'][0]++,'&'):(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['10'][1]++,'?');}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['8'][1]++;}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['27']++;return url+callback;}}},true);},'@VERSION@',{'requires':['jsonp']}); diff --git a/build/jsonp-url/jsonp-url-debug.js b/build/jsonp-url/jsonp-url-debug.js index fb43d164be2..61316bc4d2e 100644 --- a/build/jsonp-url/jsonp-url-debug.js +++ b/build/jsonp-url/jsonp-url-debug.js @@ -67,7 +67,6 @@ Y.mix(JSONPRequest.prototype, { }) .replace(/\[(\d+)\]/g, function (x, $1) { - /*jslint bitwise: true */ keys[i] = parseInt($1, 10) | 0; return '.@' + (i++); }) diff --git a/build/jsonp-url/jsonp-url.js b/build/jsonp-url/jsonp-url.js index fb43d164be2..61316bc4d2e 100644 --- a/build/jsonp-url/jsonp-url.js +++ b/build/jsonp-url/jsonp-url.js @@ -67,7 +67,6 @@ Y.mix(JSONPRequest.prototype, { }) .replace(/\[(\d+)\]/g, function (x, $1) { - /*jslint bitwise: true */ keys[i] = parseInt($1, 10) | 0; return '.@' + (i++); }) diff --git a/build/jsonp/jsonp-coverage.js b/build/jsonp/jsonp-coverage.js index 8871ddff9c2..7e2d688b279 100644 --- a/build/jsonp/jsonp-coverage.js +++ b/build/jsonp/jsonp-coverage.js @@ -1,6 +1,6 @@ if (typeof __coverage__ === 'undefined') { __coverage__ = {}; } if (!__coverage__['build/jsonp/jsonp.js']) { - __coverage__['build/jsonp/jsonp.js'] = {"path":"build/jsonp/jsonp.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0,0],"20":[0,0],"21":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":36}}},"2":{"name":"JSONPRequest","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}}},"3":{"name":"(anonymous_3)","line":58,"loc":{"start":{"line":58,"column":12},"end":{"line":58,"column":37}}},"4":{"name":"(anonymous_4)","line":120,"loc":{"start":{"line":120,"column":22},"end":{"line":120,"column":34}}},"5":{"name":"(anonymous_5)","line":130,"loc":{"start":{"line":130,"column":11},"end":{"line":130,"column":23}}},"6":{"name":"wrap","line":161,"loc":{"start":{"line":161,"column":8},"end":{"line":161,"column":48}}},"7":{"name":"(anonymous_7)","line":163,"loc":{"start":{"line":163,"column":16},"end":{"line":163,"column":32}}},"8":{"name":"(anonymous_8)","line":238,"loc":{"start":{"line":238,"column":13},"end":{"line":238,"column":35}}},"9":{"name":"(anonymous_9)","line":257,"loc":{"start":{"line":257,"column":10},"end":{"line":257,"column":27}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":267,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":35}},"3":{"start":{"line":42,"column":0},"end":{"line":44,"column":1}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":38}},"5":{"start":{"line":46,"column":0},"end":{"line":241,"column":2}},"6":{"start":{"line":59,"column":8},"end":{"line":59,"column":23}},"7":{"start":{"line":72,"column":8},"end":{"line":72,"column":28}},"8":{"start":{"line":85,"column":8},"end":{"line":85,"column":28}},"9":{"start":{"line":87,"column":8},"end":{"line":87,"column":28}},"10":{"start":{"line":90,"column":8},"end":{"line":92,"column":27}},"11":{"start":{"line":94,"column":8},"end":{"line":94,"column":37}},"12":{"start":{"line":96,"column":8},"end":{"line":98,"column":9}},"13":{"start":{"line":97,"column":12},"end":{"line":97,"column":64}},"14":{"start":{"line":101,"column":8},"end":{"line":106,"column":39}},"15":{"start":{"line":131,"column":8},"end":{"line":135,"column":16}},"16":{"start":{"line":138,"column":8},"end":{"line":140,"column":9}},"17":{"start":{"line":139,"column":12},"end":{"line":139,"column":32}},"18":{"start":{"line":142,"column":8},"end":{"line":144,"column":9}},"19":{"start":{"line":143,"column":12},"end":{"line":143,"column":38}},"20":{"start":{"line":145,"column":8},"end":{"line":147,"column":9}},"21":{"start":{"line":146,"column":12},"end":{"line":146,"column":38}},"22":{"start":{"line":148,"column":8},"end":{"line":150,"column":9}},"23":{"start":{"line":149,"column":12},"end":{"line":149,"column":38}},"24":{"start":{"line":151,"column":8},"end":{"line":151,"column":32}},"25":{"start":{"line":154,"column":8},"end":{"line":154,"column":57}},"26":{"start":{"line":155,"column":8},"end":{"line":155,"column":46}},"27":{"start":{"line":157,"column":8},"end":{"line":159,"column":9}},"28":{"start":{"line":158,"column":12},"end":{"line":158,"column":24}},"29":{"start":{"line":161,"column":8},"end":{"line":203,"column":9}},"30":{"start":{"line":162,"column":12},"end":{"line":202,"column":21}},"31":{"start":{"line":164,"column":20},"end":{"line":165,"column":46}},"32":{"start":{"line":171,"column":24},"end":{"line":191,"column":25}},"33":{"start":{"line":172,"column":28},"end":{"line":172,"column":52}},"34":{"start":{"line":173,"column":28},"end":{"line":173,"column":52}},"35":{"start":{"line":174,"column":31},"end":{"line":191,"column":25}},"36":{"start":{"line":175,"column":28},"end":{"line":175,"column":52}},"37":{"start":{"line":176,"column":28},"end":{"line":180,"column":29}},"38":{"start":{"line":177,"column":32},"end":{"line":177,"column":56}},"39":{"start":{"line":179,"column":32},"end":{"line":179,"column":56}},"40":{"start":{"line":182,"column":28},"end":{"line":189,"column":29}},"41":{"start":{"line":183,"column":32},"end":{"line":183,"column":48}},"42":{"start":{"line":184,"column":32},"end":{"line":188,"column":33}},"43":{"start":{"line":185,"column":36},"end":{"line":185,"column":58}},"44":{"start":{"line":186,"column":39},"end":{"line":188,"column":33}},"45":{"start":{"line":187,"column":36},"end":{"line":187,"column":58}},"46":{"start":{"line":190,"column":28},"end":{"line":190,"column":51}},"47":{"start":{"line":194,"column":20},"end":{"line":196,"column":21}},"48":{"start":{"line":195,"column":24},"end":{"line":195,"column":52}},"49":{"start":{"line":198,"column":20},"end":{"line":200,"column":21}},"50":{"start":{"line":199,"column":24},"end":{"line":199,"column":77}},"51":{"start":{"line":207,"column":8},"end":{"line":207,"column":55}},"52":{"start":{"line":212,"column":8},"end":{"line":219,"column":21}},"53":{"start":{"line":221,"column":8},"end":{"line":221,"column":20}},"54":{"start":{"line":239,"column":8},"end":{"line":239,"column":50}},"55":{"start":{"line":243,"column":0},"end":{"line":243,"column":30}},"56":{"start":{"line":257,"column":0},"end":{"line":260,"column":2}},"57":{"start":{"line":258,"column":4},"end":{"line":258,"column":40}},"58":{"start":{"line":259,"column":4},"end":{"line":259,"column":60}},"59":{"start":{"line":262,"column":0},"end":{"line":264,"column":1}},"60":{"start":{"line":263,"column":4},"end":{"line":263,"column":23}}},"branchMap":{"1":{"line":90,"type":"cond-expr","locations":[{"start":{"line":91,"column":12},"end":{"line":91,"column":41}},{"start":{"line":92,"column":12},"end":{"line":92,"column":26}}]},"2":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":12},"end":{"line":92,"column":20}},{"start":{"line":92,"column":24},"end":{"line":92,"column":26}}]},"3":{"line":94,"type":"binary-expr","locations":[{"start":{"line":94,"column":19},"end":{"line":94,"column":30}},{"start":{"line":94,"column":34},"end":{"line":94,"column":36}}]},"4":{"line":96,"type":"if","locations":[{"start":{"line":96,"column":8},"end":{"line":96,"column":8}},{"start":{"line":96,"column":8},"end":{"line":96,"column":8}}]},"5":{"line":134,"type":"binary-expr","locations":[{"start":{"line":134,"column":21},"end":{"line":134,"column":32}},{"start":{"line":134,"column":36},"end":{"line":134,"column":44}}]},"6":{"line":138,"type":"if","locations":[{"start":{"line":138,"column":8},"end":{"line":138,"column":8}},{"start":{"line":138,"column":8},"end":{"line":138,"column":8}}]},"7":{"line":142,"type":"if","locations":[{"start":{"line":142,"column":8},"end":{"line":142,"column":8}},{"start":{"line":142,"column":8},"end":{"line":142,"column":8}}]},"8":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":8},"end":{"line":145,"column":8}},{"start":{"line":145,"column":8},"end":{"line":145,"column":8}}]},"9":{"line":148,"type":"if","locations":[{"start":{"line":148,"column":8},"end":{"line":148,"column":8}},{"start":{"line":148,"column":8},"end":{"line":148,"column":8}}]},"10":{"line":157,"type":"if","locations":[{"start":{"line":157,"column":8},"end":{"line":157,"column":8}},{"start":{"line":157,"column":8},"end":{"line":157,"column":8}}]},"11":{"line":162,"type":"cond-expr","locations":[{"start":{"line":163,"column":16},"end":{"line":201,"column":17}},{"start":{"line":202,"column":16},"end":{"line":202,"column":20}}]},"12":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":24},"end":{"line":171,"column":24}},{"start":{"line":171,"column":24},"end":{"line":171,"column":24}}]},"13":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":31},"end":{"line":174,"column":31}},{"start":{"line":174,"column":31},"end":{"line":174,"column":31}}]},"14":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":28},"end":{"line":176,"column":28}},{"start":{"line":176,"column":28},"end":{"line":176,"column":28}}]},"15":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":28},"end":{"line":182,"column":28}},{"start":{"line":182,"column":28},"end":{"line":182,"column":28}}]},"16":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":32},"end":{"line":184,"column":32}},{"start":{"line":184,"column":32},"end":{"line":184,"column":32}}]},"17":{"line":186,"type":"if","locations":[{"start":{"line":186,"column":39},"end":{"line":186,"column":39}},{"start":{"line":186,"column":39},"end":{"line":186,"column":39}}]},"18":{"line":194,"type":"if","locations":[{"start":{"line":194,"column":20},"end":{"line":194,"column":20}},{"start":{"line":194,"column":20},"end":{"line":194,"column":20}}]},"19":{"line":194,"type":"binary-expr","locations":[{"start":{"line":194,"column":24},"end":{"line":194,"column":46}},{"start":{"line":194,"column":50},"end":{"line":194,"column":72}},{"start":{"line":194,"column":76},"end":{"line":194,"column":98}}]},"20":{"line":198,"type":"if","locations":[{"start":{"line":198,"column":20},"end":{"line":198,"column":20}},{"start":{"line":198,"column":20},"end":{"line":198,"column":20}}]},"21":{"line":262,"type":"if","locations":[{"start":{"line":262,"column":0},"end":{"line":262,"column":0}},{"start":{"line":262,"column":0},"end":{"line":262,"column":0}}]}},"code":["(function () { YUI.add('jsonp', function (Y, NAME) {","","var isFunction = Y.Lang.isFunction;","","/**"," *

Provides a JSONPRequest class for repeated JSONP calls, and a convenience"," * method Y.jsonp(url, callback) to instantiate and send a JSONP request.

"," *"," *

Both the constructor as well as the convenience function take two"," * parameters: a url string and a callback.

"," *"," *

The url provided must include the placeholder string"," * "{callback}" which will be replaced by a dynamically"," * generated routing function to pass the data to your callback function."," * An example url might look like"," * "http://example.com/service?callback={callback}".

"," *"," *

The second parameter can be a callback function that accepts the JSON"," * payload as its argument, or a configuration object supporting the keys:

"," *
    "," *
  • on - map of callback subscribers"," *
      "," *
    • success - function handler for successful transmission
    • "," *
    • failure - function handler for failed transmission
    • "," *
    • timeout - function handler for transactions that timeout
    • "," *
    "," *
  • "," *
  • format - override function for inserting the proxy name in the url
  • "," *
  • timeout - the number of milliseconds to wait before giving up
  • "," *
  • context - becomes this in the callbacks
  • "," *
  • args - array of subsequent parameters to pass to the callbacks
  • "," *
  • allowCache - use the same proxy name for all requests? (boolean)
  • "," *
"," *"," * @module jsonp"," * @class JSONPRequest"," * @constructor"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} the default callback configuration or"," * success handler"," */","function JSONPRequest() {"," this._init.apply(this, arguments);","}","","JSONPRequest.prototype = {"," /**"," * Set up the success and failure handlers and the regex pattern used"," * to insert the temporary callback name in the url."," *"," * @method _init"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} Optional success callback or config"," * object containing success and failure functions and"," * the url regex."," * @protected"," */"," _init : function (url, callback) {"," this.url = url;",""," /**"," * Map of the number of requests currently pending responses per"," * generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _requests"," * @private"," * @type {Object}"," */"," this._requests = {};",""," /**"," * Map of the number of timeouts received from the destination url"," * by generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _timeouts"," * @private"," * @type {Object}"," */"," this._timeouts = {};",""," this._failures = {};",""," // Accept a function, an object, or nothing"," callback = (isFunction(callback)) ?"," { on: { success: callback } } :"," callback || {};",""," var subs = callback.on || {};",""," if (!subs.success) {"," subs.success = this._defaultCallback(url, callback);"," }",""," // Apply defaults and store"," this._config = Y.merge({"," context: this,"," args : [],"," format : this._format,"," allowCache: false"," }, callback, { on: subs });"," },",""," /**"," * Override this method to provide logic to default the success callback if"," * it is not provided at construction. This is overridden by jsonp-url to"," * parse the callback from the url string."," *"," * @method _defaultCallback"," * @param url {String} the url passed at construction"," * @param config {Object} (optional) the config object passed at"," * construction"," * @return {Function}"," */"," _defaultCallback: function () {},",""," /**"," * Issues the JSONP request."," *"," * @method send"," * @param args* {any} any additional arguments to pass to the url formatter"," * beyond the base url and the proxy function name"," * @chainable"," */"," send : function () {"," var self = this,"," args = Y.Array(arguments, 0, true),"," config = self._config,"," proxy = self._proxy || Y.guid(),"," url;",""," // TODO: support allowCache as time value"," if (config.allowCache) {"," self._proxy = proxy;"," }",""," if (self._requests[proxy] === undefined) {"," self._requests[proxy] = 0;"," }"," if (self._timeouts[proxy] === undefined) {"," self._timeouts[proxy] = 0;"," }"," if (self._failures[proxy] === undefined) {"," self._failures[proxy] = 0;"," }"," self._requests[proxy]++;","",""," args.unshift(self.url, 'YUI.Env.JSONP.' + proxy);"," url = config.format.apply(self, args);",""," if (!config.on.success) {"," return self;"," }",""," function wrap(fn, isTimeout, isFailure) {"," return (isFunction(fn)) ?"," function (data) {"," var execute = true,"," counter = '_requests';",""," //if (config.allowCache) {"," // A lot of wrangling to make sure timeouts result in"," // fewer success callbacks, but the proxy is properly"," // cleaned up."," if (isTimeout) {"," ++self._timeouts[proxy];"," --self._requests[proxy];"," } else if (isFailure) {"," ++self._failures[proxy];"," if (self._timeouts[proxy] > 0) {"," --self._timeouts[proxy];"," } else {"," --self._requests[proxy];"," }"," } else {"," if (!self._requests[proxy]) {"," execute = false;"," if (self._timeouts[proxy] > 0) {"," counter = '_timeouts';"," } else if (self._failures[proxy] > 0) {"," counter = '_failures';"," }"," }"," --self[counter][proxy];"," }"," //}",""," if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) {"," delete YUI.Env.JSONP[proxy];"," }",""," if (execute) {"," fn.apply(config.context, [data].concat(config.args));"," }"," } :"," null;"," }",""," // Temporary un-sandboxed function alias"," // TODO: queuing"," YUI.Env.JSONP[proxy] = wrap(config.on.success);",""," // Y.Get transactions block each other by design, but can easily"," // be made non-blocking by just calling execute() on the transaction."," // https://github.com/yui/yui3/pull/393#issuecomment-11961608"," Y.Get.js(url, {"," onFailure : wrap(config.on.failure, false, true),"," onTimeout : wrap(config.on.timeout, true, false),"," timeout : config.timeout,"," charset : config.charset,"," attributes: config.attributes,"," async : config.async"," }).execute();",""," return self;"," },",""," /**"," * Default url formatter. Looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @param args* {any} additional args passed to send()"," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," return url.replace(/\\{callback\\}/, proxy);"," }","};","","Y.JSONPRequest = JSONPRequest;","","/**"," *"," * @method jsonp"," * @param url {String} the url of the JSONP service with the {callback}"," * placeholder where the callback function name typically goes."," * @param c {Function|Object} Callback function accepting the JSON payload"," * as its argument, or a configuration object (see above)."," * @param args* {any} additional arguments to pass to send()"," * @return {JSONPRequest}"," * @static"," * @for YUI"," */","Y.jsonp = function (url,c) {"," var req = new Y.JSONPRequest(url,c);"," return req.send.apply(req, Y.Array(arguments, 2, true));","};","","if (!YUI.Env.JSONP) {"," YUI.Env.JSONP = {};","}","","","}, '@VERSION@', {\"requires\": [\"get\", \"oop\"]});","","}());"]}; + __coverage__['build/jsonp/jsonp.js'] = {"path":"build/jsonp/jsonp.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":36}}},"2":{"name":"JSONPRequest","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}}},"3":{"name":"(anonymous_3)","line":58,"loc":{"start":{"line":58,"column":12},"end":{"line":58,"column":37}}},"4":{"name":"(anonymous_4)","line":118,"loc":{"start":{"line":118,"column":22},"end":{"line":118,"column":34}}},"5":{"name":"(anonymous_5)","line":128,"loc":{"start":{"line":128,"column":11},"end":{"line":128,"column":23}}},"6":{"name":"wrap","line":156,"loc":{"start":{"line":156,"column":8},"end":{"line":156,"column":37}}},"7":{"name":"(anonymous_7)","line":158,"loc":{"start":{"line":158,"column":16},"end":{"line":158,"column":32}}},"8":{"name":"(anonymous_8)","line":222,"loc":{"start":{"line":222,"column":13},"end":{"line":222,"column":35}}},"9":{"name":"(anonymous_9)","line":241,"loc":{"start":{"line":241,"column":10},"end":{"line":241,"column":27}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":251,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":35}},"3":{"start":{"line":42,"column":0},"end":{"line":44,"column":1}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":38}},"5":{"start":{"line":46,"column":0},"end":{"line":225,"column":2}},"6":{"start":{"line":59,"column":8},"end":{"line":59,"column":23}},"7":{"start":{"line":72,"column":8},"end":{"line":72,"column":28}},"8":{"start":{"line":85,"column":8},"end":{"line":85,"column":28}},"9":{"start":{"line":88,"column":8},"end":{"line":90,"column":27}},"10":{"start":{"line":92,"column":8},"end":{"line":92,"column":37}},"11":{"start":{"line":94,"column":8},"end":{"line":96,"column":9}},"12":{"start":{"line":95,"column":12},"end":{"line":95,"column":64}},"13":{"start":{"line":99,"column":8},"end":{"line":104,"column":39}},"14":{"start":{"line":129,"column":8},"end":{"line":133,"column":16}},"15":{"start":{"line":136,"column":8},"end":{"line":138,"column":9}},"16":{"start":{"line":137,"column":12},"end":{"line":137,"column":32}},"17":{"start":{"line":140,"column":8},"end":{"line":142,"column":9}},"18":{"start":{"line":141,"column":12},"end":{"line":141,"column":38}},"19":{"start":{"line":143,"column":8},"end":{"line":145,"column":9}},"20":{"start":{"line":144,"column":12},"end":{"line":144,"column":38}},"21":{"start":{"line":146,"column":8},"end":{"line":146,"column":32}},"22":{"start":{"line":149,"column":8},"end":{"line":149,"column":57}},"23":{"start":{"line":150,"column":8},"end":{"line":150,"column":46}},"24":{"start":{"line":152,"column":8},"end":{"line":154,"column":9}},"25":{"start":{"line":153,"column":12},"end":{"line":153,"column":24}},"26":{"start":{"line":156,"column":8},"end":{"line":187,"column":9}},"27":{"start":{"line":157,"column":12},"end":{"line":186,"column":21}},"28":{"start":{"line":159,"column":20},"end":{"line":160,"column":46}},"29":{"start":{"line":166,"column":24},"end":{"line":175,"column":25}},"30":{"start":{"line":167,"column":28},"end":{"line":167,"column":52}},"31":{"start":{"line":168,"column":28},"end":{"line":168,"column":52}},"32":{"start":{"line":170,"column":28},"end":{"line":173,"column":29}},"33":{"start":{"line":171,"column":32},"end":{"line":171,"column":48}},"34":{"start":{"line":172,"column":32},"end":{"line":172,"column":54}},"35":{"start":{"line":174,"column":28},"end":{"line":174,"column":51}},"36":{"start":{"line":178,"column":20},"end":{"line":180,"column":21}},"37":{"start":{"line":179,"column":24},"end":{"line":179,"column":52}},"38":{"start":{"line":182,"column":20},"end":{"line":184,"column":21}},"39":{"start":{"line":183,"column":24},"end":{"line":183,"column":77}},"40":{"start":{"line":191,"column":8},"end":{"line":191,"column":55}},"41":{"start":{"line":196,"column":8},"end":{"line":203,"column":21}},"42":{"start":{"line":205,"column":8},"end":{"line":205,"column":20}},"43":{"start":{"line":223,"column":8},"end":{"line":223,"column":50}},"44":{"start":{"line":227,"column":0},"end":{"line":227,"column":30}},"45":{"start":{"line":241,"column":0},"end":{"line":244,"column":2}},"46":{"start":{"line":242,"column":4},"end":{"line":242,"column":40}},"47":{"start":{"line":243,"column":4},"end":{"line":243,"column":60}},"48":{"start":{"line":246,"column":0},"end":{"line":248,"column":1}},"49":{"start":{"line":247,"column":4},"end":{"line":247,"column":23}}},"branchMap":{"1":{"line":88,"type":"cond-expr","locations":[{"start":{"line":89,"column":12},"end":{"line":89,"column":41}},{"start":{"line":90,"column":12},"end":{"line":90,"column":26}}]},"2":{"line":90,"type":"binary-expr","locations":[{"start":{"line":90,"column":12},"end":{"line":90,"column":20}},{"start":{"line":90,"column":24},"end":{"line":90,"column":26}}]},"3":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":19},"end":{"line":92,"column":30}},{"start":{"line":92,"column":34},"end":{"line":92,"column":36}}]},"4":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":8},"end":{"line":94,"column":8}},{"start":{"line":94,"column":8},"end":{"line":94,"column":8}}]},"5":{"line":132,"type":"binary-expr","locations":[{"start":{"line":132,"column":21},"end":{"line":132,"column":32}},{"start":{"line":132,"column":36},"end":{"line":132,"column":44}}]},"6":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":8},"end":{"line":136,"column":8}},{"start":{"line":136,"column":8},"end":{"line":136,"column":8}}]},"7":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":8},"end":{"line":140,"column":8}},{"start":{"line":140,"column":8},"end":{"line":140,"column":8}}]},"8":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":8}},{"start":{"line":143,"column":8},"end":{"line":143,"column":8}}]},"9":{"line":152,"type":"if","locations":[{"start":{"line":152,"column":8},"end":{"line":152,"column":8}},{"start":{"line":152,"column":8},"end":{"line":152,"column":8}}]},"10":{"line":157,"type":"cond-expr","locations":[{"start":{"line":158,"column":16},"end":{"line":185,"column":17}},{"start":{"line":186,"column":16},"end":{"line":186,"column":20}}]},"11":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":24},"end":{"line":166,"column":24}},{"start":{"line":166,"column":24},"end":{"line":166,"column":24}}]},"12":{"line":170,"type":"if","locations":[{"start":{"line":170,"column":28},"end":{"line":170,"column":28}},{"start":{"line":170,"column":28},"end":{"line":170,"column":28}}]},"13":{"line":178,"type":"if","locations":[{"start":{"line":178,"column":20},"end":{"line":178,"column":20}},{"start":{"line":178,"column":20},"end":{"line":178,"column":20}}]},"14":{"line":178,"type":"binary-expr","locations":[{"start":{"line":178,"column":24},"end":{"line":178,"column":46}},{"start":{"line":178,"column":50},"end":{"line":178,"column":72}}]},"15":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":20},"end":{"line":182,"column":20}},{"start":{"line":182,"column":20},"end":{"line":182,"column":20}}]},"16":{"line":246,"type":"if","locations":[{"start":{"line":246,"column":0},"end":{"line":246,"column":0}},{"start":{"line":246,"column":0},"end":{"line":246,"column":0}}]}},"code":["(function () { YUI.add('jsonp', function (Y, NAME) {","","var isFunction = Y.Lang.isFunction;","","/**"," *

Provides a JSONPRequest class for repeated JSONP calls, and a convenience"," * method Y.jsonp(url, callback) to instantiate and send a JSONP request.

"," *"," *

Both the constructor as well as the convenience function take two"," * parameters: a url string and a callback.

"," *"," *

The url provided must include the placeholder string"," * "{callback}" which will be replaced by a dynamically"," * generated routing function to pass the data to your callback function."," * An example url might look like"," * "http://example.com/service?callback={callback}".

"," *"," *

The second parameter can be a callback function that accepts the JSON"," * payload as its argument, or a configuration object supporting the keys:

"," *
    "," *
  • on - map of callback subscribers"," *
      "," *
    • success - function handler for successful transmission
    • "," *
    • failure - function handler for failed transmission
    • "," *
    • timeout - function handler for transactions that timeout
    • "," *
    "," *
  • "," *
  • format - override function for inserting the proxy name in the url
  • "," *
  • timeout - the number of milliseconds to wait before giving up
  • "," *
  • context - becomes this in the callbacks
  • "," *
  • args - array of subsequent parameters to pass to the callbacks
  • "," *
  • allowCache - use the same proxy name for all requests? (boolean)
  • "," *
"," *"," * @module jsonp"," * @class JSONPRequest"," * @constructor"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} the default callback configuration or"," * success handler"," */","function JSONPRequest() {"," this._init.apply(this, arguments);","}","","JSONPRequest.prototype = {"," /**"," * Set up the success and failure handlers and the regex pattern used"," * to insert the temporary callback name in the url."," *"," * @method _init"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} Optional success callback or config"," * object containing success and failure functions and"," * the url regex."," * @protected"," */"," _init : function (url, callback) {"," this.url = url;",""," /**"," * Map of the number of requests currently pending responses per"," * generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _requests"," * @private"," * @type {Object}"," */"," this._requests = {};",""," /**"," * Map of the number of timeouts received from the destination url"," * by generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _timeouts"," * @private"," * @type {Object}"," */"," this._timeouts = {};",""," // Accept a function, an object, or nothing"," callback = (isFunction(callback)) ?"," { on: { success: callback } } :"," callback || {};",""," var subs = callback.on || {};",""," if (!subs.success) {"," subs.success = this._defaultCallback(url, callback);"," }",""," // Apply defaults and store"," this._config = Y.merge({"," context: this,"," args : [],"," format : this._format,"," allowCache: false"," }, callback, { on: subs });"," },",""," /**"," * Override this method to provide logic to default the success callback if"," * it is not provided at construction. This is overridden by jsonp-url to"," * parse the callback from the url string."," *"," * @method _defaultCallback"," * @param url {String} the url passed at construction"," * @param config {Object} (optional) the config object passed at"," * construction"," * @return {Function}"," */"," _defaultCallback: function () {},",""," /**"," * Issues the JSONP request."," *"," * @method send"," * @param args* {any} any additional arguments to pass to the url formatter"," * beyond the base url and the proxy function name"," * @chainable"," */"," send : function () {"," var self = this,"," args = Y.Array(arguments, 0, true),"," config = self._config,"," proxy = self._proxy || Y.guid(),"," url;",""," // TODO: support allowCache as time value"," if (config.allowCache) {"," self._proxy = proxy;"," }",""," if (self._requests[proxy] === undefined) {"," self._requests[proxy] = 0;"," }"," if (self._timeouts[proxy] === undefined) {"," self._timeouts[proxy] = 0;"," }"," self._requests[proxy]++;","",""," args.unshift(self.url, 'YUI.Env.JSONP.' + proxy);"," url = config.format.apply(self, args);",""," if (!config.on.success) {"," return self;"," }",""," function wrap(fn, isTimeout) {"," return (isFunction(fn)) ?"," function (data) {"," var execute = true,"," counter = '_requests';",""," //if (config.allowCache) {"," // A lot of wrangling to make sure timeouts result in"," // fewer success callbacks, but the proxy is properly"," // cleaned up."," if (isTimeout) {"," ++self._timeouts[proxy];"," --self._requests[proxy];"," } else {"," if (!self._requests[proxy]) {"," execute = false;"," counter = '_timeouts';"," }"," --self[counter][proxy];"," }"," //}",""," if (!self._requests[proxy] && !self._timeouts[proxy]) {"," delete YUI.Env.JSONP[proxy];"," }",""," if (execute) {"," fn.apply(config.context, [data].concat(config.args));"," }"," } :"," null;"," }",""," // Temporary un-sandboxed function alias"," // TODO: queuing"," YUI.Env.JSONP[proxy] = wrap(config.on.success);",""," // Y.Get transactions block each other by design, but can easily"," // be made non-blocking by just calling execute() on the transaction."," // https://github.com/yui/yui3/pull/393#issuecomment-11961608"," Y.Get.js(url, {"," onFailure : wrap(config.on.failure),"," onTimeout : wrap(config.on.timeout, true),"," timeout : config.timeout,"," charset : config.charset,"," attributes: config.attributes,"," async : config.async"," }).execute();",""," return self;"," },",""," /**"," * Default url formatter. Looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @param args* {any} additional args passed to send()"," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," return url.replace(/\\{callback\\}/, proxy);"," }","};","","Y.JSONPRequest = JSONPRequest;","","/**"," *"," * @method jsonp"," * @param url {String} the url of the JSONP service with the {callback}"," * placeholder where the callback function name typically goes."," * @param c {Function|Object} Callback function accepting the JSON payload"," * as its argument, or a configuration object (see above)."," * @param args* {any} additional arguments to pass to send()"," * @return {JSONPRequest}"," * @static"," * @for YUI"," */","Y.jsonp = function (url,c) {"," var req = new Y.JSONPRequest(url,c);"," return req.send.apply(req, Y.Array(arguments, 2, true));","};","","if (!YUI.Env.JSONP) {"," YUI.Env.JSONP = {};","}","","","}, '@VERSION@', {\"requires\": [\"get\", \"oop\"]});","","}());"]}; } var __cov_ujvKiDWGSwwCzJBwq2DGWA = __coverage__['build/jsonp/jsonp.js']; -__cov_ujvKiDWGSwwCzJBwq2DGWA.s['1']++;YUI.add('jsonp',function(Y,NAME){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['1']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['2']++;var isFunction=Y.Lang.isFunction;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['3']++;function JSONPRequest(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['2']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['4']++;this._init.apply(this,arguments);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['5']++;JSONPRequest.prototype={_init:function(url,callback){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['3']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['6']++;this.url=url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['7']++;this._requests={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['8']++;this._timeouts={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['9']++;this._failures={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['10']++;callback=isFunction(callback)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][0]++,{on:{success:callback}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][1]++,(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][0]++,callback)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][1]++,{}));__cov_ujvKiDWGSwwCzJBwq2DGWA.s['11']++;var subs=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][0]++,callback.on)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][1]++,{});__cov_ujvKiDWGSwwCzJBwq2DGWA.s['12']++;if(!subs.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['13']++;subs.success=this._defaultCallback(url,callback);}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['14']++;this._config=Y.merge({context:this,args:[],format:this._format,allowCache:false},callback,{on:subs});},_defaultCallback:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['4']++;},send:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['5']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['15']++;var self=this,args=Y.Array(arguments,0,true),config=self._config,proxy=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][0]++,self._proxy)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][1]++,Y.guid()),url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['16']++;if(config.allowCache){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['17']++;self._proxy=proxy;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['18']++;if(self._requests[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['19']++;self._requests[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['20']++;if(self._timeouts[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['21']++;self._timeouts[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['22']++;if(self._failures[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['23']++;self._failures[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['24']++;self._requests[proxy]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['25']++;args.unshift(self.url,'YUI.Env.JSONP.'+proxy);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['26']++;url=config.format.apply(self,args);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['27']++;if(!config.on.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['28']++;return self;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['29']++;function wrap(fn,isTimeout,isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['6']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['30']++;return isFunction(fn)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][0]++,function(data){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['7']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['31']++;var execute=true,counter='_requests';__cov_ujvKiDWGSwwCzJBwq2DGWA.s['32']++;if(isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['33']++;++self._timeouts[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['34']++;--self._requests[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['35']++;if(isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['36']++;++self._failures[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['37']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['38']++;--self._timeouts[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['39']++;--self._requests[proxy];}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['40']++;if(!self._requests[proxy]){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['41']++;execute=false;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['42']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['43']++;counter='_timeouts';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['44']++;if(self._failures[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['45']++;counter='_failures';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][1]++;}}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['46']++;--self[counter][proxy];}}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['47']++;if((__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][0]++,!self._requests[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][1]++,!self._timeouts[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][2]++,!self._failures[proxy])){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['48']++;delete YUI.Env.JSONP[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['49']++;if(execute){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['50']++;fn.apply(config.context,[data].concat(config.args));}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][1]++;}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][1]++,null);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['51']++;YUI.Env.JSONP[proxy]=wrap(config.on.success);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['52']++;Y.Get.js(url,{onFailure:wrap(config.on.failure,false,true),onTimeout:wrap(config.on.timeout,true,false),timeout:config.timeout,charset:config.charset,attributes:config.attributes,async:config.async}).execute();__cov_ujvKiDWGSwwCzJBwq2DGWA.s['53']++;return self;},_format:function(url,proxy){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['8']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['54']++;return url.replace(/\{callback\}/,proxy);}};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['55']++;Y.JSONPRequest=JSONPRequest;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['56']++;Y.jsonp=function(url,c){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['9']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['57']++;var req=new Y.JSONPRequest(url,c);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['58']++;return req.send.apply(req,Y.Array(arguments,2,true));};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['59']++;if(!YUI.Env.JSONP){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['60']++;YUI.Env.JSONP={};}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][1]++;}},'@VERSION@',{'requires':['get','oop']}); +__cov_ujvKiDWGSwwCzJBwq2DGWA.s['1']++;YUI.add('jsonp',function(Y,NAME){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['1']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['2']++;var isFunction=Y.Lang.isFunction;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['3']++;function JSONPRequest(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['2']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['4']++;this._init.apply(this,arguments);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['5']++;JSONPRequest.prototype={_init:function(url,callback){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['3']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['6']++;this.url=url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['7']++;this._requests={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['8']++;this._timeouts={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['9']++;callback=isFunction(callback)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][0]++,{on:{success:callback}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][1]++,(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][0]++,callback)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][1]++,{}));__cov_ujvKiDWGSwwCzJBwq2DGWA.s['10']++;var subs=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][0]++,callback.on)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][1]++,{});__cov_ujvKiDWGSwwCzJBwq2DGWA.s['11']++;if(!subs.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['12']++;subs.success=this._defaultCallback(url,callback);}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['13']++;this._config=Y.merge({context:this,args:[],format:this._format,allowCache:false},callback,{on:subs});},_defaultCallback:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['4']++;},send:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['5']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['14']++;var self=this,args=Y.Array(arguments,0,true),config=self._config,proxy=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][0]++,self._proxy)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][1]++,Y.guid()),url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['15']++;if(config.allowCache){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['16']++;self._proxy=proxy;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['17']++;if(self._requests[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['18']++;self._requests[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['19']++;if(self._timeouts[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['20']++;self._timeouts[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['21']++;self._requests[proxy]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['22']++;args.unshift(self.url,'YUI.Env.JSONP.'+proxy);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['23']++;url=config.format.apply(self,args);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['24']++;if(!config.on.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['25']++;return self;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['26']++;function wrap(fn,isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['6']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['27']++;return isFunction(fn)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][0]++,function(data){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['7']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['28']++;var execute=true,counter='_requests';__cov_ujvKiDWGSwwCzJBwq2DGWA.s['29']++;if(isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['30']++;++self._timeouts[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['31']++;--self._requests[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['32']++;if(!self._requests[proxy]){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['33']++;execute=false;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['34']++;counter='_timeouts';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['35']++;--self[counter][proxy];}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['36']++;if((__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][0]++,!self._requests[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][1]++,!self._timeouts[proxy])){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['37']++;delete YUI.Env.JSONP[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['38']++;if(execute){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['39']++;fn.apply(config.context,[data].concat(config.args));}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][1]++;}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][1]++,null);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['40']++;YUI.Env.JSONP[proxy]=wrap(config.on.success);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['41']++;Y.Get.js(url,{onFailure:wrap(config.on.failure),onTimeout:wrap(config.on.timeout,true),timeout:config.timeout,charset:config.charset,attributes:config.attributes,async:config.async}).execute();__cov_ujvKiDWGSwwCzJBwq2DGWA.s['42']++;return self;},_format:function(url,proxy){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['8']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['43']++;return url.replace(/\{callback\}/,proxy);}};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['44']++;Y.JSONPRequest=JSONPRequest;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['45']++;Y.jsonp=function(url,c){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['9']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['46']++;var req=new Y.JSONPRequest(url,c);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['47']++;return req.send.apply(req,Y.Array(arguments,2,true));};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['48']++;if(!YUI.Env.JSONP){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['49']++;YUI.Env.JSONP={};}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][1]++;}},'@VERSION@',{'requires':['get','oop']}); diff --git a/build/jsonp/jsonp-debug.js b/build/jsonp/jsonp-debug.js index 4c46a7dd4b5..4ee0cf0c8f3 100644 --- a/build/jsonp/jsonp-debug.js +++ b/build/jsonp/jsonp-debug.js @@ -84,8 +84,6 @@ JSONPRequest.prototype = { */ this._timeouts = {}; - this._failures = {}; - // Accept a function, an object, or nothing callback = (isFunction(callback)) ? { on: { success: callback } } : @@ -145,9 +143,6 @@ JSONPRequest.prototype = { if (self._timeouts[proxy] === undefined) { self._timeouts[proxy] = 0; } - if (self._failures[proxy] === undefined) { - self._failures[proxy] = 0; - } self._requests[proxy]++; Y.log('sending ' + proxy); @@ -160,7 +155,7 @@ JSONPRequest.prototype = { return self; } - function wrap(fn, isTimeout, isFailure) { + function wrap(fn, isTimeout) { return (isFunction(fn)) ? function (data) { var execute = true, @@ -173,42 +168,18 @@ JSONPRequest.prototype = { if (isTimeout) { ++self._timeouts[proxy]; --self._requests[proxy]; - Y.log(proxy - + ' timed out - timeouts(' + self._timeouts[proxy] - + ') failures(' + self._failures[proxy] - + ') requests(' + self._requests[proxy] - + ')'); - } else if (isFailure) { - ++self._failures[proxy]; - if (self._timeouts[proxy] > 0) { - --self._timeouts[proxy]; - } else { - --self._requests[proxy]; - } - Y.log(proxy - + ' failure - timeouts(' + self._timeouts[proxy] - + ') failures(' + self._failures[proxy] - + ') requests(' + self._requests[proxy] - + ')'); + Y.log(proxy + ' timed out - timeouts(' + self._timeouts[proxy] + ') requests(' + self._requests[proxy] + ')'); } else { if (!self._requests[proxy]) { execute = false; - if (self._timeouts[proxy] > 0) { - counter = '_timeouts'; - } else if (self._failures[proxy] > 0) { - counter = '_failures'; - } + counter = '_timeouts'; } --self[counter][proxy]; - Y.log(proxy - + ' response received - timeouts(' + self._timeouts[proxy] - + ') failures(' + self._failures[proxy] - + ') requests(' + self._requests[proxy] - + ')'); + Y.log(proxy + ' response received - timeouts(' + self._timeouts[proxy] + ') requests(' + self._requests[proxy] + ')'); } //} - if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) { + if (!self._requests[proxy] && !self._timeouts[proxy]) { Y.log('deleting ' + proxy); delete YUI.Env.JSONP[proxy]; } @@ -228,8 +199,8 @@ JSONPRequest.prototype = { // be made non-blocking by just calling execute() on the transaction. // https://github.com/yui/yui3/pull/393#issuecomment-11961608 Y.Get.js(url, { - onFailure : wrap(config.on.failure, false, true), - onTimeout : wrap(config.on.timeout, true, false), + onFailure : wrap(config.on.failure), + onTimeout : wrap(config.on.timeout, true), timeout : config.timeout, charset : config.charset, attributes: config.attributes, diff --git a/build/jsonp/jsonp-min.js b/build/jsonp/jsonp-min.js index c39c8690fdf..5500e983e9b 100644 --- a/build/jsonp/jsonp-min.js +++ b/build/jsonp/jsonp-min.js @@ -1 +1 @@ -YUI.add("jsonp",function(e,t){function r(){this._init.apply(this,arguments)}var n=e.Lang.isFunction;r.prototype={_init:function(t,r){this.url=t,this._requests={},this._timeouts={},this._failures={},r=n(r)?{on:{success:r}}:r||{};var i=r.on||{};i.success||(i.success=this._defaultCallback(t,r)),this._config=e.merge({context:this,args:[],format:this._format,allowCache:!1},r,{on:i})},_defaultCallback:function(){},send:function(){function u(e,r,o){return n(e)?function(n){var u=!0,a="_requests";r?(++t._timeouts[s],--t._requests[s]):o?(++t._failures[s],t._timeouts[s]>0?--t._timeouts[s]:--t._requests[s]):(t._requests[s]||(u=!1,t._timeouts[s]>0?a="_timeouts":t._failures[s]>0&&(a="_failures")),--t[a][s]),!t._requests[s]&&!t._timeouts[s]&&!t._failures[s]&&delete YUI.Env.JSONP[s],u&&e.apply(i.context,[n].concat(i.args))}:null}var t=this,r=e.Array(arguments,0,!0),i=t._config,s=t._proxy||e.guid(),o;return i.allowCache&&(t._proxy=s),t._requests[s]===undefined&&(t._requests[s]=0),t._timeouts[s]===undefined&&(t._timeouts[s]=0),t._failures[s]===undefined&&(t._failures[s]=0),t._requests[s]++,r.unshift(t.url,"YUI.Env.JSONP."+s),o=i.format.apply(t,r),i.on.success?(YUI.Env.JSONP[s]=u(i.on.success),e.Get.js(o,{onFailure:u(i.on.failure,!1,!0),onTimeout:u(i.on.timeout,!0,!1),timeout:i.timeout,charset:i.charset,attributes:i.attributes,async:i.async}).execute(),t):t},_format:function(e,t){return e.replace(/\{callback\}/,t)}},e.JSONPRequest=r,e.jsonp=function(t,n){var r=new e.JSONPRequest(t,n);return r.send.apply(r,e.Array(arguments,2,!0))},YUI.Env.JSONP||(YUI.Env.JSONP={})},"@VERSION@",{requires:["get","oop"]}); +YUI.add("jsonp",function(e,t){function r(){this._init.apply(this,arguments)}var n=e.Lang.isFunction;r.prototype={_init:function(t,r){this.url=t,this._requests={},this._timeouts={},r=n(r)?{on:{success:r}}:r||{};var i=r.on||{};i.success||(i.success=this._defaultCallback(t,r)),this._config=e.merge({context:this,args:[],format:this._format,allowCache:!1},r,{on:i})},_defaultCallback:function(){},send:function(){function u(e,r){return n(e)?function(n){var o=!0,u="_requests";r?(++t._timeouts[s],--t._requests[s]):(t._requests[s]||(o=!1,u="_timeouts"),--t[u][s]),!t._requests[s]&&!t._timeouts[s]&&delete YUI.Env.JSONP[s],o&&e.apply(i.context,[n].concat(i.args))}:null}var t=this,r=e.Array(arguments,0,!0),i=t._config,s=t._proxy||e.guid(),o;return i.allowCache&&(t._proxy=s),t._requests[s]===undefined&&(t._requests[s]=0),t._timeouts[s]===undefined&&(t._timeouts[s]=0),t._requests[s]++,r.unshift(t.url,"YUI.Env.JSONP."+s),o=i.format.apply(t,r),i.on.success?(YUI.Env.JSONP[s]=u(i.on.success),e.Get.js(o,{onFailure:u(i.on.failure),onTimeout:u(i.on.timeout,!0),timeout:i.timeout,charset:i.charset,attributes:i.attributes,async:i.async}).execute(),t):t},_format:function(e,t){return e.replace(/\{callback\}/,t)}},e.JSONPRequest=r,e.jsonp=function(t,n){var r=new e.JSONPRequest(t,n);return r.send.apply(r,e.Array(arguments,2,!0))},YUI.Env.JSONP||(YUI.Env.JSONP={})},"@VERSION@",{requires:["get","oop"]}); diff --git a/build/jsonp/jsonp.js b/build/jsonp/jsonp.js index d00d96541d4..997f412df92 100644 --- a/build/jsonp/jsonp.js +++ b/build/jsonp/jsonp.js @@ -84,8 +84,6 @@ JSONPRequest.prototype = { */ this._timeouts = {}; - this._failures = {}; - // Accept a function, an object, or nothing callback = (isFunction(callback)) ? { on: { success: callback } } : @@ -145,9 +143,6 @@ JSONPRequest.prototype = { if (self._timeouts[proxy] === undefined) { self._timeouts[proxy] = 0; } - if (self._failures[proxy] === undefined) { - self._failures[proxy] = 0; - } self._requests[proxy]++; @@ -158,7 +153,7 @@ JSONPRequest.prototype = { return self; } - function wrap(fn, isTimeout, isFailure) { + function wrap(fn, isTimeout) { return (isFunction(fn)) ? function (data) { var execute = true, @@ -171,27 +166,16 @@ JSONPRequest.prototype = { if (isTimeout) { ++self._timeouts[proxy]; --self._requests[proxy]; - } else if (isFailure) { - ++self._failures[proxy]; - if (self._timeouts[proxy] > 0) { - --self._timeouts[proxy]; - } else { - --self._requests[proxy]; - } } else { if (!self._requests[proxy]) { execute = false; - if (self._timeouts[proxy] > 0) { - counter = '_timeouts'; - } else if (self._failures[proxy] > 0) { - counter = '_failures'; - } + counter = '_timeouts'; } --self[counter][proxy]; } //} - if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) { + if (!self._requests[proxy] && !self._timeouts[proxy]) { delete YUI.Env.JSONP[proxy]; } @@ -210,8 +194,8 @@ JSONPRequest.prototype = { // be made non-blocking by just calling execute() on the transaction. // https://github.com/yui/yui3/pull/393#issuecomment-11961608 Y.Get.js(url, { - onFailure : wrap(config.on.failure, false, true), - onTimeout : wrap(config.on.timeout, true, false), + onFailure : wrap(config.on.failure), + onTimeout : wrap(config.on.timeout, true), timeout : config.timeout, charset : config.charset, attributes: config.attributes, From 23ea3f49dab6c8b4ba37630f46d7b51e0ce605c3 Mon Sep 17 00:00:00 2001 From: tripp Date: Thu, 18 Sep 2014 20:24:56 -0700 Subject: [PATCH 4/7] Put log statements on one line. --- src/jsonp/js/jsonp.js | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/jsonp/js/jsonp.js b/src/jsonp/js/jsonp.js index 9f47c001d27..0b1a3c7193a 100644 --- a/src/jsonp/js/jsonp.js +++ b/src/jsonp/js/jsonp.js @@ -1,3 +1,4 @@ +/*jslint maxlen: 350 */ var isFunction = Y.Lang.isFunction; /** @@ -171,11 +172,7 @@ JSONPRequest.prototype = { if (isTimeout) { ++self._timeouts[proxy]; --self._requests[proxy]; - Y.log(proxy - + ' timed out - timeouts(' + self._timeouts[proxy] - + ') failures(' + self._failures[proxy] - + ') requests(' + self._requests[proxy] - + ')'); + Y.log(proxy + ' timed out - timeouts(' + self._timeouts[proxy] + ') failures(' + self._failures[proxy] + ') requests(' + self._requests[proxy] + ')'); } else if (isFailure) { ++self._failures[proxy]; if (self._timeouts[proxy] > 0) { @@ -183,11 +180,7 @@ JSONPRequest.prototype = { } else { --self._requests[proxy]; } - Y.log(proxy - + ' failure - timeouts(' + self._timeouts[proxy] - + ') failures(' + self._failures[proxy] - + ') requests(' + self._requests[proxy] - + ')'); + Y.log(proxy + ' failure - timeouts(' + self._timeouts[proxy] + ') failures(' + self._failures[proxy] + ') requests(' + self._requests[proxy] + ')'); } else { if (!self._requests[proxy]) { execute = false; @@ -198,11 +191,7 @@ JSONPRequest.prototype = { } } --self[counter][proxy]; - Y.log(proxy - + ' response received - timeouts(' + self._timeouts[proxy] - + ') failures(' + self._failures[proxy] - + ') requests(' + self._requests[proxy] - + ')'); + Y.log(proxy + ' response received - timeouts(' + self._timeouts[proxy] + ') failures(' + self._failures[proxy] + ') requests(' + self._requests[proxy] + ')'); } //} From 14bcac07e5d3149ffd35606e1edad4a760ec9455 Mon Sep 17 00:00:00 2001 From: tripp Date: Thu, 18 Sep 2014 20:29:51 -0700 Subject: [PATCH 5/7] Add unit test. --- src/jsonp/tests/unit/assets/jsonp-tests.js | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/jsonp/tests/unit/assets/jsonp-tests.js b/src/jsonp/tests/unit/assets/jsonp-tests.js index b19a100d7e6..67b79576ce2 100644 --- a/src/jsonp/tests/unit/assets/jsonp-tests.js +++ b/src/jsonp/tests/unit/assets/jsonp-tests.js @@ -310,6 +310,50 @@ suite.add(new Y.Test.Case({ } })); +suite.add(new Y.Test.Case({ + name : "Should not have TypeError when both `timeout` and `failure` handlers are set.", + + "Having timeout and failure handles should not cause a TypeError": function () { + var test = this, + callbacks = [], + error = false, + timeoutCalled, + successCalled, + windowOnError = window.onerror, + jsonp; + + window.onerror = function(e) { + error = e; + }; + + jsonp = new Y.JSONPRequest('echo/jsonp?wait=2&callback={callback}', { + timeout: 1, + on: { + success: function (data) { + //success logic + }, + timeout: function () { + //timeout logic + }, + failure: function() { + //failure logic + } + } + }); + + jsonp.send(); + + this.wait(function() { + window.onerror = windowOnError; + if(error) { + Y.Assert.fail(error); + } else { + Y.Assert.isTrue(true); + } + }, 3000); + } +})); + Y.Test.Runner.add(suite); }, '@VERSION@' ,{requires:['jsonp', 'test'] }); From 9e4fffc0f33e0d5bd8f71e61acab7caa21a7e393 Mon Sep 17 00:00:00 2001 From: tripp Date: Thu, 18 Sep 2014 20:35:25 -0700 Subject: [PATCH 6/7] Whoopsie-daisy. Removed unused vars from unit test. --- src/jsonp/tests/unit/assets/jsonp-tests.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/jsonp/tests/unit/assets/jsonp-tests.js b/src/jsonp/tests/unit/assets/jsonp-tests.js index 67b79576ce2..5243fdb3841 100644 --- a/src/jsonp/tests/unit/assets/jsonp-tests.js +++ b/src/jsonp/tests/unit/assets/jsonp-tests.js @@ -314,11 +314,7 @@ suite.add(new Y.Test.Case({ name : "Should not have TypeError when both `timeout` and `failure` handlers are set.", "Having timeout and failure handles should not cause a TypeError": function () { - var test = this, - callbacks = [], - error = false, - timeoutCalled, - successCalled, + var error = false, windowOnError = window.onerror, jsonp; From 6c88ea0b81a12e3ff7e49b197a40dba8c179ed09 Mon Sep 17 00:00:00 2001 From: tripp Date: Mon, 22 Sep 2014 14:12:25 -0700 Subject: [PATCH 7/7] Add jsonp build files. --- build/jsonp-url/jsonp-url-coverage.js | 2 +- build/jsonp-url/jsonp-url-debug.js | 1 + build/jsonp-url/jsonp-url.js | 1 + build/jsonp/jsonp-coverage.js | 4 ++-- build/jsonp/jsonp-debug.js | 32 +++++++++++++++++++++------ build/jsonp/jsonp-min.js | 2 +- build/jsonp/jsonp.js | 27 +++++++++++++++++----- 7 files changed, 53 insertions(+), 16 deletions(-) diff --git a/build/jsonp-url/jsonp-url-coverage.js b/build/jsonp-url/jsonp-url-coverage.js index 20f53b7a325..db16ad388be 100644 --- a/build/jsonp-url/jsonp-url-coverage.js +++ b/build/jsonp-url/jsonp-url-coverage.js @@ -1,6 +1,6 @@ if (typeof __coverage__ === 'undefined') { __coverage__ = {}; } if (!__coverage__['build/jsonp-url/jsonp-url.js']) { - __coverage__['build/jsonp-url/jsonp-url.js'] = {"path":"build/jsonp-url/jsonp-url.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":40}}},"2":{"name":"(anonymous_2)","line":5,"loc":{"start":{"line":5,"column":19},"end":{"line":5,"column":31}}},"3":{"name":"(anonymous_3)","line":54,"loc":{"start":{"line":54,"column":22},"end":{"line":54,"column":37}}},"4":{"name":"(anonymous_4)","line":64,"loc":{"start":{"line":64,"column":20},"end":{"line":64,"column":41}}},"5":{"name":"(anonymous_5)","line":69,"loc":{"start":{"line":69,"column":20},"end":{"line":69,"column":37}}},"6":{"name":"(anonymous_6)","line":108,"loc":{"start":{"line":108,"column":13},"end":{"line":108,"column":35}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":132,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":5,"column":34}},"3":{"start":{"line":17,"column":0},"end":{"line":129,"column":9}},"4":{"start":{"line":55,"column":8},"end":{"line":58,"column":36}},"5":{"start":{"line":60,"column":8},"end":{"line":90,"column":9}},"6":{"start":{"line":62,"column":12},"end":{"line":73,"column":36}},"7":{"start":{"line":65,"column":24},"end":{"line":65,"column":37}},"8":{"start":{"line":66,"column":24},"end":{"line":66,"column":44}},"9":{"start":{"line":70,"column":24},"end":{"line":70,"column":55}},"10":{"start":{"line":71,"column":24},"end":{"line":71,"column":44}},"11":{"start":{"line":76,"column":12},"end":{"line":89,"column":13}},"12":{"start":{"line":77,"column":16},"end":{"line":77,"column":42}},"13":{"start":{"line":78,"column":16},"end":{"line":82,"column":17}},"14":{"start":{"line":79,"column":20},"end":{"line":81,"column":21}},"15":{"start":{"line":80,"column":24},"end":{"line":80,"column":72}},"16":{"start":{"line":86,"column":16},"end":{"line":88,"column":55}},"17":{"start":{"line":92,"column":8},"end":{"line":92,"column":32}},"18":{"start":{"line":109,"column":8},"end":{"line":110,"column":31}},"19":{"start":{"line":112,"column":8},"end":{"line":114,"column":9}},"20":{"start":{"line":113,"column":12},"end":{"line":113,"column":50}},"21":{"start":{"line":116,"column":8},"end":{"line":116,"column":61}},"22":{"start":{"line":118,"column":8},"end":{"line":126,"column":9}},"23":{"start":{"line":119,"column":12},"end":{"line":119,"column":56}},"24":{"start":{"line":121,"column":12},"end":{"line":121,"column":37}},"25":{"start":{"line":122,"column":12},"end":{"line":124,"column":13}},"26":{"start":{"line":123,"column":16},"end":{"line":123,"column":59}},"27":{"start":{"line":125,"column":12},"end":{"line":125,"column":34}}},"branchMap":{"1":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"2":{"line":76,"type":"if","locations":[{"start":{"line":76,"column":12},"end":{"line":76,"column":12}},{"start":{"line":76,"column":12},"end":{"line":76,"column":12}}]},"3":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":20},"end":{"line":79,"column":20}},{"start":{"line":79,"column":20},"end":{"line":79,"column":20}}]},"4":{"line":86,"type":"binary-expr","locations":[{"start":{"line":86,"column":27},"end":{"line":86,"column":56}},{"start":{"line":87,"column":27},"end":{"line":87,"column":45}},{"start":{"line":88,"column":27},"end":{"line":88,"column":54}}]},"5":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":15},"end":{"line":92,"column":23}},{"start":{"line":92,"column":27},"end":{"line":92,"column":31}}]},"6":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":8},"end":{"line":112,"column":8}},{"start":{"line":112,"column":8},"end":{"line":112,"column":8}}]},"7":{"line":118,"type":"if","locations":[{"start":{"line":118,"column":8},"end":{"line":118,"column":8}},{"start":{"line":118,"column":8},"end":{"line":118,"column":8}}]},"8":{"line":122,"type":"if","locations":[{"start":{"line":122,"column":12},"end":{"line":122,"column":12}},{"start":{"line":122,"column":12},"end":{"line":122,"column":12}}]},"9":{"line":122,"type":"binary-expr","locations":[{"start":{"line":122,"column":16},"end":{"line":122,"column":32}},{"start":{"line":122,"column":36},"end":{"line":122,"column":52}}]},"10":{"line":123,"type":"cond-expr","locations":[{"start":{"line":123,"column":49},"end":{"line":123,"column":52}},{"start":{"line":123,"column":55},"end":{"line":123,"column":58}}]}},"code":["(function () { YUI.add('jsonp-url', function (Y, NAME) {","","var JSONPRequest = Y.JSONPRequest,"," getByPath = Y.Object.getValue,"," noop = function () {};","","/**"," * Adds support for parsing complex callback identifiers from the jsonp url."," * This includes callback=foo[1]bar.baz[\"goo\"] as well as referencing methods"," * in the YUI instance."," *"," * @module jsonp"," * @submodule jsonp-url"," * @for JSONPRequest"," */","","Y.mix(JSONPRequest.prototype, {"," /**"," * RegExp used by the default URL formatter to insert the generated callback"," * name into the JSONP url. Looks for a query param callback=. If a value"," * is assigned, it will be clobbered."," *"," * @property _pattern"," * @type RegExp"," * @default /\\bcallback=.*?(?=&|$)/i"," * @protected"," */"," _pattern: /\\bcallback=(.*?)(?=&|$)/i,",""," /**"," * Template used by the default URL formatter to add the callback function"," * name to the url."," *"," * @property _template"," * @type String"," * @default \"callback={callback}\""," * @protected"," */"," _template: \"callback={callback}\",",""," /**"," *

Parses the url for a callback named explicitly in the string."," * Override this if the target JSONP service uses a different query"," * parameter or url format.

"," *"," *

If the callback is declared inline, the corresponding function will"," * be returned. Otherwise null.

"," *"," * @method _defaultCallback"," * @param url {String} the url to search in"," * @return {Function} the callback function if found, or null"," * @protected"," */"," _defaultCallback: function (url) {"," var match = url.match(this._pattern),"," keys = [],"," i = 0,"," locator, path, callback;",""," if (match) {"," // Strip the [\"string keys\"] and [1] array indexes"," locator = match[1]"," .replace(/\\[(['\"])(.*?)\\1\\]/g,"," function (x, $1, $2) {"," keys[i] = $2;"," return '.@' + (i++);"," })"," .replace(/\\[(\\d+)\\]/g,"," function (x, $1) {"," keys[i] = parseInt($1, 10) | 0;"," return '.@' + (i++);"," })"," .replace(/^\\./, ''); // remove leading dot",""," // Validate against problematic characters."," if (!/[^\\w\\.\\$@]/.test(locator)) {"," path = locator.split('.');"," for (i = path.length - 1; i >= 0; --i) {"," if (path[i].charAt(0) === '@') {"," path[i] = keys[parseInt(path[i].substr(1), 10)];"," }"," }",""," // First look for a global function, then the Y, then try the Y"," // again from the second token (to support \"callback=Y.handler\")"," callback = getByPath(Y.config.win, path) ||"," getByPath(Y, path) ||"," getByPath(Y, path.slice(1));"," }"," }",""," return callback || noop;"," },",""," /**"," * URL formatter that looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," var callbackRE = /\\{callback\\}/,"," callback, lastChar;",""," if (callbackRE.test(url)) {"," return url.replace(callbackRE, proxy);"," }",""," callback = this._template.replace(callbackRE, proxy);",""," if (this._pattern.test(url)) {"," return url.replace(this._pattern, callback);"," } else {"," lastChar = url.slice(-1);"," if (lastChar !== '&' && lastChar !== '?') {"," url += (url.indexOf('?') > -1) ? '&' : '?';"," }"," return url + callback;"," }"," }","","}, true);","","","}, '@VERSION@', {\"requires\": [\"jsonp\"]});","","}());"]}; + __coverage__['build/jsonp-url/jsonp-url.js'] = {"path":"build/jsonp-url/jsonp-url.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":40}}},"2":{"name":"(anonymous_2)","line":5,"loc":{"start":{"line":5,"column":19},"end":{"line":5,"column":31}}},"3":{"name":"(anonymous_3)","line":54,"loc":{"start":{"line":54,"column":22},"end":{"line":54,"column":37}}},"4":{"name":"(anonymous_4)","line":64,"loc":{"start":{"line":64,"column":20},"end":{"line":64,"column":41}}},"5":{"name":"(anonymous_5)","line":69,"loc":{"start":{"line":69,"column":20},"end":{"line":69,"column":37}}},"6":{"name":"(anonymous_6)","line":109,"loc":{"start":{"line":109,"column":13},"end":{"line":109,"column":35}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":133,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":5,"column":34}},"3":{"start":{"line":17,"column":0},"end":{"line":130,"column":9}},"4":{"start":{"line":55,"column":8},"end":{"line":58,"column":36}},"5":{"start":{"line":60,"column":8},"end":{"line":91,"column":9}},"6":{"start":{"line":62,"column":12},"end":{"line":74,"column":36}},"7":{"start":{"line":65,"column":24},"end":{"line":65,"column":37}},"8":{"start":{"line":66,"column":24},"end":{"line":66,"column":44}},"9":{"start":{"line":71,"column":24},"end":{"line":71,"column":55}},"10":{"start":{"line":72,"column":24},"end":{"line":72,"column":44}},"11":{"start":{"line":77,"column":12},"end":{"line":90,"column":13}},"12":{"start":{"line":78,"column":16},"end":{"line":78,"column":42}},"13":{"start":{"line":79,"column":16},"end":{"line":83,"column":17}},"14":{"start":{"line":80,"column":20},"end":{"line":82,"column":21}},"15":{"start":{"line":81,"column":24},"end":{"line":81,"column":72}},"16":{"start":{"line":87,"column":16},"end":{"line":89,"column":55}},"17":{"start":{"line":93,"column":8},"end":{"line":93,"column":32}},"18":{"start":{"line":110,"column":8},"end":{"line":111,"column":31}},"19":{"start":{"line":113,"column":8},"end":{"line":115,"column":9}},"20":{"start":{"line":114,"column":12},"end":{"line":114,"column":50}},"21":{"start":{"line":117,"column":8},"end":{"line":117,"column":61}},"22":{"start":{"line":119,"column":8},"end":{"line":127,"column":9}},"23":{"start":{"line":120,"column":12},"end":{"line":120,"column":56}},"24":{"start":{"line":122,"column":12},"end":{"line":122,"column":37}},"25":{"start":{"line":123,"column":12},"end":{"line":125,"column":13}},"26":{"start":{"line":124,"column":16},"end":{"line":124,"column":59}},"27":{"start":{"line":126,"column":12},"end":{"line":126,"column":34}}},"branchMap":{"1":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"2":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":12},"end":{"line":77,"column":12}},{"start":{"line":77,"column":12},"end":{"line":77,"column":12}}]},"3":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":20},"end":{"line":80,"column":20}},{"start":{"line":80,"column":20},"end":{"line":80,"column":20}}]},"4":{"line":87,"type":"binary-expr","locations":[{"start":{"line":87,"column":27},"end":{"line":87,"column":56}},{"start":{"line":88,"column":27},"end":{"line":88,"column":45}},{"start":{"line":89,"column":27},"end":{"line":89,"column":54}}]},"5":{"line":93,"type":"binary-expr","locations":[{"start":{"line":93,"column":15},"end":{"line":93,"column":23}},{"start":{"line":93,"column":27},"end":{"line":93,"column":31}}]},"6":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":8},"end":{"line":113,"column":8}},{"start":{"line":113,"column":8},"end":{"line":113,"column":8}}]},"7":{"line":119,"type":"if","locations":[{"start":{"line":119,"column":8},"end":{"line":119,"column":8}},{"start":{"line":119,"column":8},"end":{"line":119,"column":8}}]},"8":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":12},"end":{"line":123,"column":12}},{"start":{"line":123,"column":12},"end":{"line":123,"column":12}}]},"9":{"line":123,"type":"binary-expr","locations":[{"start":{"line":123,"column":16},"end":{"line":123,"column":32}},{"start":{"line":123,"column":36},"end":{"line":123,"column":52}}]},"10":{"line":124,"type":"cond-expr","locations":[{"start":{"line":124,"column":49},"end":{"line":124,"column":52}},{"start":{"line":124,"column":55},"end":{"line":124,"column":58}}]}},"code":["(function () { YUI.add('jsonp-url', function (Y, NAME) {","","var JSONPRequest = Y.JSONPRequest,"," getByPath = Y.Object.getValue,"," noop = function () {};","","/**"," * Adds support for parsing complex callback identifiers from the jsonp url."," * This includes callback=foo[1]bar.baz[\"goo\"] as well as referencing methods"," * in the YUI instance."," *"," * @module jsonp"," * @submodule jsonp-url"," * @for JSONPRequest"," */","","Y.mix(JSONPRequest.prototype, {"," /**"," * RegExp used by the default URL formatter to insert the generated callback"," * name into the JSONP url. Looks for a query param callback=. If a value"," * is assigned, it will be clobbered."," *"," * @property _pattern"," * @type RegExp"," * @default /\\bcallback=.*?(?=&|$)/i"," * @protected"," */"," _pattern: /\\bcallback=(.*?)(?=&|$)/i,",""," /**"," * Template used by the default URL formatter to add the callback function"," * name to the url."," *"," * @property _template"," * @type String"," * @default \"callback={callback}\""," * @protected"," */"," _template: \"callback={callback}\",",""," /**"," *

Parses the url for a callback named explicitly in the string."," * Override this if the target JSONP service uses a different query"," * parameter or url format.

"," *"," *

If the callback is declared inline, the corresponding function will"," * be returned. Otherwise null.

"," *"," * @method _defaultCallback"," * @param url {String} the url to search in"," * @return {Function} the callback function if found, or null"," * @protected"," */"," _defaultCallback: function (url) {"," var match = url.match(this._pattern),"," keys = [],"," i = 0,"," locator, path, callback;",""," if (match) {"," // Strip the [\"string keys\"] and [1] array indexes"," locator = match[1]"," .replace(/\\[(['\"])(.*?)\\1\\]/g,"," function (x, $1, $2) {"," keys[i] = $2;"," return '.@' + (i++);"," })"," .replace(/\\[(\\d+)\\]/g,"," function (x, $1) {"," /*jslint bitwise: true */"," keys[i] = parseInt($1, 10) | 0;"," return '.@' + (i++);"," })"," .replace(/^\\./, ''); // remove leading dot",""," // Validate against problematic characters."," if (!/[^\\w\\.\\$@]/.test(locator)) {"," path = locator.split('.');"," for (i = path.length - 1; i >= 0; --i) {"," if (path[i].charAt(0) === '@') {"," path[i] = keys[parseInt(path[i].substr(1), 10)];"," }"," }",""," // First look for a global function, then the Y, then try the Y"," // again from the second token (to support \"callback=Y.handler\")"," callback = getByPath(Y.config.win, path) ||"," getByPath(Y, path) ||"," getByPath(Y, path.slice(1));"," }"," }",""," return callback || noop;"," },",""," /**"," * URL formatter that looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," var callbackRE = /\\{callback\\}/,"," callback, lastChar;",""," if (callbackRE.test(url)) {"," return url.replace(callbackRE, proxy);"," }",""," callback = this._template.replace(callbackRE, proxy);",""," if (this._pattern.test(url)) {"," return url.replace(this._pattern, callback);"," } else {"," lastChar = url.slice(-1);"," if (lastChar !== '&' && lastChar !== '?') {"," url += (url.indexOf('?') > -1) ? '&' : '?';"," }"," return url + callback;"," }"," }","","}, true);","","","}, '@VERSION@', {\"requires\": [\"jsonp\"]});","","}());"]}; } var __cov_5w$_gf1Mn7SBKiyuo2Kxgw = __coverage__['build/jsonp-url/jsonp-url.js']; __cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['1']++;YUI.add('jsonp-url',function(Y,NAME){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['1']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['2']++;var JSONPRequest=Y.JSONPRequest,getByPath=Y.Object.getValue,noop=function(){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['2']++;};__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['3']++;Y.mix(JSONPRequest.prototype,{_pattern:/\bcallback=(.*?)(?=&|$)/i,_template:'callback={callback}',_defaultCallback:function(url){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['3']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['4']++;var match=url.match(this._pattern),keys=[],i=0,locator,path,callback;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['5']++;if(match){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['1'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['6']++;locator=match[1].replace(/\[(['"])(.*?)\1\]/g,function(x,$1,$2){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['4']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['7']++;keys[i]=$2;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['8']++;return'.@'+i++;}).replace(/\[(\d+)\]/g,function(x,$1){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['5']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['9']++;keys[i]=parseInt($1,10)|0;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['10']++;return'.@'+i++;}).replace(/^\./,'');__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['11']++;if(!/[^\w\.\$@]/.test(locator)){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['2'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['12']++;path=locator.split('.');__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['13']++;for(i=path.length-1;i>=0;--i){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['14']++;if(path[i].charAt(0)==='@'){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['3'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['15']++;path[i]=keys[parseInt(path[i].substr(1),10)];}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['3'][1]++;}}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['16']++;callback=(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['4'][0]++,getByPath(Y.config.win,path))||(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['4'][1]++,getByPath(Y,path))||(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['4'][2]++,getByPath(Y,path.slice(1)));}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['2'][1]++;}}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['1'][1]++;}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['17']++;return(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['5'][0]++,callback)||(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['5'][1]++,noop);},_format:function(url,proxy){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.f['6']++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['18']++;var callbackRE=/\{callback\}/,callback,lastChar;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['19']++;if(callbackRE.test(url)){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['6'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['20']++;return url.replace(callbackRE,proxy);}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['6'][1]++;}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['21']++;callback=this._template.replace(callbackRE,proxy);__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['22']++;if(this._pattern.test(url)){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['7'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['23']++;return url.replace(this._pattern,callback);}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['7'][1]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['24']++;lastChar=url.slice(-1);__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['25']++;if((__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['9'][0]++,lastChar!=='&')&&(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['9'][1]++,lastChar!=='?')){__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['8'][0]++;__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['26']++;url+=url.indexOf('?')>-1?(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['10'][0]++,'&'):(__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['10'][1]++,'?');}else{__cov_5w$_gf1Mn7SBKiyuo2Kxgw.b['8'][1]++;}__cov_5w$_gf1Mn7SBKiyuo2Kxgw.s['27']++;return url+callback;}}},true);},'@VERSION@',{'requires':['jsonp']}); diff --git a/build/jsonp-url/jsonp-url-debug.js b/build/jsonp-url/jsonp-url-debug.js index 61316bc4d2e..fb43d164be2 100644 --- a/build/jsonp-url/jsonp-url-debug.js +++ b/build/jsonp-url/jsonp-url-debug.js @@ -67,6 +67,7 @@ Y.mix(JSONPRequest.prototype, { }) .replace(/\[(\d+)\]/g, function (x, $1) { + /*jslint bitwise: true */ keys[i] = parseInt($1, 10) | 0; return '.@' + (i++); }) diff --git a/build/jsonp-url/jsonp-url.js b/build/jsonp-url/jsonp-url.js index 61316bc4d2e..fb43d164be2 100644 --- a/build/jsonp-url/jsonp-url.js +++ b/build/jsonp-url/jsonp-url.js @@ -67,6 +67,7 @@ Y.mix(JSONPRequest.prototype, { }) .replace(/\[(\d+)\]/g, function (x, $1) { + /*jslint bitwise: true */ keys[i] = parseInt($1, 10) | 0; return '.@' + (i++); }) diff --git a/build/jsonp/jsonp-coverage.js b/build/jsonp/jsonp-coverage.js index 7e2d688b279..a3a7d8a3c38 100644 --- a/build/jsonp/jsonp-coverage.js +++ b/build/jsonp/jsonp-coverage.js @@ -1,6 +1,6 @@ if (typeof __coverage__ === 'undefined') { __coverage__ = {}; } if (!__coverage__['build/jsonp/jsonp.js']) { - __coverage__['build/jsonp/jsonp.js'] = {"path":"build/jsonp/jsonp.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":36}}},"2":{"name":"JSONPRequest","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}}},"3":{"name":"(anonymous_3)","line":58,"loc":{"start":{"line":58,"column":12},"end":{"line":58,"column":37}}},"4":{"name":"(anonymous_4)","line":118,"loc":{"start":{"line":118,"column":22},"end":{"line":118,"column":34}}},"5":{"name":"(anonymous_5)","line":128,"loc":{"start":{"line":128,"column":11},"end":{"line":128,"column":23}}},"6":{"name":"wrap","line":156,"loc":{"start":{"line":156,"column":8},"end":{"line":156,"column":37}}},"7":{"name":"(anonymous_7)","line":158,"loc":{"start":{"line":158,"column":16},"end":{"line":158,"column":32}}},"8":{"name":"(anonymous_8)","line":222,"loc":{"start":{"line":222,"column":13},"end":{"line":222,"column":35}}},"9":{"name":"(anonymous_9)","line":241,"loc":{"start":{"line":241,"column":10},"end":{"line":241,"column":27}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":251,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":35}},"3":{"start":{"line":42,"column":0},"end":{"line":44,"column":1}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":38}},"5":{"start":{"line":46,"column":0},"end":{"line":225,"column":2}},"6":{"start":{"line":59,"column":8},"end":{"line":59,"column":23}},"7":{"start":{"line":72,"column":8},"end":{"line":72,"column":28}},"8":{"start":{"line":85,"column":8},"end":{"line":85,"column":28}},"9":{"start":{"line":88,"column":8},"end":{"line":90,"column":27}},"10":{"start":{"line":92,"column":8},"end":{"line":92,"column":37}},"11":{"start":{"line":94,"column":8},"end":{"line":96,"column":9}},"12":{"start":{"line":95,"column":12},"end":{"line":95,"column":64}},"13":{"start":{"line":99,"column":8},"end":{"line":104,"column":39}},"14":{"start":{"line":129,"column":8},"end":{"line":133,"column":16}},"15":{"start":{"line":136,"column":8},"end":{"line":138,"column":9}},"16":{"start":{"line":137,"column":12},"end":{"line":137,"column":32}},"17":{"start":{"line":140,"column":8},"end":{"line":142,"column":9}},"18":{"start":{"line":141,"column":12},"end":{"line":141,"column":38}},"19":{"start":{"line":143,"column":8},"end":{"line":145,"column":9}},"20":{"start":{"line":144,"column":12},"end":{"line":144,"column":38}},"21":{"start":{"line":146,"column":8},"end":{"line":146,"column":32}},"22":{"start":{"line":149,"column":8},"end":{"line":149,"column":57}},"23":{"start":{"line":150,"column":8},"end":{"line":150,"column":46}},"24":{"start":{"line":152,"column":8},"end":{"line":154,"column":9}},"25":{"start":{"line":153,"column":12},"end":{"line":153,"column":24}},"26":{"start":{"line":156,"column":8},"end":{"line":187,"column":9}},"27":{"start":{"line":157,"column":12},"end":{"line":186,"column":21}},"28":{"start":{"line":159,"column":20},"end":{"line":160,"column":46}},"29":{"start":{"line":166,"column":24},"end":{"line":175,"column":25}},"30":{"start":{"line":167,"column":28},"end":{"line":167,"column":52}},"31":{"start":{"line":168,"column":28},"end":{"line":168,"column":52}},"32":{"start":{"line":170,"column":28},"end":{"line":173,"column":29}},"33":{"start":{"line":171,"column":32},"end":{"line":171,"column":48}},"34":{"start":{"line":172,"column":32},"end":{"line":172,"column":54}},"35":{"start":{"line":174,"column":28},"end":{"line":174,"column":51}},"36":{"start":{"line":178,"column":20},"end":{"line":180,"column":21}},"37":{"start":{"line":179,"column":24},"end":{"line":179,"column":52}},"38":{"start":{"line":182,"column":20},"end":{"line":184,"column":21}},"39":{"start":{"line":183,"column":24},"end":{"line":183,"column":77}},"40":{"start":{"line":191,"column":8},"end":{"line":191,"column":55}},"41":{"start":{"line":196,"column":8},"end":{"line":203,"column":21}},"42":{"start":{"line":205,"column":8},"end":{"line":205,"column":20}},"43":{"start":{"line":223,"column":8},"end":{"line":223,"column":50}},"44":{"start":{"line":227,"column":0},"end":{"line":227,"column":30}},"45":{"start":{"line":241,"column":0},"end":{"line":244,"column":2}},"46":{"start":{"line":242,"column":4},"end":{"line":242,"column":40}},"47":{"start":{"line":243,"column":4},"end":{"line":243,"column":60}},"48":{"start":{"line":246,"column":0},"end":{"line":248,"column":1}},"49":{"start":{"line":247,"column":4},"end":{"line":247,"column":23}}},"branchMap":{"1":{"line":88,"type":"cond-expr","locations":[{"start":{"line":89,"column":12},"end":{"line":89,"column":41}},{"start":{"line":90,"column":12},"end":{"line":90,"column":26}}]},"2":{"line":90,"type":"binary-expr","locations":[{"start":{"line":90,"column":12},"end":{"line":90,"column":20}},{"start":{"line":90,"column":24},"end":{"line":90,"column":26}}]},"3":{"line":92,"type":"binary-expr","locations":[{"start":{"line":92,"column":19},"end":{"line":92,"column":30}},{"start":{"line":92,"column":34},"end":{"line":92,"column":36}}]},"4":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":8},"end":{"line":94,"column":8}},{"start":{"line":94,"column":8},"end":{"line":94,"column":8}}]},"5":{"line":132,"type":"binary-expr","locations":[{"start":{"line":132,"column":21},"end":{"line":132,"column":32}},{"start":{"line":132,"column":36},"end":{"line":132,"column":44}}]},"6":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":8},"end":{"line":136,"column":8}},{"start":{"line":136,"column":8},"end":{"line":136,"column":8}}]},"7":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":8},"end":{"line":140,"column":8}},{"start":{"line":140,"column":8},"end":{"line":140,"column":8}}]},"8":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":8}},{"start":{"line":143,"column":8},"end":{"line":143,"column":8}}]},"9":{"line":152,"type":"if","locations":[{"start":{"line":152,"column":8},"end":{"line":152,"column":8}},{"start":{"line":152,"column":8},"end":{"line":152,"column":8}}]},"10":{"line":157,"type":"cond-expr","locations":[{"start":{"line":158,"column":16},"end":{"line":185,"column":17}},{"start":{"line":186,"column":16},"end":{"line":186,"column":20}}]},"11":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":24},"end":{"line":166,"column":24}},{"start":{"line":166,"column":24},"end":{"line":166,"column":24}}]},"12":{"line":170,"type":"if","locations":[{"start":{"line":170,"column":28},"end":{"line":170,"column":28}},{"start":{"line":170,"column":28},"end":{"line":170,"column":28}}]},"13":{"line":178,"type":"if","locations":[{"start":{"line":178,"column":20},"end":{"line":178,"column":20}},{"start":{"line":178,"column":20},"end":{"line":178,"column":20}}]},"14":{"line":178,"type":"binary-expr","locations":[{"start":{"line":178,"column":24},"end":{"line":178,"column":46}},{"start":{"line":178,"column":50},"end":{"line":178,"column":72}}]},"15":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":20},"end":{"line":182,"column":20}},{"start":{"line":182,"column":20},"end":{"line":182,"column":20}}]},"16":{"line":246,"type":"if","locations":[{"start":{"line":246,"column":0},"end":{"line":246,"column":0}},{"start":{"line":246,"column":0},"end":{"line":246,"column":0}}]}},"code":["(function () { YUI.add('jsonp', function (Y, NAME) {","","var isFunction = Y.Lang.isFunction;","","/**"," *

Provides a JSONPRequest class for repeated JSONP calls, and a convenience"," * method Y.jsonp(url, callback) to instantiate and send a JSONP request.

"," *"," *

Both the constructor as well as the convenience function take two"," * parameters: a url string and a callback.

"," *"," *

The url provided must include the placeholder string"," * "{callback}" which will be replaced by a dynamically"," * generated routing function to pass the data to your callback function."," * An example url might look like"," * "http://example.com/service?callback={callback}".

"," *"," *

The second parameter can be a callback function that accepts the JSON"," * payload as its argument, or a configuration object supporting the keys:

"," *
    "," *
  • on - map of callback subscribers"," *
      "," *
    • success - function handler for successful transmission
    • "," *
    • failure - function handler for failed transmission
    • "," *
    • timeout - function handler for transactions that timeout
    • "," *
    "," *
  • "," *
  • format - override function for inserting the proxy name in the url
  • "," *
  • timeout - the number of milliseconds to wait before giving up
  • "," *
  • context - becomes this in the callbacks
  • "," *
  • args - array of subsequent parameters to pass to the callbacks
  • "," *
  • allowCache - use the same proxy name for all requests? (boolean)
  • "," *
"," *"," * @module jsonp"," * @class JSONPRequest"," * @constructor"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} the default callback configuration or"," * success handler"," */","function JSONPRequest() {"," this._init.apply(this, arguments);","}","","JSONPRequest.prototype = {"," /**"," * Set up the success and failure handlers and the regex pattern used"," * to insert the temporary callback name in the url."," *"," * @method _init"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} Optional success callback or config"," * object containing success and failure functions and"," * the url regex."," * @protected"," */"," _init : function (url, callback) {"," this.url = url;",""," /**"," * Map of the number of requests currently pending responses per"," * generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _requests"," * @private"," * @type {Object}"," */"," this._requests = {};",""," /**"," * Map of the number of timeouts received from the destination url"," * by generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _timeouts"," * @private"," * @type {Object}"," */"," this._timeouts = {};",""," // Accept a function, an object, or nothing"," callback = (isFunction(callback)) ?"," { on: { success: callback } } :"," callback || {};",""," var subs = callback.on || {};",""," if (!subs.success) {"," subs.success = this._defaultCallback(url, callback);"," }",""," // Apply defaults and store"," this._config = Y.merge({"," context: this,"," args : [],"," format : this._format,"," allowCache: false"," }, callback, { on: subs });"," },",""," /**"," * Override this method to provide logic to default the success callback if"," * it is not provided at construction. This is overridden by jsonp-url to"," * parse the callback from the url string."," *"," * @method _defaultCallback"," * @param url {String} the url passed at construction"," * @param config {Object} (optional) the config object passed at"," * construction"," * @return {Function}"," */"," _defaultCallback: function () {},",""," /**"," * Issues the JSONP request."," *"," * @method send"," * @param args* {any} any additional arguments to pass to the url formatter"," * beyond the base url and the proxy function name"," * @chainable"," */"," send : function () {"," var self = this,"," args = Y.Array(arguments, 0, true),"," config = self._config,"," proxy = self._proxy || Y.guid(),"," url;",""," // TODO: support allowCache as time value"," if (config.allowCache) {"," self._proxy = proxy;"," }",""," if (self._requests[proxy] === undefined) {"," self._requests[proxy] = 0;"," }"," if (self._timeouts[proxy] === undefined) {"," self._timeouts[proxy] = 0;"," }"," self._requests[proxy]++;","",""," args.unshift(self.url, 'YUI.Env.JSONP.' + proxy);"," url = config.format.apply(self, args);",""," if (!config.on.success) {"," return self;"," }",""," function wrap(fn, isTimeout) {"," return (isFunction(fn)) ?"," function (data) {"," var execute = true,"," counter = '_requests';",""," //if (config.allowCache) {"," // A lot of wrangling to make sure timeouts result in"," // fewer success callbacks, but the proxy is properly"," // cleaned up."," if (isTimeout) {"," ++self._timeouts[proxy];"," --self._requests[proxy];"," } else {"," if (!self._requests[proxy]) {"," execute = false;"," counter = '_timeouts';"," }"," --self[counter][proxy];"," }"," //}",""," if (!self._requests[proxy] && !self._timeouts[proxy]) {"," delete YUI.Env.JSONP[proxy];"," }",""," if (execute) {"," fn.apply(config.context, [data].concat(config.args));"," }"," } :"," null;"," }",""," // Temporary un-sandboxed function alias"," // TODO: queuing"," YUI.Env.JSONP[proxy] = wrap(config.on.success);",""," // Y.Get transactions block each other by design, but can easily"," // be made non-blocking by just calling execute() on the transaction."," // https://github.com/yui/yui3/pull/393#issuecomment-11961608"," Y.Get.js(url, {"," onFailure : wrap(config.on.failure),"," onTimeout : wrap(config.on.timeout, true),"," timeout : config.timeout,"," charset : config.charset,"," attributes: config.attributes,"," async : config.async"," }).execute();",""," return self;"," },",""," /**"," * Default url formatter. Looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @param args* {any} additional args passed to send()"," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," return url.replace(/\\{callback\\}/, proxy);"," }","};","","Y.JSONPRequest = JSONPRequest;","","/**"," *"," * @method jsonp"," * @param url {String} the url of the JSONP service with the {callback}"," * placeholder where the callback function name typically goes."," * @param c {Function|Object} Callback function accepting the JSON payload"," * as its argument, or a configuration object (see above)."," * @param args* {any} additional arguments to pass to send()"," * @return {JSONPRequest}"," * @static"," * @for YUI"," */","Y.jsonp = function (url,c) {"," var req = new Y.JSONPRequest(url,c);"," return req.send.apply(req, Y.Array(arguments, 2, true));","};","","if (!YUI.Env.JSONP) {"," YUI.Env.JSONP = {};","}","","","}, '@VERSION@', {\"requires\": [\"get\", \"oop\"]});","","}());"]}; + __coverage__['build/jsonp/jsonp.js'] = {"path":"build/jsonp/jsonp.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0,0],"20":[0,0],"21":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":36}}},"2":{"name":"JSONPRequest","line":43,"loc":{"start":{"line":43,"column":0},"end":{"line":43,"column":24}}},"3":{"name":"(anonymous_3)","line":59,"loc":{"start":{"line":59,"column":12},"end":{"line":59,"column":37}}},"4":{"name":"(anonymous_4)","line":121,"loc":{"start":{"line":121,"column":22},"end":{"line":121,"column":34}}},"5":{"name":"(anonymous_5)","line":131,"loc":{"start":{"line":131,"column":11},"end":{"line":131,"column":23}}},"6":{"name":"wrap","line":162,"loc":{"start":{"line":162,"column":8},"end":{"line":162,"column":48}}},"7":{"name":"(anonymous_7)","line":164,"loc":{"start":{"line":164,"column":16},"end":{"line":164,"column":32}}},"8":{"name":"(anonymous_8)","line":239,"loc":{"start":{"line":239,"column":13},"end":{"line":239,"column":35}}},"9":{"name":"(anonymous_9)","line":258,"loc":{"start":{"line":258,"column":10},"end":{"line":258,"column":27}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":268,"column":46}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":35}},"3":{"start":{"line":43,"column":0},"end":{"line":45,"column":1}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":38}},"5":{"start":{"line":47,"column":0},"end":{"line":242,"column":2}},"6":{"start":{"line":60,"column":8},"end":{"line":60,"column":23}},"7":{"start":{"line":73,"column":8},"end":{"line":73,"column":28}},"8":{"start":{"line":86,"column":8},"end":{"line":86,"column":28}},"9":{"start":{"line":88,"column":8},"end":{"line":88,"column":28}},"10":{"start":{"line":91,"column":8},"end":{"line":93,"column":27}},"11":{"start":{"line":95,"column":8},"end":{"line":95,"column":37}},"12":{"start":{"line":97,"column":8},"end":{"line":99,"column":9}},"13":{"start":{"line":98,"column":12},"end":{"line":98,"column":64}},"14":{"start":{"line":102,"column":8},"end":{"line":107,"column":39}},"15":{"start":{"line":132,"column":8},"end":{"line":136,"column":16}},"16":{"start":{"line":139,"column":8},"end":{"line":141,"column":9}},"17":{"start":{"line":140,"column":12},"end":{"line":140,"column":32}},"18":{"start":{"line":143,"column":8},"end":{"line":145,"column":9}},"19":{"start":{"line":144,"column":12},"end":{"line":144,"column":38}},"20":{"start":{"line":146,"column":8},"end":{"line":148,"column":9}},"21":{"start":{"line":147,"column":12},"end":{"line":147,"column":38}},"22":{"start":{"line":149,"column":8},"end":{"line":151,"column":9}},"23":{"start":{"line":150,"column":12},"end":{"line":150,"column":38}},"24":{"start":{"line":152,"column":8},"end":{"line":152,"column":32}},"25":{"start":{"line":155,"column":8},"end":{"line":155,"column":57}},"26":{"start":{"line":156,"column":8},"end":{"line":156,"column":46}},"27":{"start":{"line":158,"column":8},"end":{"line":160,"column":9}},"28":{"start":{"line":159,"column":12},"end":{"line":159,"column":24}},"29":{"start":{"line":162,"column":8},"end":{"line":204,"column":9}},"30":{"start":{"line":163,"column":12},"end":{"line":203,"column":21}},"31":{"start":{"line":165,"column":20},"end":{"line":166,"column":46}},"32":{"start":{"line":172,"column":24},"end":{"line":192,"column":25}},"33":{"start":{"line":173,"column":28},"end":{"line":173,"column":52}},"34":{"start":{"line":174,"column":28},"end":{"line":174,"column":52}},"35":{"start":{"line":175,"column":31},"end":{"line":192,"column":25}},"36":{"start":{"line":176,"column":28},"end":{"line":176,"column":52}},"37":{"start":{"line":177,"column":28},"end":{"line":181,"column":29}},"38":{"start":{"line":178,"column":32},"end":{"line":178,"column":56}},"39":{"start":{"line":180,"column":32},"end":{"line":180,"column":56}},"40":{"start":{"line":183,"column":28},"end":{"line":190,"column":29}},"41":{"start":{"line":184,"column":32},"end":{"line":184,"column":48}},"42":{"start":{"line":185,"column":32},"end":{"line":189,"column":33}},"43":{"start":{"line":186,"column":36},"end":{"line":186,"column":58}},"44":{"start":{"line":187,"column":39},"end":{"line":189,"column":33}},"45":{"start":{"line":188,"column":36},"end":{"line":188,"column":58}},"46":{"start":{"line":191,"column":28},"end":{"line":191,"column":51}},"47":{"start":{"line":195,"column":20},"end":{"line":197,"column":21}},"48":{"start":{"line":196,"column":24},"end":{"line":196,"column":52}},"49":{"start":{"line":199,"column":20},"end":{"line":201,"column":21}},"50":{"start":{"line":200,"column":24},"end":{"line":200,"column":77}},"51":{"start":{"line":208,"column":8},"end":{"line":208,"column":55}},"52":{"start":{"line":213,"column":8},"end":{"line":220,"column":21}},"53":{"start":{"line":222,"column":8},"end":{"line":222,"column":20}},"54":{"start":{"line":240,"column":8},"end":{"line":240,"column":50}},"55":{"start":{"line":244,"column":0},"end":{"line":244,"column":30}},"56":{"start":{"line":258,"column":0},"end":{"line":261,"column":2}},"57":{"start":{"line":259,"column":4},"end":{"line":259,"column":40}},"58":{"start":{"line":260,"column":4},"end":{"line":260,"column":60}},"59":{"start":{"line":263,"column":0},"end":{"line":265,"column":1}},"60":{"start":{"line":264,"column":4},"end":{"line":264,"column":23}}},"branchMap":{"1":{"line":91,"type":"cond-expr","locations":[{"start":{"line":92,"column":12},"end":{"line":92,"column":41}},{"start":{"line":93,"column":12},"end":{"line":93,"column":26}}]},"2":{"line":93,"type":"binary-expr","locations":[{"start":{"line":93,"column":12},"end":{"line":93,"column":20}},{"start":{"line":93,"column":24},"end":{"line":93,"column":26}}]},"3":{"line":95,"type":"binary-expr","locations":[{"start":{"line":95,"column":19},"end":{"line":95,"column":30}},{"start":{"line":95,"column":34},"end":{"line":95,"column":36}}]},"4":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":97,"column":8}},{"start":{"line":97,"column":8},"end":{"line":97,"column":8}}]},"5":{"line":135,"type":"binary-expr","locations":[{"start":{"line":135,"column":21},"end":{"line":135,"column":32}},{"start":{"line":135,"column":36},"end":{"line":135,"column":44}}]},"6":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":8},"end":{"line":139,"column":8}},{"start":{"line":139,"column":8},"end":{"line":139,"column":8}}]},"7":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":8}},{"start":{"line":143,"column":8},"end":{"line":143,"column":8}}]},"8":{"line":146,"type":"if","locations":[{"start":{"line":146,"column":8},"end":{"line":146,"column":8}},{"start":{"line":146,"column":8},"end":{"line":146,"column":8}}]},"9":{"line":149,"type":"if","locations":[{"start":{"line":149,"column":8},"end":{"line":149,"column":8}},{"start":{"line":149,"column":8},"end":{"line":149,"column":8}}]},"10":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":8},"end":{"line":158,"column":8}},{"start":{"line":158,"column":8},"end":{"line":158,"column":8}}]},"11":{"line":163,"type":"cond-expr","locations":[{"start":{"line":164,"column":16},"end":{"line":202,"column":17}},{"start":{"line":203,"column":16},"end":{"line":203,"column":20}}]},"12":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":24},"end":{"line":172,"column":24}},{"start":{"line":172,"column":24},"end":{"line":172,"column":24}}]},"13":{"line":175,"type":"if","locations":[{"start":{"line":175,"column":31},"end":{"line":175,"column":31}},{"start":{"line":175,"column":31},"end":{"line":175,"column":31}}]},"14":{"line":177,"type":"if","locations":[{"start":{"line":177,"column":28},"end":{"line":177,"column":28}},{"start":{"line":177,"column":28},"end":{"line":177,"column":28}}]},"15":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":28},"end":{"line":183,"column":28}},{"start":{"line":183,"column":28},"end":{"line":183,"column":28}}]},"16":{"line":185,"type":"if","locations":[{"start":{"line":185,"column":32},"end":{"line":185,"column":32}},{"start":{"line":185,"column":32},"end":{"line":185,"column":32}}]},"17":{"line":187,"type":"if","locations":[{"start":{"line":187,"column":39},"end":{"line":187,"column":39}},{"start":{"line":187,"column":39},"end":{"line":187,"column":39}}]},"18":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":20},"end":{"line":195,"column":20}},{"start":{"line":195,"column":20},"end":{"line":195,"column":20}}]},"19":{"line":195,"type":"binary-expr","locations":[{"start":{"line":195,"column":24},"end":{"line":195,"column":46}},{"start":{"line":195,"column":50},"end":{"line":195,"column":72}},{"start":{"line":195,"column":76},"end":{"line":195,"column":98}}]},"20":{"line":199,"type":"if","locations":[{"start":{"line":199,"column":20},"end":{"line":199,"column":20}},{"start":{"line":199,"column":20},"end":{"line":199,"column":20}}]},"21":{"line":263,"type":"if","locations":[{"start":{"line":263,"column":0},"end":{"line":263,"column":0}},{"start":{"line":263,"column":0},"end":{"line":263,"column":0}}]}},"code":["(function () { YUI.add('jsonp', function (Y, NAME) {","","/*jslint maxlen: 350 */","var isFunction = Y.Lang.isFunction;","","/**"," *

Provides a JSONPRequest class for repeated JSONP calls, and a convenience"," * method Y.jsonp(url, callback) to instantiate and send a JSONP request.

"," *"," *

Both the constructor as well as the convenience function take two"," * parameters: a url string and a callback.

"," *"," *

The url provided must include the placeholder string"," * "{callback}" which will be replaced by a dynamically"," * generated routing function to pass the data to your callback function."," * An example url might look like"," * "http://example.com/service?callback={callback}".

"," *"," *

The second parameter can be a callback function that accepts the JSON"," * payload as its argument, or a configuration object supporting the keys:

"," *
    "," *
  • on - map of callback subscribers"," *
      "," *
    • success - function handler for successful transmission
    • "," *
    • failure - function handler for failed transmission
    • "," *
    • timeout - function handler for transactions that timeout
    • "," *
    "," *
  • "," *
  • format - override function for inserting the proxy name in the url
  • "," *
  • timeout - the number of milliseconds to wait before giving up
  • "," *
  • context - becomes this in the callbacks
  • "," *
  • args - array of subsequent parameters to pass to the callbacks
  • "," *
  • allowCache - use the same proxy name for all requests? (boolean)
  • "," *
"," *"," * @module jsonp"," * @class JSONPRequest"," * @constructor"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} the default callback configuration or"," * success handler"," */","function JSONPRequest() {"," this._init.apply(this, arguments);","}","","JSONPRequest.prototype = {"," /**"," * Set up the success and failure handlers and the regex pattern used"," * to insert the temporary callback name in the url."," *"," * @method _init"," * @param url {String} the url of the JSONP service"," * @param callback {Object|Function} Optional success callback or config"," * object containing success and failure functions and"," * the url regex."," * @protected"," */"," _init : function (url, callback) {"," this.url = url;",""," /**"," * Map of the number of requests currently pending responses per"," * generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _requests"," * @private"," * @type {Object}"," */"," this._requests = {};",""," /**"," * Map of the number of timeouts received from the destination url"," * by generated proxy. Used to ensure the proxy is not flushed if the"," * request times out and there is a timeout handler and success"," * handler, and used by connections configured to allowCache to make"," * sure the proxy isn't deleted until the last response has returned."," *"," * @property _timeouts"," * @private"," * @type {Object}"," */"," this._timeouts = {};",""," this._failures = {};",""," // Accept a function, an object, or nothing"," callback = (isFunction(callback)) ?"," { on: { success: callback } } :"," callback || {};",""," var subs = callback.on || {};",""," if (!subs.success) {"," subs.success = this._defaultCallback(url, callback);"," }",""," // Apply defaults and store"," this._config = Y.merge({"," context: this,"," args : [],"," format : this._format,"," allowCache: false"," }, callback, { on: subs });"," },",""," /**"," * Override this method to provide logic to default the success callback if"," * it is not provided at construction. This is overridden by jsonp-url to"," * parse the callback from the url string."," *"," * @method _defaultCallback"," * @param url {String} the url passed at construction"," * @param config {Object} (optional) the config object passed at"," * construction"," * @return {Function}"," */"," _defaultCallback: function () {},",""," /**"," * Issues the JSONP request."," *"," * @method send"," * @param args* {any} any additional arguments to pass to the url formatter"," * beyond the base url and the proxy function name"," * @chainable"," */"," send : function () {"," var self = this,"," args = Y.Array(arguments, 0, true),"," config = self._config,"," proxy = self._proxy || Y.guid(),"," url;",""," // TODO: support allowCache as time value"," if (config.allowCache) {"," self._proxy = proxy;"," }",""," if (self._requests[proxy] === undefined) {"," self._requests[proxy] = 0;"," }"," if (self._timeouts[proxy] === undefined) {"," self._timeouts[proxy] = 0;"," }"," if (self._failures[proxy] === undefined) {"," self._failures[proxy] = 0;"," }"," self._requests[proxy]++;","",""," args.unshift(self.url, 'YUI.Env.JSONP.' + proxy);"," url = config.format.apply(self, args);",""," if (!config.on.success) {"," return self;"," }",""," function wrap(fn, isTimeout, isFailure) {"," return (isFunction(fn)) ?"," function (data) {"," var execute = true,"," counter = '_requests';",""," //if (config.allowCache) {"," // A lot of wrangling to make sure timeouts result in"," // fewer success callbacks, but the proxy is properly"," // cleaned up."," if (isTimeout) {"," ++self._timeouts[proxy];"," --self._requests[proxy];"," } else if (isFailure) {"," ++self._failures[proxy];"," if (self._timeouts[proxy] > 0) {"," --self._timeouts[proxy];"," } else {"," --self._requests[proxy];"," }"," } else {"," if (!self._requests[proxy]) {"," execute = false;"," if (self._timeouts[proxy] > 0) {"," counter = '_timeouts';"," } else if (self._failures[proxy] > 0) {"," counter = '_failures';"," }"," }"," --self[counter][proxy];"," }"," //}",""," if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) {"," delete YUI.Env.JSONP[proxy];"," }",""," if (execute) {"," fn.apply(config.context, [data].concat(config.args));"," }"," } :"," null;"," }",""," // Temporary un-sandboxed function alias"," // TODO: queuing"," YUI.Env.JSONP[proxy] = wrap(config.on.success);",""," // Y.Get transactions block each other by design, but can easily"," // be made non-blocking by just calling execute() on the transaction."," // https://github.com/yui/yui3/pull/393#issuecomment-11961608"," Y.Get.js(url, {"," onFailure : wrap(config.on.failure, false, true),"," onTimeout : wrap(config.on.timeout, true, false),"," timeout : config.timeout,"," charset : config.charset,"," attributes: config.attributes,"," async : config.async"," }).execute();",""," return self;"," },",""," /**"," * Default url formatter. Looks for callback= in the url and appends it"," * if not present. The supplied proxy name will be assigned to the query"," * param. Override this method by passing a function as the"," * "format" property in the config object to the constructor."," *"," * @method _format"," * @param url { String } the original url"," * @param proxy {String} the function name that will be used as a proxy to"," * the configured callback methods."," * @param args* {any} additional args passed to send()"," * @return {String} fully qualified JSONP url"," * @protected"," */"," _format: function (url, proxy) {"," return url.replace(/\\{callback\\}/, proxy);"," }","};","","Y.JSONPRequest = JSONPRequest;","","/**"," *"," * @method jsonp"," * @param url {String} the url of the JSONP service with the {callback}"," * placeholder where the callback function name typically goes."," * @param c {Function|Object} Callback function accepting the JSON payload"," * as its argument, or a configuration object (see above)."," * @param args* {any} additional arguments to pass to send()"," * @return {JSONPRequest}"," * @static"," * @for YUI"," */","Y.jsonp = function (url,c) {"," var req = new Y.JSONPRequest(url,c);"," return req.send.apply(req, Y.Array(arguments, 2, true));","};","","if (!YUI.Env.JSONP) {"," YUI.Env.JSONP = {};","}","","","}, '@VERSION@', {\"requires\": [\"get\", \"oop\"]});","","}());"]}; } var __cov_ujvKiDWGSwwCzJBwq2DGWA = __coverage__['build/jsonp/jsonp.js']; -__cov_ujvKiDWGSwwCzJBwq2DGWA.s['1']++;YUI.add('jsonp',function(Y,NAME){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['1']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['2']++;var isFunction=Y.Lang.isFunction;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['3']++;function JSONPRequest(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['2']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['4']++;this._init.apply(this,arguments);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['5']++;JSONPRequest.prototype={_init:function(url,callback){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['3']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['6']++;this.url=url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['7']++;this._requests={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['8']++;this._timeouts={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['9']++;callback=isFunction(callback)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][0]++,{on:{success:callback}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][1]++,(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][0]++,callback)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][1]++,{}));__cov_ujvKiDWGSwwCzJBwq2DGWA.s['10']++;var subs=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][0]++,callback.on)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][1]++,{});__cov_ujvKiDWGSwwCzJBwq2DGWA.s['11']++;if(!subs.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['12']++;subs.success=this._defaultCallback(url,callback);}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['13']++;this._config=Y.merge({context:this,args:[],format:this._format,allowCache:false},callback,{on:subs});},_defaultCallback:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['4']++;},send:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['5']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['14']++;var self=this,args=Y.Array(arguments,0,true),config=self._config,proxy=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][0]++,self._proxy)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][1]++,Y.guid()),url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['15']++;if(config.allowCache){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['16']++;self._proxy=proxy;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['17']++;if(self._requests[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['18']++;self._requests[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['19']++;if(self._timeouts[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['20']++;self._timeouts[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['21']++;self._requests[proxy]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['22']++;args.unshift(self.url,'YUI.Env.JSONP.'+proxy);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['23']++;url=config.format.apply(self,args);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['24']++;if(!config.on.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['25']++;return self;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['26']++;function wrap(fn,isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['6']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['27']++;return isFunction(fn)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][0]++,function(data){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['7']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['28']++;var execute=true,counter='_requests';__cov_ujvKiDWGSwwCzJBwq2DGWA.s['29']++;if(isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['30']++;++self._timeouts[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['31']++;--self._requests[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['32']++;if(!self._requests[proxy]){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['33']++;execute=false;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['34']++;counter='_timeouts';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['35']++;--self[counter][proxy];}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['36']++;if((__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][0]++,!self._requests[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][1]++,!self._timeouts[proxy])){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['37']++;delete YUI.Env.JSONP[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['38']++;if(execute){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['39']++;fn.apply(config.context,[data].concat(config.args));}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][1]++;}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][1]++,null);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['40']++;YUI.Env.JSONP[proxy]=wrap(config.on.success);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['41']++;Y.Get.js(url,{onFailure:wrap(config.on.failure),onTimeout:wrap(config.on.timeout,true),timeout:config.timeout,charset:config.charset,attributes:config.attributes,async:config.async}).execute();__cov_ujvKiDWGSwwCzJBwq2DGWA.s['42']++;return self;},_format:function(url,proxy){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['8']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['43']++;return url.replace(/\{callback\}/,proxy);}};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['44']++;Y.JSONPRequest=JSONPRequest;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['45']++;Y.jsonp=function(url,c){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['9']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['46']++;var req=new Y.JSONPRequest(url,c);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['47']++;return req.send.apply(req,Y.Array(arguments,2,true));};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['48']++;if(!YUI.Env.JSONP){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['49']++;YUI.Env.JSONP={};}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][1]++;}},'@VERSION@',{'requires':['get','oop']}); +__cov_ujvKiDWGSwwCzJBwq2DGWA.s['1']++;YUI.add('jsonp',function(Y,NAME){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['1']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['2']++;var isFunction=Y.Lang.isFunction;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['3']++;function JSONPRequest(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['2']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['4']++;this._init.apply(this,arguments);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['5']++;JSONPRequest.prototype={_init:function(url,callback){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['3']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['6']++;this.url=url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['7']++;this._requests={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['8']++;this._timeouts={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['9']++;this._failures={};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['10']++;callback=isFunction(callback)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][0]++,{on:{success:callback}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['1'][1]++,(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][0]++,callback)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['2'][1]++,{}));__cov_ujvKiDWGSwwCzJBwq2DGWA.s['11']++;var subs=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][0]++,callback.on)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['3'][1]++,{});__cov_ujvKiDWGSwwCzJBwq2DGWA.s['12']++;if(!subs.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['13']++;subs.success=this._defaultCallback(url,callback);}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['4'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['14']++;this._config=Y.merge({context:this,args:[],format:this._format,allowCache:false},callback,{on:subs});},_defaultCallback:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['4']++;},send:function(){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['5']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['15']++;var self=this,args=Y.Array(arguments,0,true),config=self._config,proxy=(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][0]++,self._proxy)||(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['5'][1]++,Y.guid()),url;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['16']++;if(config.allowCache){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['17']++;self._proxy=proxy;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['6'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['18']++;if(self._requests[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['19']++;self._requests[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['7'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['20']++;if(self._timeouts[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['21']++;self._timeouts[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['8'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['22']++;if(self._failures[proxy]===undefined){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['23']++;self._failures[proxy]=0;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['9'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['24']++;self._requests[proxy]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['25']++;args.unshift(self.url,'YUI.Env.JSONP.'+proxy);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['26']++;url=config.format.apply(self,args);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['27']++;if(!config.on.success){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['28']++;return self;}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['10'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['29']++;function wrap(fn,isTimeout,isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['6']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['30']++;return isFunction(fn)?(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][0]++,function(data){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['7']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['31']++;var execute=true,counter='_requests';__cov_ujvKiDWGSwwCzJBwq2DGWA.s['32']++;if(isTimeout){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['33']++;++self._timeouts[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['34']++;--self._requests[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['12'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['35']++;if(isFailure){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['36']++;++self._failures[proxy];__cov_ujvKiDWGSwwCzJBwq2DGWA.s['37']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['38']++;--self._timeouts[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['14'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['39']++;--self._requests[proxy];}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['13'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['40']++;if(!self._requests[proxy]){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['41']++;execute=false;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['42']++;if(self._timeouts[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['43']++;counter='_timeouts';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['16'][1]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['44']++;if(self._failures[proxy]>0){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['45']++;counter='_failures';}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['17'][1]++;}}}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['15'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['46']++;--self[counter][proxy];}}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['47']++;if((__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][0]++,!self._requests[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][1]++,!self._timeouts[proxy])&&(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['19'][2]++,!self._failures[proxy])){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['48']++;delete YUI.Env.JSONP[proxy];}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['18'][1]++;}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['49']++;if(execute){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['50']++;fn.apply(config.context,[data].concat(config.args));}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['20'][1]++;}}):(__cov_ujvKiDWGSwwCzJBwq2DGWA.b['11'][1]++,null);}__cov_ujvKiDWGSwwCzJBwq2DGWA.s['51']++;YUI.Env.JSONP[proxy]=wrap(config.on.success);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['52']++;Y.Get.js(url,{onFailure:wrap(config.on.failure,false,true),onTimeout:wrap(config.on.timeout,true,false),timeout:config.timeout,charset:config.charset,attributes:config.attributes,async:config.async}).execute();__cov_ujvKiDWGSwwCzJBwq2DGWA.s['53']++;return self;},_format:function(url,proxy){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['8']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['54']++;return url.replace(/\{callback\}/,proxy);}};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['55']++;Y.JSONPRequest=JSONPRequest;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['56']++;Y.jsonp=function(url,c){__cov_ujvKiDWGSwwCzJBwq2DGWA.f['9']++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['57']++;var req=new Y.JSONPRequest(url,c);__cov_ujvKiDWGSwwCzJBwq2DGWA.s['58']++;return req.send.apply(req,Y.Array(arguments,2,true));};__cov_ujvKiDWGSwwCzJBwq2DGWA.s['59']++;if(!YUI.Env.JSONP){__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][0]++;__cov_ujvKiDWGSwwCzJBwq2DGWA.s['60']++;YUI.Env.JSONP={};}else{__cov_ujvKiDWGSwwCzJBwq2DGWA.b['21'][1]++;}},'@VERSION@',{'requires':['get','oop']}); diff --git a/build/jsonp/jsonp-debug.js b/build/jsonp/jsonp-debug.js index 4ee0cf0c8f3..26173dfe2f4 100644 --- a/build/jsonp/jsonp-debug.js +++ b/build/jsonp/jsonp-debug.js @@ -1,5 +1,6 @@ YUI.add('jsonp', function (Y, NAME) { +/*jslint maxlen: 350 */ var isFunction = Y.Lang.isFunction; /** @@ -84,6 +85,8 @@ JSONPRequest.prototype = { */ this._timeouts = {}; + this._failures = {}; + // Accept a function, an object, or nothing callback = (isFunction(callback)) ? { on: { success: callback } } : @@ -143,6 +146,9 @@ JSONPRequest.prototype = { if (self._timeouts[proxy] === undefined) { self._timeouts[proxy] = 0; } + if (self._failures[proxy] === undefined) { + self._failures[proxy] = 0; + } self._requests[proxy]++; Y.log('sending ' + proxy); @@ -155,7 +161,7 @@ JSONPRequest.prototype = { return self; } - function wrap(fn, isTimeout) { + function wrap(fn, isTimeout, isFailure) { return (isFunction(fn)) ? function (data) { var execute = true, @@ -168,18 +174,30 @@ JSONPRequest.prototype = { if (isTimeout) { ++self._timeouts[proxy]; --self._requests[proxy]; - Y.log(proxy + ' timed out - timeouts(' + self._timeouts[proxy] + ') requests(' + self._requests[proxy] + ')'); + Y.log(proxy + ' timed out - timeouts(' + self._timeouts[proxy] + ') failures(' + self._failures[proxy] + ') requests(' + self._requests[proxy] + ')'); + } else if (isFailure) { + ++self._failures[proxy]; + if (self._timeouts[proxy] > 0) { + --self._timeouts[proxy]; + } else { + --self._requests[proxy]; + } + Y.log(proxy + ' failure - timeouts(' + self._timeouts[proxy] + ') failures(' + self._failures[proxy] + ') requests(' + self._requests[proxy] + ')'); } else { if (!self._requests[proxy]) { execute = false; - counter = '_timeouts'; + if (self._timeouts[proxy] > 0) { + counter = '_timeouts'; + } else if (self._failures[proxy] > 0) { + counter = '_failures'; + } } --self[counter][proxy]; - Y.log(proxy + ' response received - timeouts(' + self._timeouts[proxy] + ') requests(' + self._requests[proxy] + ')'); + Y.log(proxy + ' response received - timeouts(' + self._timeouts[proxy] + ') failures(' + self._failures[proxy] + ') requests(' + self._requests[proxy] + ')'); } //} - if (!self._requests[proxy] && !self._timeouts[proxy]) { + if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) { Y.log('deleting ' + proxy); delete YUI.Env.JSONP[proxy]; } @@ -199,8 +217,8 @@ JSONPRequest.prototype = { // be made non-blocking by just calling execute() on the transaction. // https://github.com/yui/yui3/pull/393#issuecomment-11961608 Y.Get.js(url, { - onFailure : wrap(config.on.failure), - onTimeout : wrap(config.on.timeout, true), + onFailure : wrap(config.on.failure, false, true), + onTimeout : wrap(config.on.timeout, true, false), timeout : config.timeout, charset : config.charset, attributes: config.attributes, diff --git a/build/jsonp/jsonp-min.js b/build/jsonp/jsonp-min.js index 5500e983e9b..c39c8690fdf 100644 --- a/build/jsonp/jsonp-min.js +++ b/build/jsonp/jsonp-min.js @@ -1 +1 @@ -YUI.add("jsonp",function(e,t){function r(){this._init.apply(this,arguments)}var n=e.Lang.isFunction;r.prototype={_init:function(t,r){this.url=t,this._requests={},this._timeouts={},r=n(r)?{on:{success:r}}:r||{};var i=r.on||{};i.success||(i.success=this._defaultCallback(t,r)),this._config=e.merge({context:this,args:[],format:this._format,allowCache:!1},r,{on:i})},_defaultCallback:function(){},send:function(){function u(e,r){return n(e)?function(n){var o=!0,u="_requests";r?(++t._timeouts[s],--t._requests[s]):(t._requests[s]||(o=!1,u="_timeouts"),--t[u][s]),!t._requests[s]&&!t._timeouts[s]&&delete YUI.Env.JSONP[s],o&&e.apply(i.context,[n].concat(i.args))}:null}var t=this,r=e.Array(arguments,0,!0),i=t._config,s=t._proxy||e.guid(),o;return i.allowCache&&(t._proxy=s),t._requests[s]===undefined&&(t._requests[s]=0),t._timeouts[s]===undefined&&(t._timeouts[s]=0),t._requests[s]++,r.unshift(t.url,"YUI.Env.JSONP."+s),o=i.format.apply(t,r),i.on.success?(YUI.Env.JSONP[s]=u(i.on.success),e.Get.js(o,{onFailure:u(i.on.failure),onTimeout:u(i.on.timeout,!0),timeout:i.timeout,charset:i.charset,attributes:i.attributes,async:i.async}).execute(),t):t},_format:function(e,t){return e.replace(/\{callback\}/,t)}},e.JSONPRequest=r,e.jsonp=function(t,n){var r=new e.JSONPRequest(t,n);return r.send.apply(r,e.Array(arguments,2,!0))},YUI.Env.JSONP||(YUI.Env.JSONP={})},"@VERSION@",{requires:["get","oop"]}); +YUI.add("jsonp",function(e,t){function r(){this._init.apply(this,arguments)}var n=e.Lang.isFunction;r.prototype={_init:function(t,r){this.url=t,this._requests={},this._timeouts={},this._failures={},r=n(r)?{on:{success:r}}:r||{};var i=r.on||{};i.success||(i.success=this._defaultCallback(t,r)),this._config=e.merge({context:this,args:[],format:this._format,allowCache:!1},r,{on:i})},_defaultCallback:function(){},send:function(){function u(e,r,o){return n(e)?function(n){var u=!0,a="_requests";r?(++t._timeouts[s],--t._requests[s]):o?(++t._failures[s],t._timeouts[s]>0?--t._timeouts[s]:--t._requests[s]):(t._requests[s]||(u=!1,t._timeouts[s]>0?a="_timeouts":t._failures[s]>0&&(a="_failures")),--t[a][s]),!t._requests[s]&&!t._timeouts[s]&&!t._failures[s]&&delete YUI.Env.JSONP[s],u&&e.apply(i.context,[n].concat(i.args))}:null}var t=this,r=e.Array(arguments,0,!0),i=t._config,s=t._proxy||e.guid(),o;return i.allowCache&&(t._proxy=s),t._requests[s]===undefined&&(t._requests[s]=0),t._timeouts[s]===undefined&&(t._timeouts[s]=0),t._failures[s]===undefined&&(t._failures[s]=0),t._requests[s]++,r.unshift(t.url,"YUI.Env.JSONP."+s),o=i.format.apply(t,r),i.on.success?(YUI.Env.JSONP[s]=u(i.on.success),e.Get.js(o,{onFailure:u(i.on.failure,!1,!0),onTimeout:u(i.on.timeout,!0,!1),timeout:i.timeout,charset:i.charset,attributes:i.attributes,async:i.async}).execute(),t):t},_format:function(e,t){return e.replace(/\{callback\}/,t)}},e.JSONPRequest=r,e.jsonp=function(t,n){var r=new e.JSONPRequest(t,n);return r.send.apply(r,e.Array(arguments,2,!0))},YUI.Env.JSONP||(YUI.Env.JSONP={})},"@VERSION@",{requires:["get","oop"]}); diff --git a/build/jsonp/jsonp.js b/build/jsonp/jsonp.js index 997f412df92..abe24fe0687 100644 --- a/build/jsonp/jsonp.js +++ b/build/jsonp/jsonp.js @@ -1,5 +1,6 @@ YUI.add('jsonp', function (Y, NAME) { +/*jslint maxlen: 350 */ var isFunction = Y.Lang.isFunction; /** @@ -84,6 +85,8 @@ JSONPRequest.prototype = { */ this._timeouts = {}; + this._failures = {}; + // Accept a function, an object, or nothing callback = (isFunction(callback)) ? { on: { success: callback } } : @@ -143,6 +146,9 @@ JSONPRequest.prototype = { if (self._timeouts[proxy] === undefined) { self._timeouts[proxy] = 0; } + if (self._failures[proxy] === undefined) { + self._failures[proxy] = 0; + } self._requests[proxy]++; @@ -153,7 +159,7 @@ JSONPRequest.prototype = { return self; } - function wrap(fn, isTimeout) { + function wrap(fn, isTimeout, isFailure) { return (isFunction(fn)) ? function (data) { var execute = true, @@ -166,16 +172,27 @@ JSONPRequest.prototype = { if (isTimeout) { ++self._timeouts[proxy]; --self._requests[proxy]; + } else if (isFailure) { + ++self._failures[proxy]; + if (self._timeouts[proxy] > 0) { + --self._timeouts[proxy]; + } else { + --self._requests[proxy]; + } } else { if (!self._requests[proxy]) { execute = false; - counter = '_timeouts'; + if (self._timeouts[proxy] > 0) { + counter = '_timeouts'; + } else if (self._failures[proxy] > 0) { + counter = '_failures'; + } } --self[counter][proxy]; } //} - if (!self._requests[proxy] && !self._timeouts[proxy]) { + if (!self._requests[proxy] && !self._timeouts[proxy] && !self._failures[proxy]) { delete YUI.Env.JSONP[proxy]; } @@ -194,8 +211,8 @@ JSONPRequest.prototype = { // be made non-blocking by just calling execute() on the transaction. // https://github.com/yui/yui3/pull/393#issuecomment-11961608 Y.Get.js(url, { - onFailure : wrap(config.on.failure), - onTimeout : wrap(config.on.timeout, true), + onFailure : wrap(config.on.failure, false, true), + onTimeout : wrap(config.on.timeout, true, false), timeout : config.timeout, charset : config.charset, attributes: config.attributes,