@rolster/invertly 2.0.0 → 3.0.0
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/cjs/index.js +7 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/index.js +7 -7
- package/dist/es/index.js.map +1 -1
- package/dist/esm/factories/container.factory.js +3 -3
- package/dist/esm/factories/container.factory.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/stores/locator.store.d.ts +1 -1
- package/dist/esm/stores/locator.store.js +4 -4
- package/dist/esm/stores/locator.store.js.map +1 -1
- package/package.json +2 -2
package/dist/cjs/index.js
CHANGED
|
@@ -65,20 +65,20 @@ class LocatorStore {
|
|
|
65
65
|
this.collection.set(reference, { token, useClass: token });
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
find(token) {
|
|
69
69
|
return this.collection.get(token);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
const LOCATOR_STORE = new LocatorStore();
|
|
73
|
+
function findInLocator(token) {
|
|
74
|
+
return LOCATOR_STORE.find(token);
|
|
75
|
+
}
|
|
73
76
|
function saveInLocator(dependencies) {
|
|
74
77
|
LOCATOR_STORE.save(dependencies);
|
|
75
78
|
}
|
|
76
79
|
function pushInLocator(reference, token) {
|
|
77
80
|
LOCATOR_STORE.push(reference, token);
|
|
78
81
|
}
|
|
79
|
-
function requestInLocator(token) {
|
|
80
|
-
return LOCATOR_STORE.request(token);
|
|
81
|
-
}
|
|
82
82
|
|
|
83
83
|
class ScopeStore {
|
|
84
84
|
constructor() {
|
|
@@ -146,7 +146,7 @@ class InjectableFactory {
|
|
|
146
146
|
}
|
|
147
147
|
createFromDecorator(inject) {
|
|
148
148
|
const { token, scopeable, singleton } = inject;
|
|
149
|
-
const locator =
|
|
149
|
+
const locator = findInLocator(token);
|
|
150
150
|
return this.createInstance({
|
|
151
151
|
token: locator?.useClass ?? token,
|
|
152
152
|
scopeable,
|
|
@@ -160,7 +160,7 @@ class InjectableFactory {
|
|
|
160
160
|
if (inject) {
|
|
161
161
|
return this.createFromDecorator(inject);
|
|
162
162
|
}
|
|
163
|
-
const locator =
|
|
163
|
+
const locator = findInLocator(token);
|
|
164
164
|
if (locator) {
|
|
165
165
|
return this.createInstance({
|
|
166
166
|
...locator,
|
|
@@ -258,11 +258,11 @@ exports.InvertlyContainer = InvertlyContainer;
|
|
|
258
258
|
exports.Scope = Scope;
|
|
259
259
|
exports.Singleton = Singleton;
|
|
260
260
|
exports["default"] = createFromInvertly;
|
|
261
|
+
exports.findInLocator = findInLocator;
|
|
261
262
|
exports.invertly = invertly;
|
|
262
263
|
exports.pushInLocator = pushInLocator;
|
|
263
264
|
exports.registerDependency = registerDependency;
|
|
264
265
|
exports.registerInject = registerInject;
|
|
265
266
|
exports.registerInjectable = registerInjectable;
|
|
266
|
-
exports.requestInLocator = requestInLocator;
|
|
267
267
|
exports.saveInLocator = saveInLocator;
|
|
268
268
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../esm/stores/context.store.js","../esm/stores/inject.store.js","../esm/stores/injectable.store.js","../esm/stores/locator.store.js","../esm/stores/scope.store.js","../esm/factories/container.factory.js","../esm/factories/invertly.factory.js","../esm/decorators/inject.decorator.js","../esm/decorators/injectable.decorator.js"],"sourcesContent":["export class Context {\n constructor() {\n this.store = new Map();\n }\n save(key, value) {\n this.store.set(key, value);\n }\n findOrNull(key) {\n return this.store.get(key);\n }\n find(key) {\n return this.store.get(key);\n }\n contain(key) {\n return this.store.has(key);\n }\n}\n//# sourceMappingURL=context.store.js.map","import { SecureMap } from '@rolster/commons';\nexport class InjectStore {\n constructor() {\n this.collection = new SecureMap(() => []);\n }\n push(options) {\n const injects = this.collection.request(options.parent);\n injects[options.index] = options;\n }\n request(token) {\n return this.collection.request(token);\n }\n}\n//# sourceMappingURL=inject.store.js.map","export class InjectableStore {\n constructor() {\n this.collection = new Map();\n }\n push(options) {\n this.collection.set(options.token, options);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=injectable.store.js.map","class LocatorStore {\n constructor() {\n this.collection = new Map();\n }\n save(options) {\n options.forEach((option) => {\n this.collection.set(option.token, option);\n });\n }\n push(reference, token) {\n if (typeof reference !== 'string' && typeof reference !== 'symbol') {\n this.collection.set(reference.token, reference);\n }\n else if (token) {\n this.collection.set(reference, { token, useClass: token });\n }\n }\n request(token) {\n return this.collection.get(token);\n }\n}\nconst LOCATOR_STORE = new LocatorStore();\nexport function saveInLocator(dependencies) {\n LOCATOR_STORE.save(dependencies);\n}\nexport function pushInLocator(reference, token) {\n LOCATOR_STORE.push(reference, token);\n}\nexport function requestInLocator(token) {\n return LOCATOR_STORE.request(token);\n}\n//# sourceMappingURL=locator.store.js.map","export class ScopeStore {\n constructor() {\n this.collection = new Map();\n }\n push(token, value) {\n this.collection.set(token, value);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=scope.store.js.map","import 'reflect-metadata';\nimport { Context } from '../stores/context.store';\nimport { InjectStore } from '../stores/inject.store';\nimport { InjectableStore } from '../stores/injectable.store';\nimport { requestInLocator } from '../stores/locator.store';\nimport { ScopeStore } from '../stores/scope.store';\nclass DataCenter {\n constructor() {\n this.scope = new ScopeStore();\n this.injectables = new InjectableStore();\n this.injects = new InjectStore();\n }\n}\nclass InjectableFactory {\n constructor(dataCenter, context) {\n this.dataCenter = dataCenter;\n this.context = context;\n this.scope = new ScopeStore();\n }\n build(injectable) {\n const options = this.dataCenter.injectables.request(injectable);\n if (!options) {\n throw Error(`Class ${injectable.toString()} is not found in the collection`);\n }\n return this.createInstance(options);\n }\n createObject(token) {\n const Constructor = token;\n const tokens = this.reflectTokens(Constructor);\n const params = tokens\n ? this.createReflectArgs({ token, tokens })\n : this.createTokenArgs(token);\n return new Constructor(...params);\n }\n reflectTokens(constructable) {\n return Reflect.getMetadata('design:paramtypes', constructable);\n }\n createFromScope({ token, scope }) {\n let instance = scope.request(token);\n if (!instance) {\n instance = this.createObject(token);\n scope.push(token, instance);\n }\n return instance;\n }\n createFromContainer(token) {\n return this.createFromScope({ token, scope: this.dataCenter.scope });\n }\n createInstance(options) {\n const { token, scopeable, singleton } = options;\n if (singleton) {\n return this.createFromContainer(token);\n }\n if (scopeable) {\n return this.createFromScope({ token, scope: this.scope });\n }\n return this.createObject(token);\n }\n createFromDecorator(inject) {\n const { token, scopeable, singleton } = inject;\n const locator = requestInLocator(token);\n return this.createInstance({\n token: locator?.useClass ?? token,\n scopeable,\n singleton\n });\n }\n createReflectArgs({ tokens, token }) {\n const injects = this.dataCenter.injects.request(token);\n return tokens.map((token, index) => {\n const inject = injects[index];\n if (inject) {\n return this.createFromDecorator(inject);\n }\n const locator = requestInLocator(token);\n if (locator) {\n return this.createInstance({\n ...locator,\n token: locator.useClass\n });\n }\n if (token === Context) {\n return this.context;\n }\n return this.createObject(token);\n });\n }\n createTokenArgs(token) {\n const injects = this.dataCenter.injects.request(token);\n return injects.reduce((objects, options) => {\n objects[options.index] = this.createInstance({ ...options });\n return objects;\n }, []);\n }\n}\nexport class InvertlyContainer {\n constructor() {\n this.dataCenter = new DataCenter();\n }\n registerInjectable(options) {\n this.dataCenter.injectables.push(options);\n }\n registerInject(options) {\n this.dataCenter.injects.push(options);\n }\n createInjectable(options) {\n return new InjectableFactory(this.dataCenter, options.context).build(options.token);\n }\n}\n//# sourceMappingURL=container.factory.js.map","import { InvertlyContainer } from './container.factory';\nconst INVERTLY_CONTAINER = new InvertlyContainer();\nfunction createFromInvertly(options, container) {\n return (container ?? INVERTLY_CONTAINER).createInjectable(options);\n}\nexport function invertly(token, container) {\n return createFromInvertly({ token }, container);\n}\nexport function registerInjectable(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInjectable(options);\n}\nexport function registerInject(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInject(options);\n}\nexport function registerDependency(token, options) {\n registerInjectable({\n token,\n scopeable: options.scopeable ?? false,\n singleton: options.singleton ?? false\n }, options.container);\n options.injects?.forEach((inject, indexParent) => {\n registerInject({\n index: inject.index ?? indexParent,\n parent: token,\n scopeable: inject.scopeable ?? options.scopeable ?? false,\n singleton: inject.singleton ?? options.singleton ?? false,\n token: inject.token\n }, options.container);\n });\n}\nexport { InvertlyContainer } from './container.factory';\nexport default createFromInvertly;\n//# sourceMappingURL=invertly.factory.js.map","import { registerInject } from '../factories/invertly.factory';\nfunction createInject(inject) {\n return (parent, _, index) => {\n registerInject({ ...inject, index, parent });\n };\n}\nexport function Singleton(token) {\n return createInject({ token, scopeable: false, singleton: true });\n}\nexport function Scope(token) {\n return createInject({ token, scopeable: true, singleton: false });\n}\nexport function Factory(token) {\n return createInject({ token, scopeable: false, singleton: false });\n}\n//# sourceMappingURL=inject.decorator.js.map","import { registerInjectable } from '../factories/invertly.factory';\nexport function Injectable(options) {\n return (token) => {\n registerInjectable({\n scopeable: !!options?.scopeable,\n singleton: !!options?.singleton,\n token\n });\n };\n}\n//# sourceMappingURL=injectable.decorator.js.map"],"names":["SecureMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../esm/stores/context.store.js","../esm/stores/inject.store.js","../esm/stores/injectable.store.js","../esm/stores/locator.store.js","../esm/stores/scope.store.js","../esm/factories/container.factory.js","../esm/factories/invertly.factory.js","../esm/decorators/inject.decorator.js","../esm/decorators/injectable.decorator.js"],"sourcesContent":["export class Context {\n constructor() {\n this.store = new Map();\n }\n save(key, value) {\n this.store.set(key, value);\n }\n findOrNull(key) {\n return this.store.get(key);\n }\n find(key) {\n return this.store.get(key);\n }\n contain(key) {\n return this.store.has(key);\n }\n}\n//# sourceMappingURL=context.store.js.map","import { SecureMap } from '@rolster/commons';\nexport class InjectStore {\n constructor() {\n this.collection = new SecureMap(() => []);\n }\n push(options) {\n const injects = this.collection.request(options.parent);\n injects[options.index] = options;\n }\n request(token) {\n return this.collection.request(token);\n }\n}\n//# sourceMappingURL=inject.store.js.map","export class InjectableStore {\n constructor() {\n this.collection = new Map();\n }\n push(options) {\n this.collection.set(options.token, options);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=injectable.store.js.map","class LocatorStore {\n constructor() {\n this.collection = new Map();\n }\n save(options) {\n options.forEach((option) => {\n this.collection.set(option.token, option);\n });\n }\n push(reference, token) {\n if (typeof reference !== 'string' && typeof reference !== 'symbol') {\n this.collection.set(reference.token, reference);\n }\n else if (token) {\n this.collection.set(reference, { token, useClass: token });\n }\n }\n find(token) {\n return this.collection.get(token);\n }\n}\nconst LOCATOR_STORE = new LocatorStore();\nexport function findInLocator(token) {\n return LOCATOR_STORE.find(token);\n}\nexport function saveInLocator(dependencies) {\n LOCATOR_STORE.save(dependencies);\n}\nexport function pushInLocator(reference, token) {\n LOCATOR_STORE.push(reference, token);\n}\n//# sourceMappingURL=locator.store.js.map","export class ScopeStore {\n constructor() {\n this.collection = new Map();\n }\n push(token, value) {\n this.collection.set(token, value);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=scope.store.js.map","import 'reflect-metadata';\nimport { Context } from '../stores/context.store';\nimport { InjectStore } from '../stores/inject.store';\nimport { InjectableStore } from '../stores/injectable.store';\nimport { findInLocator } from '../stores/locator.store';\nimport { ScopeStore } from '../stores/scope.store';\nclass DataCenter {\n constructor() {\n this.scope = new ScopeStore();\n this.injectables = new InjectableStore();\n this.injects = new InjectStore();\n }\n}\nclass InjectableFactory {\n constructor(dataCenter, context) {\n this.dataCenter = dataCenter;\n this.context = context;\n this.scope = new ScopeStore();\n }\n build(injectable) {\n const options = this.dataCenter.injectables.request(injectable);\n if (!options) {\n throw Error(`Class ${injectable.toString()} is not found in the collection`);\n }\n return this.createInstance(options);\n }\n createObject(token) {\n const Constructor = token;\n const tokens = this.reflectTokens(Constructor);\n const params = tokens\n ? this.createReflectArgs({ token, tokens })\n : this.createTokenArgs(token);\n return new Constructor(...params);\n }\n reflectTokens(constructable) {\n return Reflect.getMetadata('design:paramtypes', constructable);\n }\n createFromScope({ token, scope }) {\n let instance = scope.request(token);\n if (!instance) {\n instance = this.createObject(token);\n scope.push(token, instance);\n }\n return instance;\n }\n createFromContainer(token) {\n return this.createFromScope({ token, scope: this.dataCenter.scope });\n }\n createInstance(options) {\n const { token, scopeable, singleton } = options;\n if (singleton) {\n return this.createFromContainer(token);\n }\n if (scopeable) {\n return this.createFromScope({ token, scope: this.scope });\n }\n return this.createObject(token);\n }\n createFromDecorator(inject) {\n const { token, scopeable, singleton } = inject;\n const locator = findInLocator(token);\n return this.createInstance({\n token: locator?.useClass ?? token,\n scopeable,\n singleton\n });\n }\n createReflectArgs({ tokens, token }) {\n const injects = this.dataCenter.injects.request(token);\n return tokens.map((token, index) => {\n const inject = injects[index];\n if (inject) {\n return this.createFromDecorator(inject);\n }\n const locator = findInLocator(token);\n if (locator) {\n return this.createInstance({\n ...locator,\n token: locator.useClass\n });\n }\n if (token === Context) {\n return this.context;\n }\n return this.createObject(token);\n });\n }\n createTokenArgs(token) {\n const injects = this.dataCenter.injects.request(token);\n return injects.reduce((objects, options) => {\n objects[options.index] = this.createInstance({ ...options });\n return objects;\n }, []);\n }\n}\nexport class InvertlyContainer {\n constructor() {\n this.dataCenter = new DataCenter();\n }\n registerInjectable(options) {\n this.dataCenter.injectables.push(options);\n }\n registerInject(options) {\n this.dataCenter.injects.push(options);\n }\n createInjectable(options) {\n return new InjectableFactory(this.dataCenter, options.context).build(options.token);\n }\n}\n//# sourceMappingURL=container.factory.js.map","import { InvertlyContainer } from './container.factory';\nconst INVERTLY_CONTAINER = new InvertlyContainer();\nfunction createFromInvertly(options, container) {\n return (container ?? INVERTLY_CONTAINER).createInjectable(options);\n}\nexport function invertly(token, container) {\n return createFromInvertly({ token }, container);\n}\nexport function registerInjectable(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInjectable(options);\n}\nexport function registerInject(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInject(options);\n}\nexport function registerDependency(token, options) {\n registerInjectable({\n token,\n scopeable: options.scopeable ?? false,\n singleton: options.singleton ?? false\n }, options.container);\n options.injects?.forEach((inject, indexParent) => {\n registerInject({\n index: inject.index ?? indexParent,\n parent: token,\n scopeable: inject.scopeable ?? options.scopeable ?? false,\n singleton: inject.singleton ?? options.singleton ?? false,\n token: inject.token\n }, options.container);\n });\n}\nexport { InvertlyContainer } from './container.factory';\nexport default createFromInvertly;\n//# sourceMappingURL=invertly.factory.js.map","import { registerInject } from '../factories/invertly.factory';\nfunction createInject(inject) {\n return (parent, _, index) => {\n registerInject({ ...inject, index, parent });\n };\n}\nexport function Singleton(token) {\n return createInject({ token, scopeable: false, singleton: true });\n}\nexport function Scope(token) {\n return createInject({ token, scopeable: true, singleton: false });\n}\nexport function Factory(token) {\n return createInject({ token, scopeable: false, singleton: false });\n}\n//# sourceMappingURL=inject.decorator.js.map","import { registerInjectable } from '../factories/invertly.factory';\nexport function Injectable(options) {\n return (token) => {\n registerInjectable({\n scopeable: !!options?.scopeable,\n singleton: !!options?.singleton,\n token\n });\n };\n}\n//# sourceMappingURL=injectable.decorator.js.map"],"names":["SecureMap"],"mappings":"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"}
|
package/dist/es/index.js
CHANGED
|
@@ -61,20 +61,20 @@ class LocatorStore {
|
|
|
61
61
|
this.collection.set(reference, { token, useClass: token });
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
find(token) {
|
|
65
65
|
return this.collection.get(token);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
const LOCATOR_STORE = new LocatorStore();
|
|
69
|
+
function findInLocator(token) {
|
|
70
|
+
return LOCATOR_STORE.find(token);
|
|
71
|
+
}
|
|
69
72
|
function saveInLocator(dependencies) {
|
|
70
73
|
LOCATOR_STORE.save(dependencies);
|
|
71
74
|
}
|
|
72
75
|
function pushInLocator(reference, token) {
|
|
73
76
|
LOCATOR_STORE.push(reference, token);
|
|
74
77
|
}
|
|
75
|
-
function requestInLocator(token) {
|
|
76
|
-
return LOCATOR_STORE.request(token);
|
|
77
|
-
}
|
|
78
78
|
|
|
79
79
|
class ScopeStore {
|
|
80
80
|
constructor() {
|
|
@@ -142,7 +142,7 @@ class InjectableFactory {
|
|
|
142
142
|
}
|
|
143
143
|
createFromDecorator(inject) {
|
|
144
144
|
const { token, scopeable, singleton } = inject;
|
|
145
|
-
const locator =
|
|
145
|
+
const locator = findInLocator(token);
|
|
146
146
|
return this.createInstance({
|
|
147
147
|
token: locator?.useClass ?? token,
|
|
148
148
|
scopeable,
|
|
@@ -156,7 +156,7 @@ class InjectableFactory {
|
|
|
156
156
|
if (inject) {
|
|
157
157
|
return this.createFromDecorator(inject);
|
|
158
158
|
}
|
|
159
|
-
const locator =
|
|
159
|
+
const locator = findInLocator(token);
|
|
160
160
|
if (locator) {
|
|
161
161
|
return this.createInstance({
|
|
162
162
|
...locator,
|
|
@@ -247,5 +247,5 @@ function Injectable(options) {
|
|
|
247
247
|
};
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
-
export { Context, Factory, Injectable, InvertlyContainer, Scope, Singleton, createFromInvertly as default, invertly, pushInLocator, registerDependency, registerInject, registerInjectable,
|
|
250
|
+
export { Context, Factory, Injectable, InvertlyContainer, Scope, Singleton, createFromInvertly as default, findInLocator, invertly, pushInLocator, registerDependency, registerInject, registerInjectable, saveInLocator };
|
|
251
251
|
//# sourceMappingURL=index.js.map
|
package/dist/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../esm/stores/context.store.js","../esm/stores/inject.store.js","../esm/stores/injectable.store.js","../esm/stores/locator.store.js","../esm/stores/scope.store.js","../esm/factories/container.factory.js","../esm/factories/invertly.factory.js","../esm/decorators/inject.decorator.js","../esm/decorators/injectable.decorator.js"],"sourcesContent":["export class Context {\n constructor() {\n this.store = new Map();\n }\n save(key, value) {\n this.store.set(key, value);\n }\n findOrNull(key) {\n return this.store.get(key);\n }\n find(key) {\n return this.store.get(key);\n }\n contain(key) {\n return this.store.has(key);\n }\n}\n//# sourceMappingURL=context.store.js.map","import { SecureMap } from '@rolster/commons';\nexport class InjectStore {\n constructor() {\n this.collection = new SecureMap(() => []);\n }\n push(options) {\n const injects = this.collection.request(options.parent);\n injects[options.index] = options;\n }\n request(token) {\n return this.collection.request(token);\n }\n}\n//# sourceMappingURL=inject.store.js.map","export class InjectableStore {\n constructor() {\n this.collection = new Map();\n }\n push(options) {\n this.collection.set(options.token, options);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=injectable.store.js.map","class LocatorStore {\n constructor() {\n this.collection = new Map();\n }\n save(options) {\n options.forEach((option) => {\n this.collection.set(option.token, option);\n });\n }\n push(reference, token) {\n if (typeof reference !== 'string' && typeof reference !== 'symbol') {\n this.collection.set(reference.token, reference);\n }\n else if (token) {\n this.collection.set(reference, { token, useClass: token });\n }\n }\n request(token) {\n return this.collection.get(token);\n }\n}\nconst LOCATOR_STORE = new LocatorStore();\nexport function saveInLocator(dependencies) {\n LOCATOR_STORE.save(dependencies);\n}\nexport function pushInLocator(reference, token) {\n LOCATOR_STORE.push(reference, token);\n}\nexport function requestInLocator(token) {\n return LOCATOR_STORE.request(token);\n}\n//# sourceMappingURL=locator.store.js.map","export class ScopeStore {\n constructor() {\n this.collection = new Map();\n }\n push(token, value) {\n this.collection.set(token, value);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=scope.store.js.map","import 'reflect-metadata';\nimport { Context } from '../stores/context.store';\nimport { InjectStore } from '../stores/inject.store';\nimport { InjectableStore } from '../stores/injectable.store';\nimport { requestInLocator } from '../stores/locator.store';\nimport { ScopeStore } from '../stores/scope.store';\nclass DataCenter {\n constructor() {\n this.scope = new ScopeStore();\n this.injectables = new InjectableStore();\n this.injects = new InjectStore();\n }\n}\nclass InjectableFactory {\n constructor(dataCenter, context) {\n this.dataCenter = dataCenter;\n this.context = context;\n this.scope = new ScopeStore();\n }\n build(injectable) {\n const options = this.dataCenter.injectables.request(injectable);\n if (!options) {\n throw Error(`Class ${injectable.toString()} is not found in the collection`);\n }\n return this.createInstance(options);\n }\n createObject(token) {\n const Constructor = token;\n const tokens = this.reflectTokens(Constructor);\n const params = tokens\n ? this.createReflectArgs({ token, tokens })\n : this.createTokenArgs(token);\n return new Constructor(...params);\n }\n reflectTokens(constructable) {\n return Reflect.getMetadata('design:paramtypes', constructable);\n }\n createFromScope({ token, scope }) {\n let instance = scope.request(token);\n if (!instance) {\n instance = this.createObject(token);\n scope.push(token, instance);\n }\n return instance;\n }\n createFromContainer(token) {\n return this.createFromScope({ token, scope: this.dataCenter.scope });\n }\n createInstance(options) {\n const { token, scopeable, singleton } = options;\n if (singleton) {\n return this.createFromContainer(token);\n }\n if (scopeable) {\n return this.createFromScope({ token, scope: this.scope });\n }\n return this.createObject(token);\n }\n createFromDecorator(inject) {\n const { token, scopeable, singleton } = inject;\n const locator = requestInLocator(token);\n return this.createInstance({\n token: locator?.useClass ?? token,\n scopeable,\n singleton\n });\n }\n createReflectArgs({ tokens, token }) {\n const injects = this.dataCenter.injects.request(token);\n return tokens.map((token, index) => {\n const inject = injects[index];\n if (inject) {\n return this.createFromDecorator(inject);\n }\n const locator = requestInLocator(token);\n if (locator) {\n return this.createInstance({\n ...locator,\n token: locator.useClass\n });\n }\n if (token === Context) {\n return this.context;\n }\n return this.createObject(token);\n });\n }\n createTokenArgs(token) {\n const injects = this.dataCenter.injects.request(token);\n return injects.reduce((objects, options) => {\n objects[options.index] = this.createInstance({ ...options });\n return objects;\n }, []);\n }\n}\nexport class InvertlyContainer {\n constructor() {\n this.dataCenter = new DataCenter();\n }\n registerInjectable(options) {\n this.dataCenter.injectables.push(options);\n }\n registerInject(options) {\n this.dataCenter.injects.push(options);\n }\n createInjectable(options) {\n return new InjectableFactory(this.dataCenter, options.context).build(options.token);\n }\n}\n//# sourceMappingURL=container.factory.js.map","import { InvertlyContainer } from './container.factory';\nconst INVERTLY_CONTAINER = new InvertlyContainer();\nfunction createFromInvertly(options, container) {\n return (container ?? INVERTLY_CONTAINER).createInjectable(options);\n}\nexport function invertly(token, container) {\n return createFromInvertly({ token }, container);\n}\nexport function registerInjectable(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInjectable(options);\n}\nexport function registerInject(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInject(options);\n}\nexport function registerDependency(token, options) {\n registerInjectable({\n token,\n scopeable: options.scopeable ?? false,\n singleton: options.singleton ?? false\n }, options.container);\n options.injects?.forEach((inject, indexParent) => {\n registerInject({\n index: inject.index ?? indexParent,\n parent: token,\n scopeable: inject.scopeable ?? options.scopeable ?? false,\n singleton: inject.singleton ?? options.singleton ?? false,\n token: inject.token\n }, options.container);\n });\n}\nexport { InvertlyContainer } from './container.factory';\nexport default createFromInvertly;\n//# sourceMappingURL=invertly.factory.js.map","import { registerInject } from '../factories/invertly.factory';\nfunction createInject(inject) {\n return (parent, _, index) => {\n registerInject({ ...inject, index, parent });\n };\n}\nexport function Singleton(token) {\n return createInject({ token, scopeable: false, singleton: true });\n}\nexport function Scope(token) {\n return createInject({ token, scopeable: true, singleton: false });\n}\nexport function Factory(token) {\n return createInject({ token, scopeable: false, singleton: false });\n}\n//# sourceMappingURL=inject.decorator.js.map","import { registerInjectable } from '../factories/invertly.factory';\nexport function Injectable(options) {\n return (token) => {\n registerInjectable({\n scopeable: !!options?.scopeable,\n singleton: !!options?.singleton,\n token\n });\n };\n}\n//# sourceMappingURL=injectable.decorator.js.map"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../esm/stores/context.store.js","../esm/stores/inject.store.js","../esm/stores/injectable.store.js","../esm/stores/locator.store.js","../esm/stores/scope.store.js","../esm/factories/container.factory.js","../esm/factories/invertly.factory.js","../esm/decorators/inject.decorator.js","../esm/decorators/injectable.decorator.js"],"sourcesContent":["export class Context {\n constructor() {\n this.store = new Map();\n }\n save(key, value) {\n this.store.set(key, value);\n }\n findOrNull(key) {\n return this.store.get(key);\n }\n find(key) {\n return this.store.get(key);\n }\n contain(key) {\n return this.store.has(key);\n }\n}\n//# sourceMappingURL=context.store.js.map","import { SecureMap } from '@rolster/commons';\nexport class InjectStore {\n constructor() {\n this.collection = new SecureMap(() => []);\n }\n push(options) {\n const injects = this.collection.request(options.parent);\n injects[options.index] = options;\n }\n request(token) {\n return this.collection.request(token);\n }\n}\n//# sourceMappingURL=inject.store.js.map","export class InjectableStore {\n constructor() {\n this.collection = new Map();\n }\n push(options) {\n this.collection.set(options.token, options);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=injectable.store.js.map","class LocatorStore {\n constructor() {\n this.collection = new Map();\n }\n save(options) {\n options.forEach((option) => {\n this.collection.set(option.token, option);\n });\n }\n push(reference, token) {\n if (typeof reference !== 'string' && typeof reference !== 'symbol') {\n this.collection.set(reference.token, reference);\n }\n else if (token) {\n this.collection.set(reference, { token, useClass: token });\n }\n }\n find(token) {\n return this.collection.get(token);\n }\n}\nconst LOCATOR_STORE = new LocatorStore();\nexport function findInLocator(token) {\n return LOCATOR_STORE.find(token);\n}\nexport function saveInLocator(dependencies) {\n LOCATOR_STORE.save(dependencies);\n}\nexport function pushInLocator(reference, token) {\n LOCATOR_STORE.push(reference, token);\n}\n//# sourceMappingURL=locator.store.js.map","export class ScopeStore {\n constructor() {\n this.collection = new Map();\n }\n push(token, value) {\n this.collection.set(token, value);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=scope.store.js.map","import 'reflect-metadata';\nimport { Context } from '../stores/context.store';\nimport { InjectStore } from '../stores/inject.store';\nimport { InjectableStore } from '../stores/injectable.store';\nimport { findInLocator } from '../stores/locator.store';\nimport { ScopeStore } from '../stores/scope.store';\nclass DataCenter {\n constructor() {\n this.scope = new ScopeStore();\n this.injectables = new InjectableStore();\n this.injects = new InjectStore();\n }\n}\nclass InjectableFactory {\n constructor(dataCenter, context) {\n this.dataCenter = dataCenter;\n this.context = context;\n this.scope = new ScopeStore();\n }\n build(injectable) {\n const options = this.dataCenter.injectables.request(injectable);\n if (!options) {\n throw Error(`Class ${injectable.toString()} is not found in the collection`);\n }\n return this.createInstance(options);\n }\n createObject(token) {\n const Constructor = token;\n const tokens = this.reflectTokens(Constructor);\n const params = tokens\n ? this.createReflectArgs({ token, tokens })\n : this.createTokenArgs(token);\n return new Constructor(...params);\n }\n reflectTokens(constructable) {\n return Reflect.getMetadata('design:paramtypes', constructable);\n }\n createFromScope({ token, scope }) {\n let instance = scope.request(token);\n if (!instance) {\n instance = this.createObject(token);\n scope.push(token, instance);\n }\n return instance;\n }\n createFromContainer(token) {\n return this.createFromScope({ token, scope: this.dataCenter.scope });\n }\n createInstance(options) {\n const { token, scopeable, singleton } = options;\n if (singleton) {\n return this.createFromContainer(token);\n }\n if (scopeable) {\n return this.createFromScope({ token, scope: this.scope });\n }\n return this.createObject(token);\n }\n createFromDecorator(inject) {\n const { token, scopeable, singleton } = inject;\n const locator = findInLocator(token);\n return this.createInstance({\n token: locator?.useClass ?? token,\n scopeable,\n singleton\n });\n }\n createReflectArgs({ tokens, token }) {\n const injects = this.dataCenter.injects.request(token);\n return tokens.map((token, index) => {\n const inject = injects[index];\n if (inject) {\n return this.createFromDecorator(inject);\n }\n const locator = findInLocator(token);\n if (locator) {\n return this.createInstance({\n ...locator,\n token: locator.useClass\n });\n }\n if (token === Context) {\n return this.context;\n }\n return this.createObject(token);\n });\n }\n createTokenArgs(token) {\n const injects = this.dataCenter.injects.request(token);\n return injects.reduce((objects, options) => {\n objects[options.index] = this.createInstance({ ...options });\n return objects;\n }, []);\n }\n}\nexport class InvertlyContainer {\n constructor() {\n this.dataCenter = new DataCenter();\n }\n registerInjectable(options) {\n this.dataCenter.injectables.push(options);\n }\n registerInject(options) {\n this.dataCenter.injects.push(options);\n }\n createInjectable(options) {\n return new InjectableFactory(this.dataCenter, options.context).build(options.token);\n }\n}\n//# sourceMappingURL=container.factory.js.map","import { InvertlyContainer } from './container.factory';\nconst INVERTLY_CONTAINER = new InvertlyContainer();\nfunction createFromInvertly(options, container) {\n return (container ?? INVERTLY_CONTAINER).createInjectable(options);\n}\nexport function invertly(token, container) {\n return createFromInvertly({ token }, container);\n}\nexport function registerInjectable(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInjectable(options);\n}\nexport function registerInject(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInject(options);\n}\nexport function registerDependency(token, options) {\n registerInjectable({\n token,\n scopeable: options.scopeable ?? false,\n singleton: options.singleton ?? false\n }, options.container);\n options.injects?.forEach((inject, indexParent) => {\n registerInject({\n index: inject.index ?? indexParent,\n parent: token,\n scopeable: inject.scopeable ?? options.scopeable ?? false,\n singleton: inject.singleton ?? options.singleton ?? false,\n token: inject.token\n }, options.container);\n });\n}\nexport { InvertlyContainer } from './container.factory';\nexport default createFromInvertly;\n//# sourceMappingURL=invertly.factory.js.map","import { registerInject } from '../factories/invertly.factory';\nfunction createInject(inject) {\n return (parent, _, index) => {\n registerInject({ ...inject, index, parent });\n };\n}\nexport function Singleton(token) {\n return createInject({ token, scopeable: false, singleton: true });\n}\nexport function Scope(token) {\n return createInject({ token, scopeable: true, singleton: false });\n}\nexport function Factory(token) {\n return createInject({ token, scopeable: false, singleton: false });\n}\n//# sourceMappingURL=inject.decorator.js.map","import { registerInjectable } from '../factories/invertly.factory';\nexport function Injectable(options) {\n return (token) => {\n registerInjectable({\n scopeable: !!options?.scopeable,\n singleton: !!options?.singleton,\n token\n });\n };\n}\n//# sourceMappingURL=injectable.decorator.js.map"],"names":[],"mappings":";;;AAAO,MAAM,OAAO,CAAC;AACrB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,CAAC,GAAG,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK;AACL;;ACfO,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChE,QAAQ,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9C,KAAK;AACL;;ACZO,MAAM,eAAe,CAAC;AAC7B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;;ACVA,MAAM,YAAY,CAAC;AACnB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACpC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;AAC3B,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AAC5E,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC5D,SAAS;AACT,aAAa,IAAI,KAAK,EAAE;AACxB,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE,SAAS;AACT,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL,CAAC;AACD,MAAM,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;AAClC,SAAS,aAAa,CAAC,KAAK,EAAE;AACrC,IAAI,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AACM,SAAS,aAAa,CAAC,YAAY,EAAE;AAC5C,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,CAAC;AACM,SAAS,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE;AAChD,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACzC;;AC9BO,MAAM,UAAU,CAAC;AACxB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;;ACJA,MAAM,UAAU,CAAC;AACjB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;AACjD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AACzC,KAAK;AACL,CAAC;AACD,MAAM,iBAAiB,CAAC;AACxB,IAAI,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE;AACrC,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;AACtC,KAAK;AACL,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,+BAA+B,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC;AAClC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACvD,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,cAAc,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACvD,cAAc,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,OAAO,IAAI,WAAW,CAAC,GAAG,MAAM,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,aAAa,CAAC,aAAa,EAAE;AACjC,QAAQ,OAAO,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;AACtC,QAAQ,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAChD,YAAY,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,mBAAmB,CAAC,KAAK,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,cAAc,CAAC,OAAO,EAAE;AAC5B,QAAQ,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;AACxD,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACnD,SAAS;AACT,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,mBAAmB,CAAC,MAAM,EAAE;AAChC,QAAQ,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AACvD,QAAQ,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC;AACnC,YAAY,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK;AAC7C,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;AACzC,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/D,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AAC5C,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1C,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACxD,aAAa;AACb,YAAY,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,OAAO,IAAI,CAAC,cAAc,CAAC;AAC3C,oBAAoB,GAAG,OAAO;AAC9B,oBAAoB,KAAK,EAAE,OAAO,CAAC,QAAQ;AAC3C,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,YAAY,IAAI,KAAK,KAAK,OAAO,EAAE;AACnC,gBAAgB,OAAO,IAAI,CAAC,OAAO,CAAC;AACpC,aAAa;AACb,YAAY,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/D,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK;AACpD,YAAY,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACzE,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS,EAAE,EAAE,CAAC,CAAC;AACf,KAAK;AACL,CAAC;AACM,MAAM,iBAAiB,CAAC;AAC/B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;AAC3C,KAAK;AACL,IAAI,kBAAkB,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,cAAc,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5F,KAAK;AACL;;AC3GA,MAAM,kBAAkB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACnD,SAAS,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE;AAChD,IAAI,OAAO,CAAC,SAAS,IAAI,kBAAkB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AACM,SAAS,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE;AAC3C,IAAI,OAAO,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;AACpD,CAAC;AACM,SAAS,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE;AACvD,IAAI,CAAC,SAAS,IAAI,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC;AACM,SAAS,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;AACnD,IAAI,CAAC,SAAS,IAAI,kBAAkB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC;AACM,SAAS,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE;AACnD,IAAI,kBAAkB,CAAC;AACvB,QAAQ,KAAK;AACb,QAAQ,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;AAC7C,QAAQ,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;AAC7C,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AAC1B,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,KAAK;AACtD,QAAQ,cAAc,CAAC;AACvB,YAAY,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,WAAW;AAC9C,YAAY,MAAM,EAAE,KAAK;AACzB,YAAY,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,KAAK;AACrE,YAAY,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,KAAK;AACrE,YAAY,KAAK,EAAE,MAAM,CAAC,KAAK;AAC/B,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP;;AC5BA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,KAAK;AACjC,QAAQ,cAAc,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACrD,KAAK,CAAC;AACN,CAAC;AACM,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,IAAI,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC;AACM,SAAS,KAAK,CAAC,KAAK,EAAE;AAC7B,IAAI,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,CAAC;AACM,SAAS,OAAO,CAAC,KAAK,EAAE;AAC/B,IAAI,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE;;ACbO,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,IAAI,OAAO,CAAC,KAAK,KAAK;AACtB,QAAQ,kBAAkB,CAAC;AAC3B,YAAY,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS;AAC3C,YAAY,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS;AAC3C,YAAY,KAAK;AACjB,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;;;;"}
|
|
@@ -2,7 +2,7 @@ import 'reflect-metadata';
|
|
|
2
2
|
import { Context } from '../stores/context.store';
|
|
3
3
|
import { InjectStore } from '../stores/inject.store';
|
|
4
4
|
import { InjectableStore } from '../stores/injectable.store';
|
|
5
|
-
import {
|
|
5
|
+
import { findInLocator } from '../stores/locator.store';
|
|
6
6
|
import { ScopeStore } from '../stores/scope.store';
|
|
7
7
|
class DataCenter {
|
|
8
8
|
constructor() {
|
|
@@ -58,7 +58,7 @@ class InjectableFactory {
|
|
|
58
58
|
}
|
|
59
59
|
createFromDecorator(inject) {
|
|
60
60
|
const { token, scopeable, singleton } = inject;
|
|
61
|
-
const locator =
|
|
61
|
+
const locator = findInLocator(token);
|
|
62
62
|
return this.createInstance({
|
|
63
63
|
token: locator?.useClass ?? token,
|
|
64
64
|
scopeable,
|
|
@@ -72,7 +72,7 @@ class InjectableFactory {
|
|
|
72
72
|
if (inject) {
|
|
73
73
|
return this.createFromDecorator(inject);
|
|
74
74
|
}
|
|
75
|
-
const locator =
|
|
75
|
+
const locator = findInLocator(token);
|
|
76
76
|
if (locator) {
|
|
77
77
|
return this.createInstance({
|
|
78
78
|
...locator,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.factory.js","sourceRoot":"","sources":["../../../src/factories/container.factory.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"container.factory.js","sourceRoot":"","sources":["../../../src/factories/container.factory.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { Factory, Scope, Singleton } from './decorators/inject.decorator';
|
|
|
3
3
|
export { Injectable } from './decorators/injectable.decorator';
|
|
4
4
|
export { InvertlyContainer, invertly, registerDependency, registerInject, registerInjectable } from './factories/invertly.factory';
|
|
5
5
|
export { Context } from './stores/context.store';
|
|
6
|
-
export {
|
|
6
|
+
export { findInLocator, pushInLocator, saveInLocator } from './stores/locator.store';
|
|
7
7
|
export { Constructable } from './types/constructable.type';
|
|
8
8
|
export { InjectToken } from './types/inject.type';
|
|
9
9
|
export { InjectableToken } from './types/injectable.type';
|
package/dist/esm/index.js
CHANGED
|
@@ -3,6 +3,6 @@ export { Factory, Scope, Singleton } from './decorators/inject.decorator';
|
|
|
3
3
|
export { Injectable } from './decorators/injectable.decorator';
|
|
4
4
|
export { InvertlyContainer, invertly, registerDependency, registerInject, registerInjectable } from './factories/invertly.factory';
|
|
5
5
|
export { Context } from './stores/context.store';
|
|
6
|
-
export {
|
|
6
|
+
export { findInLocator, pushInLocator, saveInLocator } from './stores/locator.store';
|
|
7
7
|
export default createFromInvertly;
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACd,MAAM,wBAAwB,CAAC;AAMhC,eAAe,kBAAkB,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { InjectableToken } from '../types/injectable.type';
|
|
|
3
3
|
import { LocatorOptions } from '../types/locator.type';
|
|
4
4
|
type Reference = string | symbol | LocatorOptions;
|
|
5
5
|
type Options<T> = Undefined<LocatorOptions<T>>;
|
|
6
|
+
export declare function findInLocator<T = any>(token: InjectToken<T>): Options<T>;
|
|
6
7
|
export declare function saveInLocator(dependencies: LocatorOptions[]): void;
|
|
7
8
|
export declare function pushInLocator(reference: Reference, token?: InjectableToken): void;
|
|
8
|
-
export declare function requestInLocator<T = any>(token: InjectToken<T>): Options<T>;
|
|
9
9
|
export {};
|
|
@@ -15,18 +15,18 @@ class LocatorStore {
|
|
|
15
15
|
this.collection.set(reference, { token, useClass: token });
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
find(token) {
|
|
19
19
|
return this.collection.get(token);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
const LOCATOR_STORE = new LocatorStore();
|
|
23
|
+
export function findInLocator(token) {
|
|
24
|
+
return LOCATOR_STORE.find(token);
|
|
25
|
+
}
|
|
23
26
|
export function saveInLocator(dependencies) {
|
|
24
27
|
LOCATOR_STORE.save(dependencies);
|
|
25
28
|
}
|
|
26
29
|
export function pushInLocator(reference, token) {
|
|
27
30
|
LOCATOR_STORE.push(reference, token);
|
|
28
31
|
}
|
|
29
|
-
export function requestInLocator(token) {
|
|
30
|
-
return LOCATOR_STORE.request(token);
|
|
31
|
-
}
|
|
32
32
|
//# sourceMappingURL=locator.store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator.store.js","sourceRoot":"","sources":["../../../src/stores/locator.store.ts"],"names":[],"mappings":"AAOA,MAAM,YAAY;IAAlB;QACU,eAAU,GAAqC,IAAI,GAAG,EAAE,CAAC;IAmBnE,CAAC;IAjBQ,IAAI,CAAC,OAAyB;QACnC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,IAAI,CAAC,SAAoB,EAAE,KAAuB;QACvD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACnE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"locator.store.js","sourceRoot":"","sources":["../../../src/stores/locator.store.ts"],"names":[],"mappings":"AAOA,MAAM,YAAY;IAAlB;QACU,eAAU,GAAqC,IAAI,GAAG,EAAE,CAAC;IAmBnE,CAAC;IAjBQ,IAAI,CAAC,OAAyB;QACnC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,IAAI,CAAC,SAAoB,EAAE,KAAuB;QACvD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACnE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEM,IAAI,CAAc,KAAqB;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;CACF;AAED,MAAM,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;AAEzC,MAAM,UAAU,aAAa,CAAU,KAAqB;IAC1D,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,YAA8B;IAC1D,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,SAAoB,EACpB,KAAuB;IAEvB,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rolster/invertly",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Invertly is a package that allows you to implement class mapping to identify and inject their dependencies.",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"prepublishOnly": "npm run build"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@rolster/commons": "^
|
|
29
|
+
"@rolster/commons": "^3.0.0",
|
|
30
30
|
"reflect-metadata": "^0.2.2"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|