assemblerjs 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +8 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +149 -149
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -415,6 +415,14 @@ export declare class Assembler extends EventManager implements AbstractAssembler
|
|
|
415
415
|
*/
|
|
416
416
|
declare type InstanceInjection<T> = Tuple<[Identifier<T> | string | Symbol, T]>;
|
|
417
417
|
|
|
418
|
+
/**
|
|
419
|
+
* Check if a given class is an `Assemblage`.
|
|
420
|
+
*
|
|
421
|
+
* @param { Concrete<T> } target The class to test.
|
|
422
|
+
* @returns `true` if the class is an assemblage.
|
|
423
|
+
*/
|
|
424
|
+
export declare const isAssemblage: <T>(target: Concrete<T>) => boolean;
|
|
425
|
+
|
|
418
426
|
/**
|
|
419
427
|
* Describes a listener type as a function taking any number of arguments and returning `void`.
|
|
420
428
|
*/
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var e=function(e){return e.IsAssemblage="is_assemblage",e}({}),t=function(e){return e.AssemblageDefinition="assemblage:definition.value",e}({});const n=(...e)=>{},s=(...e)=>t=>{if(e.includes(typeof t))return typeof t},i=e=>!(e=>void 0===e)(e)&&!(e=>null===e)(e),r=e=>e&&"function"==typeof e&&void 0!==e.constructor,o=e=>"function"==typeof e&&"AsyncFunction"===e.constructor.name,c=(e,...t)=>{t.map(((e,n)=>{const s=/\S/.test(e);return s&&(t[n]=t[n].trim()),s?-1:n})).filter((e=>e>=0)).every((e=>{t[e]=" ",((e,t,n)=>{const s=e[t];e.splice(t,1),e.splice(n,0,s)})(t,e,t.length-1)})),t=(e=>Array.from(new Set(e)))(t);const n=new RegExp(`[^A-Za-zÀ-ÖØ-öø-ÿ0-9${t.join("")}]`,"gi");return e.replace(n,"")},a=(...e)=>t=>e.reduce(((e,t)=>t(e)),t),h=e=>t=>e.if(t)?e.then(t):e.else?e.else(t):void 0,l=e=>t=>{const s=Array.isArray(e)?e=>parseInt(e):n;for(const[n,i]of Object.entries(e))t(i,s(n))},u=(e,t)=>{const n=new Proxy(e,{get:function(n,s){return s===Symbol.iterator?n[Symbol.iterator].bind(n):((e,t)=>[...Object.getOwnPropertyNames(t.prototype),...Object.getOwnPropertyNames(Object.getPrototypeOf(e)),...Object.getOwnPropertyNames(e)])(e,t).includes(s)?n[s]:n.collection[s]},set:function(e,t,n){return Reflect.set(e,t,n)}});return n},f=(e,t)=>{const n=e;for(const s of((e,t)=>[...Object.getOwnPropertyNames(t.prototype),...Object.getOwnPropertyNames(Object.getPrototypeOf(e)),...Object.getOwnPropertyNames(e)])(e,t))delete n[s]},d=(e,t,n)=>{Reflect.defineMetadata(`__${e}__`,t,n)},p=(e,t)=>Reflect.getOwnMetadata(`__${e}__`,t),g=e=>Reflect.getMetadata("design:paramtypes",e)||[],b=t=>p(e.IsAssemblage,t)||!1,y={singleton:{test:e=>"boolean"==typeof e||void 0===e,throw:()=>{throw new Error("'singleton' property must be of type 'boolean' or 'undefined'.")},transform:e=>void 0===e},events:{test:e=>void 0===e||Array.isArray(e)&&e.every((e=>"string"==typeof e)),throw:()=>{throw new Error("'events' property must be an array of strings or 'undefined'.")},transform:e=>e},inject:{test:e=>void 0===e||Array.isArray(e)&&e.every((e=>Array.isArray(e)&&e.length>=1&&e.length<=3)),throw:()=>{throw new Error("'inject' property must be an array of tuples of length 1, 2 or 3.")},transform:e=>e},use:{test:e=>void 0===e||Array.isArray(e)&&e.every((e=>Array.isArray(e)&&2==e.length)),throw:()=>{throw new Error("'use' property must be an array of tuples of length 2.")},transform:e=>e},tags:{test:e=>void 0===e||"string"==typeof e||Array.isArray(e)&&e.every((e=>"string"==typeof e)),throw:()=>{throw new Error("'tags' property must be a string or an array of strings.")},transform:e=>"string"==typeof e?[e]:e},metadata:{test:e=>("object"==typeof e||void 0===e)&&!Array.isArray(e),throw:()=>{throw new Error("'metadata' property must be of type 'object' or 'undefined'.")},transform:e=>e}},m=e=>{const t={...e};for(const n in t){if(!Object.keys(y).includes(n))throw new Error(`Property '${n}' is not a valid assemblage definition property.`);const e=y[n].test,s=y[n].throw,i=y[n].transform;e(t[n])||s(),t[n]=i(t[n])}return t},v=e=>{if(!b(e))throw new Error(`Class '${e.name}' is not an assemblage.`);return p(t.AssemblageDefinition,e)},w=(e,t)=>v(t)[e],x=e=>{const t=()=>r(e[0])&&(e=>"object"==typeof e&&!Array.isArray(e)&&!r(e))(e[1]);return a(h({if:()=>r(e[0])&&r(e[1]),then:()=>({identifier:e[0],concrete:e[1],configuration:{}})}),h({if:()=>t(),then:()=>({identifier:e[0],concrete:e[0],configuration:e[1]}),else:e=>e}))()};var C=function(e){return e.UseIdentifier="assemblage:use.param.value",e}({}),j=function(e){return e.Context="assembler:context.param.index",e.Dispose="assembler:dispose.param.index",e.Definition="assemblage:definition.param.index",e.Configuration="assemblage:configuration.param.index",e.Use="assemblage:use.param.index",e}({});const A=e=>()=>(t,n,s)=>{const i=p(e,t)||[];i.push(s),d(e,i,t)},I=A(j.Context),O=A(j.Configuration),P=A(j.Definition),E=A(j.Dispose),D=e=>{const t=(e=>p(j.Context,e)||[])(e),n=(e=>p(j.Definition,e)||[])(e),s=(e=>p(j.Configuration,e)||[])(e),i=(e=>p(j.Dispose,e)||[])(e),r=(e=>p(j.Use,e)||[])(e);return{context:t,definition:n,configuration:s,dispose:i,use:r}};let $=Symbol.iterator;class S{dispose(){f(this,S)}add(...e){const t=e=>this.collection[e.channel].push(e.listener),n=h({if:()=>2===e.length,then:()=>({channel:e[0],listener:e[1]}),else:()=>{const t=e[0];return{channel:t[0],listener:t[1]}}}),s=h({if:e=>!i(this.collection[e.channel]),then:e=>{this.collection[e.channel]=[],t(e)},else:e=>{t(e)}});return a(n,s)(),this}remove(e,t){const n=t=>this.collection[e].splice(t,1),s=h({if:()=>this.collection[e]&&0===this.collection[e].length,then:()=>delete this.collection[e]}),r=h({if:()=>i(t),then:()=>n(this.collection[e].indexOf(t)),else:()=>delete this.collection[e]}),o=h({if:e=>this.has(e),then:e=>this.collection[e]});return a(o,r,s)(),this}has(...e){return s("string")(e[0])?Object.keys(this.collection).includes(e[0]):!!s("function")(e[0])&&Object.values(this.collection).flat().includes(e[0])}get(...e){return s("string")(e[0])?this.collection[e[0]]:s("function")(e[0])?Object.values(this.collection).flat().filter((t=>t===e[0])):[]}clear(){const e=(e=>t=>{const n=Array.isArray(e)?e=>parseInt(e):e=>e;for(const s in e)t(n(s))})(this.collection),t=e=>l(this.collection[e])((t=>this.remove(e,t)));return e((e=>t(e))),this}get listeners(){return Object.values(this.collection).flat()}get channels(){return Object.keys(this.collection)}get length(){return Object.values(this.collection).flat().length}[$](){let e=-1;const t=this.collection?Object.keys(this.collection):[];return{next:()=>({value:t[++e],done:!(e in t)})}}constructor(){!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(this,"collection",{});return u(this,S)}}class R{}function U(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class _{dispose(){this.listeners.dispose(),this.channels.clear(),f(this,_)}addChannels(...e){return l(e)((e=>{const t=this.cleanChannel(e);if(this.channels.has(t))throw new Error(`Channel '${t}' already exists.`);this.channels.add(t)})),this}removeChannels(...e){return l(e)((e=>{const t=this.cleanChannel(e);"*"!==t&&this.channels.has(t)&&(this.channels.delete(t),this.listeners.remove(t),this.onceListeners.remove(t))})),this}on(e,t){const n=this.cleanChannel(e);if(!this.channels.has(n))throw new Error(`Channel '${n}' was not registered.`);return this.listeners.add(n,t),this}once(e,t){const n=this.cleanChannel(e);if(!this.channels.has(n))throw new Error(`Channel '${n}' was not registered.`);return this.onceListeners.add(n,t),this}off(e,t){const n=this.cleanChannel(e);return this.listeners.remove(n,t),this}emit(e,...t){const n=this.cleanChannel(e);if(this.channels.has(n)){const e=this.onceListeners.get("*")||[],s=this.listeners.get("*")||[],i=this.onceListeners.get(n)||[],r=this.listeners.get(n)||[],o=l(e),c=l(s),a=l(i),h=l(r);o((e=>{this.run(e,...t),this.onceListeners.remove("*",e)})),c((e=>{this.run(e,...t)})),a((e=>{this.run(e,...t),this.onceListeners.remove(n,e)})),h((e=>{this.run(e,...t)}))}return this}run(e,...t){if(o(e)){return e(...t).then((()=>Promise.resolve()))}e(...t)}cleanChannel(e){return c(e,"*")}constructor(...e){U(this,"listeners",new S),U(this,"onceListeners",new S),U(this,"channels",new Set(["*"])),this.addChannels(...e)}}function k(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class M{static of(e,t,n){return new M(e,t,n)}dispose(){this.singletonInstance&&(((e,t)=>{if(e.concrete.prototype instanceof _){const n=t;for(const t of e.events)n.off(t);n.removeChannels(...e.events),e.privateContext.removeChannels(...e.events)}})(this,this.singletonInstance),L(this.singletonInstance,"onDispose",this.publicContext),f(this.singletonInstance,this.concrete)),f(this,M)}build(){if(this.singletonInstance)return this.singletonInstance;const e=(e=>{const t=[],n=g(e.concrete),s=D(e.concrete);let i=0;for(const r of n)if(s.context.includes(i))t.push(e.publicContext),i++;else if(s.configuration.includes(i))t.push(e.configuration),i++;else if(s.definition.includes(i))t.push(e.definition),i++;else if(s.dispose.includes(i))t.push(e.privateContext.dispose),i++;else if(s.use.includes(i)){const n=p(C.UseIdentifier,e.concrete)[i];t.push(e.privateContext.require(n)),i++}else t.push(e.privateContext.require(r)),i++;return t})(this),t=new this.concrete(...e);return((e,t)=>{if(e.concrete.prototype instanceof _){const n=t,s=n.channels;for(const t of e.events)s.has(t)||n.addChannels(t),e.privateContext.events.has(t)||e.privateContext.addChannels(t);for(const i of e.events)t.on(i,((...t)=>{e.privateContext.emit(i,...t)}))}})(this,t),this.isSingleton?(this.singletonInstance=t,this.privateContext.prepareInitHook(t),this.singletonInstance):(L(t,"onInit",this.publicContext),t)}get dependencies(){return this.dependenciesIds}get definition(){return v(this.concrete)||{}}get isSingleton(){return w("singleton",this.concrete)||!0}get singleton(){return this.singletonInstance}get injections(){return w("inject",this.concrete)||[]}get objects(){return w("use",this.concrete)||[]}get tags(){return w("tags",this.concrete)||[]}get events(){return w("events",this.concrete)||[]}constructor(e,t,n){if(k(this,"privateContext",void 0),k(this,"publicContext",void 0),k(this,"identifier",void 0),k(this,"concrete",void 0),k(this,"configuration",void 0),k(this,"dependenciesIds",void 0),k(this,"singletonInstance",void 0),this.privateContext=t,this.publicContext=n,this.dependenciesIds=[],this.identifier=e.identifier,this.concrete=e.concrete,this.configuration=e.configuration,!b(this.concrete))throw new Error(`Class '${this.concrete.name}' is not an Assemblage.`);const s=l(this.injections),i=l(this.objects);s((e=>this.privateContext.register(e))),i((e=>{"string"==typeof e[0]||"symbol"==typeof e[0]?this.privateContext.use(e[0],e[1]):this.privateContext.register(e,!0)})),this.dependenciesIds=(e=>{const t=[],n=g(e),s=D(e);let i=0;for(const r of n)s.context.includes(i)||s.configuration.includes(i)||s.definition.includes(i)||s.dispose.includes(i)||s.use.includes(i)||t.push(r),i++;return t})(this.concrete),e.instance&&(this.singletonInstance=e.instance)}}const L=(e,t,n)=>new Promise((s=>{const i=e[t];if(i){if(o(i))return void i.bind(e)(n).then((()=>{s()}));s(i.bind(e)(n))}}));function q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class N extends _{static build(e){const n=new N;((e,n,s)=>{const i=v(s);i[e]=n;const r=m(i);d(t.AssemblageDefinition,r,s)})("singleton",!0,e);const s=n.register([e]),i=n.require(s.identifier),r=n.initCache.indexOf(i);n.initCache.splice(r,1);for(const t of n.initCache)L(t,"onInit",n.publicContext);return L(i,"onInit",n.publicContext),n.initCache.length=0,i}dispose(){for(const[e,t]of this.injectables)t.dispose();f(this,N)}register(e,t=!1){const n=!0===t?(e=>({identifier:e[0],concrete:e[0],instance:e[1],configuration:{}}))(e):(e=>((e,t)=>(n,...s)=>e[n]?e[n](...s):t?t(n,...s):void 0)({1:()=>(e=>({identifier:e[0],concrete:e[0],configuration:{}}))(e),2:()=>x(e),3:()=>(e=>({identifier:e[0],concrete:e[1],configuration:e[2]}))(e)},(()=>{throw new Error("Injection tuple must be of length 1, 2 or 3.")}))(e.length))(e);if(this.has(n.identifier))throw new Error(`An assemblage is already registered with identifier '${n.identifier.name}'.`);const s=M.of(n,this.privateContext,this.publicContext);return this.injectables.set(s.identifier,s),L(s.concrete,"onRegister",this.publicContext),s}use(e,t){if(this.has(e))throw new Error(`A value is already registered with identifier '${String(e)}'.`);return this.objects.set(e,t),t}prepareInitHook(e){return this.initCache.push(e),this.initCache}has(e){return"string"==typeof e||"symbol"==typeof e?this.objects.has(e):this.injectables.has(e)}require(e){switch(typeof e){case"string":case"symbol":if(!this.objects.has(e))throw new Error(`Injected object with identifier '${String(e)}' has not been registered.`);return this.objects.get(e);default:if(!this.injectables.has(e))throw new Error(`Class with identifier '${e.name}' has not been registered or is a circular dependency.`);return this.injectables.get(e).build()}}tagged(...e){const t=[];for(const n of e)for(const[e,s]of this.injectables)s.tags.includes(n)&&t.push(s.build());return t}get size(){return this.injectables.size}constructor(){super(),q(this,"injectables",new Map),q(this,"objects",new Map),q(this,"initCache",[]),q(this,"privateContext",void 0),q(this,"publicContext",void 0),this.publicContext={has:this.has.bind(this),require:this.require.bind(this),tagged:this.tagged.bind(this),on:this.on.bind(this),once:this.once.bind(this),off:this.off.bind(this),events:this.channels},this.privateContext={...this.publicContext,register:this.register.bind(this),use:this.use.bind(this),prepareInitHook:this.prepareInitHook.bind(this),emit:this.emit.bind(this),addChannels:this.addChannels.bind(this),removeChannels:this.removeChannels.bind(this),dispose:this.dispose.bind(this)}}}exports.AbstractAssemblage=class{static onRegister(e){}},exports.AbstractAssembler=class extends R{},exports.AbstractEventManager=R,exports.Assemblage=n=>{const s=n?m(n):{};return n=>(d(e.IsAssemblage,!0,n),d(t.AssemblageDefinition,s,n),n)},exports.Assembler=N,exports.Await=(e,t=25)=>(n,s,i)=>{const r=i.value;i.value=async function(){return new Promise((n=>{if(this[e])r.apply(this),n();else{const s=setInterval((()=>{this[e]&&(clearInterval(s),r.apply(this),n())}),t)}}))}},exports.Configuration=O,exports.Context=I,exports.Definition=P,exports.Dispose=E,exports.EventManager=_,exports.ReflectParamIndex=j,exports.ReflectParamValue=C,exports.Use=e=>(t,n,s)=>{const i=p(j.Use,t)||[];i.push(s),d(j.Use,i,t);const r=p(C.UseIdentifier,t)||{};r[s]=e,d(C.UseIdentifier,r,t)},exports.getDecoratedParametersIndexes=D;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var e=function(e){return e.IsAssemblage="is_assemblage",e}({}),t=function(e){return e.AssemblageDefinition="assemblage:definition.value",e}({});const n=(...e)=>{},s=(...e)=>t=>{if(e.includes(typeof t))return typeof t},i=e=>!(e=>void 0===e)(e)&&!(e=>null===e)(e),r=e=>e&&"function"==typeof e&&void 0!==e.constructor,o=e=>"function"==typeof e&&"AsyncFunction"===e.constructor.name,c=(e,...t)=>{t.map(((e,n)=>{const s=/\S/.test(e);return s&&(t[n]=t[n].trim()),s?-1:n})).filter((e=>e>=0)).every((e=>{t[e]=" ",((e,t,n)=>{const s=e[t];e.splice(t,1),e.splice(n,0,s)})(t,e,t.length-1)})),t=(e=>Array.from(new Set(e)))(t);const n=new RegExp(`[^A-Za-zÀ-ÖØ-öø-ÿ0-9${t.join("")}]`,"gi");return e.replace(n,"")},a=(...e)=>t=>e.reduce(((e,t)=>t(e)),t),h=e=>t=>e.if(t)?e.then(t):e.else?e.else(t):void 0,l=e=>t=>{const s=Array.isArray(e)?e=>parseInt(e):n;for(const[n,i]of Object.entries(e))t(i,s(n))},u=(e,t)=>{const n=new Proxy(e,{get:function(n,s){return s===Symbol.iterator?n[Symbol.iterator].bind(n):((e,t)=>[...Object.getOwnPropertyNames(t.prototype),...Object.getOwnPropertyNames(Object.getPrototypeOf(e)),...Object.getOwnPropertyNames(e)])(e,t).includes(s)?n[s]:n.collection[s]},set:function(e,t,n){return Reflect.set(e,t,n)}});return n},f=(e,t)=>{const n=e;for(const s of((e,t)=>[...Object.getOwnPropertyNames(t.prototype),...Object.getOwnPropertyNames(Object.getPrototypeOf(e)),...Object.getOwnPropertyNames(e)])(e,t))delete n[s]},d=(e,t,n)=>{Reflect.defineMetadata(`__${e}__`,t,n)},p=(e,t)=>Reflect.getOwnMetadata(`__${e}__`,t),g=e=>Reflect.getMetadata("design:paramtypes",e)||[],b=t=>p(e.IsAssemblage,t)||!1,m={singleton:{test:e=>"boolean"==typeof e||void 0===e,throw:()=>{throw new Error("'singleton' property must be of type 'boolean' or 'undefined'.")},transform:e=>void 0===e},events:{test:e=>void 0===e||Array.isArray(e)&&e.every((e=>"string"==typeof e)),throw:()=>{throw new Error("'events' property must be an array of strings or 'undefined'.")},transform:e=>e},inject:{test:e=>void 0===e||Array.isArray(e)&&e.every((e=>Array.isArray(e)&&e.length>=1&&e.length<=3)),throw:()=>{throw new Error("'inject' property must be an array of tuples of length 1, 2 or 3.")},transform:e=>e},use:{test:e=>void 0===e||Array.isArray(e)&&e.every((e=>Array.isArray(e)&&2==e.length)),throw:()=>{throw new Error("'use' property must be an array of tuples of length 2.")},transform:e=>e},tags:{test:e=>void 0===e||"string"==typeof e||Array.isArray(e)&&e.every((e=>"string"==typeof e)),throw:()=>{throw new Error("'tags' property must be a string or an array of strings.")},transform:e=>"string"==typeof e?[e]:e},metadata:{test:e=>("object"==typeof e||void 0===e)&&!Array.isArray(e),throw:()=>{throw new Error("'metadata' property must be of type 'object' or 'undefined'.")},transform:e=>e}},y=e=>{const t={...e};for(const n in t){if(!Object.keys(m).includes(n))throw new Error(`Property '${n}' is not a valid assemblage definition property.`);const e=m[n].test,s=m[n].throw,i=m[n].transform;e(t[n])||s(),t[n]=i(t[n])}return t},v=e=>{if(!b(e))throw new Error(`Class '${e.name}' is not an assemblage.`);return p(t.AssemblageDefinition,e)},w=(e,t)=>v(t)[e],x=e=>{const t=()=>r(e[0])&&(e=>"object"==typeof e&&!Array.isArray(e)&&!r(e))(e[1]);return a(h({if:()=>r(e[0])&&r(e[1]),then:()=>({identifier:e[0],concrete:e[1],configuration:{}})}),h({if:()=>t(),then:()=>({identifier:e[0],concrete:e[0],configuration:e[1]}),else:e=>e}))()};let C=Symbol.iterator;class j{dispose(){f(this,j)}add(...e){const t=e=>this.collection[e.channel].push(e.listener),n=h({if:()=>2===e.length,then:()=>({channel:e[0],listener:e[1]}),else:()=>{const t=e[0];return{channel:t[0],listener:t[1]}}}),s=h({if:e=>!i(this.collection[e.channel]),then:e=>{this.collection[e.channel]=[],t(e)},else:e=>{t(e)}});return a(n,s)(),this}remove(e,t){const n=t=>this.collection[e].splice(t,1),s=h({if:()=>this.collection[e]&&0===this.collection[e].length,then:()=>delete this.collection[e]}),r=h({if:()=>i(t),then:()=>n(this.collection[e].indexOf(t)),else:()=>delete this.collection[e]}),o=h({if:e=>this.has(e),then:e=>this.collection[e]});return a(o,r,s)(),this}has(...e){return s("string")(e[0])?Object.keys(this.collection).includes(e[0]):!!s("function")(e[0])&&Object.values(this.collection).flat().includes(e[0])}get(...e){return s("string")(e[0])?this.collection[e[0]]:s("function")(e[0])?Object.values(this.collection).flat().filter((t=>t===e[0])):[]}clear(){const e=(e=>t=>{const n=Array.isArray(e)?e=>parseInt(e):e=>e;for(const s in e)t(n(s))})(this.collection),t=e=>l(this.collection[e])((t=>this.remove(e,t)));return e((e=>t(e))),this}get listeners(){return Object.values(this.collection).flat()}get channels(){return Object.keys(this.collection)}get length(){return Object.values(this.collection).flat().length}[C](){let e=-1;const t=this.collection?Object.keys(this.collection):[];return{next:()=>({value:t[++e],done:!(e in t)})}}constructor(){!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(this,"collection",{});return u(this,j)}}class A{}function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class O{dispose(){this.listeners.dispose(),this.channels.clear(),f(this,O)}addChannels(...e){return l(e)((e=>{const t=this.cleanChannel(e);if(this.channels.has(t))throw new Error(`Channel '${t}' already exists.`);this.channels.add(t)})),this}removeChannels(...e){return l(e)((e=>{const t=this.cleanChannel(e);"*"!==t&&this.channels.has(t)&&(this.channels.delete(t),this.listeners.remove(t),this.onceListeners.remove(t))})),this}on(e,t){const n=this.cleanChannel(e);if(!this.channels.has(n))throw new Error(`Channel '${n}' was not registered.`);return this.listeners.add(n,t),this}once(e,t){const n=this.cleanChannel(e);if(!this.channels.has(n))throw new Error(`Channel '${n}' was not registered.`);return this.onceListeners.add(n,t),this}off(e,t){const n=this.cleanChannel(e);return this.listeners.remove(n,t),this}emit(e,...t){const n=this.cleanChannel(e);if(this.channels.has(n)){const e=this.onceListeners.get("*")||[],s=this.listeners.get("*")||[],i=this.onceListeners.get(n)||[],r=this.listeners.get(n)||[],o=l(e),c=l(s),a=l(i),h=l(r);o((e=>{this.run(e,...t),this.onceListeners.remove("*",e)})),c((e=>{this.run(e,...t)})),a((e=>{this.run(e,...t),this.onceListeners.remove(n,e)})),h((e=>{this.run(e,...t)}))}return this}run(e,...t){if(o(e)){return e(...t).then((()=>Promise.resolve()))}e(...t)}cleanChannel(e){return c(e,"*")}constructor(...e){I(this,"listeners",new j),I(this,"onceListeners",new j),I(this,"channels",new Set(["*"])),this.addChannels(...e)}}var P=function(e){return e.UseIdentifier="assemblage:use.param.value",e}({}),E=function(e){return e.Context="assembler:context.param.index",e.Dispose="assembler:dispose.param.index",e.Definition="assemblage:definition.param.index",e.Configuration="assemblage:configuration.param.index",e.Use="assemblage:use.param.index",e}({});const D=e=>()=>(t,n,s)=>{const i=p(e,t)||[];i.push(s),d(e,i,t)},$=D(E.Context),S=D(E.Configuration),R=D(E.Definition),U=D(E.Dispose),_=e=>{const t=(e=>p(E.Context,e)||[])(e),n=(e=>p(E.Definition,e)||[])(e),s=(e=>p(E.Configuration,e)||[])(e),i=(e=>p(E.Dispose,e)||[])(e),r=(e=>p(E.Use,e)||[])(e);return{context:t,definition:n,configuration:s,dispose:i,use:r}};function k(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class M{static of(e,t,n){return new M(e,t,n)}dispose(){this.singletonInstance&&(((e,t)=>{if(e.concrete.prototype instanceof O){const n=t;for(const t of e.events)n.off(t);n.removeChannels(...e.events),e.privateContext.removeChannels(...e.events)}})(this,this.singletonInstance),L(this.singletonInstance,"onDispose",this.publicContext),f(this.singletonInstance,this.concrete)),f(this,M)}build(){if(this.singletonInstance)return this.singletonInstance;const e=(e=>{const t=[],n=g(e.concrete),s=_(e.concrete);let i=0;for(const r of n)if(s.context.includes(i))t.push(e.publicContext),i++;else if(s.configuration.includes(i))t.push(e.configuration),i++;else if(s.definition.includes(i))t.push(e.definition),i++;else if(s.dispose.includes(i))t.push(e.privateContext.dispose),i++;else if(s.use.includes(i)){const n=p(P.UseIdentifier,e.concrete)[i];t.push(e.privateContext.require(n)),i++}else t.push(e.privateContext.require(r)),i++;return t})(this),t=new this.concrete(...e);return((e,t)=>{if(e.concrete.prototype instanceof O){const n=t,s=n.channels;for(const t of e.events)s.has(t)||n.addChannels(t),e.privateContext.events.has(t)||e.privateContext.addChannels(t);for(const i of e.events)t.on(i,((...t)=>{e.privateContext.emit(i,...t)}))}})(this,t),this.isSingleton?(this.singletonInstance=t,this.privateContext.prepareInitHook(t),this.singletonInstance):(L(t,"onInit",this.publicContext),t)}get dependencies(){return this.dependenciesIds}get definition(){return v(this.concrete)||{}}get isSingleton(){return w("singleton",this.concrete)||!0}get singleton(){return this.singletonInstance}get injections(){return w("inject",this.concrete)||[]}get objects(){return w("use",this.concrete)||[]}get tags(){return w("tags",this.concrete)||[]}get events(){return w("events",this.concrete)||[]}constructor(e,t,n){if(k(this,"privateContext",void 0),k(this,"publicContext",void 0),k(this,"identifier",void 0),k(this,"concrete",void 0),k(this,"configuration",void 0),k(this,"dependenciesIds",void 0),k(this,"singletonInstance",void 0),this.privateContext=t,this.publicContext=n,this.dependenciesIds=[],this.identifier=e.identifier,this.concrete=e.concrete,this.configuration=e.configuration,!b(this.concrete))throw new Error(`Class '${this.concrete.name}' is not an Assemblage.`);const s=l(this.injections),i=l(this.objects);s((e=>this.privateContext.register(e))),i((e=>{"string"==typeof e[0]||"symbol"==typeof e[0]?this.privateContext.use(e[0],e[1]):this.privateContext.register(e,!0)})),this.dependenciesIds=(e=>{const t=[],n=g(e),s=_(e);let i=0;for(const r of n)s.context.includes(i)||s.configuration.includes(i)||s.definition.includes(i)||s.dispose.includes(i)||s.use.includes(i)||t.push(r),i++;return t})(this.concrete),e.instance&&(this.singletonInstance=e.instance)}}const L=(e,t,n)=>new Promise((s=>{const i=e[t];if(i){if(o(i))return void i.bind(e)(n).then((()=>{s()}));s(i.bind(e)(n))}}));function q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class N extends O{static build(e){const n=new N;((e,n,s)=>{const i=v(s);i[e]=n;const r=y(i);d(t.AssemblageDefinition,r,s)})("singleton",!0,e);const s=n.register([e]),i=n.require(s.identifier),r=n.initCache.indexOf(i);n.initCache.splice(r,1);for(const t of n.initCache)L(t,"onInit",n.publicContext);return L(i,"onInit",n.publicContext),n.initCache.length=0,i}dispose(){for(const[e,t]of this.injectables)t.dispose();f(this,N)}register(e,t=!1){const n=!0===t?(e=>({identifier:e[0],concrete:e[0],instance:e[1],configuration:{}}))(e):(e=>((e,t)=>(n,...s)=>e[n]?e[n](...s):t?t(n,...s):void 0)({1:()=>(e=>({identifier:e[0],concrete:e[0],configuration:{}}))(e),2:()=>x(e),3:()=>(e=>({identifier:e[0],concrete:e[1],configuration:e[2]}))(e)},(()=>{throw new Error("Injection tuple must be of length 1, 2 or 3.")}))(e.length))(e);if(this.has(n.identifier))throw new Error(`An assemblage is already registered with identifier '${n.identifier.name}'.`);const s=M.of(n,this.privateContext,this.publicContext);return this.injectables.set(s.identifier,s),L(s.concrete,"onRegister",this.publicContext),s}use(e,t){if(this.has(e))throw new Error(`A value is already registered with identifier '${String(e)}'.`);return this.objects.set(e,t),t}prepareInitHook(e){return this.initCache.push(e),this.initCache}has(e){return"string"==typeof e||"symbol"==typeof e?this.objects.has(e):this.injectables.has(e)}require(e){switch(typeof e){case"string":case"symbol":if(!this.objects.has(e))throw new Error(`Injected object with identifier '${String(e)}' has not been registered.`);return this.objects.get(e);default:if(!this.injectables.has(e))throw new Error(`Class with identifier '${e.name}' has not been registered or is a circular dependency.`);return this.injectables.get(e).build()}}tagged(...e){const t=[];for(const n of e)for(const[e,s]of this.injectables)s.tags.includes(n)&&t.push(s.build());return t}get size(){return this.injectables.size}constructor(){super(),q(this,"injectables",new Map),q(this,"objects",new Map),q(this,"initCache",[]),q(this,"privateContext",void 0),q(this,"publicContext",void 0),this.publicContext={has:this.has.bind(this),require:this.require.bind(this),tagged:this.tagged.bind(this),on:this.on.bind(this),once:this.once.bind(this),off:this.off.bind(this),events:this.channels},this.privateContext={...this.publicContext,register:this.register.bind(this),use:this.use.bind(this),prepareInitHook:this.prepareInitHook.bind(this),emit:this.emit.bind(this),addChannels:this.addChannels.bind(this),removeChannels:this.removeChannels.bind(this),dispose:this.dispose.bind(this)}}}exports.AbstractAssemblage=class{static onRegister(e){}},exports.AbstractAssembler=class extends A{},exports.AbstractEventManager=A,exports.Assemblage=n=>{const s=n?y(n):{};return n=>(d(e.IsAssemblage,!0,n),d(t.AssemblageDefinition,s,n),n)},exports.Assembler=N,exports.Await=(e,t=25)=>(n,s,i)=>{const r=i.value;i.value=async function(){return new Promise((n=>{if(this[e])r.apply(this),n();else{const s=setInterval((()=>{this[e]&&(clearInterval(s),r.apply(this),n())}),t)}}))}},exports.Configuration=S,exports.Context=$,exports.Definition=R,exports.Dispose=U,exports.EventManager=O,exports.ReflectParamIndex=E,exports.ReflectParamValue=P,exports.Use=e=>(t,n,s)=>{const i=p(E.Use,t)||[];i.push(s),d(E.Use,i,t);const r=p(P.UseIdentifier,t)||{};r[s]=e,d(P.UseIdentifier,r,t)},exports.getDecoratedParametersIndexes=_,exports.isAssemblage=b;
|
package/dist/index.mjs
CHANGED
|
@@ -262,149 +262,7 @@ const Assemblage = (m)=>{
|
|
|
262
262
|
};
|
|
263
263
|
};
|
|
264
264
|
|
|
265
|
-
|
|
266
|
-
return (n, s, a)=>{
|
|
267
|
-
const i = a.value;
|
|
268
|
-
a.value = async function() {
|
|
269
|
-
return new Promise((n)=>{
|
|
270
|
-
if (this[t]) {
|
|
271
|
-
i.apply(this);
|
|
272
|
-
n();
|
|
273
|
-
} else {
|
|
274
|
-
const s = setInterval(()=>{
|
|
275
|
-
if (this[t]) {
|
|
276
|
-
clearInterval(s);
|
|
277
|
-
i.apply(this);
|
|
278
|
-
n();
|
|
279
|
-
}
|
|
280
|
-
}, e);
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
};
|
|
284
|
-
};
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
var ReflectParamValue = /*#__PURE__*/ function(e) {
|
|
288
|
-
e["UseIdentifier"] = "assemblage:use.param.value";
|
|
289
|
-
return e;
|
|
290
|
-
}({});
|
|
291
|
-
var ReflectParamIndex = /*#__PURE__*/ function(e) {
|
|
292
|
-
e["Context"] = "assembler:context.param.index";
|
|
293
|
-
e["Dispose"] = "assembler:dispose.param.index";
|
|
294
|
-
e["Definition"] = "assemblage:definition.param.index";
|
|
295
|
-
e["Configuration"] = "assemblage:configuration.param.index";
|
|
296
|
-
e["Use"] = "assemblage:use.param.index";
|
|
297
|
-
return e;
|
|
298
|
-
}({});
|
|
299
|
-
|
|
300
|
-
const i = (t)=>()=>{
|
|
301
|
-
return (i, s, r)=>{
|
|
302
|
-
const c = getOwnCustomMetadata(t, i) || [];
|
|
303
|
-
c.push(r);
|
|
304
|
-
defineCustomMetadata(t, c, i);
|
|
305
|
-
};
|
|
306
|
-
};
|
|
307
|
-
const s$1 = i(ReflectParamIndex.Context);
|
|
308
|
-
const r$1 = i(ReflectParamIndex.Configuration);
|
|
309
|
-
const c$1 = i(ReflectParamIndex.Definition);
|
|
310
|
-
const e$4 = i(ReflectParamIndex.Dispose);
|
|
311
|
-
|
|
312
|
-
const Use = (n)=>{
|
|
313
|
-
return (r, i, m)=>{
|
|
314
|
-
const c = getOwnCustomMetadata(ReflectParamIndex.Use, r) || [];
|
|
315
|
-
c.push(m);
|
|
316
|
-
defineCustomMetadata(ReflectParamIndex.Use, c, r);
|
|
317
|
-
const U = getOwnCustomMetadata(ReflectParamValue.UseIdentifier, r) || {};
|
|
318
|
-
U[m] = n;
|
|
319
|
-
defineCustomMetadata(ReflectParamValue.UseIdentifier, U, r);
|
|
320
|
-
};
|
|
321
|
-
};
|
|
322
|
-
|
|
323
|
-
const o = (o)=>{
|
|
324
|
-
return getOwnCustomMetadata(ReflectParamIndex.Context, o) || [];
|
|
325
|
-
};
|
|
326
|
-
const r = (o)=>{
|
|
327
|
-
return getOwnCustomMetadata(ReflectParamIndex.Configuration, o) || [];
|
|
328
|
-
};
|
|
329
|
-
const e$3 = (o)=>{
|
|
330
|
-
return getOwnCustomMetadata(ReflectParamIndex.Definition, o) || [];
|
|
331
|
-
};
|
|
332
|
-
const s = (o)=>{
|
|
333
|
-
return getOwnCustomMetadata(ReflectParamIndex.Dispose, o) || [];
|
|
334
|
-
};
|
|
335
|
-
const c = (o)=>{
|
|
336
|
-
return getOwnCustomMetadata(ReflectParamIndex.Use, o) || [];
|
|
337
|
-
};
|
|
338
|
-
const getDecoratedParametersIndexes = (t)=>{
|
|
339
|
-
const n = o(t);
|
|
340
|
-
const i = e$3(t);
|
|
341
|
-
const a = r(t);
|
|
342
|
-
const u = s(t);
|
|
343
|
-
const m = c(t);
|
|
344
|
-
return {
|
|
345
|
-
context: n,
|
|
346
|
-
definition: i,
|
|
347
|
-
configuration: a,
|
|
348
|
-
dispose: u,
|
|
349
|
-
use: m
|
|
350
|
-
};
|
|
351
|
-
};
|
|
352
|
-
|
|
353
|
-
const resolveParameters = (i)=>{
|
|
354
|
-
const c = [];
|
|
355
|
-
const s = getParamTypes(i.concrete);
|
|
356
|
-
const u = getDecoratedParametersIndexes(i.concrete);
|
|
357
|
-
let r = 0;
|
|
358
|
-
for (const n of s){
|
|
359
|
-
if (u.context.includes(r)) {
|
|
360
|
-
c.push(i.publicContext);
|
|
361
|
-
r++;
|
|
362
|
-
continue;
|
|
363
|
-
}
|
|
364
|
-
if (u.configuration.includes(r)) {
|
|
365
|
-
c.push(i.configuration);
|
|
366
|
-
r++;
|
|
367
|
-
continue;
|
|
368
|
-
}
|
|
369
|
-
if (u.definition.includes(r)) {
|
|
370
|
-
c.push(i.definition);
|
|
371
|
-
r++;
|
|
372
|
-
continue;
|
|
373
|
-
}
|
|
374
|
-
if (u.dispose.includes(r)) {
|
|
375
|
-
c.push(i.privateContext.dispose);
|
|
376
|
-
r++;
|
|
377
|
-
continue;
|
|
378
|
-
}
|
|
379
|
-
if (u.use.includes(r)) {
|
|
380
|
-
const n = getOwnCustomMetadata(ReflectParamValue.UseIdentifier, i.concrete);
|
|
381
|
-
const t = n[r];
|
|
382
|
-
c.push(i.privateContext.require(t));
|
|
383
|
-
r++;
|
|
384
|
-
continue;
|
|
385
|
-
}
|
|
386
|
-
c.push(i.privateContext.require(n));
|
|
387
|
-
r++;
|
|
388
|
-
}
|
|
389
|
-
return c;
|
|
390
|
-
};
|
|
391
|
-
const resolveDependencies = (e)=>{
|
|
392
|
-
const o = [];
|
|
393
|
-
const i = getParamTypes(e);
|
|
394
|
-
const c = getDecoratedParametersIndexes(e);
|
|
395
|
-
let s = 0;
|
|
396
|
-
for (const e of i){
|
|
397
|
-
if (c.context.includes(s) || c.configuration.includes(s) || c.definition.includes(s) || c.dispose.includes(s) || c.use.includes(s)) {
|
|
398
|
-
s++;
|
|
399
|
-
continue;
|
|
400
|
-
}
|
|
401
|
-
o.push(e);
|
|
402
|
-
s++;
|
|
403
|
-
}
|
|
404
|
-
return o;
|
|
405
|
-
};
|
|
406
|
-
|
|
407
|
-
function e$2(e, t, n) {
|
|
265
|
+
function e$4(e, t, n) {
|
|
408
266
|
if (t in e) {
|
|
409
267
|
Object.defineProperty(e, t, {
|
|
410
268
|
value: n,
|
|
@@ -513,7 +371,7 @@ class ListenerCollection {
|
|
|
513
371
|
};
|
|
514
372
|
}
|
|
515
373
|
constructor(){
|
|
516
|
-
e$
|
|
374
|
+
e$4(this, "collection", {});
|
|
517
375
|
const t = proxifyIterable(this, ListenerCollection);
|
|
518
376
|
return t;
|
|
519
377
|
}
|
|
@@ -522,7 +380,7 @@ class ListenerCollection {
|
|
|
522
380
|
class AbstractEventManager {
|
|
523
381
|
}
|
|
524
382
|
|
|
525
|
-
function e$
|
|
383
|
+
function e$3(e, n, s) {
|
|
526
384
|
if (n in e) {
|
|
527
385
|
Object.defineProperty(e, n, {
|
|
528
386
|
value: s,
|
|
@@ -624,9 +482,9 @@ class EventManager {
|
|
|
624
482
|
return onlyAlphanumeric(e, '*');
|
|
625
483
|
}
|
|
626
484
|
constructor(...n){
|
|
627
|
-
e$
|
|
628
|
-
e$
|
|
629
|
-
e$
|
|
485
|
+
e$3(this, "listeners", new ListenerCollection());
|
|
486
|
+
e$3(this, "onceListeners", new ListenerCollection());
|
|
487
|
+
e$3(this, "channels", new Set([
|
|
630
488
|
'*'
|
|
631
489
|
]));
|
|
632
490
|
this.addChannels(...n);
|
|
@@ -661,6 +519,148 @@ const unregisterEvents = (t, n)=>{
|
|
|
661
519
|
}
|
|
662
520
|
};
|
|
663
521
|
|
|
522
|
+
const Await = (t, e = 25)=>{
|
|
523
|
+
return (n, s, a)=>{
|
|
524
|
+
const i = a.value;
|
|
525
|
+
a.value = async function() {
|
|
526
|
+
return new Promise((n)=>{
|
|
527
|
+
if (this[t]) {
|
|
528
|
+
i.apply(this);
|
|
529
|
+
n();
|
|
530
|
+
} else {
|
|
531
|
+
const s = setInterval(()=>{
|
|
532
|
+
if (this[t]) {
|
|
533
|
+
clearInterval(s);
|
|
534
|
+
i.apply(this);
|
|
535
|
+
n();
|
|
536
|
+
}
|
|
537
|
+
}, e);
|
|
538
|
+
}
|
|
539
|
+
});
|
|
540
|
+
};
|
|
541
|
+
};
|
|
542
|
+
};
|
|
543
|
+
|
|
544
|
+
var ReflectParamValue = /*#__PURE__*/ function(e) {
|
|
545
|
+
e["UseIdentifier"] = "assemblage:use.param.value";
|
|
546
|
+
return e;
|
|
547
|
+
}({});
|
|
548
|
+
var ReflectParamIndex = /*#__PURE__*/ function(e) {
|
|
549
|
+
e["Context"] = "assembler:context.param.index";
|
|
550
|
+
e["Dispose"] = "assembler:dispose.param.index";
|
|
551
|
+
e["Definition"] = "assemblage:definition.param.index";
|
|
552
|
+
e["Configuration"] = "assemblage:configuration.param.index";
|
|
553
|
+
e["Use"] = "assemblage:use.param.index";
|
|
554
|
+
return e;
|
|
555
|
+
}({});
|
|
556
|
+
|
|
557
|
+
const i = (t)=>()=>{
|
|
558
|
+
return (i, s, r)=>{
|
|
559
|
+
const c = getOwnCustomMetadata(t, i) || [];
|
|
560
|
+
c.push(r);
|
|
561
|
+
defineCustomMetadata(t, c, i);
|
|
562
|
+
};
|
|
563
|
+
};
|
|
564
|
+
const s$1 = i(ReflectParamIndex.Context);
|
|
565
|
+
const r$1 = i(ReflectParamIndex.Configuration);
|
|
566
|
+
const c$1 = i(ReflectParamIndex.Definition);
|
|
567
|
+
const e$2 = i(ReflectParamIndex.Dispose);
|
|
568
|
+
|
|
569
|
+
const Use = (n)=>{
|
|
570
|
+
return (r, i, m)=>{
|
|
571
|
+
const c = getOwnCustomMetadata(ReflectParamIndex.Use, r) || [];
|
|
572
|
+
c.push(m);
|
|
573
|
+
defineCustomMetadata(ReflectParamIndex.Use, c, r);
|
|
574
|
+
const U = getOwnCustomMetadata(ReflectParamValue.UseIdentifier, r) || {};
|
|
575
|
+
U[m] = n;
|
|
576
|
+
defineCustomMetadata(ReflectParamValue.UseIdentifier, U, r);
|
|
577
|
+
};
|
|
578
|
+
};
|
|
579
|
+
|
|
580
|
+
const o = (o)=>{
|
|
581
|
+
return getOwnCustomMetadata(ReflectParamIndex.Context, o) || [];
|
|
582
|
+
};
|
|
583
|
+
const r = (o)=>{
|
|
584
|
+
return getOwnCustomMetadata(ReflectParamIndex.Configuration, o) || [];
|
|
585
|
+
};
|
|
586
|
+
const e$1 = (o)=>{
|
|
587
|
+
return getOwnCustomMetadata(ReflectParamIndex.Definition, o) || [];
|
|
588
|
+
};
|
|
589
|
+
const s = (o)=>{
|
|
590
|
+
return getOwnCustomMetadata(ReflectParamIndex.Dispose, o) || [];
|
|
591
|
+
};
|
|
592
|
+
const c = (o)=>{
|
|
593
|
+
return getOwnCustomMetadata(ReflectParamIndex.Use, o) || [];
|
|
594
|
+
};
|
|
595
|
+
const getDecoratedParametersIndexes = (t)=>{
|
|
596
|
+
const n = o(t);
|
|
597
|
+
const i = e$1(t);
|
|
598
|
+
const m = r(t);
|
|
599
|
+
const u = s(t);
|
|
600
|
+
const a = c(t);
|
|
601
|
+
return {
|
|
602
|
+
context: n,
|
|
603
|
+
definition: i,
|
|
604
|
+
configuration: m,
|
|
605
|
+
dispose: u,
|
|
606
|
+
use: a
|
|
607
|
+
};
|
|
608
|
+
};
|
|
609
|
+
|
|
610
|
+
const resolveParameters = (i)=>{
|
|
611
|
+
const c = [];
|
|
612
|
+
const s = getParamTypes(i.concrete);
|
|
613
|
+
const u = getDecoratedParametersIndexes(i.concrete);
|
|
614
|
+
let r = 0;
|
|
615
|
+
for (const n of s){
|
|
616
|
+
if (u.context.includes(r)) {
|
|
617
|
+
c.push(i.publicContext);
|
|
618
|
+
r++;
|
|
619
|
+
continue;
|
|
620
|
+
}
|
|
621
|
+
if (u.configuration.includes(r)) {
|
|
622
|
+
c.push(i.configuration);
|
|
623
|
+
r++;
|
|
624
|
+
continue;
|
|
625
|
+
}
|
|
626
|
+
if (u.definition.includes(r)) {
|
|
627
|
+
c.push(i.definition);
|
|
628
|
+
r++;
|
|
629
|
+
continue;
|
|
630
|
+
}
|
|
631
|
+
if (u.dispose.includes(r)) {
|
|
632
|
+
c.push(i.privateContext.dispose);
|
|
633
|
+
r++;
|
|
634
|
+
continue;
|
|
635
|
+
}
|
|
636
|
+
if (u.use.includes(r)) {
|
|
637
|
+
const n = getOwnCustomMetadata(ReflectParamValue.UseIdentifier, i.concrete);
|
|
638
|
+
const t = n[r];
|
|
639
|
+
c.push(i.privateContext.require(t));
|
|
640
|
+
r++;
|
|
641
|
+
continue;
|
|
642
|
+
}
|
|
643
|
+
c.push(i.privateContext.require(n));
|
|
644
|
+
r++;
|
|
645
|
+
}
|
|
646
|
+
return c;
|
|
647
|
+
};
|
|
648
|
+
const resolveDependencies = (e)=>{
|
|
649
|
+
const o = [];
|
|
650
|
+
const i = getParamTypes(e);
|
|
651
|
+
const c = getDecoratedParametersIndexes(e);
|
|
652
|
+
let s = 0;
|
|
653
|
+
for (const e of i){
|
|
654
|
+
if (c.context.includes(s) || c.configuration.includes(s) || c.definition.includes(s) || c.dispose.includes(s) || c.use.includes(s)) {
|
|
655
|
+
s++;
|
|
656
|
+
continue;
|
|
657
|
+
}
|
|
658
|
+
o.push(e);
|
|
659
|
+
s++;
|
|
660
|
+
}
|
|
661
|
+
return o;
|
|
662
|
+
};
|
|
663
|
+
|
|
664
664
|
function t(t, e, n) {
|
|
665
665
|
if (e in t) {
|
|
666
666
|
Object.defineProperty(t, e, {
|
|
@@ -894,4 +894,4 @@ class Assembler extends EventManager {
|
|
|
894
894
|
class AbstractAssembler extends AbstractEventManager {
|
|
895
895
|
}
|
|
896
896
|
|
|
897
|
-
export { AbstractAssemblage, AbstractAssembler, AbstractEventManager, Assemblage, Assembler, Await, r$1 as Configuration, s$1 as Context, c$1 as Definition, e$
|
|
897
|
+
export { AbstractAssemblage, AbstractAssembler, AbstractEventManager, Assemblage, Assembler, Await, r$1 as Configuration, s$1 as Context, c$1 as Definition, e$2 as Dispose, EventManager, ReflectParamIndex, ReflectParamValue, Use, getDecoratedParametersIndexes, isAssemblage };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "assemblerjs",
|
|
3
3
|
"description": "A general purpose and zero-dependency Dependency Injection library for node and browser.",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.2",
|
|
5
5
|
"author": "Benoît LAHOZ <info@benoitlahoz.io>",
|
|
6
6
|
"bugs": "https://github.com/benoitlahoz/assemblerjs/issues",
|
|
7
7
|
"devDependencies": {
|