-
Notifications
You must be signed in to change notification settings - Fork 2
/
js-wiring.min.js
1 lines (1 loc) · 2.75 KB
/
js-wiring.min.js
1
var Wiring=(function(){var e=Object,h=null,a=e.prototype.toString;function k(o){return a.call(o)==="[object Array]"}function n(o){this.object=o}function m(t){var r=1,q=arguments.length,o,v,s,u;for(;r<q;r++){o=arguments[r];if(o){for(v in o){if(o.hasOwnProperty(v)){u=o[v];if(u instanceof n){u=u.object;if(v in t&&(s=t[v])){u=(k(s)&&k(u))?s.concat(u):m({},s,u)}}t[v]=u}}}}return t}function l(r,s,q){var p=function(){},o="prototype";p[o]=s[o];r[o]=m(new p(),q);r[o].constructor=r}function i(s){var r=this,q=s.split("."),p=0,o=q.length;for(;p<o;p++){r=r[q[p]]}return r}function g(){}l(g,e,{wiring:h});function d(p,o){this.wiring=p;this.cfg=o}d.defaults={type:e,singleton:true,ctorArgs:[],properties:{},initMethod:h,parent:h};d.PLACEHOLDER_RE=/^\{(\w+):(.+)\}$/;l(d,e,{expand:function(w){var s,q,t,r,u,o;if(k(w)){o=[];for(s=0;(q=w[s]);s++){o.push(this.expand(q))}}else{if(typeof w==="object"&&w!==h){o={};for(t in w){if(w.hasOwnProperty(t)){o[t]=this.expand(w[t])}}}else{if(typeof w==="string"&&(r=w.match(d.PLACEHOLDER_RE))){u=this.wiring._resolvers[r[1]];o=(u?u.resolve(r[2]):w)}else{o=w}}}return o},getParent:function(){var o=this.cfg.parent;return(o&&this.wiring._defs[o])||h},getCascadedCfg:function(){var p="_cascCfg",o,q,r,s=this[p];if(!s){o=this.cfg;q=this.getParent();if(q){q=q.getCascadedCfg();r=m({},q,o);r.ctorArgs=m([],q.ctorArgs,o.ctorArgs);r.properties=m({},q.properties,o.properties);o=r}s=this[p]=m({},d.defaults,o);if(typeof s.type==="string"){s.type=i(s.type)}}return s},getInstance:function(){var o,s,z,u,y,x=this.getCascadedCfg(),w=x.properties,r=x.type,t=x.ctorArgs,q="function";u=this._instance;if(u&&x.singleton){return u}if(t.length>0){y=function(){};y.prototype=r.prototype;u=new y();r.apply(u,this.expand(t))}else{u=new r()}if(x.singleton){this._instance=u}if(u instanceof g){u.wiring=this.wiring}for(o in w){if(w.hasOwnProperty(o)){s=u["set"+o.charAt(0).toUpperCase()+o.substring(1)];z=this.expand(w[o]);if(s&&typeof s===q){s.call(u,z)}else{u[o]=z}}}if((s=x.initMethod)&&(s=u[s])&&typeof s===q){s.call(u)}return u}});function b(){}l(b,g,{refId:h,createInstance:function(q){if(q){var p=m({},q,{parent:this.refId}),o=new d(this.wiring,p);return o.getInstance()}return this.wiring.get(this.refId)}});function j(){}l(j,g,{prefix:"",resolve:function(o){return o}});function f(){}l(f,j,{prefix:"ref",resolve:function(o){return this.wiring.get(o)}});function c(){this._defs={};this._resolvers={};this.addValueResolver(new f())}l(c,e,{add:function(o){for(var q in o){if(o.hasOwnProperty(q)){this._defs[q]=new d(this,o[q])}}},get:function(o){var p=this._defs[o];return(p?p.getInstance():h)},isDefined:function(o){return !!this._defs[o]},addValueResolver:function(o){o.wiring=this;this._resolvers[o.prefix]=o},merge:function(o){return new n(o)},WiringAware:g,Factory:b,ValueResolver:j});return new c()})();