UNPKG

kopi-locator

Version:

This library is used for implementing service locator pattern in Node.js applications

1 lines 2.23 kB
"use strict";function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}var _require=require("kopitech-logger")("KopiLocator"),L=_require.L;Promise=require("bluebird"),module.exports=function(){var a={},b={},c=/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function a(c,d){var e,f=arguments;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return e=2<f.length&&void 0!==f[2]?f[2]:[],a.prev=1,b[c]={factory:d,dependencies:e},a.abrupt("return",Promise.resolve());case 6:return a.prev=6,a.t0=a["catch"](1),a.abrupt("return",Promise.reject(a.t0));case 9:case"end":return a.stop();}},a,null,[[1,6]])}));return function(){return a.apply(this,arguments)}}(),d=/*#__PURE__*/function(){var b=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function b(c,d){return regeneratorRuntime.wrap(function(b){for(;;)switch(b.prev=b.next){case 0:return b.prev=0,a[c]=d,b.abrupt("return",Promise.resolve());case 5:return b.prev=5,b.t0=b["catch"](0),b.abrupt("return",Promise.reject(b.t0));case 8:case"end":return b.stop();}},b,null,[[0,5]])}));return function(){return b.apply(this,arguments)}}(),e=/*#__PURE__*/function(){var c=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function c(d){var f,g,h,i;return regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:if(c.prev=0,null!=a[d]){c.next=12;break}if(f=b[d],null==f){c.next=12;break}return L.debug("Instantiating service: ".concat(d)),g=f.factory,h=f.dependencies,c.next=8,Promise.mapSeries(h,function(a){return e(a)});case 8:return i=c.sent,c.next=11,g.apply(null,i);case 11:a[d]=c.sent;case 12:return c.abrupt("return",Promise.resolve(a[d]));case 15:return c.prev=15,c.t0=c["catch"](0),c.abrupt("return",Promise.reject(c.t0));case 18:case"end":return c.stop();}},c,null,[[0,15]])}));return function(){return c.apply(this,arguments)}}();return{register:c,set:d,get:e}};