express-locator
Version:
a service locator
159 lines (143 loc) • 19.5 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 if(typeof exports === 'object')
exports["reduxMethods"] = factory();
else
root["reduxMethods"] = factory();
})(window, 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, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // 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 = "./src/index.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src sync recursive":
/*!******************!*\
!*** ./src sync ***!
\******************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"./src sync recursive\";\n\n//# sourceURL=webpack://reduxMethods/./src_sync?");
/***/ }),
/***/ "./src/ControlledError.js":
/*!********************************!*\
!*** ./src/ControlledError.js ***!
\********************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ControlledError; });\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null) return null; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @description a simple class extending the Error constructor to include an isControlled = true property\n * @class ControlledError\n * @extends {Error}\n */\nvar ControlledError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(ControlledError, _Error);\n\n function ControlledError() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ControlledError);\n\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ControlledError)).call.apply(_getPrototypeOf2, [this].concat(params)));\n if (Error.captureStackTrace) Error.captureStackTrace(_assertThisInitialized(_assertThisInitialized(_this)), ControlledError);\n _this.isControlled = true;\n return _this;\n }\n\n return ControlledError;\n}(_wrapNativeSuper(Error));\n\n\n\n//# sourceURL=webpack://reduxMethods/./src/ControlledError.js?");
/***/ }),
/***/ "./src/Instance.js":
/*!*************************!*\
!*** ./src/Instance.js ***!
\*************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Instance; });\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @description A class to automatically assign dependencies, relevant config and locator to this of the child class\n * @export\n * @class Instance\n */\nvar Instance = function Instance(properties, dependencies) {\n var _this = this;\n\n _classCallCheck(this, Instance);\n\n if (_typeof(properties) === 'object' && !Array.isArray(properties)) {\n Object.keys(properties).forEach(function (prop) {\n _this[prop] = properties[prop]; //eslint-disable-line\n });\n } else throw new Error('Locator must be provided to class in an object key-value pair');\n\n if (Array.isArray(dependencies)) {\n dependencies.forEach(function (dependency) {\n _this[dependency] = _this.locator.get(dependency); //eslint-disable-line\n });\n }\n};\n\n\n\n//# sourceURL=webpack://reduxMethods/./src/Instance.js?");
/***/ }),
/***/ "./src/Locator.js":
/*!************************!*\
!*** ./src/Locator.js ***!
\************************/
/*! exports provided: default, locator */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Locator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"locator\", function() { return locator; });\n/* harmony import */ var _ControlledError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ControlledError */ \"./src/ControlledError.js\");\n/* harmony import */ var _Instance__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Instance */ \"./src/Instance.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n/**\n * @description A class to manage dependencies and configuration on a node application\n * @export\n * @class Locator\n */\nvar Locator =\n/*#__PURE__*/\nfunction () {\n function Locator() {\n _classCallCheck(this, Locator);\n\n this.registry = {\n Error: {},\n Instance: {}\n };\n this.cache = {\n Error: _ControlledError__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n Instance: _Instance__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n };\n }\n\n _createClass(Locator, [{\n key: \"config\",\n value: function config(configs) {\n this.configs = configs;\n\n for (var _len = arguments.length, dependencies = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n dependencies[_key - 1] = arguments[_key];\n }\n\n this.register.apply(this, dependencies);\n }\n }, {\n key: \"register\",\n value: function register() {\n var _this = this;\n\n var invokers = [];\n\n var addDependency = function addDependency(dependency) {\n if (Array.isArray(dependency)) dependency.forEach(addDependency);else if (typeof dependency === 'string') _this.registry[dependency] = {\n construct: dependency\n };else {\n var name = dependency.name,\n dependencies = dependency.dependencies,\n config = dependency.config,\n construct = dependency.construct,\n invoke = dependency.invoke,\n rest = _objectWithoutProperties(dependency, [\"name\", \"dependencies\", \"config\", \"construct\", \"invoke\"]);\n\n if (name) {\n _this.registry[name] = {\n config: config,\n construct: construct,\n dependencies: dependencies\n };\n invoke && invokers.push(name);\n } else if (!name && Object.keys(rest).length === 1) {\n var _Object$keys = Object.keys(rest),\n _Object$keys2 = _slicedToArray(_Object$keys, 1),\n derivedName = _Object$keys2[0];\n\n var derivedConstruct = rest[derivedName];\n _this.registry[derivedName] = {\n config: config,\n construct: derivedConstruct,\n dependencies: dependencies\n };\n invoke && invokers.push(derivedName);\n } else throw new Error('No dependency name has been provided');\n }\n };\n\n for (var _len2 = arguments.length, dependencyType = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n dependencyType[_key2] = arguments[_key2];\n }\n\n dependencyType.forEach(addDependency);\n invokers.forEach(function (name) {\n return _this.get(name);\n });\n }\n }, {\n key: \"get\",\n value: function get(dependencyName) {\n if (typeof this.registry[dependencyName] === 'undefined') throw new Error(\"\".concat(dependencyName, \": Attempting to retrieve unknown dependency\"));\n\n if (typeof this.cache[dependencyName] === 'undefined') {\n var thisDependency = this.registry[dependencyName];\n var construct = thisDependency.construct,\n _thisDependency$depen = thisDependency.dependencies,\n dependencies = _thisDependency$depen === void 0 ? [] : _thisDependency$depen,\n config = thisDependency.config;\n\n if (construct) {\n if (typeof construct === 'string') {\n var name = construct;\n this.cache[dependencyName] = __webpack_require__(\"./src sync recursive\")(name);\n } else {\n var props = {\n config: this.configs && (config ? this.configs : this.configs[dependencyName]),\n locator: this\n };\n\n if (construct.prototype instanceof _Instance__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n var Construct = construct;\n this.cache[dependencyName] = new Construct(props, dependencies);\n } else if (typeof construct === 'function') this.cache[dependencyName] = construct(props, dependencies);\n }\n }\n }\n\n if (!this.cache[dependencyName]) throw new Error(\"\".concat(dependencyName, \": Dependency construction object is invalid\"));\n return this.cache[dependencyName];\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.registry = {\n Error: {},\n Instance: {}\n };\n this.cache = {\n Error: _ControlledError__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n Instance: _Instance__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n };\n }\n }]);\n\n return Locator;\n}();\n\n\nvar locator = new Locator();\n\n//# sourceURL=webpack://reduxMethods/./src/Locator.js?");
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/*! exports provided: Locator, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Locator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Locator */ \"./src/Locator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Locator\", function() { return _Locator__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n_Locator__WEBPACK_IMPORTED_MODULE_0__[\"locator\"].Locator = _Locator__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (_Locator__WEBPACK_IMPORTED_MODULE_0__[\"locator\"]);\n\n//# sourceURL=webpack://reduxMethods/./src/index.js?");
/***/ })
/******/ });
});