UNPKG

node-dependency-injection

Version:

The NodeDependencyInjection component allows you to standardize and centralize the way objects are constructed in your application.

1 lines 5.49 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _ServiceCircularReferenceException=_interopRequireDefault(require("./Exception/ServiceCircularReferenceException"));var _PassConfig=_interopRequireDefault(require("./PassConfig"));function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]};},e:function e(r){throw r;},f:F};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t["return"]||t["return"]();}finally{if(u)throw o;}}};}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}var Compiler=exports["default"]=function(){function Compiler(container){(0,_classCallCheck2["default"])(this,Compiler);this._container=container;}return(0,_createClass2["default"])(Compiler,[{key:"run",value:function(){var _run=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(){var logger;return _regenerator["default"].wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:logger=this._container.loggerHelper;_context.prev=1;if(this._container.frozen){_context.next=11;break;}logger.info('Compiling container...');_context.next=6;return this._loadExtensions();case 6:_context.next=8;return this._optimize();case 8:_context.next=10;return this._remove();case 10:logger.info('Container compiled successfully');case 11:_context.next=18;break;case 13:_context.prev=13;_context.t0=_context["catch"](1);if(!(_context.t0 instanceof RangeError)){_context.next=17;break;}throw new _ServiceCircularReferenceException["default"]();case 17:throw _context.t0;case 18:case"end":return _context.stop();}},_callee,this,[[1,13]]);}));function run(){return _run.apply(this,arguments);}return run;}()},{key:"_loadExtensions",value:(function(){var _loadExtensions2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(){var promises,_iterator,_step,extension;return _regenerator["default"].wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:promises=[];_iterator=_createForOfIteratorHelper(this._container.extensions);try{for(_iterator.s();!(_step=_iterator.n()).done;){extension=_step.value;promises.push(extension.load(this));}}catch(err){_iterator.e(err);}finally{_iterator.f();}Promise.all(promises);case 4:case"end":return _context2.stop();}},_callee2,this);}));function _loadExtensions(){return _loadExtensions2.apply(this,arguments);}return _loadExtensions;}())},{key:"_optimize",value:(function(){var _optimize2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(){return _regenerator["default"].wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:this._container.loggerHelper.debug('Running compiler phase: beforeOptimization');_context3.next=3;return this._container._compilerPass.process(_PassConfig["default"].TYPE_BEFORE_OPTIMIZATION);case 3:this._container.loggerHelper.debug('Running compiler phase: optimize');_context3.next=6;return this._container._compilerPass.process(_PassConfig["default"].TYPE_OPTIMIZE);case 6:case"end":return _context3.stop();}},_callee3,this);}));function _optimize(){return _optimize2.apply(this,arguments);}return _optimize;}())},{key:"_remove",value:(function(){var _remove2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(){return _regenerator["default"].wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:this._container.loggerHelper.debug('Running compiler phase: beforeRemoving');_context4.next=3;return this._container._compilerPass.process(_PassConfig["default"].TYPE_BEFORE_REMOVING);case 3:this._container.loggerHelper.debug('Running compiler phase: remove');_context4.next=6;return this._container._compilerPass.process(_PassConfig["default"].TYPE_REMOVE);case 6:this._container.loggerHelper.debug('Running compiler phase: afterRemoving');_context4.next=9;return this._container._compilerPass.process(_PassConfig["default"].TYPE_AFTER_REMOVING);case 9:case"end":return _context4.stop();}},_callee4,this);}));function _remove(){return _remove2.apply(this,arguments);}return _remove;}())}]);}();