Skip to content

Instantly share code, notes, and snippets.

@slaskis
Last active March 18, 2016 09:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slaskis/6e046c3a9fa7fa08db27 to your computer and use it in GitHub Desktop.
Save slaskis/6e046c3a9fa7fa08db27 to your computer and use it in GitHub Desktop.
requirebin sketch
var Store = require('socrates')
// create a store
var store = Store({
boot: function(state, action) {
console.log('boot', state, action)
return action
},
// basically what the History middleware does
'@@redux-routes/navigate': function(state, action) { return action},
articles: {
add: function(state, action) {
return action
}
}
})
// subscribe to updates
store.subscribe(function(state) {
console.log('update', state)
})
// dispatch an action
store('boot', { greetings: 'hello' })
store(function(state, fn) {
setTimeout(function() {
fn(null, {type: 'add articles', payload: [{title: 'hello'}]})
}, 200)
})
setTimeout(function(){require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){(function(process){"use strict";module.exports=freeze;var production=process&&process.env&&process.env.NODE_ENV==="production";function isFreezable(object){if(object===null)return false;return Array.isArray(object)||typeof object==="object"}function needsFreezing(object){return isFreezable(object)&&!Object.isFrozen(object)}function recur(object){Object.freeze(object);Object.keys(object).forEach(function(key){var value=object[key];if(needsFreezing(value)){recur(value)}});return object}function freeze(object){if(production)return object;if(needsFreezing(object)){recur(object)}return object}}).call(this,require("_process"))},{_process:46}],2:[function(require,module,exports){var is_error=require("lodash.iserror");var isobj=require("isobj");var keys=Object.keys;var whitelist={type:1,meta:1,error:1,payload:1};module.exports=is_fsa;function is_fsa(value){if(!isobj(value)||!value.type)return false;var props=keys(value);for(var i=0,prop;prop=props[i];i++){if(!whitelist[prop])return false}if(value.error===true&&!is_error(value.payload)){return false}return true}},{isobj:22,"lodash.iserror":23}],3:[function(require,module,exports){var update=require("./update");var tree=require("./tree");var isobj=require("isobj");module.exports=reducer;function reducer(fn){fn=isobj(fn)?tree(fn):fn;return function reduce(state,action){var updates=fn(state,action);return update(state,updates)}}},{"./tree":5,"./update":6,isobj:22}],4:[function(require,module,exports){"use strict";var is_fsa=require("./is-fsa");var freeze=require("./freeze");var sliced=require("sliced");var redux=require("redux");var isArray=Array.isArray;var vo=require("vo");module.exports=resolve;function resolve(store){return function(next){return function(action){var actions=sliced(arguments).map(function(action){return isArray(action)?action.map(function(a){return vo(a,next)}):vo(action,fsa_check,next)});return vo.stack.apply(actions)(freeze(store.getState())).then(function(){return store.getState()})}}}function fsa_check(mixed){if(is_fsa(mixed))return mixed;throw new Error("resolved action ("+stringify(mixed)+") is not the correct format. Please refer to the spec: https://github.com/acdlite/flux-standard-action#actions")}function stringify(mixed){try{return JSON.stringify(mixed)}catch(e){return mixed}}},{"./freeze":1,"./is-fsa":2,redux:30,sliced:35,vo:36}],5:[function(require,module,exports){var combine_reducer=require("@f/combine-reducers");var compose_reducer=require("@f/compose-reducers");var handle_action=require("@f/handle-actions");var xor=require("component-xor");var keys=Object.keys;module.exports=Tree;function Tree(tree){return walk(tree)}function walk(tree,trail){trail=trail||[];var funcs={};var map={};var path;for(var k in tree){if(typeof tree[k]==="function"){path=trail.length?k+" "+trail.join("."):k;funcs[path]=tree[k]}else{map[k]=walk(tree[k],trail.concat(k))}}var fl=keys(funcs).length;var ml=keys(map).length;if(xor(fl,ml)){return fl?handle_action(funcs):combine_reducer(map)}return compose_reducer(handle_action(funcs),combine_reducer(map))}},{"@f/combine-reducers":7,"@f/compose-reducers":17,"@f/handle-actions":19,"component-xor":21}],6:[function(require,module,exports){"use strict";var is_plain_object=require("isobj");var assign=require("object-assign");var freeze=require("./freeze");var sliced=require("sliced");var is_array=Array.isArray;var keys=Object.keys;module.exports=update;function update(original,update){update=sliced(arguments,2).reduce(function(o,n){return resolve(o,n,true)},update);return freeze(resolve(original,update))}function resolve(original,updates,keep_null){return is_plain_object(original)&&is_plain_object(updates)?object(original,updates,keep_null):is_array(original)&&is_array(updates)?array(original,updates):updates===undefined?original:updates}function object(original,updates,keep_null){return keys(updates).reduce(function(obj,key,i){if(!keep_null&&updates[key]===null){delete obj[key]}else{obj[key]=resolve(original[key],updates[key])}return obj},assign({},original))}function array(original,updates){return[].concat(updates)}},{"./freeze":1,isobj:22,"object-assign":24,sliced:35}],7:[function(require,module,exports){var clone=require("@f/clone-shallow");var composeReducers=require("@f/compose-reducers");module.exports=combineReducers["default"]=combineReducers;function combineReducers(reducers,defaultState){defaultState=defaultState||{};return composeReducers.apply(null,Object.keys(reducers).map(function(key){return scopeReducer(reducers[key],key,defaultState)}))}function scopeReducer(reducer,prop,defaultState){return function(state,action){if(state===undefined)state=defaultState;var childState=reducer(state[prop],action);if(childState!==state[prop]){state=clone(state);state[prop]=childState}return state}}},{"@f/clone-shallow":8,"@f/compose-reducers":17}],8:[function(require,module,exports){var cloneObj=require("@f/clone-obj");var cloneArray=require("@f/slice");var isArray=require("@f/is-array");module.exports=cloneShallow;function cloneShallow(a){return isArray()?cloneArray(a):cloneObj(a)}},{"@f/clone-obj":9,"@f/is-array":15,"@f/slice":16}],9:[function(require,module,exports){var forEach=require("@f/foreach");module.exports=cloneObj["default"]=cloneObj;function cloneObj(obj){var newObj={};forEach(function(val,key){newObj[key]=val},obj);return newObj}},{"@f/foreach":10}],10:[function(require,module,exports){var isObject=require("@f/is-object");var isArray=require("@f/is-array");var forEachObj=require("@f/foreach-obj");var forEachArr=require("@f/foreach-array");module.exports=forEach["default"]=forEach;function forEach(fn,a){if(isArray(a))return forEachArr.call(this,fn,a);if(isObject(a))return forEachObj.call(this,fn,a)}},{"@f/foreach-array":11,"@f/foreach-obj":12,"@f/is-array":15,"@f/is-object":13}],11:[function(require,module,exports){module.exports=forEach["default"]=forEach;function forEach(fn,arr){if(!arr)return;for(var i=0,len=arr.length;i<len;++i){fn.call(this,arr[i],i)}}},{}],12:[function(require,module,exports){module.exports=forEach["default"]=forEach;function forEach(fn,obj){if(!obj)return;var keys=Object.keys(obj);for(var i=0,len=keys.length;i<len;++i){var key=keys[i];fn.call(this,obj[key],key)}}},{}],13:[function(require,module,exports){var isFunction=require("@f/is-function");module.exports=isObject;var objString=toString(Object);function isObject(val){return!!val&&(val.constructor===Object||isObjectString(val.constructor))}function isObjectString(val){return!!val&&isFunction(val)&&toString(val)===objString}function toString(val){return Function.prototype.toString.call(val)}},{"@f/is-function":14}],14:[function(require,module,exports){module.exports=isFunction["default"]=isFunction;function isFunction(value){return typeof value==="function"}},{}],15:[function(require,module,exports){module.exports=isArray["default"]=isArray;function isArray(val){return Array.isArray(val)}},{}],16:[function(require,module,exports){module.exports=slice;function slice(array,begin,end){begin=begin||0;end=end||array.length;var arr=new Array(array.length);for(var i=begin;i<end;++i){arr[i-begin]=array[i]}return arr}},{}],17:[function(require,module,exports){var toArray=require("@f/to-array");module.exports=composeReducers["default"]=composeReducers;function composeReducers(){var args=toArray(arguments);var len=args.length;return function(state,action){for(var i=0;i<len;++i){state=args[i](state,action)}return state}}},{"@f/to-array":18}],18:[function(require,module,exports){module.exports=toArray["default"]=toArray;function toArray(arr){var len=arr.length;var idx=-1;var array=new Array(len);while(++idx<len){array[idx]=arr[idx]}return array}},{}],19:[function(require,module,exports){var composeReducers=require("@f/compose-reducers");var isUndefined=require("@f/is-undefined");module.exports=handleActions["default"]=handleActions;function handleActions(map,defaultState){return composeReducers.apply(null,Object.keys(map).map(function(type){return scopeReducer(type,map[type],defaultState)}))}function scopeReducer(type,reducer,defaultState){return function(state,action){return action.type===type?reducer(state,action.payload):isUndefined(state)?defaultState:state}}},{"@f/compose-reducers":17,"@f/is-undefined":20}],20:[function(require,module,exports){module.exports=isUndefined["default"]=isUndefined;function isUndefined(value){return typeof value==="undefined"}},{}],21:[function(require,module,exports){module.exports=xor;function xor(a,b){return a^b}},{}],22:[function(require,module,exports){"use strict";module.exports=function(obj){return Object.prototype.toString.call(obj)==="[object Object]"}},{}],23:[function(require,module,exports){var errorTag="[object Error]";var objectProto=Object.prototype;var objectToString=objectProto.toString;function isError(value){if(!isObjectLike(value)){return false}return objectToString.call(value)==errorTag||typeof value.message=="string"&&typeof value.name=="string"}function isObjectLike(value){return!!value&&typeof value=="object"}module.exports=isError},{}],24:[function(require,module,exports){"use strict";var hasOwnProperty=Object.prototype.hasOwnProperty;var propIsEnumerable=Object.prototype.propertyIsEnumerable;function toObject(val){if(val===null||val===undefined){throw new TypeError("Object.assign cannot be called with null or undefined")}return Object(val)}module.exports=Object.assign||function(target,source){var from;var to=toObject(target);var symbols;for(var s=1;s<arguments.length;s++){from=Object(arguments[s]);for(var key in from){if(hasOwnProperty.call(from,key)){to[key]=from[key]}}if(Object.getOwnPropertySymbols){symbols=Object.getOwnPropertySymbols(from);for(var i=0;i<symbols.length;i++){if(propIsEnumerable.call(from,symbols[i])){to[symbols[i]]=from[symbols[i]]}}}}return to}},{}],25:[function(require,module,exports){"use strict";var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};exports.__esModule=true;exports["default"]=applyMiddleware;var _compose=require("./compose");var _compose2=_interopRequireDefault(_compose);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function applyMiddleware(){for(var _len=arguments.length,middlewares=Array(_len),_key=0;_key<_len;_key++){middlewares[_key]=arguments[_key]}return function(createStore){return function(reducer,initialState,enhancer){var store=createStore(reducer,initialState,enhancer);var _dispatch=store.dispatch;var chain=[];var middlewareAPI={getState:store.getState,dispatch:function dispatch(action){return _dispatch(action)}};chain=middlewares.map(function(middleware){return middleware(middlewareAPI)});_dispatch=_compose2["default"].apply(undefined,chain)(store.dispatch);return _extends({},store,{dispatch:_dispatch})}}}},{"./compose":28}],26:[function(require,module,exports){"use strict";exports.__esModule=true;exports["default"]=bindActionCreators;function bindActionCreator(actionCreator,dispatch){return function(){return dispatch(actionCreator.apply(undefined,arguments))}}function bindActionCreators(actionCreators,dispatch){if(typeof actionCreators==="function"){return bindActionCreator(actionCreators,dispatch)}if(typeof actionCreators!=="object"||actionCreators===null){throw new Error("bindActionCreators expected an object or a function, instead received "+(actionCreators===null?"null":typeof actionCreators)+". "+'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?')}var keys=Object.keys(actionCreators);var boundActionCreators={};for(var i=0;i<keys.length;i++){var key=keys[i];var actionCreator=actionCreators[key];if(typeof actionCreator==="function"){boundActionCreators[key]=bindActionCreator(actionCreator,dispatch)}}return boundActionCreators}},{}],27:[function(require,module,exports){(function(process){"use strict";exports.__esModule=true;exports["default"]=combineReducers;var _createStore=require("./createStore");var _isPlainObject=require("lodash/isPlainObject");var _isPlainObject2=_interopRequireDefault(_isPlainObject);var _warning=require("./utils/warning");var _warning2=_interopRequireDefault(_warning);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function getUndefinedStateErrorMessage(key,action){var actionType=action&&action.type;var actionName=actionType&&'"'+actionType.toString()+'"'||"an action";return'Reducer "'+key+'" returned undefined handling '+actionName+". "+"To ignore an action, you must explicitly return the previous state."}function getUnexpectedStateShapeWarningMessage(inputState,reducers,action){var reducerKeys=Object.keys(reducers);var argumentName=action&&action.type===_createStore.ActionTypes.INIT?"initialState argument passed to createStore":"previous state received by the reducer";if(reducerKeys.length===0){return"Store does not have a valid reducer. Make sure the argument passed "+"to combineReducers is an object whose values are reducers."}if(!(0,_isPlainObject2["default"])(inputState)){return"The "+argumentName+' has unexpected type of "'+{}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1]+'". Expected argument to be an object with the following '+('keys: "'+reducerKeys.join('", "')+'"')}var unexpectedKeys=Object.keys(inputState).filter(function(key){return!reducers.hasOwnProperty(key)});if(unexpectedKeys.length>0){return"Unexpected "+(unexpectedKeys.length>1?"keys":"key")+" "+('"'+unexpectedKeys.join('", "')+'" found in '+argumentName+". ")+"Expected to find one of the known reducer keys instead: "+('"'+reducerKeys.join('", "')+'". Unexpected keys will be ignored.')}}function assertReducerSanity(reducers){Object.keys(reducers).forEach(function(key){var reducer=reducers[key];var initialState=reducer(undefined,{type:_createStore.ActionTypes.INIT});if(typeof initialState==="undefined"){throw new Error('Reducer "'+key+'" returned undefined during initialization. '+"If the state passed to the reducer is undefined, you must "+"explicitly return the initial state. The initial state may "+"not be undefined.")}var type="@@redux/PROBE_UNKNOWN_ACTION_"+Math.random().toString(36).substring(7).split("").join(".");if(typeof reducer(undefined,{type:type})==="undefined"){throw new Error('Reducer "'+key+'" returned undefined when probed with a random type. '+("Don't try to handle "+_createStore.ActionTypes.INIT+' or other actions in "redux/*" ')+"namespace. They are considered private. Instead, you must return the "+"current state for any unknown actions, unless it is undefined, "+"in which case you must return the initial state, regardless of the "+"action type. The initial state may not be undefined.")}})}function combineReducers(reducers){var reducerKeys=Object.keys(reducers);var finalReducers={};for(var i=0;i<reducerKeys.length;i++){var key=reducerKeys[i];if(typeof reducers[key]==="function"){finalReducers[key]=reducers[key]}}var finalReducerKeys=Object.keys(finalReducers);var sanityError;try{assertReducerSanity(finalReducers)}catch(e){sanityError=e}return function combination(){var state=arguments.length<=0||arguments[0]===undefined?{}:arguments[0];var action=arguments[1];if(sanityError){throw sanityError}if(process.env.NODE_ENV!=="production"){var warningMessage=getUnexpectedStateShapeWarningMessage(state,finalReducers,action);if(warningMessage){(0,_warning2["default"])(warningMessage)}}var hasChanged=false;var nextState={};for(var i=0;i<finalReducerKeys.length;i++){var key=finalReducerKeys[i];var reducer=finalReducers[key];var previousStateForKey=state[key];var nextStateForKey=reducer(previousStateForKey,action);if(typeof nextStateForKey==="undefined"){var errorMessage=getUndefinedStateErrorMessage(key,action);throw new Error(errorMessage)}nextState[key]=nextStateForKey;hasChanged=hasChanged||nextStateForKey!==previousStateForKey}return hasChanged?nextState:state}}}).call(this,require("_process"))},{"./createStore":29,"./utils/warning":31,_process:46,"lodash/isPlainObject":34}],28:[function(require,module,exports){"use strict";exports.__esModule=true;exports["default"]=compose;function compose(){for(var _len=arguments.length,funcs=Array(_len),_key=0;_key<_len;_key++){funcs[_key]=arguments[_key]}return function(){if(funcs.length===0){return arguments.length<=0?undefined:arguments[0]}var last=funcs[funcs.length-1];var rest=funcs.slice(0,-1);return rest.reduceRight(function(composed,f){return f(composed)},last.apply(undefined,arguments))}}},{}],29:[function(require,module,exports){"use strict";exports.__esModule=true;exports.ActionTypes=undefined;exports["default"]=createStore;var _isPlainObject=require("lodash/isPlainObject");var _isPlainObject2=_interopRequireDefault(_isPlainObject);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var ActionTypes=exports.ActionTypes={INIT:"@@redux/INIT"};function createStore(reducer,initialState,enhancer){if(typeof initialState==="function"&&typeof enhancer==="undefined"){enhancer=initialState;initialState=undefined}if(typeof enhancer!=="undefined"){if(typeof enhancer!=="function"){throw new Error("Expected the enhancer to be a function.")}return enhancer(createStore)(reducer,initialState)}if(typeof reducer!=="function"){throw new Error("Expected the reducer to be a function.")}var currentReducer=reducer;var currentState=initialState;var currentListeners=[];var nextListeners=currentListeners;var isDispatching=false;function ensureCanMutateNextListeners(){if(nextListeners===currentListeners){nextListeners=currentListeners.slice()}}function getState(){return currentState}function subscribe(listener){if(typeof listener!=="function"){throw new Error("Expected listener to be a function.")}var isSubscribed=true;ensureCanMutateNextListeners();nextListeners.push(listener);return function unsubscribe(){if(!isSubscribed){return}isSubscribed=false;ensureCanMutateNextListeners();var index=nextListeners.indexOf(listener);nextListeners.splice(index,1)}}function dispatch(action){if(!(0,_isPlainObject2["default"])(action)){throw new Error("Actions must be plain objects. "+"Use custom middleware for async actions.")}if(typeof action.type==="undefined"){throw new Error('Actions may not have an undefined "type" property. '+"Have you misspelled a constant?")}if(isDispatching){throw new Error("Reducers may not dispatch actions.")}try{isDispatching=true;currentState=currentReducer(currentState,action)}finally{isDispatching=false}var listeners=currentListeners=nextListeners;for(var i=0;i<listeners.length;i++){listeners[i]()}return action}function replaceReducer(nextReducer){if(typeof nextReducer!=="function"){throw new Error("Expected the nextReducer to be a function.")}currentReducer=nextReducer;dispatch({type:ActionTypes.INIT})}dispatch({type:ActionTypes.INIT});return{dispatch:dispatch,subscribe:subscribe,getState:getState,replaceReducer:replaceReducer}}},{"lodash/isPlainObject":34}],30:[function(require,module,exports){(function(process){"use strict";exports.__esModule=true;exports.compose=exports.applyMiddleware=exports.bindActionCreators=exports.combineReducers=exports.createStore=undefined;var _createStore=require("./createStore");var _createStore2=_interopRequireDefault(_createStore);var _combineReducers=require("./combineReducers");var _combineReducers2=_interopRequireDefault(_combineReducers);var _bindActionCreators=require("./bindActionCreators");var _bindActionCreators2=_interopRequireDefault(_bindActionCreators);var _applyMiddleware=require("./applyMiddleware");var _applyMiddleware2=_interopRequireDefault(_applyMiddleware);var _compose=require("./compose");var _compose2=_interopRequireDefault(_compose);var _warning=require("./utils/warning");var _warning2=_interopRequireDefault(_warning);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function isCrushed(){}if(process.env.NODE_ENV!=="production"&&typeof isCrushed.name==="string"&&isCrushed.name!=="isCrushed"){(0,_warning2["default"])("You are currently using minified code outside of NODE_ENV === 'production'. "+"This means that you are running a slower development build of Redux. "+"You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify "+"or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) "+"to ensure you have the correct code for your production build.")}exports.createStore=_createStore2["default"];exports.combineReducers=_combineReducers2["default"];exports.bindActionCreators=_bindActionCreators2["default"];exports.applyMiddleware=_applyMiddleware2["default"];exports.compose=_compose2["default"]}).call(this,require("_process"))},{"./applyMiddleware":25,"./bindActionCreators":26,"./combineReducers":27,"./compose":28,"./createStore":29,"./utils/warning":31,_process:46}],31:[function(require,module,exports){"use strict";exports.__esModule=true;exports["default"]=warning;function warning(message){if(typeof console!=="undefined"&&typeof console.error==="function"){console.error(message)}try{throw new Error(message)}catch(e){}}},{}],32:[function(require,module,exports){function isHostObject(value){var result=false;if(value!=null&&typeof value.toString!="function"){try{result=!!(value+"")}catch(e){}}return result}module.exports=isHostObject},{}],33:[function(require,module,exports){function isObjectLike(value){return!!value&&typeof value=="object"}module.exports=isObjectLike},{}],34:[function(require,module,exports){var isHostObject=require("./_isHostObject"),isObjectLike=require("./isObjectLike");var objectTag="[object Object]";var objectProto=Object.prototype;var funcToString=Function.prototype.toString;var objectCtorString=funcToString.call(Object);var objectToString=objectProto.toString;var getPrototypeOf=Object.getPrototypeOf;function isPlainObject(value){if(!isObjectLike(value)||objectToString.call(value)!=objectTag||isHostObject(value)){return false}var proto=getPrototypeOf(value);if(proto===null){return true}var Ctor=proto.constructor;return typeof Ctor=="function"&&Ctor instanceof Ctor&&funcToString.call(Ctor)==objectCtorString}module.exports=isPlainObject},{"./_isHostObject":32,"./isObjectLike":33}],35:[function(require,module,exports){module.exports=function(args,slice,sliceEnd){var ret=[];var len=args.length;if(0===len)return ret;var start=slice<0?Math.max(0,slice+len):slice||0;if(sliceEnd!==undefined){len=sliceEnd<0?sliceEnd+len:sliceEnd}while(len-- >start){ret[len-start]=args[len]}return ret}},{}],36:[function(require,module,exports){(function(global){"use strict";var Promise=global.Promise||require("es6-promise").Promise;var Pipeline=require("./lib/pipeline");var Stack=require("./lib/stack");var sliced=require("sliced");var isArray=Array.isArray;var noop=function(){};var keys=Object.keys;module.exports=Vo;function Vo(){var pipeline=isArray(this)?sliced(this):sliced(arguments);return run(function(context,args,done){Pipeline(pipeline,context,args,function(err,args){if(err)return done.call(context,err);return done.apply(context,[null].concat(args))})})}Vo.stack=function stack(){var stack=isArray(this)?sliced(this):sliced(arguments);return run(function(context,args,done){Stack(stack,context,args,function(err,v){if(err)return done(err);return done.apply(this,[null].concat(v))})})};function run(fn){function vo(){var args=sliced(arguments);var last=args[args.length-1];var context=this;if(typeof last==="function"){var done=args.pop();fn(context,args,done)}else{return new Promise(function(success,failure){fn(context,args,function(err,ret){if(arguments.length>2)ret=sliced(arguments,1);return err?failure(err):success(ret)})})}}vo.vo=true;return vo}Vo.catch=function(fn){function catcher(){return fn}catcher.catch=true;return catcher}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./lib/pipeline":38,"./lib/stack":39,"es6-promise":42,sliced:35}],37:[function(require,module,exports){var compact=require("lodash.compact");var error=require("combine-errors");var wrapped=require("wrapped");var type=require("./type");var keys=Object.keys;module.exports=compile;function compile(mixed){switch(type(mixed)){case"function":return Func(mixed);case"object":return object(mixed);case"catch":return Catcher(mixed);case"array":return array(mixed);case"vo":return Vo(mixed);default:return Identity(mixed)}}function Func(fn){return function func(args,done){wrapped(fn).apply(this,args.concat(next));function next(err){if(err)return done(error(err));return done.apply(null,arguments)}}}function object(o){o=keys(o).reduce(function(o,k){o[k]=compile(o[k]);return o},o);return function obj(args,done){var pending=keys(o).length;var context=this;var errors=[];var out={};if(!pending)return done(null,out);keys(o).map(function(k,i){o[k].call(context,args,function(err,args){if(err){errors[i]=err;out[k]=err}else{out[k]=args}if(!--pending){errors=compact(errors);return errors.length?done(error(errors),out):done(null,out)}})})}}function array(a){a=a.map(compile);return function arr(args,done){var pending=a.length;var context=this;var errors=[];var out=[];if(!pending)return done(null,out);a.map(function(fn,i){fn.call(context,args,function(err,args){if(err){errors[i]=err;out[i]=err}else{out[i]=args}if(!--pending){errors=compact(errors);return errors.length?done(error(errors),out):done(null,out)}})})}}function Vo(v){return function vo(args,done){return v.apply(this,args.concat(function(err,v){if(err)return done(error(err));return done.apply(null,arguments)}))}}function Catcher(fn){return function catcher(err,args,done){return wrapped(fn()).apply(this,[err].concat(args).concat(done))}}function Identity(value){return function identity(args,done){return done(null,value)}}},{"./type":40,"combine-errors":41,"lodash.compact":43,wrapped:44}],38:[function(require,module,exports){var compile=require("./compile");var sliced=require("sliced");module.exports=Pipeline;function Pipeline(pipeline,context,args,done){pipeline=pipeline.map(compile);function next(err){if(err)return error(err,sliced(arguments,1));var fn=pipeline.shift();while(fn&&fn.length!==2)fn=pipeline.shift();if(!fn)return done.call(context,null,sliced(arguments,1));fn.call(context,sliced(arguments,1),next)}function error(err,args){var fn=pipeline.shift();while(fn&&fn.length!==3)fn=pipeline.shift();if(fn)return fn.call(context,err,args,next);else return done.call(context,err)}next.apply(null,[null].concat(args))}},{"./compile":37,sliced:35}],39:[function(require,module,exports){var compile=require("./compile");module.exports=Stack;function Stack(stack,context,args,done){stack=stack.map(compile);function next(err){if(err)return error(err);var fn=stack.shift();while(fn&&fn.length!==2)fn=stack.shift();if(!fn)return done.call(context,null,args);fn.call(context,args,next)}function error(err){var fn=stack.shift();while(fn&&fn.length!==3)fn=stack.shift();if(fn)return fn.call(context,err,args,next);else return done.call(context,err)}next()}},{"./compile":37}],40:[function(require,module,exports){var isArray=Array.isArray;module.exports=type;function type(v){return isArray(v)?"array":v&&v.vo?"vo":v&&v.catch?"catch":v===null?"null":typeof v}},{}],41:[function(require,module,exports){var rerror=/^Error:/;module.exports=error;function error(errors){if(!(this instanceof error))return new error(errors);errors=Array.isArray(errors)?errors:[errors];for(var i=0;i<errors.length;i++)this[i]=errors[i];this.length=errors.length;this.errors=errors}error.prototype=Object.create(Error.prototype);error.prototype.__defineGetter__("stack",function(){return this.errors.map(function(err){return err.stack}).join("\n\n")});error.prototype.__defineGetter__("message",function(){return this.errors.map(message).join(",")});error.prototype.toString=function(){return this.errors.map(message).join(",")};error.prototype.splice=Array.prototype.splice;error.prototype.length=0;function message(err){if(!err.message)return err.message;return err.message.replace(rerror,"")}},{}],42:[function(require,module,exports){(function(process,global){(function(){"use strict";function lib$es6$promise$utils$$objectOrFunction(x){return typeof x==="function"||typeof x==="object"&&x!==null}function lib$es6$promise$utils$$isFunction(x){return typeof x==="function"}function lib$es6$promise$utils$$isMaybeThenable(x){return typeof x==="object"&&x!==null}var lib$es6$promise$utils$$_isArray;if(!Array.isArray){lib$es6$promise$utils$$_isArray=function(x){return Object.prototype.toString.call(x)==="[object Array]"}}else{lib$es6$promise$utils$$_isArray=Array.isArray}var lib$es6$promise$utils$$isArray=lib$es6$promise$utils$$_isArray;var lib$es6$promise$asap$$len=0;var lib$es6$promise$asap$$vertxNext;var lib$es6$promise$asap$$customSchedulerFn;var lib$es6$promise$asap$$asap=function asap(callback,arg){lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len]=callback;lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len+1]=arg;lib$es6$promise$asap$$len+=2;if(lib$es6$promise$asap$$len===2){if(lib$es6$promise$asap$$customSchedulerFn){lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush)}else{lib$es6$promise$asap$$scheduleFlush()}}};function lib$es6$promise$asap$$setScheduler(scheduleFn){lib$es6$promise$asap$$customSchedulerFn=scheduleFn}function lib$es6$promise$asap$$setAsap(asapFn){lib$es6$promise$asap$$asap=asapFn}var lib$es6$promise$asap$$browserWindow=typeof window!=="undefined"?window:undefined;var lib$es6$promise$asap$$browserGlobal=lib$es6$promise$asap$$browserWindow||{};var lib$es6$promise$asap$$BrowserMutationObserver=lib$es6$promise$asap$$browserGlobal.MutationObserver||lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;var lib$es6$promise$asap$$isNode=typeof process!=="undefined"&&{}.toString.call(process)==="[object process]";var lib$es6$promise$asap$$isWorker=typeof Uint8ClampedArray!=="undefined"&&typeof importScripts!=="undefined"&&typeof MessageChannel!=="undefined";function lib$es6$promise$asap$$useNextTick(){return function(){process.nextTick(lib$es6$promise$asap$$flush)}}function lib$es6$promise$asap$$useVertxTimer(){return function(){lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush)}}function lib$es6$promise$asap$$useMutationObserver(){var iterations=0;var observer=new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);var node=document.createTextNode("");observer.observe(node,{characterData:true});return function(){node.data=iterations=++iterations%2}}function lib$es6$promise$asap$$useMessageChannel(){var channel=new MessageChannel;channel.port1.onmessage=lib$es6$promise$asap$$flush;return function(){channel.port2.postMessage(0)}}function lib$es6$promise$asap$$useSetTimeout(){return function(){setTimeout(lib$es6$promise$asap$$flush,1)}}var lib$es6$promise$asap$$queue=new Array(1e3);function lib$es6$promise$asap$$flush(){for(var i=0;i<lib$es6$promise$asap$$len;i+=2){var callback=lib$es6$promise$asap$$queue[i];var arg=lib$es6$promise$asap$$queue[i+1];callback(arg);lib$es6$promise$asap$$queue[i]=undefined;lib$es6$promise$asap$$queue[i+1]=undefined}lib$es6$promise$asap$$len=0}function lib$es6$promise$asap$$attemptVertx(){try{var r=require;var vertx=r("vertx");lib$es6$promise$asap$$vertxNext=vertx.runOnLoop||vertx.runOnContext;return lib$es6$promise$asap$$useVertxTimer()}catch(e){return lib$es6$promise$asap$$useSetTimeout()}}var lib$es6$promise$asap$$scheduleFlush;if(lib$es6$promise$asap$$isNode){lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$useNextTick();
}else if(lib$es6$promise$asap$$BrowserMutationObserver){lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$useMutationObserver()}else if(lib$es6$promise$asap$$isWorker){lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$useMessageChannel()}else if(lib$es6$promise$asap$$browserWindow===undefined&&typeof require==="function"){lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$attemptVertx()}else{lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$useSetTimeout()}function lib$es6$promise$then$$then(onFulfillment,onRejection){var parent=this;var state=parent._state;if(state===lib$es6$promise$$internal$$FULFILLED&&!onFulfillment||state===lib$es6$promise$$internal$$REJECTED&&!onRejection){return this}var child=new this.constructor(lib$es6$promise$$internal$$noop);var result=parent._result;if(state){var callback=arguments[state-1];lib$es6$promise$asap$$asap(function(){lib$es6$promise$$internal$$invokeCallback(state,child,callback,result)})}else{lib$es6$promise$$internal$$subscribe(parent,child,onFulfillment,onRejection)}return child}var lib$es6$promise$then$$default=lib$es6$promise$then$$then;function lib$es6$promise$promise$resolve$$resolve(object){var Constructor=this;if(object&&typeof object==="object"&&object.constructor===Constructor){return object}var promise=new Constructor(lib$es6$promise$$internal$$noop);lib$es6$promise$$internal$$resolve(promise,object);return promise}var lib$es6$promise$promise$resolve$$default=lib$es6$promise$promise$resolve$$resolve;function lib$es6$promise$$internal$$noop(){}var lib$es6$promise$$internal$$PENDING=void 0;var lib$es6$promise$$internal$$FULFILLED=1;var lib$es6$promise$$internal$$REJECTED=2;var lib$es6$promise$$internal$$GET_THEN_ERROR=new lib$es6$promise$$internal$$ErrorObject;function lib$es6$promise$$internal$$selfFulfillment(){return new TypeError("You cannot resolve a promise with itself")}function lib$es6$promise$$internal$$cannotReturnOwn(){return new TypeError("A promises callback cannot return that same promise.")}function lib$es6$promise$$internal$$getThen(promise){try{return promise.then}catch(error){lib$es6$promise$$internal$$GET_THEN_ERROR.error=error;return lib$es6$promise$$internal$$GET_THEN_ERROR}}function lib$es6$promise$$internal$$tryThen(then,value,fulfillmentHandler,rejectionHandler){try{then.call(value,fulfillmentHandler,rejectionHandler)}catch(e){return e}}function lib$es6$promise$$internal$$handleForeignThenable(promise,thenable,then){lib$es6$promise$asap$$asap(function(promise){var sealed=false;var error=lib$es6$promise$$internal$$tryThen(then,thenable,function(value){if(sealed){return}sealed=true;if(thenable!==value){lib$es6$promise$$internal$$resolve(promise,value)}else{lib$es6$promise$$internal$$fulfill(promise,value)}},function(reason){if(sealed){return}sealed=true;lib$es6$promise$$internal$$reject(promise,reason)},"Settle: "+(promise._label||" unknown promise"));if(!sealed&&error){sealed=true;lib$es6$promise$$internal$$reject(promise,error)}},promise)}function lib$es6$promise$$internal$$handleOwnThenable(promise,thenable){if(thenable._state===lib$es6$promise$$internal$$FULFILLED){lib$es6$promise$$internal$$fulfill(promise,thenable._result)}else if(thenable._state===lib$es6$promise$$internal$$REJECTED){lib$es6$promise$$internal$$reject(promise,thenable._result)}else{lib$es6$promise$$internal$$subscribe(thenable,undefined,function(value){lib$es6$promise$$internal$$resolve(promise,value)},function(reason){lib$es6$promise$$internal$$reject(promise,reason)})}}function lib$es6$promise$$internal$$handleMaybeThenable(promise,maybeThenable,then){if(maybeThenable.constructor===promise.constructor&&then===lib$es6$promise$then$$default&&constructor.resolve===lib$es6$promise$promise$resolve$$default){lib$es6$promise$$internal$$handleOwnThenable(promise,maybeThenable)}else{if(then===lib$es6$promise$$internal$$GET_THEN_ERROR){lib$es6$promise$$internal$$reject(promise,lib$es6$promise$$internal$$GET_THEN_ERROR.error)}else if(then===undefined){lib$es6$promise$$internal$$fulfill(promise,maybeThenable)}else if(lib$es6$promise$utils$$isFunction(then)){lib$es6$promise$$internal$$handleForeignThenable(promise,maybeThenable,then)}else{lib$es6$promise$$internal$$fulfill(promise,maybeThenable)}}}function lib$es6$promise$$internal$$resolve(promise,value){if(promise===value){lib$es6$promise$$internal$$reject(promise,lib$es6$promise$$internal$$selfFulfillment())}else if(lib$es6$promise$utils$$objectOrFunction(value)){lib$es6$promise$$internal$$handleMaybeThenable(promise,value,lib$es6$promise$$internal$$getThen(value))}else{lib$es6$promise$$internal$$fulfill(promise,value)}}function lib$es6$promise$$internal$$publishRejection(promise){if(promise._onerror){promise._onerror(promise._result)}lib$es6$promise$$internal$$publish(promise)}function lib$es6$promise$$internal$$fulfill(promise,value){if(promise._state!==lib$es6$promise$$internal$$PENDING){return}promise._result=value;promise._state=lib$es6$promise$$internal$$FULFILLED;if(promise._subscribers.length!==0){lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish,promise)}}function lib$es6$promise$$internal$$reject(promise,reason){if(promise._state!==lib$es6$promise$$internal$$PENDING){return}promise._state=lib$es6$promise$$internal$$REJECTED;promise._result=reason;lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection,promise)}function lib$es6$promise$$internal$$subscribe(parent,child,onFulfillment,onRejection){var subscribers=parent._subscribers;var length=subscribers.length;parent._onerror=null;subscribers[length]=child;subscribers[length+lib$es6$promise$$internal$$FULFILLED]=onFulfillment;subscribers[length+lib$es6$promise$$internal$$REJECTED]=onRejection;if(length===0&&parent._state){lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish,parent)}}function lib$es6$promise$$internal$$publish(promise){var subscribers=promise._subscribers;var settled=promise._state;if(subscribers.length===0){return}var child,callback,detail=promise._result;for(var i=0;i<subscribers.length;i+=3){child=subscribers[i];callback=subscribers[i+settled];if(child){lib$es6$promise$$internal$$invokeCallback(settled,child,callback,detail)}else{callback(detail)}}promise._subscribers.length=0}function lib$es6$promise$$internal$$ErrorObject(){this.error=null}var lib$es6$promise$$internal$$TRY_CATCH_ERROR=new lib$es6$promise$$internal$$ErrorObject;function lib$es6$promise$$internal$$tryCatch(callback,detail){try{return callback(detail)}catch(e){lib$es6$promise$$internal$$TRY_CATCH_ERROR.error=e;return lib$es6$promise$$internal$$TRY_CATCH_ERROR}}function lib$es6$promise$$internal$$invokeCallback(settled,promise,callback,detail){var hasCallback=lib$es6$promise$utils$$isFunction(callback),value,error,succeeded,failed;if(hasCallback){value=lib$es6$promise$$internal$$tryCatch(callback,detail);if(value===lib$es6$promise$$internal$$TRY_CATCH_ERROR){failed=true;error=value.error;value=null}else{succeeded=true}if(promise===value){lib$es6$promise$$internal$$reject(promise,lib$es6$promise$$internal$$cannotReturnOwn());return}}else{value=detail;succeeded=true}if(promise._state!==lib$es6$promise$$internal$$PENDING){}else if(hasCallback&&succeeded){lib$es6$promise$$internal$$resolve(promise,value)}else if(failed){lib$es6$promise$$internal$$reject(promise,error)}else if(settled===lib$es6$promise$$internal$$FULFILLED){lib$es6$promise$$internal$$fulfill(promise,value)}else if(settled===lib$es6$promise$$internal$$REJECTED){lib$es6$promise$$internal$$reject(promise,value)}}function lib$es6$promise$$internal$$initializePromise(promise,resolver){try{resolver(function resolvePromise(value){lib$es6$promise$$internal$$resolve(promise,value)},function rejectPromise(reason){lib$es6$promise$$internal$$reject(promise,reason)})}catch(e){lib$es6$promise$$internal$$reject(promise,e)}}function lib$es6$promise$promise$all$$all(entries){return new lib$es6$promise$enumerator$$default(this,entries).promise}var lib$es6$promise$promise$all$$default=lib$es6$promise$promise$all$$all;function lib$es6$promise$promise$race$$race(entries){var Constructor=this;var promise=new Constructor(lib$es6$promise$$internal$$noop);if(!lib$es6$promise$utils$$isArray(entries)){lib$es6$promise$$internal$$reject(promise,new TypeError("You must pass an array to race."));return promise}var length=entries.length;function onFulfillment(value){lib$es6$promise$$internal$$resolve(promise,value)}function onRejection(reason){lib$es6$promise$$internal$$reject(promise,reason)}for(var i=0;promise._state===lib$es6$promise$$internal$$PENDING&&i<length;i++){lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]),undefined,onFulfillment,onRejection)}return promise}var lib$es6$promise$promise$race$$default=lib$es6$promise$promise$race$$race;function lib$es6$promise$promise$reject$$reject(reason){var Constructor=this;var promise=new Constructor(lib$es6$promise$$internal$$noop);lib$es6$promise$$internal$$reject(promise,reason);return promise}var lib$es6$promise$promise$reject$$default=lib$es6$promise$promise$reject$$reject;var lib$es6$promise$promise$$counter=0;function lib$es6$promise$promise$$needsResolver(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function lib$es6$promise$promise$$needsNew(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}var lib$es6$promise$promise$$default=lib$es6$promise$promise$$Promise;function lib$es6$promise$promise$$Promise(resolver){this._id=lib$es6$promise$promise$$counter++;this._state=undefined;this._result=undefined;this._subscribers=[];if(lib$es6$promise$$internal$$noop!==resolver){typeof resolver!=="function"&&lib$es6$promise$promise$$needsResolver();this instanceof lib$es6$promise$promise$$Promise?lib$es6$promise$$internal$$initializePromise(this,resolver):lib$es6$promise$promise$$needsNew()}}lib$es6$promise$promise$$Promise.all=lib$es6$promise$promise$all$$default;lib$es6$promise$promise$$Promise.race=lib$es6$promise$promise$race$$default;lib$es6$promise$promise$$Promise.resolve=lib$es6$promise$promise$resolve$$default;lib$es6$promise$promise$$Promise.reject=lib$es6$promise$promise$reject$$default;lib$es6$promise$promise$$Promise._setScheduler=lib$es6$promise$asap$$setScheduler;lib$es6$promise$promise$$Promise._setAsap=lib$es6$promise$asap$$setAsap;lib$es6$promise$promise$$Promise._asap=lib$es6$promise$asap$$asap;lib$es6$promise$promise$$Promise.prototype={constructor:lib$es6$promise$promise$$Promise,then:lib$es6$promise$then$$default,"catch":function(onRejection){return this.then(null,onRejection)}};var lib$es6$promise$enumerator$$default=lib$es6$promise$enumerator$$Enumerator;function lib$es6$promise$enumerator$$Enumerator(Constructor,input){this._instanceConstructor=Constructor;this.promise=new Constructor(lib$es6$promise$$internal$$noop);if(Array.isArray(input)){this._input=input;this.length=input.length;this._remaining=input.length;this._result=new Array(this.length);if(this.length===0){lib$es6$promise$$internal$$fulfill(this.promise,this._result)}else{this.length=this.length||0;this._enumerate();if(this._remaining===0){lib$es6$promise$$internal$$fulfill(this.promise,this._result)}}}else{lib$es6$promise$$internal$$reject(this.promise,this._validationError())}}lib$es6$promise$enumerator$$Enumerator.prototype._validationError=function(){return new Error("Array Methods must be provided an Array")};lib$es6$promise$enumerator$$Enumerator.prototype._enumerate=function(){var length=this.length;var input=this._input;for(var i=0;this._state===lib$es6$promise$$internal$$PENDING&&i<length;i++){this._eachEntry(input[i],i)}};lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry=function(entry,i){var c=this._instanceConstructor;var resolve=c.resolve;if(resolve===lib$es6$promise$promise$resolve$$default){var then=lib$es6$promise$$internal$$getThen(entry);if(then===lib$es6$promise$then$$default&&entry._state!==lib$es6$promise$$internal$$PENDING){this._settledAt(entry._state,i,entry._result)}else if(typeof then!=="function"){this._remaining--;this._result[i]=entry}else if(c===lib$es6$promise$promise$$default){var promise=new c(lib$es6$promise$$internal$$noop);lib$es6$promise$$internal$$handleMaybeThenable(promise,entry,then);this._willSettleAt(promise,i)}else{this._willSettleAt(new c(function(resolve){resolve(entry)}),i)}}else{this._willSettleAt(resolve(entry),i)}};lib$es6$promise$enumerator$$Enumerator.prototype._settledAt=function(state,i,value){var promise=this.promise;if(promise._state===lib$es6$promise$$internal$$PENDING){this._remaining--;if(state===lib$es6$promise$$internal$$REJECTED){lib$es6$promise$$internal$$reject(promise,value)}else{this._result[i]=value}}if(this._remaining===0){lib$es6$promise$$internal$$fulfill(promise,this._result)}};lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt=function(promise,i){var enumerator=this;lib$es6$promise$$internal$$subscribe(promise,undefined,function(value){enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED,i,value)},function(reason){enumerator._settledAt(lib$es6$promise$$internal$$REJECTED,i,reason)})};function lib$es6$promise$polyfill$$polyfill(){var local;if(typeof global!=="undefined"){local=global}else if(typeof self!=="undefined"){local=self}else{try{local=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}}var P=local.Promise;if(P&&Object.prototype.toString.call(P.resolve())==="[object Promise]"&&!P.cast){return}local.Promise=lib$es6$promise$promise$$default}var lib$es6$promise$polyfill$$default=lib$es6$promise$polyfill$$polyfill;var lib$es6$promise$umd$$ES6Promise={Promise:lib$es6$promise$promise$$default,polyfill:lib$es6$promise$polyfill$$default};if(typeof define==="function"&&define["amd"]){define(function(){return lib$es6$promise$umd$$ES6Promise})}else if(typeof module!=="undefined"&&module["exports"]){module["exports"]=lib$es6$promise$umd$$ES6Promise}else if(typeof this!=="undefined"){this["ES6Promise"]=lib$es6$promise$umd$$ES6Promise}lib$es6$promise$polyfill$$default()}).call(this)}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{_process:46}],43:[function(require,module,exports){function compact(array){var index=-1,length=array?array.length:0,resIndex=0,result=[];while(++index<length){var value=array[index];if(value){result[resIndex++]=value}}return result}module.exports=compact},{}],44:[function(require,module,exports){var sliced=require("sliced");var noop=function(){};var co=require("co");module.exports=wrapped;function wrapped(fn){function wrap(){var args=sliced(arguments);var last=args[args.length-1];var ctx=this;var done=typeof last=="function"?args.pop():noop;if(!fn){return done.apply(ctx,[null].concat(args))}if(generator(fn)){return co(fn).apply(ctx,args.concat(done))}if(fn.length>args.length){try{return fn.apply(ctx,args.concat(done))}catch(e){return done(e)}}return sync(fn,done).apply(ctx,args)}return wrap}function sync(fn,done){return function(){var ret;try{ret=fn.apply(this,arguments)}catch(err){return done(err)}if(promise(ret)){ret.then(function(value){done(null,value)},done)}else{ret instanceof Error?done(ret):done(null,ret)}}}function generator(value){return value&&value.constructor&&"GeneratorFunction"==value.constructor.name}function promise(value){return value&&"function"==typeof value.then}},{co:45,sliced:35}],45:[function(require,module,exports){var slice=Array.prototype.slice;module.exports=co;function co(fn){var isGenFun=isGeneratorFunction(fn);return function(done){var ctx=this;var gen=fn;if(isGenFun){var args=slice.call(arguments),len=args.length;var hasCallback=len&&"function"==typeof args[len-1];done=hasCallback?args.pop():error;gen=fn.apply(this,args)}else{done=done||error}next();function exit(err,res){setImmediate(function(){done.call(ctx,err,res)})}function next(err,res){var ret;if(arguments.length>2)res=slice.call(arguments,1);if(err){try{ret=gen.throw(err)}catch(e){return exit(e)}}if(!err){try{ret=gen.next(res)}catch(e){return exit(e)}}if(ret.done)return exit(null,ret.value);ret.value=toThunk(ret.value,ctx);if("function"==typeof ret.value){var called=false;try{ret.value.call(ctx,function(){if(called)return;called=true;next.apply(ctx,arguments)})}catch(e){setImmediate(function(){if(called)return;called=true;next(e)})}return}next(new TypeError("You may only yield a function, promise, generator, array, or object, "+'but the following was passed: "'+String(ret.value)+'"'))}}}function toThunk(obj,ctx){if(isGeneratorFunction(obj)){return co(obj.call(ctx))}if(isGenerator(obj)){return co(obj)}if(isPromise(obj)){return promiseToThunk(obj)}if("function"==typeof obj){return obj}if(isObject(obj)||Array.isArray(obj)){return objectToThunk.call(ctx,obj)}return obj}function objectToThunk(obj){var ctx=this;var isArray=Array.isArray(obj);return function(done){var keys=Object.keys(obj);var pending=keys.length;var results=isArray?new Array(pending):new obj.constructor;var finished;if(!pending){setImmediate(function(){done(null,results)});return}if(!isArray){for(var i=0;i<pending;i++){results[keys[i]]=undefined}}for(var i=0;i<keys.length;i++){run(obj[keys[i]],keys[i])}function run(fn,key){if(finished)return;try{fn=toThunk(fn,ctx);if("function"!=typeof fn){results[key]=fn;return--pending||done(null,results)}fn.call(ctx,function(err,res){if(finished)return;if(err){finished=true;return done(err)}results[key]=res;--pending||done(null,results)})}catch(err){finished=true;done(err)}}}}function promiseToThunk(promise){return function(fn){promise.then(function(res){fn(null,res)},fn)}}function isPromise(obj){return obj&&"function"==typeof obj.then}function isGenerator(obj){return obj&&"function"==typeof obj.next&&"function"==typeof obj.throw}function isGeneratorFunction(obj){return obj&&obj.constructor&&"GeneratorFunction"==obj.constructor.name}function isObject(val){return val&&Object==val.constructor}function error(err){if(!err)return;setImmediate(function(){throw err})}},{}],46:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}if(canPost){var queue=[];window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],socrates:[function(require,module,exports){"use strict";var assign=require("object-assign");var reducer=require("./reducer");var resolve=require("./resolve");var freeze=require("./freeze");var sliced=require("sliced");var redux=require("redux");var isArray=Array.isArray;var Middleware=redux.applyMiddleware;var Store=redux.createStore;module.exports=Socrates;function Socrates(middlewares,reduce){if(!isArray(middlewares))reduce=middlewares,middlewares=[];middlewares=[resolve].concat(middlewares);reduce=reduce||identity;var redux=Store(reducer(reduce),{},Middleware.apply(null,middlewares));function store(action){var array_context=isArray(this);if(!arguments.length&&!array_context)return freeze(redux.getState());var actions=array_context?sliced(this):sliced(arguments);actions=wrap_emitter_style(actions);return redux.dispatch.apply(redux,actions)}store.subscribe=function subscribe(fn){return redux.subscribe(function listener(){return fn(freeze(redux.getState()))})};return store}function wrap_emitter_style(actions){if(actions.length<2)return actions;if(typeof actions[0]!=="string")return actions;return[{type:actions[0],payload:assign.apply(null,actions.slice(1))}]}function identity(state,action){return action.payload}},{"./freeze":1,"./reducer":3,"./resolve":4,"object-assign":24,redux:30,sliced:35}]},{},[]);var Store=require("socrates");var store=Store({boot:function(state,action){console.log("boot",state,action);return action},"@@redux-routes/navigate":function(state,action){return action},articles:{add:function(state,action){return action}}});store.subscribe(function(state){console.log("update",state)});store("boot",{greetings:"hello"});store(function(state,fn){setTimeout(function(){fn(null,{type:"add articles",payload:[{title:"hello"}]})},200)})},0);
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"socrates": "1.0.2"
}
}
<!-- contents of this file will be placed inside the <body> -->
<!-- contents of this file will be placed inside the <head> -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment