{"version":3,"file":"riotx.js","sources":["../node_modules/mout/array/forEach.js","../node_modules/mout/object/hasOwn.js","../node_modules/mout/object/forIn.js","../node_modules/mout/object/forOwn.js","../node_modules/mout/object/keys.js","../node_modules/mout/lang/kindOf.js","../node_modules/mout/lang/isKind.js","../node_modules/mout/lang/isFunction.js","../node_modules/mout/lang/isObject.js","../node_modules/promise-polyfill/src/index.js","../src/index.js"],"sourcesContent":["\n\n /**\n * Array forEach\n */\n function forEach(arr, callback, thisObj) {\n if (arr == null) {\n return;\n }\n var i = -1,\n len = arr.length;\n while (++i < len) {\n // we iterate over sparse items since there is no way to make it\n // work properly on IE 7-8. see #64\n if ( callback.call(thisObj, arr[i], i, arr) === false ) {\n break;\n }\n }\n }\n\n module.exports = forEach;\n\n\n","\n\n /**\n * Safer Object.hasOwnProperty\n */\n function hasOwn(obj, prop){\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n module.exports = hasOwn;\n\n\n","var hasOwn = require('./hasOwn');\n\n var _hasDontEnumBug,\n _dontEnums;\n\n function checkDontEnum(){\n _dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ];\n\n _hasDontEnumBug = true;\n\n for (var key in {'toString': null}) {\n _hasDontEnumBug = false;\n }\n }\n\n /**\n * Similar to Array/forEach but works over object properties and fixes Don't\n * Enum bug on IE.\n * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation\n */\n function forIn(obj, fn, thisObj){\n var key, i = 0;\n // no need to check if argument is a real object that way we can use\n // it for arrays, functions, date, etc.\n\n //post-pone check till needed\n if (_hasDontEnumBug == null) checkDontEnum();\n\n for (key in obj) {\n if (exec(fn, obj, key, thisObj) === false) {\n break;\n }\n }\n\n\n if (_hasDontEnumBug) {\n var ctor = obj.constructor,\n isProto = !!ctor && obj === ctor.prototype;\n\n while (key = _dontEnums[i++]) {\n // For constructor, if it is a prototype object the constructor\n // is always non-enumerable unless defined otherwise (and\n // enumerated above). For non-prototype objects, it will have\n // to be defined on this object, since it cannot be defined on\n // any prototype objects.\n //\n // For other [[DontEnum]] properties, check if the value is\n // different than Object prototype value.\n if (\n (key !== 'constructor' ||\n (!isProto && hasOwn(obj, key))) &&\n obj[key] !== Object.prototype[key]\n ) {\n if (exec(fn, obj, key, thisObj) === false) {\n break;\n }\n }\n }\n }\n }\n\n function exec(fn, obj, key, thisObj){\n return fn.call(thisObj, obj[key], key, obj);\n }\n\n module.exports = forIn;\n\n\n","var hasOwn = require('./hasOwn');\nvar forIn = require('./forIn');\n\n /**\n * Similar to Array/forEach but works over object properties and fixes Don't\n * Enum bug on IE.\n * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation\n */\n function forOwn(obj, fn, thisObj){\n forIn(obj, function(val, key){\n if (hasOwn(obj, key)) {\n return fn.call(thisObj, obj[key], key, obj);\n }\n });\n }\n\n module.exports = forOwn;\n\n\n","var forOwn = require('./forOwn');\n\n /**\n * Get object keys\n */\n var keys = Object.keys || function (obj) {\n var keys = [];\n forOwn(obj, function(val, key){\n keys.push(key);\n });\n return keys;\n };\n\n module.exports = keys;\n\n\n","\n /**\n * Gets the \"kind\" of value. (e.g. \"String\", \"Number\", etc)\n */\n function kindOf(val) {\n return Object.prototype.toString.call(val).slice(8, -1);\n }\n module.exports = kindOf;\n\n","var kindOf = require('./kindOf');\n /**\n * Check if value is from a specific \"kind\".\n */\n function isKind(val, kind){\n return kindOf(val) === kind;\n }\n module.exports = isKind;\n\n","var isKind = require('./isKind');\n /**\n */\n function isFunction(val) {\n return isKind(val, 'Function');\n }\n module.exports = isFunction;\n\n","var isKind = require('./isKind');\n /**\n */\n function isObject(val) {\n return isKind(val, 'Object');\n }\n module.exports = isObject;\n\n","// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = function(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n};\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","/*global VERSION*/\n\nimport forEach from 'mout/array/forEach';\nimport forOwn from 'mout/object/forOwn';\nimport keys from 'mout/object/keys';\nimport isFunction from 'mout/lang/isFunction';\nimport isObject from 'mout/lang/isObject';\nimport Promise from 'promise-polyfill';\nimport riot from 'riot';\n\n\n/**\n * console output\n *\n * @param {String} type level\n * @param {*} args output messages\n */\nconst _output = (type, ...args) => {\n args.unshift('[riotx]');\n try {\n console.log.apply(console, args); // eslint-disable-line\n } catch (e) {\n console.log(args); // eslint-disable-line\n }\n};\n\n/**\n * settings for riotx\n * @type {{debug: boolean, default: string}}\n */\nconst settings = {\n debug: false,\n default: '@',\n changeBindName: 'riotxChange',\n strict: false,\n logger: {\n output: _output,\n }\n};\n\n/**\n * console debug output\n * @param {*} args\n */\nconst debug = (...args) => {\n if (!settings.debug) {\n return;\n }\n args.unshift('DEBUG');\n settings.logger.output.apply(null, args);\n};\n\n/**\n * console error output\n * @param {*} message\n */\nconst error = message => {\n const err = new Error(`[riotx] ${message}`);\n settings.logger.output.apply(null, ['ERROR', err]);\n throw err;\n};\n\n/**\n * @class Store\n */\nclass Store {\n\n /**\n * Creates an instance of Store.\n * @param {Object} _store { name: 'Store Name', state: { default state data }, actions: { functions... } mutations: { functions... }, getters: { functions... }, plugins: { functions... } }\n * @memberof Store\n */\n constructor(_store) {\n /**\n * name of the store.\n * @type {String}\n * @memberof Store\n */\n this.name = _store.name;\n if (!this.name) {\n this.name = settings.default;\n debug(`Default store name. name=${this.name}`);\n }\n\n /**\n * a object that represents full application state.\n * @memberof Store\n * @type {Object}\n */\n this._state = _store.state;\n Object.defineProperty(this, 'state', {\n get: () => {\n if (settings.strict) {\n error('[strict] Direct access get error.');\n }\n return this._state;\n },\n set: state => {\n\n if (settings.strict) {\n error(`[strict] Direct access set error. ${state}`);\n }\n this._state = state;\n }\n });\n\n /**\n * functions to mutate application state.\n * @memberof Store\n * @type {Object}\n */\n this._actions = _store.actions;\n\n /**\n * mutaions.\n * mutaion = a function which mutates the state.\n * all mutation functions take two parameters which are `state` and `obj`.\n * @memberof Store\n * @type {Object}\n */\n this._mutations = _store.mutations;\n\n /**\n * functions to get data from states.\n * @memberof Store\n * @type {Object}\n */\n this._getters = _store.getters;\n\n /**\n * functions to plugins.\n * @memberof Store\n * @type {Array}\n */\n this._plugins = _store.plugins;\n\n riot.observable(this);\n\n // Load plugins.\n forEach(this._plugins, p => {\n if (!isFunction(p)) {\n error('[plugin] The plugin is not a function.');\n }\n p.apply(null, [this]);\n });\n\n }\n\n /**\n * Reset store instance.\n * @memberof Store\n */\n reset() {\n this.name = null;\n this._state = null;\n this._actions = null;\n this._mutations = null;\n this._getters = null;\n this._plugins = null;\n this.off('*');\n }\n\n /**\n * Getter state\n * @param {String} name\n * @param {Object} data\n * @memberof Store\n * @returns {*}\n */\n getter(name, data) {\n if (data && !isObject(data)) {\n error(`[getter]', 'The getter data is not object type. name=${name} data=${data}`);\n }\n const context = {\n state: this._state\n };\n const fn = this._getters[name];\n if (!fn || typeof fn !== 'function') {\n error(`[getter]', 'The getter is not a function. name=${name} data=${data}`);\n }\n debug('[getter]', name, data);\n return fn.apply(null, [context, data]);\n }\n\n /**\n * Commit mutation.\n * only actions are allowed to execute this function.\n * @param {String} name mutation name\n * @param {Object} data\n * @memberof Store\n */\n commit(name, data) {\n if (data && !isObject(data)) {\n error(`[mutation]', 'The mutation data is not object type. name=${name} data=${data}`);\n }\n const context = {\n getter: (name, data) => {\n return this.getter.apply(this, [name, data]);\n },\n state: this._state\n };\n\n const fn = this._mutations[name];\n if (!fn || typeof fn !== 'function') {\n error(`[mutation]', 'The mutation is not a function. name=${name} data=${data}`);\n }\n\n debug('[mutation(before)]', name, this._state, data);\n const triggers = fn.apply(null, [context, data]);\n debug('[mutation(after)]', name, this._state, data);\n\n // Plugins\n this.trigger('riotx:mutations:after', name, triggers, context, data);\n\n forEach(triggers, v => {\n // this.trigger(v, null, this.state, this);\n this.trigger(v, this._state, this);\n });\n }\n\n /**\n * emit action.\n * only ui components are allowed to execute this function.\n * @param {Stting} name action name\n * @param {Object} data parameter's to action\n * @memberof Store\n * @return {Promise}\n */\n action(name, data) {\n if (data && !isObject(data)) {\n error(`[action]', 'The action data is not object type. name=${name} data=${data}`);\n }\n const context = {\n getter: (name, data) => {\n return this.getter.apply(this, [name, data]);\n },\n //state: this._state,\n commit: (name, data) => {\n this.commit(name, data);\n }\n };\n\n const fn = this._actions[name];\n if (!fn || typeof fn !== 'function') {\n error(`[action] The action is not a function. name=${name} data=${data}`);\n }\n\n debug('[action]', name, data);\n return Promise\n .resolve()\n .then(() => fn.apply(null, [context, data]));\n }\n\n /**\n * shorthand for `store.on('event', () => {})`.\n * @param {...*} args\n * @memberof Store\n */\n change(...args) {\n this.on(...args);\n }\n\n}\n\n/**\n * @class RiotX\n */\nclass RiotX {\n\n /**\n * Creates an instance of RiotX.\n * @memberof RiotX\n */\n constructor() {\n this.version = VERSION || '';\n\n /**\n * constructor of RiotX.Store.\n * @type {RiotX.Store}\n */\n this.Store = Store;\n\n /**\n * instances of RiotX.Store.\n * @type {Object}\n */\n this.stores = {};\n\n // add and keep event listener for store changes.\n // through this function the event listeners will be unbinded automatically.\n const riotxChange = function (store, evtName, handler, ...args) {\n this._riotx_change_handlers.push({\n store,\n evtName,\n handler\n });\n args.unshift(handler);\n args.unshift(evtName);\n store.change(...args);\n };\n\n // register a mixin globally.\n riot.mixin({\n // intendedly use `function`.\n // switch the context of `this` from `riotx` to `riot tag instance`.\n init: function () {\n // the context of `this` will be equal to riot tag instant.\n this.on('unmount', () => {\n this.off('*');\n forEach(this._riotx_change_handlers, obj => {\n obj.store.off(obj.evtName, obj.handler);\n });\n delete this.riotx;\n delete this._riotx_change_handlers;\n delete this[settings.changeBindName];\n });\n\n if (settings.debug) {\n this.on('*', eventName => {\n debug('[riot.mixin]', eventName, this);\n });\n }\n\n this._riotx_change_handlers = [];\n\n // let users set the name.\n this[settings.changeBindName] = riotxChange;\n },\n // give each riot instance the ability to access the globally defined singleton RiotX instance.\n riotx: this\n });\n }\n\n /**\n * Add a store instance\n * @param {RiotX.Store} store instance of RiotX.Store\n * @memberof RiotX\n * @returns {RiotX}\n */\n add(store) {\n if (this.stores[store.name]) {\n error(`[store.add] The store instance named \\`${store.name}\\` already exists.`);\n }\n\n this.stores[store.name] = store;\n return this;\n }\n\n /**\n * Get store instance\n * @param {String} name store name\n * @memberof RiotX\n * @returns {RiotX.Store} store instance\n */\n get(name = settings.default) {\n return this.stores[name];\n }\n\n /**\n * Set debug flag\n * @param {boolean} flag\n * @memberof RiotX\n * @returns {RiotX}\n */\n debug(flag) {\n settings.debug = !!flag;\n return this;\n }\n\n /**\n * Set function name to bind store change event.\n * @param {String} name\n * @memberof RiotX\n * @returns {RiotX}\n */\n setChangeBindName(name) {\n settings.changeBindName = name;\n return this;\n }\n\n /**\n * Directly changing the state property from outside will occur an exception.\n * You can change it through “mutations”, or you can get it via “getters”.\n * @param {boolean} flag\n * @memberof RiotX\n * @returns {RiotX}\n */\n strict(flag) {\n settings.strict = !!flag;\n return this;\n }\n\n /**\n *\n *\n * @param {Function} fn @see function _output\n * @returns Riotx\n * @memberof RiotX\n */\n logger(fn) {\n settings.logger.output = fn;\n return this;\n }\n\n /**\n * Reset all store instances at once.\n * @memberof RiotX\n * @returns {RiotX} instance\n */\n reset() {\n forOwn(this.stores || {}, store => {\n store.reset();\n });\n this.stores = {};\n return this;\n }\n\n /**\n * Store's count\n * @memberof RiotX\n * @returns {int} size\n */\n size() {\n return keys(this.stores).length;\n }\n\n}\n\nexport default new RiotX();\n"],"names":["hasOwn","forIn","forOwn","kindOf","isKind","const","this","forEach","isFunction","isObject","keys"],"mappings":"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"}