diff options
Diffstat (limited to 'public/bundle.js')
| -rw-r--r-- | public/bundle.js | 8762 |
1 files changed, 8309 insertions, 453 deletions
diff --git a/public/bundle.js b/public/bundle.js index 1de8dc3..6ad2977 100644 --- a/public/bundle.js +++ b/public/bundle.js @@ -63,7 +63,7 @@ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 178); +/******/ return __webpack_require__(__webpack_require__.s = 230); /******/ }) /************************************************************************/ /******/ ([ @@ -548,7 +548,7 @@ module.exports = shouldUseNative() ? Object.assign : function (target, source) { var _prodInvariant = __webpack_require__(3); var DOMProperty = __webpack_require__(13); -var ReactDOMComponentFlags = __webpack_require__(59); +var ReactDOMComponentFlags = __webpack_require__(71); var invariant = __webpack_require__(1); @@ -1133,7 +1133,7 @@ module.exports = ReactComponentTreeHook; var debugTool = null; if (process.env.NODE_ENV !== 'production') { - var ReactDebugTool = __webpack_require__(124); + var ReactDebugTool = __webpack_require__(168); debugTool = ReactDebugTool; } @@ -1204,11 +1204,11 @@ module.exports = emptyFunction; var _prodInvariant = __webpack_require__(3), _assign = __webpack_require__(4); -var CallbackQueue = __webpack_require__(57); +var CallbackQueue = __webpack_require__(69); var PooledClass = __webpack_require__(14); -var ReactFeatureFlags = __webpack_require__(62); -var ReactReconciler = __webpack_require__(18); -var Transaction = __webpack_require__(28); +var ReactFeatureFlags = __webpack_require__(74); +var ReactReconciler = __webpack_require__(19); +var Transaction = __webpack_require__(32); var invariant = __webpack_require__(1); @@ -2107,10 +2107,10 @@ var _assign = __webpack_require__(4); var ReactCurrentOwner = __webpack_require__(11); var warning = __webpack_require__(2); -var canDefineProperty = __webpack_require__(50); +var canDefineProperty = __webpack_require__(56); var hasOwnProperty = Object.prototype.hasOwnProperty; -var REACT_ELEMENT_TYPE = __webpack_require__(77); +var REACT_ELEMENT_TYPE = __webpack_require__(89); var RESERVED_PROPS = { key: true, @@ -2481,6 +2481,54 @@ module.exports = reactProdInvariant; /***/ (function(module, exports, __webpack_require__) { "use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _arguments = __webpack_require__(115); + +var _arguments2 = _interopRequireDefault(_arguments); + +var _utils = __webpack_require__(63); + +var _hooks = __webpack_require__(116); + +var _hooks2 = _interopRequireDefault(_hooks); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = { + _: _utils._, + getArguments: _arguments2.default, + stripSlashes: _utils.stripSlashes, + hooks: _hooks2.default, + matcher: _utils.matcher, + sorter: _utils.sorter, + select: _utils.select, + makeUrl: _utils.makeUrl, + // lodash functions + each: _utils.each, + some: _utils.some, + every: _utils.every, + keys: _utils.keys, + values: _utils.values, + isMatch: _utils.isMatch, + isEmpty: _utils.isEmpty, + isObject: _utils.isObject, + extend: _utils.extend, + omit: _utils.omit, + pick: _utils.pick, + merge: _utils.merge +}; +module.exports = exports['default']; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; /** * Copyright 2015-present, Facebook, Inc. * All rights reserved. @@ -2493,11 +2541,11 @@ module.exports = reactProdInvariant; -var DOMNamespaces = __webpack_require__(33); -var setInnerHTML = __webpack_require__(30); +var DOMNamespaces = __webpack_require__(39); +var setInnerHTML = __webpack_require__(34); -var createMicrosoftUnsafeLocalFunction = __webpack_require__(40); -var setTextContent = __webpack_require__(75); +var createMicrosoftUnsafeLocalFunction = __webpack_require__(46); +var setTextContent = __webpack_require__(87); var ELEMENT_NODE_TYPE = 1; var DOCUMENT_FRAGMENT_NODE_TYPE = 11; @@ -2600,7 +2648,7 @@ DOMLazyTree.queueText = queueText; module.exports = DOMLazyTree; /***/ }), -/* 18 */ +/* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2616,7 +2664,7 @@ module.exports = DOMLazyTree; -var ReactRef = __webpack_require__(138); +var ReactRef = __webpack_require__(182); var ReactInstrumentation = __webpack_require__(8); var warning = __webpack_require__(2); @@ -2774,7 +2822,7 @@ module.exports = ReactReconciler; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 19 */ +/* 20 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2792,16 +2840,16 @@ module.exports = ReactReconciler; var _assign = __webpack_require__(4); -var ReactChildren = __webpack_require__(169); -var ReactComponent = __webpack_require__(47); -var ReactPureComponent = __webpack_require__(173); -var ReactClass = __webpack_require__(170); -var ReactDOMFactories = __webpack_require__(171); +var ReactChildren = __webpack_require__(213); +var ReactComponent = __webpack_require__(53); +var ReactPureComponent = __webpack_require__(217); +var ReactClass = __webpack_require__(214); +var ReactDOMFactories = __webpack_require__(215); var ReactElement = __webpack_require__(15); -var ReactPropTypes = __webpack_require__(172); -var ReactVersion = __webpack_require__(174); +var ReactPropTypes = __webpack_require__(216); +var ReactVersion = __webpack_require__(218); -var onlyChild = __webpack_require__(176); +var onlyChild = __webpack_require__(220); var warning = __webpack_require__(2); var createElement = ReactElement.createElement; @@ -2809,7 +2857,7 @@ var createFactory = ReactElement.createFactory; var cloneElement = ReactElement.cloneElement; if (process.env.NODE_ENV !== 'production') { - var ReactElementValidator = __webpack_require__(78); + var ReactElementValidator = __webpack_require__(90); createElement = ReactElementValidator.createElement; createFactory = ReactElementValidator.createFactory; cloneElement = ReactElementValidator.cloneElement; @@ -2869,7 +2917,7 @@ module.exports = React; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 20 */ +/* 21 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2895,7 +2943,159 @@ module.exports = emptyObject; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 21 */ +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _qs = __webpack_require__(137); + +var _qs2 = _interopRequireDefault(_qs); + +var _feathersCommons = __webpack_require__(17); + +var _feathersErrors = __webpack_require__(28); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function toError(error) { + throw (0, _feathersErrors.convert)(error); +} + +var Base = function () { + function Base(settings) { + _classCallCheck(this, Base); + + this.name = (0, _feathersCommons.stripSlashes)(settings.name); + this.options = settings.options; + this.connection = settings.connection; + this.base = settings.base + '/' + this.name; + } + + _createClass(Base, [{ + key: 'makeUrl', + value: function makeUrl(params, id) { + params = params || {}; + var url = this.base; + + if (typeof id !== 'undefined' && id !== null) { + url += '/' + id; + } + + if (Object.keys(params).length !== 0) { + var queryString = _qs2.default.stringify(params); + + url += '?' + queryString; + } + + return url; + } + }, { + key: 'find', + value: function find() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + return this.request({ + url: this.makeUrl(params.query), + method: 'GET', + headers: _extends({}, params.headers) + }).catch(toError); + } + }, { + key: 'get', + value: function get(id) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (typeof id === 'undefined') { + return Promise.reject(new Error('id for \'get\' can not be undefined')); + } + + return this.request({ + url: this.makeUrl(params.query, id), + method: 'GET', + headers: _extends({}, params.headers) + }).catch(toError); + } + }, { + key: 'create', + value: function create(body) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + return this.request({ + url: this.makeUrl(params.query), + body: body, + method: 'POST', + headers: _extends({ 'Content-Type': 'application/json' }, params.headers) + }).catch(toError); + } + }, { + key: 'update', + value: function update(id, body) { + var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (typeof id === 'undefined') { + return Promise.reject(new Error('id for \'update\' can not be undefined, only \'null\' when updating multiple entries')); + } + + return this.request({ + url: this.makeUrl(params.query, id), + body: body, + method: 'PUT', + headers: _extends({ 'Content-Type': 'application/json' }, params.headers) + }).catch(toError); + } + }, { + key: 'patch', + value: function patch(id, body) { + var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (typeof id === 'undefined') { + return Promise.reject(new Error('id for \'patch\' can not be undefined, only \'null\' when updating multiple entries')); + } + + return this.request({ + url: this.makeUrl(params.query, id), + body: body, + method: 'PATCH', + headers: _extends({ 'Content-Type': 'application/json' }, params.headers) + }).catch(toError); + } + }, { + key: 'remove', + value: function remove(id) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (typeof id === 'undefined') { + return Promise.reject(new Error('id for \'remove\' can not be undefined, only \'null\' when removing multiple entries')); + } + + return this.request({ + url: this.makeUrl(params.query, id), + method: 'DELETE', + headers: _extends({}, params.headers) + }).catch(toError); + } + }]); + + return Base; +}(); + +exports.default = Base; +module.exports = exports['default']; + +/***/ }), +/* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2913,12 +3113,12 @@ module.exports = emptyObject; var _prodInvariant = __webpack_require__(3); -var EventPluginRegistry = __webpack_require__(25); -var EventPluginUtils = __webpack_require__(34); -var ReactErrorUtils = __webpack_require__(38); +var EventPluginRegistry = __webpack_require__(29); +var EventPluginUtils = __webpack_require__(40); +var ReactErrorUtils = __webpack_require__(44); -var accumulateInto = __webpack_require__(69); -var forEachAccumulated = __webpack_require__(70); +var accumulateInto = __webpack_require__(81); +var forEachAccumulated = __webpack_require__(82); var invariant = __webpack_require__(1); /** @@ -3179,7 +3379,7 @@ module.exports = EventPluginHub; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 22 */ +/* 24 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3195,11 +3395,11 @@ module.exports = EventPluginHub; -var EventPluginHub = __webpack_require__(21); -var EventPluginUtils = __webpack_require__(34); +var EventPluginHub = __webpack_require__(23); +var EventPluginUtils = __webpack_require__(40); -var accumulateInto = __webpack_require__(69); -var forEachAccumulated = __webpack_require__(70); +var accumulateInto = __webpack_require__(81); +var forEachAccumulated = __webpack_require__(82); var warning = __webpack_require__(2); var getListener = EventPluginHub.getListener; @@ -3319,7 +3519,7 @@ module.exports = EventPropagators; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 23 */ +/* 25 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3372,7 +3572,7 @@ var ReactInstanceMap = { module.exports = ReactInstanceMap; /***/ }), -/* 24 */ +/* 26 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3390,7 +3590,7 @@ module.exports = ReactInstanceMap; var SyntheticEvent = __webpack_require__(12); -var getEventTarget = __webpack_require__(43); +var getEventTarget = __webpack_require__(49); /** * @interface UIEvent @@ -3436,7 +3636,402 @@ SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface); module.exports = SyntheticUIEvent; /***/ }), -/* 25 */ +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = __webpack_require__(20); + + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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; }; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +function _extendableBuiltin(cls) { + function ExtendableBuiltin() { + var instance = Reflect.construct(cls, Array.from(arguments)); + Object.setPrototypeOf(instance, Object.getPrototypeOf(this)); + return instance; + } + + ExtendableBuiltin.prototype = Object.create(cls.prototype, { + constructor: { + value: cls, + enumerable: false, + writable: true, + configurable: true + } + }); + + if (Object.setPrototypeOf) { + Object.setPrototypeOf(ExtendableBuiltin, cls); + } else { + ExtendableBuiltin.__proto__ = cls; + } + + return ExtendableBuiltin; +} + +var debug = __webpack_require__(59)('feathers-errors'); + +// NOTE (EK): Babel doesn't properly support extending +// some classes in ES6. The Error class being one of them. +// Node v5.0+ does support this but until we want to drop support +// for older versions we need this hack. +// http://stackoverflow.com/questions/33870684/why-doesnt-instanceof-work-on-instances-of-error-subclasses-under-babel-node +// https://github.com/loganfsmyth/babel-plugin-transform-builtin-extend + +var FeathersError = function (_extendableBuiltin2) { + _inherits(FeathersError, _extendableBuiltin2); + + function FeathersError(msg, name, code, className, data) { + _classCallCheck(this, FeathersError); + + msg = msg || 'Error'; + + var errors = void 0; + var message = void 0; + var newData = void 0; + + if (msg instanceof Error) { + message = msg.message || 'Error'; + + // NOTE (EK): This is typically to handle validation errors + if (msg.errors) { + errors = msg.errors; + } + } else if ((typeof msg === 'undefined' ? 'undefined' : _typeof(msg)) === 'object') { + // Support plain old objects + message = msg.message || 'Error'; + data = msg; + } else { + // message is just a string + message = msg; + } + + if (data) { + // NOTE(EK): To make sure that we are not messing + // with immutable data, just make a copy. + // https://github.com/feathersjs/feathers-errors/issues/19 + newData = _extends({}, data); + + if (newData.errors) { + errors = newData.errors; + delete newData.errors; + } + } + + // NOTE (EK): Babel doesn't support this so + // we have to pass in the class name manually. + // this.name = this.constructor.name; + var _this = _possibleConstructorReturn(this, (FeathersError.__proto__ || Object.getPrototypeOf(FeathersError)).call(this, message)); + + _this.type = 'FeathersError'; + _this.name = name; + _this.message = message; + _this.code = code; + _this.className = className; + _this.data = newData; + _this.errors = errors || {}; + + debug(_this.name + '(' + _this.code + '): ' + _this.message); + return _this; + } + + // NOTE (EK): A little hack to get around `message` not + // being included in the default toJSON call. + + + _createClass(FeathersError, [{ + key: 'toJSON', + value: function toJSON() { + return { + name: this.name, + message: this.message, + code: this.code, + className: this.className, + data: this.data, + errors: this.errors + }; + } + }]); + + return FeathersError; +}(_extendableBuiltin(Error)); + +var BadRequest = function (_FeathersError) { + _inherits(BadRequest, _FeathersError); + + function BadRequest(message, data) { + _classCallCheck(this, BadRequest); + + return _possibleConstructorReturn(this, (BadRequest.__proto__ || Object.getPrototypeOf(BadRequest)).call(this, message, 'BadRequest', 400, 'bad-request', data)); + } + + return BadRequest; +}(FeathersError); + +var NotAuthenticated = function (_FeathersError2) { + _inherits(NotAuthenticated, _FeathersError2); + + function NotAuthenticated(message, data) { + _classCallCheck(this, NotAuthenticated); + + return _possibleConstructorReturn(this, (NotAuthenticated.__proto__ || Object.getPrototypeOf(NotAuthenticated)).call(this, message, 'NotAuthenticated', 401, 'not-authenticated', data)); + } + + return NotAuthenticated; +}(FeathersError); + +var PaymentError = function (_FeathersError3) { + _inherits(PaymentError, _FeathersError3); + + function PaymentError(message, data) { + _classCallCheck(this, PaymentError); + + return _possibleConstructorReturn(this, (PaymentError.__proto__ || Object.getPrototypeOf(PaymentError)).call(this, message, 'PaymentError', 402, 'payment-error', data)); + } + + return PaymentError; +}(FeathersError); + +var Forbidden = function (_FeathersError4) { + _inherits(Forbidden, _FeathersError4); + + function Forbidden(message, data) { + _classCallCheck(this, Forbidden); + + return _possibleConstructorReturn(this, (Forbidden.__proto__ || Object.getPrototypeOf(Forbidden)).call(this, message, 'Forbidden', 403, 'forbidden', data)); + } + + return Forbidden; +}(FeathersError); + +var NotFound = function (_FeathersError5) { + _inherits(NotFound, _FeathersError5); + + function NotFound(message, data) { + _classCallCheck(this, NotFound); + + return _possibleConstructorReturn(this, (NotFound.__proto__ || Object.getPrototypeOf(NotFound)).call(this, message, 'NotFound', 404, 'not-found', data)); + } + + return NotFound; +}(FeathersError); + +var MethodNotAllowed = function (_FeathersError6) { + _inherits(MethodNotAllowed, _FeathersError6); + + function MethodNotAllowed(message, data) { + _classCallCheck(this, MethodNotAllowed); + + return _possibleConstructorReturn(this, (MethodNotAllowed.__proto__ || Object.getPrototypeOf(MethodNotAllowed)).call(this, message, 'MethodNotAllowed', 405, 'method-not-allowed', data)); + } + + return MethodNotAllowed; +}(FeathersError); + +var NotAcceptable = function (_FeathersError7) { + _inherits(NotAcceptable, _FeathersError7); + + function NotAcceptable(message, data) { + _classCallCheck(this, NotAcceptable); + + return _possibleConstructorReturn(this, (NotAcceptable.__proto__ || Object.getPrototypeOf(NotAcceptable)).call(this, message, 'NotAcceptable', 406, 'not-acceptable', data)); + } + + return NotAcceptable; +}(FeathersError); + +var Timeout = function (_FeathersError8) { + _inherits(Timeout, _FeathersError8); + + function Timeout(message, data) { + _classCallCheck(this, Timeout); + + return _possibleConstructorReturn(this, (Timeout.__proto__ || Object.getPrototypeOf(Timeout)).call(this, message, 'Timeout', 408, 'timeout', data)); + } + + return Timeout; +}(FeathersError); + +var Conflict = function (_FeathersError9) { + _inherits(Conflict, _FeathersError9); + + function Conflict(message, data) { + _classCallCheck(this, Conflict); + + return _possibleConstructorReturn(this, (Conflict.__proto__ || Object.getPrototypeOf(Conflict)).call(this, message, 'Conflict', 409, 'conflict', data)); + } + + return Conflict; +}(FeathersError); + +var LengthRequired = function (_FeathersError10) { + _inherits(LengthRequired, _FeathersError10); + + function LengthRequired(message, data) { + _classCallCheck(this, LengthRequired); + + return _possibleConstructorReturn(this, (LengthRequired.__proto__ || Object.getPrototypeOf(LengthRequired)).call(this, message, 'LengthRequired', 411, 'length-required', data)); + } + + return LengthRequired; +}(FeathersError); + +var Unprocessable = function (_FeathersError11) { + _inherits(Unprocessable, _FeathersError11); + + function Unprocessable(message, data) { + _classCallCheck(this, Unprocessable); + + return _possibleConstructorReturn(this, (Unprocessable.__proto__ || Object.getPrototypeOf(Unprocessable)).call(this, message, 'Unprocessable', 422, 'unprocessable', data)); + } + + return Unprocessable; +}(FeathersError); + +var TooManyRequests = function (_FeathersError12) { + _inherits(TooManyRequests, _FeathersError12); + + function TooManyRequests(message, data) { + _classCallCheck(this, TooManyRequests); + + return _possibleConstructorReturn(this, (TooManyRequests.__proto__ || Object.getPrototypeOf(TooManyRequests)).call(this, message, 'TooManyRequests', 429, 'too-many-requests', data)); + } + + return TooManyRequests; +}(FeathersError); + +var GeneralError = function (_FeathersError13) { + _inherits(GeneralError, _FeathersError13); + + function GeneralError(message, data) { + _classCallCheck(this, GeneralError); + + return _possibleConstructorReturn(this, (GeneralError.__proto__ || Object.getPrototypeOf(GeneralError)).call(this, message, 'GeneralError', 500, 'general-error', data)); + } + + return GeneralError; +}(FeathersError); + +var NotImplemented = function (_FeathersError14) { + _inherits(NotImplemented, _FeathersError14); + + function NotImplemented(message, data) { + _classCallCheck(this, NotImplemented); + + return _possibleConstructorReturn(this, (NotImplemented.__proto__ || Object.getPrototypeOf(NotImplemented)).call(this, message, 'NotImplemented', 501, 'not-implemented', data)); + } + + return NotImplemented; +}(FeathersError); + +var BadGateway = function (_FeathersError15) { + _inherits(BadGateway, _FeathersError15); + + function BadGateway(message, data) { + _classCallCheck(this, BadGateway); + + return _possibleConstructorReturn(this, (BadGateway.__proto__ || Object.getPrototypeOf(BadGateway)).call(this, message, 'BadGateway', 502, 'bad-gateway', data)); + } + + return BadGateway; +}(FeathersError); + +var Unavailable = function (_FeathersError16) { + _inherits(Unavailable, _FeathersError16); + + function Unavailable(message, data) { + _classCallCheck(this, Unavailable); + + return _possibleConstructorReturn(this, (Unavailable.__proto__ || Object.getPrototypeOf(Unavailable)).call(this, message, 'Unavailable', 503, 'unavailable', data)); + } + + return Unavailable; +}(FeathersError); + +var errors = { + FeathersError: FeathersError, + BadRequest: BadRequest, + NotAuthenticated: NotAuthenticated, + PaymentError: PaymentError, + Forbidden: Forbidden, + NotFound: NotFound, + MethodNotAllowed: MethodNotAllowed, + NotAcceptable: NotAcceptable, + Timeout: Timeout, + Conflict: Conflict, + LengthRequired: LengthRequired, + Unprocessable: Unprocessable, + TooManyRequests: TooManyRequests, + GeneralError: GeneralError, + NotImplemented: NotImplemented, + BadGateway: BadGateway, + Unavailable: Unavailable, + 400: BadRequest, + 401: NotAuthenticated, + 402: PaymentError, + 403: Forbidden, + 404: NotFound, + 405: MethodNotAllowed, + 406: NotAcceptable, + 408: Timeout, + 409: Conflict, + 411: LengthRequired, + 422: Unprocessable, + 429: TooManyRequests, + 500: GeneralError, + 501: NotImplemented, + 502: BadGateway, + 503: Unavailable +}; + +function convert(error) { + if (!error) { + return error; + } + + var FeathersError = errors[error.name]; + var result = FeathersError ? new FeathersError(error.message, error.data) : new Error(error.message || error); + + if ((typeof error === 'undefined' ? 'undefined' : _typeof(error)) === 'object') { + _extends(result, error); + } + + return result; +} + +exports.default = _extends({ + convert: convert, + types: errors, + errors: errors +}, errors); +module.exports = exports['default']; + +/***/ }), +/* 29 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3697,7 +4292,7 @@ module.exports = EventPluginRegistry; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 26 */ +/* 30 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3715,12 +4310,12 @@ module.exports = EventPluginRegistry; var _assign = __webpack_require__(4); -var EventPluginRegistry = __webpack_require__(25); -var ReactEventEmitterMixin = __webpack_require__(128); -var ViewportMetrics = __webpack_require__(68); +var EventPluginRegistry = __webpack_require__(29); +var ReactEventEmitterMixin = __webpack_require__(172); +var ViewportMetrics = __webpack_require__(80); -var getVendorPrefixedEventName = __webpack_require__(164); -var isEventSupported = __webpack_require__(44); +var getVendorPrefixedEventName = __webpack_require__(208); +var isEventSupported = __webpack_require__(50); /** * Summary of `ReactBrowserEventEmitter` event handling: @@ -4030,7 +4625,7 @@ var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, { module.exports = ReactBrowserEventEmitter; /***/ }), -/* 27 */ +/* 31 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4046,10 +4641,10 @@ module.exports = ReactBrowserEventEmitter; -var SyntheticUIEvent = __webpack_require__(24); -var ViewportMetrics = __webpack_require__(68); +var SyntheticUIEvent = __webpack_require__(26); +var ViewportMetrics = __webpack_require__(80); -var getEventModifierState = __webpack_require__(42); +var getEventModifierState = __webpack_require__(48); /** * @interface MouseEvent @@ -4107,7 +4702,7 @@ SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface); module.exports = SyntheticMouseEvent; /***/ }), -/* 28 */ +/* 32 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4338,7 +4933,7 @@ module.exports = TransactionImpl; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 29 */ +/* 33 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4466,7 +5061,7 @@ function escapeTextContentForBrowser(text) { module.exports = escapeTextContentForBrowser; /***/ }), -/* 30 */ +/* 34 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4483,12 +5078,12 @@ module.exports = escapeTextContentForBrowser; var ExecutionEnvironment = __webpack_require__(6); -var DOMNamespaces = __webpack_require__(33); +var DOMNamespaces = __webpack_require__(39); var WHITESPACE_TEST = /^[ \r\n\t\f]/; var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/; -var createMicrosoftUnsafeLocalFunction = __webpack_require__(40); +var createMicrosoftUnsafeLocalFunction = __webpack_require__(46); // SVG temp container for IE lacking innerHTML var reusableSVGContainer; @@ -4569,7 +5164,466 @@ if (ExecutionEnvironment.canUseDOM) { module.exports = setInnerHTML; /***/ }), -/* 31 */ +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* global define */ +/** + * A base object for ECMAScript 5 style prototypal inheritance. + * + * @see https://github.com/rauschma/proto-js/ + * @see http://ejohn.org/blog/simple-javascript-inheritance/ + * @see http://uxebu.com/blog/2011/02/23/object-based-inheritance-for-ecmascript-5/ + */ +(function (root, factory) { + if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + root.Proto = factory(); + } +}(this, function () { + + function makeSuper(_super, old, name, fn) { + return function () { + var tmp = this._super; + + // Add a new ._super() method that is the same method + // but either pointing to the prototype method + // or to the overwritten method + this._super = (typeof old === 'function') ? old : _super[name]; + + // The method only need to be bound temporarily, so we + // remove it when we're done executing + var ret = fn.apply(this, arguments); + this._super = tmp; + + return ret; + }; + } + + function legacyMixin(prop, obj) { + var self = obj || this; + var fnTest = /\b_super\b/; + var _super = Object.getPrototypeOf(self) || self.prototype; + var _old; + + // Copy the properties over + for (var name in prop) { + // store the old function which would be overwritten + _old = self[name]; + + // Check if we're overwriting an existing function + if( + (( + typeof prop[name] === 'function' && + typeof _super[name] === 'function' + ) || ( + typeof _old === 'function' && + typeof prop[name] === 'function' + )) && fnTest.test(prop[name]) + ) { + self[name] = makeSuper(_super, _old, name, prop[name]); + } else { + self[name] = prop[name]; + } + } + + return self; + } + + function es5Mixin(prop, obj) { + var self = obj || this; + var fnTest = /\b_super\b/; + var _super = Object.getPrototypeOf(self) || self.prototype; + var descriptors = {}; + var proto = prop; + var processProperty = function(name) { + if(!descriptors[name]) { + descriptors[name] = Object.getOwnPropertyDescriptor(proto, name); + } + }; + + // Collect all property descriptors + do { + Object.getOwnPropertyNames(proto).forEach(processProperty); + } while((proto = Object.getPrototypeOf(proto)) && Object.getPrototypeOf(proto)); + + Object.keys(descriptors).forEach(function(name) { + var descriptor = descriptors[name]; + + if(typeof descriptor.value === 'function' && fnTest.test(descriptor.value)) { + descriptor.value = makeSuper(_super, self[name], name, descriptor.value); + } + + Object.defineProperty(self, name, descriptor); + }); + + return self; + } + + return { + /** + * Create a new object using Object.create. The arguments will be + * passed to the new instances init method or to a method name set in + * __init. + */ + create: function () { + var instance = Object.create(this); + var init = typeof instance.__init === 'string' ? instance.__init : 'init'; + + if (typeof instance[init] === 'function') { + instance[init].apply(instance, arguments); + } + return instance; + }, + /** + * Mixin a given set of properties + * @param prop The properties to mix in + * @param obj [optional] The object to add the mixin + */ + mixin: typeof Object.defineProperty === 'function' ? es5Mixin : legacyMixin, + /** + * Extend the current or a given object with the given property + * and return the extended object. + * @param prop The properties to extend with + * @param obj [optional] The object to extend from + * @returns The extended object + */ + extend: function (prop, obj) { + return this.mixin(prop, Object.create(obj || this)); + }, + /** + * Return a callback function with this set to the current or a given context object. + * @param name Name of the method to proxy + * @param args... [optional] Arguments to use for partial application + */ + proxy: function (name) { + var fn = this[name]; + var args = Array.prototype.slice.call(arguments, 1); + + args.unshift(this); + return fn.bind.apply(fn, args); + } + }; + +})); + + +/***/ }), +/* 36 */ +/***/ (function(module, exports) { + +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; + } + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + args = Array.prototype.slice.call(arguments, 1); + handler.apply(this, args); + } + } else if (isObject(handler)) { + args = Array.prototype.slice.call(arguments, 1); + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.prototype.listenerCount = function(type) { + if (this._events) { + var evlistener = this._events[type]; + + if (isFunction(evlistener)) + return 1; + else if (evlistener) + return evlistener.length; + } + return 0; +}; + +EventEmitter.listenerCount = function(emitter, type) { + return emitter.listenerCount(type); +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + + +/***/ }), +/* 37 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4642,7 +5696,7 @@ function shallowEqual(objA, objB) { module.exports = shallowEqual; /***/ }), -/* 32 */ +/* 38 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4658,14 +5712,14 @@ module.exports = shallowEqual; -var DOMLazyTree = __webpack_require__(17); -var Danger = __webpack_require__(101); +var DOMLazyTree = __webpack_require__(18); +var Danger = __webpack_require__(145); var ReactDOMComponentTree = __webpack_require__(5); var ReactInstrumentation = __webpack_require__(8); -var createMicrosoftUnsafeLocalFunction = __webpack_require__(40); -var setInnerHTML = __webpack_require__(30); -var setTextContent = __webpack_require__(75); +var createMicrosoftUnsafeLocalFunction = __webpack_require__(46); +var setInnerHTML = __webpack_require__(34); +var setTextContent = __webpack_require__(87); function getNodeAfter(parentNode, node) { // Special case for text components, which return [open, close] comments @@ -4873,7 +5927,7 @@ module.exports = DOMChildrenOperations; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 33 */ +/* 39 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4898,7 +5952,7 @@ var DOMNamespaces = { module.exports = DOMNamespaces; /***/ }), -/* 34 */ +/* 40 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4916,7 +5970,7 @@ module.exports = DOMNamespaces; var _prodInvariant = __webpack_require__(3); -var ReactErrorUtils = __webpack_require__(38); +var ReactErrorUtils = __webpack_require__(44); var invariant = __webpack_require__(1); var warning = __webpack_require__(2); @@ -5130,7 +6184,7 @@ module.exports = EventPluginUtils; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 35 */ +/* 41 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5194,7 +6248,7 @@ var KeyEscapeUtils = { module.exports = KeyEscapeUtils; /***/ }), -/* 36 */ +/* 42 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5212,8 +6266,8 @@ module.exports = KeyEscapeUtils; var _prodInvariant = __webpack_require__(3); -var React = __webpack_require__(19); -var ReactPropTypesSecret = __webpack_require__(67); +var React = __webpack_require__(20); +var ReactPropTypesSecret = __webpack_require__(79); var invariant = __webpack_require__(1); var warning = __webpack_require__(2); @@ -5335,7 +6389,7 @@ module.exports = LinkedValueUtils; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 37 */ +/* 43 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5387,7 +6441,7 @@ module.exports = ReactComponentEnvironment; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 38 */ +/* 44 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5470,7 +6524,7 @@ module.exports = ReactErrorUtils; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 39 */ +/* 45 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5489,7 +6543,7 @@ module.exports = ReactErrorUtils; var _prodInvariant = __webpack_require__(3); var ReactCurrentOwner = __webpack_require__(11); -var ReactInstanceMap = __webpack_require__(23); +var ReactInstanceMap = __webpack_require__(25); var ReactInstrumentation = __webpack_require__(8); var ReactUpdates = __webpack_require__(10); @@ -5702,7 +6756,7 @@ module.exports = ReactUpdateQueue; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 40 */ +/* 46 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5739,7 +6793,7 @@ var createMicrosoftUnsafeLocalFunction = function (func) { module.exports = createMicrosoftUnsafeLocalFunction; /***/ }), -/* 41 */ +/* 47 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5794,7 +6848,7 @@ function getEventCharCode(nativeEvent) { module.exports = getEventCharCode; /***/ }), -/* 42 */ +/* 48 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5842,7 +6896,7 @@ function getEventModifierState(nativeEvent) { module.exports = getEventModifierState; /***/ }), -/* 43 */ +/* 49 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5882,7 +6936,7 @@ function getEventTarget(nativeEvent) { module.exports = getEventTarget; /***/ }), -/* 44 */ +/* 50 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5947,7 +7001,7 @@ function isEventSupported(eventNameSuffix, capture) { module.exports = isEventSupported; /***/ }), -/* 45 */ +/* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5994,7 +7048,7 @@ function shouldUpdateReactComponent(prevElement, nextElement) { module.exports = shouldUpdateReactComponent; /***/ }), -/* 46 */ +/* 52 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6382,7 +7436,7 @@ module.exports = validateDOMNesting; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 47 */ +/* 53 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6400,10 +7454,10 @@ module.exports = validateDOMNesting; var _prodInvariant = __webpack_require__(16); -var ReactNoopUpdateQueue = __webpack_require__(48); +var ReactNoopUpdateQueue = __webpack_require__(54); -var canDefineProperty = __webpack_require__(50); -var emptyObject = __webpack_require__(20); +var canDefineProperty = __webpack_require__(56); +var emptyObject = __webpack_require__(21); var invariant = __webpack_require__(1); var warning = __webpack_require__(2); @@ -6506,7 +7560,7 @@ module.exports = ReactComponent; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 48 */ +/* 54 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6608,7 +7662,7 @@ module.exports = ReactNoopUpdateQueue; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 49 */ +/* 55 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6639,7 +7693,7 @@ module.exports = ReactPropTypeLocationNames; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 50 */ +/* 56 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6671,7 +7725,7 @@ module.exports = canDefineProperty; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 51 */ +/* 57 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6717,17 +7771,215 @@ function getIteratorFn(maybeIterable) { module.exports = getIteratorFn; /***/ }), -/* 52 */ +/* 58 */ +/***/ (function(module, exports) { + +/** + * Check if `obj` is an object. + * + * @param {Object} obj + * @return {Boolean} + * @api private + */ + +function isObject(obj) { + return null !== obj && 'object' === typeof obj; +} + +module.exports = isObject; + + +/***/ }), +/* 59 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(97); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window && typeof window.process !== 'undefined' && window.process.type === 'renderer') { + return true; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document && 'WebkitAppearance' in document.documentElement.style) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window && window.console && (console.firebug || (console.exception && console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + try { + return exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (typeof process !== 'undefined' && 'env' in process) { + return process.env.DEBUG; + } +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ -module.exports = __webpack_require__(19); +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 53 */ +/* 60 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6817,7 +8069,7 @@ module.exports = EventListener; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 54 */ +/* 61 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6849,7 +8101,7 @@ function focusNode(node) { module.exports = focusNode; /***/ }), -/* 55 */ +/* 62 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6889,7 +8141,1237 @@ function getActiveElement() /*?DOMElement*/{ module.exports = getActiveElement; /***/ }), -/* 56 */ +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +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; }; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.stripSlashes = stripSlashes; +exports.each = each; +exports.some = some; +exports.every = every; +exports.keys = keys; +exports.values = values; +exports.isMatch = isMatch; +exports.isEmpty = isEmpty; +exports.isObject = isObject; +exports.extend = extend; +exports.omit = omit; +exports.pick = pick; +exports.merge = merge; +exports.select = select; +exports.matcher = matcher; +exports.sorter = sorter; +exports.makeUrl = makeUrl; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +function stripSlashes(name) { + return name.replace(/^(\/*)|(\/*)$/g, ''); +} + +function each(obj, callback) { + if (obj && typeof obj.forEach === 'function') { + obj.forEach(callback); + } else if (isObject(obj)) { + Object.keys(obj).forEach(function (key) { + return callback(obj[key], key); + }); + } +} + +function some(value, callback) { + return Object.keys(value).map(function (key) { + return [value[key], key]; + }).some(function (current) { + return callback.apply(undefined, _toConsumableArray(current)); + }); +} + +function every(value, callback) { + return Object.keys(value).map(function (key) { + return [value[key], key]; + }).every(function (current) { + return callback.apply(undefined, _toConsumableArray(current)); + }); +} + +function keys(obj) { + return Object.keys(obj); +} + +function values(obj) { + return _.keys(obj).map(function (key) { + return obj[key]; + }); +} + +function isMatch(obj, item) { + return _.keys(item).every(function (key) { + return obj[key] === item[key]; + }); +} + +function isEmpty(obj) { + return _.keys(obj).length === 0; +} + +function isObject(item) { + return (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object' && !Array.isArray(item) && item !== null; +} + +function extend() { + return _extends.apply(undefined, arguments); +} + +function omit(obj) { + var result = _.extend({}, obj); + + for (var _len = arguments.length, keys = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + keys[_key - 1] = arguments[_key]; + } + + keys.forEach(function (key) { + return delete result[key]; + }); + return result; +} + +function pick(source) { + var result = {}; + + for (var _len2 = arguments.length, keys = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + keys[_key2 - 1] = arguments[_key2]; + } + + keys.forEach(function (key) { + result[key] = source[key]; + }); + return result; +} + +function merge(target, source) { + if (isObject(target) && isObject(source)) { + Object.keys(source).forEach(function (key) { + if (isObject(source[key])) { + if (!target[key]) _extends(target, _defineProperty({}, key, {})); + merge(target[key], source[key]); + } else { + _extends(target, _defineProperty({}, key, source[key])); + } + }); + } + return target; +} + +var _ = exports._ = { + each: each, + some: some, + every: every, + keys: keys, + values: values, + isMatch: isMatch, + isEmpty: isEmpty, + isObject: isObject, + extend: extend, + omit: omit, + pick: pick, + merge: merge +}; + +var specialFilters = exports.specialFilters = { + $in: function $in(key, ins) { + return function (current) { + return ins.indexOf(current[key]) !== -1; + }; + }, + $nin: function $nin(key, nins) { + return function (current) { + return nins.indexOf(current[key]) === -1; + }; + }, + $lt: function $lt(key, value) { + return function (current) { + return current[key] < value; + }; + }, + $lte: function $lte(key, value) { + return function (current) { + return current[key] <= value; + }; + }, + $gt: function $gt(key, value) { + return function (current) { + return current[key] > value; + }; + }, + $gte: function $gte(key, value) { + return function (current) { + return current[key] >= value; + }; + }, + $ne: function $ne(key, value) { + return function (current) { + return current[key] !== value; + }; + } +}; + +function select(params) { + var fields = params && params.query && params.query.$select; + + for (var _len3 = arguments.length, otherFields = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + otherFields[_key3 - 1] = arguments[_key3]; + } + + if (Array.isArray(fields) && otherFields.length) { + fields.push.apply(fields, otherFields); + } + + var convert = function convert(result) { + if (!Array.isArray(fields)) { + return result; + } + + return _.pick.apply(_, [result].concat(_toConsumableArray(fields))); + }; + + return function (result) { + if (Array.isArray(result)) { + return result.map(convert); + } + + return convert(result); + }; +} + +function matcher(originalQuery) { + var query = _.omit(originalQuery, '$limit', '$skip', '$sort', '$select'); + + return function (item) { + if (query.$or && _.some(query.$or, function (or) { + return matcher(or)(item); + })) { + return true; + } + + return _.every(query, function (value, key) { + if (value !== null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') { + return _.every(value, function (target, filterType) { + if (specialFilters[filterType]) { + var filter = specialFilters[filterType](key, target); + return filter(item); + } + + return false; + }); + } else if (typeof item[key] !== 'undefined') { + return item[key] === query[key]; + } + + return false; + }); + }; +} + +function sorter($sort) { + return function (first, second) { + var comparator = 0; + each($sort, function (modifier, key) { + modifier = parseInt(modifier, 10); + + if (first[key] < second[key]) { + comparator -= 1 * modifier; + } + + if (first[key] > second[key]) { + comparator += 1 * modifier; + } + }); + return comparator; + }; +} + +function makeUrl(path) { + var app = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + var get = typeof app.get === 'function' ? app.get.bind(app) : function () {}; + var env = get('env') || process.env.NODE_ENV; + var host = get('host') || process.env.HOST_NAME || 'localhost'; + var protocol = env === 'development' || env === 'test' || env === undefined ? 'http' : 'https'; + var PORT = get('port') || process.env.PORT || 3030; + var port = env === 'development' || env === 'test' || env === undefined ? ':' + PORT : ''; + + path = path || ''; + + return protocol + '://' + host + port + '/' + stripSlashes(path); +} +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.lowerCase = lowerCase; +exports.removeQuery = removeQuery; +exports.pluckQuery = pluckQuery; +exports.remove = remove; +exports.pluck = pluck; +exports.disable = disable; +exports.legacyPopulate = legacyPopulate; + +var _utils = __webpack_require__(65); + +/* eslint-env es6, node */ +/* eslint brace-style: 0, consistent-return: 0, no-console: 0, no-param-reassign: 0, no-var: 0 */ + +var errors = __webpack_require__(28).errors; + + +/** + * Lowercase the given fields either in the data submitted (as a before hook for create, + * update or patch) or in the result (as an after hook). If the data is an array or + * a paginated find result the hook will lowercase the field for every item. + * + * @param {Array.<string|Function>} fields - Field names to lowercase. Dot notation is supported. + * @returns {Function} hook function(hook). + * + * DEPRECATED: The last param may be a function to determine if the current hook should be updated. + * Its signature is func(hook) and it returns either a boolean or a promise resolving to a boolean. + * This boolean determines if the hook is updated. + * + * hooks.lowerCase('group', hook => hook.data.status === 1); + * hooks.lowerCase('group', hook => new Promise(resolve => { + * setTimeout(() => { resolve(true); }, 100) + * })); + * + */ +function lowerCase() { + for (var _len = arguments.length, fields = Array(_len), _key = 0; _key < _len; _key++) { + fields[_key] = arguments[_key]; + } + + var lowerCaseFields = function lowerCaseFields(data) { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var field = _step.value; + + var value = (0, _utils.getByDot)(data, field); + + if (value !== undefined) { + if (typeof value !== 'string' && value !== null) { + throw new errors.BadRequest('Expected string data. (lowercase ' + field + ')'); + } + + (0, _utils.setByDot)(data, field, value ? value.toLowerCase() : value); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + }; + + var callback = function callback() { + return true; + }; + if (typeof fields[fields.length - 1] === 'function') { + callback = fields.pop(); + console.error('DEPRECATED Predicate func will be removed next version. (lowerCase)'); + } + + return function (hook) { + var items = hook.type === 'before' ? hook.data : hook.result; + + var update = function update(condition) { + if (items && condition) { + if (hook.method === 'find' || Array.isArray(items)) { + // data.data if the find method is paginated + (items.data || items).forEach(lowerCaseFields); + } else { + lowerCaseFields(items); + } + } + return hook; + }; + + var check = callback(hook); + + return check && typeof check.then === 'function' ? check.then(update) : update(check); + }; +} + +/** + * Remove the given fields from the query params. + * Can be used as a before hook for any service method. + * + * @param {Array.<string|Function>} fields - Field names to remove. Dot notation is supported. + * @returns {Function} hook function(hook) + * + * DEPRECATED: The last param may be a function to determine if the current hook should be updated. + * Its signature is func(hook) and it returns either a boolean or a promise resolving to a boolean. + * This boolean determines if the hook is updated. + * + * hooks.lowerCase('group', hook => hook.data.status === 1); + * hooks.lowerCase('group', hook => new Promise(resolve => { + * setTimeout(() => { resolve(true); }, 100) + * })); + */ +function removeQuery() { + for (var _len2 = arguments.length, fields = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + fields[_key2] = arguments[_key2]; + } + + var removeQueries = function removeQueries(data) { + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = fields[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var field = _step2.value; + + var value = (0, _utils.getByDot)(data, field); // prevent setByDot creating nested empty objects + if (value !== undefined) { + (0, _utils.setByDot)(data, field, undefined, true); + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + }; + + var callback = function callback() { + return true; + }; + if (typeof fields[fields.length - 1] === 'function') { + callback = fields.pop(); + console.error('DEPRECATED Predicate func will be removed next version. (removeQuery)'); + } + + return function (hook) { + if (hook.type === 'after') { + var provider = hook.params.provider || 'server'; + throw new errors.GeneralError('Provider \'' + provider + '\' cannot remove query params on after hook. (removeQuery)'); + } + var result = hook.params.query; + var update = function update(condition) { + if (result && condition) { + removeQueries(result); + } + return hook; + }; + + var check = callback(hook); + + return check && typeof check.then === 'function' ? check.then(update) : update(check); + }; +} + +/** + * Discard all other fields except for the given fields from the query params. + * Can be used as a before hook for any service method. + * + * @param {Array.<string|Function>} fields - Field names to retain. Dot notation is supported. + * @returns {Function} hook function(hook) + * + * DEPRECATED: The last param may be a function to determine if the current hook should be updated. + * Its signature is func(hook) and it returns either a boolean or a promise resolving to a boolean. + * This boolean determines if the hook is updated. + * + * hooks.lowerCase('group', hook => hook.data.status === 1); + * hooks.lowerCase('group', hook => new Promise(resolve => { + * setTimeout(() => { resolve(true); }, 100) + * })); + */ +function pluckQuery() { + for (var _len3 = arguments.length, fields = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + fields[_key3] = arguments[_key3]; + } + + var pluckQueries = function pluckQueries(data) { + var plucked = {}; + + fields.forEach(function (field) { + var value = (0, _utils.getByDot)(data, field); // prevent setByDot creating nested empty objects + if (value !== undefined) { + (0, _utils.setByDot)(plucked, field, value); + } + }); + + return plucked; + }; + + var callback = function callback() { + return true; + }; + if (typeof fields[fields.length - 1] === 'function') { + callback = fields.pop(); + console.error('DEPRECATED Predicate func will be removed next version. (pluckQuery)'); + } + + return function (hook) { + if (hook.type === 'after') { + throw new errors.GeneralError('Provider \'' + hook.params.provider + '\' can not pluck query params on after hook. (pluckQuery)'); + } + var result = hook.params.query; + var update = function update(condition) { + if (result && condition) { + hook.params.query = pluckQueries(result); + } + return hook; + }; + + var check = callback(hook); + + return check && typeof check.then === 'function' ? check.then(update) : update(check); + }; +} + +/** + * Remove the given fields either from the data submitted (as a before hook for create, + * update or patch) or from the result (as an after hook). If the data is an array or + * a paginated find result the hook will remove the field for every item. + * + * @param {Array.<string|Function>} fields - Field names to remove. Dot notation is supported. + * @returns {Function} hook function(hook) + * + * The last param may be a function to determine if the current hook should be updated. + * Its signature is func(hook) and it returns either a boolean or a promise resolving to a boolean. + * This boolean determines if the hook is updated. + * + * hooks.lowerCase('group', hook => hook.data.status === 1); + * hooks.lowerCase('group', hook => new Promise(resolve => { + * setTimeout(() => { resolve(true); }, 100) + * })); + * + * The items are only updated for external requests, e.g. hook.params.provider is rest or socketio, + * or if the decision function mentioned above returns true. + */ +function remove() { + for (var _len4 = arguments.length, fields = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + fields[_key4] = arguments[_key4]; + } + + var removeFields = function removeFields(data) { + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = fields[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var field = _step3.value; + + var value = (0, _utils.getByDot)(data, field); + if (value !== undefined) { + // prevent setByDot creating nested empty objects + (0, _utils.setByDot)(data, field, undefined, true); + } + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3.return) { + _iterator3.return(); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + }; + + // when deprecating, remember hook should not run if called from server + var callback = function callback(hook) { + return !!hook.params.provider; + }; // important condition + if (typeof fields[fields.length - 1] === 'function') { + callback = fields.pop(); + } + + return function (hook) { + var result = hook.type === 'before' ? hook.data : hook.result; + var update = function update(condition) { + if (result && condition) { + if (Array.isArray(result)) { + result.forEach(removeFields); + } else { + removeFields(result); + + if (result.data) { + if (Array.isArray(result.data)) { + result.data.forEach(removeFields); + } else { + removeFields(result.data); + } + } + } + } + return hook; + }; + + var check = callback(hook); + + return check && typeof check.then === 'function' ? check.then(update) : update(check); + }; +} + +/** + * Discard all other fields except for the provided fields either from the data submitted + * (as a before hook for create, update or patch) or from the result (as an after hook). + * If the data is an array or a paginated find result the hook will remove the field for every item. + * + * @param {Array.<string|Function>} fields - Field names to remove. Dot notation is supported. + * @returns {Function} hook function(hook) + * + * DEPRECATED: The last param may be a function to determine if the current hook should be updated. + * Its signature is func(hook) and it returns either a boolean or a promise resolving to a boolean. + * This boolean determines if the hook is updated. + * + * hooks.lowerCase('group', hook => hook.data.status === 1); + * hooks.lowerCase('group', hook => new Promise(resolve => { + * setTimeout(() => { resolve(true); }, 100) + * })); + * + * The items are only updated for external requests, e.g. hook.params.provider is rest or socketio, + * or if the decision function mentioned above returns true. + */ +function pluck() { + for (var _len5 = arguments.length, fields = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + fields[_key5] = arguments[_key5]; + } + + var pluckFields = function pluckFields(data) { + var plucked = {}; + + fields.forEach(function (field) { + var value = (0, _utils.getByDot)(data, field); + if (value !== undefined) { + // prevent setByDot creating nested empty objects + (0, _utils.setByDot)(plucked, field, value); + } + }); + + return plucked; + }; + + // when deprecating, remember hook should not run if called from server + var callback = function callback(hook) { + return !!hook.params.provider; + }; + if (typeof fields[fields.length - 1] === 'function') { + callback = fields.pop(); + console.error('DEPRECATED Predicate func will be removed next version. (pluck)'); + } + + return function (hook) { + var update = function update(condition) { + if (condition) { + var items = (0, _utils.getItems)(hook); + + if (items) { + if (Array.isArray(items)) { + (0, _utils.replaceItems)(hook, items.map(pluckFields)); + } else { + (0, _utils.replaceItems)(hook, pluckFields(items)); + } + } + } + + return hook; + }; + + var check = callback(hook); + + return check && typeof check.then === 'function' ? check.then(update) : update(check); + }; +} + +/** + * Disable access to a service method completely, for a specific provider, + * or for a custom condition. + * + * @param {string|function} [realm] - Provider, or function(hook):boolean|Promise + * The first provider or the custom condition. + * null = disable completely, + * 'external' = disable external access, + * string = disable that provider e.g. 'rest', + * func(hook) = returns boolean or promise resolving to a boolean. false = disable access. + * @param {string|string[]} [args] - Additional provider names. + * @returns {Function} hook function(hook) + * + * The function may be invoked with + * - no param, or with undefined or null. All providers are disallowed, even the server. + * - multiple params of provider names, e.g. rest, socketio. They are all disabled. + * - 'external'. All client interfaces are disabled. + * - a function whose signature is func(hook). It returns either a boolean or a promise which + * resolves to a boolean. If false, the operation is disabled. This is the only way to disable + * calls from the server. + */ +function disable(realm) { + if (!realm) { + return function (hook) { + throw new errors.MethodNotAllowed('Calling \'' + hook.method + '\' not allowed. (disable)'); + }; + } + + if (typeof realm === 'function') { + return function (hook) { + var result = realm(hook); + var update = function update(check) { + if (!check) { + throw new errors.MethodNotAllowed('Calling \'' + hook.method + '\' not allowed. (disable)'); + } + }; + + if (result && typeof result.then === 'function') { + return result.then(update); + } + + update(result); + }; + } + + for (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) { + args[_key6 - 1] = arguments[_key6]; + } + + var providers = [realm].concat(args); + + return function (hook) { + var provider = hook.params.provider; + + if (realm === 'external' && provider || providers.indexOf(provider) !== -1) { + throw new errors.MethodNotAllowed('Provider \'' + hook.params.provider + '\' can not call \'' + hook.method + '\'. (disable)\''); + } + }; +} + +/** + * The populate hook uses a property from the result (or every item if it is a list) + * to retrieve a single related object from a service and add it to the original object. + * It is meant to be used as an after hook on any service method. + * + * @param {string} target - The prop name to contain the populated item or array of populated items. + * This is also the default for options.field if that is not specified. + * @param {Object} options - options + * For a mongoose model, these are the options for item.toObject(). + * For a Sequelize model, these are the options for item.toJSON(). + * @param {string} options.service - The service for the related object, e.g. '/messages'. + * @param {string|Array.<string>} options.field - The field containing the key(s) + * for the item(s) in options.service. + * @returns {Function} hook function(hook):Promise resolving to the hook. + * + * 'options.field' is the foreign key for one related item in options.service, i.e. item[options.field] === foreignItem[idField]. + * 'target' is set to this related item once it is read successfully. + * + * If 'options.field' is not present in the hook result item, the hook is ignored. + * + * So if the hook result has the message item + * { _id: '1...1', senderId: 'a...a', text: 'Jane, are you there?' } + * and the /users service has the item + * { _id: 'a...a', name: 'John Doe'} + * and then the hook is run + * hooks.populate('sender', { field: 'userId', service: '/users' }) + * the hook result will contain + * { _id: '1...1', senderId : 'a...a', text: 'Jane, are you there?', + * sender: { _id: 'a...a', name: 'John Doe'} } + * + * If 'senderId' is an array of keys, then 'sender' will be an array of populated items. + */ +function legacyPopulate(target, options) { + options = Object.assign({}, options); + + console.error('Calling populate(target, options) is now DEPRECATED and will be removed in the future. ' + 'Refer to docs.feathersjs.com for more information. (legacyPopulate)'); + + if (!options.service) { + throw new Error('You need to provide a service. (populate)'); + } + + var field = options.field || target; + + return function (hook) { + function populate1(item) { + if (!item[field]) { + return Promise.resolve(item); + } + + // Find by the field value by default or a custom query + var id = item[field]; + + // If it's a mongoose model then + if (typeof item.toObject === 'function') { + item = item.toObject(options); + } + // If it's a Sequelize model + else if (typeof item.toJSON === 'function') { + item = item.toJSON(options); + } + // Remove any query from params as it's not related + var params = Object.assign({}, hook.params, { query: undefined }); + // If the relationship is an array of ids, fetch and resolve an object for each, + // otherwise just fetch the object. + var promise = Array.isArray(id) ? Promise.all(id.map(function (objectID) { + return hook.app.service(options.service).get(objectID, params); + })) : hook.app.service(options.service).get(id, params); + return promise.then(function (relatedItem) { + if (relatedItem) { + item[target] = relatedItem; + } + return item; + }); + } + + if (hook.type !== 'after') { + throw new errors.GeneralError('Can not populate on before hook. (populate)'); + } + + var isPaginated = hook.method === 'find' && hook.result.data; + var data = isPaginated ? hook.result.data : hook.result; + + if (Array.isArray(data)) { + return Promise.all(data.map(populate1)).then(function (results) { + if (isPaginated) { + hook.result.data = results; + } else { + hook.result = results; + } + + return hook; + }); + } + + // Handle single objects. + return populate1(hook.result).then(function (item) { + hook.result = item; + return hook; + }); + }; +} + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +/* eslint no-param-reassign: 0 */ + +/**
+ * Get a value from an object using dot notation, e.g. employee.address.city
+ *
+ * @param {Object} obj - The object containing the value
+ * @param {string} path - The path to the value, e.g. employee.address.city
+ * @returns {*} The value, or undefined if the path does not exist
+ *
+ * There is no way to differentiate between non-existent paths and a value of undefined
+ */ +var getByDot = exports.getByDot = function getByDot(obj, path) { + if (path.indexOf('.') === -1) { + return obj[path]; + } + + return path.split('.').reduce(function (obj1, part) { + return (typeof obj1 === 'undefined' ? 'undefined' : _typeof(obj1)) === 'object' ? obj1[part] : undefined; + }, obj); +}; + +/**
+ * Set a value in an object using dot notation, e.g. employee.address.city.
+ *
+ * @param {Object} obj - The object
+ * @param {string} path - The path where to place the value, e.g. employee.address.city
+ * @param {*} value - The value.
+ * @param {boolean} ifDelete - Delete the prop at path if value is undefined.
+ * @returns {Object} The modified object.
+ *
+ * To delete a prop, set value = undefined and ifDelete = true. Note that
+ * new empty inner objects will still be created,
+ * e.g. setByDot({}, 'a.b.c', undefined, true) will return {a: b: {} }
+ */ +var setByDot = exports.setByDot = function setByDot(obj, path, value, ifDelete) { + if (path.indexOf('.') === -1) { + obj[path] = value; + + if (value === undefined && ifDelete) { + delete obj[path]; + } + + return; + } + + var parts = path.split('.'); + var lastIndex = parts.length - 1; + return parts.reduce(function (obj1, part, i) { + if (i !== lastIndex) { + if (!obj1.hasOwnProperty(part) || _typeof(obj1[part]) !== 'object') { + obj1[part] = {}; + } + return obj1[part]; + } + + obj1[part] = value; + if (value === undefined && ifDelete) { + delete obj1[part]; + } + return obj1; + }, obj); +}; + +/**
+ * Restrict the calling hook to a hook type (before, after) and a set of
+ * hook methods (find, get, create, update, patch, remove).
+ *
+ * @param {object} hook object
+ * @param {string|null} type permitted. 'before', 'after' or null for either.
+ * @param {array|string} methods permitted. find, get, create, update, patch, remove or null for any
+ * @param {string} label identifying hook in error messages. optional.
+ *
+ * Example:
+ * const checkContext = require('feathers-hooks-common/utils').checkContext;
+ *
+ * const includeCreatedAtHook = (options) => {
+ * const fieldName = (options && options.as) ? options.as : 'createdAt';
+ * return (hook) => {
+ * checkContext(hook, 'before', 'create', 'includeCreatedAtHook');
+ * hook.data[fieldName] = new Date());
+ * };
+ * },
+ *
+ * Examples:
+ * checkContext(hook, 'before', ['update', 'patch'], 'hookName');
+ * checkContext(hook, null, ['update', 'patch']);
+ * checkContext(hook, 'before', null, 'hookName');
+ * checkContext(hook, 'before');
+ */ + +var checkContext = exports.checkContext = function checkContext(hook) { + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var methods = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + var label = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'anonymous'; + + if (type && hook.type !== type) { + throw new Error('The \'' + label + '\' hook can only be used as a \'' + type + '\' hook.'); + } + + if (!methods) { + return; + } + + var myMethods = Array.isArray(methods) ? methods : [methods]; // safe enough for allowed values + + if (myMethods.length > 0 && myMethods.indexOf(hook.method) === -1) { + var msg = JSON.stringify(myMethods); + throw new Error('The \'' + label + '\' hook can only be used on the \'' + msg + '\' service method(s).'); + } +}; + +/**
+ * Return the data items in a hook.
+ * hook.data if type=before.
+ * hook.result.data if type=after, method=find with pagination.
+ * hook.result otherwise if type=after.
+ *
+ * @param {Object} hook - The hook.
+ * @returns {Object|Array.<Object>} The data item or array of data items
+ */ +var getItems = exports.getItems = function getItems(hook) { + var items = hook.type === 'before' ? hook.data : hook.result; + return items && hook.method === 'find' ? items.data || items : items; +}; + +/**
+ * Replace the data items in a hook. Companion to getItems.
+ *
+ * @param {Object} hook - The hook.
+ * @param {Object|Array.<Object>} items - The data item or array of data items
+ *
+ * If you update an after find paginated hook with an item rather than an array of items,
+ * the hook will have an array consisting of that one item.
+ */ +var replaceItems = exports.replaceItems = function replaceItems(hook, items) { + if (hook.type === 'before') { + hook.data = items; + } else if (hook.method === 'find' && hook.result && hook.result.data) { + if (Array.isArray(items)) { + hook.result.data = items; + hook.result.total = items.length; + } else { + hook.result.data = [items]; + hook.result.total = 1; + } + } else { + hook.result = items; + } +}; + +/***/ }), +/* 66 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var replace = String.prototype.replace; +var percentTwenties = /%20/g; + +module.exports = { + 'default': 'RFC3986', + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return value; + } + }, + RFC1738: 'RFC1738', + RFC3986: 'RFC3986' +}; + + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var has = Object.prototype.hasOwnProperty; + +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + } + + return array; +}()); + +exports.arrayToObject = function (source, options) { + var obj = options && options.plainObjects ? Object.create(null) : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + + return obj; +}; + +exports.merge = function (target, source, options) { + if (!source) { + return target; + } + + if (typeof source !== 'object') { + if (Array.isArray(target)) { + target.push(source); + } else if (typeof target === 'object') { + if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } + + return target; + } + + if (typeof target !== 'object') { + return [target].concat(source); + } + + var mergeTarget = target; + if (Array.isArray(target) && !Array.isArray(source)) { + mergeTarget = exports.arrayToObject(target, options); + } + + if (Array.isArray(target) && Array.isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + if (target[i] && typeof target[i] === 'object') { + target[i] = exports.merge(target[i], item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } + + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; + + if (Object.prototype.hasOwnProperty.call(acc, key)) { + acc[key] = exports.merge(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); +}; + +exports.decode = function (str) { + try { + return decodeURIComponent(str.replace(/\+/g, ' ')); + } catch (e) { + return str; + } +}; + +exports.encode = function (str) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = typeof str === 'string' ? str : String(str); + + var out = ''; + for (var i = 0; i < string.length; ++i) { + var c = string.charCodeAt(i); + + if ( + c === 0x2D || // - + c === 0x2E || // . + c === 0x5F || // _ + c === 0x7E || // ~ + (c >= 0x30 && c <= 0x39) || // 0-9 + (c >= 0x41 && c <= 0x5A) || // a-z + (c >= 0x61 && c <= 0x7A) // A-Z + ) { + out += string.charAt(i); + continue; + } + + if (c < 0x80) { + out = out + hexTable[c]; + continue; + } + + if (c < 0x800) { + out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); + out += hexTable[0xF0 | (c >> 18)] + hexTable[0x80 | ((c >> 12) & 0x3F)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]; // eslint-disable-line max-len + } + + return out; +}; + +exports.compact = function (obj, references) { + if (typeof obj !== 'object' || obj === null) { + return obj; + } + + var refs = references || []; + var lookup = refs.indexOf(obj); + if (lookup !== -1) { + return refs[lookup]; + } + + refs.push(obj); + + if (Array.isArray(obj)) { + var compacted = []; + + for (var i = 0; i < obj.length; ++i) { + if (obj[i] && typeof obj[i] === 'object') { + compacted.push(exports.compact(obj[i], refs)); + } else if (typeof obj[i] !== 'undefined') { + compacted.push(obj[i]); + } + } + + return compacted; + } + + var keys = Object.keys(obj); + keys.forEach(function (key) { + obj[key] = exports.compact(obj[key], refs); + }); + + return obj; +}; + +exports.isRegExp = function (obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; + +exports.isBuffer = function (obj) { + if (obj === null || typeof obj === 'undefined') { + return false; + } + + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; + + +/***/ }), +/* 68 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7042,7 +9524,7 @@ var CSSProperty = { module.exports = CSSProperty; /***/ }), -/* 57 */ +/* 69 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7167,7 +9649,7 @@ module.exports = PooledClass.addPoolingTo(CallbackQueue); /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 58 */ +/* 70 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7187,7 +9669,7 @@ var DOMProperty = __webpack_require__(13); var ReactDOMComponentTree = __webpack_require__(5); var ReactInstrumentation = __webpack_require__(8); -var quoteAttributeValueForBrowser = __webpack_require__(165); +var quoteAttributeValueForBrowser = __webpack_require__(209); var warning = __webpack_require__(2); var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$'); @@ -7410,7 +9892,7 @@ module.exports = DOMPropertyOperations; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 59 */ +/* 71 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7433,7 +9915,7 @@ var ReactDOMComponentFlags = { module.exports = ReactDOMComponentFlags; /***/ }), -/* 60 */ +/* 72 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7451,7 +9933,7 @@ module.exports = ReactDOMComponentFlags; var _assign = __webpack_require__(4); -var LinkedValueUtils = __webpack_require__(36); +var LinkedValueUtils = __webpack_require__(42); var ReactDOMComponentTree = __webpack_require__(5); var ReactUpdates = __webpack_require__(10); @@ -7639,7 +10121,7 @@ module.exports = ReactDOMSelect; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 61 */ +/* 73 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7674,7 +10156,7 @@ ReactEmptyComponent.injection = ReactEmptyComponentInjection; module.exports = ReactEmptyComponent; /***/ }), -/* 62 */ +/* 74 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7701,7 +10183,7 @@ var ReactFeatureFlags = { module.exports = ReactFeatureFlags; /***/ }), -/* 63 */ +/* 75 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7775,7 +10257,7 @@ module.exports = ReactHostComponent; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 64 */ +/* 76 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7791,11 +10273,11 @@ module.exports = ReactHostComponent; -var ReactDOMSelection = __webpack_require__(119); +var ReactDOMSelection = __webpack_require__(163); -var containsNode = __webpack_require__(84); -var focusNode = __webpack_require__(54); -var getActiveElement = __webpack_require__(55); +var containsNode = __webpack_require__(100); +var focusNode = __webpack_require__(61); +var getActiveElement = __webpack_require__(62); function isInDocument(node) { return containsNode(document.documentElement, node); @@ -7904,7 +10386,7 @@ var ReactInputSelection = { module.exports = ReactInputSelection; /***/ }), -/* 65 */ +/* 77 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7922,27 +10404,27 @@ module.exports = ReactInputSelection; var _prodInvariant = __webpack_require__(3); -var DOMLazyTree = __webpack_require__(17); +var DOMLazyTree = __webpack_require__(18); var DOMProperty = __webpack_require__(13); -var React = __webpack_require__(19); -var ReactBrowserEventEmitter = __webpack_require__(26); +var React = __webpack_require__(20); +var ReactBrowserEventEmitter = __webpack_require__(30); var ReactCurrentOwner = __webpack_require__(11); var ReactDOMComponentTree = __webpack_require__(5); -var ReactDOMContainerInfo = __webpack_require__(111); -var ReactDOMFeatureFlags = __webpack_require__(113); -var ReactFeatureFlags = __webpack_require__(62); -var ReactInstanceMap = __webpack_require__(23); +var ReactDOMContainerInfo = __webpack_require__(155); +var ReactDOMFeatureFlags = __webpack_require__(157); +var ReactFeatureFlags = __webpack_require__(74); +var ReactInstanceMap = __webpack_require__(25); var ReactInstrumentation = __webpack_require__(8); -var ReactMarkupChecksum = __webpack_require__(133); -var ReactReconciler = __webpack_require__(18); -var ReactUpdateQueue = __webpack_require__(39); +var ReactMarkupChecksum = __webpack_require__(177); +var ReactReconciler = __webpack_require__(19); +var ReactUpdateQueue = __webpack_require__(45); var ReactUpdates = __webpack_require__(10); -var emptyObject = __webpack_require__(20); -var instantiateReactComponent = __webpack_require__(73); +var emptyObject = __webpack_require__(21); +var instantiateReactComponent = __webpack_require__(85); var invariant = __webpack_require__(1); -var setInnerHTML = __webpack_require__(30); -var shouldUpdateReactComponent = __webpack_require__(45); +var setInnerHTML = __webpack_require__(34); +var shouldUpdateReactComponent = __webpack_require__(51); var warning = __webpack_require__(2); var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME; @@ -8448,7 +10930,7 @@ module.exports = ReactMount; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 66 */ +/* 78 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8467,7 +10949,7 @@ module.exports = ReactMount; var _prodInvariant = __webpack_require__(3); -var React = __webpack_require__(19); +var React = __webpack_require__(20); var invariant = __webpack_require__(1); @@ -8494,7 +10976,7 @@ module.exports = ReactNodeTypes; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 67 */ +/* 79 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8516,7 +10998,7 @@ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; module.exports = ReactPropTypesSecret; /***/ }), -/* 68 */ +/* 80 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8548,7 +11030,7 @@ var ViewportMetrics = { module.exports = ViewportMetrics; /***/ }), -/* 69 */ +/* 81 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8612,7 +11094,7 @@ module.exports = accumulateInto; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 70 */ +/* 82 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8648,7 +11130,7 @@ function forEachAccumulated(arr, cb, scope) { module.exports = forEachAccumulated; /***/ }), -/* 71 */ +/* 83 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8664,7 +11146,7 @@ module.exports = forEachAccumulated; -var ReactNodeTypes = __webpack_require__(66); +var ReactNodeTypes = __webpack_require__(78); function getHostComponentFromComposite(inst) { var type; @@ -8683,7 +11165,7 @@ function getHostComponentFromComposite(inst) { module.exports = getHostComponentFromComposite; /***/ }), -/* 72 */ +/* 84 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8721,7 +11203,7 @@ function getTextContentAccessor() { module.exports = getTextContentAccessor; /***/ }), -/* 73 */ +/* 85 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8740,11 +11222,11 @@ module.exports = getTextContentAccessor; var _prodInvariant = __webpack_require__(3), _assign = __webpack_require__(4); -var ReactCompositeComponent = __webpack_require__(108); -var ReactEmptyComponent = __webpack_require__(61); -var ReactHostComponent = __webpack_require__(63); +var ReactCompositeComponent = __webpack_require__(152); +var ReactEmptyComponent = __webpack_require__(73); +var ReactHostComponent = __webpack_require__(75); -var getNextDebugID = __webpack_require__(162); +var getNextDebugID = __webpack_require__(206); var invariant = __webpack_require__(1); var warning = __webpack_require__(2); @@ -8855,7 +11337,7 @@ module.exports = instantiateReactComponent; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 74 */ +/* 86 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8911,7 +11393,7 @@ function isTextInputElement(elem) { module.exports = isTextInputElement; /***/ }), -/* 75 */ +/* 87 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8928,8 +11410,8 @@ module.exports = isTextInputElement; var ExecutionEnvironment = __webpack_require__(6); -var escapeTextContentForBrowser = __webpack_require__(29); -var setInnerHTML = __webpack_require__(30); +var escapeTextContentForBrowser = __webpack_require__(33); +var setInnerHTML = __webpack_require__(34); /** * Set the textContent property of a node, ensuring that whitespace is preserved @@ -8968,7 +11450,7 @@ if (ExecutionEnvironment.canUseDOM) { module.exports = setTextContent; /***/ }), -/* 76 */ +/* 88 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8987,11 +11469,11 @@ module.exports = setTextContent; var _prodInvariant = __webpack_require__(3); var ReactCurrentOwner = __webpack_require__(11); -var REACT_ELEMENT_TYPE = __webpack_require__(127); +var REACT_ELEMENT_TYPE = __webpack_require__(171); -var getIteratorFn = __webpack_require__(161); +var getIteratorFn = __webpack_require__(205); var invariant = __webpack_require__(1); -var KeyEscapeUtils = __webpack_require__(35); +var KeyEscapeUtils = __webpack_require__(41); var warning = __webpack_require__(2); var SEPARATOR = '.'; @@ -9150,7 +11632,7 @@ module.exports = traverseAllChildren; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 77 */ +/* 89 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9175,7 +11657,7 @@ var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol module.exports = REACT_ELEMENT_TYPE; /***/ }), -/* 78 */ +/* 90 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9202,10 +11684,10 @@ var ReactCurrentOwner = __webpack_require__(11); var ReactComponentTreeHook = __webpack_require__(7); var ReactElement = __webpack_require__(15); -var checkReactTypeSpec = __webpack_require__(175); +var checkReactTypeSpec = __webpack_require__(219); -var canDefineProperty = __webpack_require__(50); -var getIteratorFn = __webpack_require__(51); +var canDefineProperty = __webpack_require__(56); +var getIteratorFn = __webpack_require__(57); var warning = __webpack_require__(2); function getDeclarationErrorAddendum() { @@ -9415,7 +11897,7 @@ module.exports = ReactElementValidator; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 79 */ +/* 91 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9437,7 +11919,7 @@ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; module.exports = ReactPropTypesSecret; /***/ }), -/* 80 */ +/* 92 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9449,10 +11931,38 @@ Object.defineProperty(exports, "__esModule", { var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -var _react = __webpack_require__(52); +var _react = __webpack_require__(27); var _react2 = _interopRequireDefault(_react); +var _LoggedOutView = __webpack_require__(94); + +var _LoggedOutView2 = _interopRequireDefault(_LoggedOutView); + +var _CalorieView = __webpack_require__(232); + +var _CalorieView2 = _interopRequireDefault(_CalorieView); + +var _client = __webpack_require__(127); + +var _client2 = _interopRequireDefault(_client); + +var _feathersHooks = __webpack_require__(119); + +var _feathersHooks2 = _interopRequireDefault(_feathersHooks); + +var _client3 = __webpack_require__(120); + +var _client4 = _interopRequireDefault(_client3); + +var _client5 = __webpack_require__(231); + +var _client6 = _interopRequireDefault(_client5); + +var _superagent = __webpack_require__(224); + +var _superagent2 = _interopRequireDefault(_superagent); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -9461,47 +11971,796 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +var rest = (0, _client4.default)(window.location.origin); + +var client = (0, _client2.default)().configure((0, _feathersHooks2.default)()).configure((0, _client6.default)({ storage: localStorage })).configure(rest.superagent(_superagent2.default)); + var App = function (_React$Component) { _inherits(App, _React$Component); function App() { _classCallCheck(this, App); - return _possibleConstructorReturn(this, (App.__proto__ || Object.getPrototypeOf(App)).apply(this, arguments)); + var _this = _possibleConstructorReturn(this, (App.__proto__ || Object.getPrototypeOf(App)).call(this)); + + _this.state = { + ready: true, + loggedIn: false, + user: {} + }; + client.authenticate().then(function (user) { + console.log(user); + _this.setState({ ready: true, loggedIn: true, user: user }); + }).catch(function (error) { + _this.setState({ ready: true }); + console.error(error); + }); + return _this; } _createClass(App, [{ key: 'render', value: function render() { + if (this.state.ready) { + if (this.state.loggedIn) { + return _react2.default.createElement(_CalorieView2.default, { client: client }); + } else { + return _react2.default.createElement(_LoggedOutView2.default, { client: client }); + } + } else { + return _react2.default.createElement( + 'div', + null, + 'LOADING...' + ); + } + } + }]); + + return App; +}(_react2.default.Component); + +exports.default = App; + +/***/ }), +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = __webpack_require__(153); + + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = __webpack_require__(27); + +var _react2 = _interopRequireDefault(_react); + +var _ModalDialog = __webpack_require__(95); + +var _ModalDialog2 = _interopRequireDefault(_ModalDialog); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var LoggedOutView = function (_React$Component) { + _inherits(LoggedOutView, _React$Component); + + function LoggedOutView() { + _classCallCheck(this, LoggedOutView); + + var _this = _possibleConstructorReturn(this, (LoggedOutView.__proto__ || Object.getPrototypeOf(LoggedOutView)).call(this)); + + _this.state = { modal: null }; + _this.showLogin = _this.showLogin.bind(_this); + _this.showSignup = _this.showSignup.bind(_this); + _this.closeModal = _this.closeModal.bind(_this); + return _this; + } + + _createClass(LoggedOutView, [{ + key: 'showLogin', + value: function showLogin() { + this.setState({ modal: 'login' }); + } + }, { + key: 'showSignup', + value: function showSignup() { + this.setState({ modal: 'signup' }); + } + }, { + key: 'closeModal', + value: function closeModal() { + this.setState({ modal: '' }); + } + }, { + key: 'render', + value: function render() { + var loginVisible = this.state.modal == 'login'; + var signupVisible = this.state.modal == 'signup'; + return _react2.default.createElement( + 'div', + null, + _react2.default.createElement(Welcome, { + onLoginClick: this.showLogin, + onSignupClick: this.showSignup }), + _react2.default.createElement(LoginForm, { + client: this.props.client, + visible: loginVisible, + onClose: this.closeModal }), + _react2.default.createElement(SignupForm, { + client: this.props.client, + visible: signupVisible, + onClose: this.closeModal }) + ); + } + }]); + + return LoggedOutView; +}(_react2.default.Component); + +exports.default = LoggedOutView; + +var Welcome = function (_React$Component2) { + _inherits(Welcome, _React$Component2); + + function Welcome() { + _classCallCheck(this, Welcome); + + return _possibleConstructorReturn(this, (Welcome.__proto__ || Object.getPrototypeOf(Welcome)).apply(this, arguments)); + } + + _createClass(Welcome, [{ + key: 'render', + value: function render() { return _react2.default.createElement( 'div', - { style: { textAlign: 'center' } }, + { className: 'welcome inner' }, _react2.default.createElement( 'h1', null, - 'Hello World' + 'Calorie Counter' + ), + _react2.default.createElement( + 'button', + { onClick: this.props.onLoginClick }, + 'Log In' + ), + _react2.default.createElement( + 'button', + { onClick: this.props.onSignupClick }, + 'Sign Up' ) ); } }]); - return App; + return Welcome; }(_react2.default.Component); -exports.default = App; +var LoginForm = function (_React$Component3) { + _inherits(LoginForm, _React$Component3); + + function LoginForm() { + _classCallCheck(this, LoginForm); + + var _this3 = _possibleConstructorReturn(this, (LoginForm.__proto__ || Object.getPrototypeOf(LoginForm)).call(this)); + + _this3.state = { + email: '', + password: '', + error: null + }; + _this3.updateState = _this3.updateState.bind(_this3); + _this3.handleSubmit = _this3.handleSubmit.bind(_this3); + return _this3; + } + + _createClass(LoginForm, [{ + key: 'updateState', + value: function updateState(event) { + var _setState; + + var name = event.target.name; + var value = event.target.value; + this.setState((_setState = {}, _defineProperty(_setState, name, value), _defineProperty(_setState, 'error', null), _setState)); + } + }, { + key: 'handleSubmit', + value: function handleSubmit(event) { + var _this4 = this; + + event.preventDefault(); + this.props.client.authenticate({ + type: 'local', + email: this.state.email, + password: this.state.password + }).then(function (res) { + console.log('Authenticated!', res); + // this.props.client.set('user', res.data) + // something in this library is hardcoded accessToken + // return this.props.client.passport.setJWT(res.token) + }).catch(function (error) { + console.error('Error authenticating!', error); + _this4.setState({ + error: error.toString() + }); + }); + } + }, { + key: 'render', + value: function render() { + return _react2.default.createElement( + _ModalDialog2.default, + { visible: this.props.visible, onClose: this.props.onClose }, + _react2.default.createElement( + 'form', + { onSubmit: this.handleSubmit }, + _react2.default.createElement('input', { type: 'email', + name: 'email', + placeholder: 'Email address', + onChange: this.updateState + }), + _react2.default.createElement('br', null), + _react2.default.createElement('input', { type: 'password', + name: 'password', + placeholder: 'Password', + onChange: this.updateState + }), + _react2.default.createElement('br', null), + _react2.default.createElement('input', { type: 'submit', + value: 'Log In' + }), + _react2.default.createElement( + 'div', + { className: 'error' }, + this.state.error + ) + ) + ); + } + }]); + + return LoginForm; +}(_react2.default.Component); + +var SignupForm = function (_React$Component4) { + _inherits(SignupForm, _React$Component4); + + function SignupForm() { + _classCallCheck(this, SignupForm); + + var _this5 = _possibleConstructorReturn(this, (SignupForm.__proto__ || Object.getPrototypeOf(SignupForm)).call(this)); + + _this5.state = { + email: '', + password: '', + goal: 0, + error: null + }; + _this5.updateState = _this5.updateState.bind(_this5); + _this5.handleSubmit = _this5.handleSubmit.bind(_this5); + return _this5; + } + + _createClass(SignupForm, [{ + key: 'updateState', + value: function updateState(event) { + var _setState2; + + var name = event.target.name; + var value = event.target.value; + this.setState((_setState2 = {}, _defineProperty(_setState2, name, value), _defineProperty(_setState2, 'error', null), _setState2)); + } + }, { + key: 'handleSubmit', + value: function handleSubmit(event) { + var _this6 = this; + + event.preventDefault(); + var usersService = this.props.client.service('users'); + usersService.create(this.state).then(function (result) { + return _this6.props.client.authenticate({ + strategy: 'local', + email: _this6.state.email, + password: _this6.state.password + }); + }).then(function (res) { + _this6.props.client.set('user', res.data); + _this6.props.client.set('token', res.accessToken); + return client.passport.verifyJWT(res.accessToken); + }).then(function (payload) { + console.log(payload); + }).catch(function (error) { + console.error(error); + _this6.setState({ + error: error.toString() + }); + }); + } + }, { + key: 'render', + value: function render() { + return _react2.default.createElement( + _ModalDialog2.default, + { visible: this.props.visible, onClose: this.props.onClose }, + _react2.default.createElement( + 'form', + { onSubmit: this.handleSubmit }, + _react2.default.createElement('input', { type: 'email', + name: 'email', + placeholder: 'Email address', + onChange: this.updateState + }), + _react2.default.createElement('br', null), + _react2.default.createElement('input', { type: 'password', + name: 'password', + placeholder: 'Password', + onChange: this.updateState + }), + _react2.default.createElement('br', null), + _react2.default.createElement('input', { type: 'number', + name: 'goal', + min: '0', + max: '100000', + placeholder: 'Calorie Goal', + onChange: this.updateState + }), + _react2.default.createElement('br', null), + _react2.default.createElement('input', { type: 'submit', + value: 'Sign Up' + }), + _react2.default.createElement( + 'div', + { className: 'error' }, + this.state.error + ) + ) + ); + } + }]); + + return SignupForm; +}(_react2.default.Component); /***/ }), -/* 81 */ +/* 95 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = __webpack_require__(109); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = ModalDialog; + +var _react = __webpack_require__(27); + +var _react2 = _interopRequireDefault(_react); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function ModalDialog(props) { + var visible = props.visible ? 'visible' : ''; + function cancel(e) { + e.stopPropagation(); + } + return _react2.default.createElement( + 'div', + { className: 'modal ' + visible, onClick: props.onClose }, + _react2.default.createElement( + 'div', + { className: 'inner', onClick: cancel }, + props.children, + _react2.default.createElement( + 'div', + { className: 'close', onClick: props.onClose }, + 'x' + ) + ) + ); +} /***/ }), -/* 82 */ +/* 96 */ +/***/ (function(module, exports, __webpack_require__) { + +
+/**
+ * Expose `Emitter`.
+ */
+
+if (true) {
+ module.exports = Emitter;
+}
+
+/**
+ * Initialize a new `Emitter`.
+ *
+ * @api public
+ */
+
+function Emitter(obj) {
+ if (obj) return mixin(obj);
+};
+
+/**
+ * Mixin the emitter properties.
+ *
+ * @param {Object} obj
+ * @return {Object}
+ * @api private
+ */
+
+function mixin(obj) {
+ for (var key in Emitter.prototype) {
+ obj[key] = Emitter.prototype[key];
+ }
+ return obj;
+}
+
+/**
+ * Listen on the given `event` with `fn`.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+Emitter.prototype.on =
+Emitter.prototype.addEventListener = function(event, fn){
+ this._callbacks = this._callbacks || {};
+ (this._callbacks['$' + event] = this._callbacks['$' + event] || [])
+ .push(fn);
+ return this;
+};
+
+/**
+ * Adds an `event` listener that will be invoked a single
+ * time then automatically removed.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+Emitter.prototype.once = function(event, fn){
+ function on() {
+ this.off(event, on);
+ fn.apply(this, arguments);
+ }
+
+ on.fn = fn;
+ this.on(event, on);
+ return this;
+};
+
+/**
+ * Remove the given callback for `event` or all
+ * registered callbacks.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+Emitter.prototype.off =
+Emitter.prototype.removeListener =
+Emitter.prototype.removeAllListeners =
+Emitter.prototype.removeEventListener = function(event, fn){
+ this._callbacks = this._callbacks || {};
+
+ // all
+ if (0 == arguments.length) {
+ this._callbacks = {};
+ return this;
+ }
+
+ // specific event
+ var callbacks = this._callbacks['$' + event];
+ if (!callbacks) return this;
+
+ // remove all handlers
+ if (1 == arguments.length) {
+ delete this._callbacks['$' + event];
+ return this;
+ }
+
+ // remove specific handler
+ var cb;
+ for (var i = 0; i < callbacks.length; i++) {
+ cb = callbacks[i];
+ if (cb === fn || cb.fn === fn) {
+ callbacks.splice(i, 1);
+ break;
+ }
+ }
+ return this;
+};
+
+/**
+ * Emit `event` with the given args.
+ *
+ * @param {String} event
+ * @param {Mixed} ...
+ * @return {Emitter}
+ */
+
+Emitter.prototype.emit = function(event){
+ this._callbacks = this._callbacks || {};
+ var args = [].slice.call(arguments, 1)
+ , callbacks = this._callbacks['$' + event];
+
+ if (callbacks) {
+ callbacks = callbacks.slice(0);
+ for (var i = 0, len = callbacks.length; i < len; ++i) {
+ callbacks[i].apply(this, args);
+ }
+ }
+
+ return this;
+};
+
+/**
+ * Return array of callbacks for `event`.
+ *
+ * @param {String} event
+ * @return {Array}
+ * @api public
+ */
+
+Emitter.prototype.listeners = function(event){
+ this._callbacks = this._callbacks || {};
+ return this._callbacks['$' + event] || [];
+};
+
+/**
+ * Check if this emitter has `event` handlers.
+ *
+ * @param {String} event
+ * @return {Boolean}
+ * @api public
+ */
+
+Emitter.prototype.hasListeners = function(event){
+ return !! this.listeners(event).length;
+};
+ + +/***/ }), +/* 97 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = __webpack_require__(136); + +/** + * The currently active debug mode names, and names to skip. + */ + +exports.names = []; +exports.skips = []; + +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + +exports.formatters = {}; + +/** + * Previous log timestamp. + */ + +var prevTime; + +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + +function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; +} + +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + +function createDebug(namespace) { + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + return debug; +} + +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + +function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var split = (namespaces || '').split(/[\s,]+/); + var len = split.length; + + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } +} + +/** + * Disable debug output. + * + * @api public + */ + +function disable() { + exports.enable(''); +} + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} + +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} + + +/***/ }), +/* 98 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9538,7 +12797,7 @@ function camelize(string) { module.exports = camelize; /***/ }), -/* 83 */ +/* 99 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9555,7 +12814,7 @@ module.exports = camelize; -var camelize = __webpack_require__(82); +var camelize = __webpack_require__(98); var msPattern = /^-ms-/; @@ -9583,7 +12842,7 @@ function camelizeStyleName(string) { module.exports = camelizeStyleName; /***/ }), -/* 84 */ +/* 100 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9600,7 +12859,7 @@ module.exports = camelizeStyleName; * */ -var isTextNode = __webpack_require__(92); +var isTextNode = __webpack_require__(108); /*eslint-disable no-bitwise */ @@ -9628,7 +12887,7 @@ function containsNode(outerNode, innerNode) { module.exports = containsNode; /***/ }), -/* 85 */ +/* 101 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9761,7 +13020,7 @@ module.exports = createArrayFromMixed; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 86 */ +/* 102 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9782,8 +13041,8 @@ module.exports = createArrayFromMixed; var ExecutionEnvironment = __webpack_require__(6); -var createArrayFromMixed = __webpack_require__(85); -var getMarkupWrap = __webpack_require__(87); +var createArrayFromMixed = __webpack_require__(101); +var getMarkupWrap = __webpack_require__(103); var invariant = __webpack_require__(1); /** @@ -9851,7 +13110,7 @@ module.exports = createNodesFromMarkup; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 87 */ +/* 103 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9952,7 +13211,7 @@ module.exports = getMarkupWrap; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 88 */ +/* 104 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9996,7 +13255,7 @@ function getUnboundedScrollPosition(scrollable) { module.exports = getUnboundedScrollPosition; /***/ }), -/* 89 */ +/* 105 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10034,7 +13293,7 @@ function hyphenate(string) { module.exports = hyphenate; /***/ }), -/* 90 */ +/* 106 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10051,7 +13310,7 @@ module.exports = hyphenate; -var hyphenate = __webpack_require__(89); +var hyphenate = __webpack_require__(105); var msPattern = /^ms-/; @@ -10078,7 +13337,7 @@ function hyphenateStyleName(string) { module.exports = hyphenateStyleName; /***/ }), -/* 91 */ +/* 107 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10106,7 +13365,7 @@ function isNode(object) { module.exports = isNode; /***/ }), -/* 92 */ +/* 108 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10123,7 +13382,7 @@ module.exports = isNode; * @typechecks */ -var isNode = __webpack_require__(91); +var isNode = __webpack_require__(107); /** * @param {*} object The object to check. @@ -10136,7 +13395,7 @@ function isTextNode(object) { module.exports = isTextNode; /***/ }), -/* 93 */ +/* 109 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10171,7 +13430,7 @@ function memoizeStringOnly(callback) { module.exports = memoizeStringOnly; /***/ }), -/* 94 */ +/* 110 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10199,7 +13458,7 @@ if (ExecutionEnvironment.canUseDOM) { module.exports = performance || {}; /***/ }), -/* 95 */ +/* 111 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10216,7 +13475,7 @@ module.exports = performance || {}; * @typechecks */ -var performance = __webpack_require__(94); +var performance = __webpack_require__(110); var performanceNow; @@ -10238,7 +13497,2547 @@ if (performance.now) { module.exports = performanceNow; /***/ }), -/* 96 */ +/* 112 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.populateParams = populateParams; +exports.populateHeader = populateHeader; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function populateParams() { + return function (hook) { + var app = hook.app; + + Object.assign(hook.params, { + user: app.get('user'), + token: app.get('token') + }); + }; +} + +function populateHeader() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + return function (hook) { + if (hook.params.token) { + hook.params.headers = Object.assign({}, _defineProperty({}, options.header || 'authorization', hook.params.token), hook.params.headers); + } + }; +} + +/***/ }), +/* 113 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function () { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var config = Object.assign({}, defaults, opts); + + return function () { + var app = this; + + if (!app.get('storage')) { + app.set('storage', (0, _utils.getStorage)(config.storage)); + } + + app.authenticate = function () { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var storage = this.get('storage'); + var getOptions = Promise.resolve(options); + + // If no type was given let's try to authenticate with a stored JWT + if (!options.type) { + getOptions = (0, _utils.getJWT)(config.tokenKey, config.cookie, this.get('storage')).then(function (token) { + if (!token) { + return Promise.reject(new _feathersErrors2.default.NotAuthenticated('Could not find stored JWT and no authentication type was given')); + } + + return { type: 'token', token: token }; + }); + } + + var handleResponse = function handleResponse(response) { + app.set('token', response.token); + app.set('user', response.data); + + return Promise.resolve(storage.setItem(config.tokenKey, response.token)).then(function () { + return response; + }); + }; + + return getOptions.then(function (options) { + var endPoint = void 0; + + if (options.endpoint) { + endPoint = options.endpoint; + } else if (options.type === 'local') { + endPoint = config.localEndpoint; + } else if (options.type === 'token') { + endPoint = config.tokenEndpoint; + } else { + throw new Error('Unsupported authentication \'type\': ' + options.type); + } + + return (0, _utils.connected)(app).then(function (socket) { + // TODO (EK): Handle OAuth logins + // If we are using a REST client + if (app.rest) { + return app.service(endPoint).create(options).then(handleResponse); + } + + var method = app.io ? 'emit' : 'send'; + + return (0, _utils.authenticateSocket)(options, socket, method).then(handleResponse); + }); + }); + }; + + // Set our logout method with the correct socket context + app.logout = function () { + app.set('user', null); + app.set('token', null); + + (0, _utils.clearCookie)(config.cookie); + + // remove the token from localStorage + return Promise.resolve(app.get('storage').removeItem(config.tokenKey)).then(function () { + // If using sockets de-authenticate the socket + if (app.io || app.primus) { + var method = app.io ? 'emit' : 'send'; + var socket = app.io ? app.io : app.primus; + + return (0, _utils.logoutSocket)(socket, method); + } + }); + }; + + // Set up hook that adds token and user to params so that + // it they can be accessed by client side hooks and services + app.mixins.push(function (service) { + if (typeof service.before !== 'function' || typeof service.after !== 'function') { + throw new Error('It looks like feathers-hooks isn\'t configured. It is required before running feathers-authentication.'); + } + + service.before(hooks.populateParams(config)); + }); + + // Set up hook that adds authorization header for REST provider + if (app.rest) { + app.mixins.push(function (service) { + service.before(hooks.populateHeader(config)); + }); + } + }; +}; + +var _feathersErrors = __webpack_require__(28); + +var _feathersErrors2 = _interopRequireDefault(_feathersErrors); + +var _hooks = __webpack_require__(112); + +var hooks = _interopRequireWildcard(_hooks); + +var _utils = __webpack_require__(114); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var defaults = { + cookie: 'feathers-jwt', + tokenKey: 'feathers-jwt', + localEndpoint: '/auth/local', + tokenEndpoint: '/auth/token' +}; + +module.exports = exports['default']; + +/***/ }), +/* 114 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.connected = connected; +exports.authenticateSocket = authenticateSocket; +exports.logoutSocket = logoutSocket; +exports.getCookie = getCookie; +exports.clearCookie = clearCookie; +exports.getJWT = getJWT; +exports.getStorage = getStorage; +// Returns a promise that resolves when the socket is connected +function connected(app) { + return new Promise(function (resolve, reject) { + if (app.rest) { + return resolve(); + } + + var socket = app.io || app.primus; + + if (!socket) { + return reject(new Error('It looks like no client connection has been configured.')); + } + + // If one of those events happens before `connect` the promise will be rejected + // If it happens after, it will do nothing (since Promises can only resolve once) + socket.once('disconnect', reject); + socket.once('close', reject); + + // If the socket is not connected yet we have to wait for the `connect` event + if (app.io && !socket.connected || app.primus && socket.readyState !== 3) { + var connectEvent = app.primus ? 'open' : 'connect'; + socket.once(connectEvent, function () { + return resolve(socket); + }); + } else { + resolve(socket); + } + }); +} + +// Returns a promise that authenticates a socket +function authenticateSocket(options, socket, method) { + return new Promise(function (resolve, reject) { + socket.once('unauthorized', reject); + socket.once('authenticated', resolve); + + socket[method]('authenticate', options); + }); +} + +// Returns a promise that de-authenticates a socket +function logoutSocket(socket, method) { + return new Promise(function (resolve, reject) { + socket[method]('logout', function (error) { + if (error) { + reject(error); + } + + resolve(); + }); + }); +} + +// Returns the value for a cookie +function getCookie(name) { + if (typeof document !== 'undefined') { + var value = '; ' + document.cookie; + var parts = value.split('; ' + name + '='); + + if (parts.length === 2) { + return parts.pop().split(';').shift(); + } + } + + return null; +} + +// Returns the value for a cookie +function clearCookie(name) { + if (typeof document !== 'undefined') { + document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;'; + } + + return null; +} + +// Tries the JWT from the given key either from a storage or the cookie +function getJWT(tokenKey, cookieKey, storage) { + return Promise.resolve(storage.getItem(tokenKey)).then(function (jwt) { + var cookieToken = getCookie(cookieKey); + + if (cookieToken) { + return cookieToken; + } + + return jwt; + }); +} + +// Returns a storage implementation +function getStorage(storage) { + if (storage) { + return storage; + } + + return { + store: {}, + getItem: function getItem(key) { + return this.store[key]; + }, + setItem: function setItem(key, value) { + return this.store[key] = value; + }, + removeItem: function removeItem(key) { + delete this.store[key]; + return this; + } + }; +} + +/***/ }), +/* 115 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = getArguments; + +function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } + +var noop = exports.noop = function noop() {}; +var getCallback = function getCallback(args) { + var last = args[args.length - 1]; + return typeof last === 'function' ? last : noop; +}; +var getParams = function getParams(args, position) { + return _typeof(args[position]) === 'object' ? args[position] : {}; +}; + +var updateOrPatch = function updateOrPatch(name) { + return function (args) { + var id = args[0]; + var data = args[1]; + var callback = getCallback(args); + var params = getParams(args, 2); + + if (typeof id === 'function') { + throw new Error('First parameter for \'' + name + '\' can not be a function'); + } + + if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) !== 'object') { + throw new Error('No data provided for \'' + name + '\''); + } + + if (args.length > 4) { + throw new Error('Too many arguments for \'' + name + '\' service method'); + } + + return [id, data, params, callback]; + }; +}; + +var getOrRemove = function getOrRemove(name) { + return function (args) { + var id = args[0]; + var params = getParams(args, 1); + var callback = getCallback(args); + + if (args.length > 3) { + throw new Error('Too many arguments for \'' + name + '\' service method'); + } + + if (typeof id === 'function') { + throw new Error('First parameter for \'' + name + '\' can not be a function'); + } + + return [id, params, callback]; + }; +}; + +var converters = exports.converters = { + find: function find(args) { + var callback = getCallback(args); + var params = getParams(args, 0); + + if (args.length > 2) { + throw new Error('Too many arguments for \'find\' service method'); + } + + return [params, callback]; + }, + create: function create(args) { + var data = args[0]; + var params = getParams(args, 1); + var callback = getCallback(args); + + if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) !== 'object') { + throw new Error('First parameter for \'create\' must be an object'); + } + + if (args.length > 3) { + throw new Error('Too many arguments for \'create\' service method'); + } + + return [data, params, callback]; + }, + + update: updateOrPatch('update'), + + patch: updateOrPatch('patch'), + + get: getOrRemove('get'), + + remove: getOrRemove('remove') +}; + +function getArguments(method, args) { + return converters[method](args); +} + +/***/ }), +/* 116 */ +/***/ (function(module, exports, __webpack_require__) { + +"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; }; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _utils = __webpack_require__(63); + +function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } + +function getOrRemove(args) { + return { + id: args[0], + params: args[1], + callback: args[2] + }; +} + +function updateOrPatch(args) { + return { + id: args[0], + data: args[1], + params: args[2], + callback: args[3] + }; +} + +var converters = { + find: function find(args) { + return { + params: args[0], + callback: args[1] + }; + }, + create: function create(args) { + return { + data: args[0], + params: args[1], + callback: args[2] + }; + }, + get: getOrRemove, + remove: getOrRemove, + update: updateOrPatch, + patch: updateOrPatch +}; + +function hookObject(method, type, args) { + var app = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; + + var hook = converters[method](args); + + hook.method = method; + hook.type = type; + + if (typeof app === 'function') { + hook.app = app; + } else { + _extends(hook, app); + } + + return hook; +} + +function defaultMakeArguments(hook) { + var result = []; + if (typeof hook.id !== 'undefined') { + result.push(hook.id); + } + + if (hook.data) { + result.push(hook.data); + } + + result.push(hook.params || {}); + result.push(hook.callback); + + return result; +} + +function makeArguments(hook) { + if (hook.method === 'find') { + return [hook.params, hook.callback]; + } + + if (hook.method === 'get' || hook.method === 'remove') { + return [hook.id, hook.params, hook.callback]; + } + + if (hook.method === 'update' || hook.method === 'patch') { + return [hook.id, hook.data, hook.params, hook.callback]; + } + + if (hook.method === 'create') { + return [hook.data, hook.params, hook.callback]; + } + + return defaultMakeArguments(hook); +} + +function convertHookData(obj) { + var hook = {}; + + if (Array.isArray(obj)) { + hook = { all: obj }; + } else if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') { + hook = { all: [obj] }; + } else { + (0, _utils.each)(obj, function (value, key) { + hook[key] = !Array.isArray(value) ? [value] : value; + }); + } + + return hook; +} + +exports.default = { + hookObject: hookObject, + hook: hookObject, + converters: converters, + defaultMakeArguments: defaultMakeArguments, + makeArguments: makeArguments, + convertHookData: convertHookData +}; +module.exports = exports['default']; + +/***/ }), +/* 117 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.populate = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _feathersErrors = __webpack_require__(28); + +var _feathersErrors2 = _interopRequireDefault(_feathersErrors); + +var _utils = __webpack_require__(65); + +var _bundled = __webpack_require__(64); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +var populate = exports.populate = function populate(options) { + for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + rest[_key - 1] = arguments[_key]; + } + + if (typeof options === 'string') { + return _bundled.legacyPopulate.apply(undefined, [options].concat(rest)); + } + + return function (hook) { + var optionsDefault = { + schema: {}, + checkPermissions: function checkPermissions() { + return true; + }, + profile: false + }; + + if (hook.params._populate === 'skip') { + // this service call made from another populate + return hook; + } + + return Promise.resolve().then(function () { + // 'options.schema' resolves to { permissions: '...', include: [ ... ] } + + var items = (0, _utils.getItems)(hook); + var options1 = Object.assign({}, optionsDefault, options); + var schema = options1.schema, + checkPermissions = options1.checkPermissions; + + var schema1 = typeof schema === 'function' ? schema(hook, options1) : schema; + var permissions = schema1.permissions || null; + + if (typeof checkPermissions !== 'function') { + throw new _feathersErrors2.default.BadRequest('Permissions param is not a function. (populate)'); + } + + if (permissions && !checkPermissions(hook, hook.path, permissions, 0)) { + throw new _feathersErrors2.default.BadRequest('Permissions do not allow this populate. (populate)'); + } + + if ((typeof schema1 === 'undefined' ? 'undefined' : _typeof(schema1)) !== 'object') { + throw new _feathersErrors2.default.BadRequest('Schema does not resolve to an object. (populate)'); + } + + return !schema1.include || !Object.keys(schema1.include).length ? items : populateItemArray(options1, hook, items, schema1.include, 0); + }).then(function (items) { + (0, _utils.replaceItems)(hook, items); + return hook; + }); + }; +}; + +function populateItemArray(options, hook, items, includeSchema, depth) { + // 'items' is an item or an array of items + // 'includeSchema' is like [ { nameAs: 'author', ... }, { nameAs: 'readers', ... } ] + + if (!Array.isArray(items)) { + return populateItem(options, hook, items, includeSchema, depth + 1); + } + + return Promise.all(items.map(function (item) { + return populateItem(options, hook, item, includeSchema, depth + 1); + })); +} + +function populateItem(options, hook, item, includeSchema, depth) { + // 'item' is one item + // 'includeSchema' is like [ { nameAs: 'author', ... }, { nameAs: 'readers', ... } ] + + var elapsed = {}; + var startAtAllIncludes = process.hrtime(); + item._include = []; + + return Promise.all(includeSchema.map(function (childSchema) { + var startAtThisInclude = process.hrtime(); + return populateAddChild(options, hook, item, childSchema, depth).then(function (result) { + var nameAs = childSchema.nameAs || childSchema.service; + elapsed[nameAs] = getElapsed(options, startAtThisInclude, depth); + + return result; + }); + })).then(function (children) { + // 'children' is like [{ authorInfo: {...}, readersInfo: [{...}, {...}] }] + if (options.profile !== false) { + elapsed.total = getElapsed(options, startAtAllIncludes, depth); + item._elapsed = elapsed; + } + + return Object.assign.apply(Object, [item].concat(_toConsumableArray(children))); + }); +} + +function populateAddChild(options, hook, parentItem, childSchema, depth) { + /*
+ 'parentItem' is the item we are adding children to
+ 'childSchema' is like
+ { service: 'comments',
+ permissions: '...',
+ nameAs: 'comments',
+ asArray: true,
+ parentField: 'id',
+ childField: 'postId',
+ query: { $limit: 5, $select: ['title', 'content', 'postId'], $sort: { createdAt: -1 } },
+ select: (hook, parent, depth) => ({ something: { $exists: false }}),
+ include: [ ... ],
+ }
+ */ + + // note: parentField & childField are req'd, plus parentItem[parentField} !== undefined . + // childSchema.select may override their relationship but some relationship must be given. + if (!childSchema.service || !childSchema.parentField || !childSchema.childField) { + throw new _feathersErrors2.default.BadRequest('Child schema is missing a required property. (populate)'); + } + + if (childSchema.permissions && !options.checkPermissions(hook, childSchema.service, childSchema.permissions, depth)) { + throw new _feathersErrors2.default.BadRequest('Permissions for ' + childSchema.service + ' do not allow include. (populate)'); + } + + var nameAs = childSchema.nameAs || childSchema.service; + parentItem._include.push(nameAs); + + var promise = Promise.resolve().then(function () { + return childSchema.select ? childSchema.select(hook, parentItem, depth) : {}; + }).then(function (selectQuery) { + var parentVal = (0, _utils.getByDot)(parentItem, childSchema.parentField); + + if (parentVal === undefined) { + throw new _feathersErrors2.default.BadRequest('ParentField ' + childSchema.parentField + ' for ' + nameAs + ' depth ' + depth + ' is undefined. (populate)'); + } + + var query = Object.assign({}, childSchema.query, _defineProperty({}, childSchema.childField, Array.isArray(parentVal) ? { $in: parentVal } : parentVal), selectQuery // dynamic options override static ones + ); + + var serviceHandle = hook.app.service(childSchema.service); + + if (!serviceHandle) { + throw new _feathersErrors2.default.BadRequest('Service ' + childSchema.service + ' is not configured. (populate)'); + } + + return serviceHandle.find({ query: query, _populate: 'skip' }); + }).then(function (result) { + result = result.data || result; + + if (result.length === 1 && !childSchema.asArray) { + result = result[0]; + } + + return result; + }); + + if (childSchema.include) { + promise = promise.then(function (items) { + return populateItemArray(options, hook, items, childSchema.include, depth); + }); + } + + return promise.then(function (items) { + return _defineProperty({}, nameAs, items); + }); +} + +// Helpers + +function getElapsed(options, startHrtime, depth) { + if (options.profile === true) { + var elapsed = process.hrtime(startHrtime); + return elapsed[0] * 1e9 + elapsed[1]; + } else if (options.profile !== false) { + return depth; // for testing _elapsed + } +} +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) + +/***/ }), +/* 118 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +exports.isHookObject = isHookObject; +exports.processHooks = processHooks; +exports.addHookTypes = addHookTypes; +exports.getHooks = getHooks; +exports.baseMixin = baseMixin; + +var _feathersCommons = __webpack_require__(17); + +function isHookObject(hookObject) { + return (typeof hookObject === 'undefined' ? 'undefined' : _typeof(hookObject)) === 'object' && typeof hookObject.method === 'string' && typeof hookObject.type === 'string'; +} + +function processHooks(hooks, initialHookObject) { + var _this = this; + + var hookObject = initialHookObject; + var updateCurrentHook = function updateCurrentHook(current) { + if (current) { + if (!isHookObject(current)) { + throw new Error(hookObject.type + ' hook for \'' + hookObject.method + '\' method returned invalid hook object'); + } + + hookObject = current; + } + + return hookObject; + }; + var promise = Promise.resolve(hookObject); + + // Go through all hooks and chain them into our promise + hooks.forEach(function (fn) { + var hook = fn.bind(_this); + + if (hook.length === 2) { + // function(hook, next) + promise = promise.then(function (hookObject) { + return new Promise(function (resolve, reject) { + hook(hookObject, function (error, result) { + return error ? reject(error) : resolve(result); + }); + }); + }); + } else { + // function(hook) + promise = promise.then(hook); + } + + // Use the returned hook object or the old one + promise = promise.then(updateCurrentHook); + }); + + return promise.catch(function (error) { + // Add the hook information to any errors + error.hook = hookObject; + throw error; + }); +} + +function addHookTypes(target) { + var types = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['before', 'after', 'error']; + + Object.defineProperty(target, '__hooks', { + value: {} + }); + + types.forEach(function (type) { + // Initialize properties where hook functions are stored + target.__hooks[type] = {}; + }); +} + +function getHooks(app, service, type, method) { + var appLast = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + + var appHooks = app.__hooks[type][method] || []; + var serviceHooks = service.__hooks[type][method] || []; + + if (appLast) { + return serviceHooks.concat(appHooks); + } + + return appHooks.concat(serviceHooks); +} + +function baseMixin(methods) { + var mixin = { + hooks: function hooks(allHooks) { + var _this2 = this; + + (0, _feathersCommons.each)(allHooks, function (obj, type) { + if (!_this2.__hooks[type]) { + throw new Error('\'' + type + '\' is not a valid hook type'); + } + + var hooks = _feathersCommons.hooks.convertHookData(obj); + + (0, _feathersCommons.each)(hooks, function (value, method) { + if (method !== 'all' && methods.indexOf(method) === -1) { + throw new Error('\'' + method + '\' is not a valid hook method'); + } + }); + + methods.forEach(function (method) { + if (!(hooks[method] || hooks.all)) { + return; + } + + var myHooks = _this2.__hooks[type][method] || (_this2.__hooks[type][method] = []); + + if (hooks.all) { + myHooks.push.apply(myHooks, hooks.all); + } + + if (hooks[method]) { + myHooks.push.apply(myHooks, hooks[method]); + } + }); + }); + + return this; + } + }; + + for (var _len = arguments.length, objs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + objs[_key - 1] = arguments[_key]; + } + + return Object.assign.apply(Object, [mixin].concat(objs)); +} + +/***/ }), +/* 119 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _uberproto = __webpack_require__(35); + +var _uberproto2 = _interopRequireDefault(_uberproto); + +var _feathersCommons = __webpack_require__(17); + +var _populate = __webpack_require__(117); + +var _bundled = __webpack_require__(64); + +var _commons = __webpack_require__(118); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +function isPromise(result) { + return typeof result !== 'undefined' && typeof result.then === 'function'; +} + +function hookMixin(service) { + var app = this; + var methods = app.methods; + var old = { + before: service.before, + after: service.after + }; + var mixin = (0, _commons.baseMixin)(methods, { + before: function before(_before) { + return this.hooks({ before: _before }); + }, + after: function after(_after) { + return this.hooks({ after: _after }); + } + }); + + (0, _commons.addHookTypes)(service); + + methods.forEach(function (method) { + if (typeof service[method] !== 'function') { + return; + } + + mixin[method] = function () { + var _this = this; + + var service = this; + // A reference to the original method + var _super = this._super.bind(this); + // Additional data to add to the hook object + var hookData = { + app: app, + service: service, + get path() { + return Object.keys(app.services).find(function (path) { + return app.services[path] === service; + }); + } + }; + // Create the hook object that gets passed through + var hookObject = _feathersCommons.hooks.hookObject(method, 'before', arguments, hookData); + // Get all hooks + var hooks = { + // For before hooks the app hooks will run first + before: (0, _commons.getHooks)(app, this, 'before', method), + // For after and error hooks the app hooks will run last + after: (0, _commons.getHooks)(app, this, 'after', method, true), + error: (0, _commons.getHooks)(app, this, 'error', method, true) + }; + + // Process all before hooks + return _commons.processHooks.call(this, hooks.before, hookObject) + // Use the hook object to call the original method + .then(function (hookObject) { + if (typeof hookObject.result !== 'undefined') { + return Promise.resolve(hookObject); + } + + return new Promise(function (resolve, reject) { + var args = _feathersCommons.hooks.makeArguments(hookObject); + // The method may not be normalized yet so we have to handle both + // ways, either by callback or by Promise + var callback = function callback(error, result) { + if (error) { + reject(error); + } else { + hookObject.result = result; + resolve(hookObject); + } + }; + + // We replace the callback with resolving the promise + args.splice(args.length - 1, 1, callback); + + var result = _super.apply(undefined, _toConsumableArray(args)); + + if (isPromise(result)) { + result.then(function (data) { + return callback(null, data); + }, callback); + } + }); + }) + // Make a copy of hookObject from `before` hooks and update type + .then(function (hookObject) { + return Object.assign({}, hookObject, { type: 'after' }); + }) + // Run through all `after` hooks + .then(_commons.processHooks.bind(this, hooks.after)) + // Finally, return the result + .then(function (hookObject) { + return hookObject.result; + }) + // Handle errors + .catch(function (error) { + var errorHook = Object.assign({}, error.hook || hookObject, { + type: 'error', + original: error.hook, + error: error + }); + + return _commons.processHooks.call(_this, hooks.error, errorHook).then(function (hook) { + return Promise.reject(hook.error); + }); + }); + }; + }); + + service.mixin(mixin); + + // Before hooks that were registered in the service + if (old.before) { + service.before(old.before); + } + + // After hooks that were registered in the service + if (old.after) { + service.after(old.after); + } +} + +function configure() { + return function () { + var app = this; + + (0, _commons.addHookTypes)(app); + + _uberproto2.default.mixin((0, _commons.baseMixin)(app.methods), app); + + this.mixins.unshift(hookMixin); + }; +} + +configure.removeQuery = _bundled.removeQuery; +configure.pluckQuery = _bundled.pluckQuery; +configure.lowerCase = _bundled.lowerCase; +configure.remove = _bundled.remove; +configure.pluck = _bundled.pluck; +configure.disable = _bundled.disable; +configure.populate = _populate.populate; +configure.removeField = _bundled.removeField; + +exports.default = configure; +module.exports = exports['default']; + +/***/ }), +/* 120 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(123); + + +/***/ }), +/* 121 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _base = __webpack_require__(22); + +var _base2 = _interopRequireDefault(_base); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Service = function (_Base) { + _inherits(Service, _Base); + + function Service() { + _classCallCheck(this, Service); + + return _possibleConstructorReturn(this, (Service.__proto__ || Object.getPrototypeOf(Service)).apply(this, arguments)); + } + + _createClass(Service, [{ + key: 'request', + value: function request(options) { + var config = { + url: options.url, + method: options.method, + data: options.body, + headers: _extends({ + Accept: 'application/json' + }, this.options.headers, options.headers) + }; + + return this.connection.request(config).then(function (res) { + return res.data; + }).catch(function (error) { + var response = error.response || error; + + throw response instanceof Error ? response : response.data || response; + }); + } + }]); + + return Service; +}(_base2.default); + +exports.default = Service; +module.exports = exports['default']; + +/***/ }), +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _base = __webpack_require__(22); + +var _base2 = _interopRequireDefault(_base); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Service = function (_Base) { + _inherits(Service, _Base); + + function Service() { + _classCallCheck(this, Service); + + return _possibleConstructorReturn(this, (Service.__proto__ || Object.getPrototypeOf(Service)).apply(this, arguments)); + } + + _createClass(Service, [{ + key: 'request', + value: function request(options) { + var fetchOptions = _extends({}, options); + + fetchOptions.headers = _extends({ + Accept: 'application/json' + }, this.options.headers, fetchOptions.headers); + + if (options.body) { + fetchOptions.body = JSON.stringify(options.body); + } + + var fetch = this.connection; + + return fetch(options.url, fetchOptions).then(this.checkStatus).then(function (response) { + if (response.status === 204) { + return null; + } + + return response.json(); + }); + } + }, { + key: 'checkStatus', + value: function checkStatus(response) { + if (response.ok) { + return response; + } + + return response.json().then(function (error) { + error.response = response; + throw error; + }); + } + }]); + + return Service; +}(_base2.default); + +exports.default = Service; +module.exports = exports['default']; + +/***/ }), +/* 123 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function () { + var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + + var result = {}; + + Object.keys(transports).forEach(function (key) { + var Service = transports[key]; + + result[key] = function (connection) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (!connection) { + throw new Error(key + ' has to be provided to feathers-rest'); + } + + var defaultService = function defaultService(name) { + return new Service({ base: base, name: name, connection: connection, options: options }); + }; + + var initialize = function initialize() { + if (typeof this.defaultService === 'function') { + throw new Error('Only one default client provider can be configured'); + } + + this.rest = connection; + this.defaultService = defaultService; + }; + + initialize.Service = Service; + initialize.service = defaultService; + + return initialize; + }; + }); + + return result; +}; + +var _jquery = __webpack_require__(124); + +var _jquery2 = _interopRequireDefault(_jquery); + +var _superagent = __webpack_require__(126); + +var _superagent2 = _interopRequireDefault(_superagent); + +var _request = __webpack_require__(125); + +var _request2 = _interopRequireDefault(_request); + +var _fetch = __webpack_require__(122); + +var _fetch2 = _interopRequireDefault(_fetch); + +var _axios = __webpack_require__(121); + +var _axios2 = _interopRequireDefault(_axios); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var transports = { + jquery: _jquery2.default, + superagent: _superagent2.default, + request: _request2.default, + fetch: _fetch2.default, + axios: _axios2.default +}; + +module.exports = exports['default']; + +/***/ }), +/* 124 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _base = __webpack_require__(22); + +var _base2 = _interopRequireDefault(_base); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Service = function (_Base) { + _inherits(Service, _Base); + + function Service() { + _classCallCheck(this, Service); + + return _possibleConstructorReturn(this, (Service.__proto__ || Object.getPrototypeOf(Service)).apply(this, arguments)); + } + + _createClass(Service, [{ + key: 'request', + value: function request(options) { + var _this2 = this; + + var opts = _extends({ + dataType: options.type || 'json' + }, { + headers: this.options.headers || {} + }, options); + + if (options.body) { + opts.data = JSON.stringify(options.body); + opts.contentType = 'application/json'; + } + + delete opts.type; + delete opts.body; + + return new Promise(function (resolve, reject) { + _this2.connection.ajax(opts).then(resolve, function (xhr) { + var error = xhr.responseText; + + try { + error = JSON.parse(error); + } catch (e) { + error = new Error(xhr.responseText); + } + + error.xhr = error.response = xhr; + + reject(error); + }); + }); + } + }]); + + return Service; +}(_base2.default); + +exports.default = Service; +module.exports = exports['default']; + +/***/ }), +/* 125 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _base = __webpack_require__(22); + +var _base2 = _interopRequireDefault(_base); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Service = function (_Base) { + _inherits(Service, _Base); + + function Service() { + _classCallCheck(this, Service); + + return _possibleConstructorReturn(this, (Service.__proto__ || Object.getPrototypeOf(Service)).apply(this, arguments)); + } + + _createClass(Service, [{ + key: 'request', + value: function request(options) { + var _this2 = this; + + return new Promise(function (resolve, reject) { + _this2.connection(_extends({ + json: true + }, options), function (error, res, data) { + if (error) { + return reject(error); + } + + if (!error && res.statusCode >= 400) { + if (typeof data === 'string') { + return reject(new Error(data)); + } + + data.response = res; + + return reject(_extends(new Error(data.message), data)); + } + + resolve(data); + }); + }); + } + }]); + + return Service; +}(_base2.default); + +exports.default = Service; +module.exports = exports['default']; + +/***/ }), +/* 126 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _base = __webpack_require__(22); + +var _base2 = _interopRequireDefault(_base); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Service = function (_Base) { + _inherits(Service, _Base); + + function Service() { + _classCallCheck(this, Service); + + return _possibleConstructorReturn(this, (Service.__proto__ || Object.getPrototypeOf(Service)).apply(this, arguments)); + } + + _createClass(Service, [{ + key: 'request', + value: function request(options) { + var superagent = this.connection(options.method, options.url).set(this.options.headers || {}).set('Accept', 'application/json').set(options.headers || {}).type(options.type || 'json'); + + return new Promise(function (resolve, reject) { + superagent.set(options.headers); + + if (options.body) { + superagent.send(options.body); + } + + superagent.end(function (error, res) { + if (error) { + try { + var response = error.response; + error = JSON.parse(error.response.text); + error.response = response; + } catch (e) {} + + return reject(error); + } + + resolve(res && res.body); + }); + }); + } + }]); + + return Service; +}(_base2.default); + +exports.default = Service; +module.exports = exports['default']; + +/***/ }), +/* 127 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(130); + + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _debug = __webpack_require__(59); + +var _debug2 = _interopRequireDefault(_debug); + +var _feathersCommons = __webpack_require__(17); + +var _uberproto = __webpack_require__(35); + +var _uberproto2 = _interopRequireDefault(_uberproto); + +var _index = __webpack_require__(133); + +var _index2 = _interopRequireDefault(_index); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var debug = (0, _debug2.default)('feathers:application'); +var methods = ['find', 'get', 'create', 'update', 'patch', 'remove']; +var Proto = _uberproto2.default.extend({ + create: null +}); + +exports.default = { + init: function init() { + Object.assign(this, { + methods: methods, + mixins: (0, _index2.default)(), + services: {}, + providers: [], + _setup: false + }); + }, + service: function service(location, _service) { + var _this = this; + + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + location = (0, _feathersCommons.stripSlashes)(location); + + if (!_service) { + var current = this.services[location]; + + if (typeof current === 'undefined' && typeof this.defaultService === 'function') { + return this.service(location, this.defaultService(location), options); + } + + return current; + } + + var protoService = Proto.extend(_service); + + debug('Registering new service at `' + location + '`'); + + // Add all the mixins + this.mixins.forEach(function (fn) { + return fn.call(_this, protoService); + }); + + if (typeof protoService._setup === 'function') { + protoService._setup(this, location); + } + + // Run the provider functions to register the service + this.providers.forEach(function (provider) { + return provider.call(_this, location, protoService, options); + }); + + // If we ran setup already, set this service up explicitly + if (this._isSetup && typeof protoService.setup === 'function') { + debug('Setting up service for `' + location + '`'); + protoService.setup(this, location); + } + + return this.services[location] = protoService; + }, + use: function use(location) { + var service = void 0; + var middleware = Array.from(arguments).slice(1).reduce(function (middleware, arg) { + if (typeof arg === 'function') { + middleware[service ? 'after' : 'before'].push(arg); + } else if (!service) { + service = arg; + } else { + throw new Error('invalid arg passed to app.use'); + } + return middleware; + }, { + before: [], + after: [] + }); + + var hasMethod = function hasMethod(methods) { + return methods.some(function (name) { + return service && typeof service[name] === 'function'; + }); + }; + + // Check for service (any object with at least one service method) + if (hasMethod(['handle', 'set']) || !hasMethod(this.methods.concat('setup'))) { + return this._super.apply(this, arguments); + } + + // Any arguments left over are other middleware that we want to pass to the providers + this.service(location, service, { middleware: middleware }); + + return this; + }, + setup: function setup() { + var _this2 = this; + + // Setup each service (pass the app so that they can look up other services etc.) + Object.keys(this.services).forEach(function (path) { + var service = _this2.services[path]; + + debug('Setting up service for `' + path + '`'); + if (typeof service.setup === 'function') { + service.setup(_this2, path); + } + }); + + this._isSetup = true; + + return this; + }, + + + // Express 3.x configure is gone in 4.x but we'll keep a more basic version + // That just takes a function in order to keep Feathers plugin configuration easier. + // Environment specific configurations should be done as suggested in the 4.x migration guide: + // https://github.com/visionmedia/express/wiki/Migrating-from-3.x-to-4.x + configure: function configure(fn) { + fn.call(this); + + return this; + }, + listen: function listen() { + var server = this._super.apply(this, arguments); + + this.setup(server); + debug('Feathers application listening'); + + return server; + } +}; +module.exports = exports['default']; + +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function () { + var app = { + settings: {}, + + get: function get(name) { + return this.settings[name]; + }, + set: function set(name, value) { + this.settings[name] = value; + return this; + }, + disable: function disable(name) { + this.settings[name] = false; + return this; + }, + disabled: function disabled(name) { + return !this.settings[name]; + }, + enable: function enable(name) { + this.settings[name] = true; + return this; + }, + enabled: function enabled(name) { + return !!this.settings[name]; + }, + use: function use() { + throw new Error('Middleware functions can not be used in the Feathers client'); + }, + listen: function listen() { + return {}; + } + }; + + _uberproto2.default.mixin(_events.EventEmitter.prototype, app); + + return app; +}; + +var _events = __webpack_require__(36); + +var _uberproto = __webpack_require__(35); + +var _uberproto2 = _interopRequireDefault(_uberproto); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = exports['default']; + +/***/ }), +/* 130 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createApplication; + +var _feathers = __webpack_require__(131); + +var _feathers2 = _interopRequireDefault(_feathers); + +var _express = __webpack_require__(129); + +var _express2 = _interopRequireDefault(_express); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function createApplication() { + return (0, _feathers2.default)(_express2.default.apply(undefined, arguments)); +} + +createApplication.version = '2.0.1'; +module.exports = exports['default']; + +/***/ }), +/* 131 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createApplication; + +var _uberproto = __webpack_require__(35); + +var _uberproto2 = _interopRequireDefault(_uberproto); + +var _application = __webpack_require__(128); + +var _application2 = _interopRequireDefault(_application); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Create a Feathers application that extends Express. + * + * @return {Function} + * @api public + */ +function createApplication(app) { + _uberproto2.default.mixin(_application2.default, app); + app.init(); + return app; +} +module.exports = exports['default']; + +/***/ }), +/* 132 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (service) { + var app = this; + var isEmitter = typeof service.on === 'function' && typeof service.emit === 'function'; + var emitter = service._rubberDuck = _rubberduck2.default.emitter(service); + + if (typeof service.mixin === 'function' && !isEmitter) { + service.mixin(_events.EventEmitter.prototype); + } + + service._serviceEvents = Array.isArray(service.events) ? service.events.slice() : []; + + // Pass the Rubberduck error event through + // TODO deal with error events properly + emitter.on('error', function (errors) { + service.emit('serviceError', errors[0]); + }); + + Object.keys(eventMappings).forEach(function (method) { + var event = eventMappings[method]; + var alreadyEmits = service._serviceEvents.indexOf(event) !== -1; + + if (typeof service[method] === 'function' && !alreadyEmits) { + // The Rubberduck event name (e.g. afterCreate, afterUpdate or afterDestroy) + var eventName = 'after' + upperCase(method); + service._serviceEvents.push(event); + // Punch the given method + emitter.punch(method, -1); + // Pass the event and error event through + emitter.on(eventName, function (results, args) { + if (!results[0]) { + // callback without error + var hook = hookObject(method, 'after', args); + var data = Array.isArray(results[1]) ? results[1] : [results[1]]; + + hook.app = app; + data.forEach(function (current) { + return service.emit(event, current, hook); + }); + } else { + service.emit('serviceError', results[0]); + } + }); + } + }); +}; + +var _rubberduck = __webpack_require__(222); + +var _rubberduck2 = _interopRequireDefault(_rubberduck); + +var _events = __webpack_require__(36); + +var _feathersCommons = __webpack_require__(17); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var hookObject = _feathersCommons.hooks.hookObject; +var eventMappings = { + create: 'created', + update: 'updated', + remove: 'removed', + patch: 'patched' +}; + +function upperCase(name) { + return name.charAt(0).toUpperCase() + name.substring(1); +} + +module.exports = exports['default']; + +/***/ }), +/* 133 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function () { + var mixins = [__webpack_require__(135), __webpack_require__(132), __webpack_require__(134)]; + + // Override push to make sure that normalize is always the last + mixins.push = function () { + var args = [this.length - 1, 0].concat(Array.from(arguments)); + this.splice.apply(this, args); + return this.length; + }; + + return mixins; +}; + +module.exports = exports['default']; + +/***/ }), +/* 134 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (service) { + if (typeof service.mixin === 'function') { + var mixin = {}; + + this.methods.forEach(function (method) { + if (typeof service[method] === 'function') { + mixin[method] = function () { + return this._super.apply(this, (0, _feathersCommons.getArguments)(method, arguments)); + }; + } + }); + + service.mixin(mixin); + } +}; + +var _feathersCommons = __webpack_require__(17); + +module.exports = exports['default']; + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (service) { + if (typeof service.mixin === 'function') { + var mixin = {}; + + this.methods.forEach(function (method) { + if (typeof service[method] === 'function') { + mixin[method] = wrapper; + } + }); + + service.mixin(mixin); + } +}; + +function isPromise(result) { + return typeof result !== 'undefined' && typeof result.then === 'function'; +} + +function wrapper() { + var result = this._super.apply(this, arguments); + var callback = arguments[arguments.length - 1]; + + if (typeof callback === 'function' && isPromise(result)) { + result.then(function (data) { + return callback(null, data); + }, function (error) { + return callback(error); + }); + } + return result; +} + +module.exports = exports['default']; + +/***/ }), +/* 136 */ +/***/ (function(module, exports) { + +/** + * Helpers. + */ + +var s = 1000 +var m = s * 60 +var h = m * 60 +var d = h * 24 +var y = d * 365.25 + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} options + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function (val, options) { + options = options || {} + var type = typeof val + if (type === 'string' && val.length > 0) { + return parse(val) + } else if (type === 'number' && isNaN(val) === false) { + return options.long ? + fmtLong(val) : + fmtShort(val) + } + throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val)) +} + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str) + if (str.length > 10000) { + return + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str) + if (!match) { + return + } + var n = parseFloat(match[1]) + var type = (match[2] || 'ms').toLowerCase() + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y + case 'days': + case 'day': + case 'd': + return n * d + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n + default: + return undefined + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd' + } + if (ms >= h) { + return Math.round(ms / h) + 'h' + } + if (ms >= m) { + return Math.round(ms / m) + 'm' + } + if (ms >= s) { + return Math.round(ms / s) + 's' + } + return ms + 'ms' +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + return plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms' +} + +/** + * Pluralization helper. + */ + +function plural(ms, n, name) { + if (ms < n) { + return + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name + } + return Math.ceil(ms / n) + ' ' + name + 's' +} + + +/***/ }), +/* 137 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var stringify = __webpack_require__(139); +var parse = __webpack_require__(138); +var formats = __webpack_require__(66); + +module.exports = { + formats: formats, + parse: parse, + stringify: stringify +}; + + +/***/ }), +/* 138 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(67); + +var has = Object.prototype.hasOwnProperty; + +var defaults = { + allowDots: false, + allowPrototypes: false, + arrayLimit: 20, + decoder: utils.decode, + delimiter: '&', + depth: 5, + parameterLimit: 1000, + plainObjects: false, + strictNullHandling: false +}; + +var parseValues = function parseQueryStringValues(str, options) { + var obj = {}; + var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit); + + for (var i = 0; i < parts.length; ++i) { + var part = parts[i]; + var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1; + + var key, val; + if (pos === -1) { + key = options.decoder(part); + val = options.strictNullHandling ? null : ''; + } else { + key = options.decoder(part.slice(0, pos)); + val = options.decoder(part.slice(pos + 1)); + } + if (has.call(obj, key)) { + obj[key] = [].concat(obj[key]).concat(val); + } else { + obj[key] = val; + } + } + + return obj; +}; + +var parseObject = function parseObjectRecursive(chain, val, options) { + if (!chain.length) { + return val; + } + + var root = chain.shift(); + + var obj; + if (root === '[]') { + obj = []; + obj = obj.concat(parseObject(chain, val, options)); + } else { + obj = options.plainObjects ? Object.create(null) : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var index = parseInt(cleanRoot, 10); + if ( + !isNaN(index) && + root !== cleanRoot && + String(index) === cleanRoot && + index >= 0 && + (options.parseArrays && index <= options.arrayLimit) + ) { + obj = []; + obj[index] = parseObject(chain, val, options); + } else { + obj[cleanRoot] = parseObject(chain, val, options); + } + } + + return obj; +}; + +var parseKeys = function parseQueryStringKeys(givenKey, val, options) { + if (!givenKey) { + return; + } + + // Transform dot notation to bracket notation + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + + // The regex chunks + + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + + // Get the parent + + var segment = brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + + // Stash the parent if it exists + + var keys = []; + if (parent) { + // If we aren't using plain objects, optionally prefix keys + // that would overwrite object prototype properties + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys.push(parent); + } + + // Loop through children appending to the array until we hit depth + + var i = 0; + while ((segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } + + // If there's a remainder, just add whatever is left + + if (segment) { + keys.push('[' + key.slice(segment.index) + ']'); + } + + return parseObject(keys, val, options); +}; + +module.exports = function (str, opts) { + var options = opts || {}; + + if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } + + options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter; + options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth; + options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit; + options.parseArrays = options.parseArrays !== false; + options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder; + options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots; + options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects; + options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes; + options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit; + options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; + + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? Object.create(null) : {}; + } + + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? Object.create(null) : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options); + obj = utils.merge(obj, newObj, options); + } + + return utils.compact(obj); +}; + + +/***/ }), +/* 139 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(67); +var formats = __webpack_require__(66); + +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { // eslint-disable-line func-name-matching + return prefix + '[]'; + }, + indices: function indices(prefix, key) { // eslint-disable-line func-name-matching + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { // eslint-disable-line func-name-matching + return prefix; + } +}; + +var toISO = Date.prototype.toISOString; + +var defaults = { + delimiter: '&', + encode: true, + encoder: utils.encode, + encodeValuesOnly: false, + serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; + +var stringify = function stringify( // eslint-disable-line func-name-matching + object, + prefix, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly +) { + var obj = object; + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix) : prefix; + } + + obj = ''; + } + + if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix); + return [formatter(keyValue) + '=' + formatter(encoder(obj))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } + + var values = []; + + if (typeof obj === 'undefined') { + return values; + } + + var objKeys; + if (Array.isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (skipNulls && obj[key] === null) { + continue; + } + + if (Array.isArray(obj)) { + values = values.concat(stringify( + obj[key], + generateArrayPrefix(prefix, key), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } else { + values = values.concat(stringify( + obj[key], + prefix + (allowDots ? '.' + key : '[' + key + ']'), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } + } + + return values; +}; + +module.exports = function (object, opts) { + var obj = object; + var options = opts || {}; + + if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } + + var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter; + var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; + var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls; + var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode; + var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder; + var sort = typeof options.sort === 'function' ? options.sort : null; + var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots; + var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate; + var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly; + if (typeof options.format === 'undefined') { + options.format = formats.default; + } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) { + throw new TypeError('Unknown format option provided.'); + } + var formatter = formats.formatters[options.format]; + var objKeys; + var filter; + + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (Array.isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + + var keys = []; + + if (typeof obj !== 'object' || obj === null) { + return ''; + } + + var arrayFormat; + if (options.arrayFormat in arrayPrefixGenerators) { + arrayFormat = options.arrayFormat; + } else if ('indices' in options) { + arrayFormat = options.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = 'indices'; + } + + var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; + + if (!objKeys) { + objKeys = Object.keys(obj); + } + + if (sort) { + objKeys.sort(sort); + } + + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (skipNulls && obj[key] === null) { + continue; + } + + keys = keys.concat(stringify( + obj[key], + key, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encode ? encoder : null, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } + + return keys.join(delimiter); +}; + + +/***/ }), +/* 140 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10317,7 +16116,7 @@ var ARIADOMPropertyConfig = { module.exports = ARIADOMPropertyConfig; /***/ }), -/* 97 */ +/* 141 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10335,7 +16134,7 @@ module.exports = ARIADOMPropertyConfig; var ReactDOMComponentTree = __webpack_require__(5); -var focusNode = __webpack_require__(54); +var focusNode = __webpack_require__(61); var AutoFocusUtils = { focusDOMComponent: function () { @@ -10346,7 +16145,7 @@ var AutoFocusUtils = { module.exports = AutoFocusUtils; /***/ }), -/* 98 */ +/* 142 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10362,11 +16161,11 @@ module.exports = AutoFocusUtils; -var EventPropagators = __webpack_require__(22); +var EventPropagators = __webpack_require__(24); var ExecutionEnvironment = __webpack_require__(6); -var FallbackCompositionState = __webpack_require__(104); -var SyntheticCompositionEvent = __webpack_require__(147); -var SyntheticInputEvent = __webpack_require__(150); +var FallbackCompositionState = __webpack_require__(148); +var SyntheticCompositionEvent = __webpack_require__(191); +var SyntheticInputEvent = __webpack_require__(194); var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space var START_KEYCODE = 229; @@ -10736,7 +16535,7 @@ var BeforeInputEventPlugin = { module.exports = BeforeInputEventPlugin; /***/ }), -/* 99 */ +/* 143 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10752,14 +16551,14 @@ module.exports = BeforeInputEventPlugin; -var CSSProperty = __webpack_require__(56); +var CSSProperty = __webpack_require__(68); var ExecutionEnvironment = __webpack_require__(6); var ReactInstrumentation = __webpack_require__(8); -var camelizeStyleName = __webpack_require__(83); -var dangerousStyleValue = __webpack_require__(157); -var hyphenateStyleName = __webpack_require__(90); -var memoizeStringOnly = __webpack_require__(93); +var camelizeStyleName = __webpack_require__(99); +var dangerousStyleValue = __webpack_require__(201); +var hyphenateStyleName = __webpack_require__(106); +var memoizeStringOnly = __webpack_require__(109); var warning = __webpack_require__(2); var processStyleName = memoizeStringOnly(function (styleName) { @@ -10951,7 +16750,7 @@ module.exports = CSSPropertyOperations; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 100 */ +/* 144 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10967,16 +16766,16 @@ module.exports = CSSPropertyOperations; -var EventPluginHub = __webpack_require__(21); -var EventPropagators = __webpack_require__(22); +var EventPluginHub = __webpack_require__(23); +var EventPropagators = __webpack_require__(24); var ExecutionEnvironment = __webpack_require__(6); var ReactDOMComponentTree = __webpack_require__(5); var ReactUpdates = __webpack_require__(10); var SyntheticEvent = __webpack_require__(12); -var getEventTarget = __webpack_require__(43); -var isEventSupported = __webpack_require__(44); -var isTextInputElement = __webpack_require__(74); +var getEventTarget = __webpack_require__(49); +var isEventSupported = __webpack_require__(50); +var isTextInputElement = __webpack_require__(86); var eventTypes = { change: { @@ -11277,7 +17076,7 @@ var ChangeEventPlugin = { module.exports = ChangeEventPlugin; /***/ }), -/* 101 */ +/* 145 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11295,10 +17094,10 @@ module.exports = ChangeEventPlugin; var _prodInvariant = __webpack_require__(3); -var DOMLazyTree = __webpack_require__(17); +var DOMLazyTree = __webpack_require__(18); var ExecutionEnvironment = __webpack_require__(6); -var createNodesFromMarkup = __webpack_require__(86); +var createNodesFromMarkup = __webpack_require__(102); var emptyFunction = __webpack_require__(9); var invariant = __webpack_require__(1); @@ -11331,7 +17130,7 @@ module.exports = Danger; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 102 */ +/* 146 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11362,7 +17161,7 @@ var DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'Tap module.exports = DefaultEventPluginOrder; /***/ }), -/* 103 */ +/* 147 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11378,9 +17177,9 @@ module.exports = DefaultEventPluginOrder; -var EventPropagators = __webpack_require__(22); +var EventPropagators = __webpack_require__(24); var ReactDOMComponentTree = __webpack_require__(5); -var SyntheticMouseEvent = __webpack_require__(27); +var SyntheticMouseEvent = __webpack_require__(31); var eventTypes = { mouseEnter: { @@ -11467,7 +17266,7 @@ var EnterLeaveEventPlugin = { module.exports = EnterLeaveEventPlugin; /***/ }), -/* 104 */ +/* 148 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11487,7 +17286,7 @@ var _assign = __webpack_require__(4); var PooledClass = __webpack_require__(14); -var getTextContentAccessor = __webpack_require__(72); +var getTextContentAccessor = __webpack_require__(84); /** * This helper class stores information about text content of a target node, @@ -11567,7 +17366,7 @@ PooledClass.addPoolingTo(FallbackCompositionState); module.exports = FallbackCompositionState; /***/ }), -/* 105 */ +/* 149 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11784,7 +17583,7 @@ var HTMLDOMPropertyConfig = { module.exports = HTMLDOMPropertyConfig; /***/ }), -/* 106 */ +/* 150 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11800,12 +17599,12 @@ module.exports = HTMLDOMPropertyConfig; -var ReactReconciler = __webpack_require__(18); +var ReactReconciler = __webpack_require__(19); -var instantiateReactComponent = __webpack_require__(73); -var KeyEscapeUtils = __webpack_require__(35); -var shouldUpdateReactComponent = __webpack_require__(45); -var traverseAllChildren = __webpack_require__(76); +var instantiateReactComponent = __webpack_require__(85); +var KeyEscapeUtils = __webpack_require__(41); +var shouldUpdateReactComponent = __webpack_require__(51); +var traverseAllChildren = __webpack_require__(88); var warning = __webpack_require__(2); var ReactComponentTreeHook; @@ -11944,7 +17743,7 @@ module.exports = ReactChildReconciler; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 107 */ +/* 151 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11960,8 +17759,8 @@ module.exports = ReactChildReconciler; -var DOMChildrenOperations = __webpack_require__(32); -var ReactDOMIDOperations = __webpack_require__(114); +var DOMChildrenOperations = __webpack_require__(38); +var ReactDOMIDOperations = __webpack_require__(158); /** * Abstracts away all functionality of the reconciler that requires knowledge of @@ -11979,7 +17778,7 @@ var ReactComponentBrowserEnvironment = { module.exports = ReactComponentBrowserEnvironment; /***/ }), -/* 108 */ +/* 152 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11998,23 +17797,23 @@ module.exports = ReactComponentBrowserEnvironment; var _prodInvariant = __webpack_require__(3), _assign = __webpack_require__(4); -var React = __webpack_require__(19); -var ReactComponentEnvironment = __webpack_require__(37); +var React = __webpack_require__(20); +var ReactComponentEnvironment = __webpack_require__(43); var ReactCurrentOwner = __webpack_require__(11); -var ReactErrorUtils = __webpack_require__(38); -var ReactInstanceMap = __webpack_require__(23); +var ReactErrorUtils = __webpack_require__(44); +var ReactInstanceMap = __webpack_require__(25); var ReactInstrumentation = __webpack_require__(8); -var ReactNodeTypes = __webpack_require__(66); -var ReactReconciler = __webpack_require__(18); +var ReactNodeTypes = __webpack_require__(78); +var ReactReconciler = __webpack_require__(19); if (process.env.NODE_ENV !== 'production') { - var checkReactTypeSpec = __webpack_require__(156); + var checkReactTypeSpec = __webpack_require__(200); } -var emptyObject = __webpack_require__(20); +var emptyObject = __webpack_require__(21); var invariant = __webpack_require__(1); -var shallowEqual = __webpack_require__(31); -var shouldUpdateReactComponent = __webpack_require__(45); +var shallowEqual = __webpack_require__(37); +var shouldUpdateReactComponent = __webpack_require__(51); var warning = __webpack_require__(2); var CompositeTypes = { @@ -12887,7 +18686,7 @@ module.exports = ReactCompositeComponent; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 109 */ +/* 153 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -12906,15 +18705,15 @@ module.exports = ReactCompositeComponent; var ReactDOMComponentTree = __webpack_require__(5); -var ReactDefaultInjection = __webpack_require__(126); -var ReactMount = __webpack_require__(65); -var ReactReconciler = __webpack_require__(18); +var ReactDefaultInjection = __webpack_require__(170); +var ReactMount = __webpack_require__(77); +var ReactReconciler = __webpack_require__(19); var ReactUpdates = __webpack_require__(10); -var ReactVersion = __webpack_require__(141); +var ReactVersion = __webpack_require__(185); -var findDOMNode = __webpack_require__(158); -var getHostComponentFromComposite = __webpack_require__(71); -var renderSubtreeIntoContainer = __webpack_require__(166); +var findDOMNode = __webpack_require__(202); +var getHostComponentFromComposite = __webpack_require__(83); +var renderSubtreeIntoContainer = __webpack_require__(210); var warning = __webpack_require__(2); ReactDefaultInjection.inject(); @@ -12991,9 +18790,9 @@ if (process.env.NODE_ENV !== 'production') { if (process.env.NODE_ENV !== 'production') { var ReactInstrumentation = __webpack_require__(8); - var ReactDOMUnknownPropertyHook = __webpack_require__(123); - var ReactDOMNullInputValuePropHook = __webpack_require__(117); - var ReactDOMInvalidARIAHook = __webpack_require__(116); + var ReactDOMUnknownPropertyHook = __webpack_require__(167); + var ReactDOMNullInputValuePropHook = __webpack_require__(161); + var ReactDOMInvalidARIAHook = __webpack_require__(160); ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook); ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook); @@ -13004,7 +18803,7 @@ module.exports = ReactDOM; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 110 */ +/* 154 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13025,31 +18824,31 @@ module.exports = ReactDOM; var _prodInvariant = __webpack_require__(3), _assign = __webpack_require__(4); -var AutoFocusUtils = __webpack_require__(97); -var CSSPropertyOperations = __webpack_require__(99); -var DOMLazyTree = __webpack_require__(17); -var DOMNamespaces = __webpack_require__(33); +var AutoFocusUtils = __webpack_require__(141); +var CSSPropertyOperations = __webpack_require__(143); +var DOMLazyTree = __webpack_require__(18); +var DOMNamespaces = __webpack_require__(39); var DOMProperty = __webpack_require__(13); -var DOMPropertyOperations = __webpack_require__(58); -var EventPluginHub = __webpack_require__(21); -var EventPluginRegistry = __webpack_require__(25); -var ReactBrowserEventEmitter = __webpack_require__(26); -var ReactDOMComponentFlags = __webpack_require__(59); +var DOMPropertyOperations = __webpack_require__(70); +var EventPluginHub = __webpack_require__(23); +var EventPluginRegistry = __webpack_require__(29); +var ReactBrowserEventEmitter = __webpack_require__(30); +var ReactDOMComponentFlags = __webpack_require__(71); var ReactDOMComponentTree = __webpack_require__(5); -var ReactDOMInput = __webpack_require__(115); -var ReactDOMOption = __webpack_require__(118); -var ReactDOMSelect = __webpack_require__(60); -var ReactDOMTextarea = __webpack_require__(121); +var ReactDOMInput = __webpack_require__(159); +var ReactDOMOption = __webpack_require__(162); +var ReactDOMSelect = __webpack_require__(72); +var ReactDOMTextarea = __webpack_require__(165); var ReactInstrumentation = __webpack_require__(8); -var ReactMultiChild = __webpack_require__(134); -var ReactServerRenderingTransaction = __webpack_require__(139); +var ReactMultiChild = __webpack_require__(178); +var ReactServerRenderingTransaction = __webpack_require__(183); var emptyFunction = __webpack_require__(9); -var escapeTextContentForBrowser = __webpack_require__(29); +var escapeTextContentForBrowser = __webpack_require__(33); var invariant = __webpack_require__(1); -var isEventSupported = __webpack_require__(44); -var shallowEqual = __webpack_require__(31); -var validateDOMNesting = __webpack_require__(46); +var isEventSupported = __webpack_require__(50); +var shallowEqual = __webpack_require__(37); +var validateDOMNesting = __webpack_require__(52); var warning = __webpack_require__(2); var Flags = ReactDOMComponentFlags; @@ -14011,7 +19810,7 @@ module.exports = ReactDOMComponent; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 111 */ +/* 155 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14027,7 +19826,7 @@ module.exports = ReactDOMComponent; -var validateDOMNesting = __webpack_require__(46); +var validateDOMNesting = __webpack_require__(52); var DOC_NODE_TYPE = 9; @@ -14050,7 +19849,7 @@ module.exports = ReactDOMContainerInfo; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 112 */ +/* 156 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14068,7 +19867,7 @@ module.exports = ReactDOMContainerInfo; var _assign = __webpack_require__(4); -var DOMLazyTree = __webpack_require__(17); +var DOMLazyTree = __webpack_require__(18); var ReactDOMComponentTree = __webpack_require__(5); var ReactDOMEmptyComponent = function (instantiate) { @@ -14115,7 +19914,7 @@ _assign(ReactDOMEmptyComponent.prototype, { module.exports = ReactDOMEmptyComponent; /***/ }), -/* 113 */ +/* 157 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14139,7 +19938,7 @@ var ReactDOMFeatureFlags = { module.exports = ReactDOMFeatureFlags; /***/ }), -/* 114 */ +/* 158 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14155,7 +19954,7 @@ module.exports = ReactDOMFeatureFlags; -var DOMChildrenOperations = __webpack_require__(32); +var DOMChildrenOperations = __webpack_require__(38); var ReactDOMComponentTree = __webpack_require__(5); /** @@ -14178,7 +19977,7 @@ var ReactDOMIDOperations = { module.exports = ReactDOMIDOperations; /***/ }), -/* 115 */ +/* 159 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14197,8 +19996,8 @@ module.exports = ReactDOMIDOperations; var _prodInvariant = __webpack_require__(3), _assign = __webpack_require__(4); -var DOMPropertyOperations = __webpack_require__(58); -var LinkedValueUtils = __webpack_require__(36); +var DOMPropertyOperations = __webpack_require__(70); +var LinkedValueUtils = __webpack_require__(42); var ReactDOMComponentTree = __webpack_require__(5); var ReactUpdates = __webpack_require__(10); @@ -14462,7 +20261,7 @@ module.exports = ReactDOMInput; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 116 */ +/* 160 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14561,7 +20360,7 @@ module.exports = ReactDOMInvalidARIAHook; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 117 */ +/* 161 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14610,7 +20409,7 @@ module.exports = ReactDOMNullInputValuePropHook; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 118 */ +/* 162 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14628,9 +20427,9 @@ module.exports = ReactDOMNullInputValuePropHook; var _assign = __webpack_require__(4); -var React = __webpack_require__(19); +var React = __webpack_require__(20); var ReactDOMComponentTree = __webpack_require__(5); -var ReactDOMSelect = __webpack_require__(60); +var ReactDOMSelect = __webpack_require__(72); var warning = __webpack_require__(2); var didWarnInvalidOptionChildren = false; @@ -14739,7 +20538,7 @@ module.exports = ReactDOMOption; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 119 */ +/* 163 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14757,8 +20556,8 @@ module.exports = ReactDOMOption; var ExecutionEnvironment = __webpack_require__(6); -var getNodeForCharacterOffset = __webpack_require__(163); -var getTextContentAccessor = __webpack_require__(72); +var getNodeForCharacterOffset = __webpack_require__(207); +var getTextContentAccessor = __webpack_require__(84); /** * While `isCollapsed` is available on the Selection object and `collapsed` @@ -14956,7 +20755,7 @@ var ReactDOMSelection = { module.exports = ReactDOMSelection; /***/ }), -/* 120 */ +/* 164 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14975,13 +20774,13 @@ module.exports = ReactDOMSelection; var _prodInvariant = __webpack_require__(3), _assign = __webpack_require__(4); -var DOMChildrenOperations = __webpack_require__(32); -var DOMLazyTree = __webpack_require__(17); +var DOMChildrenOperations = __webpack_require__(38); +var DOMLazyTree = __webpack_require__(18); var ReactDOMComponentTree = __webpack_require__(5); -var escapeTextContentForBrowser = __webpack_require__(29); +var escapeTextContentForBrowser = __webpack_require__(33); var invariant = __webpack_require__(1); -var validateDOMNesting = __webpack_require__(46); +var validateDOMNesting = __webpack_require__(52); /** * Text nodes violate a couple assumptions that React makes about components: @@ -15126,7 +20925,7 @@ module.exports = ReactDOMTextComponent; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 121 */ +/* 165 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15145,7 +20944,7 @@ module.exports = ReactDOMTextComponent; var _prodInvariant = __webpack_require__(3), _assign = __webpack_require__(4); -var LinkedValueUtils = __webpack_require__(36); +var LinkedValueUtils = __webpack_require__(42); var ReactDOMComponentTree = __webpack_require__(5); var ReactUpdates = __webpack_require__(10); @@ -15292,7 +21091,7 @@ module.exports = ReactDOMTextarea; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 122 */ +/* 166 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15434,7 +21233,7 @@ module.exports = { /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 123 */ +/* 167 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15451,7 +21250,7 @@ module.exports = { var DOMProperty = __webpack_require__(13); -var EventPluginRegistry = __webpack_require__(25); +var EventPluginRegistry = __webpack_require__(29); var ReactComponentTreeHook = __webpack_require__(7); var warning = __webpack_require__(2); @@ -15552,7 +21351,7 @@ module.exports = ReactDOMUnknownPropertyHook; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 124 */ +/* 168 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15569,12 +21368,12 @@ module.exports = ReactDOMUnknownPropertyHook; -var ReactInvalidSetStateWarningHook = __webpack_require__(132); -var ReactHostOperationHistoryHook = __webpack_require__(130); +var ReactInvalidSetStateWarningHook = __webpack_require__(176); +var ReactHostOperationHistoryHook = __webpack_require__(174); var ReactComponentTreeHook = __webpack_require__(7); var ExecutionEnvironment = __webpack_require__(6); -var performanceNow = __webpack_require__(95); +var performanceNow = __webpack_require__(111); var warning = __webpack_require__(2); var hooks = []; @@ -15919,7 +21718,7 @@ module.exports = ReactDebugTool; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 125 */ +/* 169 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15938,7 +21737,7 @@ module.exports = ReactDebugTool; var _assign = __webpack_require__(4); var ReactUpdates = __webpack_require__(10); -var Transaction = __webpack_require__(28); +var Transaction = __webpack_require__(32); var emptyFunction = __webpack_require__(9); @@ -15992,7 +21791,7 @@ var ReactDefaultBatchingStrategy = { module.exports = ReactDefaultBatchingStrategy; /***/ }), -/* 126 */ +/* 170 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16008,25 +21807,25 @@ module.exports = ReactDefaultBatchingStrategy; -var ARIADOMPropertyConfig = __webpack_require__(96); -var BeforeInputEventPlugin = __webpack_require__(98); -var ChangeEventPlugin = __webpack_require__(100); -var DefaultEventPluginOrder = __webpack_require__(102); -var EnterLeaveEventPlugin = __webpack_require__(103); -var HTMLDOMPropertyConfig = __webpack_require__(105); -var ReactComponentBrowserEnvironment = __webpack_require__(107); -var ReactDOMComponent = __webpack_require__(110); +var ARIADOMPropertyConfig = __webpack_require__(140); +var BeforeInputEventPlugin = __webpack_require__(142); +var ChangeEventPlugin = __webpack_require__(144); +var DefaultEventPluginOrder = __webpack_require__(146); +var EnterLeaveEventPlugin = __webpack_require__(147); +var HTMLDOMPropertyConfig = __webpack_require__(149); +var ReactComponentBrowserEnvironment = __webpack_require__(151); +var ReactDOMComponent = __webpack_require__(154); var ReactDOMComponentTree = __webpack_require__(5); -var ReactDOMEmptyComponent = __webpack_require__(112); -var ReactDOMTreeTraversal = __webpack_require__(122); -var ReactDOMTextComponent = __webpack_require__(120); -var ReactDefaultBatchingStrategy = __webpack_require__(125); -var ReactEventListener = __webpack_require__(129); -var ReactInjection = __webpack_require__(131); -var ReactReconcileTransaction = __webpack_require__(137); -var SVGDOMPropertyConfig = __webpack_require__(142); -var SelectEventPlugin = __webpack_require__(143); -var SimpleEventPlugin = __webpack_require__(144); +var ReactDOMEmptyComponent = __webpack_require__(156); +var ReactDOMTreeTraversal = __webpack_require__(166); +var ReactDOMTextComponent = __webpack_require__(164); +var ReactDefaultBatchingStrategy = __webpack_require__(169); +var ReactEventListener = __webpack_require__(173); +var ReactInjection = __webpack_require__(175); +var ReactReconcileTransaction = __webpack_require__(181); +var SVGDOMPropertyConfig = __webpack_require__(186); +var SelectEventPlugin = __webpack_require__(187); +var SimpleEventPlugin = __webpack_require__(188); var alreadyInjected = false; @@ -16083,7 +21882,7 @@ module.exports = { }; /***/ }), -/* 127 */ +/* 171 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16108,7 +21907,7 @@ var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol module.exports = REACT_ELEMENT_TYPE; /***/ }), -/* 128 */ +/* 172 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16124,7 +21923,7 @@ module.exports = REACT_ELEMENT_TYPE; -var EventPluginHub = __webpack_require__(21); +var EventPluginHub = __webpack_require__(23); function runEventQueueInBatch(events) { EventPluginHub.enqueueEvents(events); @@ -16146,7 +21945,7 @@ var ReactEventEmitterMixin = { module.exports = ReactEventEmitterMixin; /***/ }), -/* 129 */ +/* 173 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16164,14 +21963,14 @@ module.exports = ReactEventEmitterMixin; var _assign = __webpack_require__(4); -var EventListener = __webpack_require__(53); +var EventListener = __webpack_require__(60); var ExecutionEnvironment = __webpack_require__(6); var PooledClass = __webpack_require__(14); var ReactDOMComponentTree = __webpack_require__(5); var ReactUpdates = __webpack_require__(10); -var getEventTarget = __webpack_require__(43); -var getUnboundedScrollPosition = __webpack_require__(88); +var getEventTarget = __webpack_require__(49); +var getUnboundedScrollPosition = __webpack_require__(104); /** * Find the deepest React component completely containing the root of the @@ -16306,7 +22105,7 @@ var ReactEventListener = { module.exports = ReactEventListener; /***/ }), -/* 130 */ +/* 174 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16345,7 +22144,7 @@ var ReactHostOperationHistoryHook = { module.exports = ReactHostOperationHistoryHook; /***/ }), -/* 131 */ +/* 175 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16362,12 +22161,12 @@ module.exports = ReactHostOperationHistoryHook; var DOMProperty = __webpack_require__(13); -var EventPluginHub = __webpack_require__(21); -var EventPluginUtils = __webpack_require__(34); -var ReactComponentEnvironment = __webpack_require__(37); -var ReactEmptyComponent = __webpack_require__(61); -var ReactBrowserEventEmitter = __webpack_require__(26); -var ReactHostComponent = __webpack_require__(63); +var EventPluginHub = __webpack_require__(23); +var EventPluginUtils = __webpack_require__(40); +var ReactComponentEnvironment = __webpack_require__(43); +var ReactEmptyComponent = __webpack_require__(73); +var ReactBrowserEventEmitter = __webpack_require__(30); +var ReactHostComponent = __webpack_require__(75); var ReactUpdates = __webpack_require__(10); var ReactInjection = { @@ -16384,7 +22183,7 @@ var ReactInjection = { module.exports = ReactInjection; /***/ }), -/* 132 */ +/* 176 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16427,7 +22226,7 @@ module.exports = ReactInvalidSetStateWarningHook; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 133 */ +/* 177 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16443,7 +22242,7 @@ module.exports = ReactInvalidSetStateWarningHook; -var adler32 = __webpack_require__(155); +var adler32 = __webpack_require__(199); var TAG_END = /\/?>/; var COMMENT_START = /^<\!\-\-/; @@ -16482,7 +22281,7 @@ var ReactMarkupChecksum = { module.exports = ReactMarkupChecksum; /***/ }), -/* 134 */ +/* 178 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16500,16 +22299,16 @@ module.exports = ReactMarkupChecksum; var _prodInvariant = __webpack_require__(3); -var ReactComponentEnvironment = __webpack_require__(37); -var ReactInstanceMap = __webpack_require__(23); +var ReactComponentEnvironment = __webpack_require__(43); +var ReactInstanceMap = __webpack_require__(25); var ReactInstrumentation = __webpack_require__(8); var ReactCurrentOwner = __webpack_require__(11); -var ReactReconciler = __webpack_require__(18); -var ReactChildReconciler = __webpack_require__(106); +var ReactReconciler = __webpack_require__(19); +var ReactChildReconciler = __webpack_require__(150); var emptyFunction = __webpack_require__(9); -var flattenChildren = __webpack_require__(159); +var flattenChildren = __webpack_require__(203); var invariant = __webpack_require__(1); /** @@ -16938,7 +22737,7 @@ module.exports = ReactMultiChild; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 135 */ +/* 179 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17038,7 +22837,7 @@ module.exports = ReactOwner; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 136 */ +/* 180 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17069,7 +22868,7 @@ module.exports = ReactPropTypeLocationNames; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 137 */ +/* 181 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17087,13 +22886,13 @@ module.exports = ReactPropTypeLocationNames; var _assign = __webpack_require__(4); -var CallbackQueue = __webpack_require__(57); +var CallbackQueue = __webpack_require__(69); var PooledClass = __webpack_require__(14); -var ReactBrowserEventEmitter = __webpack_require__(26); -var ReactInputSelection = __webpack_require__(64); +var ReactBrowserEventEmitter = __webpack_require__(30); +var ReactInputSelection = __webpack_require__(76); var ReactInstrumentation = __webpack_require__(8); -var Transaction = __webpack_require__(28); -var ReactUpdateQueue = __webpack_require__(39); +var Transaction = __webpack_require__(32); +var ReactUpdateQueue = __webpack_require__(45); /** * Ensures that, when possible, the selection range (currently selected text @@ -17253,7 +23052,7 @@ module.exports = ReactReconcileTransaction; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 138 */ +/* 182 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17270,7 +23069,7 @@ module.exports = ReactReconcileTransaction; -var ReactOwner = __webpack_require__(135); +var ReactOwner = __webpack_require__(179); var ReactRef = {}; @@ -17347,7 +23146,7 @@ ReactRef.detachRefs = function (instance, element) { module.exports = ReactRef; /***/ }), -/* 139 */ +/* 183 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17366,9 +23165,9 @@ module.exports = ReactRef; var _assign = __webpack_require__(4); var PooledClass = __webpack_require__(14); -var Transaction = __webpack_require__(28); +var Transaction = __webpack_require__(32); var ReactInstrumentation = __webpack_require__(8); -var ReactServerUpdateQueue = __webpack_require__(140); +var ReactServerUpdateQueue = __webpack_require__(184); /** * Executed within the scope of the `Transaction` instance. Consider these as @@ -17443,7 +23242,7 @@ module.exports = ReactServerRenderingTransaction; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 140 */ +/* 184 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17462,7 +23261,7 @@ module.exports = ReactServerRenderingTransaction; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var ReactUpdateQueue = __webpack_require__(39); +var ReactUpdateQueue = __webpack_require__(45); var warning = __webpack_require__(2); @@ -17588,7 +23387,7 @@ module.exports = ReactServerUpdateQueue; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 141 */ +/* 185 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17607,7 +23406,7 @@ module.exports = ReactServerUpdateQueue; module.exports = '15.4.2'; /***/ }), -/* 142 */ +/* 186 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17914,7 +23713,7 @@ Object.keys(ATTRS).forEach(function (key) { module.exports = SVGDOMPropertyConfig; /***/ }), -/* 143 */ +/* 187 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17930,15 +23729,15 @@ module.exports = SVGDOMPropertyConfig; -var EventPropagators = __webpack_require__(22); +var EventPropagators = __webpack_require__(24); var ExecutionEnvironment = __webpack_require__(6); var ReactDOMComponentTree = __webpack_require__(5); -var ReactInputSelection = __webpack_require__(64); +var ReactInputSelection = __webpack_require__(76); var SyntheticEvent = __webpack_require__(12); -var getActiveElement = __webpack_require__(55); -var isTextInputElement = __webpack_require__(74); -var shallowEqual = __webpack_require__(31); +var getActiveElement = __webpack_require__(62); +var isTextInputElement = __webpack_require__(86); +var shallowEqual = __webpack_require__(37); var skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11; @@ -18110,7 +23909,7 @@ var SelectEventPlugin = { module.exports = SelectEventPlugin; /***/ }), -/* 144 */ +/* 188 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18129,23 +23928,23 @@ module.exports = SelectEventPlugin; var _prodInvariant = __webpack_require__(3); -var EventListener = __webpack_require__(53); -var EventPropagators = __webpack_require__(22); +var EventListener = __webpack_require__(60); +var EventPropagators = __webpack_require__(24); var ReactDOMComponentTree = __webpack_require__(5); -var SyntheticAnimationEvent = __webpack_require__(145); -var SyntheticClipboardEvent = __webpack_require__(146); +var SyntheticAnimationEvent = __webpack_require__(189); +var SyntheticClipboardEvent = __webpack_require__(190); var SyntheticEvent = __webpack_require__(12); -var SyntheticFocusEvent = __webpack_require__(149); -var SyntheticKeyboardEvent = __webpack_require__(151); -var SyntheticMouseEvent = __webpack_require__(27); -var SyntheticDragEvent = __webpack_require__(148); -var SyntheticTouchEvent = __webpack_require__(152); -var SyntheticTransitionEvent = __webpack_require__(153); -var SyntheticUIEvent = __webpack_require__(24); -var SyntheticWheelEvent = __webpack_require__(154); +var SyntheticFocusEvent = __webpack_require__(193); +var SyntheticKeyboardEvent = __webpack_require__(195); +var SyntheticMouseEvent = __webpack_require__(31); +var SyntheticDragEvent = __webpack_require__(192); +var SyntheticTouchEvent = __webpack_require__(196); +var SyntheticTransitionEvent = __webpack_require__(197); +var SyntheticUIEvent = __webpack_require__(26); +var SyntheticWheelEvent = __webpack_require__(198); var emptyFunction = __webpack_require__(9); -var getEventCharCode = __webpack_require__(41); +var getEventCharCode = __webpack_require__(47); var invariant = __webpack_require__(1); /** @@ -18344,7 +24143,7 @@ module.exports = SimpleEventPlugin; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 145 */ +/* 189 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18388,7 +24187,7 @@ SyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface); module.exports = SyntheticAnimationEvent; /***/ }), -/* 146 */ +/* 190 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18431,7 +24230,7 @@ SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface); module.exports = SyntheticClipboardEvent; /***/ }), -/* 147 */ +/* 191 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18472,7 +24271,7 @@ SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface module.exports = SyntheticCompositionEvent; /***/ }), -/* 148 */ +/* 192 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18488,7 +24287,7 @@ module.exports = SyntheticCompositionEvent; -var SyntheticMouseEvent = __webpack_require__(27); +var SyntheticMouseEvent = __webpack_require__(31); /** * @interface DragEvent @@ -18513,7 +24312,7 @@ SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface); module.exports = SyntheticDragEvent; /***/ }), -/* 149 */ +/* 193 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18529,7 +24328,7 @@ module.exports = SyntheticDragEvent; -var SyntheticUIEvent = __webpack_require__(24); +var SyntheticUIEvent = __webpack_require__(26); /** * @interface FocusEvent @@ -18554,7 +24353,7 @@ SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface); module.exports = SyntheticFocusEvent; /***/ }), -/* 150 */ +/* 194 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18596,7 +24395,7 @@ SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface); module.exports = SyntheticInputEvent; /***/ }), -/* 151 */ +/* 195 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18612,11 +24411,11 @@ module.exports = SyntheticInputEvent; -var SyntheticUIEvent = __webpack_require__(24); +var SyntheticUIEvent = __webpack_require__(26); -var getEventCharCode = __webpack_require__(41); -var getEventKey = __webpack_require__(160); -var getEventModifierState = __webpack_require__(42); +var getEventCharCode = __webpack_require__(47); +var getEventKey = __webpack_require__(204); +var getEventModifierState = __webpack_require__(48); /** * @interface KeyboardEvent @@ -18685,7 +24484,7 @@ SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface); module.exports = SyntheticKeyboardEvent; /***/ }), -/* 152 */ +/* 196 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18701,9 +24500,9 @@ module.exports = SyntheticKeyboardEvent; -var SyntheticUIEvent = __webpack_require__(24); +var SyntheticUIEvent = __webpack_require__(26); -var getEventModifierState = __webpack_require__(42); +var getEventModifierState = __webpack_require__(48); /** * @interface TouchEvent @@ -18735,7 +24534,7 @@ SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface); module.exports = SyntheticTouchEvent; /***/ }), -/* 153 */ +/* 197 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18779,7 +24578,7 @@ SyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface); module.exports = SyntheticTransitionEvent; /***/ }), -/* 154 */ +/* 198 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18795,7 +24594,7 @@ module.exports = SyntheticTransitionEvent; -var SyntheticMouseEvent = __webpack_require__(27); +var SyntheticMouseEvent = __webpack_require__(31); /** * @interface WheelEvent @@ -18838,7 +24637,7 @@ SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface); module.exports = SyntheticWheelEvent; /***/ }), -/* 155 */ +/* 199 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18887,7 +24686,7 @@ function adler32(data) { module.exports = adler32; /***/ }), -/* 156 */ +/* 200 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18905,8 +24704,8 @@ module.exports = adler32; var _prodInvariant = __webpack_require__(3); -var ReactPropTypeLocationNames = __webpack_require__(136); -var ReactPropTypesSecret = __webpack_require__(67); +var ReactPropTypeLocationNames = __webpack_require__(180); +var ReactPropTypesSecret = __webpack_require__(79); var invariant = __webpack_require__(1); var warning = __webpack_require__(2); @@ -18980,7 +24779,7 @@ module.exports = checkReactTypeSpec; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 157 */ +/* 201 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18996,7 +24795,7 @@ module.exports = checkReactTypeSpec; -var CSSProperty = __webpack_require__(56); +var CSSProperty = __webpack_require__(68); var warning = __webpack_require__(2); var isUnitlessNumber = CSSProperty.isUnitlessNumber; @@ -19065,7 +24864,7 @@ module.exports = dangerousStyleValue; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 158 */ +/* 202 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19085,9 +24884,9 @@ var _prodInvariant = __webpack_require__(3); var ReactCurrentOwner = __webpack_require__(11); var ReactDOMComponentTree = __webpack_require__(5); -var ReactInstanceMap = __webpack_require__(23); +var ReactInstanceMap = __webpack_require__(25); -var getHostComponentFromComposite = __webpack_require__(71); +var getHostComponentFromComposite = __webpack_require__(83); var invariant = __webpack_require__(1); var warning = __webpack_require__(2); @@ -19131,7 +24930,7 @@ module.exports = findDOMNode; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 159 */ +/* 203 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19148,8 +24947,8 @@ module.exports = findDOMNode; -var KeyEscapeUtils = __webpack_require__(35); -var traverseAllChildren = __webpack_require__(76); +var KeyEscapeUtils = __webpack_require__(41); +var traverseAllChildren = __webpack_require__(88); var warning = __webpack_require__(2); var ReactComponentTreeHook; @@ -19213,7 +25012,7 @@ module.exports = flattenChildren; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 160 */ +/* 204 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19229,7 +25028,7 @@ module.exports = flattenChildren; -var getEventCharCode = __webpack_require__(41); +var getEventCharCode = __webpack_require__(47); /** * Normalization of deprecated HTML5 `key` values @@ -19320,7 +25119,7 @@ function getEventKey(nativeEvent) { module.exports = getEventKey; /***/ }), -/* 161 */ +/* 205 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19366,7 +25165,7 @@ function getIteratorFn(maybeIterable) { module.exports = getIteratorFn; /***/ }), -/* 162 */ +/* 206 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19392,7 +25191,7 @@ function getNextDebugID() { module.exports = getNextDebugID; /***/ }), -/* 163 */ +/* 207 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19471,7 +25270,7 @@ function getNodeForCharacterOffset(root, offset) { module.exports = getNodeForCharacterOffset; /***/ }), -/* 164 */ +/* 208 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19577,7 +25376,7 @@ function getVendorPrefixedEventName(eventName) { module.exports = getVendorPrefixedEventName; /***/ }), -/* 165 */ +/* 209 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19593,7 +25392,7 @@ module.exports = getVendorPrefixedEventName; -var escapeTextContentForBrowser = __webpack_require__(29); +var escapeTextContentForBrowser = __webpack_require__(33); /** * Escapes attribute value to prevent scripting attacks. @@ -19608,7 +25407,7 @@ function quoteAttributeValueForBrowser(value) { module.exports = quoteAttributeValueForBrowser; /***/ }), -/* 166 */ +/* 210 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19624,12 +25423,12 @@ module.exports = quoteAttributeValueForBrowser; -var ReactMount = __webpack_require__(65); +var ReactMount = __webpack_require__(77); module.exports = ReactMount.renderSubtreeIntoContainer; /***/ }), -/* 167 */ +/* 211 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19693,7 +25492,7 @@ var KeyEscapeUtils = { module.exports = KeyEscapeUtils; /***/ }), -/* 168 */ +/* 212 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19811,7 +25610,7 @@ module.exports = PooledClass; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 169 */ +/* 213 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19827,11 +25626,11 @@ module.exports = PooledClass; -var PooledClass = __webpack_require__(168); +var PooledClass = __webpack_require__(212); var ReactElement = __webpack_require__(15); var emptyFunction = __webpack_require__(9); -var traverseAllChildren = __webpack_require__(177); +var traverseAllChildren = __webpack_require__(221); var twoArgumentPooler = PooledClass.twoArgumentPooler; var fourArgumentPooler = PooledClass.fourArgumentPooler; @@ -20007,7 +25806,7 @@ var ReactChildren = { module.exports = ReactChildren; /***/ }), -/* 170 */ +/* 214 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20026,12 +25825,12 @@ module.exports = ReactChildren; var _prodInvariant = __webpack_require__(16), _assign = __webpack_require__(4); -var ReactComponent = __webpack_require__(47); +var ReactComponent = __webpack_require__(53); var ReactElement = __webpack_require__(15); -var ReactPropTypeLocationNames = __webpack_require__(49); -var ReactNoopUpdateQueue = __webpack_require__(48); +var ReactPropTypeLocationNames = __webpack_require__(55); +var ReactNoopUpdateQueue = __webpack_require__(54); -var emptyObject = __webpack_require__(20); +var emptyObject = __webpack_require__(21); var invariant = __webpack_require__(1); var warning = __webpack_require__(2); @@ -20730,7 +26529,7 @@ module.exports = ReactClass; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 171 */ +/* 215 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20755,7 +26554,7 @@ var ReactElement = __webpack_require__(15); */ var createDOMFactory = ReactElement.createFactory; if (process.env.NODE_ENV !== 'production') { - var ReactElementValidator = __webpack_require__(78); + var ReactElementValidator = __webpack_require__(90); createDOMFactory = ReactElementValidator.createFactory; } @@ -20906,7 +26705,7 @@ module.exports = ReactDOMFactories; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 172 */ +/* 216 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20923,11 +26722,11 @@ module.exports = ReactDOMFactories; var ReactElement = __webpack_require__(15); -var ReactPropTypeLocationNames = __webpack_require__(49); -var ReactPropTypesSecret = __webpack_require__(79); +var ReactPropTypeLocationNames = __webpack_require__(55); +var ReactPropTypesSecret = __webpack_require__(91); var emptyFunction = __webpack_require__(9); -var getIteratorFn = __webpack_require__(51); +var getIteratorFn = __webpack_require__(57); var warning = __webpack_require__(2); /** @@ -21346,7 +27145,7 @@ module.exports = ReactPropTypes; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 173 */ +/* 217 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21364,10 +27163,10 @@ module.exports = ReactPropTypes; var _assign = __webpack_require__(4); -var ReactComponent = __webpack_require__(47); -var ReactNoopUpdateQueue = __webpack_require__(48); +var ReactComponent = __webpack_require__(53); +var ReactNoopUpdateQueue = __webpack_require__(54); -var emptyObject = __webpack_require__(20); +var emptyObject = __webpack_require__(21); /** * Base class helpers for the updating state of a component. @@ -21393,7 +27192,7 @@ ReactPureComponent.prototype.isPureReactComponent = true; module.exports = ReactPureComponent; /***/ }), -/* 174 */ +/* 218 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21412,7 +27211,7 @@ module.exports = ReactPureComponent; module.exports = '15.4.2'; /***/ }), -/* 175 */ +/* 219 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21430,8 +27229,8 @@ module.exports = '15.4.2'; var _prodInvariant = __webpack_require__(16); -var ReactPropTypeLocationNames = __webpack_require__(49); -var ReactPropTypesSecret = __webpack_require__(79); +var ReactPropTypeLocationNames = __webpack_require__(55); +var ReactPropTypesSecret = __webpack_require__(91); var invariant = __webpack_require__(1); var warning = __webpack_require__(2); @@ -21505,7 +27304,7 @@ module.exports = checkReactTypeSpec; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 176 */ +/* 220 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21549,7 +27348,7 @@ module.exports = onlyChild; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 177 */ +/* 221 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21568,11 +27367,11 @@ module.exports = onlyChild; var _prodInvariant = __webpack_require__(16); var ReactCurrentOwner = __webpack_require__(11); -var REACT_ELEMENT_TYPE = __webpack_require__(77); +var REACT_ELEMENT_TYPE = __webpack_require__(89); -var getIteratorFn = __webpack_require__(51); +var getIteratorFn = __webpack_require__(57); var invariant = __webpack_require__(1); -var KeyEscapeUtils = __webpack_require__(167); +var KeyEscapeUtils = __webpack_require__(211); var warning = __webpack_require__(2); var SEPARATOR = '.'; @@ -21731,21 +27530,1971 @@ module.exports = traverseAllChildren; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 178 */ +/* 222 */ +/***/ (function(module, exports, __webpack_require__) { + +var events = __webpack_require__(36); +var utils = __webpack_require__(223); +var wrap = exports.wrap = { + /** + * Wrap an anonymous or named function to notify an Emitter and + * return the wrapper function. + * @param {events.EventEmitter} emitter The emitter to notify + * @param {Function} fn The function to wrap + * @param {String} name The optional name + */ + fn: function(emitter, fn, strict, name, scope) { + var wrapped = function() { + var result; + utils.emitEvents(emitter, 'before', name, [arguments, this, name]); + + try { + result = fn.apply(scope || this, arguments); + } catch (e) { + utils.emitEvents(emitter, 'error', name, [ e, arguments, this, name ]); + throw e; + } + + utils.emitEvents(emitter, 'after', name, [ result, arguments, this, name ]); + return result; + }; + + if (strict) { + eval('wrapped = ' + utils.addArgs(wrapped.toString(), fn.length)); + } + + return wrapped; + }, + /** + * Wrap an anonymous or named function that calls a callback asynchronously + * to notify an Emitter and return the wrapper function. + * @param {events.EventEmitter} emitter The emitter to notify + * @param {Function} fn The function to wrap + * @param {Integer} position The position of the callback in the arguments + * array (defaults to 0). Set to -1 if the callback is the last argument. + * @param {String} name The optional name + */ + async: function(emitter, fn, position, strict, name, scope) { + var wrapped = function() { + var pos = position == -1 ? arguments.length - 1 : (position || 0); + var callback = arguments[pos]; + var context = this; + var methodArgs = arguments; + var callbackWrapper = function() { + try { + callback.apply(context, arguments); + } catch (e) { + utils.emitEvents(emitter, 'error', name, [ e, methodArgs, context, name ]); + throw e; + } + var eventType = arguments[0] instanceof Error ? 'error' : 'after'; + utils.emitEvents(emitter, eventType, name, [ arguments, methodArgs, context, name ]); + }; + + utils.emitEvents(emitter, 'before', name, [ methodArgs, this, name ]); + methodArgs[pos] = callbackWrapper; + + try { + return fn.apply(scope || this, methodArgs); + } catch (e) { + utils.emitEvents(emitter, 'error', name, [ e, methodArgs, context, name ]); + throw e; + } + }; + + if (strict) { + eval('wrapped = ' + utils.addArgs(wrapped.toString(), fn.length)); + } + + return wrapped; + } +}; + +var Emitter = exports.Emitter = function(obj) { + this.obj = obj; +}; + +Emitter.prototype = Object.create(events.EventEmitter.prototype); + +/** + * Punch a method with the given name, with + * @param {String | Array} method The name of the method or a list of + * method names. + * @param {Integer} position The optional position of the asynchronous callback + * in the arguments list. + */ +Emitter.prototype.punch = function(method, position, strict) { + if (Array.isArray(method)) { + var self = this; + method.forEach(function(method) { + self.punch(method, position, strict); + }); + } else { + var old = this.obj[method]; + if (typeof old == 'function') { + this.obj[method] = (!position && position !== 0) ? + wrap.fn(this, old, strict, method) : + wrap.async(this, old, position, strict, method); + } + } + return this; +}; + +exports.emitter = function(obj) { + return new Emitter(obj); +}; + + +/***/ }), +/* 223 */ +/***/ (function(module, exports) { + +exports.toBase26 = function(num) { + var outString = ''; + var letters = 'abcdefghijklmnopqrstuvwxyz'; + while (num > 25) { + var remainder = num % 26; + outString = letters.charAt(remainder) + outString; + num = Math.floor(num / 26) - 1; + } + outString = letters.charAt(num) + outString; + return outString; +}; + +exports.makeFakeArgs = function(len) { + var argArr = []; + for (var i = 0; i < len; i++) { + argArr.push(exports.toBase26(i)); + } + return argArr.join(","); +}; + +exports.addArgs = function(fnString, argLen) { + return fnString.replace(/function\s*\(\)/, 'function(' + exports.makeFakeArgs(argLen) + ')'); +}; + +exports.emitEvents = function(emitter, type, name, args) { + var ucName = name ? name.replace(/^\w/, function(first) { + return first.toUpperCase(); + }) : null; + + emitter.emit.apply(emitter, [type].concat(args)); + if (ucName) { + emitter.emit.apply(emitter, [type + ucName].concat(args)); + } +}; + + +/***/ }), +/* 224 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Root reference for iframes. + */ + +var root; +if (typeof window !== 'undefined') { // Browser window + root = window; +} else if (typeof self !== 'undefined') { // Web Worker + root = self; +} else { // Other environments + console.warn("Using browser-only version of superagent in non-browser environment"); + root = this; +} + +var Emitter = __webpack_require__(96); +var RequestBase = __webpack_require__(226); +var isObject = __webpack_require__(58); +var isFunction = __webpack_require__(225); +var ResponseBase = __webpack_require__(227); +var shouldRetry = __webpack_require__(228); + +/** + * Noop. + */ + +function noop(){}; + +/** + * Expose `request`. + */ + +var request = exports = module.exports = function(method, url) { + // callback + if ('function' == typeof url) { + return new exports.Request('GET', method).end(url); + } + + // url first + if (1 == arguments.length) { + return new exports.Request('GET', method); + } + + return new exports.Request(method, url); +} + +exports.Request = Request; + +/** + * Determine XHR. + */ + +request.getXHR = function () { + if (root.XMLHttpRequest + && (!root.location || 'file:' != root.location.protocol + || !root.ActiveXObject)) { + return new XMLHttpRequest; + } else { + try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {} + try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {} + try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {} + try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {} + } + throw Error("Browser-only verison of superagent could not find XHR"); +}; + +/** + * Removes leading and trailing whitespace, added to support IE. + * + * @param {String} s + * @return {String} + * @api private + */ + +var trim = ''.trim + ? function(s) { return s.trim(); } + : function(s) { return s.replace(/(^\s*|\s*$)/g, ''); }; + +/** + * Serialize the given `obj`. + * + * @param {Object} obj + * @return {String} + * @api private + */ + +function serialize(obj) { + if (!isObject(obj)) return obj; + var pairs = []; + for (var key in obj) { + pushEncodedKeyValuePair(pairs, key, obj[key]); + } + return pairs.join('&'); +} + +/** + * Helps 'serialize' with serializing arrays. + * Mutates the pairs array. + * + * @param {Array} pairs + * @param {String} key + * @param {Mixed} val + */ + +function pushEncodedKeyValuePair(pairs, key, val) { + if (val != null) { + if (Array.isArray(val)) { + val.forEach(function(v) { + pushEncodedKeyValuePair(pairs, key, v); + }); + } else if (isObject(val)) { + for(var subkey in val) { + pushEncodedKeyValuePair(pairs, key + '[' + subkey + ']', val[subkey]); + } + } else { + pairs.push(encodeURIComponent(key) + + '=' + encodeURIComponent(val)); + } + } else if (val === null) { + pairs.push(encodeURIComponent(key)); + } +} + +/** + * Expose serialization method. + */ + + request.serializeObject = serialize; + + /** + * Parse the given x-www-form-urlencoded `str`. + * + * @param {String} str + * @return {Object} + * @api private + */ + +function parseString(str) { + var obj = {}; + var pairs = str.split('&'); + var pair; + var pos; + + for (var i = 0, len = pairs.length; i < len; ++i) { + pair = pairs[i]; + pos = pair.indexOf('='); + if (pos == -1) { + obj[decodeURIComponent(pair)] = ''; + } else { + obj[decodeURIComponent(pair.slice(0, pos))] = + decodeURIComponent(pair.slice(pos + 1)); + } + } + + return obj; +} + +/** + * Expose parser. + */ + +request.parseString = parseString; + +/** + * Default MIME type map. + * + * superagent.types.xml = 'application/xml'; + * + */ + +request.types = { + html: 'text/html', + json: 'application/json', + xml: 'application/xml', + urlencoded: 'application/x-www-form-urlencoded', + 'form': 'application/x-www-form-urlencoded', + 'form-data': 'application/x-www-form-urlencoded' +}; + +/** + * Default serialization map. + * + * superagent.serialize['application/xml'] = function(obj){ + * return 'generated xml here'; + * }; + * + */ + + request.serialize = { + 'application/x-www-form-urlencoded': serialize, + 'application/json': JSON.stringify + }; + + /** + * Default parsers. + * + * superagent.parse['application/xml'] = function(str){ + * return { object parsed from str }; + * }; + * + */ + +request.parse = { + 'application/x-www-form-urlencoded': parseString, + 'application/json': JSON.parse +}; + +/** + * Parse the given header `str` into + * an object containing the mapped fields. + * + * @param {String} str + * @return {Object} + * @api private + */ + +function parseHeader(str) { + var lines = str.split(/\r?\n/); + var fields = {}; + var index; + var line; + var field; + var val; + + lines.pop(); // trailing CRLF + + for (var i = 0, len = lines.length; i < len; ++i) { + line = lines[i]; + index = line.indexOf(':'); + field = line.slice(0, index).toLowerCase(); + val = trim(line.slice(index + 1)); + fields[field] = val; + } + + return fields; +} + +/** + * Check if `mime` is json or has +json structured syntax suffix. + * + * @param {String} mime + * @return {Boolean} + * @api private + */ + +function isJSON(mime) { + return /[\/+]json\b/.test(mime); +} + +/** + * Initialize a new `Response` with the given `xhr`. + * + * - set flags (.ok, .error, etc) + * - parse header + * + * Examples: + * + * Aliasing `superagent` as `request` is nice: + * + * request = superagent; + * + * We can use the promise-like API, or pass callbacks: + * + * request.get('/').end(function(res){}); + * request.get('/', function(res){}); + * + * Sending data can be chained: + * + * request + * .post('/user') + * .send({ name: 'tj' }) + * .end(function(res){}); + * + * Or passed to `.send()`: + * + * request + * .post('/user') + * .send({ name: 'tj' }, function(res){}); + * + * Or passed to `.post()`: + * + * request + * .post('/user', { name: 'tj' }) + * .end(function(res){}); + * + * Or further reduced to a single call for simple cases: + * + * request + * .post('/user', { name: 'tj' }, function(res){}); + * + * @param {XMLHTTPRequest} xhr + * @param {Object} options + * @api private + */ + +function Response(req) { + this.req = req; + this.xhr = this.req.xhr; + // responseText is accessible only if responseType is '' or 'text' and on older browsers + this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined') + ? this.xhr.responseText + : null; + this.statusText = this.req.xhr.statusText; + var status = this.xhr.status; + // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request + if (status === 1223) { + status = 204; + } + this._setStatusProperties(status); + this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders()); + // getAllResponseHeaders sometimes falsely returns "" for CORS requests, but + // getResponseHeader still works. so we get content-type even if getting + // other headers fails. + this.header['content-type'] = this.xhr.getResponseHeader('content-type'); + this._setHeaderProperties(this.header); + + if (null === this.text && req._responseType) { + this.body = this.xhr.response; + } else { + this.body = this.req.method != 'HEAD' + ? this._parseBody(this.text ? this.text : this.xhr.response) + : null; + } +} + +ResponseBase(Response.prototype); + +/** + * Parse the given body `str`. + * + * Used for auto-parsing of bodies. Parsers + * are defined on the `superagent.parse` object. + * + * @param {String} str + * @return {Mixed} + * @api private + */ + +Response.prototype._parseBody = function(str){ + var parse = request.parse[this.type]; + if(this.req._parser) { + return this.req._parser(this, str); + } + if (!parse && isJSON(this.type)) { + parse = request.parse['application/json']; + } + return parse && str && (str.length || str instanceof Object) + ? parse(str) + : null; +}; + +/** + * Return an `Error` representative of this response. + * + * @return {Error} + * @api public + */ + +Response.prototype.toError = function(){ + var req = this.req; + var method = req.method; + var url = req.url; + + var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')'; + var err = new Error(msg); + err.status = this.status; + err.method = method; + err.url = url; + + return err; +}; + +/** + * Expose `Response`. + */ + +request.Response = Response; + +/** + * Initialize a new `Request` with the given `method` and `url`. + * + * @param {String} method + * @param {String} url + * @api public + */ + +function Request(method, url) { + var self = this; + this._query = this._query || []; + this.method = method; + this.url = url; + this.header = {}; // preserves header name case + this._header = {}; // coerces header names to lowercase + this.on('end', function(){ + var err = null; + var res = null; + + try { + res = new Response(self); + } catch(e) { + err = new Error('Parser is unable to parse the response'); + err.parse = true; + err.original = e; + // issue #675: return the raw response if the response parsing fails + if (self.xhr) { + // ie9 doesn't have 'response' property + err.rawResponse = typeof self.xhr.responseType == 'undefined' ? self.xhr.responseText : self.xhr.response; + // issue #876: return the http status code if the response parsing fails + err.status = self.xhr.status ? self.xhr.status : null; + err.statusCode = err.status; // backwards-compat only + } else { + err.rawResponse = null; + err.status = null; + } + + return self.callback(err); + } + + self.emit('response', res); + + var new_err; + try { + if (!self._isResponseOK(res)) { + new_err = new Error(res.statusText || 'Unsuccessful HTTP response'); + new_err.original = err; + new_err.response = res; + new_err.status = res.status; + } + } catch(e) { + new_err = e; // #985 touching res may cause INVALID_STATE_ERR on old Android + } + + // #1000 don't catch errors from the callback to avoid double calling it + if (new_err) { + self.callback(new_err, res); + } else { + self.callback(null, res); + } + }); +} + +/** + * Mixin `Emitter` and `RequestBase`. + */ + +Emitter(Request.prototype); +RequestBase(Request.prototype); + +/** + * Set Content-Type to `type`, mapping values from `request.types`. + * + * Examples: + * + * superagent.types.xml = 'application/xml'; + * + * request.post('/') + * .type('xml') + * .send(xmlstring) + * .end(callback); + * + * request.post('/') + * .type('application/xml') + * .send(xmlstring) + * .end(callback); + * + * @param {String} type + * @return {Request} for chaining + * @api public + */ + +Request.prototype.type = function(type){ + this.set('Content-Type', request.types[type] || type); + return this; +}; + +/** + * Set Accept to `type`, mapping values from `request.types`. + * + * Examples: + * + * superagent.types.json = 'application/json'; + * + * request.get('/agent') + * .accept('json') + * .end(callback); + * + * request.get('/agent') + * .accept('application/json') + * .end(callback); + * + * @param {String} accept + * @return {Request} for chaining + * @api public + */ + +Request.prototype.accept = function(type){ + this.set('Accept', request.types[type] || type); + return this; +}; + +/** + * Set Authorization field value with `user` and `pass`. + * + * @param {String} user + * @param {String} [pass] optional in case of using 'bearer' as type + * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic') + * @return {Request} for chaining + * @api public + */ + +Request.prototype.auth = function(user, pass, options){ + if (typeof pass === 'object' && pass !== null) { // pass is optional and can substitute for options + options = pass; + } + if (!options) { + options = { + type: 'function' === typeof btoa ? 'basic' : 'auto', + } + } + + switch (options.type) { + case 'basic': + this.set('Authorization', 'Basic ' + btoa(user + ':' + pass)); + break; + + case 'auto': + this.username = user; + this.password = pass; + break; + + case 'bearer': // usage would be .auth(accessToken, { type: 'bearer' }) + this.set('Authorization', 'Bearer ' + user); + break; + } + return this; +}; + +/** + * Add query-string `val`. + * + * Examples: + * + * request.get('/shoes') + * .query('size=10') + * .query({ color: 'blue' }) + * + * @param {Object|String} val + * @return {Request} for chaining + * @api public + */ + +Request.prototype.query = function(val){ + if ('string' != typeof val) val = serialize(val); + if (val) this._query.push(val); + return this; +}; + +/** + * Queue the given `file` as an attachment to the specified `field`, + * with optional `options` (or filename). + * + * ``` js + * request.post('/upload') + * .attach('content', new Blob(['<a id="a"><b id="b">hey!</b></a>'], { type: "text/html"})) + * .end(callback); + * ``` + * + * @param {String} field + * @param {Blob|File} file + * @param {String|Object} options + * @return {Request} for chaining + * @api public + */ + +Request.prototype.attach = function(field, file, options){ + if (file) { + if (this._data) { + throw Error("superagent can't mix .send() and .attach()"); + } + + this._getFormData().append(field, file, options || file.name); + } + return this; +}; + +Request.prototype._getFormData = function(){ + if (!this._formData) { + this._formData = new root.FormData(); + } + return this._formData; +}; + +/** + * Invoke the callback with `err` and `res` + * and handle arity check. + * + * @param {Error} err + * @param {Response} res + * @api private + */ + +Request.prototype.callback = function(err, res){ + // console.log(this._retries, this._maxRetries) + if (this._maxRetries && this._retries++ < this._maxRetries && shouldRetry(err, res)) { + return this._retry(); + } + + var fn = this._callback; + this.clearTimeout(); + + if (err) { + if (this._maxRetries) err.retries = this._retries - 1; + this.emit('error', err); + } + + fn(err, res); +}; + +/** + * Invoke callback with x-domain error. + * + * @api private + */ + +Request.prototype.crossDomainError = function(){ + var err = new Error('Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.'); + err.crossDomain = true; + + err.status = this.status; + err.method = this.method; + err.url = this.url; + + this.callback(err); +}; + +// This only warns, because the request is still likely to work +Request.prototype.buffer = Request.prototype.ca = Request.prototype.agent = function(){ + console.warn("This is not supported in browser version of superagent"); + return this; +}; + +// This throws, because it can't send/receive data as expected +Request.prototype.pipe = Request.prototype.write = function(){ + throw Error("Streaming is not supported in browser version of superagent"); +}; + +/** + * Compose querystring to append to req.url + * + * @api private + */ + +Request.prototype._appendQueryString = function(){ + var query = this._query.join('&'); + if (query) { + this.url += (this.url.indexOf('?') >= 0 ? '&' : '?') + query; + } + + if (this._sort) { + var index = this.url.indexOf('?'); + if (index >= 0) { + var queryArr = this.url.substring(index + 1).split('&'); + if (isFunction(this._sort)) { + queryArr.sort(this._sort); + } else { + queryArr.sort(); + } + this.url = this.url.substring(0, index) + '?' + queryArr.join('&'); + } + } +}; + +/** + * Check if `obj` is a host object, + * we don't want to serialize these :) + * + * @param {Object} obj + * @return {Boolean} + * @api private + */ +Request.prototype._isHost = function _isHost(obj) { + // Native objects stringify to [object File], [object Blob], [object FormData], etc. + return obj && 'object' === typeof obj && !Array.isArray(obj) && Object.prototype.toString.call(obj) !== '[object Object]'; +} + +/** + * Initiate request, invoking callback `fn(res)` + * with an instanceof `Response`. + * + * @param {Function} fn + * @return {Request} for chaining + * @api public + */ + +Request.prototype.end = function(fn){ + if (this._endCalled) { + console.warn("Warning: .end() was called twice. This is not supported in superagent"); + } + this._endCalled = true; + + // store callback + this._callback = fn || noop; + + // querystring + this._appendQueryString(); + + return this._end(); +}; + +Request.prototype._end = function() { + var self = this; + var xhr = this.xhr = request.getXHR(); + var data = this._formData || this._data; + + this._setTimeouts(); + + // state change + xhr.onreadystatechange = function(){ + var readyState = xhr.readyState; + if (readyState >= 2 && self._responseTimeoutTimer) { + clearTimeout(self._responseTimeoutTimer); + } + if (4 != readyState) { + return; + } + + // In IE9, reads to any property (e.g. status) off of an aborted XHR will + // result in the error "Could not complete the operation due to error c00c023f" + var status; + try { status = xhr.status } catch(e) { status = 0; } + + if (!status) { + if (self.timedout || self._aborted) return; + return self.crossDomainError(); + } + self.emit('end'); + }; + + // progress + var handleProgress = function(direction, e) { + if (e.total > 0) { + e.percent = e.loaded / e.total * 100; + } + e.direction = direction; + self.emit('progress', e); + } + if (this.hasListeners('progress')) { + try { + xhr.onprogress = handleProgress.bind(null, 'download'); + if (xhr.upload) { + xhr.upload.onprogress = handleProgress.bind(null, 'upload'); + } + } catch(e) { + // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist. + // Reported here: + // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context + } + } + + // initiate request + try { + if (this.username && this.password) { + xhr.open(this.method, this.url, true, this.username, this.password); + } else { + xhr.open(this.method, this.url, true); + } + } catch (err) { + // see #1149 + return this.callback(err); + } + + // CORS + if (this._withCredentials) xhr.withCredentials = true; + + // body + if (!this._formData && 'GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !this._isHost(data)) { + // serialize stuff + var contentType = this._header['content-type']; + var serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : '']; + if (!serialize && isJSON(contentType)) { + serialize = request.serialize['application/json']; + } + if (serialize) data = serialize(data); + } + + // set header fields + for (var field in this.header) { + if (null == this.header[field]) continue; + xhr.setRequestHeader(field, this.header[field]); + } + + if (this._responseType) { + xhr.responseType = this._responseType; + } + + // send stuff + this.emit('request', this); + + // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing) + // We need null here if data is undefined + xhr.send(typeof data !== 'undefined' ? data : null); + return this; +}; + +/** + * GET `url` with optional callback `fn(res)`. + * + * @param {String} url + * @param {Mixed|Function} [data] or fn + * @param {Function} [fn] + * @return {Request} + * @api public + */ + +request.get = function(url, data, fn){ + var req = request('GET', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.query(data); + if (fn) req.end(fn); + return req; +}; + +/** + * HEAD `url` with optional callback `fn(res)`. + * + * @param {String} url + * @param {Mixed|Function} [data] or fn + * @param {Function} [fn] + * @return {Request} + * @api public + */ + +request.head = function(url, data, fn){ + var req = request('HEAD', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; +}; + +/** + * OPTIONS query to `url` with optional callback `fn(res)`. + * + * @param {String} url + * @param {Mixed|Function} [data] or fn + * @param {Function} [fn] + * @return {Request} + * @api public + */ + +request.options = function(url, data, fn){ + var req = request('OPTIONS', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; +}; + +/** + * DELETE `url` with optional `data` and callback `fn(res)`. + * + * @param {String} url + * @param {Mixed} [data] + * @param {Function} [fn] + * @return {Request} + * @api public + */ + +function del(url, data, fn){ + var req = request('DELETE', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; +}; + +request['del'] = del; +request['delete'] = del; + +/** + * PATCH `url` with optional `data` and callback `fn(res)`. + * + * @param {String} url + * @param {Mixed} [data] + * @param {Function} [fn] + * @return {Request} + * @api public + */ + +request.patch = function(url, data, fn){ + var req = request('PATCH', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; +}; + +/** + * POST `url` with optional `data` and callback `fn(res)`. + * + * @param {String} url + * @param {Mixed} [data] + * @param {Function} [fn] + * @return {Request} + * @api public + */ + +request.post = function(url, data, fn){ + var req = request('POST', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; +}; + +/** + * PUT `url` with optional `data` and callback `fn(res)`. + * + * @param {String} url + * @param {Mixed|Function} [data] or fn + * @param {Function} [fn] + * @return {Request} + * @api public + */ + +request.put = function(url, data, fn){ + var req = request('PUT', url); + if ('function' == typeof data) fn = data, data = null; + if (data) req.send(data); + if (fn) req.end(fn); + return req; +}; + + +/***/ }), +/* 225 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Check if `fn` is a function. + * + * @param {Function} fn + * @return {Boolean} + * @api private + */ +var isObject = __webpack_require__(58); + +function isFunction(fn) { + var tag = isObject(fn) ? Object.prototype.toString.call(fn) : ''; + return tag === '[object Function]'; +} + +module.exports = isFunction; + + +/***/ }), +/* 226 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Module of mixed-in functions shared between node and client code + */ +var isObject = __webpack_require__(58); + +/** + * Expose `RequestBase`. + */ + +module.exports = RequestBase; + +/** + * Initialize a new `RequestBase`. + * + * @api public + */ + +function RequestBase(obj) { + if (obj) return mixin(obj); +} + +/** + * Mixin the prototype properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +function mixin(obj) { + for (var key in RequestBase.prototype) { + obj[key] = RequestBase.prototype[key]; + } + return obj; +} + +/** + * Clear previous timeout. + * + * @return {Request} for chaining + * @api public + */ + +RequestBase.prototype.clearTimeout = function _clearTimeout(){ + clearTimeout(this._timer); + clearTimeout(this._responseTimeoutTimer); + delete this._timer; + delete this._responseTimeoutTimer; + return this; +}; + +/** + * Override default response body parser + * + * This function will be called to convert incoming data into request.body + * + * @param {Function} + * @api public + */ + +RequestBase.prototype.parse = function parse(fn){ + this._parser = fn; + return this; +}; + +/** + * Set format of binary response body. + * In browser valid formats are 'blob' and 'arraybuffer', + * which return Blob and ArrayBuffer, respectively. + * + * In Node all values result in Buffer. + * + * Examples: + * + * req.get('/') + * .responseType('blob') + * .end(callback); + * + * @param {String} val + * @return {Request} for chaining + * @api public + */ + +RequestBase.prototype.responseType = function(val){ + this._responseType = val; + return this; +}; + +/** + * Override default request body serializer + * + * This function will be called to convert data set via .send or .attach into payload to send + * + * @param {Function} + * @api public + */ + +RequestBase.prototype.serialize = function serialize(fn){ + this._serializer = fn; + return this; +}; + +/** + * Set timeouts. + * + * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time. + * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections. + * + * Value of 0 or false means no timeout. + * + * @param {Number|Object} ms or {response, read, deadline} + * @return {Request} for chaining + * @api public + */ + +RequestBase.prototype.timeout = function timeout(options){ + if (!options || 'object' !== typeof options) { + this._timeout = options; + this._responseTimeout = 0; + return this; + } + + for(var option in options) { + switch(option) { + case 'deadline': + this._timeout = options.deadline; + break; + case 'response': + this._responseTimeout = options.response; + break; + default: + console.warn("Unknown timeout option", option); + } + } + return this; +}; + +/** + * Set number of retry attempts on error. + * + * Failed requests will be retried 'count' times if timeout or err.code >= 500. + * + * @param {Number} count + * @return {Request} for chaining + * @api public + */ + +RequestBase.prototype.retry = function retry(count){ + // Default to 1 if no count passed or true + if (arguments.length === 0 || count === true) count = 1; + if (count <= 0) count = 0; + this._maxRetries = count; + this._retries = 0; + return this; +}; + +/** + * Retry request + * + * @return {Request} for chaining + * @api private + */ + +RequestBase.prototype._retry = function() { + this.clearTimeout(); + + // node + if (this.req) { + this.req = null; + this.req = this.request(); + } + + this._aborted = false; + this.timedout = false; + + return this._end(); +}; + +/** + * Promise support + * + * @param {Function} resolve + * @param {Function} [reject] + * @return {Request} + */ + +RequestBase.prototype.then = function then(resolve, reject) { + if (!this._fullfilledPromise) { + var self = this; + if (this._endCalled) { + console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"); + } + this._fullfilledPromise = new Promise(function(innerResolve, innerReject){ + self.end(function(err, res){ + if (err) innerReject(err); else innerResolve(res); + }); + }); + } + return this._fullfilledPromise.then(resolve, reject); +} + +RequestBase.prototype.catch = function(cb) { + return this.then(undefined, cb); +}; + +/** + * Allow for extension + */ + +RequestBase.prototype.use = function use(fn) { + fn(this); + return this; +} + +RequestBase.prototype.ok = function(cb) { + if ('function' !== typeof cb) throw Error("Callback required"); + this._okCallback = cb; + return this; +}; + +RequestBase.prototype._isResponseOK = function(res) { + if (!res) { + return false; + } + + if (this._okCallback) { + return this._okCallback(res); + } + + return res.status >= 200 && res.status < 300; +}; + + +/** + * Get request header `field`. + * Case-insensitive. + * + * @param {String} field + * @return {String} + * @api public + */ + +RequestBase.prototype.get = function(field){ + return this._header[field.toLowerCase()]; +}; + +/** + * Get case-insensitive header `field` value. + * This is a deprecated internal API. Use `.get(field)` instead. + * + * (getHeader is no longer used internally by the superagent code base) + * + * @param {String} field + * @return {String} + * @api private + * @deprecated + */ + +RequestBase.prototype.getHeader = RequestBase.prototype.get; + +/** + * Set header `field` to `val`, or multiple fields with one object. + * Case-insensitive. + * + * Examples: + * + * req.get('/') + * .set('Accept', 'application/json') + * .set('X-API-Key', 'foobar') + * .end(callback); + * + * req.get('/') + * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' }) + * .end(callback); + * + * @param {String|Object} field + * @param {String} val + * @return {Request} for chaining + * @api public + */ + +RequestBase.prototype.set = function(field, val){ + if (isObject(field)) { + for (var key in field) { + this.set(key, field[key]); + } + return this; + } + this._header[field.toLowerCase()] = val; + this.header[field] = val; + return this; +}; + +/** + * Remove header `field`. + * Case-insensitive. + * + * Example: + * + * req.get('/') + * .unset('User-Agent') + * .end(callback); + * + * @param {String} field + */ +RequestBase.prototype.unset = function(field){ + delete this._header[field.toLowerCase()]; + delete this.header[field]; + return this; +}; + +/** + * Write the field `name` and `val`, or multiple fields with one object + * for "multipart/form-data" request bodies. + * + * ``` js + * request.post('/upload') + * .field('foo', 'bar') + * .end(callback); + * + * request.post('/upload') + * .field({ foo: 'bar', baz: 'qux' }) + * .end(callback); + * ``` + * + * @param {String|Object} name + * @param {String|Blob|File|Buffer|fs.ReadStream} val + * @return {Request} for chaining + * @api public + */ +RequestBase.prototype.field = function(name, val) { + + // name should be either a string or an object. + if (null === name || undefined === name) { + throw new Error('.field(name, val) name can not be empty'); + } + + if (this._data) { + console.error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()"); + } + + if (isObject(name)) { + for (var key in name) { + this.field(key, name[key]); + } + return this; + } + + if (Array.isArray(val)) { + for (var i in val) { + this.field(name, val[i]); + } + return this; + } + + // val should be defined now + if (null === val || undefined === val) { + throw new Error('.field(name, val) val can not be empty'); + } + if ('boolean' === typeof val) { + val = '' + val; + } + this._getFormData().append(name, val); + return this; +}; + +/** + * Abort the request, and clear potential timeout. + * + * @return {Request} + * @api public + */ +RequestBase.prototype.abort = function(){ + if (this._aborted) { + return this; + } + this._aborted = true; + this.xhr && this.xhr.abort(); // browser + this.req && this.req.abort(); // node + this.clearTimeout(); + this.emit('abort'); + return this; +}; + +/** + * Enable transmission of cookies with x-domain requests. + * + * Note that for this to work the origin must not be + * using "Access-Control-Allow-Origin" with a wildcard, + * and also must set "Access-Control-Allow-Credentials" + * to "true". + * + * @api public + */ + +RequestBase.prototype.withCredentials = function(on){ + // This is browser-only functionality. Node side is no-op. + if(on==undefined) on = true; + this._withCredentials = on; + return this; +}; + +/** + * Set the max redirects to `n`. Does noting in browser XHR implementation. + * + * @param {Number} n + * @return {Request} for chaining + * @api public + */ + +RequestBase.prototype.redirects = function(n){ + this._maxRedirects = n; + return this; +}; + +/** + * Convert to a plain javascript object (not JSON string) of scalar properties. + * Note as this method is designed to return a useful non-this value, + * it cannot be chained. + * + * @return {Object} describing method, url, and data of this request + * @api public + */ + +RequestBase.prototype.toJSON = function(){ + return { + method: this.method, + url: this.url, + data: this._data, + headers: this._header + }; +}; + + +/** + * Send `data` as the request body, defaulting the `.type()` to "json" when + * an object is given. + * + * Examples: + * + * // manual json + * request.post('/user') + * .type('json') + * .send('{"name":"tj"}') + * .end(callback) + * + * // auto json + * request.post('/user') + * .send({ name: 'tj' }) + * .end(callback) + * + * // manual x-www-form-urlencoded + * request.post('/user') + * .type('form') + * .send('name=tj') + * .end(callback) + * + * // auto x-www-form-urlencoded + * request.post('/user') + * .type('form') + * .send({ name: 'tj' }) + * .end(callback) + * + * // defaults to x-www-form-urlencoded + * request.post('/user') + * .send('name=tobi') + * .send('species=ferret') + * .end(callback) + * + * @param {String|Object} data + * @return {Request} for chaining + * @api public + */ + +RequestBase.prototype.send = function(data){ + var isObj = isObject(data); + var type = this._header['content-type']; + + if (this._formData) { + console.error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()"); + } + + if (isObj && !this._data) { + if (Array.isArray(data)) { + this._data = []; + } else if (!this._isHost(data)) { + this._data = {}; + } + } else if (data && this._data && this._isHost(this._data)) { + throw Error("Can't merge these send calls"); + } + + // merge + if (isObj && isObject(this._data)) { + for (var key in data) { + this._data[key] = data[key]; + } + } else if ('string' == typeof data) { + // default to x-www-form-urlencoded + if (!type) this.type('form'); + type = this._header['content-type']; + if ('application/x-www-form-urlencoded' == type) { + this._data = this._data + ? this._data + '&' + data + : data; + } else { + this._data = (this._data || '') + data; + } + } else { + this._data = data; + } + + if (!isObj || this._isHost(data)) { + return this; + } + + // default to json + if (!type) this.type('json'); + return this; +}; + + +/** + * Sort `querystring` by the sort function + * + * + * Examples: + * + * // default order + * request.get('/user') + * .query('name=Nick') + * .query('search=Manny') + * .sortQuery() + * .end(callback) + * + * // customized sort function + * request.get('/user') + * .query('name=Nick') + * .query('search=Manny') + * .sortQuery(function(a, b){ + * return a.length - b.length; + * }) + * .end(callback) + * + * + * @param {Function} sort + * @return {Request} for chaining + * @api public + */ + +RequestBase.prototype.sortQuery = function(sort) { + // _sort default to true but otherwise can be a function or boolean + this._sort = typeof sort === 'undefined' ? true : sort; + return this; +}; + +/** + * Invoke callback with timeout error. + * + * @api private + */ + +RequestBase.prototype._timeoutError = function(reason, timeout, errno){ + if (this._aborted) { + return; + } + var err = new Error(reason + timeout + 'ms exceeded'); + err.timeout = timeout; + err.code = 'ECONNABORTED'; + err.errno = errno; + this.timedout = true; + this.abort(); + this.callback(err); +}; + +RequestBase.prototype._setTimeouts = function() { + var self = this; + + // deadline + if (this._timeout && !this._timer) { + this._timer = setTimeout(function(){ + self._timeoutError('Timeout of ', self._timeout, 'ETIME'); + }, this._timeout); + } + // response timeout + if (this._responseTimeout && !this._responseTimeoutTimer) { + this._responseTimeoutTimer = setTimeout(function(){ + self._timeoutError('Response timeout of ', self._responseTimeout, 'ETIMEDOUT'); + }, this._responseTimeout); + } +} + + +/***/ }), +/* 227 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * Module dependencies. + */ + +var utils = __webpack_require__(229); + +/** + * Expose `ResponseBase`. + */ + +module.exports = ResponseBase; + +/** + * Initialize a new `ResponseBase`. + * + * @api public + */ + +function ResponseBase(obj) { + if (obj) return mixin(obj); +} + +/** + * Mixin the prototype properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +function mixin(obj) { + for (var key in ResponseBase.prototype) { + obj[key] = ResponseBase.prototype[key]; + } + return obj; +} + +/** + * Get case-insensitive `field` value. + * + * @param {String} field + * @return {String} + * @api public + */ + +ResponseBase.prototype.get = function(field){ + return this.header[field.toLowerCase()]; +}; + +/** + * Set header related properties: + * + * - `.type` the content type without params + * + * A response of "Content-Type: text/plain; charset=utf-8" + * will provide you with a `.type` of "text/plain". + * + * @param {Object} header + * @api private + */ + +ResponseBase.prototype._setHeaderProperties = function(header){ + // TODO: moar! + // TODO: make this a util + + // content-type + var ct = header['content-type'] || ''; + this.type = utils.type(ct); + + // params + var params = utils.params(ct); + for (var key in params) this[key] = params[key]; + + this.links = {}; + + // links + try { + if (header.link) { + this.links = utils.parseLinks(header.link); + } + } catch (err) { + // ignore + } +}; + +/** + * Set flags such as `.ok` based on `status`. + * + * For example a 2xx response will give you a `.ok` of __true__ + * whereas 5xx will be __false__ and `.error` will be __true__. The + * `.clientError` and `.serverError` are also available to be more + * specific, and `.statusType` is the class of error ranging from 1..5 + * sometimes useful for mapping respond colors etc. + * + * "sugar" properties are also defined for common cases. Currently providing: + * + * - .noContent + * - .badRequest + * - .unauthorized + * - .notAcceptable + * - .notFound + * + * @param {Number} status + * @api private + */ + +ResponseBase.prototype._setStatusProperties = function(status){ + var type = status / 100 | 0; + + // status / class + this.status = this.statusCode = status; + this.statusType = type; + + // basics + this.info = 1 == type; + this.ok = 2 == type; + this.redirect = 3 == type; + this.clientError = 4 == type; + this.serverError = 5 == type; + this.error = (4 == type || 5 == type) + ? this.toError() + : false; + + // sugar + this.accepted = 202 == status; + this.noContent = 204 == status; + this.badRequest = 400 == status; + this.unauthorized = 401 == status; + this.notAcceptable = 406 == status; + this.forbidden = 403 == status; + this.notFound = 404 == status; +}; + + +/***/ }), +/* 228 */ +/***/ (function(module, exports) { + +var ERROR_CODES = [ + 'ECONNRESET', + 'ETIMEDOUT', + 'EADDRINFO', + 'ESOCKETTIMEDOUT' +]; + +/** + * Determine if a request should be retried. + * (Borrowed from segmentio/superagent-retry) + * + * @param {Error} err + * @param {Response} [res] + * @returns {Boolean} + */ +module.exports = function shouldRetry(err, res) { + if (err && err.code && ~ERROR_CODES.indexOf(err.code)) return true; + if (res && res.status && res.status >= 500) return true; + // Superagent timeout + if (err && 'timeout' in err && err.code == 'ECONNABORTED') return true; + return false; +}; + +/***/ }), +/* 229 */ +/***/ (function(module, exports) { + + +/** + * Return the mime type for the given `str`. + * + * @param {String} str + * @return {String} + * @api private + */ + +exports.type = function(str){ + return str.split(/ *; */).shift(); +}; + +/** + * Return header field parameters. + * + * @param {String} str + * @return {Object} + * @api private + */ + +exports.params = function(str){ + return str.split(/ *; */).reduce(function(obj, str){ + var parts = str.split(/ *= */); + var key = parts.shift(); + var val = parts.shift(); + + if (key && val) obj[key] = val; + return obj; + }, {}); +}; + +/** + * Parse Link header fields. + * + * @param {String} str + * @return {Object} + * @api private + */ + +exports.parseLinks = function(str){ + return str.split(/ *, */).reduce(function(obj, str){ + var parts = str.split(/ *; */); + var url = parts[0].slice(1, -1); + var rel = parts[1].split(/ *= */)[1].slice(1, -1); + obj[rel] = url; + return obj; + }, {}); +}; + +/** + * Strip content related fields from `header`. + * + * @param {Object} header + * @return {Object} header + * @api private + */ + +exports.cleanHeader = function(header, shouldStripCookie){ + delete header['content-type']; + delete header['content-length']; + delete header['transfer-encoding']; + delete header['host']; + if (shouldStripCookie) { + delete header['cookie']; + } + return header; +}; + +/***/ }), +/* 230 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var _react = __webpack_require__(52); +var _react = __webpack_require__(27); var _react2 = _interopRequireDefault(_react); -var _reactDom = __webpack_require__(81); +var _reactDom = __webpack_require__(93); var _reactDom2 = _interopRequireDefault(_reactDom); -var _App = __webpack_require__(80); +var _App = __webpack_require__(92); var _App2 = _interopRequireDefault(_App); @@ -21753,5 +29502,112 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de _reactDom2.default.render(_react2.default.createElement(_App2.default, null), document.getElementById('container')); +/***/ }), +/* 231 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(113); + + +/***/ }), +/* 232 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = __webpack_require__(27); + +var _react2 = _interopRequireDefault(_react); + +var _ModalDialog = __webpack_require__(95); + +var _ModalDialog2 = _interopRequireDefault(_ModalDialog); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var LoggedOutView = function (_React$Component) { + _inherits(LoggedOutView, _React$Component); + + function LoggedOutView() { + _classCallCheck(this, LoggedOutView); + + var _this = _possibleConstructorReturn(this, (LoggedOutView.__proto__ || Object.getPrototypeOf(LoggedOutView)).call(this)); + + _this.state = { modal: null }; + // this.showLogin = this.showLogin.bind(this) + // this.showSignup = this.showSignup.bind(this) + // this.closeModal = this.closeModal.bind(this) + return _this; + } + // showLogin() { + // this.setState({ modal: 'login' }) + // } + // showSignup() { + // this.setState({ modal: 'signup' }) + // } + // closeModal() { + // this.setState({ modal: '' }) + // } + + + _createClass(LoggedOutView, [{ + key: 'render', + value: function render() { + // const loginVisible = this.state.modal == 'login' + // const signupVisible = this.state.modal == 'signup' + return _react2.default.createElement( + 'div', + null, + 'LOGGED IN' + ) + // <Welcome + // onLoginClick={this.showLogin} + // onSignupClick={this.showSignup} /> + // <LoginForm + // client={this.props.client} + // visible={loginVisible} + // onClose={this.closeModal} /> + // <SignupForm + // client={this.props.client} + // visible={signupVisible} + // onClose={this.closeModal} /> + ; + } + }]); + + return LoggedOutView; +}(_react2.default.Component); + +// export default class UserForm extends React.Component { +// render() { +// return ( +// ) +// } +// } +// +// export default class MealForm extends React.Component { +// render() { +// return ( +// ) +// } +// } + + +exports.default = LoggedOutView; + /***/ }) -/******/ ]);
\ No newline at end of file +/******/ ]); +//# sourceMappingURL=bundle.js.map
\ No newline at end of file |
