diff --git a/mithril.js b/mithril.js index e8c32a0e..f8a49367 100644 --- a/mithril.js +++ b/mithril.js @@ -699,6 +699,7 @@ var StreamFactory = function(log) { return initDependency(self, [stream], derive, recover) } function combine(fn, streams) { + if (streams.length > streams.filter(valid).length) throw new Error("Ensure that each item passed to m.prop.combine/m.prop.merge is a stream") return initDependency(createStream(), streams, function() { var failed = streams.filter(errored) if (failed.length > 0) throw {__error: failed[0]._state.error} @@ -755,6 +756,7 @@ var StreamFactory = function(log) { function ap(stream) {return combine(function(s1, s2) {return s1()(s2())}, [this, stream])} function valueOf() {return this._state.value} function toJSON() {return this._state.value != null && typeof this._state.value.toJSON === "function" ? this._state.value.toJSON() : this._state.value} + function valid(stream) {return stream._state } function active(stream) {return stream._state.state === 1} function changed(stream) {return stream._state.changed} function notEnded(stream) {return stream._state.state !== 2} diff --git a/mithril.min.js b/mithril.min.js index b57fced5..bc171f33 100644 --- a/mithril.min.js +++ b/mithril.min.js @@ -1,42 +1,42 @@ -new function(){function x(b,f,n,h,k,l){return{tag:b,key:f,attrs:n,children:h,text:k,dom:l,domSize:void 0,state:{},events:void 0,instance:void 0,skip:!1}}function z(b){if(null==b||"string"!==typeof b&&null==b.view)throw Error("The selector must be either a string or a component.");if("string"===typeof b&&void 0===F[b]){for(var f,n,h=[],k={};f=P.exec(b);){var l=f[1],m=f[2];""===l&&""!==m?n=m:"#"===l?k.id=m:"."===l?h.push(m):"["===f[3][0]&&((l=f[6])&&(l=l.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")), -k[f[4]]=l||!0)}0=v&&A>=E;){var r=a[v],u=e[E];if(r===u)v++,E++;else if(null!=r&&null!=u&&r.key===u.key)v++,E++,l(c,r,u,b,w(a,v,g),p,h),p&&r.tag===u.tag&&q(c,m(r),g);else if(r=a[k],r===u)k--,E++;else if(null!=r&&null!=u&&r.key===u.key)l(c,r,u,b,w(a,k+1,g),p,h),E=v&&A>=E;){r=a[k];u=e[A];if(r===u)k--;else if(null!=r&&null!=u&&r.key===u.key)l(c,r,u,b,w(a,k+1,g),p,h),p&&r.tag===u.tag&&q(c,m(r),g),null!=r.dom&&(g=r.dom),k--;else{if(!t){t=a;var r=k,C={},y;for(y=0;yb.indexOf("?")?"?":"&";b+=h+f}return b}function k(b){try{return""!==b?JSON.parse(b):null}catch(g){throw Error(b); -}}function l(b){return b.responseText}function m(b,g){if("function"===typeof b)if(g instanceof Array)for(var f=0;ft.status)g(m(d.type,b));else{var f=Error(t.responseText),h;for(h in b)f[h]=b[h];g.error(f)}}catch(k){g.error(k)}"function"===typeof q&&q()}};A?t.send(d.data):t.send();return g},jsonp:function(d){var g=f();void 0!==d.initialValue&&g(d.initialValue);var k=d.callbackName||"_mithril_"+Math.round(1E16*Math.random())+ -"_"+w++,t=b.document.createElement("script");b[k]=function(f){t.parentNode.removeChild(t);g(m(d.type,f));"function"===typeof q&&q();delete b[k]};t.onerror=function(){t.parentNode.removeChild(t);g.error(Error("JSONP request failed"));"function"===typeof q&&q();delete b[k]};null==d.data&&(d.data={});d.url=n(d.url,d.data);d.data[d.callbackKey||"callback"]=k;t.src=h(d.url,d.data);b.document.documentElement.appendChild(t);return g},setCompletionCallback:function(b){q=b}}}(window,O),L=function(){var b= -[];return{subscribe:b.push.bind(b),unsubscribe:function(f){f=b.indexOf(f);-1=t&&z>=A;){var r=a[t],u=e[A];if(r===u)t++,A++;else if(null!=r&&null!=u&&r.key===u.key)t++,A++,l(c,r,u,b,v(a,t,d),k,h),k&&r.tag===u.tag&&q(c,m(r),d);else if(r=a[B],r===u)B--,A++;else if(null!=r&&null!=u&&r.key===u.key)l(c,r,u,b,v(a,B+1,d),k,h),A=t&&z>=A;){r=a[B];u=e[z];if(r===u)B--;else if(null!=r&&null!=u&&r.key===u.key)l(c,r,u,b,v(a,B+1,d),k,h),k&&r.tag===u.tag&&q(c,m(r),d),null!=r.dom&&(d=r.dom),B--;else{if(!n){n=a;var r=B,C={},x;for(x=0;xb.filter(I).length)throw Error("Ensure that each item passed to m.prop.combine/m.prop.merge is a stream");return r(f(),b,function(){var d=b.filter(E);if(0b.indexOf("?")?"?":"&";b+=h+f}return b}function k(b){try{return""!==b?JSON.parse(b):null}catch(d){throw Error(b);}}function l(b){return b.responseText}function m(b,d){if("function"===typeof b)if(d instanceof Array)for(var f=0;fn.status)d(m(g.type,b));else{var f=Error(n.responseText),h;for(h in b)f[h]= +b[h];d.error(f)}}catch(k){d.error(k)}"function"===typeof q&&q()}};z?n.send(g.data):n.send();return d},jsonp:function(g){var d=f();void 0!==g.initialValue&&d(g.initialValue);var k=g.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+v++,n=b.document.createElement("script");b[k]=function(f){n.parentNode.removeChild(n);d(m(g.type,f));"function"===typeof q&&q();delete b[k]};n.onerror=function(){n.parentNode.removeChild(n);d.error(Error("JSONP request failed"));"function"===typeof q&&q();delete b[k]}; +null==g.data&&(g.data={});g.url=p(g.url,g.data);g.data[g.callbackKey||"callback"]=k;n.src=h(g.url,g.data);b.document.documentElement.appendChild(n);return d},setCompletionCallback:function(b){q=b}}}(window,N),K=function(){var b=[];return{subscribe:b.push.bind(b),unsubscribe:function(f){f=b.indexOf(f);-1