@nexus-ioc/core 0.4.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/LICENSE +21 -0
- package/README.md +134 -0
- package/dist/browser.d.ts +1 -0
- package/dist/browser.js +6 -0
- package/dist/browser.js.map +1 -0
- package/dist/core/graph/analyze-module.d.ts +36 -0
- package/dist/core/graph/analyze-module.js +82 -0
- package/dist/core/graph/analyze-module.js.map +1 -0
- package/dist/core/graph/analyze-provider.d.ts +24 -0
- package/dist/core/graph/analyze-provider.js +57 -0
- package/dist/core/graph/analyze-provider.js.map +1 -0
- package/dist/core/graph/helpers/index.d.ts +9 -0
- package/dist/core/graph/helpers/index.js +23 -0
- package/dist/core/graph/helpers/index.js.map +1 -0
- package/dist/core/graph/module-graph.d.ts +34 -0
- package/dist/core/graph/module-graph.js +399 -0
- package/dist/core/graph/module-graph.js.map +1 -0
- package/dist/core/graph/providers/analyze-class-provider.d.ts +7 -0
- package/dist/core/graph/providers/analyze-class-provider.js +17 -0
- package/dist/core/graph/providers/analyze-class-provider.js.map +1 -0
- package/dist/core/graph/providers/analyze-factory-provider.d.ts +7 -0
- package/dist/core/graph/providers/analyze-factory-provider.js +17 -0
- package/dist/core/graph/providers/analyze-factory-provider.js.map +1 -0
- package/dist/core/graph/providers/analyze-function-provider.d.ts +5 -0
- package/dist/core/graph/providers/analyze-function-provider.js +11 -0
- package/dist/core/graph/providers/analyze-function-provider.js.map +1 -0
- package/dist/core/graph/providers/analyze-value-provider.d.ts +7 -0
- package/dist/core/graph/providers/analyze-value-provider.js +17 -0
- package/dist/core/graph/providers/analyze-value-provider.js.map +1 -0
- package/dist/core/graph/providers/provider-factory.d.ts +6 -0
- package/dist/core/graph/providers/provider-factory.js +24 -0
- package/dist/core/graph/providers/provider-factory.js.map +1 -0
- package/dist/core/modules/container.d.ts +15 -0
- package/dist/core/modules/container.js +40 -0
- package/dist/core/modules/container.js.map +1 -0
- package/dist/core/modules/module-container-factory.d.ts +9 -0
- package/dist/core/modules/module-container-factory.js +25 -0
- package/dist/core/modules/module-container-factory.js.map +1 -0
- package/dist/core/modules/module-container.d.ts +16 -0
- package/dist/core/modules/module-container.js +63 -0
- package/dist/core/modules/module-container.js.map +1 -0
- package/dist/core/modules/module-token-factory.d.ts +12 -0
- package/dist/core/modules/module-token-factory.js +48 -0
- package/dist/core/modules/module-token-factory.js.map +1 -0
- package/dist/core/modules/modules-container.d.ts +16 -0
- package/dist/core/modules/modules-container.js +43 -0
- package/dist/core/modules/modules-container.js.map +1 -0
- package/dist/core/nexus-applications.browser.d.ts +13 -0
- package/dist/core/nexus-applications.browser.js +36 -0
- package/dist/core/nexus-applications.browser.js.map +1 -0
- package/dist/core/nexus-applications.server.d.ts +13 -0
- package/dist/core/nexus-applications.server.js +36 -0
- package/dist/core/nexus-applications.server.js.map +1 -0
- package/dist/core/resolver/providers-container.d.ts +3 -0
- package/dist/core/resolver/providers-container.js +8 -0
- package/dist/core/resolver/providers-container.js.map +1 -0
- package/dist/core/resolver/resolver.d.ts +10 -0
- package/dist/core/resolver/resolver.js +126 -0
- package/dist/core/resolver/resolver.js.map +1 -0
- package/dist/decorators/global.d.ts +2 -0
- package/dist/decorators/global.js +12 -0
- package/dist/decorators/global.js.map +1 -0
- package/dist/decorators/inject.d.ts +3 -0
- package/dist/decorators/inject.js +27 -0
- package/dist/decorators/inject.js.map +1 -0
- package/dist/decorators/injectable.d.ts +3 -0
- package/dist/decorators/injectable.js +12 -0
- package/dist/decorators/injectable.js.map +1 -0
- package/dist/decorators/nsModule.d.ts +3 -0
- package/dist/decorators/nsModule.js +16 -0
- package/dist/decorators/nsModule.js.map +1 -0
- package/dist/decorators/optional.d.ts +2 -0
- package/dist/decorators/optional.js +20 -0
- package/dist/decorators/optional.js.map +1 -0
- package/dist/errors/container-not-compiled.error.d.ts +3 -0
- package/dist/errors/container-not-compiled.error.js +12 -0
- package/dist/errors/container-not-compiled.error.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/abstract.interface.d.ts +3 -0
- package/dist/interfaces/abstract.interface.js +3 -0
- package/dist/interfaces/abstract.interface.js.map +1 -0
- package/dist/interfaces/constants.d.ts +12 -0
- package/dist/interfaces/constants.js +16 -0
- package/dist/interfaces/constants.js.map +1 -0
- package/dist/interfaces/dynamic-module.interface.d.ts +13 -0
- package/dist/interfaces/dynamic-module.interface.js +3 -0
- package/dist/interfaces/dynamic-module.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +15 -0
- package/dist/interfaces/index.js +19 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/injectable.interface.d.ts +4 -0
- package/dist/interfaces/injectable.interface.js +3 -0
- package/dist/interfaces/injectable.interface.js.map +1 -0
- package/dist/interfaces/injection-token.interface.d.ts +3 -0
- package/dist/interfaces/injection-token.interface.js +3 -0
- package/dist/interfaces/injection-token.interface.js.map +1 -0
- package/dist/interfaces/module-metadata.interface.d.ts +8 -0
- package/dist/interfaces/module-metadata.interface.js +3 -0
- package/dist/interfaces/module-metadata.interface.js.map +1 -0
- package/dist/interfaces/module-types.interface.d.ts +20 -0
- package/dist/interfaces/module-types.interface.js +3 -0
- package/dist/interfaces/module-types.interface.js.map +1 -0
- package/dist/interfaces/modules/container.interface.d.ts +16 -0
- package/dist/interfaces/modules/container.interface.js +3 -0
- package/dist/interfaces/modules/container.interface.js.map +1 -0
- package/dist/interfaces/modules/index.d.ts +7 -0
- package/dist/interfaces/modules/index.js +11 -0
- package/dist/interfaces/modules/index.js.map +1 -0
- package/dist/interfaces/modules/module-container-factory.interface.d.ts +7 -0
- package/dist/interfaces/modules/module-container-factory.interface.js +3 -0
- package/dist/interfaces/modules/module-container-factory.interface.js.map +1 -0
- package/dist/interfaces/modules/module-container.interface.d.ts +13 -0
- package/dist/interfaces/modules/module-container.interface.js +3 -0
- package/dist/interfaces/modules/module-container.interface.js.map +1 -0
- package/dist/interfaces/modules/module-graph.interface.d.ts +59 -0
- package/dist/interfaces/modules/module-graph.interface.js +16 -0
- package/dist/interfaces/modules/module-graph.interface.js.map +1 -0
- package/dist/interfaces/modules/module-token-factory.interface.d.ts +5 -0
- package/dist/interfaces/modules/module-token-factory.interface.js +3 -0
- package/dist/interfaces/modules/module-token-factory.interface.js.map +1 -0
- package/dist/interfaces/modules/modules-container.interface.d.ts +8 -0
- package/dist/interfaces/modules/modules-container.interface.js +3 -0
- package/dist/interfaces/modules/modules-container.interface.js.map +1 -0
- package/dist/interfaces/modules/provider-token-factory.interface.d.ts +4 -0
- package/dist/interfaces/modules/provider-token-factory.interface.js +3 -0
- package/dist/interfaces/modules/provider-token-factory.interface.js.map +1 -0
- package/dist/interfaces/nexus-application.interface.d.ts +8 -0
- package/dist/interfaces/nexus-application.interface.js +3 -0
- package/dist/interfaces/nexus-application.interface.js.map +1 -0
- package/dist/interfaces/on-module-init.interface.d.ts +3 -0
- package/dist/interfaces/on-module-init.interface.js +3 -0
- package/dist/interfaces/on-module-init.interface.js.map +1 -0
- package/dist/interfaces/plugins/index.d.ts +2 -0
- package/dist/interfaces/plugins/index.js +6 -0
- package/dist/interfaces/plugins/index.js.map +1 -0
- package/dist/interfaces/plugins/module-plugin.interface.d.ts +4 -0
- package/dist/interfaces/plugins/module-plugin.interface.js +3 -0
- package/dist/interfaces/plugins/module-plugin.interface.js.map +1 -0
- package/dist/interfaces/plugins/scanner-plugin.interface.d.ts +6 -0
- package/dist/interfaces/plugins/scanner-plugin.interface.js +3 -0
- package/dist/interfaces/plugins/scanner-plugin.interface.js.map +1 -0
- package/dist/interfaces/scope.interface.d.ts +4 -0
- package/dist/interfaces/scope.interface.js +9 -0
- package/dist/interfaces/scope.interface.js.map +1 -0
- package/dist/interfaces/type.interface.d.ts +3 -0
- package/dist/interfaces/type.interface.js +3 -0
- package/dist/interfaces/type.interface.js.map +1 -0
- package/dist/interfaces/utils/hash-utils.interface.d.ts +5 -0
- package/dist/interfaces/utils/hash-utils.interface.js +3 -0
- package/dist/interfaces/utils/hash-utils.interface.js.map +1 -0
- package/dist/interfaces/utils/index.d.ts +1 -0
- package/dist/interfaces/utils/index.js +5 -0
- package/dist/interfaces/utils/index.js.map +1 -0
- package/dist/interfaces/validate-module-keys.d.ts +7 -0
- package/dist/interfaces/validate-module-keys.js +26 -0
- package/dist/interfaces/validate-module-keys.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -0
- package/dist/utils/hash-utils.browser.d.ts +6 -0
- package/dist/utils/hash-utils.browser.js +22 -0
- package/dist/utils/hash-utils.browser.js.map +1 -0
- package/dist/utils/hash-utils.server.d.ts +6 -0
- package/dist/utils/hash-utils.server.js +19 -0
- package/dist/utils/hash-utils.server.js.map +1 -0
- package/dist/utils/helpers.d.ts +16 -0
- package/dist/utils/helpers.js +83 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/random-string-generator.util.d.ts +1 -0
- package/dist/utils/random-string-generator.util.js +7 -0
- package/dist/utils/random-string-generator.util.js.map +1 -0
- package/dist/utils/shared.utils.d.ts +13 -0
- package/dist/utils/shared.utils.js +66 -0
- package/dist/utils/shared.utils.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModuleContainerFactory = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const interfaces_1 = require("../../interfaces");
|
|
6
|
+
const module_container_1 = require("./module-container");
|
|
7
|
+
class ModuleContainerFactory {
|
|
8
|
+
constructor(moduleTokenFactory) {
|
|
9
|
+
this.moduleTokenFactory = moduleTokenFactory;
|
|
10
|
+
}
|
|
11
|
+
async create(module, container) {
|
|
12
|
+
const moduleContainer = new module_container_1.ModuleContainer(module, container);
|
|
13
|
+
moduleContainer.token = await this.getModuleToken(module);
|
|
14
|
+
Reflect.defineMetadata(interfaces_1.MODULE_TOKEN_WATERMARK, moduleContainer.token, module);
|
|
15
|
+
return moduleContainer;
|
|
16
|
+
}
|
|
17
|
+
getModuleToken(module) {
|
|
18
|
+
return this.moduleTokenFactory.create(module);
|
|
19
|
+
}
|
|
20
|
+
async getModuleContainerImports(module) {
|
|
21
|
+
return await module.imports;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.ModuleContainerFactory = ModuleContainerFactory;
|
|
25
|
+
//# sourceMappingURL=module-container-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-container-factory.js","sourceRoot":"","sources":["../../../src/core/modules/module-container-factory.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,iDAG0B;AAS1B,yDAAqD;AAErD,MAAa,sBAAsB;IAClC,YACkB,kBAA+C;QAA/C,uBAAkB,GAAlB,kBAAkB,CAA6B;IAC9D,CAAC;IAEG,KAAK,CAAC,MAAM,CAClB,MAA8B,EAC9B,SAAiC;QAEjC,MAAM,eAAe,GAAG,IAAI,kCAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE/D,eAAe,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE1D,OAAO,CAAC,cAAc,CACrB,mCAAsB,EACtB,eAAe,CAAC,KAAK,EACrB,MAAM,CACN,CAAC;QAEF,OAAO,eAAe,CAAC;IACxB,CAAC;IAEM,cAAc,CAAC,MAA8B;QACnD,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,yBAAyB,CACrC,MAAgC;QAEhC,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;CACD;AA/BD,wDA+BC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import type { ContainerBaseInterface, DynamicModule, InjectionToken, Module, ModuleContainerInterface, Provider } from "../../interfaces";
|
|
3
|
+
export declare class ModuleContainer implements ModuleContainerInterface {
|
|
4
|
+
private readonly _metatype;
|
|
5
|
+
private readonly container;
|
|
6
|
+
private _token;
|
|
7
|
+
constructor(_metatype: Module | DynamicModule, container: ContainerBaseInterface);
|
|
8
|
+
get token(): string;
|
|
9
|
+
set token(value: string);
|
|
10
|
+
get metatype(): Module | DynamicModule;
|
|
11
|
+
get imports(): Promise<ModuleContainerInterface[]>;
|
|
12
|
+
get providers(): Provider[];
|
|
13
|
+
get exports(): InjectionToken[];
|
|
14
|
+
get<T>(token: InjectionToken): Promise<T | undefined>;
|
|
15
|
+
get errors(): import("../../interfaces").GraphError[];
|
|
16
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModuleContainer = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const interfaces_1 = require("../../interfaces");
|
|
6
|
+
const helpers_1 = require("../../utils/helpers");
|
|
7
|
+
class ModuleContainer {
|
|
8
|
+
constructor(_metatype, container) {
|
|
9
|
+
this._metatype = _metatype;
|
|
10
|
+
this.container = container;
|
|
11
|
+
this._token = "";
|
|
12
|
+
}
|
|
13
|
+
get token() {
|
|
14
|
+
return this._token;
|
|
15
|
+
}
|
|
16
|
+
set token(value) {
|
|
17
|
+
this._token = value;
|
|
18
|
+
}
|
|
19
|
+
get metatype() {
|
|
20
|
+
return this._metatype;
|
|
21
|
+
}
|
|
22
|
+
get imports() {
|
|
23
|
+
let modules;
|
|
24
|
+
if ((0, helpers_1.isDynamicModule)(this.metatype)) {
|
|
25
|
+
modules = this.metatype.imports || [];
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
modules =
|
|
29
|
+
Reflect.getMetadata(interfaces_1.MODULE_METADATA.IMPORTS, this.metatype) || [];
|
|
30
|
+
}
|
|
31
|
+
const self = this;
|
|
32
|
+
return new Promise((resolved) => {
|
|
33
|
+
async function run() {
|
|
34
|
+
const imports = await Promise.all(modules.map((item) => {
|
|
35
|
+
return self.container.addModule(item);
|
|
36
|
+
}));
|
|
37
|
+
resolved(imports);
|
|
38
|
+
}
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
run();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
get providers() {
|
|
44
|
+
if ((0, helpers_1.isDynamicModule)(this.metatype)) {
|
|
45
|
+
return this.metatype.providers || [];
|
|
46
|
+
}
|
|
47
|
+
return Reflect.getMetadata(interfaces_1.MODULE_METADATA.PROVIDERS, this.metatype) || [];
|
|
48
|
+
}
|
|
49
|
+
get exports() {
|
|
50
|
+
if ((0, helpers_1.isDynamicModule)(this.metatype)) {
|
|
51
|
+
return this.metatype.exports || [];
|
|
52
|
+
}
|
|
53
|
+
return Reflect.getMetadata(interfaces_1.MODULE_METADATA.EXPORTS, this.metatype) || [];
|
|
54
|
+
}
|
|
55
|
+
get(token) {
|
|
56
|
+
return this.container.get(token);
|
|
57
|
+
}
|
|
58
|
+
get errors() {
|
|
59
|
+
return this.container.errors;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.ModuleContainer = ModuleContainer;
|
|
63
|
+
//# sourceMappingURL=module-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-container.js","sourceRoot":"","sources":["../../../src/core/modules/module-container.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAS1B,iDAAmD;AACnD,iDAAsD;AAEtD,MAAa,eAAe;IAG3B,YACkB,SAAiC,EACjC,SAAiC;QADjC,cAAS,GAAT,SAAS,CAAwB;QACjC,cAAS,GAAT,SAAS,CAAwB;QAJ3C,WAAM,GAAG,EAAE,CAAC;IAKjB,CAAC;IAEJ,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAW,KAAK,CAAC,KAAa;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAW,OAAO;QACjB,IAAI,OAAmC,CAAC;QACxC,IAAI,IAAA,yBAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,OAAO;gBACN,OAAO,CAAC,WAAW,CAAC,4BAAe,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpE,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAA6B,CAAC,QAAQ,EAAE,EAAE;YAC3D,KAAK,UAAU,GAAG;gBACjB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,OAAO,CAAC,GAAG,CAAC,CAAC,IAA4B,EAAE,EAAE;oBAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvC,CAAC,CAAC,CACF,CAAC;gBAEF,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YAED,aAAa;YACb,GAAG,EAAE,CAAC;QACP,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAW,SAAS;QACnB,IAAI,IAAA,yBAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,OAAO,OAAO,CAAC,WAAW,CAAC,4BAAe,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5E,CAAC;IAED,IAAW,OAAO;QACjB,IAAI,IAAA,yBAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,OAAO,CAAC,WAAW,CAAC,4BAAe,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1E,CAAC;IAEM,GAAG,CAAI,KAAqB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC9B,CAAC;CACD;AArED,0CAqEC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DynamicModule, HashUtilInterface, Module, ModuleTokenFactoryInterface } from "../../interfaces";
|
|
2
|
+
export declare class ModuleTokenFactory implements ModuleTokenFactoryInterface {
|
|
3
|
+
private readonly hashUtils;
|
|
4
|
+
private readonly moduleTokenCache;
|
|
5
|
+
private readonly moduleTokens;
|
|
6
|
+
private readonly moduleIdsCache;
|
|
7
|
+
constructor(hashUtils: HashUtilInterface);
|
|
8
|
+
create(metatype: Module | DynamicModule): Promise<string>;
|
|
9
|
+
private getModuleId;
|
|
10
|
+
private getStaticModuleToken;
|
|
11
|
+
private getModuleName;
|
|
12
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModuleTokenFactory = void 0;
|
|
4
|
+
const helpers_1 = require("../../utils/helpers");
|
|
5
|
+
class ModuleTokenFactory {
|
|
6
|
+
constructor(hashUtils) {
|
|
7
|
+
this.hashUtils = hashUtils;
|
|
8
|
+
this.moduleTokenCache = new Map();
|
|
9
|
+
this.moduleTokens = new WeakMap();
|
|
10
|
+
this.moduleIdsCache = new WeakMap();
|
|
11
|
+
}
|
|
12
|
+
async create(metatype) {
|
|
13
|
+
const moduleToken = this.moduleTokens.get(metatype);
|
|
14
|
+
if (moduleToken) {
|
|
15
|
+
return moduleToken;
|
|
16
|
+
}
|
|
17
|
+
const moduleId = this.getModuleId(metatype);
|
|
18
|
+
const token = await this.getStaticModuleToken(moduleId, this.getModuleName(metatype));
|
|
19
|
+
this.moduleTokens.set(metatype, token);
|
|
20
|
+
return token;
|
|
21
|
+
}
|
|
22
|
+
getModuleId(metatype) {
|
|
23
|
+
let moduleId = this.moduleIdsCache.get(metatype);
|
|
24
|
+
if (moduleId) {
|
|
25
|
+
return moduleId;
|
|
26
|
+
}
|
|
27
|
+
moduleId = this.hashUtils.randomStringGenerator();
|
|
28
|
+
this.moduleIdsCache.set(metatype, moduleId);
|
|
29
|
+
return moduleId;
|
|
30
|
+
}
|
|
31
|
+
async getStaticModuleToken(moduleId, moduleName) {
|
|
32
|
+
const key = `${moduleId}_${moduleName}`;
|
|
33
|
+
if (this.moduleTokenCache.has(key)) {
|
|
34
|
+
return this.moduleTokenCache.get(key);
|
|
35
|
+
}
|
|
36
|
+
const hash = await this.hashUtils.hashString(key);
|
|
37
|
+
this.moduleTokenCache.set(key, hash);
|
|
38
|
+
return hash;
|
|
39
|
+
}
|
|
40
|
+
getModuleName(metatype) {
|
|
41
|
+
if ((0, helpers_1.isDynamicModule)(metatype)) {
|
|
42
|
+
return metatype.module.name;
|
|
43
|
+
}
|
|
44
|
+
return metatype.name;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.ModuleTokenFactory = ModuleTokenFactory;
|
|
48
|
+
//# sourceMappingURL=module-token-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-token-factory.js","sourceRoot":"","sources":["../../../src/core/modules/module-token-factory.ts"],"names":[],"mappings":";;;AAMA,iDAAsD;AAEtD,MAAa,kBAAkB;IAQ9B,YAA6B,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;QAPxC,qBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,iBAAY,GAAG,IAAI,OAAO,EAAkC,CAAC;QAC7D,mBAAc,GAAG,IAAI,OAAO,EAG1C,CAAC;IAEwD,CAAC;IAEtD,KAAK,CAAC,MAAM,CAAC,QAAgC;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,WAAW,CAAC;QACpB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC5C,QAAQ,EACR,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAC5B,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEvC,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,WAAW,CAAC,QAAgC;QACnD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,oBAAoB,CACjC,QAAgB,EAChB,UAAkB;QAElB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAW,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,aAAa,CAAC,QAAgC;QACrD,IAAI,IAAA,yBAAe,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7B,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;CACD;AA9DD,gDA8DC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { type ContainerInterface, type DynamicModule, type HashUtilInterface, type Module, type ModuleContainerInterface, type ModulesContainerInterface } from "../../interfaces";
|
|
3
|
+
export type Token = string;
|
|
4
|
+
export declare class ModulesContainer implements ModulesContainerInterface {
|
|
5
|
+
private readonly hashUtils;
|
|
6
|
+
private readonly container;
|
|
7
|
+
private readonly containers;
|
|
8
|
+
private readonly moduleTokenFactory;
|
|
9
|
+
private readonly moduleContainerFactory;
|
|
10
|
+
constructor(hashUtils: HashUtilInterface, container: ContainerInterface);
|
|
11
|
+
addModule(module: Module | DynamicModule): Promise<ModuleContainerInterface>;
|
|
12
|
+
getModule(module: Module | DynamicModule): ModuleContainerInterface | undefined;
|
|
13
|
+
replaceModule(moduleToReplace: Module, newModule: Module): Promise<ModuleContainerInterface>;
|
|
14
|
+
private setModule;
|
|
15
|
+
private getModuleFromCache;
|
|
16
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModulesContainer = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const interfaces_1 = require("../../interfaces");
|
|
6
|
+
const module_container_factory_1 = require("./module-container-factory");
|
|
7
|
+
const module_token_factory_1 = require("./module-token-factory");
|
|
8
|
+
class ModulesContainer {
|
|
9
|
+
constructor(hashUtils, container) {
|
|
10
|
+
this.hashUtils = hashUtils;
|
|
11
|
+
this.container = container;
|
|
12
|
+
this.containers = new Map();
|
|
13
|
+
this.moduleTokenFactory = new module_token_factory_1.ModuleTokenFactory(this.hashUtils);
|
|
14
|
+
this.moduleContainerFactory = new module_container_factory_1.ModuleContainerFactory(this.moduleTokenFactory);
|
|
15
|
+
}
|
|
16
|
+
async addModule(module) {
|
|
17
|
+
const cacheModule = await this.getModule(module);
|
|
18
|
+
if (cacheModule) {
|
|
19
|
+
return cacheModule;
|
|
20
|
+
}
|
|
21
|
+
return this.setModule(module);
|
|
22
|
+
}
|
|
23
|
+
getModule(module) {
|
|
24
|
+
return this.getModuleFromCache(module);
|
|
25
|
+
}
|
|
26
|
+
async replaceModule(moduleToReplace, newModule) {
|
|
27
|
+
const tokenToReplace = this.getModule(moduleToReplace);
|
|
28
|
+
const newModuleContainer = await this.setModule(newModule);
|
|
29
|
+
this.containers.set(tokenToReplace?.token || newModuleContainer.token, newModuleContainer);
|
|
30
|
+
return newModuleContainer;
|
|
31
|
+
}
|
|
32
|
+
async setModule(module) {
|
|
33
|
+
const moduleContainer = await this.moduleContainerFactory.create(module, this.container);
|
|
34
|
+
this.containers.set(moduleContainer.token, moduleContainer);
|
|
35
|
+
return moduleContainer;
|
|
36
|
+
}
|
|
37
|
+
getModuleFromCache(module) {
|
|
38
|
+
const token = Reflect.getMetadata(interfaces_1.MODULE_TOKEN_WATERMARK, module);
|
|
39
|
+
return this.containers.get(token);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.ModulesContainer = ModulesContainer;
|
|
43
|
+
//# sourceMappingURL=modules-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules-container.js","sourceRoot":"","sources":["../../../src/core/modules/modules-container.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,iDAQ0B;AAC1B,yEAAoE;AACpE,iEAA4D;AAI5D,MAAa,gBAAgB;IAO5B,YACkB,SAA4B,EAC5B,SAA6B;QAD7B,cAAS,GAAT,SAAS,CAAmB;QAC5B,cAAS,GAAT,SAAS,CAAoB;QAR9B,eAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;QACxD,uBAAkB,GAAG,IAAI,yCAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,2BAAsB,GAAG,IAAI,iDAAsB,CACnE,IAAI,CAAC,kBAAkB,CACvB,CAAC;IAKC,CAAC;IAEJ,KAAK,CAAC,SAAS,CACd,MAA8B;QAE9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,WAAW,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,CACR,MAA8B;QAE9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAClB,eAAuB,EACvB,SAAiB;QAEjB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACvD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,CAAC,UAAU,CAAC,GAAG,CAClB,cAAc,EAAE,KAAK,IAAI,kBAAkB,CAAC,KAAK,EACjD,kBAAkB,CAClB,CAAC;QAEF,OAAO,kBAAkB,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,SAAS,CACtB,MAA8B;QAE9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAC/D,MAAM,EACN,IAAI,CAAC,SAAS,CACd,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAE5D,OAAO,eAAe,CAAC;IACxB,CAAC;IAEO,kBAAkB,CACzB,MAA8B;QAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,mCAAsB,EAAE,MAAM,CAAU,CAAC;QAE3E,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACD;AAjED,4CAiEC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { InjectionToken, Module, NexusApplicationInterface, ScannerPluginInterface } from "../interfaces";
|
|
2
|
+
export declare class NexusApplicationsBrowser implements NexusApplicationInterface {
|
|
3
|
+
private readonly rootModule;
|
|
4
|
+
private readonly hashUtil;
|
|
5
|
+
private readonly scannerPlugins;
|
|
6
|
+
private readonly container;
|
|
7
|
+
private constructor();
|
|
8
|
+
static create(rootModule: Module): NexusApplicationsBrowser;
|
|
9
|
+
bootstrap(): Promise<this>;
|
|
10
|
+
addScannerPlugin(scanner: ScannerPluginInterface | ScannerPluginInterface[]): this;
|
|
11
|
+
get<T>(token: InjectionToken): Promise<T | undefined>;
|
|
12
|
+
get errors(): import("../interfaces").GraphError[];
|
|
13
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NexusApplicationsBrowser = void 0;
|
|
4
|
+
const hash_utils_browser_1 = require("../utils/hash-utils.browser");
|
|
5
|
+
const container_1 = require("./modules/container");
|
|
6
|
+
class NexusApplicationsBrowser {
|
|
7
|
+
constructor(rootModule) {
|
|
8
|
+
this.rootModule = rootModule;
|
|
9
|
+
this.hashUtil = new hash_utils_browser_1.HashUtilBrowser();
|
|
10
|
+
this.scannerPlugins = [];
|
|
11
|
+
this.container = new container_1.Container(this.hashUtil);
|
|
12
|
+
}
|
|
13
|
+
static create(rootModule) {
|
|
14
|
+
return new NexusApplicationsBrowser(rootModule);
|
|
15
|
+
}
|
|
16
|
+
async bootstrap() {
|
|
17
|
+
await this.container.run(this.rootModule);
|
|
18
|
+
for (const scannerPlugin of this.scannerPlugins) {
|
|
19
|
+
await scannerPlugin.scan(this.container.graph);
|
|
20
|
+
}
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
addScannerPlugin(scanner) {
|
|
24
|
+
const plugins = Array.isArray(scanner) ? scanner : [scanner];
|
|
25
|
+
this.scannerPlugins.push(...plugins);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
get(token) {
|
|
29
|
+
return this.container.get(token);
|
|
30
|
+
}
|
|
31
|
+
get errors() {
|
|
32
|
+
return this.container.errors;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.NexusApplicationsBrowser = NexusApplicationsBrowser;
|
|
36
|
+
//# sourceMappingURL=nexus-applications.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nexus-applications.browser.js","sourceRoot":"","sources":["../../src/core/nexus-applications.browser.ts"],"names":[],"mappings":";;;AAMA,oEAA8D;AAC9D,mDAAgD;AAEhD,MAAa,wBAAwB;IAKpC,YAAqC,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QAJtC,aAAQ,GAAG,IAAI,oCAAe,EAAE,CAAC;QACjC,mBAAc,GAA6B,EAAE,CAAC;QAC9C,cAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEA,CAAC;IAE3D,MAAM,CAAC,MAAM,CAAC,UAAkB;QAC/B,OAAO,IAAI,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1C,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,gBAAgB,CACtB,OAA0D;QAE1D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,GAAG,CAAI,KAAqB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAI,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC9B,CAAC;CACD;AApCD,4DAoCC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { InjectionToken, Module, NexusApplicationInterface, ScannerPluginInterface } from "../interfaces";
|
|
2
|
+
export declare class NexusApplicationsServer implements NexusApplicationInterface {
|
|
3
|
+
private readonly rootModule;
|
|
4
|
+
private readonly hashUtil;
|
|
5
|
+
private readonly container;
|
|
6
|
+
private readonly scannerPlugins;
|
|
7
|
+
private constructor();
|
|
8
|
+
static create(rootModule: Module): NexusApplicationsServer;
|
|
9
|
+
bootstrap(): Promise<this>;
|
|
10
|
+
addScannerPlugin(scanner: ScannerPluginInterface | ScannerPluginInterface[]): this;
|
|
11
|
+
get<T>(token: InjectionToken): Promise<T | undefined>;
|
|
12
|
+
get errors(): import("../interfaces").GraphError[];
|
|
13
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NexusApplicationsServer = void 0;
|
|
4
|
+
const hash_utils_server_1 = require("../utils/hash-utils.server");
|
|
5
|
+
const container_1 = require("./modules/container");
|
|
6
|
+
class NexusApplicationsServer {
|
|
7
|
+
constructor(rootModule) {
|
|
8
|
+
this.rootModule = rootModule;
|
|
9
|
+
this.hashUtil = new hash_utils_server_1.HashUtilsServer();
|
|
10
|
+
this.container = new container_1.Container(this.hashUtil);
|
|
11
|
+
this.scannerPlugins = [];
|
|
12
|
+
}
|
|
13
|
+
static create(rootModule) {
|
|
14
|
+
return new NexusApplicationsServer(rootModule);
|
|
15
|
+
}
|
|
16
|
+
async bootstrap() {
|
|
17
|
+
await this.container.run(this.rootModule);
|
|
18
|
+
for (const scannerPlugin of this.scannerPlugins) {
|
|
19
|
+
await scannerPlugin.scan(this.container.graph);
|
|
20
|
+
}
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
addScannerPlugin(scanner) {
|
|
24
|
+
const plugins = Array.isArray(scanner) ? scanner : [scanner];
|
|
25
|
+
this.scannerPlugins.push(...plugins);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
get(token) {
|
|
29
|
+
return this.container.get(token);
|
|
30
|
+
}
|
|
31
|
+
get errors() {
|
|
32
|
+
return this.container.errors;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.NexusApplicationsServer = NexusApplicationsServer;
|
|
36
|
+
//# sourceMappingURL=nexus-applications.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nexus-applications.server.js","sourceRoot":"","sources":["../../src/core/nexus-applications.server.ts"],"names":[],"mappings":";;;AAMA,kEAA6D;AAC7D,mDAAgD;AAEhD,MAAa,uBAAuB;IAKnC,YAAqC,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QAJtC,aAAQ,GAAG,IAAI,mCAAe,EAAE,CAAC;QACjC,cAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,mBAAc,GAA6B,EAAE,CAAC;IAEL,CAAC;IAE3D,MAAM,CAAC,MAAM,CAAC,UAAkB;QAC/B,OAAO,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1C,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,gBAAgB,CACtB,OAA0D;QAE1D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,GAAG,CAAI,KAAqB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAI,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC9B,CAAC;CACD;AApCD,0DAoCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProvidersContainer = void 0;
|
|
4
|
+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
5
|
+
class ProvidersContainer extends Map {
|
|
6
|
+
}
|
|
7
|
+
exports.ProvidersContainer = ProvidersContainer;
|
|
8
|
+
//# sourceMappingURL=providers-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers-container.js","sourceRoot":"","sources":["../../../src/core/resolver/providers-container.ts"],"names":[],"mappings":";;;AAEA,4DAA4D;AAC5D,MAAa,kBAAmB,SAAQ,GAAwB;CAAG;AAAnE,gDAAmE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type InjectionToken, type ModuleGraphInterface } from "../../interfaces";
|
|
2
|
+
import { ProvidersContainer } from "./providers-container";
|
|
3
|
+
export declare class Resolver {
|
|
4
|
+
private readonly graph;
|
|
5
|
+
private readonly providersContainer;
|
|
6
|
+
constructor(graph: ModuleGraphInterface);
|
|
7
|
+
resolveProvider<T>(token: InjectionToken, resolveCache?: ProvidersContainer, isCircularDependency?: boolean): Promise<T | undefined>;
|
|
8
|
+
private createInstance;
|
|
9
|
+
private injectPropertyDependencies;
|
|
10
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Resolver = void 0;
|
|
4
|
+
const interfaces_1 = require("../../interfaces");
|
|
5
|
+
const helpers_1 = require("../../utils/helpers");
|
|
6
|
+
const providers_container_1 = require("./providers-container");
|
|
7
|
+
function isCircularDependencyFn(fn) {
|
|
8
|
+
// @ts-expect-error
|
|
9
|
+
return !!(typeof fn === "function" && fn.dependencyName);
|
|
10
|
+
}
|
|
11
|
+
class Resolver {
|
|
12
|
+
constructor(graph) {
|
|
13
|
+
this.graph = graph;
|
|
14
|
+
this.providersContainer = new providers_container_1.ProvidersContainer();
|
|
15
|
+
}
|
|
16
|
+
async resolveProvider(token, resolveCache = new providers_container_1.ProvidersContainer(), isCircularDependency = false) {
|
|
17
|
+
if (this.providersContainer.has(token)) {
|
|
18
|
+
return this.providersContainer.get(token);
|
|
19
|
+
}
|
|
20
|
+
const node = this.graph.getNode(token);
|
|
21
|
+
if (!node) {
|
|
22
|
+
throw new Error(`Provider not found: ${token.toString()}`);
|
|
23
|
+
}
|
|
24
|
+
if (resolveCache.has(token)) {
|
|
25
|
+
return resolveCache.get(token);
|
|
26
|
+
}
|
|
27
|
+
const [instance, saveInCache] = await this.createInstance(node, resolveCache, isCircularDependency);
|
|
28
|
+
resolveCache.set(token, instance);
|
|
29
|
+
if (saveInCache) {
|
|
30
|
+
this.providersContainer.set(token, instance);
|
|
31
|
+
}
|
|
32
|
+
return instance;
|
|
33
|
+
}
|
|
34
|
+
async createInstance(node, resolveCache, isCircularDependency = false) {
|
|
35
|
+
const provider = node.metatype;
|
|
36
|
+
const dependencies = this.graph
|
|
37
|
+
.getEdge(node.id)
|
|
38
|
+
.filter((edge) => edge.type === interfaces_1.EdgeTypeEnum.DEPENDENCY &&
|
|
39
|
+
edge.metadata.inject === "constructor" &&
|
|
40
|
+
edge.metadata.unreached === false)
|
|
41
|
+
.map((edge) => {
|
|
42
|
+
if (edge.metadata.isCircular) {
|
|
43
|
+
const circularResolver = () => new Proxy({}, {
|
|
44
|
+
get: (_, prop) => {
|
|
45
|
+
const instance = resolveCache.get(edge.target);
|
|
46
|
+
return instance?.[prop];
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
circularResolver.dependencyName = edge.target;
|
|
50
|
+
return circularResolver;
|
|
51
|
+
}
|
|
52
|
+
return edge.target;
|
|
53
|
+
});
|
|
54
|
+
const depsChunks = dependencies.reduce((prev, depToken) => {
|
|
55
|
+
if (isCircularDependencyFn(depToken)) {
|
|
56
|
+
prev[0].push(depToken);
|
|
57
|
+
prev[1].push(null);
|
|
58
|
+
return prev;
|
|
59
|
+
}
|
|
60
|
+
prev[0].push(null);
|
|
61
|
+
prev[1].push(depToken);
|
|
62
|
+
return prev;
|
|
63
|
+
}, [[], []]);
|
|
64
|
+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
65
|
+
let resolvedDependencies = [];
|
|
66
|
+
for (const depToken of dependencies) {
|
|
67
|
+
if (isCircularDependencyFn(depToken)) {
|
|
68
|
+
// @ts-ignore
|
|
69
|
+
if (isCircularDependency) {
|
|
70
|
+
resolvedDependencies.push(depToken);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const instance = await this.resolveProvider(
|
|
74
|
+
// @ts-ignore
|
|
75
|
+
depToken.dependencyName, resolveCache, true);
|
|
76
|
+
resolvedDependencies.push(instance);
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const instance = await this.resolveProvider(depToken, resolveCache);
|
|
80
|
+
this.providersContainer.set(depToken, instance);
|
|
81
|
+
resolvedDependencies.push(instance);
|
|
82
|
+
}
|
|
83
|
+
resolvedDependencies = resolvedDependencies.map((dependency, index) => {
|
|
84
|
+
if (depsChunks[0]?.[index]) {
|
|
85
|
+
return depsChunks[0]?.[index];
|
|
86
|
+
}
|
|
87
|
+
return dependency;
|
|
88
|
+
});
|
|
89
|
+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
90
|
+
let instance;
|
|
91
|
+
let saveInCache = true;
|
|
92
|
+
const deps = resolvedDependencies.map((depToken) => isCircularDependencyFn(depToken) ? depToken() : depToken);
|
|
93
|
+
if ((0, helpers_1.isClassProvider)(provider)) {
|
|
94
|
+
instance = new provider.useClass(...deps);
|
|
95
|
+
await this.injectPropertyDependencies(instance, node, resolveCache);
|
|
96
|
+
if (node.scope === interfaces_1.Scope.Request) {
|
|
97
|
+
saveInCache = false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else if ((0, helpers_1.isValueProvider)(provider)) {
|
|
101
|
+
instance = provider.useValue;
|
|
102
|
+
}
|
|
103
|
+
else if ((0, helpers_1.isFactoryProvider)(provider)) {
|
|
104
|
+
instance = await provider.useFactory(...deps);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
instance = new provider(...deps);
|
|
108
|
+
await this.injectPropertyDependencies(instance, node, resolveCache);
|
|
109
|
+
}
|
|
110
|
+
instance?.onModuleInit?.();
|
|
111
|
+
return [instance, saveInCache];
|
|
112
|
+
}
|
|
113
|
+
async injectPropertyDependencies(instance, node, resolveCache) {
|
|
114
|
+
const dependencies = this.graph
|
|
115
|
+
.getEdge(node.id)
|
|
116
|
+
.filter((edge) => edge.type === interfaces_1.EdgeTypeEnum.DEPENDENCY &&
|
|
117
|
+
edge.metadata.inject === "property" &&
|
|
118
|
+
edge.metadata.unreached === false &&
|
|
119
|
+
edge.metadata.isCircular === false);
|
|
120
|
+
for (const edge of dependencies) {
|
|
121
|
+
instance[edge.metadata.key] = await this.resolveProvider(edge.target, resolveCache);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.Resolver = Resolver;
|
|
126
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/core/resolver/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Global = Global;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const interfaces_1 = require("../interfaces");
|
|
6
|
+
function Global() {
|
|
7
|
+
// biome-ignore lint/complexity/noBannedTypes: <explanation>
|
|
8
|
+
return (target) => {
|
|
9
|
+
Reflect.defineMetadata(interfaces_1.MODULE_GLOBAL_WATERMARK, true, target);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/decorators/global.ts"],"names":[],"mappings":";;AAGA,wBAKC;AARD,4BAA0B;AAC1B,8CAAwD;AAExD,SAAgB,MAAM;IACrB,4DAA4D;IAC5D,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC3B,OAAO,CAAC,cAAc,CAAC,oCAAuB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Inject = Inject;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const interfaces_1 = require("../interfaces");
|
|
6
|
+
function Inject(token) {
|
|
7
|
+
return (target, propertyKey, parameterIndex) => {
|
|
8
|
+
Reflect.defineMetadata(interfaces_1.INJECT_WATERMARK, true, target);
|
|
9
|
+
const type = token ||
|
|
10
|
+
Reflect.getMetadata("design:type", target, propertyKey);
|
|
11
|
+
if (!type) {
|
|
12
|
+
throw new Error(`
|
|
13
|
+
Token is undefined at index: ${parameterIndex}. This often occurs due to circular dependencies.
|
|
14
|
+
Ensure there are no circular dependencies in your files or barrel files.`);
|
|
15
|
+
}
|
|
16
|
+
if (parameterIndex === undefined) {
|
|
17
|
+
let properties = Reflect.getMetadata(interfaces_1.PROPERTY_DEPS_METADATA, target) || [];
|
|
18
|
+
properties = [...properties, { key: propertyKey, type }];
|
|
19
|
+
Reflect.defineMetadata(interfaces_1.PROPERTY_DEPS_METADATA, properties, target.constructor);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
let dependencies = Reflect.getMetadata(interfaces_1.SELF_DECLARED_DEPS_METADATA, target) || [];
|
|
23
|
+
dependencies = [...dependencies, { index: parameterIndex, param: type }];
|
|
24
|
+
Reflect.defineMetadata(interfaces_1.SELF_DECLARED_DEPS_METADATA, dependencies, target);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=inject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/decorators/inject.ts"],"names":[],"mappings":";;AAQA,wBAuCC;AA/CD,4BAA0B;AAC1B,8CAKuB;AAEvB,SAAgB,MAAM,CACrB,KAA6B;IAE7B,OAAO,CACN,MAAc,EACd,WAA6B,EAC7B,cAAuB,EACtB,EAAE;QACH,OAAO,CAAC,cAAc,CAAC,6BAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAEvD,MAAM,IAAI,GACT,KAAK;YACL,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,WAAqB,CAAC,CAAC;QAEnE,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC;mCACgB,cAAc;yEACwB,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,UAAU,GACb,OAAO,CAAC,WAAW,CAAC,mCAAsB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAE3D,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,cAAc,CACrB,mCAAsB,EACtB,UAAU,EACV,MAAM,CAAC,WAAW,CAClB,CAAC;YACF,OAAO;QACR,CAAC;QAED,IAAI,YAAY,GACf,OAAO,CAAC,WAAW,CAAC,wCAA2B,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAEhE,YAAY,GAAG,CAAC,GAAG,YAAY,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,cAAc,CAAC,wCAA2B,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Injectable = Injectable;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const interfaces_1 = require("../interfaces");
|
|
6
|
+
function Injectable(options = { scope: interfaces_1.Scope.Singleton }) {
|
|
7
|
+
return (target) => {
|
|
8
|
+
Reflect.defineMetadata(interfaces_1.INJECTABLE_OPTIONS, options, target);
|
|
9
|
+
Reflect.defineMetadata(interfaces_1.INJECTABLE_WATERMARK, true, target);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=injectable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../src/decorators/injectable.ts"],"names":[],"mappings":";;AAIA,gCAOC;AAXD,4BAA0B;AAC1B,8CAAgF;AAGhF,SAAgB,UAAU,CACzB,UAA6B,EAAE,KAAK,EAAE,kBAAK,CAAC,SAAS,EAAE;IAEvD,OAAO,CAAC,MAAM,EAAE,EAAE;QACjB,OAAO,CAAC,cAAc,CAAC,+BAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,CAAC,cAAc,CAAC,iCAAoB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NsModule = NsModule;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const interfaces_1 = require("../interfaces");
|
|
6
|
+
function NsModule(metadata) {
|
|
7
|
+
const propsKeys = Object.keys(metadata);
|
|
8
|
+
(0, interfaces_1.validateModuleKeys)(propsKeys);
|
|
9
|
+
return (target) => {
|
|
10
|
+
Reflect.defineMetadata(interfaces_1.MODULE_WATERMARK, true, target);
|
|
11
|
+
Reflect.defineMetadata(interfaces_1.MODULE_METADATA.IMPORTS, metadata.imports || [], target);
|
|
12
|
+
Reflect.defineMetadata(interfaces_1.MODULE_METADATA.EXPORTS, metadata.exports || [], target);
|
|
13
|
+
Reflect.defineMetadata(interfaces_1.MODULE_METADATA.PROVIDERS, metadata.providers || [], target);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=nsModule.js.map
|