inject-js
Version:
lightweight, small, high level dependency injector with object lifetime management
1,814 lines (1,440 loc) • 174 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(typeof self !== 'undefined' ? self : this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 33);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _curry1 = /*#__PURE__*/__webpack_require__(1);
var _isPlaceholder = /*#__PURE__*/__webpack_require__(9);
/**
* Optimized internal two-arity curry function.
*
* @private
* @category Function
* @param {Function} fn The function to curry.
* @return {Function} The curried function.
*/
function _curry2(fn) {
return function f2(a, b) {
switch (arguments.length) {
case 0:
return f2;
case 1:
return _isPlaceholder(a) ? f2 : _curry1(function (_b) {
return fn(a, _b);
});
default:
return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {
return fn(_a, b);
}) : _isPlaceholder(b) ? _curry1(function (_b) {
return fn(a, _b);
}) : fn(a, b);
}
};
}
module.exports = _curry2;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _isPlaceholder = /*#__PURE__*/__webpack_require__(9);
/**
* Optimized internal one-arity curry function.
*
* @private
* @category Function
* @param {Function} fn The function to curry.
* @return {Function} The curried function.
*/
function _curry1(fn) {
return function f1(a) {
if (arguments.length === 0 || _isPlaceholder(a)) {
return f1;
} else {
return fn.apply(this, arguments);
}
};
}
module.exports = _curry1;
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _provideTransient = __webpack_require__(82);
Object.defineProperty(exports, 'provideTransient', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_provideTransient).default;
}
});
var _provideCached = __webpack_require__(85);
Object.defineProperty(exports, 'provideCached', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_provideCached).default;
}
});
var _provideRoot = __webpack_require__(86);
Object.defineProperty(exports, 'provideRoot', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_provideRoot).default;
}
});
var _provideParent = __webpack_require__(87);
Object.defineProperty(exports, 'provideParent', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_provideParent).default;
}
});
var _provideProvider = __webpack_require__(88);
Object.defineProperty(exports, 'provideProvider', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_provideProvider).default;
}
});
var _provideState = __webpack_require__(89);
Object.defineProperty(exports, 'provideState', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_provideState).default;
}
});
var _buildProvider = __webpack_require__(90);
Object.defineProperty(exports, 'buildProvider', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_buildProvider).default;
}
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _assertLifetime = __webpack_require__(34);
Object.defineProperty(exports, 'assertLifetime', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_assertLifetime).default;
}
});
var _registerType = __webpack_require__(35);
Object.defineProperty(exports, 'registerType', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_registerType).default;
}
});
var _registerFake = __webpack_require__(36);
Object.defineProperty(exports, 'registerFake', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_registerFake).default;
}
});
var _registerInstantiable = __webpack_require__(37);
Object.defineProperty(exports, 'registerInstantiable', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_registerInstantiable).default;
}
});
var _register = __webpack_require__(38);
Object.defineProperty(exports, 'register', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_register).default;
}
});
var _registerProvider = __webpack_require__(44);
Object.defineProperty(exports, 'registerProvider', {
enumerable: true,
get: function get() {
return _registerProvider.registerProvider;
}
});
Object.defineProperty(exports, 'registerMain', {
enumerable: true,
get: function get() {
return _registerProvider.registerMain;
}
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _buildAnonymousDescriptor = __webpack_require__(45);
Object.defineProperty(exports, 'buildAnonymousDescriptor', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_buildAnonymousDescriptor).default;
}
});
var _assertCircularReferences = __webpack_require__(49);
Object.defineProperty(exports, 'assertCircularReferences', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_assertCircularReferences).default;
}
});
var _buildGraph = __webpack_require__(50);
Object.defineProperty(exports, 'buildGraph', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_buildGraph).default;
}
});
var _getDescriptor = __webpack_require__(135);
Object.defineProperty(exports, 'getDescriptor', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_getDescriptor).default;
}
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getDependencyNames = __webpack_require__(18);
Object.defineProperty(exports, 'getDependencyNames', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_getDependencyNames).default;
}
});
var _clearState = __webpack_require__(46);
Object.defineProperty(exports, 'clearState', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_clearState).default;
}
});
var _uuid = __webpack_require__(8);
Object.defineProperty(exports, 'uuid', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_uuid).default;
}
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _curry1 = /*#__PURE__*/__webpack_require__(1);
var _has = /*#__PURE__*/__webpack_require__(11);
var _isArguments = /*#__PURE__*/__webpack_require__(48);
// cover IE < 9 keys issues
var hasEnumBug = ! /*#__PURE__*/{ toString: null }.propertyIsEnumerable('toString');
var nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
// Safari bug
var hasArgsEnumBug = /*#__PURE__*/function () {
'use strict';
return arguments.propertyIsEnumerable('length');
}();
var contains = function contains(list, item) {
var idx = 0;
while (idx < list.length) {
if (list[idx] === item) {
return true;
}
idx += 1;
}
return false;
};
/**
* Returns a list containing the names of all the enumerable own properties of
* the supplied object.
* Note that the order of the output array is not guaranteed to be consistent
* across different JS platforms.
*
* @func
* @memberOf R
* @since v0.1.0
* @category Object
* @sig {k: v} -> [k]
* @param {Object} obj The object to extract properties from
* @return {Array} An array of the object's own properties.
* @see R.keysIn, R.values
* @example
*
* R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']
*/
var _keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? function keys(obj) {
return Object(obj) !== obj ? [] : Object.keys(obj);
} : function keys(obj) {
if (Object(obj) !== obj) {
return [];
}
var prop, nIdx;
var ks = [];
var checkArgsLength = hasArgsEnumBug && _isArguments(obj);
for (prop in obj) {
if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {
ks[ks.length] = prop;
}
}
if (hasEnumBug) {
nIdx = nonEnumerableProps.length - 1;
while (nIdx >= 0) {
prop = nonEnumerableProps[nIdx];
if (_has(prop, obj) && !contains(ks, prop)) {
ks[ks.length] = prop;
}
nIdx -= 1;
}
}
return ks;
};
var keys = /*#__PURE__*/_curry1(_keys);
module.exports = keys;
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _curry1 = /*#__PURE__*/__webpack_require__(1);
var _curry2 = /*#__PURE__*/__webpack_require__(0);
var _isPlaceholder = /*#__PURE__*/__webpack_require__(9);
/**
* Optimized internal three-arity curry function.
*
* @private
* @category Function
* @param {Function} fn The function to curry.
* @return {Function} The curried function.
*/
function _curry3(fn) {
return function f3(a, b, c) {
switch (arguments.length) {
case 0:
return f3;
case 1:
return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {
return fn(a, _b, _c);
});
case 2:
return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {
return fn(_a, b, _c);
}) : _isPlaceholder(b) ? _curry2(function (_b, _c) {
return fn(a, _b, _c);
}) : _curry1(function (_c) {
return fn(a, b, _c);
});
default:
return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {
return fn(_a, _b, c);
}) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {
return fn(_a, b, _c);
}) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {
return fn(a, _b, _c);
}) : _isPlaceholder(a) ? _curry1(function (_a) {
return fn(_a, b, c);
}) : _isPlaceholder(b) ? _curry1(function (_b) {
return fn(a, _b, c);
}) : _isPlaceholder(c) ? _curry1(function (_c) {
return fn(a, b, _c);
}) : fn(a, b, c);
}
};
}
module.exports = _curry3;
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var i = 0;
exports.default = {
getNext: function getNext() {
return ++i;
},
reset: function reset() {
i = 0;
}
};
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
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; };
function _isPlaceholder(a) {
return a != null && (typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object' && a['@@functional/placeholder'] === true;
}
module.exports = _isPlaceholder;
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function _arity(n, fn) {
/* eslint-disable no-unused-vars */
switch (n) {
case 0:
return function () {
return fn.apply(this, arguments);
};
case 1:
return function (a0) {
return fn.apply(this, arguments);
};
case 2:
return function (a0, a1) {
return fn.apply(this, arguments);
};
case 3:
return function (a0, a1, a2) {
return fn.apply(this, arguments);
};
case 4:
return function (a0, a1, a2, a3) {
return fn.apply(this, arguments);
};
case 5:
return function (a0, a1, a2, a3, a4) {
return fn.apply(this, arguments);
};
case 6:
return function (a0, a1, a2, a3, a4, a5) {
return fn.apply(this, arguments);
};
case 7:
return function (a0, a1, a2, a3, a4, a5, a6) {
return fn.apply(this, arguments);
};
case 8:
return function (a0, a1, a2, a3, a4, a5, a6, a7) {
return fn.apply(this, arguments);
};
case 9:
return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {
return fn.apply(this, arguments);
};
case 10:
return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
return fn.apply(this, arguments);
};
default:
throw new Error('First argument to _arity must be a non-negative integer no greater than ten');
}
}
module.exports = _arity;
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function _has(prop, obj) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
module.exports = _has;
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/**
* Checks if `value` is classified as an `Array` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
* @example
*
* _.isArray([1, 2, 3]);
* // => true
*
* _.isArray(document.body.children);
* // => false
*
* _.isArray('abc');
* // => false
*
* _.isArray(_.noop);
* // => false
*/
var isArray = Array.isArray;
module.exports = isArray;
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _Symbol = __webpack_require__(20),
getRawTag = __webpack_require__(64),
objectToString = __webpack_require__(65);
/** `Object#toString` result references. */
var nullTag = '[object Null]',
undefinedTag = '[object Undefined]';
/** Built-in value references. */
var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
/**
* The base implementation of `getTag` without fallbacks for buggy environments.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
*/
function baseGetTag(value) {
if (value == null) {
return value === undefined ? undefinedTag : nullTag;
}
return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
}
module.exports = baseGetTag;
/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
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; };
/**
* Checks if `value` is object-like. A value is object-like if it's not `null`
* and has a `typeof` result of "object".
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
* @example
*
* _.isObjectLike({});
* // => true
*
* _.isObjectLike([1, 2, 3]);
* // => true
*
* _.isObjectLike(_.noop);
* // => false
*
* _.isObjectLike(null);
* // => false
*/
function isObjectLike(value) {
return value != null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) == 'object';
}
module.exports = isObjectLike;
/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/**
* Tests whether or not an object is an array.
*
* @private
* @param {*} val The object to test.
* @return {Boolean} `true` if `val` is an array, `false` otherwise.
* @example
*
* _isArray([]); //=> true
* _isArray(null); //=> false
* _isArray({}); //=> false
*/
module.exports = Array.isArray || function _isArray(val) {
return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';
};
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _isArrayLike = /*#__PURE__*/__webpack_require__(95);
var _xwrap = /*#__PURE__*/__webpack_require__(96);
var bind = /*#__PURE__*/__webpack_require__(97);
function _arrayReduce(xf, acc, list) {
var idx = 0;
var len = list.length;
while (idx < len) {
acc = xf['@@transducer/step'](acc, list[idx]);
if (acc && acc['@@transducer/reduced']) {
acc = acc['@@transducer/value'];
break;
}
idx += 1;
}
return xf['@@transducer/result'](acc);
}
function _iterableReduce(xf, acc, iter) {
var step = iter.next();
while (!step.done) {
acc = xf['@@transducer/step'](acc, step.value);
if (acc && acc['@@transducer/reduced']) {
acc = acc['@@transducer/value'];
break;
}
step = iter.next();
}
return xf['@@transducer/result'](acc);
}
function _methodReduce(xf, acc, obj, methodName) {
return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));
}
var symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';
function _reduce(fn, acc, list) {
if (typeof fn === 'function') {
fn = _xwrap(fn);
}
if (_isArrayLike(list)) {
return _arrayReduce(fn, acc, list);
}
if (typeof list['fantasy-land/reduce'] === 'function') {
return _methodReduce(fn, acc, list, 'fantasy-land/reduce');
}
if (list[symIterator] != null) {
return _iterableReduce(fn, acc, list[symIterator]());
}
if (typeof list.next === 'function') {
return _iterableReduce(fn, acc, list);
}
if (typeof list.reduce === 'function') {
return _methodReduce(fn, acc, list, 'reduce');
}
throw new TypeError('reduce: list must be array or iterable');
}
module.exports = _reduce;
/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function _isString(x) {
return Object.prototype.toString.call(x) === '[object String]';
}
module.exports = _isString;
/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (type) {
var serialized_type = type.toString();
var serialized_dependencies = dependency_pattern.exec(serialized_type);
return serialized_dependencies ? serialized_dependencies[1].split(separatorPattern) : undefined;
};
var dependency_pattern = /^function *\w* *?\( *((?:\w+|(?:, *?))+) *?\)/;
var separatorPattern = /, */;
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _typeof2 = 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 _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
return typeof obj === "undefined" ? "undefined" : _typeof2(obj);
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof2(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");
}
}
var ValueConverter = function () {
function ValueConverter() {
_classCallCheck(this, ValueConverter);
}
_createClass(ValueConverter, null, [{
key: 'toString',
/**
* @param {*} value
* @returns {string}
*/
value: function toString(value) {
if (typeof value === 'string') {
return 'string["' + value + '"]';
}
if (typeof value === 'number') {
if (Number.isInteger(value)) {
return 'int[' + value + ']';
}
return 'float[' + value + ']';
}
if (typeof value === 'boolean') {
return 'boolean[' + (value ? "true" : "false") + ']';
}
if (typeof value === 'function') {
return 'function[' + value.toString() + ']';
}
if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {
if (Array.isArray(value)) {
return 'array[length: ' + value.length + ']';
}
if (value instanceof Map) {
return 'Map[size: ' + value.size + ']';
}
if (value instanceof WeakMap) {
return 'WeakMap[]';
}
if (value instanceof Set) {
return 'Set[size: ' + value.size + ']';
}
if (value instanceof WeakSet) {
return 'WeakSet[]';
}
if (value instanceof String) {
return 'String["' + value + '"]';
}
if (value instanceof Number) {
var source = value.valueOf();
if (Number.isInteger(source)) {
return 'Number:int[' + source + ']';
}
return 'Number:float[' + source + ']';
}
if (value instanceof Boolean) {
return 'Boolean[' + (value.valueOf() ? "true" : "false") + ']';
}
if (value instanceof Date) {
return 'Date["' + value.toUTCString() + '"]';
}
if (value instanceof RegExp) {
return 'RegExp[' + value.toString() + ']';
}
return 'object[' + JSON.stringify(value) + ']';
}
if (typeof value === 'undefined') {
return 'undefined';
}
throw 'Unhandled type ' + (typeof value === 'undefined' ? 'undefined' : _typeof(value));
}
}]);
return ValueConverter;
}();
module.exports = ValueConverter;
/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var root = __webpack_require__(21);
/** Built-in value references. */
var _Symbol = root.Symbol;
module.exports = _Symbol;
/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
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 freeGlobal = __webpack_require__(22);
/** Detect free variable `self`. */
var freeSelf = (typeof self === 'undefined' ? 'undefined' : _typeof(self)) == 'object' && self && self.Object === Object && self;
/** Used as a reference to the global object. */
var root = freeGlobal || freeSelf || Function('return this')();
module.exports = root;
/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(global) {
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; };
/** Detect free variable `global` from Node.js. */
var freeGlobal = (typeof global === 'undefined' ? 'undefined' : _typeof(global)) == 'object' && global && global.Object === Object && global;
module.exports = freeGlobal;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(63)))
/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = function (module) {
if (!module.webpackPolyfill) {
module.deprecate = function () {};
module.paths = [];
// module.parent = undefined by default
if (!module.children) module.children = [];
Object.defineProperty(module, "loaded", {
enumerable: true,
get: function get() {
return module.l;
}
});
Object.defineProperty(module, "id", {
enumerable: true,
get: function get() {
return module.i;
}
});
module.webpackPolyfill = 1;
}
return module;
};
/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;
/**
* Checks if `value` is a valid array-like length.
*
* **Note:** This method is loosely based on
* [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
* @example
*
* _.isLength(3);
* // => true
*
* _.isLength(Number.MIN_VALUE);
* // => false
*
* _.isLength(Infinity);
* // => false
*
* _.isLength('3');
* // => false
*/
function isLength(value) {
return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
module.exports = isLength;
/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var isFunction = __webpack_require__(77),
isLength = __webpack_require__(24);
/**
* Checks if `value` is array-like. A value is considered array-like if it's
* not a function and has a `value.length` that's an integer greater than or
* equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is array-like, else `false`.
* @example
*
* _.isArrayLike([1, 2, 3]);
* // => true
*
* _.isArrayLike(document.body.children);
* // => true
*
* _.isArrayLike('abc');
* // => true
*
* _.isArrayLike(_.noop);
* // => false
*/
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction(value);
}
module.exports = isArrayLike;
/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.identityf = undefined;
var _identity = __webpack_require__(83);
var _identity2 = _interopRequireDefault(_identity);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function liftuf(fn) {
return function (a) {
return function () {
return fn(a);
};
};
}
var identityf = exports.identityf = liftuf(_identity2.default);
/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _isArray = /*#__PURE__*/__webpack_require__(15);
var _isTransformer = /*#__PURE__*/__webpack_require__(94);
/**
* Returns a function that dispatches with different strategies based on the
* object in list position (last argument). If it is an array, executes [fn].
* Otherwise, if it has a function with one of the given method names, it will
* execute that function (functor case). Otherwise, if it is a transformer,
* uses transducer [xf] to return a new transformer (transducer case).
* Otherwise, it will default to executing [fn].
*
* @private
* @param {Array} methodNames properties to check for a custom implementation
* @param {Function} xf transducer to initialize if object is transformer
* @param {Function} fn default ramda implementation
* @return {Function} A function that dispatches on object in list position
*/
function _dispatchable(methodNames, xf, fn) {
return function () {
if (arguments.length === 0) {
return fn();
}
var args = Array.prototype.slice.call(arguments, 0);
var obj = args.pop();
if (!_isArray(obj)) {
var idx = 0;
while (idx < methodNames.length) {
if (typeof obj[methodNames[idx]] === 'function') {
return obj[methodNames[idx]].apply(obj, args);
}
idx += 1;
}
if (_isTransformer(obj)) {
var transducer = xf.apply(null, args);
return transducer(obj);
}
}
return fn.apply(this, arguments);
};
}
module.exports = _dispatchable;
/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function _map(fn, functor) {
var idx = 0;
var len = functor.length;
var result = Array(len);
while (idx < len) {
result[idx] = fn(functor[idx]);
idx += 1;
}
return result;
}
module.exports = _map;
/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = {
init: function init() {
return this.xf['@@transducer/init']();
},
result: function result(_result) {
return this.xf['@@transducer/result'](_result);
}
};
/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _arity = /*#__PURE__*/__webpack_require__(10);
var _curry1 = /*#__PURE__*/__webpack_require__(1);
var _curry2 = /*#__PURE__*/__webpack_require__(0);
var _curryN = /*#__PURE__*/__webpack_require__(99);
/**
* Returns a curried equivalent of the provided function, with the specified
* arity. The curried function has two unusual capabilities. First, its
* arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the
* following are equivalent:
*
* - `g(1)(2)(3)`
* - `g(1)(2, 3)`
* - `g(1, 2)(3)`
* - `g(1, 2, 3)`
*
* Secondly, the special placeholder value [`R.__`](#__) may be used to specify
* "gaps", allowing partial application of any combination of arguments,
* regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),
* the following are equivalent:
*
* - `g(1, 2, 3)`
* - `g(_, 2, 3)(1)`
* - `g(_, _, 3)(1)(2)`
* - `g(_, _, 3)(1, 2)`
* - `g(_, 2)(1)(3)`
* - `g(_, 2)(1, 3)`
* - `g(_, 2)(_, 3)(1)`
*
* @func
* @memberOf R
* @since v0.5.0
* @category Function
* @sig Number -> (* -> a) -> (* -> a)
* @param {Number} length The arity for the returned function.
* @param {Function} fn The function to curry.
* @return {Function} A new, curried function.
* @see R.curry
* @example
*
* var sumArgs = (...args) => R.sum(args);
*
* var curriedAddFourNumbers = R.curryN(4, sumArgs);
* var f = curriedAddFourNumbers(1, 2);
* var g = f(3);
* g(4); //=> 10
*/
var curryN = /*#__PURE__*/_curry2(function curryN(length, fn) {
if (length === 1) {
return _curry1(fn);
}
return _arity(length, _curryN(length, [], fn));
});
module.exports = curryN;
/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _curry2 = /*#__PURE__*/__webpack_require__(0);
var _isFunction = /*#__PURE__*/__webpack_require__(106);
var curryN = /*#__PURE__*/__webpack_require__(30);
var toString = /*#__PURE__*/__webpack_require__(107);
/**
* Turns a named method with a specified arity into a function that can be
* called directly supplied with arguments and a target object.
*
* The returned function is curried and accepts `arity + 1` parameters where
* the final parameter is the target object.
*
* @func
* @memberOf R
* @since v0.1.0
* @category Function
* @sig Number -> String -> (a -> b -> ... -> n -> Object -> *)
* @param {Number} arity Number of arguments the returned function should take
* before the target object.
* @param {String} method Name of the method to call.
* @return {Function} A new curried function.
* @see R.construct
* @example
*
* var sliceFrom = R.invoker(1, 'slice');
* sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm'
* var sliceFrom6 = R.invoker(2, 'slice')(6);
* sliceFrom6(8, 'abcdefghijklm'); //=> 'gh'
* @symb R.invoker(0, 'method')(o) = o['method']()
* @symb R.invoker(1, 'method')(a, o) = o['method'](a)
* @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b)
*/
var invoker = /*#__PURE__*/_curry2(function invoker(arity, method) {
return curryN(arity + 1, function () {
var target = arguments[arity];
if (target != null && _isFunction(target[method])) {
return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity));
}
throw new TypeError(toString(target) + ' does not have a method named "' + method + '"');
});
});
module.exports = invoker;
/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _isArray = /*#__PURE__*/__webpack_require__(15);
/**
* This checks whether a function has a [methodname] function. If it isn't an
* array it will execute that function otherwise it will default to the ramda
* implementation.
*
* @private
* @param {Function} fn ramda implemtation
* @param {String} methodname property to check for a custom implementation
* @return {Object} Whatever the return value of the method is.
*/
function _checkForMethod(methodname, fn) {
return function () {
var length = arguments.length;
if (length === 0) {
return fn();
}
var obj = arguments[length - 1];
return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));
};
}
module.exports = _checkForMethod;
/***/ }),
/* 33 */
/***/ (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; };
exports.createInjector = createInjector;
var _registration = __webpack_require__(3);
var _injection = __webpack_require__(4);
var _providers = __webpack_require__(2);
var _util = __webpack_require__(5);
function createInjector() {
var curry = function curry(fn) {
return function (arg1) {
return function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return fn.apply(undefined, [arg1].concat(args));
};
};
};
var stores = {
types: {},
providers: {},
fakes: {},
state: {},
cache: {},
singletons: {},
DEFAULT_LIFETIME: 'transient'
};
var registration = {
registerType: curry(_registration.registerType)(stores),
registerFake: curry(_registration.registerFake)(stores),
registerProvider: curry(_registration.registerProvider)(stores),
registerMain: curry(_registration.registerMain)(stores)
};
var injection = {
inject: function inject(name) {
var descriptor = (0, _injection.getDescriptor)(stores, name);
if (stores.cache[name] && stores.cache[name].descriptor.hashCode === descriptor.hashCode) {
return stores.cache[name]((0, _injection.buildGraph)(descriptor, stores));
}
return (0, _providers.buildProvider)(stores, descriptor)((0, _injection.buildGraph)(descriptor, stores));
},
get: function get(name, adhoc_dependencies, context) {
if (name.indexOf('::provider') > -1) {
name = name.split('::provider')[0];
var _spec = injection.inject(name);
return _spec.provider;
}
var spec = injection.inject(name);
return spec.provider.call(context, adhoc_dependencies);
},
run: function run(context, adhoc_dependencies) {
if (!stores.providers.main) {
throw 'No main method registered. Please register one by running injector.registerMain() before running the app';
}
return injection.get('main', context, adhoc_dependencies);
},
getType: function getType(name) {
return (stores.fakes[name] || stores.types[name]).type;
}
};
var util = {
clearState: function clearState() {
return (0, _util.clearState)(stores);
}
};
return _extends({}, registration, injection, util);
}
/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (lifetime) {
if (!~lifetimes.indexOf(lifetime)) {
throw 'invalid lifetime "' + lifetime + '" provided. Valid lifetimes are singleton, transient, instance and parent';
}
};
var lifetimes = ['singleton', 'transient', 'root', 'parent', 'state'];
/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (runtimeStores, name, type, lifetime, provider) {
if (runtimeStores.cache[name]) {
if (lifetime === 'singleton') {
throw 'you cannot re-register a singleton that has already been instantiated';
}
delete runtimeStores.cache[name];
}
(0, _index.registerInstantiable)(runtimeStores.types, name, type, lifetime || runtimeStores.DEFAULT_LIFETIME, provider);
};
var _index = __webpack_require__(3);
/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (runtimeStores, name, type, lifetime, provider) {
if (runtimeStores.cache[name]) {
delete runtimeStores.cache[name];
}
(0, _index.registerInstantiable)(runtimeStores.fakes, name, type, lifetime || runtimeStores.DEFAULT_LIFETIME, provider);
};
var _index = __webpack_require__(3);
/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (targetStore, name, type, lifetime, provider) {
(0, _registration.assertLifetime)(lifetime);
var newDescriptor = (0, _registration.register)(name, type, lifetime);
if (provider) {
newDescriptor.provider = (0, _registration.register)(name + '::passive', provider);
newDescriptor.provider.dependencies.shift();
}
targetStore[name] = newDescriptor;
};
var _registration = __webpack_require__(3);
/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (name, typeDescriptor, lifetime) {
var type = void 0,
dependencies = void 0;
(0, _assertions.assertNameRequired)(name);
(0, _assertions.assertTypeRequired)(typeDescriptor);
if (typeof typeDescriptor === 'function') {
dependencies = typeDescriptor.$inject || typeDescriptor.prototype.$inject || (0, _getDependencyNames2.default)(typeDescriptor);
type = typeDescriptor;
} else if (Array.isArray(typeDescriptor)) {
type = typeDescriptor[typeDescriptor.length - 1];
(0, _assertions.assertTypeDependency)(typeDescriptor, type);
dependencies = typeDescriptor.length > 1 ? typeDescriptor.slice(0, typeDescriptor.length - 1) : undefined;
} else {
throw 'type must be a function or an array';
}
(0, _assertions.assertTypeProvided)(type);
return {
name: name,
type: type,
dependencies: dependencies,
lifetime: lifetime,
hashCode: _uuid2.default.getNext()
};
};
var _getDependencyNames = __webpack_require__(18);
var _getDependencyNames2 = _interopRequireDefault(_getDependencyNames);
var _uuid = __webpack_require__(8);
var _uuid2 = _interopRequireDefault(_uuid);
var _assertions = __webpack_require__(39);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.assertDestination = assertDestination;
exports.assertNameRequired = assertNameRequired;
exports.assertTypeRequired = assertTypeRequired;
exports.assertTypeDependency = assertTypeDependency;
exports.assertTypeProvided = assertTypeProvided;
var _assertJs = __webpack_require__(40);
var _assertJs2 = _interopRequireDefault(_assertJs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function assertDestination(where) {
_assertJs2.default.oneOf(where, ['types', 'providers', 'fakes'], 'invalid destination "' + where + '" provided. Valid destinations are types, providers and fakes');
}
function assertNameRequired(name) {
_assertJs2.default.string(name, 'Type must have a name');
_assertJs2.default.notEmpty(name, 'Type must have a name');
}
function assertTypeRequired(type) {
_assertJs2.default.true(!!type, 'no type was passed');
}
function assertTypeDependency(type, realType) {
_assertJs2.default.false(!!(type.$inject || realType.$inject), 'passed type cannot have both array notation and the $inject property populated');
}
function assertTypeProvided(realType) {
_assertJs2.default.isFunction(realType, 'no type was passed');
}
/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var assert = __webpack_require__(41);
module.exports = assert;
if (typeof window !== 'undefined') {
window.Assert = assert;
}
/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _typeof2 = 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 _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
return typeof obj === "undefined" ? "undefined" : _typeof2(obj);
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof2(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");
}
}
var InvalidValueException = __webpack_require__(42);
var ValueConverter = __webpack_require__(19);
var Assert = function () {
function Assert() {
_classCallCheck(this, Assert);
}
_createClass(Assert, null, [{
key: 'instanceOf',
/**
* @param {object} objectValue
* @param {function} expectedInstance
* @param {string} [message]
*/
value: function instanceOf(objectValue, expectedInstance) {
var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
this.string(message, "Custom error message passed to Assert.instanceOf needs to be a valid string.");
if ((typeof objectValue === 'undefined' ? 'undefined' : _typeof(objectValue)) !== 'object') {
throw InvalidValueException.expected("object", objectValue, message);
}
if (!(objectValue instanceof expectedInstance)) {
throw InvalidValueException.expected(expectedInstance.name, objectValue, message.length ? message : "Expected instance of \"${expected}\" but got \"${received}\".");
}
}
}, {
key: 'instanceOneOf',
value: function instanceOneOf(objectValue, expectedInstances) {
var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
this.string(message, "Custom error message passed to Assert.instanceOf needs to be a valid string.");
this.array(expectedInstances);
var instance = expectedInstances.find(function (expectedInstance) {
return objectValue instanceof expectedInstance;
});
if (instance === undefined) {
throw InvalidValueException.expected(expectedInstances.map(function (instance) {
return ValueConverter.toString(instance);
}).join(', '), objectValue, message.length ? message : "Expected instance of \"${expected}\" but got \"${received}\".");
}
}
/**
* @param {int} integerValue
* @param {string} [message]
*/
}, {
key: 'integer',
value: function integer(integerValue) {
var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
this.string(message, "Custom error message passed to Assert.integer needs to be a valid string.");
if (!Number.isInteger(integerValue)) {
throw InvalidValueException.expected("integer", integerValue, message);
}
}
/**
* @param {number} numberValue
* @param {string} [message]
*/
}, {
key: 'number',
value: function number(numberValue) {
var message = arguments.length > 1 && arguments[1] !== undefin