aboutsummaryrefslogtreecommitdiff
path: root/node_modules/empower-core
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/empower-core')
-rw-r--r--node_modules/empower-core/CHANGELOG.md56
-rw-r--r--node_modules/empower-core/MIT-LICENSE.txt20
-rw-r--r--node_modules/empower-core/build/empower-core.js1092
-rw-r--r--node_modules/empower-core/index.js79
-rw-r--r--node_modules/empower-core/lib/decorate.js66
-rw-r--r--node_modules/empower-core/lib/decorator.js165
-rw-r--r--node_modules/empower-core/lib/default-options.js35
-rw-r--r--node_modules/empower-core/lib/define-properties.js16
-rw-r--r--node_modules/empower-core/package.json82
9 files changed, 1611 insertions, 0 deletions
diff --git a/node_modules/empower-core/CHANGELOG.md b/node_modules/empower-core/CHANGELOG.md
new file mode 100644
index 000000000..e12cc0605
--- /dev/null
+++ b/node_modules/empower-core/CHANGELOG.md
@@ -0,0 +1,56 @@
+### [0.6.1](https://github.com/twada/empower-core/releases/tag/v0.6.1) (2016-06-05)
+
+
+ * remove xtend from dependencies ([3341ef8](https://github.com/twada/empower-core/commit/3341ef8868c41544c95a621e57d4cefa1ad71ee2))
+
+
+## [0.6.0](https://github.com/twada/empower-core/releases/tag/v0.6.0) (2016-05-29)
+
+
+#### Features
+
+ * update core-js to ^2.0.0 ([d152eef5](https://github.com/twada/empower-core/commit/d152eef51be1ba5c909ebe8394e24778ca4cf298))
+
+
+## [0.5.0](https://github.com/twada/empower-core/releases/tag/v0.5.0) (2016-01-21)
+
+
+#### Features
+
+ * [Allow prototype enhancements](https://github.com/twada/empower-core/pull/7) (by [@jamestalmage](https://github.com/jamestalmage))
+ * [Performance improvements](https://github.com/twada/empower-core/pull/8) (by [@jamestalmage](https://github.com/jamestalmage))
+
+
+## [0.4.0](https://github.com/twada/empower-core/releases/tag/v0.4.0) (2016-01-10)
+
+
+#### Features
+
+ * [remove `_capt` and `_expr` from empower-core](https://github.com/twada/empower-core/pull/3)
+
+
+## [0.3.0](https://github.com/twada/empower-core/releases/tag/v0.3.0) (2016-01-06)
+
+
+#### Features
+
+ * [Allow arbitrary data to be provided for a given pattern](https://github.com/twada/empower-core/pull/6) (by [@jamestalmage](https://github.com/jamestalmage))
+
+
+## [0.2.0](https://github.com/twada/empower-core/releases/tag/v0.2.0) (2015-12-13)
+
+
+#### Features
+
+ * [Track non-enhanced assertions](https://github.com/twada/empower-core/pull/2) (by [@jamestalmage](https://github.com/jamestalmage))
+
+
+## [0.1.0](https://github.com/twada/empower-core/releases/tag/v0.1.0) (2015-12-01)
+
+
+#### Features
+
+ * trying to extract core functionalities out ([60286bbf](https://github.com/twada/empower-core/commit/60286bbfae16ab9b6f0ff33a9de13cabd3c969d4))
+ * just attach powerAssertContext, format it later ([319a4e9a](https://github.com/twada/empower-core/commit/319a4e9a1a64ff08fdeed17b243073d35ae6a18f))
+ * add event handlers to options ([12bbf0d4](https://github.com/twada/empower-core/commit/12bbf0d44023340d9b6103b8df679ac2084f9ed2))
+ * `modifyMessageBeforeAssert` option for compatibility ([c1ade361](https://github.com/twada/empower-core/commit/c1ade361ec4d26c9c05a8ee2c05155d0cea2c815))
diff --git a/node_modules/empower-core/MIT-LICENSE.txt b/node_modules/empower-core/MIT-LICENSE.txt
new file mode 100644
index 000000000..b3f58e171
--- /dev/null
+++ b/node_modules/empower-core/MIT-LICENSE.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2013-2016 Takuto Wada, https://github.com/twada/empower-core
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/empower-core/build/empower-core.js b/node_modules/empower-core/build/empower-core.js
new file mode 100644
index 000000000..bdd9431c6
--- /dev/null
+++ b/node_modules/empower-core/build/empower-core.js
@@ -0,0 +1,1092 @@
+/**
+ * Modules in this bundle
+ * @license
+ *
+ * empower-core:
+ * license: MIT (http://opensource.org/licenses/MIT)
+ * author: Takuto Wada <takuto.wada@gmail.com>
+ * contributors: James Talmage
+ * homepage: http://github.com/twada/empower-core
+ * version: 0.6.1
+ *
+ * call-signature:
+ * license: MIT (http://opensource.org/licenses/MIT)
+ * author: James Talmage <james@talmage.io>
+ * maintainers: jamestalmage <james@talmage.io>, twada <takuto.wada@gmail.com>
+ * homepage: https://github.com/jamestalmage/call-signature#readme
+ * version: 0.0.2
+ *
+ * core-js:
+ * license: MIT (http://opensource.org/licenses/MIT)
+ * maintainers: zloirock <zloirock@zloirock.ru>
+ * homepage: https://github.com/zloirock/core-js#readme
+ * version: 2.4.0
+ *
+ * This header is generated by licensify (https://github.com/twada/licensify)
+ */
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.empowerCore = f()}})(function(){var define,module,exports;return (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(_dereq_,module,exports){
+/**
+ * empower-core - Power Assert feature enhancer for assert function/object.
+ *
+ * https://github.com/twada/empower-core
+ *
+ * Copyright (c) 2013-2016 Takuto Wada
+ * Licensed under the MIT license.
+ * https://github.com/twada/empower-core/blob/master/MIT-LICENSE.txt
+ */
+var create = _dereq_('core-js/library/fn/object/create');
+var assign = _dereq_('core-js/library/fn/object/assign');
+var defaultOptions = _dereq_('./lib/default-options');
+var Decorator = _dereq_('./lib/decorator');
+var define = _dereq_('./lib/define-properties');
+var slice = Array.prototype.slice;
+
+/**
+ * Enhance Power Assert feature to assert function/object.
+ * @param assert target assert function or object to enhance
+ * @param options enhancement options
+ * @return enhanced assert function/object
+ */
+function empowerCore (assert, options) {
+ var typeOfAssert = (typeof assert);
+ var enhancedAssert;
+ if ((typeOfAssert !== 'object' && typeOfAssert !== 'function') || assert === null) {
+ throw new TypeError('empower-core argument should be a function or object.');
+ }
+ if (isEmpowered(assert)) {
+ return assert;
+ }
+ switch (typeOfAssert) {
+ case 'function':
+ enhancedAssert = empowerAssertFunction(assert, options);
+ break;
+ case 'object':
+ enhancedAssert = empowerAssertObject(assert, options);
+ break;
+ default:
+ throw new Error('Cannot be here');
+ }
+ define(enhancedAssert, { _empowered: true });
+ return enhancedAssert;
+}
+
+function empowerAssertObject (assertObject, options) {
+ var config = assign(defaultOptions(), options);
+ var target = config.destructive ? assertObject : create(assertObject);
+ var decorator = new Decorator(target, config);
+ return assign(target, decorator.enhancement());
+}
+
+function empowerAssertFunction (assertFunction, options) {
+ var config = assign(defaultOptions(), options);
+ if (config.destructive) {
+ throw new Error('cannot use destructive:true to function.');
+ }
+ var decorator = new Decorator(assertFunction, config);
+ var enhancement = decorator.enhancement();
+ var powerAssert;
+ if (typeof enhancement === 'function') {
+ powerAssert = function powerAssert () {
+ return enhancement.apply(null, slice.apply(arguments));
+ };
+ } else {
+ powerAssert = function powerAssert () {
+ return assertFunction.apply(null, slice.apply(arguments));
+ };
+ }
+ assign(powerAssert, assertFunction);
+ return assign(powerAssert, enhancement);
+}
+
+function isEmpowered (assertObjectOrFunction) {
+ return assertObjectOrFunction._empowered;
+}
+
+empowerCore.defaultOptions = defaultOptions;
+module.exports = empowerCore;
+
+},{"./lib/decorator":3,"./lib/default-options":4,"./lib/define-properties":5,"core-js/library/fn/object/assign":11,"core-js/library/fn/object/create":12}],2:[function(_dereq_,module,exports){
+'use strict';
+
+var some = _dereq_('core-js/library/fn/array/some');
+var map = _dereq_('core-js/library/fn/array/map');
+
+function decorate (callSpec, decorator) {
+ var numArgsToCapture = callSpec.numArgsToCapture;
+
+ return function decoratedAssert () {
+ var context, message, hasMessage = false;
+
+ // see: https://github.com/twada/empower-core/pull/8#issue-127859465
+ // see: https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments
+ var args = new Array(arguments.length);
+ for(var i = 0; i < args.length; ++i) {
+ args[i] = arguments[i];
+ }
+
+ if (numArgsToCapture === (args.length - 1)) {
+ message = args.pop();
+ hasMessage = true;
+ }
+
+ var invocation = {
+ thisObj: this,
+ values: args,
+ message: message,
+ hasMessage: hasMessage
+ };
+
+ if (some(args, isCaptured)) {
+ invocation.values = map(args.slice(0, numArgsToCapture), function (arg) {
+ if (isNotCaptured(arg)) {
+ return arg;
+ }
+ if (!context) {
+ context = {
+ source: arg.source,
+ args: []
+ };
+ }
+ context.args.push({
+ value: arg.powerAssertContext.value,
+ events: arg.powerAssertContext.events
+ });
+ return arg.powerAssertContext.value;
+ });
+
+ return decorator.concreteAssert(callSpec, invocation, context);
+ } else {
+ return decorator.concreteAssert(callSpec, invocation);
+ }
+ };
+}
+
+function isNotCaptured (value) {
+ return !isCaptured(value);
+}
+
+function isCaptured (value) {
+ return (typeof value === 'object') &&
+ (value !== null) &&
+ (typeof value.powerAssertContext !== 'undefined');
+}
+
+module.exports = decorate;
+
+},{"core-js/library/fn/array/map":9,"core-js/library/fn/array/some":10}],3:[function(_dereq_,module,exports){
+'use strict';
+
+var forEach = _dereq_('core-js/library/fn/array/for-each');
+var filter = _dereq_('core-js/library/fn/array/filter');
+var map = _dereq_('core-js/library/fn/array/map');
+var signature = _dereq_('call-signature');
+var decorate = _dereq_('./decorate');
+var keys = _dereq_('core-js/library/fn/object/keys');
+
+
+function Decorator (receiver, config) {
+ this.receiver = receiver;
+ this.config = config;
+ this.onError = config.onError;
+ this.onSuccess = config.onSuccess;
+ this.signatures = map(config.patterns, parse);
+ this.wrapOnlySignatures = map(config.wrapOnlyPatterns, parse);
+}
+
+Decorator.prototype.enhancement = function () {
+ var that = this;
+ var container = this.container();
+ var wrappedMethods = [];
+
+ function attach(matcherSpec, enhanced) {
+ var matcher = matcherSpec.parsed;
+ var methodName = detectMethodName(matcher.callee);
+ if (typeof that.receiver[methodName] !== 'function' || wrappedMethods.indexOf(methodName) !== -1) {
+ return;
+ }
+ var callSpec = {
+ thisObj: that.receiver,
+ func: that.receiver[methodName],
+ numArgsToCapture: numberOfArgumentsToCapture(matcherSpec),
+ matcherSpec: matcherSpec,
+ enhanced: enhanced
+ };
+ container[methodName] = callSpec.enhancedFunc = decorate(callSpec, that);
+ wrappedMethods.push(methodName);
+ }
+
+ forEach(filter(this.signatures, methodCall), function (matcher) {
+ attach(matcher, true);
+ });
+
+ forEach(filter(this.wrapOnlySignatures, methodCall), function (matcher) {
+ attach(matcher, false);
+ });
+
+ return container;
+};
+
+Decorator.prototype.container = function () {
+ var basement = {};
+ if (typeof this.receiver === 'function') {
+ var candidates = filter(this.signatures, functionCall);
+ var enhanced = true;
+ if (candidates.length === 0) {
+ enhanced = false;
+ candidates = filter(this.wrapOnlySignatures, functionCall);
+ }
+ if (candidates.length === 1) {
+ var callSpec = {
+ thisObj: null,
+ func: this.receiver,
+ numArgsToCapture: numberOfArgumentsToCapture(candidates[0]),
+ matcherSpec: candidates[0],
+ enhanced: enhanced
+ };
+ basement = callSpec.enhancedFunc = decorate(callSpec, this);
+ }
+ }
+ return basement;
+};
+
+Decorator.prototype.concreteAssert = function (callSpec, invocation, context) {
+ var func = callSpec.func;
+ var thisObj = this.config.bindReceiver ? callSpec.thisObj : invocation.thisObj;
+ var enhanced = callSpec.enhanced;
+ var args = invocation.values;
+ var message = invocation.message;
+ var matcherSpec = callSpec.matcherSpec;
+
+ if (context && typeof this.config.modifyMessageBeforeAssert === 'function') {
+ message = this.config.modifyMessageBeforeAssert({originalMessage: message, powerAssertContext: context});
+ }
+ args = args.concat(message);
+
+ var data = {
+ thisObj: invocation.thisObj,
+ assertionFunction: callSpec.enhancedFunc,
+ originalMessage: message,
+ defaultMessage: matcherSpec.defaultMessage,
+ matcherSpec: matcherSpec,
+ enhanced: enhanced,
+ args: args
+ };
+
+ if (context) {
+ data.powerAssertContext = context;
+ }
+
+ return this._callFunc(func, thisObj, args, data);
+};
+
+// see: https://github.com/twada/empower-core/pull/8#issuecomment-173480982
+Decorator.prototype._callFunc = function (func, thisObj, args, data) {
+ var ret;
+ try {
+ ret = func.apply(thisObj, args);
+ } catch (e) {
+ data.assertionThrew = true;
+ data.error = e;
+ return this.onError.call(thisObj, data);
+ }
+ data.assertionThrew = false;
+ data.returnValue = ret;
+ return this.onSuccess.call(thisObj, data);
+};
+
+function numberOfArgumentsToCapture (matcherSpec) {
+ var matcher = matcherSpec.parsed;
+ var len = matcher.args.length;
+ var lastArg;
+ if (0 < len) {
+ lastArg = matcher.args[len - 1];
+ if (lastArg.name === 'message' && lastArg.optional) {
+ len -= 1;
+ }
+ }
+ return len;
+}
+
+
+function detectMethodName (callee) {
+ if (callee.type === 'MemberExpression') {
+ return callee.member;
+ }
+ return null;
+}
+
+
+function functionCall (matcherSpec) {
+ return matcherSpec.parsed.callee.type === 'Identifier';
+}
+
+
+function methodCall (matcherSpec) {
+ return matcherSpec.parsed.callee.type === 'MemberExpression';
+}
+
+function parse(matcherSpec) {
+ if (typeof matcherSpec === 'string') {
+ matcherSpec = {pattern: matcherSpec};
+ }
+ var ret = {};
+ forEach(keys(matcherSpec), function (key) {
+ ret[key] = matcherSpec[key];
+ });
+ ret.parsed = signature.parse(matcherSpec.pattern);
+ return ret;
+}
+
+
+module.exports = Decorator;
+
+},{"./decorate":2,"call-signature":6,"core-js/library/fn/array/filter":7,"core-js/library/fn/array/for-each":8,"core-js/library/fn/array/map":9,"core-js/library/fn/object/keys":14}],4:[function(_dereq_,module,exports){
+'use strict';
+
+module.exports = function defaultOptions () {
+ return {
+ destructive: false,
+ bindReceiver: true,
+ onError: onError,
+ onSuccess: onSuccess,
+ patterns: [
+ 'assert(value, [message])',
+ 'assert.ok(value, [message])',
+ 'assert.equal(actual, expected, [message])',
+ 'assert.notEqual(actual, expected, [message])',
+ 'assert.strictEqual(actual, expected, [message])',
+ 'assert.notStrictEqual(actual, expected, [message])',
+ 'assert.deepEqual(actual, expected, [message])',
+ 'assert.notDeepEqual(actual, expected, [message])',
+ 'assert.deepStrictEqual(actual, expected, [message])',
+ 'assert.notDeepStrictEqual(actual, expected, [message])'
+ ],
+ wrapOnlyPatterns: []
+ };
+};
+
+function onError (errorEvent) {
+ var e = errorEvent.error;
+ if (errorEvent.powerAssertContext && e.name === 'AssertionError') {
+ e.powerAssertContext = errorEvent.powerAssertContext;
+ }
+ throw e;
+}
+
+function onSuccess(successEvent) {
+ return successEvent.returnValue;
+}
+
+},{}],5:[function(_dereq_,module,exports){
+'use strict';
+
+var defineProperty = _dereq_('core-js/library/fn/object/define-property');
+var forEach = _dereq_('core-js/library/fn/array/for-each');
+var keys = _dereq_('core-js/library/fn/object/keys');
+
+module.exports = function defineProperties (obj, map) {
+ forEach(keys(map), function (name) {
+ defineProperty(obj, name, {
+ configurable: true,
+ enumerable: false,
+ value: map[name],
+ writable: true
+ });
+ });
+};
+
+},{"core-js/library/fn/array/for-each":8,"core-js/library/fn/object/define-property":13,"core-js/library/fn/object/keys":14}],6:[function(_dereq_,module,exports){
+'use strict';
+module.exports.parse = parse;
+module.exports.generate = generate;
+
+// TODO(jamestalmage): Allow full range of identifier characters instead of just ASCII
+//
+// This will likely require a build step
+//
+// SPEC: http://www.ecma-international.org/ecma-262/5.1/#sec-7.6
+//
+// TOOLING:
+// https://github.com/mathiasbynens/regenerate
+// https://www.npmjs.com/package/regjsgen
+
+var regex = /^\s*(?:([A-Za-z$_][A-Za-z0-9$_]*)\s*\.)?\s*([A-Za-z$_][A-Za-z0-9$_]*)\s*\(\s*((?:[A-Za-z$_][A-Za-z0-9$_]*)|(?:\[\s*[A-Za-z$_][A-Za-z0-9$_]*\s*]))?((?:\s*,\s*(?:(?:[A-Za-z$_][A-Za-z0-9$_]*)|(?:\[\s*[A-Za-z$_][A-Za-z0-9$_]*\s*])))+)?\s*\)\s*$/;
+
+function parse(str) {
+ var match = regex.exec(str);
+ if (!match) {
+ return null;
+ }
+
+ var callee;
+ if (match[1]) {
+ callee = {
+ type: 'MemberExpression',
+ object: match[1],
+ member: match[2]
+ };
+ } else {
+ callee = {
+ type: 'Identifier',
+ name: match[2]
+ };
+ }
+
+ var args = match[4] || '';
+ args = args.split(',');
+ if (match[3]) {
+ args[0] = match[3];
+ }
+ var trimmed = [];
+ args.forEach(function (str) {
+ var optional = false;
+ str = str.replace(/\s+/g, '');
+ if (!str.length) {
+ return;
+ }
+ if (str.charAt(0) === '[' && str.charAt(str.length - 1) === ']') {
+ optional = true;
+ str = str.substring(1, str.length - 1);
+ }
+ trimmed.push({
+ name: str,
+ optional: optional
+ });
+ });
+
+ return {
+ callee: callee,
+ args: trimmed
+ };
+}
+
+function generate(parsed) {
+ var callee;
+ if (parsed.callee.type === 'MemberExpression') {
+ callee = [
+ parsed.callee.object,
+ '.',
+ parsed.callee.member
+ ];
+ } else {
+ callee = [parsed.callee.name];
+ }
+ return callee.concat([
+ '(',
+ parsed.args.map(function (arg) {
+ return arg.optional ? '[' + arg.name + ']' : arg.name;
+ }).join(', '),
+ ')'
+ ]).join('');
+}
+
+},{}],7:[function(_dereq_,module,exports){
+_dereq_('../../modules/es6.array.filter');
+module.exports = _dereq_('../../modules/_core').Array.filter;
+},{"../../modules/_core":22,"../../modules/es6.array.filter":59}],8:[function(_dereq_,module,exports){
+_dereq_('../../modules/es6.array.for-each');
+module.exports = _dereq_('../../modules/_core').Array.forEach;
+},{"../../modules/_core":22,"../../modules/es6.array.for-each":60}],9:[function(_dereq_,module,exports){
+_dereq_('../../modules/es6.array.map');
+module.exports = _dereq_('../../modules/_core').Array.map;
+},{"../../modules/_core":22,"../../modules/es6.array.map":61}],10:[function(_dereq_,module,exports){
+_dereq_('../../modules/es6.array.some');
+module.exports = _dereq_('../../modules/_core').Array.some;
+},{"../../modules/_core":22,"../../modules/es6.array.some":62}],11:[function(_dereq_,module,exports){
+_dereq_('../../modules/es6.object.assign');
+module.exports = _dereq_('../../modules/_core').Object.assign;
+},{"../../modules/_core":22,"../../modules/es6.object.assign":63}],12:[function(_dereq_,module,exports){
+_dereq_('../../modules/es6.object.create');
+var $Object = _dereq_('../../modules/_core').Object;
+module.exports = function create(P, D){
+ return $Object.create(P, D);
+};
+},{"../../modules/_core":22,"../../modules/es6.object.create":64}],13:[function(_dereq_,module,exports){
+_dereq_('../../modules/es6.object.define-property');
+var $Object = _dereq_('../../modules/_core').Object;
+module.exports = function defineProperty(it, key, desc){
+ return $Object.defineProperty(it, key, desc);
+};
+},{"../../modules/_core":22,"../../modules/es6.object.define-property":65}],14:[function(_dereq_,module,exports){
+_dereq_('../../modules/es6.object.keys');
+module.exports = _dereq_('../../modules/_core').Object.keys;
+},{"../../modules/_core":22,"../../modules/es6.object.keys":66}],15:[function(_dereq_,module,exports){
+module.exports = function(it){
+ if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+ return it;
+};
+},{}],16:[function(_dereq_,module,exports){
+var isObject = _dereq_('./_is-object');
+module.exports = function(it){
+ if(!isObject(it))throw TypeError(it + ' is not an object!');
+ return it;
+};
+},{"./_is-object":37}],17:[function(_dereq_,module,exports){
+// false -> Array#indexOf
+// true -> Array#includes
+var toIObject = _dereq_('./_to-iobject')
+ , toLength = _dereq_('./_to-length')
+ , toIndex = _dereq_('./_to-index');
+module.exports = function(IS_INCLUDES){
+ return function($this, el, fromIndex){
+ var O = toIObject($this)
+ , length = toLength(O.length)
+ , index = toIndex(fromIndex, length)
+ , value;
+ // Array#includes uses SameValueZero equality algorithm
+ if(IS_INCLUDES && el != el)while(length > index){
+ value = O[index++];
+ if(value != value)return true;
+ // Array#toIndex ignores holes, Array#includes - not
+ } else for(;length > index; index++)if(IS_INCLUDES || index in O){
+ if(O[index] === el)return IS_INCLUDES || index || 0;
+ } return !IS_INCLUDES && -1;
+ };
+};
+},{"./_to-index":51,"./_to-iobject":53,"./_to-length":54}],18:[function(_dereq_,module,exports){
+// 0 -> Array#forEach
+// 1 -> Array#map
+// 2 -> Array#filter
+// 3 -> Array#some
+// 4 -> Array#every
+// 5 -> Array#find
+// 6 -> Array#findIndex
+var ctx = _dereq_('./_ctx')
+ , IObject = _dereq_('./_iobject')
+ , toObject = _dereq_('./_to-object')
+ , toLength = _dereq_('./_to-length')
+ , asc = _dereq_('./_array-species-create');
+module.exports = function(TYPE, $create){
+ var IS_MAP = TYPE == 1
+ , IS_FILTER = TYPE == 2
+ , IS_SOME = TYPE == 3
+ , IS_EVERY = TYPE == 4
+ , IS_FIND_INDEX = TYPE == 6
+ , NO_HOLES = TYPE == 5 || IS_FIND_INDEX
+ , create = $create || asc;
+ return function($this, callbackfn, that){
+ var O = toObject($this)
+ , self = IObject(O)
+ , f = ctx(callbackfn, that, 3)
+ , length = toLength(self.length)
+ , index = 0
+ , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined
+ , val, res;
+ for(;length > index; index++)if(NO_HOLES || index in self){
+ val = self[index];
+ res = f(val, index, O);
+ if(TYPE){
+ if(IS_MAP)result[index] = res; // map
+ else if(res)switch(TYPE){
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return index; // findIndex
+ case 2: result.push(val); // filter
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+ };
+};
+},{"./_array-species-create":20,"./_ctx":23,"./_iobject":35,"./_to-length":54,"./_to-object":55}],19:[function(_dereq_,module,exports){
+var isObject = _dereq_('./_is-object')
+ , isArray = _dereq_('./_is-array')
+ , SPECIES = _dereq_('./_wks')('species');
+
+module.exports = function(original){
+ var C;
+ if(isArray(original)){
+ C = original.constructor;
+ // cross-realm fallback
+ if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
+ if(isObject(C)){
+ C = C[SPECIES];
+ if(C === null)C = undefined;
+ }
+ } return C === undefined ? Array : C;
+};
+},{"./_is-array":36,"./_is-object":37,"./_wks":58}],20:[function(_dereq_,module,exports){
+// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+var speciesConstructor = _dereq_('./_array-species-constructor');
+
+module.exports = function(original, length){
+ return new (speciesConstructor(original))(length);
+};
+},{"./_array-species-constructor":19}],21:[function(_dereq_,module,exports){
+var toString = {}.toString;
+
+module.exports = function(it){
+ return toString.call(it).slice(8, -1);
+};
+},{}],22:[function(_dereq_,module,exports){
+var core = module.exports = {version: '2.4.0'};
+if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+},{}],23:[function(_dereq_,module,exports){
+// optional / simple context binding
+var aFunction = _dereq_('./_a-function');
+module.exports = function(fn, that, length){
+ aFunction(fn);
+ if(that === undefined)return fn;
+ switch(length){
+ case 1: return function(a){
+ return fn.call(that, a);
+ };
+ case 2: return function(a, b){
+ return fn.call(that, a, b);
+ };
+ case 3: return function(a, b, c){
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function(/* ...args */){
+ return fn.apply(that, arguments);
+ };
+};
+},{"./_a-function":15}],24:[function(_dereq_,module,exports){
+// 7.2.1 RequireObjectCoercible(argument)
+module.exports = function(it){
+ if(it == undefined)throw TypeError("Can't call method on " + it);
+ return it;
+};
+},{}],25:[function(_dereq_,module,exports){
+// Thank's IE8 for his funny defineProperty
+module.exports = !_dereq_('./_fails')(function(){
+ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
+});
+},{"./_fails":29}],26:[function(_dereq_,module,exports){
+var isObject = _dereq_('./_is-object')
+ , document = _dereq_('./_global').document
+ // in old IE typeof document.createElement is 'object'
+ , is = isObject(document) && isObject(document.createElement);
+module.exports = function(it){
+ return is ? document.createElement(it) : {};
+};
+},{"./_global":30,"./_is-object":37}],27:[function(_dereq_,module,exports){
+// IE 8- don't enum bug keys
+module.exports = (
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+).split(',');
+},{}],28:[function(_dereq_,module,exports){
+var global = _dereq_('./_global')
+ , core = _dereq_('./_core')
+ , ctx = _dereq_('./_ctx')
+ , hide = _dereq_('./_hide')
+ , PROTOTYPE = 'prototype';
+
+var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , IS_WRAP = type & $export.W
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE]
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
+ , key, own, out;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ if(own && key in exports)continue;
+ // export native or passed
+ out = own ? target[key] : source[key];
+ // prevent global pollution for namespaces
+ exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+ // bind timers to global for call from export context
+ : IS_BIND && own ? ctx(out, global)
+ // wrap global constructors for prevent change them in library
+ : IS_WRAP && target[key] == out ? (function(C){
+ var F = function(a, b, c){
+ if(this instanceof C){
+ switch(arguments.length){
+ case 0: return new C;
+ case 1: return new C(a);
+ case 2: return new C(a, b);
+ } return new C(a, b, c);
+ } return C.apply(this, arguments);
+ };
+ F[PROTOTYPE] = C[PROTOTYPE];
+ return F;
+ // make static versions for prototype methods
+ })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+ if(IS_PROTO){
+ (exports.virtual || (exports.virtual = {}))[key] = out;
+ // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+ if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
+ }
+ }
+};
+// type bitmap
+$export.F = 1; // forced
+$export.G = 2; // global
+$export.S = 4; // static
+$export.P = 8; // proto
+$export.B = 16; // bind
+$export.W = 32; // wrap
+$export.U = 64; // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
+},{"./_core":22,"./_ctx":23,"./_global":30,"./_hide":32}],29:[function(_dereq_,module,exports){
+module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+};
+},{}],30:[function(_dereq_,module,exports){
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
+},{}],31:[function(_dereq_,module,exports){
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function(it, key){
+ return hasOwnProperty.call(it, key);
+};
+},{}],32:[function(_dereq_,module,exports){
+var dP = _dereq_('./_object-dp')
+ , createDesc = _dereq_('./_property-desc');
+module.exports = _dereq_('./_descriptors') ? function(object, key, value){
+ return dP.f(object, key, createDesc(1, value));
+} : function(object, key, value){
+ object[key] = value;
+ return object;
+};
+},{"./_descriptors":25,"./_object-dp":40,"./_property-desc":47}],33:[function(_dereq_,module,exports){
+module.exports = _dereq_('./_global').document && document.documentElement;
+},{"./_global":30}],34:[function(_dereq_,module,exports){
+module.exports = !_dereq_('./_descriptors') && !_dereq_('./_fails')(function(){
+ return Object.defineProperty(_dereq_('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;
+});
+},{"./_descriptors":25,"./_dom-create":26,"./_fails":29}],35:[function(_dereq_,module,exports){
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+var cof = _dereq_('./_cof');
+module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+ return cof(it) == 'String' ? it.split('') : Object(it);
+};
+},{"./_cof":21}],36:[function(_dereq_,module,exports){
+// 7.2.2 IsArray(argument)
+var cof = _dereq_('./_cof');
+module.exports = Array.isArray || function isArray(arg){
+ return cof(arg) == 'Array';
+};
+},{"./_cof":21}],37:[function(_dereq_,module,exports){
+module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
+},{}],38:[function(_dereq_,module,exports){
+'use strict';
+// 19.1.2.1 Object.assign(target, source, ...)
+var getKeys = _dereq_('./_object-keys')
+ , gOPS = _dereq_('./_object-gops')
+ , pIE = _dereq_('./_object-pie')
+ , toObject = _dereq_('./_to-object')
+ , IObject = _dereq_('./_iobject')
+ , $assign = Object.assign;
+
+// should work with symbols and should have deterministic property order (V8 bug)
+module.exports = !$assign || _dereq_('./_fails')(function(){
+ var A = {}
+ , B = {}
+ , S = Symbol()
+ , K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function(k){ B[k] = k; });
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+}) ? function assign(target, source){ // eslint-disable-line no-unused-vars
+ var T = toObject(target)
+ , aLen = arguments.length
+ , index = 1
+ , getSymbols = gOPS.f
+ , isEnum = pIE.f;
+ while(aLen > index){
+ var S = IObject(arguments[index++])
+ , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
+ , length = keys.length
+ , j = 0
+ , key;
+ while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
+ } return T;
+} : $assign;
+},{"./_fails":29,"./_iobject":35,"./_object-gops":42,"./_object-keys":44,"./_object-pie":45,"./_to-object":55}],39:[function(_dereq_,module,exports){
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+var anObject = _dereq_('./_an-object')
+ , dPs = _dereq_('./_object-dps')
+ , enumBugKeys = _dereq_('./_enum-bug-keys')
+ , IE_PROTO = _dereq_('./_shared-key')('IE_PROTO')
+ , Empty = function(){ /* empty */ }
+ , PROTOTYPE = 'prototype';
+
+// Create object with fake `null` prototype: use iframe Object with cleared prototype
+var createDict = function(){
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = _dereq_('./_dom-create')('iframe')
+ , i = enumBugKeys.length
+ , gt = '>'
+ , iframeDocument;
+ iframe.style.display = 'none';
+ _dereq_('./_html').appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write('<script>document.F=Object</script' + gt);
+ iframeDocument.close();
+ createDict = iframeDocument.F;
+ while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];
+ return createDict();
+};
+
+module.exports = Object.create || function create(O, Properties){
+ var result;
+ if(O !== null){
+ Empty[PROTOTYPE] = anObject(O);
+ result = new Empty;
+ Empty[PROTOTYPE] = null;
+ // add "__proto__" for Object.getPrototypeOf polyfill
+ result[IE_PROTO] = O;
+ } else result = createDict();
+ return Properties === undefined ? result : dPs(result, Properties);
+};
+},{"./_an-object":16,"./_dom-create":26,"./_enum-bug-keys":27,"./_html":33,"./_object-dps":41,"./_shared-key":48}],40:[function(_dereq_,module,exports){
+var anObject = _dereq_('./_an-object')
+ , IE8_DOM_DEFINE = _dereq_('./_ie8-dom-define')
+ , toPrimitive = _dereq_('./_to-primitive')
+ , dP = Object.defineProperty;
+
+exports.f = _dereq_('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if(IE8_DOM_DEFINE)try {
+ return dP(O, P, Attributes);
+ } catch(e){ /* empty */ }
+ if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+ if('value' in Attributes)O[P] = Attributes.value;
+ return O;
+};
+},{"./_an-object":16,"./_descriptors":25,"./_ie8-dom-define":34,"./_to-primitive":56}],41:[function(_dereq_,module,exports){
+var dP = _dereq_('./_object-dp')
+ , anObject = _dereq_('./_an-object')
+ , getKeys = _dereq_('./_object-keys');
+
+module.exports = _dereq_('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){
+ anObject(O);
+ var keys = getKeys(Properties)
+ , length = keys.length
+ , i = 0
+ , P;
+ while(length > i)dP.f(O, P = keys[i++], Properties[P]);
+ return O;
+};
+},{"./_an-object":16,"./_descriptors":25,"./_object-dp":40,"./_object-keys":44}],42:[function(_dereq_,module,exports){
+exports.f = Object.getOwnPropertySymbols;
+},{}],43:[function(_dereq_,module,exports){
+var has = _dereq_('./_has')
+ , toIObject = _dereq_('./_to-iobject')
+ , arrayIndexOf = _dereq_('./_array-includes')(false)
+ , IE_PROTO = _dereq_('./_shared-key')('IE_PROTO');
+
+module.exports = function(object, names){
+ var O = toIObject(object)
+ , i = 0
+ , result = []
+ , key;
+ for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while(names.length > i)if(has(O, key = names[i++])){
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+};
+},{"./_array-includes":17,"./_has":31,"./_shared-key":48,"./_to-iobject":53}],44:[function(_dereq_,module,exports){
+// 19.1.2.14 / 15.2.3.14 Object.keys(O)
+var $keys = _dereq_('./_object-keys-internal')
+ , enumBugKeys = _dereq_('./_enum-bug-keys');
+
+module.exports = Object.keys || function keys(O){
+ return $keys(O, enumBugKeys);
+};
+},{"./_enum-bug-keys":27,"./_object-keys-internal":43}],45:[function(_dereq_,module,exports){
+exports.f = {}.propertyIsEnumerable;
+},{}],46:[function(_dereq_,module,exports){
+// most Object methods by ES6 should accept primitives
+var $export = _dereq_('./_export')
+ , core = _dereq_('./_core')
+ , fails = _dereq_('./_fails');
+module.exports = function(KEY, exec){
+ var fn = (core.Object || {})[KEY] || Object[KEY]
+ , exp = {};
+ exp[KEY] = exec(fn);
+ $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
+};
+},{"./_core":22,"./_export":28,"./_fails":29}],47:[function(_dereq_,module,exports){
+module.exports = function(bitmap, value){
+ return {
+ enumerable : !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable : !(bitmap & 4),
+ value : value
+ };
+};
+},{}],48:[function(_dereq_,module,exports){
+var shared = _dereq_('./_shared')('keys')
+ , uid = _dereq_('./_uid');
+module.exports = function(key){
+ return shared[key] || (shared[key] = uid(key));
+};
+},{"./_shared":49,"./_uid":57}],49:[function(_dereq_,module,exports){
+var global = _dereq_('./_global')
+ , SHARED = '__core-js_shared__'
+ , store = global[SHARED] || (global[SHARED] = {});
+module.exports = function(key){
+ return store[key] || (store[key] = {});
+};
+},{"./_global":30}],50:[function(_dereq_,module,exports){
+var fails = _dereq_('./_fails');
+
+module.exports = function(method, arg){
+ return !!method && fails(function(){
+ arg ? method.call(null, function(){}, 1) : method.call(null);
+ });
+};
+},{"./_fails":29}],51:[function(_dereq_,module,exports){
+var toInteger = _dereq_('./_to-integer')
+ , max = Math.max
+ , min = Math.min;
+module.exports = function(index, length){
+ index = toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+};
+},{"./_to-integer":52}],52:[function(_dereq_,module,exports){
+// 7.1.4 ToInteger
+var ceil = Math.ceil
+ , floor = Math.floor;
+module.exports = function(it){
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+};
+},{}],53:[function(_dereq_,module,exports){
+// to indexed object, toObject with fallback for non-array-like ES3 strings
+var IObject = _dereq_('./_iobject')
+ , defined = _dereq_('./_defined');
+module.exports = function(it){
+ return IObject(defined(it));
+};
+},{"./_defined":24,"./_iobject":35}],54:[function(_dereq_,module,exports){
+// 7.1.15 ToLength
+var toInteger = _dereq_('./_to-integer')
+ , min = Math.min;
+module.exports = function(it){
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+};
+},{"./_to-integer":52}],55:[function(_dereq_,module,exports){
+// 7.1.13 ToObject(argument)
+var defined = _dereq_('./_defined');
+module.exports = function(it){
+ return Object(defined(it));
+};
+},{"./_defined":24}],56:[function(_dereq_,module,exports){
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = _dereq_('./_is-object');
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function(it, S){
+ if(!isObject(it))return it;
+ var fn, val;
+ if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ throw TypeError("Can't convert object to primitive value");
+};
+},{"./_is-object":37}],57:[function(_dereq_,module,exports){
+var id = 0
+ , px = Math.random();
+module.exports = function(key){
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+};
+},{}],58:[function(_dereq_,module,exports){
+var store = _dereq_('./_shared')('wks')
+ , uid = _dereq_('./_uid')
+ , Symbol = _dereq_('./_global').Symbol
+ , USE_SYMBOL = typeof Symbol == 'function';
+
+var $exports = module.exports = function(name){
+ return store[name] || (store[name] =
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
+};
+
+$exports.store = store;
+},{"./_global":30,"./_shared":49,"./_uid":57}],59:[function(_dereq_,module,exports){
+'use strict';
+var $export = _dereq_('./_export')
+ , $filter = _dereq_('./_array-methods')(2);
+
+$export($export.P + $export.F * !_dereq_('./_strict-method')([].filter, true), 'Array', {
+ // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
+ filter: function filter(callbackfn /* , thisArg */){
+ return $filter(this, callbackfn, arguments[1]);
+ }
+});
+},{"./_array-methods":18,"./_export":28,"./_strict-method":50}],60:[function(_dereq_,module,exports){
+'use strict';
+var $export = _dereq_('./_export')
+ , $forEach = _dereq_('./_array-methods')(0)
+ , STRICT = _dereq_('./_strict-method')([].forEach, true);
+
+$export($export.P + $export.F * !STRICT, 'Array', {
+ // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
+ forEach: function forEach(callbackfn /* , thisArg */){
+ return $forEach(this, callbackfn, arguments[1]);
+ }
+});
+},{"./_array-methods":18,"./_export":28,"./_strict-method":50}],61:[function(_dereq_,module,exports){
+'use strict';
+var $export = _dereq_('./_export')
+ , $map = _dereq_('./_array-methods')(1);
+
+$export($export.P + $export.F * !_dereq_('./_strict-method')([].map, true), 'Array', {
+ // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
+ map: function map(callbackfn /* , thisArg */){
+ return $map(this, callbackfn, arguments[1]);
+ }
+});
+},{"./_array-methods":18,"./_export":28,"./_strict-method":50}],62:[function(_dereq_,module,exports){
+'use strict';
+var $export = _dereq_('./_export')
+ , $some = _dereq_('./_array-methods')(3);
+
+$export($export.P + $export.F * !_dereq_('./_strict-method')([].some, true), 'Array', {
+ // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
+ some: function some(callbackfn /* , thisArg */){
+ return $some(this, callbackfn, arguments[1]);
+ }
+});
+},{"./_array-methods":18,"./_export":28,"./_strict-method":50}],63:[function(_dereq_,module,exports){
+// 19.1.3.1 Object.assign(target, source)
+var $export = _dereq_('./_export');
+
+$export($export.S + $export.F, 'Object', {assign: _dereq_('./_object-assign')});
+},{"./_export":28,"./_object-assign":38}],64:[function(_dereq_,module,exports){
+var $export = _dereq_('./_export')
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+$export($export.S, 'Object', {create: _dereq_('./_object-create')});
+},{"./_export":28,"./_object-create":39}],65:[function(_dereq_,module,exports){
+var $export = _dereq_('./_export');
+// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+$export($export.S + $export.F * !_dereq_('./_descriptors'), 'Object', {defineProperty: _dereq_('./_object-dp').f});
+},{"./_descriptors":25,"./_export":28,"./_object-dp":40}],66:[function(_dereq_,module,exports){
+// 19.1.2.14 Object.keys(O)
+var toObject = _dereq_('./_to-object')
+ , $keys = _dereq_('./_object-keys');
+
+_dereq_('./_object-sap')('keys', function(){
+ return function keys(it){
+ return $keys(toObject(it));
+ };
+});
+},{"./_object-keys":44,"./_object-sap":46,"./_to-object":55}]},{},[1])(1)
+}); \ No newline at end of file
diff --git a/node_modules/empower-core/index.js b/node_modules/empower-core/index.js
new file mode 100644
index 000000000..c72d327a0
--- /dev/null
+++ b/node_modules/empower-core/index.js
@@ -0,0 +1,79 @@
+/**
+ * empower-core - Power Assert feature enhancer for assert function/object.
+ *
+ * https://github.com/twada/empower-core
+ *
+ * Copyright (c) 2013-2016 Takuto Wada
+ * Licensed under the MIT license.
+ * https://github.com/twada/empower-core/blob/master/MIT-LICENSE.txt
+ */
+var create = require('core-js/library/fn/object/create');
+var assign = require('core-js/library/fn/object/assign');
+var defaultOptions = require('./lib/default-options');
+var Decorator = require('./lib/decorator');
+var define = require('./lib/define-properties');
+var slice = Array.prototype.slice;
+
+/**
+ * Enhance Power Assert feature to assert function/object.
+ * @param assert target assert function or object to enhance
+ * @param options enhancement options
+ * @return enhanced assert function/object
+ */
+function empowerCore (assert, options) {
+ var typeOfAssert = (typeof assert);
+ var enhancedAssert;
+ if ((typeOfAssert !== 'object' && typeOfAssert !== 'function') || assert === null) {
+ throw new TypeError('empower-core argument should be a function or object.');
+ }
+ if (isEmpowered(assert)) {
+ return assert;
+ }
+ switch (typeOfAssert) {
+ case 'function':
+ enhancedAssert = empowerAssertFunction(assert, options);
+ break;
+ case 'object':
+ enhancedAssert = empowerAssertObject(assert, options);
+ break;
+ default:
+ throw new Error('Cannot be here');
+ }
+ define(enhancedAssert, { _empowered: true });
+ return enhancedAssert;
+}
+
+function empowerAssertObject (assertObject, options) {
+ var config = assign(defaultOptions(), options);
+ var target = config.destructive ? assertObject : create(assertObject);
+ var decorator = new Decorator(target, config);
+ return assign(target, decorator.enhancement());
+}
+
+function empowerAssertFunction (assertFunction, options) {
+ var config = assign(defaultOptions(), options);
+ if (config.destructive) {
+ throw new Error('cannot use destructive:true to function.');
+ }
+ var decorator = new Decorator(assertFunction, config);
+ var enhancement = decorator.enhancement();
+ var powerAssert;
+ if (typeof enhancement === 'function') {
+ powerAssert = function powerAssert () {
+ return enhancement.apply(null, slice.apply(arguments));
+ };
+ } else {
+ powerAssert = function powerAssert () {
+ return assertFunction.apply(null, slice.apply(arguments));
+ };
+ }
+ assign(powerAssert, assertFunction);
+ return assign(powerAssert, enhancement);
+}
+
+function isEmpowered (assertObjectOrFunction) {
+ return assertObjectOrFunction._empowered;
+}
+
+empowerCore.defaultOptions = defaultOptions;
+module.exports = empowerCore;
diff --git a/node_modules/empower-core/lib/decorate.js b/node_modules/empower-core/lib/decorate.js
new file mode 100644
index 000000000..2eb6f5f20
--- /dev/null
+++ b/node_modules/empower-core/lib/decorate.js
@@ -0,0 +1,66 @@
+'use strict';
+
+var some = require('core-js/library/fn/array/some');
+var map = require('core-js/library/fn/array/map');
+
+function decorate (callSpec, decorator) {
+ var numArgsToCapture = callSpec.numArgsToCapture;
+
+ return function decoratedAssert () {
+ var context, message, hasMessage = false;
+
+ // see: https://github.com/twada/empower-core/pull/8#issue-127859465
+ // see: https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments
+ var args = new Array(arguments.length);
+ for(var i = 0; i < args.length; ++i) {
+ args[i] = arguments[i];
+ }
+
+ if (numArgsToCapture === (args.length - 1)) {
+ message = args.pop();
+ hasMessage = true;
+ }
+
+ var invocation = {
+ thisObj: this,
+ values: args,
+ message: message,
+ hasMessage: hasMessage
+ };
+
+ if (some(args, isCaptured)) {
+ invocation.values = map(args.slice(0, numArgsToCapture), function (arg) {
+ if (isNotCaptured(arg)) {
+ return arg;
+ }
+ if (!context) {
+ context = {
+ source: arg.source,
+ args: []
+ };
+ }
+ context.args.push({
+ value: arg.powerAssertContext.value,
+ events: arg.powerAssertContext.events
+ });
+ return arg.powerAssertContext.value;
+ });
+
+ return decorator.concreteAssert(callSpec, invocation, context);
+ } else {
+ return decorator.concreteAssert(callSpec, invocation);
+ }
+ };
+}
+
+function isNotCaptured (value) {
+ return !isCaptured(value);
+}
+
+function isCaptured (value) {
+ return (typeof value === 'object') &&
+ (value !== null) &&
+ (typeof value.powerAssertContext !== 'undefined');
+}
+
+module.exports = decorate;
diff --git a/node_modules/empower-core/lib/decorator.js b/node_modules/empower-core/lib/decorator.js
new file mode 100644
index 000000000..678f47283
--- /dev/null
+++ b/node_modules/empower-core/lib/decorator.js
@@ -0,0 +1,165 @@
+'use strict';
+
+var forEach = require('core-js/library/fn/array/for-each');
+var filter = require('core-js/library/fn/array/filter');
+var map = require('core-js/library/fn/array/map');
+var signature = require('call-signature');
+var decorate = require('./decorate');
+var keys = require('core-js/library/fn/object/keys');
+
+
+function Decorator (receiver, config) {
+ this.receiver = receiver;
+ this.config = config;
+ this.onError = config.onError;
+ this.onSuccess = config.onSuccess;
+ this.signatures = map(config.patterns, parse);
+ this.wrapOnlySignatures = map(config.wrapOnlyPatterns, parse);
+}
+
+Decorator.prototype.enhancement = function () {
+ var that = this;
+ var container = this.container();
+ var wrappedMethods = [];
+
+ function attach(matcherSpec, enhanced) {
+ var matcher = matcherSpec.parsed;
+ var methodName = detectMethodName(matcher.callee);
+ if (typeof that.receiver[methodName] !== 'function' || wrappedMethods.indexOf(methodName) !== -1) {
+ return;
+ }
+ var callSpec = {
+ thisObj: that.receiver,
+ func: that.receiver[methodName],
+ numArgsToCapture: numberOfArgumentsToCapture(matcherSpec),
+ matcherSpec: matcherSpec,
+ enhanced: enhanced
+ };
+ container[methodName] = callSpec.enhancedFunc = decorate(callSpec, that);
+ wrappedMethods.push(methodName);
+ }
+
+ forEach(filter(this.signatures, methodCall), function (matcher) {
+ attach(matcher, true);
+ });
+
+ forEach(filter(this.wrapOnlySignatures, methodCall), function (matcher) {
+ attach(matcher, false);
+ });
+
+ return container;
+};
+
+Decorator.prototype.container = function () {
+ var basement = {};
+ if (typeof this.receiver === 'function') {
+ var candidates = filter(this.signatures, functionCall);
+ var enhanced = true;
+ if (candidates.length === 0) {
+ enhanced = false;
+ candidates = filter(this.wrapOnlySignatures, functionCall);
+ }
+ if (candidates.length === 1) {
+ var callSpec = {
+ thisObj: null,
+ func: this.receiver,
+ numArgsToCapture: numberOfArgumentsToCapture(candidates[0]),
+ matcherSpec: candidates[0],
+ enhanced: enhanced
+ };
+ basement = callSpec.enhancedFunc = decorate(callSpec, this);
+ }
+ }
+ return basement;
+};
+
+Decorator.prototype.concreteAssert = function (callSpec, invocation, context) {
+ var func = callSpec.func;
+ var thisObj = this.config.bindReceiver ? callSpec.thisObj : invocation.thisObj;
+ var enhanced = callSpec.enhanced;
+ var args = invocation.values;
+ var message = invocation.message;
+ var matcherSpec = callSpec.matcherSpec;
+
+ if (context && typeof this.config.modifyMessageBeforeAssert === 'function') {
+ message = this.config.modifyMessageBeforeAssert({originalMessage: message, powerAssertContext: context});
+ }
+ args = args.concat(message);
+
+ var data = {
+ thisObj: invocation.thisObj,
+ assertionFunction: callSpec.enhancedFunc,
+ originalMessage: message,
+ defaultMessage: matcherSpec.defaultMessage,
+ matcherSpec: matcherSpec,
+ enhanced: enhanced,
+ args: args
+ };
+
+ if (context) {
+ data.powerAssertContext = context;
+ }
+
+ return this._callFunc(func, thisObj, args, data);
+};
+
+// see: https://github.com/twada/empower-core/pull/8#issuecomment-173480982
+Decorator.prototype._callFunc = function (func, thisObj, args, data) {
+ var ret;
+ try {
+ ret = func.apply(thisObj, args);
+ } catch (e) {
+ data.assertionThrew = true;
+ data.error = e;
+ return this.onError.call(thisObj, data);
+ }
+ data.assertionThrew = false;
+ data.returnValue = ret;
+ return this.onSuccess.call(thisObj, data);
+};
+
+function numberOfArgumentsToCapture (matcherSpec) {
+ var matcher = matcherSpec.parsed;
+ var len = matcher.args.length;
+ var lastArg;
+ if (0 < len) {
+ lastArg = matcher.args[len - 1];
+ if (lastArg.name === 'message' && lastArg.optional) {
+ len -= 1;
+ }
+ }
+ return len;
+}
+
+
+function detectMethodName (callee) {
+ if (callee.type === 'MemberExpression') {
+ return callee.member;
+ }
+ return null;
+}
+
+
+function functionCall (matcherSpec) {
+ return matcherSpec.parsed.callee.type === 'Identifier';
+}
+
+
+function methodCall (matcherSpec) {
+ return matcherSpec.parsed.callee.type === 'MemberExpression';
+}
+
+function parse(matcherSpec) {
+ if (typeof matcherSpec === 'string') {
+ matcherSpec = {pattern: matcherSpec};
+ }
+ var ret = {};
+ forEach(keys(matcherSpec), function (key) {
+ ret[key] = matcherSpec[key];
+ });
+ ret.parsed = signature.parse(matcherSpec.pattern);
+ return ret;
+}
+
+
+module.exports = Decorator;
diff --git a/node_modules/empower-core/lib/default-options.js b/node_modules/empower-core/lib/default-options.js
new file mode 100644
index 000000000..77b0f5c05
--- /dev/null
+++ b/node_modules/empower-core/lib/default-options.js
@@ -0,0 +1,35 @@
+'use strict';
+
+module.exports = function defaultOptions () {
+ return {
+ destructive: false,
+ bindReceiver: true,
+ onError: onError,
+ onSuccess: onSuccess,
+ patterns: [
+ 'assert(value, [message])',
+ 'assert.ok(value, [message])',
+ 'assert.equal(actual, expected, [message])',
+ 'assert.notEqual(actual, expected, [message])',
+ 'assert.strictEqual(actual, expected, [message])',
+ 'assert.notStrictEqual(actual, expected, [message])',
+ 'assert.deepEqual(actual, expected, [message])',
+ 'assert.notDeepEqual(actual, expected, [message])',
+ 'assert.deepStrictEqual(actual, expected, [message])',
+ 'assert.notDeepStrictEqual(actual, expected, [message])'
+ ],
+ wrapOnlyPatterns: []
+ };
+};
+
+function onError (errorEvent) {
+ var e = errorEvent.error;
+ if (errorEvent.powerAssertContext && e.name === 'AssertionError') {
+ e.powerAssertContext = errorEvent.powerAssertContext;
+ }
+ throw e;
+}
+
+function onSuccess(successEvent) {
+ return successEvent.returnValue;
+}
diff --git a/node_modules/empower-core/lib/define-properties.js b/node_modules/empower-core/lib/define-properties.js
new file mode 100644
index 000000000..340c7f065
--- /dev/null
+++ b/node_modules/empower-core/lib/define-properties.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var defineProperty = require('core-js/library/fn/object/define-property');
+var forEach = require('core-js/library/fn/array/for-each');
+var keys = require('core-js/library/fn/object/keys');
+
+module.exports = function defineProperties (obj, map) {
+ forEach(keys(map), function (name) {
+ defineProperty(obj, name, {
+ configurable: true,
+ enumerable: false,
+ value: map[name],
+ writable: true
+ });
+ });
+};
diff --git a/node_modules/empower-core/package.json b/node_modules/empower-core/package.json
new file mode 100644
index 000000000..bbc92230c
--- /dev/null
+++ b/node_modules/empower-core/package.json
@@ -0,0 +1,82 @@
+{
+ "name": "empower-core",
+ "description": "Power Assert feature enhancer for assert function/object",
+ "version": "0.6.1",
+ "author": {
+ "name": "Takuto Wada",
+ "email": "takuto.wada@gmail.com",
+ "url": "http://github.com/twada"
+ },
+ "bugs": {
+ "url": "http://github.com/twada/empower-core/issues"
+ },
+ "contributors": [
+ {
+ "name": "James Talmage",
+ "url": "https://github.com/jamestalmage"
+ }
+ ],
+ "dependencies": {
+ "call-signature": "0.0.2",
+ "core-js": "^2.0.0"
+ },
+ "devDependencies": {
+ "acorn": "^3.1.0",
+ "acorn-es7-plugin": "^1.0.14",
+ "babel-core": "^5.8.33",
+ "blanket": "^1.2.3",
+ "browserify": "^13.0.1",
+ "buster-assertions": "^0.10.4",
+ "del": "^2.2.0",
+ "escodegen": "^1.8.0",
+ "espower": "^1.2.1",
+ "gulp": "^3.9.1",
+ "gulp-derequire": "^2.1.0",
+ "gulp-dereserve": "^0.2.1",
+ "gulp-mocha": "^2.2.0",
+ "gulp-mocha-phantomjs": "^0.11.0",
+ "gulp-util": "^3.0.7",
+ "gulp-webserver": "^0.9.1",
+ "licensify": "^3.1.1",
+ "mocha": "^2.5.3",
+ "mocha-lcov-reporter": "^1.2.0",
+ "through2": "^2.0.1",
+ "vinyl-source-stream": "^1.1.0"
+ },
+ "directories": {
+ "lib": "./lib"
+ },
+ "files": [
+ "CHANGELOG.md",
+ "MIT-LICENSE.txt",
+ "README.md",
+ "index.js",
+ "lib",
+ "build/empower-core.js",
+ "package.json"
+ ],
+ "homepage": "http://github.com/twada/empower-core",
+ "keywords": [
+ "power-assert",
+ "assert",
+ "assertion",
+ "test",
+ "testing"
+ ],
+ "license": "MIT",
+ "main": "./index.js",
+ "repository": {
+ "type": "git",
+ "url": "http://github.com/twada/empower-core.git"
+ },
+ "scripts": {
+ "preversion": "npm test",
+ "version": "npm run dist && git add -A build",
+ "bower": "bower install --config.interactive=false",
+ "dist": "npm prune && npm dedupe && gulp dist",
+ "test": "gulp test",
+ "unit": "gulp unit",
+ "watch": "gulp watch",
+ "coveralls": "gulp coverage && cat ./coverage.lcov | coveralls"
+ }
+}