assemblerjs 0.9.3 → 0.9.5
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 +16 -2
- package/dist/index.js +1 -1
- package/dist/index.mjs +65 -32
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -379,6 +379,11 @@ export declare class Assembler extends EventManager implements AbstractAssembler
|
|
|
379
379
|
*/
|
|
380
380
|
export declare const decorateAssemblage: <T>(target: Concrete<T>, definition?: AssemblageDefinition) => Concrete<T>;
|
|
381
381
|
|
|
382
|
+
/**
|
|
383
|
+
* Decorator as a wrapper function.
|
|
384
|
+
*/
|
|
385
|
+
export declare const decorateGlobal: (identifier: string | symbol, target: any, index: number) => void;
|
|
386
|
+
|
|
382
387
|
/**
|
|
383
388
|
* Decorator as a wrapper function.
|
|
384
389
|
*/
|
|
@@ -424,6 +429,12 @@ export declare class Assembler extends EventManager implements AbstractAssembler
|
|
|
424
429
|
|
|
425
430
|
export declare const getDecoratedParametersIndexes: <T>(target: Concrete<T>) => ParametersDecoratorsIndexes;
|
|
426
431
|
|
|
432
|
+
/**
|
|
433
|
+
* Injects an object passed with `string` or `symbol` identifier.
|
|
434
|
+
*/
|
|
435
|
+
declare const Global_2: (identifier: string | symbol) => ParameterDecorator;
|
|
436
|
+
export { Global_2 as Global }
|
|
437
|
+
|
|
427
438
|
/**
|
|
428
439
|
* An identifier can be an abstract or a concrete class.
|
|
429
440
|
*/
|
|
@@ -616,6 +627,7 @@ export declare class Assembler extends EventManager implements AbstractAssembler
|
|
|
616
627
|
Configuration: number[];
|
|
617
628
|
Dispose: number[];
|
|
618
629
|
Use: number[];
|
|
630
|
+
Global: number[];
|
|
619
631
|
}
|
|
620
632
|
|
|
621
633
|
/**
|
|
@@ -626,14 +638,16 @@ export declare class Assembler extends EventManager implements AbstractAssembler
|
|
|
626
638
|
Dispose = "assembler:dispose.param.index",
|
|
627
639
|
Definition = "assemblage:definition.param.index",
|
|
628
640
|
Configuration = "assemblage:configuration.param.index",
|
|
629
|
-
Use = "assemblage:use.param.index"
|
|
641
|
+
Use = "assemblage:use.param.index",
|
|
642
|
+
Global = "assemblage:global.param.index"
|
|
630
643
|
}
|
|
631
644
|
|
|
632
645
|
/**
|
|
633
646
|
* Internal `Reflect` parameters decorators' values.
|
|
634
647
|
*/
|
|
635
648
|
export declare enum ReflectParamValue {
|
|
636
|
-
UseIdentifier = "assemblage:use.param.value"
|
|
649
|
+
UseIdentifier = "assemblage:use.param.value",
|
|
650
|
+
GlobalIdentifier = "assemblage:global.param.value"
|
|
637
651
|
}
|
|
638
652
|
|
|
639
653
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@assemblerjs/core");const t="design:paramtypes";var n,s;(n||(n={})).IsAssemblage="is_assemblage",(s||(s={})).AssemblageDefinition="assemblage:definition.value";const i=(e,t,n)=>{Reflect.defineMetadata(`__${e}__`,t,n)},o=(e,t)=>Reflect.getOwnMetadata(`__${e}__`,t),r=e=>Reflect.getMetadata(t,e)||[],a=e=>o(n.IsAssemblage,e)||!1,c={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||!!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},global:{test:e=>("object"==typeof e||void 0===e)&&!Array.isArray(e),throw:()=>{throw new Error("'global' property must be of type 'object' or 'undefined'.")},transform:e=>e}},l=e=>{const t={...e};for(const n in t)if(!Object.keys(c).includes(n))throw new Error(`Property '${n}' is not a valid assemblage definition property.`);for(const n in c){const e=c[n].test,s=c[n].throw,i=c[n].transform;e(t[n])||s(),t[n]=i(t[n])}return t},h=e=>{if(!a(e))throw new Error(`Class '${e.name}' is not an assemblage.`);return o(s.AssemblageDefinition,e)},f=(e,t)=>h(t)[e],d=t=>e.pipe(e.conditionally({if:()=>e.isClass(t[0])&&e.isClass(t[1]),then:()=>({identifier:t[0],concrete:t[1],configuration:{}})}),e.conditionally({if:()=>e.isClass(t[0])&&e.isObject(t[1]),then:()=>({identifier:t[0],concrete:t[0],configuration:t[1]}),else:e=>e}))(),u=(e,t)=>{const o=l(t||{});return i(n.IsAssemblage,!0,e),i(s.AssemblageDefinition,o,e),e};class p{dispose(){e.clearInstance(this,p)}add(...t){const n=e=>this.collection[e.channel].push(e.listener),s=e.conditionally({if:()=>2===t.length,then:()=>({channel:t[0],listener:t[1]}),else:()=>{const e=t[0];return{channel:e[0],listener:e[1]}}}),i=e.conditionally({if:t=>!e.isDefined(this.collection[t.channel]),then:e=>{this.collection[e.channel]=[],n(e)},else:e=>{n(e)}});return e.pipe(s,i)(),this}remove(t,n){const s=e=>this.collection[t].splice(e,1),i=e.conditionally({if:()=>this.collection[t]&&0===this.collection[t].length,then:()=>delete this.collection[t]}),o=e.conditionally({if:()=>e.isDefined(n),then:()=>s(this.collection[t].indexOf(n)),else:()=>delete this.collection[t]}),r=e.conditionally({if:e=>this.has(e),then:e=>this.collection[e]});return e.pipe(r,o,i)(),this}has(...t){return e.isOfType("string")(t[0])?Object.keys(this.collection).includes(t[0]):!!e.isOfType("function")(t[0])&&Object.values(this.collection).flat().includes(t[0])}get(...t){return e.isOfType("string")(t[0])?this.collection[t[0]]:e.isOfType("function")(t[0])?Object.values(this.collection).flat().filter((e=>e===t[0])):[]}clear(){const t=e.forIn(this.collection),n=t=>e.forOf(this.collection[t])((e=>this.remove(t,e)));return t((e=>n(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}[Symbol.iterator](){let e=-1;const t=this.collection?Object.keys(this.collection):[];return{next:()=>({value:t[++e],done:!(e in t)})}}constructor(){this.collection={};return e.proxifyIterable(this,p)}}class g{}class b{dispose(){this.listeners.dispose(),this.channels.clear(),e.clearInstance(this,b)}addChannels(...t){return e.forOf(t)((e=>{const t=this.cleanChannel(e);if(this.channels.has(t))throw new Error(`Channel '${t}' already exists.`);this.channels.add(t)})),this}removeChannels(...t){return e.forOf(t)((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);return this.listeners.add(n,t),this}once(e,t){const n=this.cleanChannel(e);return this.onceListeners.add(n,t),this}off(e,t){const n=this.cleanChannel(e);return this.listeners.remove(n,t),this}emit(t,...n){const s=this.cleanChannel(t);if(this.channels.has(s)){const t=this.onceListeners.get("*")||[],i=this.listeners.get("*")||[],o=this.onceListeners.get(s)||[],r=this.listeners.get(s)||[],a=e.forOf(t),c=e.forOf(i),l=e.forOf(o),h=e.forOf(r);a((e=>{this.run(e,...n),this.onceListeners.remove("*",e)})),c((e=>{this.run(e,...n)})),l((e=>{this.run(e,...n),this.onceListeners.remove(s,e)})),h((e=>{this.run(e,...n)}))}return this}run(t,...n){if(e.isAsync(t)){return t(...n).then((()=>Promise.resolve()))}t(...n)}cleanChannel(t){return e.onlyAlphanumeric(t,"*",":",".","-","_")}constructor(...e){this.listeners=new p,this.onceListeners=new p,this.channels=new Set(["*"]),this.addChannels(...e)}}exports.ReflectParamValue=void 0,(exports.ReflectParamValue||(exports.ReflectParamValue={})).UseIdentifier="assemblage:use.param.value",exports.ReflectParamIndex=void 0,function(e){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"}(exports.ReflectParamIndex||(exports.ReflectParamIndex={}));const x=e=>()=>(t,n,s)=>{const r=o(e,t)||[];r.push(s),i(e,r,t)},m=x(exports.ReflectParamIndex.Context),C=x(exports.ReflectParamIndex.Configuration),y=x(exports.ReflectParamIndex.Definition),v=x(exports.ReflectParamIndex.Dispose),w=(e,t,n)=>{const s=o(exports.ReflectParamIndex.Use,t)||[];s.push(n),i(exports.ReflectParamIndex.Use,s,t);const r=o(exports.ReflectParamValue.UseIdentifier,t)||{};r[n]=e,i(exports.ReflectParamValue.UseIdentifier,r,t)},I=e=>{const t=(e=>o(exports.ReflectParamIndex.Context,e)||[])(e)||[],n=(e=>o(exports.ReflectParamIndex.Definition,e)||[])(e)||[],s=(e=>o(exports.ReflectParamIndex.Configuration,e)||[])(e)||[],i=(e=>o(exports.ReflectParamIndex.Dispose,e)||[])(e)||[],r=(e=>o(exports.ReflectParamIndex.Use,e)||[])(e)||[];return{Context:t,Definition:n,Configuration:s,Dispose:i,Use:r}},A=(e,n)=>r=>{const a=class extends r{constructor(...t){super(...t),e&&e.call(this,n)}};Object.defineProperty(a,"name",{value:r.name});const c=Reflect.getOwnMetadata(t,r)||[],l=I(r),h=[];for(let e=0;e<c.length;e++)if(l.Context.includes(e)){const t=o(exports.ReflectParamIndex.Context,r)||[];t.push(e),i(exports.ReflectParamIndex.Context,t,a)}else if(l.Definition.includes(e)){const t=o(exports.ReflectParamIndex.Definition,r)||[];t.push(e),i(exports.ReflectParamIndex.Definition,t,a)}else if(l.Configuration.includes(e)){const t=o(exports.ReflectParamIndex.Configuration,r)||[];t.push(e),i(exports.ReflectParamIndex.Configuration,t,a)}else if(l.Dispose.includes(e)){const t=o(exports.ReflectParamIndex.Dispose,r)||[];t.push(e),i(exports.ReflectParamIndex.Dispose,t,a),h.push(c[e])}else if(l.Use.includes(e)){const t=o(exports.ReflectParamValue.UseIdentifier,r);w(t[e],a,e)}else;return u(a,o(s.AssemblageDefinition,r))};class j{static of(e,t,n){return new j(e,t,n)}dispose(){this.singletonInstance&&(((e,t)=>{if(e.concrete.prototype instanceof b){const n=t;for(const t of e.events)n.off(t);n.removeChannels(...e.events),e.privateContext.removeChannels(...e.events)}else for(const n of e.events)e.privateContext.events.has(n)&&e.privateContext.removeChannels(n)})(this,this.singletonInstance),P(this.singletonInstance,"onDispose",this.publicContext,this.configuration),e.clearInstance(this.singletonInstance,this.concrete)),e.clearInstance(this,j)}build(e){if(this.singletonInstance)return this.singletonInstance;const t=(e=>{const t=[],n=r(e.concrete),s=I(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=o(exports.ReflectParamValue.UseIdentifier,e.concrete)[i];t.push(e.privateContext.require(n)),i++}else t.push(e.privateContext.require(r)),i++;return t})(this),n=new this.concrete(...t);if(((e,t)=>{if(e.concrete.prototype instanceof b){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)}))}else for(const n of e.events)e.privateContext.events.has(n)||e.privateContext.addChannels(n)})(this,n),this.isSingleton)return this.singletonInstance=n,this.privateContext.prepareInitHook(n,this.configuration),this.singletonInstance;let s={};return this.configuration&&(s=this.configuration),e&&(s={...s,...e}),P(n,"onInit",this.publicContext,s),n}get dependencies(){return this.dependenciesIds}get definition(){return h(this.concrete)||{}}get isSingleton(){return f("singleton",this.concrete)}get singleton(){return this.singletonInstance}get injections(){return f("inject",this.concrete)||[]}get objects(){return f("use",this.concrete)||[]}get tags(){return f("tags",this.concrete)||[]}get globals(){return f("global",this.concrete)}get events(){return f("events",this.concrete)||[]}constructor(t,n,s){if(this.privateContext=n,this.publicContext=s,this.dependenciesIds=[],this.identifier=t.identifier,this.concrete=t.concrete,this.configuration=t.configuration,!a(this.concrete))throw new Error(`Class '${this.concrete.name}' is not an Assemblage.`);const i=e.forOf(this.injections),o=e.forOf(this.objects);if(i((e=>this.privateContext.register(e))),o((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=r(e),s=I(e);let i=0;for(const o of n)s.Context.includes(i)||s.Configuration.includes(i)||s.Definition.includes(i)||s.Dispose.includes(i)||s.Use.includes(i)||t.push(o),i++;return t})(this.concrete),this.globals)for(const e in this.globals)this.privateContext.addGlobal(e,this.globals[e]);t.instance?this.singletonInstance=t.instance:this.isSingleton}}const P=(t,n,s,i)=>new Promise((o=>{const r=t[n];if(r){if(e.isAsync(r))return void r.bind(t)(s,i).then((()=>{o()}));o(r.bind(t)(s,i))}}));class R extends b{static build(e){const t=new R;((e,t,n)=>{const o=h(n);o[e]=t;const r=l(o);i(s.AssemblageDefinition,r,n)})("singleton",!0,e);const n=t.register([e]),o=t.require(n.identifier),r=t.initCache.find((e=>e.instance===o));if(!r)throw new Error("Root instance not found in assemblages cache.");const a=t.initCache.indexOf(r);t.initCache.splice(a,1);for(const s of t.initCache)P(s.instance,"onInit",t.publicContext,s.configuration);P(o,"onInit",t.publicContext,n.configuration);for(const s of t.initCache.reverse())P(s.instance,"onInited",t.publicContext,s.configuration);return P(o,"onInited",t.publicContext,n.configuration),t.initCache.length=0,o}dispose(){for(const[e,t]of this.injectables)t.dispose();e.clearInstance(this,R)}register(t,n=!1){const s=!0===n?(e=>({identifier:e[0],concrete:e[0],instance:e[1],configuration:{}}))(t):(t=>e.switchCase({1:()=>(e=>({identifier:e[0],concrete:e[0],configuration:{}}))(t),2:()=>d(t),3:()=>(e=>({identifier:e[0],concrete:e[1],configuration:e[2]}))(t)},(()=>{throw new Error("Injection tuple must be of length 1, 2 or 3.")}))(t.length))(t);if(this.has(s.identifier))throw new Error(`An assemblage is already registered with identifier '${s.identifier.name}'.`);const i=j.of(s,this.privateContext,this.publicContext);return this.injectables.set(i.identifier,i),P(i.concrete,"onRegister",this.publicContext,i.configuration),i}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,t){return this.initCache.push({instance:e,configuration:t}),this.initCache}has(e){return"string"==typeof e||"symbol"==typeof e?this.objects.has(e):this.injectables.has(e)}require(e,t){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(t)}}concrete(e){const t=this.injectables.get(e);if(t)return t.concrete}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}addGlobal(e,t){if(this.globals.has(e))throw new Error(`Global value with key '${e}' has already been registered.`);this.globals.set(e,t)}global(e){return this.globals.get(e)}get size(){return this.injectables.size}constructor(){super(),this.injectables=new Map,this.objects=new Map,this.globals=new Map,this.initCache=[],this.publicContext={has:this.has.bind(this),require:this.require.bind(this),concrete:this.concrete.bind(this),tagged:this.tagged.bind(this),dispose:this.dispose.bind(this),global:this.global.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),addGlobal:this.addGlobal.bind(this),prepareInitHook:this.prepareInitHook.bind(this),emit:this.emit.bind(this),addChannels:this.addChannels.bind(this),removeChannels:this.removeChannels.bind(this)}}}exports.AbstractAssemblage=class{static onRegister(e,t){}},exports.AbstractAssembler=class extends g{},exports.AbstractEventManager=g,exports.AbstractListenerCollection=class{},exports.Assemblage=e=>t=>u(t,e),exports.Assembler=R,exports.Await=(e,t=25)=>(n,s,i)=>{const o=i.value;i.value=async function(){return new Promise((n=>{if(this[e])o.apply(this),n();else{const s=setInterval((()=>{this[e]&&(clearInterval(s),o.apply(this),n())}),t)}}))}},exports.Configuration=C,exports.ConstructorDecorator=A,exports.Context=m,exports.Definition=y,exports.Dispose=v,exports.EventManager=b,exports.ListenerCollection=p,exports.Use=e=>(t,n,s)=>{w(e,t,s)},exports.createConstructorDecorator=e=>t=>A(e,t),exports.decorateAssemblage=u,exports.decorateUse=w,exports.getAssemblageDefinition=e=>o(s.AssemblageDefinition,e),exports.getDecoratedParametersIndexes=I,exports.isAssemblage=a;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@assemblerjs/core");const t="design:paramtypes";var n,s;(n||(n={})).IsAssemblage="is_assemblage",(s||(s={})).AssemblageDefinition="assemblage:definition.value";const i=(e,t,n)=>{Reflect.defineMetadata(`__${e}__`,t,n)},o=(e,t)=>Reflect.getOwnMetadata(`__${e}__`,t),r=e=>Reflect.getMetadata(t,e)||[],a=e=>o(n.IsAssemblage,e)||!1,c={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||!!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},global:{test:e=>("object"==typeof e||void 0===e)&&!Array.isArray(e),throw:()=>{throw new Error("'global' property must be of type 'object' or 'undefined'.")},transform:e=>e}},l=e=>{const t={...e};for(const n in t)if(!Object.keys(c).includes(n))throw new Error(`Property '${n}' is not a valid assemblage definition property.`);for(const n in c){const e=c[n].test,s=c[n].throw,i=c[n].transform;e(t[n])||s(),t[n]=i(t[n])}return t},h=e=>{if(!a(e))throw new Error(`Class '${e.name}' is not an assemblage.`);return o(s.AssemblageDefinition,e)},f=(e,t)=>h(t)[e],d=t=>e.pipe(e.conditionally({if:()=>e.isClass(t[0])&&e.isClass(t[1]),then:()=>({identifier:t[0],concrete:t[1],configuration:{}})}),e.conditionally({if:()=>e.isClass(t[0])&&e.isObject(t[1]),then:()=>({identifier:t[0],concrete:t[0],configuration:t[1]}),else:e=>e}))(),p=(e,t)=>{const o=l(t||{});return i(n.IsAssemblage,!0,e),i(s.AssemblageDefinition,o,e),e};class u{dispose(){e.clearInstance(this,u)}add(...t){const n=e=>this.collection[e.channel].push(e.listener),s=e.conditionally({if:()=>2===t.length,then:()=>({channel:t[0],listener:t[1]}),else:()=>{const e=t[0];return{channel:e[0],listener:e[1]}}}),i=e.conditionally({if:t=>!e.isDefined(this.collection[t.channel]),then:e=>{this.collection[e.channel]=[],n(e)},else:e=>{n(e)}});return e.pipe(s,i)(),this}remove(t,n){const s=e=>this.collection[t].splice(e,1),i=e.conditionally({if:()=>this.collection[t]&&0===this.collection[t].length,then:()=>delete this.collection[t]}),o=e.conditionally({if:()=>e.isDefined(n),then:()=>s(this.collection[t].indexOf(n)),else:()=>delete this.collection[t]}),r=e.conditionally({if:e=>this.has(e),then:e=>this.collection[e]});return e.pipe(r,o,i)(),this}has(...t){return e.isOfType("string")(t[0])?Object.keys(this.collection).includes(t[0]):!!e.isOfType("function")(t[0])&&Object.values(this.collection).flat().includes(t[0])}get(...t){return e.isOfType("string")(t[0])?this.collection[t[0]]:e.isOfType("function")(t[0])?Object.values(this.collection).flat().filter((e=>e===t[0])):[]}clear(){const t=e.forIn(this.collection),n=t=>e.forOf(this.collection[t])((e=>this.remove(t,e)));return t((e=>n(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}[Symbol.iterator](){let e=-1;const t=this.collection?Object.keys(this.collection):[];return{next:()=>({value:t[++e],done:!(e in t)})}}constructor(){this.collection={};return e.proxifyIterable(this,u)}}class g{}class b{dispose(){this.listeners.dispose(),this.channels.clear(),e.clearInstance(this,b)}addChannels(...t){return e.forOf(t)((e=>{const t=this.cleanChannel(e);if(this.channels.has(t))throw new Error(`Channel '${t}' already exists.`);this.channels.add(t)})),this}removeChannels(...t){return e.forOf(t)((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);return this.listeners.add(n,t),this}once(e,t){const n=this.cleanChannel(e);return this.onceListeners.add(n,t),this}off(e,t){const n=this.cleanChannel(e);return this.listeners.remove(n,t),this}emit(t,...n){const s=this.cleanChannel(t);if(this.channels.has(s)){const t=this.onceListeners.get("*")||[],i=this.listeners.get("*")||[],o=this.onceListeners.get(s)||[],r=this.listeners.get(s)||[],a=e.forOf(t),c=e.forOf(i),l=e.forOf(o),h=e.forOf(r);a((e=>{this.run(e,...n),this.onceListeners.remove("*",e)})),c((e=>{this.run(e,...n)})),l((e=>{this.run(e,...n),this.onceListeners.remove(s,e)})),h((e=>{this.run(e,...n)}))}return this}run(t,...n){if(e.isAsync(t)){return t(...n).then((()=>Promise.resolve()))}t(...n)}cleanChannel(t){return e.onlyAlphanumeric(t,"*",":",".","-","_")}constructor(...e){this.listeners=new u,this.onceListeners=new u,this.channels=new Set(["*"]),this.addChannels(...e)}}exports.ReflectParamValue=void 0,function(e){e.UseIdentifier="assemblage:use.param.value",e.GlobalIdentifier="assemblage:global.param.value"}(exports.ReflectParamValue||(exports.ReflectParamValue={})),exports.ReflectParamIndex=void 0,function(e){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.Global="assemblage:global.param.index"}(exports.ReflectParamIndex||(exports.ReflectParamIndex={}));const x=e=>()=>(t,n,s)=>{const r=o(e,t)||[];r.push(s),i(e,r,t)},m=x(exports.ReflectParamIndex.Context),C=x(exports.ReflectParamIndex.Configuration),y=x(exports.ReflectParamIndex.Definition),v=x(exports.ReflectParamIndex.Dispose),I=(e,t,n)=>{const s=o(exports.ReflectParamIndex.Use,t)||[];s.push(n),i(exports.ReflectParamIndex.Use,s,t);const r=o(exports.ReflectParamValue.UseIdentifier,t)||{};r[n]=e,i(exports.ReflectParamValue.UseIdentifier,r,t)},w=(e,t,n)=>{const s=o(exports.ReflectParamIndex.Global,t)||[];s.push(n),i(exports.ReflectParamIndex.Global,s,t);const r=o(exports.ReflectParamValue.GlobalIdentifier,t)||{};r[n]=e,i(exports.ReflectParamValue.GlobalIdentifier,r,t)},A=e=>{const t=(e=>o(exports.ReflectParamIndex.Context,e)||[])(e)||[],n=(e=>o(exports.ReflectParamIndex.Definition,e)||[])(e)||[],s=(e=>o(exports.ReflectParamIndex.Configuration,e)||[])(e)||[],i=(e=>o(exports.ReflectParamIndex.Dispose,e)||[])(e)||[],r=(e=>o(exports.ReflectParamIndex.Use,e)||[])(e)||[],a=(e=>o(exports.ReflectParamIndex.Global,e)||[])(e)||[];return{Context:t,Definition:n,Configuration:s,Dispose:i,Use:r,Global:a}},P=(e,n)=>r=>{const a=class extends r{constructor(...t){super(...t),e&&e.call(this,n)}};Object.defineProperty(a,"name",{value:r.name});const c=Reflect.getOwnMetadata(t,r)||[],l=A(r),h=[];for(let e=0;e<c.length;e++)if(l.Context.includes(e)){const t=o(exports.ReflectParamIndex.Context,r)||[];t.push(e),i(exports.ReflectParamIndex.Context,t,a)}else if(l.Definition.includes(e)){const t=o(exports.ReflectParamIndex.Definition,r)||[];t.push(e),i(exports.ReflectParamIndex.Definition,t,a)}else if(l.Configuration.includes(e)){const t=o(exports.ReflectParamIndex.Configuration,r)||[];t.push(e),i(exports.ReflectParamIndex.Configuration,t,a)}else if(l.Dispose.includes(e)){const t=o(exports.ReflectParamIndex.Dispose,r)||[];t.push(e),i(exports.ReflectParamIndex.Dispose,t,a),h.push(c[e])}else if(l.Use.includes(e)){const t=o(exports.ReflectParamValue.UseIdentifier,r);I(t[e],a,e)}else if(l.Global.includes(e)){const t=o(exports.ReflectParamValue.GlobalIdentifier,r);w(t[e],a,e)}else;return p(a,o(s.AssemblageDefinition,r))};class R{static of(e,t,n){return new R(e,t,n)}dispose(){this.singletonInstance&&(((e,t)=>{if(e.concrete.prototype instanceof b){const n=t;for(const t of e.events)n.off(t);n.removeChannels(...e.events),e.privateContext.removeChannels(...e.events)}else for(const n of e.events)e.privateContext.events.has(n)&&e.privateContext.removeChannels(n)})(this,this.singletonInstance),j(this.singletonInstance,"onDispose",this.publicContext,this.configuration),e.clearInstance(this.singletonInstance,this.concrete)),e.clearInstance(this,R)}build(e){if(this.singletonInstance)return this.singletonInstance;const t=(e=>{const t=[],n=r(e.concrete),s=A(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=o(exports.ReflectParamValue.UseIdentifier,e.concrete)[i];t.push(e.privateContext.require(n)),i++}else if(s.Global.includes(i)){const n=o(exports.ReflectParamValue.GlobalIdentifier,e.concrete)[i];t.push(e.privateContext.global(n)),i++}else t.push(e.privateContext.require(r)),i++;return t})(this),n=new this.concrete(...t);if(((e,t)=>{if(e.concrete.prototype instanceof b){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)}))}else for(const n of e.events)e.privateContext.events.has(n)||e.privateContext.addChannels(n)})(this,n),this.isSingleton)return this.singletonInstance=n,this.privateContext.prepareInitHook(n,this.configuration),this.singletonInstance;let s={};return this.configuration&&(s=this.configuration),e&&(s={...s,...e}),j(n,"onInit",this.publicContext,s),n}get dependencies(){return this.dependenciesIds}get definition(){return h(this.concrete)||{}}get isSingleton(){return f("singleton",this.concrete)}get singleton(){return this.singletonInstance}get injections(){return f("inject",this.concrete)||[]}get objects(){return f("use",this.concrete)||[]}get tags(){return f("tags",this.concrete)||[]}get globals(){return f("global",this.concrete)}get events(){return f("events",this.concrete)||[]}constructor(t,n,s){if(this.privateContext=n,this.publicContext=s,this.dependenciesIds=[],this.identifier=t.identifier,this.concrete=t.concrete,this.configuration=t.configuration,!a(this.concrete))throw new Error(`Class '${this.concrete.name}' is not an Assemblage.`);const i=e.forOf(this.injections),o=e.forOf(this.objects);if(i((e=>this.privateContext.register(e))),o((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=r(e),s=A(e);let i=0;for(const o of n)s.Context.includes(i)||s.Configuration.includes(i)||s.Definition.includes(i)||s.Dispose.includes(i)||s.Use.includes(i)||s.Global.includes(i)||t.push(o),i++;return t})(this.concrete),this.globals)for(const e in this.globals)this.privateContext.addGlobal(e,this.globals[e]);t.instance?this.singletonInstance=t.instance:this.isSingleton}}const j=(t,n,s,i)=>new Promise((o=>{const r=t[n];if(r){if(e.isAsync(r))return void r.bind(t)(s,i).then((()=>{o()}));o(r.bind(t)(s,i))}}));class D extends b{static build(e){const t=new D;((e,t,n)=>{const o=h(n);o[e]=t;const r=l(o);i(s.AssemblageDefinition,r,n)})("singleton",!0,e);const n=t.register([e]),o=t.require(n.identifier),r=t.initCache.find((e=>e.instance===o));if(!r)throw new Error("Root instance not found in assemblages cache.");const a=t.initCache.indexOf(r);t.initCache.splice(a,1);for(const s of t.initCache)j(s.instance,"onInit",t.publicContext,s.configuration);j(o,"onInit",t.publicContext,n.configuration);for(const s of t.initCache.reverse())j(s.instance,"onInited",t.publicContext,s.configuration);return j(o,"onInited",t.publicContext,n.configuration),t.initCache.length=0,o}dispose(){for(const[e,t]of this.injectables)t.dispose();e.clearInstance(this,D)}register(t,n=!1){const s=!0===n?(e=>({identifier:e[0],concrete:e[0],instance:e[1],configuration:{}}))(t):(t=>e.switchCase({1:()=>(e=>({identifier:e[0],concrete:e[0],configuration:{}}))(t),2:()=>d(t),3:()=>(e=>({identifier:e[0],concrete:e[1],configuration:e[2]}))(t)},(()=>{throw new Error("Injection tuple must be of length 1, 2 or 3.")}))(t.length))(t);if(this.has(s.identifier))throw new Error(`An assemblage is already registered with identifier '${s.identifier.name}'.`);const i=R.of(s,this.privateContext,this.publicContext);return this.injectables.set(i.identifier,i),j(i.concrete,"onRegister",this.publicContext,i.configuration),i}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,t){return this.initCache.push({instance:e,configuration:t}),this.initCache}has(e){return"string"==typeof e||"symbol"==typeof e?this.objects.has(e):this.injectables.has(e)}require(e,t){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(t)}}concrete(e){const t=this.injectables.get(e);if(t)return t.concrete}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}addGlobal(e,t){if(this.globals.has(e))throw new Error(`Global value with key '${e}' has already been registered.`);this.globals.set(e,t)}global(e){return this.globals.get(e)}get size(){return this.injectables.size}constructor(){super(),this.injectables=new Map,this.objects=new Map,this.globals=new Map,this.initCache=[],this.publicContext={has:this.has.bind(this),require:this.require.bind(this),concrete:this.concrete.bind(this),tagged:this.tagged.bind(this),dispose:this.dispose.bind(this),global:this.global.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),addGlobal:this.addGlobal.bind(this),prepareInitHook:this.prepareInitHook.bind(this),emit:this.emit.bind(this),addChannels:this.addChannels.bind(this),removeChannels:this.removeChannels.bind(this)}}}exports.AbstractAssemblage=class{static onRegister(e,t){}},exports.AbstractAssembler=class extends g{},exports.AbstractEventManager=g,exports.AbstractListenerCollection=class{},exports.Assemblage=e=>t=>p(t,e),exports.Assembler=D,exports.Await=(e,t=25)=>(n,s,i)=>{const o=i.value;i.value=async function(){return new Promise((n=>{if(this[e])o.apply(this),n();else{const s=setInterval((()=>{this[e]&&(clearInterval(s),o.apply(this),n())}),t)}}))}},exports.Configuration=C,exports.ConstructorDecorator=P,exports.Context=m,exports.Definition=y,exports.Dispose=v,exports.EventManager=b,exports.Global=e=>(t,n,s)=>{w(e,t,s)},exports.ListenerCollection=u,exports.Use=e=>(t,n,s)=>{I(e,t,s)},exports.createConstructorDecorator=e=>t=>P(e,t),exports.decorateAssemblage=p,exports.decorateGlobal=w,exports.decorateUse=I,exports.getAssemblageDefinition=e=>o(s.AssemblageDefinition,e),exports.getDecoratedParametersIndexes=A,exports.isAssemblage=a;
|
package/dist/index.mjs
CHANGED
|
@@ -126,7 +126,7 @@ const setDefinitionValue = (e, o, n)=>{
|
|
|
126
126
|
return i;
|
|
127
127
|
};
|
|
128
128
|
|
|
129
|
-
const i$
|
|
129
|
+
const i$2 = (e)=>{
|
|
130
130
|
return {
|
|
131
131
|
identifier: e[0],
|
|
132
132
|
concrete: e[0],
|
|
@@ -166,7 +166,7 @@ const s$2 = (e)=>{
|
|
|
166
166
|
};
|
|
167
167
|
};
|
|
168
168
|
const resolveInjectionTuple = (e)=>switchCase({
|
|
169
|
-
1: ()=>i$
|
|
169
|
+
1: ()=>i$2(e),
|
|
170
170
|
2: ()=>c$2(e),
|
|
171
171
|
3: ()=>s$2(e)
|
|
172
172
|
}, ()=>{
|
|
@@ -456,6 +456,7 @@ const Await = (t, e = 25)=>{
|
|
|
456
456
|
var ReflectParamValue;
|
|
457
457
|
(function(e) {
|
|
458
458
|
e["UseIdentifier"] = "assemblage:use.param.value";
|
|
459
|
+
e["GlobalIdentifier"] = "assemblage:global.param.value";
|
|
459
460
|
})(ReflectParamValue || (ReflectParamValue = {}));
|
|
460
461
|
var ReflectParamIndex;
|
|
461
462
|
(function(e) {
|
|
@@ -464,19 +465,20 @@ var ReflectParamIndex;
|
|
|
464
465
|
e["Definition"] = "assemblage:definition.param.index";
|
|
465
466
|
e["Configuration"] = "assemblage:configuration.param.index";
|
|
466
467
|
e["Use"] = "assemblage:use.param.index";
|
|
468
|
+
e["Global"] = "assemblage:global.param.index";
|
|
467
469
|
})(ReflectParamIndex || (ReflectParamIndex = {}));
|
|
468
470
|
|
|
469
|
-
const i = (t)=>()=>{
|
|
471
|
+
const i$1 = (t)=>()=>{
|
|
470
472
|
return (i, s, r)=>{
|
|
471
473
|
const c = getOwnCustomMetadata(t, i) || [];
|
|
472
474
|
c.push(r);
|
|
473
475
|
defineCustomMetadata(t, c, i);
|
|
474
476
|
};
|
|
475
477
|
};
|
|
476
|
-
const s$1 = i(ReflectParamIndex.Context);
|
|
477
|
-
const r$1 = i(ReflectParamIndex.Configuration);
|
|
478
|
-
const c$1 = i(ReflectParamIndex.Definition);
|
|
479
|
-
const e$1 = i(ReflectParamIndex.Dispose);
|
|
478
|
+
const s$1 = i$1(ReflectParamIndex.Context);
|
|
479
|
+
const r$1 = i$1(ReflectParamIndex.Configuration);
|
|
480
|
+
const c$1 = i$1(ReflectParamIndex.Definition);
|
|
481
|
+
const e$1 = i$1(ReflectParamIndex.Dispose);
|
|
480
482
|
|
|
481
483
|
const Use = (e)=>{
|
|
482
484
|
return (o, t, s)=>{
|
|
@@ -492,85 +494,109 @@ const decorateUse = (r, n, c)=>{
|
|
|
492
494
|
defineCustomMetadata(ReflectParamValue.UseIdentifier, i, n);
|
|
493
495
|
};
|
|
494
496
|
|
|
497
|
+
const Global = (o)=>{
|
|
498
|
+
return (t, l, r)=>{
|
|
499
|
+
decorateGlobal(o, t, r);
|
|
500
|
+
};
|
|
501
|
+
};
|
|
502
|
+
const decorateGlobal = (e, a, n)=>{
|
|
503
|
+
const c = getOwnCustomMetadata(ReflectParamIndex.Global, a) || [];
|
|
504
|
+
c.push(n);
|
|
505
|
+
defineCustomMetadata(ReflectParamIndex.Global, c, a);
|
|
506
|
+
const b = getOwnCustomMetadata(ReflectParamValue.GlobalIdentifier, a) || {};
|
|
507
|
+
b[n] = e;
|
|
508
|
+
defineCustomMetadata(ReflectParamValue.GlobalIdentifier, b, a);
|
|
509
|
+
};
|
|
510
|
+
|
|
495
511
|
const o = (o)=>{
|
|
496
512
|
return getOwnCustomMetadata(ReflectParamIndex.Context, o) || [];
|
|
497
513
|
};
|
|
498
514
|
const r = (o)=>{
|
|
499
515
|
return getOwnCustomMetadata(ReflectParamIndex.Configuration, o) || [];
|
|
500
516
|
};
|
|
501
|
-
const
|
|
517
|
+
const s = (o)=>{
|
|
502
518
|
return getOwnCustomMetadata(ReflectParamIndex.Definition, o) || [];
|
|
503
519
|
};
|
|
504
|
-
const
|
|
520
|
+
const e = (o)=>{
|
|
505
521
|
return getOwnCustomMetadata(ReflectParamIndex.Dispose, o) || [];
|
|
506
522
|
};
|
|
507
523
|
const c = (o)=>{
|
|
508
524
|
return getOwnCustomMetadata(ReflectParamIndex.Use, o) || [];
|
|
509
525
|
};
|
|
526
|
+
const i = (o)=>{
|
|
527
|
+
return getOwnCustomMetadata(ReflectParamIndex.Global, o) || [];
|
|
528
|
+
};
|
|
510
529
|
const getDecoratedParametersIndexes = (t)=>{
|
|
511
530
|
const n = o(t) || [];
|
|
512
|
-
const i = e(t) || [];
|
|
513
|
-
const m = r(t) || [];
|
|
514
531
|
const u = s(t) || [];
|
|
515
|
-
const
|
|
532
|
+
const m = r(t) || [];
|
|
533
|
+
const a = e(t) || [];
|
|
534
|
+
const f = c(t) || [];
|
|
535
|
+
const p = i(t) || [];
|
|
516
536
|
return {
|
|
517
537
|
Context: n,
|
|
518
|
-
Definition:
|
|
538
|
+
Definition: u,
|
|
519
539
|
Configuration: m,
|
|
520
|
-
Dispose:
|
|
521
|
-
Use:
|
|
540
|
+
Dispose: a,
|
|
541
|
+
Use: f,
|
|
542
|
+
Global: p
|
|
522
543
|
};
|
|
523
544
|
};
|
|
524
545
|
|
|
525
546
|
const createConstructorDecorator = (t)=>{
|
|
526
547
|
return (o)=>ConstructorDecorator(t, o);
|
|
527
548
|
};
|
|
528
|
-
const ConstructorDecorator = (
|
|
529
|
-
const m = class extends
|
|
549
|
+
const ConstructorDecorator = (f, p)=>(l)=>{
|
|
550
|
+
const m = class extends l {
|
|
530
551
|
constructor(...t){
|
|
531
552
|
super(...t);
|
|
532
|
-
if (
|
|
553
|
+
if (f) f.call(this, p);
|
|
533
554
|
}
|
|
534
555
|
};
|
|
535
556
|
Object.defineProperty(m, 'name', {
|
|
536
|
-
value:
|
|
557
|
+
value: l.name
|
|
537
558
|
});
|
|
538
|
-
const
|
|
539
|
-
const D = getDecoratedParametersIndexes(
|
|
540
|
-
const
|
|
541
|
-
for(let e = 0; e <
|
|
559
|
+
const d = Reflect.getOwnMetadata(ReflectParamTypes, l) || [];
|
|
560
|
+
const D = getDecoratedParametersIndexes(l);
|
|
561
|
+
const C = [];
|
|
562
|
+
for(let e = 0; e < d.length; e++){
|
|
542
563
|
if (D.Context.includes(e)) {
|
|
543
|
-
const n = getOwnCustomMetadata(ReflectParamIndex.Context,
|
|
564
|
+
const n = getOwnCustomMetadata(ReflectParamIndex.Context, l) || [];
|
|
544
565
|
n.push(e);
|
|
545
566
|
defineCustomMetadata(ReflectParamIndex.Context, n, m);
|
|
546
567
|
continue;
|
|
547
568
|
}
|
|
548
569
|
if (D.Definition.includes(e)) {
|
|
549
|
-
const n = getOwnCustomMetadata(ReflectParamIndex.Definition,
|
|
570
|
+
const n = getOwnCustomMetadata(ReflectParamIndex.Definition, l) || [];
|
|
550
571
|
n.push(e);
|
|
551
572
|
defineCustomMetadata(ReflectParamIndex.Definition, n, m);
|
|
552
573
|
continue;
|
|
553
574
|
}
|
|
554
575
|
if (D.Configuration.includes(e)) {
|
|
555
|
-
const n = getOwnCustomMetadata(ReflectParamIndex.Configuration,
|
|
576
|
+
const n = getOwnCustomMetadata(ReflectParamIndex.Configuration, l) || [];
|
|
556
577
|
n.push(e);
|
|
557
578
|
defineCustomMetadata(ReflectParamIndex.Configuration, n, m);
|
|
558
579
|
continue;
|
|
559
580
|
}
|
|
560
581
|
if (D.Dispose.includes(e)) {
|
|
561
|
-
const n = getOwnCustomMetadata(ReflectParamIndex.Dispose,
|
|
582
|
+
const n = getOwnCustomMetadata(ReflectParamIndex.Dispose, l) || [];
|
|
562
583
|
n.push(e);
|
|
563
584
|
defineCustomMetadata(ReflectParamIndex.Dispose, n, m);
|
|
564
|
-
|
|
585
|
+
C.push(d[e]);
|
|
565
586
|
continue;
|
|
566
587
|
}
|
|
567
588
|
if (D.Use.includes(e)) {
|
|
568
|
-
const t = getOwnCustomMetadata(ReflectParamValue.UseIdentifier,
|
|
589
|
+
const t = getOwnCustomMetadata(ReflectParamValue.UseIdentifier, l);
|
|
569
590
|
decorateUse(t[e], m, e);
|
|
570
591
|
continue;
|
|
571
592
|
}
|
|
593
|
+
if (D.Global.includes(e)) {
|
|
594
|
+
const t = getOwnCustomMetadata(ReflectParamValue.GlobalIdentifier, l);
|
|
595
|
+
decorateGlobal(t[e], m, e);
|
|
596
|
+
continue;
|
|
597
|
+
}
|
|
572
598
|
}
|
|
573
|
-
return decorateAssemblage(m, getOwnCustomMetadata(ReflectValue.AssemblageDefinition,
|
|
599
|
+
return decorateAssemblage(m, getOwnCustomMetadata(ReflectValue.AssemblageDefinition, l));
|
|
574
600
|
};
|
|
575
601
|
|
|
576
602
|
const resolveInjectableParameters = (i)=>{
|
|
@@ -606,6 +632,13 @@ const resolveInjectableParameters = (i)=>{
|
|
|
606
632
|
u++;
|
|
607
633
|
continue;
|
|
608
634
|
}
|
|
635
|
+
if (r.Global.includes(u)) {
|
|
636
|
+
const n = getOwnCustomMetadata(ReflectParamValue.GlobalIdentifier, i.concrete);
|
|
637
|
+
const t = n[u];
|
|
638
|
+
s.push(i.privateContext.global(t));
|
|
639
|
+
u++;
|
|
640
|
+
continue;
|
|
641
|
+
}
|
|
609
642
|
s.push(i.privateContext.require(n));
|
|
610
643
|
u++;
|
|
611
644
|
}
|
|
@@ -617,7 +650,7 @@ const resolveDependencies = (e)=>{
|
|
|
617
650
|
const s = getDecoratedParametersIndexes(e);
|
|
618
651
|
let c = 0;
|
|
619
652
|
for (const e of i){
|
|
620
|
-
if (s.Context.includes(c) || s.Configuration.includes(c) || s.Definition.includes(c) || s.Dispose.includes(c) || s.Use.includes(c)) {
|
|
653
|
+
if (s.Context.includes(c) || s.Configuration.includes(c) || s.Definition.includes(c) || s.Dispose.includes(c) || s.Use.includes(c) || s.Global.includes(c)) {
|
|
621
654
|
c++;
|
|
622
655
|
continue;
|
|
623
656
|
}
|
|
@@ -878,4 +911,4 @@ class Assembler extends EventManager {
|
|
|
878
911
|
class AbstractAssembler extends AbstractEventManager {
|
|
879
912
|
}
|
|
880
913
|
|
|
881
|
-
export { AbstractAssemblage, AbstractAssembler, AbstractEventManager, AbstractListenerCollection, Assemblage, Assembler, Await, r$1 as Configuration, ConstructorDecorator, s$1 as Context, c$1 as Definition, e$1 as Dispose, EventManager, ListenerCollection, ReflectParamIndex, ReflectParamValue, Use, createConstructorDecorator, decorateAssemblage, decorateUse, getAssemblageDefinition, getDecoratedParametersIndexes, isAssemblage };
|
|
914
|
+
export { AbstractAssemblage, AbstractAssembler, AbstractEventManager, AbstractListenerCollection, Assemblage, Assembler, Await, r$1 as Configuration, ConstructorDecorator, s$1 as Context, c$1 as Definition, e$1 as Dispose, EventManager, Global, ListenerCollection, ReflectParamIndex, ReflectParamValue, Use, createConstructorDecorator, decorateAssemblage, decorateGlobal, decorateUse, getAssemblageDefinition, getDecoratedParametersIndexes, isAssemblage };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "assemblerjs",
|
|
3
3
|
"description": "A general purpose Dependency Injection library for node and browser.",
|
|
4
|
-
"version": "0.9.
|
|
4
|
+
"version": "0.9.5",
|
|
5
5
|
"author": "Benoît LAHOZ <info@benoitlahoz.io>",
|
|
6
6
|
"bugs": "https://github.com/benoitlahoz/assemblerjs/issues",
|
|
7
7
|
"homepage": "https://github.com/benoitlahoz/assemblerjs#README",
|
|
@@ -50,6 +50,6 @@
|
|
|
50
50
|
"coverage": "vitest run --coverage --passWithNoTests && istanbul-badges-readme"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@assemblerjs/core": "
|
|
53
|
+
"@assemblerjs/core": "0.9.1"
|
|
54
54
|
}
|
|
55
55
|
}
|