delorean.js
Advanced tools
Comparing version 0.5.0-17 to 0.5.0-18
{ | ||
"name": "delorean.js", | ||
"version": "0.5.0-17", | ||
"version": "0.5.0-18", | ||
"homepage": "http://deloreanjs.com", | ||
@@ -5,0 +5,0 @@ "authors": [ |
@@ -1,2 +0,2 @@ | ||
/*! delorean.js - v0.5.0-9 - 2014-08-27 */ | ||
/*! delorean.js - v0.5.0-17 - 2014-08-28 */ | ||
(function (DeLorean) { | ||
@@ -202,3 +202,3 @@ 'use strict'; | ||
var self = this, store, __changeHandler; | ||
__changeHandler = function (store) { | ||
__changeHandler = function (store, storeName) { | ||
return function () { | ||
@@ -221,3 +221,3 @@ var state; | ||
store = this.stores[storeName]; | ||
store.onChange(__changeHandler(store)); | ||
store.onChange(__changeHandler(store, storeName)); | ||
} | ||
@@ -224,0 +224,0 @@ } |
@@ -1,2 +0,2 @@ | ||
!function(DeLorean){"use strict";function a(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function b(a){return"action:"+a}function c(a,b){return Array.prototype.slice.call(a,b)}function d(a){return a.props.dispatcher?a.props.dispatcher:d(a._owner)}var Dispatcher,Store;Dispatcher=function(){function Dispatcher(a){this.listener=new DeLorean.EventEmitter,this.stores=a}return Dispatcher.prototype.dispatch=function(a,b){var c,d,e=this;c=function(){var a,b=[];for(var c in e.stores){if(a=e.stores[c],!a instanceof Store)throw"Given store is not a store instance";b.push(a)}return b}(),d=this.waitFor(c);for(var f in e.stores)e.stores[f].dispatchAction(a,b);return d},Dispatcher.prototype.waitFor=function(a){var b,c=this;return b=function(){var b,c,d=[];b=function(a){return new DeLorean.Promise(function(b){a.listener.once("change",b)})};for(var e in a)c=b(a[e]),d.push(c);return d}(),DeLorean.Promise.all(b).then(function(){c.listener.emit("change:all")})},Dispatcher.prototype.registerAction=function(a,b){if("function"!=typeof b)throw"Action callback should be a function.";this[a]=b.bind(this.stores)},Dispatcher.prototype.on=function(){return this.listener.on.apply(this.listener,arguments)},Dispatcher.prototype.off=function(){return this.listener.removeListener.apply(this.listener,arguments)},Dispatcher}(),Store=function(){function Store(a){if("object"!=typeof a)throw"Stores should be defined by passing the definition to the constructor";if(this.listener=new DeLorean.EventEmitter,this.store=a,this.bindActions(),"function"==typeof a.initialize){var b=c(arguments,1);a.initialize.apply(this.store,b)}}return Store.prototype.bindActions=function(){var c;this.store.emit=this.listener.emit.bind(this.listener),this.store.listenChanges=this.listenChanges.bind(this);for(var d in this.store.actions)if(a(this.store.actions,d)){if(c=this.store.actions[d],"function"!=typeof this.store[c])throw"Callback should be a method!";this.listener.on(b(d),this.store[c].bind(this.store))}},Store.prototype.dispatchAction=function(a,c){this.listener.emit(b(a),c)},Store.prototype.onChange=function(a){this.listener.on("change",a)},Store.prototype.listenChanges=function(a){var b,c=this;return Object.observe?(b=Array.isArray(a)?Array.observe:Object.observe,void b(a,function(){c.listener.emit("change")})):void console.error("Store#listenChanges method uses Object.observe, you should fire changes manually.")},Store}(),DeLorean.Flux={createStore:function(a){return function(){return new Store(a)}},createDispatcher:function(b){var c,d,e;"function"==typeof b.getStores&&(c=b.getStores()),d=new Dispatcher(c||{});for(var f in b)a(b,f)&&"getStores"!==f&&(e=b[f],d.registerAction(f,e.bind(d)));return d},define:function(a,b){DeLorean[a]=b}},DeLorean.Dispatcher=Dispatcher,DeLorean.Store=Store,DeLorean.Flux.mixins={storeListener:{componentDidMount:function(){var b,c,d=this;c=function(a){return function(){var b;d.storeDidChange&&d.storeDidChange(e),"function"==typeof a.store.getState&&(b=a.store.getState(),d.state.stores[e]=b,d.forceUpdate())}};for(var e in this.stores)a(this.stores,e)&&(b=this.stores[e],b.onChange(c(b)))},getInitialState:function(){var b,c=this;this.dispatcher=d(this),this.storesDidChange&&this.dispatcher.on("change:all",function(){c.storesDidChange()}),this.stores=this.dispatcher.stores,b={stores:{}};for(var e in this.stores)a(this.stores,e)&&this.stores[e]&&this.stores[e].store&&this.stores[e].store.getState&&(b.stores[e]=this.stores[e].store.getState());return b}}},"undefined"!=typeof module&&"undefined"!=typeof module.exports?(DeLorean.Flux.define("EventEmitter",require("events").EventEmitter),DeLorean.Flux.define("Promise",require("es6-promise").Promise),module.exports=DeLorean):"function"==typeof define&&define.amd?define([],function(){return DeLorean}):window.DeLorean=DeLorean}({}),function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d=a("./promise/promise").Promise,e=a("./promise/polyfill").polyfill;c.Promise=d,c.polyfill=e},{"./promise/polyfill":5,"./promise/promise":6}],2:[function(a,b,c){"use strict";function d(a){var b=this;if(!e(a))throw new TypeError("You must pass an array to all.");return new b(function(b,c){function d(a){return function(b){e(a,b)}}function e(a,c){h[a]=c,0===--i&&b(h)}var g,h=[],i=a.length;0===i&&b([]);for(var j=0;j<a.length;j++)g=a[j],g&&f(g.then)?g.then(d(j),c):e(j,g)})}var e=a("./utils").isArray,f=a("./utils").isFunction;c.all=d},{"./utils":10}],3:[function(a,b,c){(function(a,b){"use strict";function d(){return function(){a.nextTick(g)}}function e(){var a=0,b=new k(g),c=document.createTextNode("");return b.observe(c,{characterData:!0}),function(){c.data=a=++a%2}}function f(){return function(){l.setTimeout(g,1)}}function g(){for(var a=0;a<m.length;a++){var b=m[a],c=b[0],d=b[1];c(d)}m=[]}function h(a,b){var c=m.push([a,b]);1===c&&i()}var i,j="undefined"!=typeof window?window:{},k=j.MutationObserver||j.WebKitMutationObserver,l="undefined"!=typeof b?b:void 0===this?window:this,m=[];i="undefined"!=typeof a&&"[object process]"==={}.toString.call(a)?d():k?e():f(),c.asap=h}).call(this,a("JkpR2F"),"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{JkpR2F:12}],4:[function(a,b,c){"use strict";function d(a,b){return 2!==arguments.length?e[a]:void(e[a]=b)}var e={instrument:!1};c.config=e,c.configure=d},{}],5:[function(a,b,c){(function(b){"use strict";function d(){var a;a="undefined"!=typeof b?b:"undefined"!=typeof window&&window.document?window:self;var c="Promise"in a&&"resolve"in a.Promise&&"reject"in a.Promise&&"all"in a.Promise&&"race"in a.Promise&&function(){var b;return new a.Promise(function(a){b=a}),f(b)}();c||(a.Promise=e)}var e=a("./promise").Promise,f=a("./utils").isFunction;c.polyfill=d}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./promise":6,"./utils":10}],6:[function(a,b,c){"use strict";function d(a){if(!q(a))throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");if(!(this instanceof d))throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this._subscribers=[],e(a,this)}function e(a,b){function c(a){j(b,a)}function d(a){l(b,a)}try{a(c,d)}catch(e){d(e)}}function f(a,b,c,d){var e,f,g,h,k=q(c);if(k)try{e=c(d),g=!0}catch(m){h=!0,f=m}else e=d,g=!0;i(b,e)||(k&&g?j(b,e):h?l(b,f):a===y?j(b,e):a===z&&l(b,e))}function g(a,b,c,d){var e=a._subscribers,f=e.length;e[f]=b,e[f+y]=c,e[f+z]=d}function h(a,b){for(var c,d,e=a._subscribers,g=a._detail,h=0;h<e.length;h+=3)c=e[h],d=e[h+b],f(b,c,d,g);a._subscribers=null}function i(a,b){var c,d=null;try{if(a===b)throw new TypeError("A promises callback cannot return that same promise.");if(p(b)&&(d=b.then,q(d)))return d.call(b,function(d){return c?!0:(c=!0,void(b!==d?j(a,d):k(a,d)))},function(b){return c?!0:(c=!0,void l(a,b))}),!0}catch(e){return c?!0:(l(a,e),!0)}return!1}function j(a,b){a===b?k(a,b):i(a,b)||k(a,b)}function k(a,b){a._state===w&&(a._state=x,a._detail=b,o.async(m,a))}function l(a,b){a._state===w&&(a._state=x,a._detail=b,o.async(n,a))}function m(a){h(a,a._state=y)}function n(a){h(a,a._state=z)}var o=a("./config").config,p=(a("./config").configure,a("./utils").objectOrFunction),q=a("./utils").isFunction,r=(a("./utils").now,a("./all").all),s=a("./race").race,t=a("./resolve").resolve,u=a("./reject").reject,v=a("./asap").asap;o.async=v;var w=void 0,x=0,y=1,z=2;d.prototype={constructor:d,_state:void 0,_detail:void 0,_subscribers:void 0,then:function(a,b){var c=this,d=new this.constructor(function(){});if(this._state){var e=arguments;o.async(function(){f(c._state,d,e[c._state-1],c._detail)})}else g(this,d,a,b);return d},"catch":function(a){return this.then(null,a)}},d.all=r,d.race=s,d.resolve=t,d.reject=u,c.Promise=d},{"./all":2,"./asap":3,"./config":4,"./race":7,"./reject":8,"./resolve":9,"./utils":10}],7:[function(a,b,c){"use strict";function d(a){var b=this;if(!e(a))throw new TypeError("You must pass an array to race.");return new b(function(b,c){for(var d,e=0;e<a.length;e++)d=a[e],d&&"function"==typeof d.then?d.then(b,c):b(d)})}var e=a("./utils").isArray;c.race=d},{"./utils":10}],8:[function(a,b,c){"use strict";function d(a){var b=this;return new b(function(b,c){c(a)})}c.reject=d},{}],9:[function(a,b,c){"use strict";function d(a){if(a&&"object"==typeof a&&a.constructor===this)return a;var b=this;return new b(function(b){b(a)})}c.resolve=d},{}],10:[function(a,b,c){"use strict";function d(a){return e(a)||"object"==typeof a&&null!==a}function e(a){return"function"==typeof a}function f(a){return"[object Array]"===Object.prototype.toString.call(a)}var g=Date.now||function(){return(new Date).getTime()};c.objectOrFunction=d,c.isFunction=e,c.isArray=f,c.now=g},{}],11:[function(a,b){function c(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function d(a){return"function"==typeof a}function e(a){return"number"==typeof a}function f(a){return"object"==typeof a&&null!==a}function g(a){return void 0===a}b.exports=c,c.EventEmitter=c,c.prototype._events=void 0,c.prototype._maxListeners=void 0,c.defaultMaxListeners=10,c.prototype.setMaxListeners=function(a){if(!e(a)||0>a||isNaN(a))throw TypeError("n must be a positive number");return this._maxListeners=a,this},c.prototype.emit=function(a){var b,c,e,h,i,j;if(this._events||(this._events={}),"error"===a&&(!this._events.error||f(this._events.error)&&!this._events.error.length))throw b=arguments[1],b instanceof Error?b:TypeError('Uncaught, unspecified "error" event.');if(c=this._events[a],g(c))return!1;if(d(c))switch(arguments.length){case 1:c.call(this);break;case 2:c.call(this,arguments[1]);break;case 3:c.call(this,arguments[1],arguments[2]);break;default:for(e=arguments.length,h=new Array(e-1),i=1;e>i;i++)h[i-1]=arguments[i];c.apply(this,h)}else if(f(c)){for(e=arguments.length,h=new Array(e-1),i=1;e>i;i++)h[i-1]=arguments[i];for(j=c.slice(),e=j.length,i=0;e>i;i++)j[i].apply(this,h)}return!0},c.prototype.addListener=function(a,b){var e;if(!d(b))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,d(b.listener)?b.listener:b),this._events[a]?f(this._events[a])?this._events[a].push(b):this._events[a]=[this._events[a],b]:this._events[a]=b,f(this._events[a])&&!this._events[a].warned){var e;e=g(this._maxListeners)?c.defaultMaxListeners:this._maxListeners,e&&e>0&&this._events[a].length>e&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),"function"==typeof console.trace&&console.trace())}return this},c.prototype.on=c.prototype.addListener,c.prototype.once=function(a,b){function c(){this.removeListener(a,c),e||(e=!0,b.apply(this,arguments))}if(!d(b))throw TypeError("listener must be a function");var e=!1;return c.listener=b,this.on(a,c),this},c.prototype.removeListener=function(a,b){var c,e,g,h;if(!d(b))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(c=this._events[a],g=c.length,e=-1,c===b||d(c.listener)&&c.listener===b)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,b);else if(f(c)){for(h=g;h-->0;)if(c[h]===b||c[h].listener&&c[h].listener===b){e=h;break}if(0>e)return this;1===c.length?(c.length=0,delete this._events[a]):c.splice(e,1),this._events.removeListener&&this.emit("removeListener",a,b)}return this},c.prototype.removeAllListeners=function(a){var b,c;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[a]&&delete this._events[a],this;if(0===arguments.length){for(b in this._events)"removeListener"!==b&&this.removeAllListeners(b);return this.removeAllListeners("removeListener"),this._events={},this}if(c=this._events[a],d(c))this.removeListener(a,c);else for(;c.length;)this.removeListener(a,c[c.length-1]);return delete this._events[a],this},c.prototype.listeners=function(a){var b;return b=this._events&&this._events[a]?d(this._events[a])?[this._events[a]]:this._events[a].slice():[]},c.listenerCount=function(a,b){var c;return c=a._events&&a._events[b]?d(a._events[b])?1:a._events[b].length:0}},{}],12:[function(a,b){function c(){}var d=b.exports={};d.nextTick=function(){var a="undefined"!=typeof window&&window.setImmediate,b="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(a)return function(a){return window.setImmediate(a)};if(b){var c=[];return window.addEventListener("message",function(a){var b=a.source;if((b===window||null===b)&&"process-tick"===a.data&&(a.stopPropagation(),c.length>0)){var d=c.shift();d()}},!0),function(a){c.push(a),window.postMessage("process-tick","*")}}return function(a){setTimeout(a,0)}}(),d.title="browser",d.browser=!0,d.env={},d.argv=[],d.on=c,d.addListener=c,d.once=c,d.off=c,d.removeListener=c,d.removeAllListeners=c,d.emit=c,d.binding=function(){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(){throw new Error("process.chdir is not supported")}},{}],13:[function(a){DeLorean.Flux.define("EventEmitter",a("events").EventEmitter),DeLorean.Flux.define("Promise",a("es6-promise").Promise)},{"es6-promise":1,events:11}]},{},[13]); | ||
!function(DeLorean){"use strict";function a(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function b(a){return"action:"+a}function c(a,b){return Array.prototype.slice.call(a,b)}function d(a){return a.props.dispatcher?a.props.dispatcher:d(a._owner)}var Dispatcher,Store;Dispatcher=function(){function Dispatcher(a){this.listener=new DeLorean.EventEmitter,this.stores=a}return Dispatcher.prototype.dispatch=function(a,b){var c,d,e=this;c=function(){var a,b=[];for(var c in e.stores){if(a=e.stores[c],!a instanceof Store)throw"Given store is not a store instance";b.push(a)}return b}(),d=this.waitFor(c);for(var f in e.stores)e.stores[f].dispatchAction(a,b);return d},Dispatcher.prototype.waitFor=function(a){var b,c=this;return b=function(){var b,c,d=[];b=function(a){return new DeLorean.Promise(function(b){a.listener.once("change",b)})};for(var e in a)c=b(a[e]),d.push(c);return d}(),DeLorean.Promise.all(b).then(function(){c.listener.emit("change:all")})},Dispatcher.prototype.registerAction=function(a,b){if("function"!=typeof b)throw"Action callback should be a function.";this[a]=b.bind(this.stores)},Dispatcher.prototype.on=function(){return this.listener.on.apply(this.listener,arguments)},Dispatcher.prototype.off=function(){return this.listener.removeListener.apply(this.listener,arguments)},Dispatcher}(),Store=function(){function Store(a){if("object"!=typeof a)throw"Stores should be defined by passing the definition to the constructor";if(this.listener=new DeLorean.EventEmitter,this.store=a,this.bindActions(),"function"==typeof a.initialize){var b=c(arguments,1);a.initialize.apply(this.store,b)}}return Store.prototype.bindActions=function(){var c;this.store.emit=this.listener.emit.bind(this.listener),this.store.listenChanges=this.listenChanges.bind(this);for(var d in this.store.actions)if(a(this.store.actions,d)){if(c=this.store.actions[d],"function"!=typeof this.store[c])throw"Callback should be a method!";this.listener.on(b(d),this.store[c].bind(this.store))}},Store.prototype.dispatchAction=function(a,c){this.listener.emit(b(a),c)},Store.prototype.onChange=function(a){this.listener.on("change",a)},Store.prototype.listenChanges=function(a){var b,c=this;return Object.observe?(b=Array.isArray(a)?Array.observe:Object.observe,void b(a,function(){c.listener.emit("change")})):void console.error("Store#listenChanges method uses Object.observe, you should fire changes manually.")},Store}(),DeLorean.Flux={createStore:function(a){return function(){return new Store(a)}},createDispatcher:function(b){var c,d,e;"function"==typeof b.getStores&&(c=b.getStores()),d=new Dispatcher(c||{});for(var f in b)a(b,f)&&"getStores"!==f&&(e=b[f],d.registerAction(f,e.bind(d)));return d},define:function(a,b){DeLorean[a]=b}},DeLorean.Dispatcher=Dispatcher,DeLorean.Store=Store,DeLorean.Flux.mixins={storeListener:{componentDidMount:function(){var b,c,d=this;c=function(a,b){return function(){var c;d.storeDidChange&&d.storeDidChange(b),"function"==typeof a.store.getState&&(c=a.store.getState(),d.state.stores[b]=c,d.forceUpdate())}};for(var e in this.stores)a(this.stores,e)&&(b=this.stores[e],b.onChange(c(b,e)))},getInitialState:function(){var b,c=this;this.dispatcher=d(this),this.storesDidChange&&this.dispatcher.on("change:all",function(){c.storesDidChange()}),this.stores=this.dispatcher.stores,b={stores:{}};for(var e in this.stores)a(this.stores,e)&&this.stores[e]&&this.stores[e].store&&this.stores[e].store.getState&&(b.stores[e]=this.stores[e].store.getState());return b}}},"undefined"!=typeof module&&"undefined"!=typeof module.exports?(DeLorean.Flux.define("EventEmitter",require("events").EventEmitter),DeLorean.Flux.define("Promise",require("es6-promise").Promise),module.exports=DeLorean):"function"==typeof define&&define.amd?define([],function(){return DeLorean}):window.DeLorean=DeLorean}({}),function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d=a("./promise/promise").Promise,e=a("./promise/polyfill").polyfill;c.Promise=d,c.polyfill=e},{"./promise/polyfill":5,"./promise/promise":6}],2:[function(a,b,c){"use strict";function d(a){var b=this;if(!e(a))throw new TypeError("You must pass an array to all.");return new b(function(b,c){function d(a){return function(b){e(a,b)}}function e(a,c){h[a]=c,0===--i&&b(h)}var g,h=[],i=a.length;0===i&&b([]);for(var j=0;j<a.length;j++)g=a[j],g&&f(g.then)?g.then(d(j),c):e(j,g)})}var e=a("./utils").isArray,f=a("./utils").isFunction;c.all=d},{"./utils":10}],3:[function(a,b,c){(function(a,b){"use strict";function d(){return function(){a.nextTick(g)}}function e(){var a=0,b=new k(g),c=document.createTextNode("");return b.observe(c,{characterData:!0}),function(){c.data=a=++a%2}}function f(){return function(){l.setTimeout(g,1)}}function g(){for(var a=0;a<m.length;a++){var b=m[a],c=b[0],d=b[1];c(d)}m=[]}function h(a,b){var c=m.push([a,b]);1===c&&i()}var i,j="undefined"!=typeof window?window:{},k=j.MutationObserver||j.WebKitMutationObserver,l="undefined"!=typeof b?b:void 0===this?window:this,m=[];i="undefined"!=typeof a&&"[object process]"==={}.toString.call(a)?d():k?e():f(),c.asap=h}).call(this,a("JkpR2F"),"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{JkpR2F:12}],4:[function(a,b,c){"use strict";function d(a,b){return 2!==arguments.length?e[a]:void(e[a]=b)}var e={instrument:!1};c.config=e,c.configure=d},{}],5:[function(a,b,c){(function(b){"use strict";function d(){var a;a="undefined"!=typeof b?b:"undefined"!=typeof window&&window.document?window:self;var c="Promise"in a&&"resolve"in a.Promise&&"reject"in a.Promise&&"all"in a.Promise&&"race"in a.Promise&&function(){var b;return new a.Promise(function(a){b=a}),f(b)}();c||(a.Promise=e)}var e=a("./promise").Promise,f=a("./utils").isFunction;c.polyfill=d}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./promise":6,"./utils":10}],6:[function(a,b,c){"use strict";function d(a){if(!q(a))throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");if(!(this instanceof d))throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this._subscribers=[],e(a,this)}function e(a,b){function c(a){j(b,a)}function d(a){l(b,a)}try{a(c,d)}catch(e){d(e)}}function f(a,b,c,d){var e,f,g,h,k=q(c);if(k)try{e=c(d),g=!0}catch(m){h=!0,f=m}else e=d,g=!0;i(b,e)||(k&&g?j(b,e):h?l(b,f):a===y?j(b,e):a===z&&l(b,e))}function g(a,b,c,d){var e=a._subscribers,f=e.length;e[f]=b,e[f+y]=c,e[f+z]=d}function h(a,b){for(var c,d,e=a._subscribers,g=a._detail,h=0;h<e.length;h+=3)c=e[h],d=e[h+b],f(b,c,d,g);a._subscribers=null}function i(a,b){var c,d=null;try{if(a===b)throw new TypeError("A promises callback cannot return that same promise.");if(p(b)&&(d=b.then,q(d)))return d.call(b,function(d){return c?!0:(c=!0,void(b!==d?j(a,d):k(a,d)))},function(b){return c?!0:(c=!0,void l(a,b))}),!0}catch(e){return c?!0:(l(a,e),!0)}return!1}function j(a,b){a===b?k(a,b):i(a,b)||k(a,b)}function k(a,b){a._state===w&&(a._state=x,a._detail=b,o.async(m,a))}function l(a,b){a._state===w&&(a._state=x,a._detail=b,o.async(n,a))}function m(a){h(a,a._state=y)}function n(a){h(a,a._state=z)}var o=a("./config").config,p=(a("./config").configure,a("./utils").objectOrFunction),q=a("./utils").isFunction,r=(a("./utils").now,a("./all").all),s=a("./race").race,t=a("./resolve").resolve,u=a("./reject").reject,v=a("./asap").asap;o.async=v;var w=void 0,x=0,y=1,z=2;d.prototype={constructor:d,_state:void 0,_detail:void 0,_subscribers:void 0,then:function(a,b){var c=this,d=new this.constructor(function(){});if(this._state){var e=arguments;o.async(function(){f(c._state,d,e[c._state-1],c._detail)})}else g(this,d,a,b);return d},"catch":function(a){return this.then(null,a)}},d.all=r,d.race=s,d.resolve=t,d.reject=u,c.Promise=d},{"./all":2,"./asap":3,"./config":4,"./race":7,"./reject":8,"./resolve":9,"./utils":10}],7:[function(a,b,c){"use strict";function d(a){var b=this;if(!e(a))throw new TypeError("You must pass an array to race.");return new b(function(b,c){for(var d,e=0;e<a.length;e++)d=a[e],d&&"function"==typeof d.then?d.then(b,c):b(d)})}var e=a("./utils").isArray;c.race=d},{"./utils":10}],8:[function(a,b,c){"use strict";function d(a){var b=this;return new b(function(b,c){c(a)})}c.reject=d},{}],9:[function(a,b,c){"use strict";function d(a){if(a&&"object"==typeof a&&a.constructor===this)return a;var b=this;return new b(function(b){b(a)})}c.resolve=d},{}],10:[function(a,b,c){"use strict";function d(a){return e(a)||"object"==typeof a&&null!==a}function e(a){return"function"==typeof a}function f(a){return"[object Array]"===Object.prototype.toString.call(a)}var g=Date.now||function(){return(new Date).getTime()};c.objectOrFunction=d,c.isFunction=e,c.isArray=f,c.now=g},{}],11:[function(a,b){function c(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function d(a){return"function"==typeof a}function e(a){return"number"==typeof a}function f(a){return"object"==typeof a&&null!==a}function g(a){return void 0===a}b.exports=c,c.EventEmitter=c,c.prototype._events=void 0,c.prototype._maxListeners=void 0,c.defaultMaxListeners=10,c.prototype.setMaxListeners=function(a){if(!e(a)||0>a||isNaN(a))throw TypeError("n must be a positive number");return this._maxListeners=a,this},c.prototype.emit=function(a){var b,c,e,h,i,j;if(this._events||(this._events={}),"error"===a&&(!this._events.error||f(this._events.error)&&!this._events.error.length))throw b=arguments[1],b instanceof Error?b:TypeError('Uncaught, unspecified "error" event.');if(c=this._events[a],g(c))return!1;if(d(c))switch(arguments.length){case 1:c.call(this);break;case 2:c.call(this,arguments[1]);break;case 3:c.call(this,arguments[1],arguments[2]);break;default:for(e=arguments.length,h=new Array(e-1),i=1;e>i;i++)h[i-1]=arguments[i];c.apply(this,h)}else if(f(c)){for(e=arguments.length,h=new Array(e-1),i=1;e>i;i++)h[i-1]=arguments[i];for(j=c.slice(),e=j.length,i=0;e>i;i++)j[i].apply(this,h)}return!0},c.prototype.addListener=function(a,b){var e;if(!d(b))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,d(b.listener)?b.listener:b),this._events[a]?f(this._events[a])?this._events[a].push(b):this._events[a]=[this._events[a],b]:this._events[a]=b,f(this._events[a])&&!this._events[a].warned){var e;e=g(this._maxListeners)?c.defaultMaxListeners:this._maxListeners,e&&e>0&&this._events[a].length>e&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),"function"==typeof console.trace&&console.trace())}return this},c.prototype.on=c.prototype.addListener,c.prototype.once=function(a,b){function c(){this.removeListener(a,c),e||(e=!0,b.apply(this,arguments))}if(!d(b))throw TypeError("listener must be a function");var e=!1;return c.listener=b,this.on(a,c),this},c.prototype.removeListener=function(a,b){var c,e,g,h;if(!d(b))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(c=this._events[a],g=c.length,e=-1,c===b||d(c.listener)&&c.listener===b)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,b);else if(f(c)){for(h=g;h-->0;)if(c[h]===b||c[h].listener&&c[h].listener===b){e=h;break}if(0>e)return this;1===c.length?(c.length=0,delete this._events[a]):c.splice(e,1),this._events.removeListener&&this.emit("removeListener",a,b)}return this},c.prototype.removeAllListeners=function(a){var b,c;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[a]&&delete this._events[a],this;if(0===arguments.length){for(b in this._events)"removeListener"!==b&&this.removeAllListeners(b);return this.removeAllListeners("removeListener"),this._events={},this}if(c=this._events[a],d(c))this.removeListener(a,c);else for(;c.length;)this.removeListener(a,c[c.length-1]);return delete this._events[a],this},c.prototype.listeners=function(a){var b;return b=this._events&&this._events[a]?d(this._events[a])?[this._events[a]]:this._events[a].slice():[]},c.listenerCount=function(a,b){var c;return c=a._events&&a._events[b]?d(a._events[b])?1:a._events[b].length:0}},{}],12:[function(a,b){function c(){}var d=b.exports={};d.nextTick=function(){var a="undefined"!=typeof window&&window.setImmediate,b="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(a)return function(a){return window.setImmediate(a)};if(b){var c=[];return window.addEventListener("message",function(a){var b=a.source;if((b===window||null===b)&&"process-tick"===a.data&&(a.stopPropagation(),c.length>0)){var d=c.shift();d()}},!0),function(a){c.push(a),window.postMessage("process-tick","*")}}return function(a){setTimeout(a,0)}}(),d.title="browser",d.browser=!0,d.env={},d.argv=[],d.on=c,d.addListener=c,d.once=c,d.off=c,d.removeListener=c,d.removeAllListeners=c,d.emit=c,d.binding=function(){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(){throw new Error("process.chdir is not supported")}},{}],13:[function(a){DeLorean.Flux.define("EventEmitter",a("events").EventEmitter),DeLorean.Flux.define("Promise",a("es6-promise").Promise)},{"es6-promise":1,events:11}]},{},[13]); | ||
//# sourceMappingURL=delorean.min.js.map |
@@ -17,6 +17,6 @@ module.exports = function (grunt) { | ||
jshint: { | ||
all: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'] | ||
all: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js', '!test/vendor/**/*.js'] | ||
}, | ||
jscs: { | ||
src: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'], | ||
src: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js', '!test/vendor/**/*.js'], | ||
options: { | ||
@@ -23,0 +23,0 @@ config: '.jscsrc', |
{ | ||
"name": "delorean.js", | ||
"version": "0.5.0-17", | ||
"version": "0.5.0-18", | ||
"description": "Flux Library", | ||
@@ -5,0 +5,0 @@ "main": "src/delorean.js", |
@@ -7,3 +7,3 @@ ![DeLorean Logo](https://raw.githubusercontent.com/f/delorean/master/docs/asset/delorean-logo.png) | ||
[![NPM version](https://badge.fury.io/js/delorean.js.svg)](http://badge.fury.io/js/delorean.js) | ||
![Coverage](http://progressed.io/bar/85?title=coverage) | ||
![Coverage](http://progressed.io/bar/86?title=coverage) | ||
@@ -10,0 +10,0 @@ DeLorean is a tiny Flux pattern implementation. |
@@ -84,2 +84,19 @@ describe('Flux', function () { | ||
it('dispatcher can listen events', function () { | ||
var spy = jasmine.createSpy('dispatcher listener'); | ||
MyAppDispatcher.on('hello', spy); | ||
MyAppDispatcher.listener.emit('hello'); | ||
expect(spy).toHaveBeenCalled(); | ||
}); | ||
it('dispatcher can listen events', function () { | ||
var spy = jasmine.createSpy('dispatcher listener'); | ||
MyAppDispatcher.on('hello', spy); | ||
MyAppDispatcher.off('hello', spy); | ||
MyAppDispatcher.listener.emit('hello'); | ||
expect(spy).not.toHaveBeenCalled(); | ||
}); | ||
}); |
@@ -24,2 +24,20 @@ describe('React Test', function () { | ||
var MyAppStore2 = DeLorean.Flux.createStore({ | ||
list: [], | ||
actions: { | ||
// Remember the `dispatch('addItem')` | ||
addItem: 'addItemMethod' | ||
}, | ||
addItemMethod: function (data) { | ||
this.list.push('ANOTHER: ' + data.random); | ||
// You need to say your store is changed. | ||
this.emit('change'); | ||
}, | ||
getState: function () { | ||
return {list: this.list}; | ||
} | ||
}); | ||
var myStore2 = new MyAppStore2(); | ||
var MyAppDispatcher = DeLorean.Flux.createDispatcher({ | ||
@@ -32,3 +50,4 @@ addItem: function (data) { | ||
return { | ||
myStore: myStore | ||
myStore: myStore, | ||
myStore2: myStore2 | ||
}; | ||
@@ -57,3 +76,4 @@ } | ||
return React.DOM.div(null, | ||
React.DOM.span(null, "There are ", this.stores.myStore.store.list.length, " items.") | ||
React.DOM.span(null, 'There are ', this.stores.myStore.store.list.length, ' items.'), | ||
React.DOM.span(null, 'There are ', this.stores.myStore2.store.list.length, ' items.') | ||
); | ||
@@ -68,3 +88,3 @@ } | ||
it('should be no item before add', function () { | ||
expect(el.innerText).toBe('There are 0 items.'); | ||
expect(el.innerText).toBe('There are 0 items.There are 0 items.'); | ||
}); | ||
@@ -76,6 +96,7 @@ | ||
ActionCreator.addItem(); | ||
expect(el.innerText).toBe('There are 3 items.'); | ||
expect(el.innerText).toBe('There are 3 items.There are 3 items.'); | ||
expect(storeSpy).toHaveBeenCalledWith('myStore'); | ||
expect(storeSpy).toHaveBeenCalledWith('myStore2'); | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
1586098
37175