node-dependency-injection
Version:
The NodeDependencyInjection component allows you to standardize and centralize the way objects are constructed in your application.
1 lines • 12.3 kB
JavaScript
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _typeof=require("@babel/runtime/helpers/typeof");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 _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _set2=_interopRequireDefault(require("@babel/runtime/helpers/set"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _FileLoader2=_interopRequireDefault(require("./FileLoader"));var _fastXmlParser=require("fast-xml-parser");var fs=_interopRequireWildcard(require("fs/promises"));var _ServiceFileNotFoundException=_interopRequireDefault(require("../Exception/ServiceFileNotFoundException"));var _ServiceFileNotLoadedException=_interopRequireDefault(require("../Exception/ServiceFileNotLoadedException"));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=_typeof(e)&&"function"!=typeof e)return{"default":e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u];}return n["default"]=e,t&&t.set(e,n),n;}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;}function _callSuper(t,o,e){return o=(0,_getPrototypeOf2["default"])(o),(0,_possibleConstructorReturn2["default"])(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],(0,_getPrototypeOf2["default"])(t).constructor):o.apply(t,e));}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _superPropSet(t,e,o,r,p,f){return(0,_set2["default"])((0,_getPrototypeOf2["default"])(f?t.prototype:t),e,o,r,p);}var XmlFileLoader=exports["default"]=function(_FileLoader){function XmlFileLoader(){(0,_classCallCheck2["default"])(this,XmlFileLoader);return _callSuper(this,XmlFileLoader,arguments);}(0,_inherits2["default"])(XmlFileLoader,_FileLoader);return(0,_createClass2["default"])(XmlFileLoader,[{key:"load",value:(function(){var _load=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(){var file,rawContent,parsed,parser,container,imports,parameters,services,_args=arguments;return _regenerator["default"].wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:file=_args.length>0&&_args[0]!==undefined?_args[0]:null;_superPropSet(XmlFileLoader,"filePath",file,this,1,1);this._container.loggerHelper.info("Loading XML file: ".concat(file));_context.prev=3;_context.next=6;return fs.readFile(this.filePath,'utf8');case 6:rawContent=_context.sent;_context.next=12;break;case 9:_context.prev=9;_context.t0=_context["catch"](3);throw new _ServiceFileNotFoundException["default"](this.filePath);case 12:_context.prev=12;parser=new _fastXmlParser.XMLParser({ignoreAttributes:false,attributeNamePrefix:'@_',isArray:function isArray(name){return['import','service','argument','tag','call','property','parameter'].includes(name);},allowBooleanAttributes:true});parsed=parser.parse(rawContent);_context.next=20;break;case 17:_context.prev=17;_context.t1=_context["catch"](12);throw new _ServiceFileNotLoadedException["default"](_context.t1.message);case 20:container=parsed.container||{};imports=this._transformImports(container.imports);parameters=this._transformParameters(container.parameters);services=this._transformServices(container.services);_context.next=26;return this._parseImports(imports);case 26:_context.next=28;return this._parseParameters(parameters);case 28:_context.next=30;return this._parseDefinitions(services);case 30:case"end":return _context.stop();}},_callee,this,[[3,9],[12,17]]);}));function load(){return _load.apply(this,arguments);}return load;}())},{key:"_transformImports",value:function _transformImports(importsNode){if(!importsNode||!importsNode["import"]){return[];}return importsNode["import"].map(function(imp){return{resource:imp['@_resource']};});}},{key:"_transformParameters",value:function _transformParameters(parametersNode){if(!parametersNode||!parametersNode.parameter){return{};}var result={};var _iterator=_createForOfIteratorHelper(parametersNode.parameter),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var param=_step.value;var key=param['@_key'];if(key===undefined){continue;}result[key]=this._parseParameterValue(param);}}catch(err){_iterator.e(err);}finally{_iterator.f();}return result;}},{key:"_parseParameterValue",value:function _parseParameterValue(param){var _this=this,_param$Text2;var type=param['@_type'];if(type==='collection'){return(param.parameter||[]).map(function(p){return _this._parseParameterValue(p);});}if(type==='map'){var obj={};var _iterator2=_createForOfIteratorHelper(param.parameter||[]),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var child=_step2.value;obj[child['@_key']]=this._parseParameterValue(child);}}catch(err){_iterator2.e(err);}finally{_iterator2.f();}return obj;}if(type==='boolean'){var _param$Text;var val=String((_param$Text=param['#text'])!==null&&_param$Text!==void 0?_param$Text:param).trim().toLowerCase();return val==='true';}var raw=(_param$Text2=param['#text'])!==null&&_param$Text2!==void 0?_param$Text2:param;if(raw===undefined||raw===null){return raw;}return String(raw);}},{key:"_transformServices",value:function _transformServices(servicesNode){if(!servicesNode){return{};}var result={};if(servicesNode.defaults){result._defaults=this._transformDefaults(servicesNode.defaults);}var _iterator3=_createForOfIteratorHelper(servicesNode.service||[]),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var svc=_step3.value;var id=svc['@_id'];if(id===undefined){continue;}if(svc['@_alias']!==undefined){result[id]="@".concat(svc['@_alias']);continue;}if(svc['@_synthetic']===true||svc['@_synthetic']==='true'){result[id]={synthetic:true};continue;}result[id]=this._transformService(svc);}}catch(err){_iterator3.e(err);}finally{_iterator3.f();}return result;}},{key:"_transformDefaults",value:function _transformDefaults(defaultsNode){var defaults={};if(defaultsNode['@_autowire']!==undefined){defaults.autowire=defaultsNode['@_autowire']==='true'||defaultsNode['@_autowire']===true;}if(defaultsNode['@_dir']!==undefined){defaults.rootDir=defaultsNode['@_dir'];}if(defaultsNode.bind){var binds=Array.isArray(defaultsNode.bind)?defaultsNode.bind:[defaultsNode.bind];defaults.bind={};var _iterator4=_createForOfIteratorHelper(binds),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var b=_step4.value;defaults.bind[b['@_prefix']]=b['@_path'];}}catch(err){_iterator4.e(err);}finally{_iterator4.f();}}if(defaultsNode.exclude){var excludes=Array.isArray(defaultsNode.exclude)?defaultsNode.exclude:[defaultsNode.exclude];defaults.exclude=excludes.map(function(e){return e['@_pattern']||e;});}return defaults;}},{key:"_transformService",value:function _transformService(svc){var service={};if(svc['@_class']!==undefined){service["class"]=svc['@_class'];}if(svc['@_main']!==undefined){service.main=svc['@_main'];}if(svc['@_lazy']!==undefined){service.lazy=svc['@_lazy']==='true'||svc['@_lazy']===true;}if(svc['@_public']!==undefined){service["public"]=svc['@_public']!=='false'&&svc['@_public']!==false;}if(svc['@_shared']!==undefined){service.shared=svc['@_shared']!=='false'&&svc['@_shared']!==false;}if(svc['@_abstract']!==undefined){service["abstract"]=svc['@_abstract']==='true'||svc['@_abstract']===true;}if(svc['@_parent']!==undefined){service.parent=svc['@_parent'];}if(svc['@_decorates']!==undefined){service.decorates=svc['@_decorates'];}if(svc['@_decoration-priority']!==undefined){service.decoration_priority=Number(svc['@_decoration-priority']);}if(svc['@_deprecated']!==undefined){service.deprecated=svc['@_deprecated'];}service.arguments=this._transformArguments(svc.argument);service.tags=this._transformTags(svc.tag);service.calls=this._transformCalls(svc.call);service.properties=this._transformProperties(svc.property);if(svc.factory){var _svc$factory$_class;service.factory={};var factoryClass=(_svc$factory$_class=svc.factory['@_class'])!==null&&_svc$factory$_class!==void 0?_svc$factory$_class:svc.factory['@_service'];if(factoryClass!==undefined){service.factory["class"]=factoryClass;}if(svc.factory['@_method']!==undefined){service.factory.method=svc.factory['@_method'];}if(svc.factory['@_main']!==undefined){service.factory.main=svc.factory['@_main'];}}return service;}},{key:"_transformArguments",value:function _transformArguments(argNodes){if(!argNodes||argNodes.length===0){return[];}return argNodes.map(function(arg){var _arg$Text3;var type=arg['@_type'];if(type==='tagged'){var _arg$Text;return"!tagged ".concat((_arg$Text=arg['#text'])!==null&&_arg$Text!==void 0?_arg$Text:arg);}if(type==='boolean'){var _arg$Text2;var val=String((_arg$Text2=arg['#text'])!==null&&_arg$Text2!==void 0?_arg$Text2:arg).trim().toLowerCase();return val==='true';}var raw=(_arg$Text3=arg['#text'])!==null&&_arg$Text3!==void 0?_arg$Text3:arg;return raw===undefined||raw===null?'':String(raw);});}},{key:"_transformTags",value:function _transformTags(tagNodes){if(!tagNodes||tagNodes.length===0){return[];}return tagNodes.map(function(tag){var name=tag['@_name'];var attributes={};for(var _i=0,_Object$keys=Object.keys(tag);_i<_Object$keys.length;_i++){var key=_Object$keys[_i];if(key!=='@_name'&&key.startsWith('@_')){attributes[key.slice(2)]=tag[key];}}var result={name:name};if(Object.keys(attributes).length>0){result.attributes=attributes;}return result;});}},{key:"_transformCalls",value:function _transformCalls(callNodes){var _this2=this;if(!callNodes||callNodes.length===0){return[];}return callNodes.map(function(call){return{method:call['@_method'],arguments:_this2._transformArguments(call.argument)};});}},{key:"_transformProperties",value:function _transformProperties(propertyNodes){if(!propertyNodes||propertyNodes.length===0){return{};}var result={};var _iterator5=_createForOfIteratorHelper(propertyNodes),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var _prop$Text;var prop=_step5.value;result[prop['@_name']]=String((_prop$Text=prop['#text'])!==null&&_prop$Text!==void 0?_prop$Text:prop);}}catch(err){_iterator5.e(err);}finally{_iterator5.f();}return result;}}]);}(_FileLoader2["default"]);