diff --git a/mithril.js b/mithril.js index 869da60a..19a6bafe 100644 --- a/mithril.js +++ b/mithril.js @@ -808,7 +808,7 @@ var requestService = function($window) { xhr.onreadystatechange = function() { if (xhr.readyState === 4) { try { - var response = args.deserialize(args.extract(xhr, args)) + var response = (args.extract !== extract) ? args.extract(xhr, args) : args.deserialize(args.extract(xhr, args)) if (xhr.status >= 200 && xhr.status < 300) { stream(cast(args.type, response)) } diff --git a/mithril.min.js b/mithril.min.js index 3b2074e8..2318a012 100644 --- a/mithril.min.js +++ b/mithril.min.js @@ -1,40 +1,40 @@ -new function(){(function(){function y(){function a(){0=q&&z>=A;){var t=c[q],w=f[A];if(t===w)q++,A++;else if(null!=t&&null!=w&&t.key===w.key)q++,A++,k(a,t,w,d,e(c,q,g),p,B),p&&t.tag===w.tag&&n(a,m(t),g);else if(t=c[r],t===w)r--,A++;else if(null!=t&&null!=w&&t.key===w.key)k(a,t,w,d,e(c,r+1,g),p,B),n(a,m(t),e(c,q,g)),r--,A++;else break}for(;r>=q&&z>=A;){t=c[r];w=f[z]; -if(t===w)r--;else if(null!=t&&null!=w&&t.key===w.key)k(a,t,w,d,e(c,r+1,g),p,B),p&&t.tag===w.tag&&n(a,m(t),g),null!=t.dom&&(g=t.dom),r--;else{if(!u){u=c;var t=r,l={},x;for(x=0;xa.indexOf("?")?"?":"&";a+=g+d}return a}function d(a){try{return""!==a?JSON.parse(a):null}catch(b){throw Error(a);}}function g(a){return a.responseText}var k=0,m;return{xhr:function(e){var n=C.stream();void 0!==e.initialValue&&n(e.initialValue);var v="boolean"===typeof e.useBody?e.useBody:"GET"!==e.method&& -"TRACE"!==e.method;"function"!==typeof e.serialize&&(e.serialize="undefined"!==typeof FormData&&e.data instanceof FormData?function(a){return a}:JSON.stringify);"function"!==typeof e.deserialize&&(e.deserialize=d);"function"!==typeof e.extract&&(e.extract=g);e.url=b(e.url,e.data);v?e.data=e.serialize(e.data):e.url=h(e.url,e.data);var k=new a.XMLHttpRequest;k.open(e.method,e.url,"boolean"===typeof e.async?e.async:!0,"string"===typeof e.user?e.user:void 0,"string"===typeof e.password?e.password:void 0); -e.serialize===JSON.stringify&&v&&k.setRequestHeader("Content-Type","application/json; charset=utf-8");e.deserialize===d&&k.setRequestHeader("Accept","application/json, text/*");"function"===typeof e.config&&(k=e.config(k,e)||k);k.onreadystatechange=function(){if(4===k.readyState){try{var a=e.deserialize(e.extract(k,e));if(200<=k.status&&300>k.status){if("function"===typeof e.type)if(a instanceof Array)for(var b=0;b=r&&B>=A;){var u=c[r],w=f[A];if(u===w)r++,A++;else if(null!=u&&null!=w&&u.key===w.key)r++,A++,p(a,u,w,d,m(c,r,g),z,k),z&&u.tag===w.tag&&e(a,l(u),g);else if(u=c[v],u===w)v--,A++;else if(null!=u&&null!=w&&u.key===w.key)p(a,u,w,d,m(c,v+1,g),z,k),e(a,l(u),m(c,r,g)),v--,A++;else break}for(;v>=r&&B>=A;){u=c[v];w=f[B]; +if(u===w)v--;else if(null!=u&&null!=w&&u.key===w.key)p(a,u,w,d,m(c,v+1,g),z,k),z&&u.tag===w.tag&&e(a,l(u),g),null!=u.dom&&(g=u.dom),v--;else{if(!n){n=c;var u=v,t={},x;for(x=0;xa.indexOf("?")?"?":"&";a+=g+d}return a}function d(a){try{return""!==a?JSON.parse(a):null}catch(b){throw Error(a);}}function g(a){return a.responseText}function p(a,b){if("function"===typeof a)if(b instanceof Array)for(var d=0;dk.status)q(p(e.type, +a));else{var b=Error(k.responseText),d;for(d in a)b[d]=a[d];q.error(b)}}catch(h){q.error(h)}"function"===typeof m&&m()}};l?k.send(e.data):k.send();return q},jsonp:function(e){var d=C.stream();void 0!==e.initialValue&&d(e.initialValue);var g=e.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+l++,k=a.document.createElement("script");a[g]=function(b){k.parentNode.removeChild(k);d(p(e.type,b));"function"===typeof m&&m();delete a[g]};k.onerror=function(){k.parentNode.removeChild(k);d.error(Error("JSONP request failed")); +"function"===typeof m&&m();delete a[g]};null==e.data&&(e.data={});e.url=b(e.url,e.data);e.data[e.callbackKey||"callback"]=g;k.src=h(e.url,e.data);a.document.documentElement.appendChild(k);return d},setCompletionCallback:function(a){m=a}}}(window),H=function(){var a=[];return{subscribe:a.push.bind(a),unsubscribe:function(b){b=a.indexOf(b);-1