@notjustcoders/ioc-arise 1.0.5 → 1.0.8
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/__tests__/generator/container-generator.test.js +1 -1
- package/dist/__tests__/generator/container-generator.test.js.map +1 -1
- package/dist/__tests__/generator/dependency-resolver.test.js +1 -1
- package/dist/__tests__/generator/dependency-resolver.test.js.map +1 -1
- package/dist/__tests__/generator/instantiation-generator.test.js +1 -1
- package/dist/__tests__/generator/instantiation-generator.test.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +2 -8
- package/dist/commands/generate.js.map +1 -1
- package/dist/container.gen.d.ts +18 -0
- package/dist/container.gen.d.ts.map +1 -0
- package/dist/container.gen.js +88 -0
- package/dist/container.gen.js.map +1 -0
- package/dist/generator/base-container-code-generator.d.ts +15 -0
- package/dist/generator/base-container-code-generator.d.ts.map +1 -0
- package/dist/generator/base-container-code-generator.js +23 -0
- package/dist/generator/base-container-code-generator.js.map +1 -0
- package/dist/generator/base-container-generator.d.ts +1 -1
- package/dist/generator/base-container-generator.d.ts.map +1 -1
- package/dist/generator/base-container-generator.js +2 -3
- package/dist/generator/base-container-generator.js.map +1 -1
- package/dist/generator/base-dependency-resolver.d.ts +26 -0
- package/dist/generator/base-dependency-resolver.d.ts.map +1 -0
- package/dist/generator/base-dependency-resolver.js +72 -0
- package/dist/generator/base-dependency-resolver.js.map +1 -0
- package/dist/generator/base-instantiation-generator.d.ts +55 -0
- package/dist/generator/base-instantiation-generator.d.ts.map +1 -0
- package/dist/generator/base-instantiation-generator.js +117 -0
- package/dist/generator/base-instantiation-generator.js.map +1 -0
- package/dist/generator/container-generator-factory.d.ts +2 -2
- package/dist/generator/container-generator-factory.d.ts.map +1 -1
- package/dist/generator/container-generator-factory.js +22 -26
- package/dist/generator/container-generator-factory.js.map +1 -1
- package/dist/generator/duplicate-import-resolver.d.ts +44 -0
- package/dist/generator/duplicate-import-resolver.d.ts.map +1 -0
- package/dist/generator/duplicate-import-resolver.js +162 -0
- package/dist/generator/duplicate-import-resolver.js.map +1 -0
- package/dist/generator/flat/container-generator.d.ts +8 -0
- package/dist/generator/flat/container-generator.d.ts.map +1 -0
- package/dist/generator/flat/container-generator.js +17 -0
- package/dist/generator/flat/container-generator.js.map +1 -0
- package/dist/generator/flat/dependency-resolver.d.ts +8 -0
- package/dist/generator/flat/dependency-resolver.d.ts.map +1 -0
- package/dist/generator/flat/dependency-resolver.js +43 -0
- package/dist/generator/flat/dependency-resolver.js.map +1 -0
- package/dist/generator/flat/flat-container-generator.d.ts +25 -0
- package/dist/generator/flat/flat-container-generator.d.ts.map +1 -0
- package/dist/generator/flat/flat-container-generator.js +44 -0
- package/dist/generator/flat/flat-container-generator.js.map +1 -0
- package/dist/generator/flat/instantiation-generator.d.ts +24 -0
- package/dist/generator/flat/instantiation-generator.d.ts.map +1 -0
- package/dist/generator/flat/instantiation-generator.js +125 -0
- package/dist/generator/flat/instantiation-generator.js.map +1 -0
- package/dist/generator/flat-container-generator.d.ts +2 -1
- package/dist/generator/flat-container-generator.d.ts.map +1 -1
- package/dist/generator/flat-container-generator.js +2 -2
- package/dist/generator/flat-container-generator.js.map +1 -1
- package/dist/generator/import-generator.d.ts.map +1 -1
- package/dist/generator/import-generator.js +2 -4
- package/dist/generator/import-generator.js.map +1 -1
- package/dist/generator/index.d.ts +2 -3
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +2 -4
- package/dist/generator/index.js.map +1 -1
- package/dist/generator/instantiation-generator.d.ts +13 -0
- package/dist/generator/instantiation-generator.d.ts.map +1 -1
- package/dist/generator/instantiation-generator.js +96 -133
- package/dist/generator/instantiation-generator.js.map +1 -1
- package/dist/generator/modular/class-sorter.d.ts +17 -0
- package/dist/generator/modular/class-sorter.d.ts.map +1 -0
- package/dist/generator/modular/class-sorter.js +40 -0
- package/dist/generator/modular/class-sorter.js.map +1 -0
- package/dist/generator/modular/container-aggregator.d.ts +11 -0
- package/dist/generator/modular/container-aggregator.d.ts.map +1 -0
- package/dist/generator/modular/container-aggregator.js +23 -0
- package/dist/generator/modular/container-aggregator.js.map +1 -0
- package/dist/generator/modular/index.d.ts +5 -0
- package/dist/generator/modular/index.d.ts.map +1 -0
- package/dist/generator/modular/index.js +21 -0
- package/dist/generator/modular/index.js.map +1 -0
- package/dist/generator/modular/modular-container-code-generator.d.ts +65 -0
- package/dist/generator/modular/modular-container-code-generator.d.ts.map +1 -0
- package/dist/generator/modular/modular-container-code-generator.js +157 -0
- package/dist/generator/modular/modular-container-code-generator.js.map +1 -0
- package/dist/generator/modular/modular-container-generator.d.ts +24 -0
- package/dist/generator/modular/modular-container-generator.d.ts.map +1 -0
- package/dist/generator/modular/modular-container-generator.js +54 -0
- package/dist/generator/modular/modular-container-generator.js.map +1 -0
- package/dist/generator/modular/module-container-function-generator.d.ts +24 -0
- package/dist/generator/modular/module-container-function-generator.d.ts.map +1 -0
- package/dist/generator/modular/module-container-function-generator.js +42 -0
- package/dist/generator/modular/module-container-function-generator.js.map +1 -0
- package/dist/generator/modular/module-dependency-resolver.d.ts +22 -0
- package/dist/generator/modular/module-dependency-resolver.d.ts.map +1 -0
- package/dist/generator/modular/module-dependency-resolver.js +56 -0
- package/dist/generator/modular/module-dependency-resolver.js.map +1 -0
- package/dist/generator/modular/module-export-generator.d.ts +42 -0
- package/dist/generator/modular/module-export-generator.d.ts.map +1 -0
- package/dist/generator/modular/module-export-generator.js +82 -0
- package/dist/generator/modular/module-export-generator.js.map +1 -0
- package/dist/generator/modular/module-function-body-generator.d.ts +15 -0
- package/dist/generator/modular/module-function-body-generator.d.ts.map +1 -0
- package/dist/generator/modular/module-function-body-generator.js +25 -0
- package/dist/generator/modular/module-function-body-generator.js.map +1 -0
- package/dist/generator/modular/module-function-signature-generator.d.ts +15 -0
- package/dist/generator/modular/module-function-signature-generator.d.ts.map +1 -0
- package/dist/generator/modular/module-function-signature-generator.js +24 -0
- package/dist/generator/modular/module-function-signature-generator.js.map +1 -0
- package/dist/generator/modular/module-instantiation-generator.d.ts +12 -0
- package/dist/generator/modular/module-instantiation-generator.d.ts.map +1 -0
- package/dist/generator/modular/module-instantiation-generator.js +26 -0
- package/dist/generator/modular/module-instantiation-generator.js.map +1 -0
- package/dist/generator/modular/module-scope-generator.d.ts +47 -0
- package/dist/generator/modular/module-scope-generator.d.ts.map +1 -0
- package/dist/generator/modular/module-scope-generator.js +111 -0
- package/dist/generator/modular/module-scope-generator.js.map +1 -0
- package/dist/generator/modular/refactored-modular-container-generator.d.ts +38 -0
- package/dist/generator/modular/refactored-modular-container-generator.d.ts.map +1 -0
- package/dist/generator/modular/refactored-modular-container-generator.js +73 -0
- package/dist/generator/modular/refactored-modular-container-generator.js.map +1 -0
- package/dist/generator/modular-container-generator.d.ts +5 -4
- package/dist/generator/modular-container-generator.d.ts.map +1 -1
- package/dist/generator/modular-container-generator.js +13 -171
- package/dist/generator/modular-container-generator.js.map +1 -1
- package/dist/generator/module-container-function-generator.d.ts +30 -0
- package/dist/generator/module-container-function-generator.d.ts.map +1 -0
- package/dist/generator/module-container-function-generator.js +199 -0
- package/dist/generator/module-container-function-generator.js.map +1 -0
- package/dist/generator/shared/dependency-resolver-utils.d.ts +28 -0
- package/dist/generator/shared/dependency-resolver-utils.d.ts.map +1 -0
- package/dist/generator/shared/dependency-resolver-utils.js +67 -0
- package/dist/generator/shared/dependency-resolver-utils.js.map +1 -0
- package/dist/generator/shared/index.d.ts +2 -0
- package/dist/generator/shared/index.d.ts.map +1 -0
- package/dist/generator/shared/index.js +18 -0
- package/dist/generator/shared/index.js.map +1 -0
- package/dist/generator/shared/instantiation-utils.d.ts +236 -0
- package/dist/generator/shared/instantiation-utils.d.ts.map +1 -0
- package/dist/generator/shared/instantiation-utils.js +499 -0
- package/dist/generator/shared/instantiation-utils.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flat-container-generator.js","sourceRoot":"","sources":["../../../src/generator/flat/flat-container-generator.ts"],"names":[],"mappings":";;;AAIA,0EAAqE;AAIrE;;;GAGG;AACH,MAAa,sBAAuB,SAAQ,iDAAsB;IAMhE,YACE,UAAsB,EACtB,OAAoB,EACpB,kBAAsC,EACtC,eAAgC,EAChC,sBAA8C,EAC9C,sBAA8C;QAE9C,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QACrD,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACvD,CAAC;IAED,QAAQ;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAErD,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAES,qBAAqB,CAAC,aAAwB;QACtD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;YACrD,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC;QACpC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;QACzF,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC;QAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,CAAC;QAEpE,OAAO,GAAG,OAAO,OAAO,cAAc,OAAO,eAAe,OAAO,UAAU,IAAI,CAAC;IACpF,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AApDD,wDAoDC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ClassInfo } from '../../types';
|
|
2
|
+
export declare class InstantiationGenerator {
|
|
3
|
+
private classes;
|
|
4
|
+
private classMap;
|
|
5
|
+
private interfaceToClassMap;
|
|
6
|
+
constructor(classes: ClassInfo[]);
|
|
7
|
+
/**
|
|
8
|
+
* Generates the instantiation code for all classes.
|
|
9
|
+
*/
|
|
10
|
+
generateInstantiationCode(classes: ClassInfo[]): string;
|
|
11
|
+
generateInstantiations(sortedClasses: string[]): string;
|
|
12
|
+
private separateClassesByScope;
|
|
13
|
+
private filterSingletonClassNames;
|
|
14
|
+
private generateTransientFactories;
|
|
15
|
+
private createTransientFactory;
|
|
16
|
+
private generateSingletonVariables;
|
|
17
|
+
private generateSingletonGetters;
|
|
18
|
+
private createSingletonGetter;
|
|
19
|
+
private generateConstructorArguments;
|
|
20
|
+
private resolveParameterDependency;
|
|
21
|
+
private getDefaultValueForType;
|
|
22
|
+
private getTargetDependency;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=instantiation-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instantiation-generator.d.ts","sourceRoot":"","sources":["../../../src/generator/flat/instantiation-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,OAAO,EAAE,SAAS,EAAE;IAMhC;;OAEG;IACH,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM;IAkBvD,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM;IAavD,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,mBAAmB;CAW5B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InstantiationGenerator = void 0;
|
|
4
|
+
const shared_1 = require("../shared");
|
|
5
|
+
class InstantiationGenerator {
|
|
6
|
+
constructor(classes) {
|
|
7
|
+
this.classes = classes;
|
|
8
|
+
this.classMap = new Map(classes.map(c => [c.name, c]));
|
|
9
|
+
this.interfaceToClassMap = shared_1.InstantiationUtils.createInterfaceToClassMap(this.classes);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Generates the instantiation code for all classes.
|
|
13
|
+
*/
|
|
14
|
+
generateInstantiationCode(classes) {
|
|
15
|
+
const constructorArgsResolver = (classInfo) => {
|
|
16
|
+
return this.generateConstructorArguments(classInfo);
|
|
17
|
+
};
|
|
18
|
+
const factoryFunctions = shared_1.InstantiationUtils.generateTransientFactoriesSection(classes, constructorArgsResolver, '');
|
|
19
|
+
const singletonVariables = shared_1.InstantiationUtils.generateSingletonVariablesSection(classes, '');
|
|
20
|
+
const singletonGetters = shared_1.InstantiationUtils.generateSingletonGettersSection(classes, constructorArgsResolver, '');
|
|
21
|
+
return [
|
|
22
|
+
...factoryFunctions,
|
|
23
|
+
'',
|
|
24
|
+
...singletonVariables,
|
|
25
|
+
'',
|
|
26
|
+
...singletonGetters
|
|
27
|
+
].filter(line => line !== '' || factoryFunctions.length > 0 || singletonVariables.length > 0 || singletonGetters.length > 0).join('\n');
|
|
28
|
+
}
|
|
29
|
+
generateInstantiations(sortedClasses) {
|
|
30
|
+
const { singletonClasses, transientClasses } = this.separateClassesByScope();
|
|
31
|
+
const singletonClassNames = this.filterSingletonClassNames(sortedClasses, singletonClasses);
|
|
32
|
+
const sections = [
|
|
33
|
+
this.generateTransientFactories(transientClasses),
|
|
34
|
+
this.generateSingletonVariables(singletonClassNames),
|
|
35
|
+
this.generateSingletonGetters(singletonClassNames)
|
|
36
|
+
].filter(section => section.length > 0);
|
|
37
|
+
return sections.join('\n\n');
|
|
38
|
+
}
|
|
39
|
+
separateClassesByScope() {
|
|
40
|
+
return shared_1.InstantiationUtils.filterClassesByScope(this.classes);
|
|
41
|
+
}
|
|
42
|
+
filterSingletonClassNames(sortedClasses, singletonClasses) {
|
|
43
|
+
return sortedClasses.filter(name => singletonClasses.some(c => c.name === name));
|
|
44
|
+
}
|
|
45
|
+
generateTransientFactories(transientClasses) {
|
|
46
|
+
if (transientClasses.length === 0)
|
|
47
|
+
return '';
|
|
48
|
+
const factories = transientClasses.map(classInfo => this.createTransientFactory(classInfo));
|
|
49
|
+
return [
|
|
50
|
+
'// Lazy loading setup for transient dependencies',
|
|
51
|
+
...factories
|
|
52
|
+
].join('\n');
|
|
53
|
+
}
|
|
54
|
+
createTransientFactory(classInfo) {
|
|
55
|
+
const constructorArgs = this.generateConstructorArguments(classInfo);
|
|
56
|
+
return shared_1.InstantiationUtils.generateTransientFactory(classInfo, constructorArgs);
|
|
57
|
+
}
|
|
58
|
+
generateSingletonVariables(singletonClassNames) {
|
|
59
|
+
if (singletonClassNames.length === 0)
|
|
60
|
+
return '';
|
|
61
|
+
const variables = singletonClassNames.map(className => {
|
|
62
|
+
const classInfo = this.classMap.get(className);
|
|
63
|
+
if (!classInfo)
|
|
64
|
+
return '';
|
|
65
|
+
return shared_1.InstantiationUtils.generateSingletonVariable(classInfo);
|
|
66
|
+
}).filter(Boolean);
|
|
67
|
+
return [
|
|
68
|
+
'// Lazy initialization variables for singletons',
|
|
69
|
+
...variables
|
|
70
|
+
].join('\n');
|
|
71
|
+
}
|
|
72
|
+
generateSingletonGetters(singletonClassNames) {
|
|
73
|
+
if (singletonClassNames.length === 0)
|
|
74
|
+
return '';
|
|
75
|
+
const getters = [...singletonClassNames].reverse().map(className => this.createSingletonGetter(className)).filter(getter => getter !== null);
|
|
76
|
+
return [
|
|
77
|
+
'// Lazy getter functions for singletons',
|
|
78
|
+
...getters
|
|
79
|
+
].join('\n');
|
|
80
|
+
}
|
|
81
|
+
createSingletonGetter(className) {
|
|
82
|
+
const classInfo = this.classMap.get(className);
|
|
83
|
+
if (!classInfo)
|
|
84
|
+
return null;
|
|
85
|
+
const constructorArgs = this.generateConstructorArguments(classInfo);
|
|
86
|
+
return shared_1.InstantiationUtils.generateSingletonGetter(classInfo, constructorArgs);
|
|
87
|
+
}
|
|
88
|
+
generateConstructorArguments(classInfo) {
|
|
89
|
+
if (classInfo.constructorParams.length === 0)
|
|
90
|
+
return '';
|
|
91
|
+
const args = classInfo.constructorParams.map((param, paramIndex) => this.resolveParameterDependency(classInfo, param, paramIndex));
|
|
92
|
+
return shared_1.InstantiationUtils.joinConstructorArguments(args);
|
|
93
|
+
}
|
|
94
|
+
resolveParameterDependency(classInfo, param, paramIndex) {
|
|
95
|
+
const targetDependency = this.getTargetDependency(classInfo, param, paramIndex);
|
|
96
|
+
// Try to resolve using shared utility first
|
|
97
|
+
const basicResolution = shared_1.InstantiationUtils.resolveBasicDependency(targetDependency, this.classes, this.interfaceToClassMap);
|
|
98
|
+
if (basicResolution) {
|
|
99
|
+
return basicResolution;
|
|
100
|
+
}
|
|
101
|
+
if (classInfo.dependencies.includes(targetDependency)) {
|
|
102
|
+
return `new ${targetDependency}()`;
|
|
103
|
+
}
|
|
104
|
+
return this.getDefaultValueForType(param.type, param.isOptional);
|
|
105
|
+
}
|
|
106
|
+
getDefaultValueForType(type, isOptional) {
|
|
107
|
+
// For class types, try to find if it's a managed dependency
|
|
108
|
+
const classMap = new Map(this.classes.map(c => [c.name, c]));
|
|
109
|
+
if (classMap.has(type)) {
|
|
110
|
+
return shared_1.InstantiationUtils.toCamelCase(type);
|
|
111
|
+
}
|
|
112
|
+
return shared_1.InstantiationUtils.getDefaultValueForType(type, isOptional);
|
|
113
|
+
}
|
|
114
|
+
getTargetDependency(classInfo, param, paramIndex) {
|
|
115
|
+
if (paramIndex < classInfo.dependencies.length) {
|
|
116
|
+
const resolvedDep = classInfo.dependencies[paramIndex];
|
|
117
|
+
if (resolvedDep)
|
|
118
|
+
return resolvedDep;
|
|
119
|
+
}
|
|
120
|
+
const directMatch = classInfo.dependencies.find(dep => dep === param.type);
|
|
121
|
+
return directMatch || param.type;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.InstantiationGenerator = InstantiationGenerator;
|
|
125
|
+
//# sourceMappingURL=instantiation-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instantiation-generator.js","sourceRoot":"","sources":["../../../src/generator/flat/instantiation-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { ContainerGenerator as ContainerCodeGenerator } from './container-genera
|
|
|
4
4
|
import { InstantiationGenerator } from './instantiation-generator';
|
|
5
5
|
import { BaseContainerGenerator } from './base-container-generator';
|
|
6
6
|
import { ImportGenerator } from './import-generator';
|
|
7
|
+
import { FileWriter } from './file-writer';
|
|
7
8
|
/**
|
|
8
9
|
* Generator for flat (non-modular) container structure.
|
|
9
10
|
* Handles the traditional single-container approach.
|
|
@@ -13,7 +14,7 @@ export declare class FlatContainerGenerator extends BaseContainerGenerator {
|
|
|
13
14
|
private instantiationGenerator;
|
|
14
15
|
private containerCodeGenerator;
|
|
15
16
|
private classes;
|
|
16
|
-
constructor(
|
|
17
|
+
constructor(fileWriter: FileWriter, classes: ClassInfo[], dependencyResolver: DependencyResolver, importGenerator: ImportGenerator, instantiationGenerator: InstantiationGenerator, containerCodeGenerator: ContainerCodeGenerator);
|
|
17
18
|
generate(): void;
|
|
18
19
|
protected generateContainerCode(sortedClasses?: string[]): string;
|
|
19
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flat-container-generator.d.ts","sourceRoot":"","sources":["../../src/generator/flat-container-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"flat-container-generator.d.ts","sourceRoot":"","sources":["../../src/generator/flat-container-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,sBAAsB;IAChE,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,OAAO,CAAc;gBAG3B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,SAAS,EAAE,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,sBAAsB,EAAE,sBAAsB,EAC9C,sBAAsB,EAAE,sBAAsB;IAShD,QAAQ,IAAI,IAAI;IAWhB,SAAS,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAcjE;;OAEG;IACH,UAAU,IAAI,SAAS,EAAE;CAG1B"}
|
|
@@ -7,8 +7,8 @@ const base_container_generator_1 = require("./base-container-generator");
|
|
|
7
7
|
* Handles the traditional single-container approach.
|
|
8
8
|
*/
|
|
9
9
|
class FlatContainerGenerator extends base_container_generator_1.BaseContainerGenerator {
|
|
10
|
-
constructor(
|
|
11
|
-
super(
|
|
10
|
+
constructor(fileWriter, classes, dependencyResolver, importGenerator, instantiationGenerator, containerCodeGenerator) {
|
|
11
|
+
super(fileWriter, importGenerator);
|
|
12
12
|
this.classes = classes;
|
|
13
13
|
this.dependencyResolver = dependencyResolver;
|
|
14
14
|
this.instantiationGenerator = instantiationGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flat-container-generator.js","sourceRoot":"","sources":["../../src/generator/flat-container-generator.ts"],"names":[],"mappings":";;;AAIA,yEAAoE;
|
|
1
|
+
{"version":3,"file":"flat-container-generator.js","sourceRoot":"","sources":["../../src/generator/flat-container-generator.ts"],"names":[],"mappings":";;;AAIA,yEAAoE;AAIpE;;;GAGG;AACH,MAAa,sBAAuB,SAAQ,iDAAsB;IAMhE,YACE,UAAsB,EACtB,OAAoB,EACpB,kBAAsC,EACtC,eAAgC,EAChC,sBAA8C,EAC9C,sBAA8C;QAE9C,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QACrD,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACvD,CAAC;IAED,QAAQ;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAErD,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAES,qBAAqB,CAAC,aAAwB;QACtD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;YACrD,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC;QACpC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;QACzF,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC;QAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,CAAC;QAEpE,OAAO,GAAG,OAAO,OAAO,cAAc,OAAO,eAAe,OAAO,UAAU,IAAI,CAAC;IACpF,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AApDD,wDAoDC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-generator.d.ts","sourceRoot":"","sources":["../../src/generator/import-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,EAAE,SAAS,EAAE;IAIhC,eAAe,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"import-generator.d.ts","sourceRoot":"","sources":["../../src/generator/import-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,EAAE,SAAS,EAAE;IAIhC,eAAe,IAAI,MAAM;CAsB1B"}
|
|
@@ -17,10 +17,8 @@ class ImportGenerator {
|
|
|
17
17
|
for (const dep of classInfo.dependencies) {
|
|
18
18
|
// If dependency is not a managed class, we need to import it
|
|
19
19
|
if (!classMap.has(dep)) {
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
importSet.add(`import { ${dep} } from '${classInfo.importPath}';`);
|
|
23
|
-
}
|
|
20
|
+
//TODO: Think about this
|
|
21
|
+
// importSet.add(`import { ${dep} } from '${classInfo.importPath}';`);
|
|
24
22
|
}
|
|
25
23
|
}
|
|
26
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-generator.js","sourceRoot":"","sources":["../../src/generator/import-generator.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAG1B,YAAY,OAAoB;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,eAAe;QACb,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,sCAAsC;QACtC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,SAAS,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,IAAI,YAAY,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;QAChF,CAAC;QAED,yCAAyC;QACzC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBACzC,6DAA6D;gBAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"import-generator.js","sourceRoot":"","sources":["../../src/generator/import-generator.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAG1B,YAAY,OAAoB;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,eAAe;QACb,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,sCAAsC;QACtC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,SAAS,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,IAAI,YAAY,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;QAChF,CAAC;QAED,yCAAyC;QACzC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBACzC,6DAA6D;gBAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,wBAAwB;oBACxB,sEAAsE;gBAC1E,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AA7BD,0CA6BC"}
|
|
@@ -5,7 +5,7 @@ import { ClassInfo } from '../types';
|
|
|
5
5
|
* @param classesOrModules - Either a flat array of classes or a Map of module-grouped classes
|
|
6
6
|
* @param outputPath - The output path for the generated container file
|
|
7
7
|
*/
|
|
8
|
-
export declare function generateContainerFile(classesOrModules:
|
|
8
|
+
export declare function generateContainerFile(classesOrModules: Map<string, ClassInfo[]>, outputPath: string): void;
|
|
9
9
|
/**
|
|
10
10
|
* Detects circular dependencies in a flat array of classes.
|
|
11
11
|
*
|
|
@@ -15,6 +15,5 @@ export declare function generateContainerFile(classesOrModules: ClassInfo[] | Ma
|
|
|
15
15
|
export declare function detectCircularDependencies(classes: ClassInfo[]): string[][];
|
|
16
16
|
export { ContainerGeneratorFactory } from './container-generator-factory';
|
|
17
17
|
export { BaseContainerGenerator } from './base-container-generator';
|
|
18
|
-
export {
|
|
19
|
-
export { ModularContainerGenerator } from './modular-container-generator';
|
|
18
|
+
export { ModularContainerGenerator } from './modular/modular-container-generator';
|
|
20
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIrC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIrC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAG1G;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,EAAE,CAG3E;AAGD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC"}
|
package/dist/generator/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModularContainerGenerator = exports.
|
|
3
|
+
exports.ModularContainerGenerator = exports.BaseContainerGenerator = exports.ContainerGeneratorFactory = void 0;
|
|
4
4
|
exports.generateContainerFile = generateContainerFile;
|
|
5
5
|
exports.detectCircularDependencies = detectCircularDependencies;
|
|
6
6
|
const dependency_resolver_1 = require("../analyser/dependency-resolver");
|
|
@@ -30,8 +30,6 @@ var container_generator_factory_2 = require("./container-generator-factory");
|
|
|
30
30
|
Object.defineProperty(exports, "ContainerGeneratorFactory", { enumerable: true, get: function () { return container_generator_factory_2.ContainerGeneratorFactory; } });
|
|
31
31
|
var base_container_generator_1 = require("./base-container-generator");
|
|
32
32
|
Object.defineProperty(exports, "BaseContainerGenerator", { enumerable: true, get: function () { return base_container_generator_1.BaseContainerGenerator; } });
|
|
33
|
-
var
|
|
34
|
-
Object.defineProperty(exports, "FlatContainerGenerator", { enumerable: true, get: function () { return flat_container_generator_1.FlatContainerGenerator; } });
|
|
35
|
-
var modular_container_generator_1 = require("./modular-container-generator");
|
|
33
|
+
var modular_container_generator_1 = require("./modular/modular-container-generator");
|
|
36
34
|
Object.defineProperty(exports, "ModularContainerGenerator", { enumerable: true, get: function () { return modular_container_generator_1.ModularContainerGenerator; } });
|
|
37
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";;;AAUA,sDAGC;AAQD,gEAGC;AAvBD,yEAAqE;AACrE,+EAA0E;AAE1E;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";;;AAUA,sDAGC;AAQD,gEAGC;AAvBD,yEAAqE;AACrE,+EAA0E;AAE1E;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,gBAA0C,EAAE,UAAkB;IAClG,MAAM,SAAS,GAAG,uDAAyB,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACjF,SAAS,CAAC,QAAQ,EAAE,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,OAAoB;IAC7D,MAAM,QAAQ,GAAG,IAAI,wCAAkB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC,0BAA0B,EAAE,CAAC;AAC/C,CAAC;AAED,2CAA2C;AAC3C,6EAA0E;AAAjE,wIAAA,yBAAyB,OAAA;AAClC,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAC/B,qFAAkF;AAAzE,wIAAA,yBAAyB,OAAA"}
|
|
@@ -2,7 +2,20 @@ import { ClassInfo } from '../types';
|
|
|
2
2
|
export declare class InstantiationGenerator {
|
|
3
3
|
private classes;
|
|
4
4
|
private dependencyResolver;
|
|
5
|
+
private classMap;
|
|
6
|
+
private interfaceToClassMap;
|
|
5
7
|
constructor(classes: ClassInfo[]);
|
|
6
8
|
generateInstantiations(sortedClasses: string[]): string;
|
|
9
|
+
private separateClassesByScope;
|
|
10
|
+
private filterSingletonClassNames;
|
|
11
|
+
private generateTransientFactories;
|
|
12
|
+
private createTransientFactory;
|
|
13
|
+
private generateSingletonVariables;
|
|
14
|
+
private generateSingletonGetters;
|
|
15
|
+
private createSingletonGetter;
|
|
16
|
+
private generateConstructorArguments;
|
|
17
|
+
private resolveParameterDependency;
|
|
18
|
+
private getTargetDependency;
|
|
19
|
+
private createManagedDependencyCall;
|
|
7
20
|
}
|
|
8
21
|
//# sourceMappingURL=instantiation-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instantiation-generator.d.ts","sourceRoot":"","sources":["../../src/generator/instantiation-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIrC,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,kBAAkB,CAAqB;
|
|
1
|
+
{"version":3,"file":"instantiation-generator.d.ts","sourceRoot":"","sources":["../../src/generator/instantiation-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIrC,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,OAAO,EAAE,SAAS,EAAE;IAOhC,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM;IAavD,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,2BAA2B;CAMpC"}
|
|
@@ -7,146 +7,109 @@ class InstantiationGenerator {
|
|
|
7
7
|
constructor(classes) {
|
|
8
8
|
this.classes = classes;
|
|
9
9
|
this.dependencyResolver = new dependency_resolver_1.DependencyResolver(classes);
|
|
10
|
+
this.classMap = new Map(classes.map(c => [c.name, c]));
|
|
11
|
+
this.interfaceToClassMap = this.dependencyResolver.createInterfaceToClassMap();
|
|
10
12
|
}
|
|
11
13
|
generateInstantiations(sortedClasses) {
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
else {
|
|
51
|
-
// Fallback: check if parameter type directly matches any dependency
|
|
52
|
-
const directMatch = classInfo.dependencies.find(dep => dep === param.type);
|
|
53
|
-
if (directMatch) {
|
|
54
|
-
targetDependency = directMatch;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
// Check if this is a managed dependency
|
|
58
|
-
const implementingClass = interfaceToClassMap.get(targetDependency) || targetDependency;
|
|
59
|
-
const depClassInfo = classMap.get(implementingClass);
|
|
60
|
-
if (depClassInfo) {
|
|
61
|
-
// This is a managed dependency, resolve it
|
|
62
|
-
if (depClassInfo.scope === 'transient') {
|
|
63
|
-
return `${(0, naming_1.toVariableName)(implementingClass)}Factory()`;
|
|
64
|
-
}
|
|
65
|
-
return `get${implementingClass}()`;
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
// Check if it's in our dependencies list (unmanaged but expected)
|
|
69
|
-
if (classInfo.dependencies.includes(targetDependency)) {
|
|
70
|
-
return `new ${targetDependency}()`;
|
|
71
|
-
}
|
|
72
|
-
// This is an unmanaged parameter, generate default value
|
|
73
|
-
return this.dependencyResolver.getDefaultValueForType(param.type, param.isOptional);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
constructorArgs = args.join(', ');
|
|
77
|
-
}
|
|
78
|
-
const instantiation = constructorArgs
|
|
79
|
-
? `new ${className}(${constructorArgs})`
|
|
80
|
-
: `new ${className}()`;
|
|
81
|
-
const lazyGetter = `const ${getterName} = (): ${className} => {\n if (!${variableName}) {\n ${variableName} = ${instantiation};\n }\n return ${variableName};\n};`;
|
|
82
|
-
lazyGetters.push(lazyGetter);
|
|
83
|
-
}
|
|
84
|
-
// Generate transient factory functions (lazy loading)
|
|
85
|
-
for (const classInfo of transientClasses) {
|
|
86
|
-
const className = classInfo.name;
|
|
14
|
+
const { singletonClasses, transientClasses } = this.separateClassesByScope();
|
|
15
|
+
const singletonClassNames = this.filterSingletonClassNames(sortedClasses, singletonClasses);
|
|
16
|
+
const sections = [
|
|
17
|
+
this.generateTransientFactories(transientClasses),
|
|
18
|
+
this.generateSingletonVariables(singletonClassNames),
|
|
19
|
+
this.generateSingletonGetters(singletonClassNames)
|
|
20
|
+
].filter(section => section.length > 0);
|
|
21
|
+
return sections.join('\n\n');
|
|
22
|
+
}
|
|
23
|
+
separateClassesByScope() {
|
|
24
|
+
return {
|
|
25
|
+
singletonClasses: this.classes.filter(c => c.scope === 'singleton'),
|
|
26
|
+
transientClasses: this.classes.filter(c => c.scope === 'transient')
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
filterSingletonClassNames(sortedClasses, singletonClasses) {
|
|
30
|
+
return sortedClasses.filter(name => singletonClasses.some(c => c.name === name));
|
|
31
|
+
}
|
|
32
|
+
generateTransientFactories(transientClasses) {
|
|
33
|
+
if (transientClasses.length === 0)
|
|
34
|
+
return '';
|
|
35
|
+
const factories = transientClasses.map(classInfo => this.createTransientFactory(classInfo));
|
|
36
|
+
return [
|
|
37
|
+
'// Lazy loading setup for transient dependencies',
|
|
38
|
+
...factories
|
|
39
|
+
].join('\n');
|
|
40
|
+
}
|
|
41
|
+
createTransientFactory(classInfo) {
|
|
42
|
+
const variableName = (0, naming_1.toVariableName)(classInfo.name);
|
|
43
|
+
const constructorArgs = this.generateConstructorArguments(classInfo);
|
|
44
|
+
return constructorArgs
|
|
45
|
+
? `const ${variableName}Factory = (): ${classInfo.name} => new ${classInfo.name}(${constructorArgs});`
|
|
46
|
+
: `const ${variableName}Factory = (): ${classInfo.name} => new ${classInfo.name}();`;
|
|
47
|
+
}
|
|
48
|
+
generateSingletonVariables(singletonClassNames) {
|
|
49
|
+
if (singletonClassNames.length === 0)
|
|
50
|
+
return '';
|
|
51
|
+
const variables = singletonClassNames.map(className => {
|
|
87
52
|
const variableName = (0, naming_1.toVariableName)(className);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
53
|
+
return `let ${variableName}: ${className} | undefined;`;
|
|
54
|
+
});
|
|
55
|
+
return [
|
|
56
|
+
'// Lazy initialization variables for singletons',
|
|
57
|
+
...variables
|
|
58
|
+
].join('\n');
|
|
59
|
+
}
|
|
60
|
+
generateSingletonGetters(singletonClassNames) {
|
|
61
|
+
if (singletonClassNames.length === 0)
|
|
62
|
+
return '';
|
|
63
|
+
const getters = [...singletonClassNames].reverse().map(className => this.createSingletonGetter(className)).filter(getter => getter !== null);
|
|
64
|
+
return [
|
|
65
|
+
'// Lazy getter functions for singletons',
|
|
66
|
+
...getters
|
|
67
|
+
].join('\n');
|
|
68
|
+
}
|
|
69
|
+
createSingletonGetter(className) {
|
|
70
|
+
const classInfo = this.classMap.get(className);
|
|
71
|
+
if (!classInfo)
|
|
72
|
+
return null;
|
|
73
|
+
const variableName = (0, naming_1.toVariableName)(className);
|
|
74
|
+
const getterName = `get${className}`;
|
|
75
|
+
const constructorArgs = this.generateConstructorArguments(classInfo);
|
|
76
|
+
const instantiation = constructorArgs
|
|
77
|
+
? `new ${className}(${constructorArgs})`
|
|
78
|
+
: `new ${className}()`;
|
|
79
|
+
return `const ${getterName} = (): ${className} => {\n if (!${variableName}) {\n ${variableName} = ${instantiation};\n }\n return ${variableName};\n};`;
|
|
80
|
+
}
|
|
81
|
+
generateConstructorArguments(classInfo) {
|
|
82
|
+
if (classInfo.constructorParams.length === 0)
|
|
83
|
+
return '';
|
|
84
|
+
const args = classInfo.constructorParams.map((param, paramIndex) => this.resolveParameterDependency(classInfo, param, paramIndex));
|
|
85
|
+
return args.join(', ');
|
|
86
|
+
}
|
|
87
|
+
resolveParameterDependency(classInfo, param, paramIndex) {
|
|
88
|
+
const targetDependency = this.getTargetDependency(classInfo, param, paramIndex);
|
|
89
|
+
const implementingClass = this.interfaceToClassMap.get(targetDependency) || targetDependency;
|
|
90
|
+
const depClassInfo = this.classMap.get(implementingClass);
|
|
91
|
+
if (depClassInfo) {
|
|
92
|
+
return this.createManagedDependencyCall(depClassInfo, implementingClass);
|
|
93
93
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (transientFactories.length > 0) {
|
|
97
|
-
result.push('// Lazy loading setup for transient dependencies');
|
|
98
|
-
// Create individual typed factory functions
|
|
99
|
-
for (const classInfo of transientClasses) {
|
|
100
|
-
const variableName = (0, naming_1.toVariableName)(classInfo.name);
|
|
101
|
-
const className = classInfo.name;
|
|
102
|
-
// Generate constructor arguments for all parameters
|
|
103
|
-
let constructorArgs = '';
|
|
104
|
-
if (classInfo.constructorParams.length > 0) {
|
|
105
|
-
const args = classInfo.constructorParams.map(param => {
|
|
106
|
-
// Check if this parameter is a dependency
|
|
107
|
-
const depIndex = classInfo.dependencies.indexOf(param.type);
|
|
108
|
-
if (depIndex !== -1) {
|
|
109
|
-
// Check if it's a managed dependency (exists in our class map)
|
|
110
|
-
const implementingClass = interfaceToClassMap.get(param.type) || param.type;
|
|
111
|
-
const depClassInfo = classMap.get(implementingClass);
|
|
112
|
-
if (depClassInfo) {
|
|
113
|
-
// This is a managed dependency, resolve it
|
|
114
|
-
if (depClassInfo.scope === 'transient') {
|
|
115
|
-
return `${(0, naming_1.toVariableName)(implementingClass)}Factory()`;
|
|
116
|
-
}
|
|
117
|
-
return `get${implementingClass}()`;
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
// This is an unmanaged dependency, create new instance
|
|
121
|
-
return `new ${param.type}()`;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
// This is an unmanaged parameter, generate default value
|
|
126
|
-
return this.dependencyResolver.getDefaultValueForType(param.type, param.isOptional);
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
constructorArgs = args.join(', ');
|
|
130
|
-
}
|
|
131
|
-
const factoryFunction = constructorArgs
|
|
132
|
-
? `const ${variableName}Factory = (): ${className} => new ${className}(${constructorArgs});`
|
|
133
|
-
: `const ${variableName}Factory = (): ${className} => new ${className}();`;
|
|
134
|
-
result.push(factoryFunction);
|
|
135
|
-
}
|
|
136
|
-
result.push('');
|
|
94
|
+
if (classInfo.dependencies.includes(targetDependency)) {
|
|
95
|
+
return `new ${targetDependency}()`;
|
|
137
96
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
97
|
+
return this.dependencyResolver.getDefaultValueForType(param.type, param.isOptional);
|
|
98
|
+
}
|
|
99
|
+
getTargetDependency(classInfo, param, paramIndex) {
|
|
100
|
+
if (paramIndex < classInfo.dependencies.length) {
|
|
101
|
+
const resolvedDep = classInfo.dependencies[paramIndex];
|
|
102
|
+
if (resolvedDep)
|
|
103
|
+
return resolvedDep;
|
|
143
104
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
105
|
+
const directMatch = classInfo.dependencies.find(dep => dep === param.type);
|
|
106
|
+
return directMatch || param.type;
|
|
107
|
+
}
|
|
108
|
+
createManagedDependencyCall(depClassInfo, implementingClass) {
|
|
109
|
+
if (depClassInfo.scope === 'transient') {
|
|
110
|
+
return `${(0, naming_1.toVariableName)(implementingClass)}Factory()`;
|
|
148
111
|
}
|
|
149
|
-
return
|
|
112
|
+
return `get${implementingClass}()`;
|
|
150
113
|
}
|
|
151
114
|
}
|
|
152
115
|
exports.InstantiationGenerator = InstantiationGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instantiation-generator.js","sourceRoot":"","sources":["../../src/generator/instantiation-generator.ts"],"names":[],"mappings":";;;AACA,4CAAiD;AACjD,+DAA2D;AAE3D,MAAa,sBAAsB;
|
|
1
|
+
{"version":3,"file":"instantiation-generator.js","sourceRoot":"","sources":["../../src/generator/instantiation-generator.ts"],"names":[],"mappings":"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"}
|