@notjustcoders/ioc-arise 1.0.9 → 1.0.11
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/analyser/ast-parser.d.ts +1 -0
- package/dist/analyser/ast-parser.d.ts.map +1 -1
- package/dist/analyser/ast-parser.js +53 -0
- package/dist/analyser/ast-parser.js.map +1 -1
- package/dist/analyser/class-analyzer.d.ts.map +1 -1
- package/dist/analyser/class-analyzer.js +23 -8
- package/dist/analyser/class-analyzer.js.map +1 -1
- package/dist/analyser/dependency-resolver.js +4 -4
- package/dist/analyser/dependency-resolver.js.map +1 -1
- package/dist/analyser/module-dependency-resolver.js +1 -1
- package/dist/analyser/module-dependency-resolver.js.map +1 -1
- package/dist/commands/analyze.js +1 -1
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +2 -2
- package/dist/commands/generate.js.map +1 -1
- package/dist/container.gen.d.ts +20 -12
- package/dist/container.gen.d.ts.map +1 -1
- package/dist/container.gen.js +114 -80
- package/dist/container.gen.js.map +1 -1
- package/dist/generator/import-generator.d.ts.map +1 -1
- package/dist/generator/import-generator.js +11 -5
- package/dist/generator/import-generator.js.map +1 -1
- package/dist/generator/modular/module-dependency-resolver.js +1 -1
- package/dist/generator/modular/module-dependency-resolver.js.map +1 -1
- package/dist/generator/shared/instantiation-utils.d.ts +2 -1
- package/dist/generator/shared/instantiation-utils.d.ts.map +1 -1
- package/dist/generator/shared/instantiation-utils.js +17 -5
- package/dist/generator/shared/instantiation-utils.js.map +1 -1
- package/dist/renderer/console-analysis-renderer.js +1 -1
- package/dist/renderer/console-analysis-renderer.js.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/analyser/ast-parser.test.d.ts +0 -2
- package/dist/__tests__/analyser/ast-parser.test.d.ts.map +0 -1
- package/dist/__tests__/analyser/ast-parser.test.js +0 -309
- package/dist/__tests__/analyser/ast-parser.test.js.map +0 -1
- package/dist/__tests__/analyser/class-analyzer.test.d.ts +0 -2
- package/dist/__tests__/analyser/class-analyzer.test.d.ts.map +0 -1
- package/dist/__tests__/analyser/class-analyzer.test.js +0 -323
- package/dist/__tests__/analyser/class-analyzer.test.js.map +0 -1
- package/dist/__tests__/analyser/dependency-resolver.test.d.ts +0 -2
- package/dist/__tests__/analyser/dependency-resolver.test.d.ts.map +0 -1
- package/dist/__tests__/analyser/dependency-resolver.test.js +0 -128
- package/dist/__tests__/analyser/dependency-resolver.test.js.map +0 -1
- package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.d.ts +0 -28
- package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.d.ts.map +0 -1
- package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.js +0 -222
- package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.js.map +0 -1
- package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.d.ts +0 -54
- package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.d.ts.map +0 -1
- package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.js +0 -285
- package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.js.map +0 -1
- package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.d.ts +0 -13
- package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.d.ts.map +0 -1
- package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.js +0 -266
- package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.js.map +0 -1
- package/dist/__tests__/analyser/project-analyzer.test.d.ts +0 -2
- package/dist/__tests__/analyser/project-analyzer.test.d.ts.map +0 -1
- package/dist/__tests__/analyser/project-analyzer.test.js +0 -191
- package/dist/__tests__/analyser/project-analyzer.test.js.map +0 -1
- package/dist/__tests__/generator/container-generator.test.d.ts +0 -2
- package/dist/__tests__/generator/container-generator.test.d.ts.map +0 -1
- package/dist/__tests__/generator/container-generator.test.js +0 -185
- package/dist/__tests__/generator/container-generator.test.js.map +0 -1
- package/dist/__tests__/generator/dependency-resolver.test.d.ts +0 -2
- package/dist/__tests__/generator/dependency-resolver.test.d.ts.map +0 -1
- package/dist/__tests__/generator/dependency-resolver.test.js +0 -330
- package/dist/__tests__/generator/dependency-resolver.test.js.map +0 -1
- package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.d.ts +0 -23
- package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.d.ts.map +0 -1
- package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.js +0 -254
- package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.js.map +0 -1
- package/dist/__tests__/generator/fixtures/import-generator.fixtures.d.ts +0 -10
- package/dist/__tests__/generator/fixtures/import-generator.fixtures.d.ts.map +0 -1
- package/dist/__tests__/generator/fixtures/import-generator.fixtures.js +0 -194
- package/dist/__tests__/generator/fixtures/import-generator.fixtures.js.map +0 -1
- package/dist/__tests__/generator/import-generator.test.d.ts +0 -2
- package/dist/__tests__/generator/import-generator.test.d.ts.map +0 -1
- package/dist/__tests__/generator/import-generator.test.js +0 -121
- package/dist/__tests__/generator/import-generator.test.js.map +0 -1
- package/dist/__tests__/generator/instantiation-generator.test.d.ts +0 -2
- package/dist/__tests__/generator/instantiation-generator.test.d.ts.map +0 -1
- package/dist/__tests__/generator/instantiation-generator.test.js +0 -251
- package/dist/__tests__/generator/instantiation-generator.test.js.map +0 -1
- package/dist/generator/Container-file-generator.d.ts +0 -20
- package/dist/generator/Container-file-generator.d.ts.map +0 -1
- package/dist/generator/Container-file-generator.js +0 -255
- package/dist/generator/Container-file-generator.js.map +0 -1
- package/dist/generator/base-container-code-generator.d.ts +0 -15
- package/dist/generator/base-container-code-generator.d.ts.map +0 -1
- package/dist/generator/base-container-code-generator.js +0 -23
- package/dist/generator/base-container-code-generator.js.map +0 -1
- package/dist/generator/base-dependency-resolver.d.ts +0 -26
- package/dist/generator/base-dependency-resolver.d.ts.map +0 -1
- package/dist/generator/base-dependency-resolver.js +0 -72
- package/dist/generator/base-dependency-resolver.js.map +0 -1
- package/dist/generator/base-instantiation-generator.d.ts +0 -55
- package/dist/generator/base-instantiation-generator.d.ts.map +0 -1
- package/dist/generator/base-instantiation-generator.js +0 -117
- package/dist/generator/base-instantiation-generator.js.map +0 -1
- package/dist/generator/container-generator.d.ts +0 -8
- package/dist/generator/container-generator.d.ts.map +0 -1
- package/dist/generator/container-generator.js +0 -35
- package/dist/generator/container-generator.js.map +0 -1
- package/dist/generator/dependency-resolver.d.ts +0 -11
- package/dist/generator/dependency-resolver.d.ts.map +0 -1
- package/dist/generator/dependency-resolver.js +0 -83
- package/dist/generator/dependency-resolver.js.map +0 -1
- package/dist/generator/duplicate-import-resolver.d.ts +0 -44
- package/dist/generator/duplicate-import-resolver.d.ts.map +0 -1
- package/dist/generator/duplicate-import-resolver.js +0 -162
- package/dist/generator/duplicate-import-resolver.js.map +0 -1
- package/dist/generator/flat/container-generator.d.ts +0 -8
- package/dist/generator/flat/container-generator.d.ts.map +0 -1
- package/dist/generator/flat/container-generator.js +0 -17
- package/dist/generator/flat/container-generator.js.map +0 -1
- package/dist/generator/flat/dependency-resolver.d.ts +0 -8
- package/dist/generator/flat/dependency-resolver.d.ts.map +0 -1
- package/dist/generator/flat/dependency-resolver.js +0 -43
- package/dist/generator/flat/dependency-resolver.js.map +0 -1
- package/dist/generator/flat/flat-container-generator.d.ts +0 -25
- package/dist/generator/flat/flat-container-generator.d.ts.map +0 -1
- package/dist/generator/flat/flat-container-generator.js +0 -44
- package/dist/generator/flat/flat-container-generator.js.map +0 -1
- package/dist/generator/flat/instantiation-generator.d.ts +0 -24
- package/dist/generator/flat/instantiation-generator.d.ts.map +0 -1
- package/dist/generator/flat/instantiation-generator.js +0 -125
- package/dist/generator/flat/instantiation-generator.js.map +0 -1
- package/dist/generator/flat-container-generator.d.ts +0 -25
- package/dist/generator/flat-container-generator.d.ts.map +0 -1
- package/dist/generator/flat-container-generator.js +0 -44
- package/dist/generator/flat-container-generator.js.map +0 -1
- package/dist/generator/instantiation-generator.d.ts +0 -21
- package/dist/generator/instantiation-generator.d.ts.map +0 -1
- package/dist/generator/instantiation-generator.js +0 -116
- package/dist/generator/instantiation-generator.js.map +0 -1
- package/dist/generator/modular/class-sorter.d.ts +0 -17
- package/dist/generator/modular/class-sorter.d.ts.map +0 -1
- package/dist/generator/modular/class-sorter.js +0 -40
- package/dist/generator/modular/class-sorter.js.map +0 -1
- package/dist/generator/modular/modular-container-code-generator.d.ts +0 -65
- package/dist/generator/modular/modular-container-code-generator.d.ts.map +0 -1
- package/dist/generator/modular/modular-container-code-generator.js +0 -157
- package/dist/generator/modular/modular-container-code-generator.js.map +0 -1
- package/dist/generator/modular/module-export-generator.d.ts +0 -42
- package/dist/generator/modular/module-export-generator.d.ts.map +0 -1
- package/dist/generator/modular/module-export-generator.js +0 -82
- package/dist/generator/modular/module-export-generator.js.map +0 -1
- package/dist/generator/modular/module-scope-generator.d.ts +0 -47
- package/dist/generator/modular/module-scope-generator.d.ts.map +0 -1
- package/dist/generator/modular/module-scope-generator.js +0 -111
- package/dist/generator/modular/module-scope-generator.js.map +0 -1
- package/dist/generator/modular/refactored-modular-container-generator.d.ts +0 -38
- package/dist/generator/modular/refactored-modular-container-generator.d.ts.map +0 -1
- package/dist/generator/modular/refactored-modular-container-generator.js +0 -73
- package/dist/generator/modular/refactored-modular-container-generator.js.map +0 -1
- package/dist/generator/modular-container-generator.d.ts +0 -21
- package/dist/generator/modular-container-generator.d.ts.map +0 -1
- package/dist/generator/modular-container-generator.js +0 -57
- package/dist/generator/modular-container-generator.js.map +0 -1
- package/dist/generator/module-container-function-generator.d.ts +0 -30
- package/dist/generator/module-container-function-generator.d.ts.map +0 -1
- package/dist/generator/module-container-function-generator.js +0 -199
- package/dist/generator/module-container-function-generator.js.map +0 -1
- package/dist/generator/shared/dependency-resolver-utils.d.ts +0 -28
- package/dist/generator/shared/dependency-resolver-utils.d.ts.map +0 -1
- package/dist/generator/shared/dependency-resolver-utils.js +0 -67
- package/dist/generator/shared/dependency-resolver-utils.js.map +0 -1
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InstantiationGenerator = void 0;
|
|
4
|
-
const naming_1 = require("../utils/naming");
|
|
5
|
-
const dependency_resolver_1 = require("./dependency-resolver");
|
|
6
|
-
class InstantiationGenerator {
|
|
7
|
-
constructor(classes) {
|
|
8
|
-
this.classes = classes;
|
|
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();
|
|
12
|
-
}
|
|
13
|
-
generateInstantiations(sortedClasses) {
|
|
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 => {
|
|
52
|
-
const variableName = (0, naming_1.toVariableName)(className);
|
|
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
|
-
}
|
|
94
|
-
if (classInfo.dependencies.includes(targetDependency)) {
|
|
95
|
-
return `new ${targetDependency}()`;
|
|
96
|
-
}
|
|
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;
|
|
104
|
-
}
|
|
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()`;
|
|
111
|
-
}
|
|
112
|
-
return `get${implementingClass}()`;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
exports.InstantiationGenerator = InstantiationGenerator;
|
|
116
|
-
//# sourceMappingURL=instantiation-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instantiation-generator.js","sourceRoot":"","sources":["../../src/generator/instantiation-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { ClassInfo } from '../../types';
|
|
2
|
-
/**
|
|
3
|
-
* Utility class for sorting classes by their dependencies within modules.
|
|
4
|
-
* Handles topological sorting to ensure proper instantiation order.
|
|
5
|
-
*/
|
|
6
|
-
export declare class ClassSorter {
|
|
7
|
-
/**
|
|
8
|
-
* Sorts classes by their dependencies to ensure proper instantiation order.
|
|
9
|
-
* Only considers dependencies that are within the same module and are singletons.
|
|
10
|
-
*
|
|
11
|
-
* @param classes - Classes to sort
|
|
12
|
-
* @param allModuleClasses - All classes in the module for dependency lookup
|
|
13
|
-
* @returns Sorted array of ClassInfo objects
|
|
14
|
-
*/
|
|
15
|
-
static sortClassesByDependencies(classes: ClassInfo[], allModuleClasses: ClassInfo[]): ClassInfo[];
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=class-sorter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"class-sorter.d.ts","sourceRoot":"","sources":["../../../src/generator/modular/class-sorter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,qBAAa,WAAW;IACtB;;;;;;;OAOG;IACH,MAAM,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAyBnG"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ClassSorter = void 0;
|
|
4
|
-
const topological_sorter_1 = require("../../utils/topological-sorter");
|
|
5
|
-
/**
|
|
6
|
-
* Utility class for sorting classes by their dependencies within modules.
|
|
7
|
-
* Handles topological sorting to ensure proper instantiation order.
|
|
8
|
-
*/
|
|
9
|
-
class ClassSorter {
|
|
10
|
-
/**
|
|
11
|
-
* Sorts classes by their dependencies to ensure proper instantiation order.
|
|
12
|
-
* Only considers dependencies that are within the same module and are singletons.
|
|
13
|
-
*
|
|
14
|
-
* @param classes - Classes to sort
|
|
15
|
-
* @param allModuleClasses - All classes in the module for dependency lookup
|
|
16
|
-
* @returns Sorted array of ClassInfo objects
|
|
17
|
-
*/
|
|
18
|
-
static sortClassesByDependencies(classes, allModuleClasses) {
|
|
19
|
-
// Build dependency graph for classes within the module
|
|
20
|
-
const dependencyGraph = new Map();
|
|
21
|
-
for (const classInfo of classes) {
|
|
22
|
-
const dependencies = [];
|
|
23
|
-
// Only include dependencies that are within the same module and are singletons
|
|
24
|
-
for (const dep of classInfo.dependencies) {
|
|
25
|
-
const depClass = allModuleClasses.find(c => c.interfaceName === dep && c.scope !== 'transient');
|
|
26
|
-
if (depClass && classes.includes(depClass)) {
|
|
27
|
-
dependencies.push(depClass.name);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
dependencyGraph.set(classInfo.name, dependencies);
|
|
31
|
-
}
|
|
32
|
-
// Use TopologicalSorter to sort the classes
|
|
33
|
-
const sortResult = topological_sorter_1.TopologicalSorter.sort(dependencyGraph);
|
|
34
|
-
// Map sorted class names back to ClassInfo objects
|
|
35
|
-
const classMap = new Map(classes.map(c => [c.name, c]));
|
|
36
|
-
return sortResult.sorted.map(className => classMap.get(className)).filter(Boolean);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.ClassSorter = ClassSorter;
|
|
40
|
-
//# sourceMappingURL=class-sorter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"class-sorter.js","sourceRoot":"","sources":["../../../src/generator/modular/class-sorter.ts"],"names":[],"mappings":";;;AACA,uEAAmE;AAEnE;;;GAGG;AACH,MAAa,WAAW;IACtB;;;;;;;OAOG;IACH,MAAM,CAAC,yBAAyB,CAAC,OAAoB,EAAE,gBAA6B;QAClF,uDAAuD;QACvD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;QAEpD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,+EAA+E;YAC/E,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBACzC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;gBAChG,IAAI,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3C,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC;QAED,4CAA4C;QAC5C,MAAM,UAAU,GAAG,sCAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE3D,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtF,CAAC;CACF;AAlCD,kCAkCC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { ClassInfo } from '../../types';
|
|
2
|
-
import { DependencyResolver } from '../dependency-resolver';
|
|
3
|
-
/**
|
|
4
|
-
* Generates the complete modular container code.
|
|
5
|
-
* Orchestrates the generation of module functions, aggregated container, and type exports.
|
|
6
|
-
*/
|
|
7
|
-
export declare class ModularContainerCodeGenerator {
|
|
8
|
-
private camelCase;
|
|
9
|
-
private moduleContainerFunctionGenerator;
|
|
10
|
-
private moduleExportGenerator;
|
|
11
|
-
constructor(dependencyResolver: DependencyResolver, camelCase: (str: string) => string);
|
|
12
|
-
/**
|
|
13
|
-
* Generates the complete modular container code.
|
|
14
|
-
*
|
|
15
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
16
|
-
* @returns Generated container code
|
|
17
|
-
*/
|
|
18
|
-
generateContainerCode(moduleGroupedClasses: Map<string, ClassInfo[]>): string;
|
|
19
|
-
/**
|
|
20
|
-
* Generates the aggregated container that combines all modules.
|
|
21
|
-
*
|
|
22
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
23
|
-
* @param allModuleClasses - All classes across all modules
|
|
24
|
-
* @returns Generated aggregated container code
|
|
25
|
-
*/
|
|
26
|
-
private generateAggregatedContainer;
|
|
27
|
-
/**
|
|
28
|
-
* Generates module instantiations for the aggregated container.
|
|
29
|
-
*
|
|
30
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
31
|
-
* @param allModuleClasses - All classes across all modules
|
|
32
|
-
* @returns Generated module instantiation code
|
|
33
|
-
*/
|
|
34
|
-
private generateModuleInstantiations;
|
|
35
|
-
/**
|
|
36
|
-
* Generates container properties that expose all module instances.
|
|
37
|
-
*
|
|
38
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
39
|
-
* @returns Generated container properties code
|
|
40
|
-
*/
|
|
41
|
-
private generateContainerProperties;
|
|
42
|
-
/**
|
|
43
|
-
* Generates the modular type export for TypeScript support.
|
|
44
|
-
*
|
|
45
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
46
|
-
* @returns Generated type export code
|
|
47
|
-
*/
|
|
48
|
-
private generateModularTypeExport;
|
|
49
|
-
/**
|
|
50
|
-
* Gets all classes from all modules.
|
|
51
|
-
*
|
|
52
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
53
|
-
* @returns Array of all classes
|
|
54
|
-
*/
|
|
55
|
-
private getAllModuleClasses;
|
|
56
|
-
/**
|
|
57
|
-
* Gets external dependencies for a module.
|
|
58
|
-
*
|
|
59
|
-
* @param moduleClasses - Classes in the module
|
|
60
|
-
* @param allModuleClasses - All classes across all modules
|
|
61
|
-
* @returns Set of external dependency class names
|
|
62
|
-
*/
|
|
63
|
-
private getModuleExternalDependencies;
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=modular-container-code-generator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modular-container-code-generator.d.ts","sourceRoot":"","sources":["../../../src/generator/modular/modular-container-code-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,6BAA6B;IAMtC,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,gCAAgC,CAAmC;IAC3E,OAAO,CAAC,qBAAqB,CAAwB;gBAGnD,kBAAkB,EAAE,kBAAkB,EAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM;IAS5C;;;;;OAKG;IACH,qBAAqB,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,MAAM;IAyB7E;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAoBnC;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IA0CpC;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAcnC;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;CAoBtC"}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModularContainerCodeGenerator = void 0;
|
|
4
|
-
const module_container_function_generator_1 = require("./module-container-function-generator");
|
|
5
|
-
const module_export_generator_1 = require("./module-export-generator");
|
|
6
|
-
/**
|
|
7
|
-
* Generates the complete modular container code.
|
|
8
|
-
* Orchestrates the generation of module functions, aggregated container, and type exports.
|
|
9
|
-
*/
|
|
10
|
-
class ModularContainerCodeGenerator {
|
|
11
|
-
constructor(dependencyResolver, camelCase) {
|
|
12
|
-
this.camelCase = camelCase;
|
|
13
|
-
this.moduleContainerFunctionGenerator = new module_container_function_generator_1.ModuleContainerFunctionGenerator(dependencyResolver, camelCase);
|
|
14
|
-
this.moduleExportGenerator = new module_export_generator_1.ModuleExportGenerator(camelCase);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Generates the complete modular container code.
|
|
18
|
-
*
|
|
19
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
20
|
-
* @returns Generated container code
|
|
21
|
-
*/
|
|
22
|
-
generateContainerCode(moduleGroupedClasses) {
|
|
23
|
-
const allModuleClasses = this.getAllModuleClasses(moduleGroupedClasses);
|
|
24
|
-
const parts = [];
|
|
25
|
-
// Generate individual module functions
|
|
26
|
-
for (const [moduleName, classes] of moduleGroupedClasses) {
|
|
27
|
-
const moduleFunction = this.moduleContainerFunctionGenerator.generateModuleFunction(moduleName, classes, allModuleClasses);
|
|
28
|
-
parts.push(moduleFunction);
|
|
29
|
-
}
|
|
30
|
-
// Generate aggregated container
|
|
31
|
-
const aggregatedContainer = this.generateAggregatedContainer(moduleGroupedClasses, allModuleClasses);
|
|
32
|
-
parts.push(aggregatedContainer);
|
|
33
|
-
// Generate modular type export
|
|
34
|
-
const typeExport = this.generateModularTypeExport(moduleGroupedClasses);
|
|
35
|
-
parts.push(typeExport);
|
|
36
|
-
return parts.join('\n\n');
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Generates the aggregated container that combines all modules.
|
|
40
|
-
*
|
|
41
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
42
|
-
* @param allModuleClasses - All classes across all modules
|
|
43
|
-
* @returns Generated aggregated container code
|
|
44
|
-
*/
|
|
45
|
-
generateAggregatedContainer(moduleGroupedClasses, allModuleClasses) {
|
|
46
|
-
const moduleInstantiations = this.generateModuleInstantiations(moduleGroupedClasses, allModuleClasses);
|
|
47
|
-
const containerProperties = this.generateContainerProperties(moduleGroupedClasses);
|
|
48
|
-
return `function createContainer() {\n` +
|
|
49
|
-
`${moduleInstantiations}\n\n` +
|
|
50
|
-
` return {\n` +
|
|
51
|
-
`${containerProperties}\n` +
|
|
52
|
-
` };\n` +
|
|
53
|
-
`}\n\n` +
|
|
54
|
-
`export const container = createContainer();`;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Generates module instantiations for the aggregated container.
|
|
58
|
-
*
|
|
59
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
60
|
-
* @param allModuleClasses - All classes across all modules
|
|
61
|
-
* @returns Generated module instantiation code
|
|
62
|
-
*/
|
|
63
|
-
generateModuleInstantiations(moduleGroupedClasses, allModuleClasses) {
|
|
64
|
-
const moduleNames = Array.from(moduleGroupedClasses.keys());
|
|
65
|
-
const instantiations = [];
|
|
66
|
-
// First pass: create modules without dependencies
|
|
67
|
-
const modulesWithoutDeps = moduleNames.filter(moduleName => {
|
|
68
|
-
const classes = moduleGroupedClasses.get(moduleName);
|
|
69
|
-
const externalDeps = this.getModuleExternalDependencies(classes, allModuleClasses);
|
|
70
|
-
return externalDeps.size === 0;
|
|
71
|
-
});
|
|
72
|
-
for (const moduleName of modulesWithoutDeps) {
|
|
73
|
-
const classes = moduleGroupedClasses.get(moduleName);
|
|
74
|
-
const instantiation = this.moduleExportGenerator.generateModuleInstantiation(moduleName, classes, allModuleClasses);
|
|
75
|
-
instantiations.push(instantiation);
|
|
76
|
-
}
|
|
77
|
-
// Second pass: create modules with dependencies
|
|
78
|
-
const modulesWithDeps = moduleNames.filter(moduleName => !modulesWithoutDeps.includes(moduleName));
|
|
79
|
-
for (const moduleName of modulesWithDeps) {
|
|
80
|
-
const classes = moduleGroupedClasses.get(moduleName);
|
|
81
|
-
const instantiation = this.moduleExportGenerator.generateModuleInstantiation(moduleName, classes, allModuleClasses);
|
|
82
|
-
instantiations.push(instantiation);
|
|
83
|
-
}
|
|
84
|
-
return instantiations.join('\n');
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Generates container properties that expose all module instances.
|
|
88
|
-
*
|
|
89
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
90
|
-
* @returns Generated container properties code
|
|
91
|
-
*/
|
|
92
|
-
generateContainerProperties(moduleGroupedClasses) {
|
|
93
|
-
const properties = [];
|
|
94
|
-
for (const [moduleName, classes] of moduleGroupedClasses) {
|
|
95
|
-
for (const classInfo of classes) {
|
|
96
|
-
const propertyName = this.camelCase(classInfo.name);
|
|
97
|
-
const moduleProperty = this.camelCase(moduleName);
|
|
98
|
-
properties.push(` get ${propertyName}() { return ${moduleProperty}Module.${propertyName}; }`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return properties.join(',\n');
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Generates the modular type export for TypeScript support.
|
|
105
|
-
*
|
|
106
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
107
|
-
* @returns Generated type export code
|
|
108
|
-
*/
|
|
109
|
-
generateModularTypeExport(moduleGroupedClasses) {
|
|
110
|
-
const typeProperties = [];
|
|
111
|
-
for (const [, classes] of moduleGroupedClasses) {
|
|
112
|
-
for (const classInfo of classes) {
|
|
113
|
-
const propertyName = this.camelCase(classInfo.name);
|
|
114
|
-
const interfaceName = classInfo.interfaceName || classInfo.name;
|
|
115
|
-
typeProperties.push(` ${propertyName}: ${interfaceName};`);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return `export type ModularContainer = {\n${typeProperties.join('\n')}\n};`;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Gets all classes from all modules.
|
|
122
|
-
*
|
|
123
|
-
* @param moduleGroupedClasses - Map of module names to their classes
|
|
124
|
-
* @returns Array of all classes
|
|
125
|
-
*/
|
|
126
|
-
getAllModuleClasses(moduleGroupedClasses) {
|
|
127
|
-
const allClasses = [];
|
|
128
|
-
for (const classes of moduleGroupedClasses.values()) {
|
|
129
|
-
allClasses.push(...classes);
|
|
130
|
-
}
|
|
131
|
-
return allClasses;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Gets external dependencies for a module.
|
|
135
|
-
*
|
|
136
|
-
* @param moduleClasses - Classes in the module
|
|
137
|
-
* @param allModuleClasses - All classes across all modules
|
|
138
|
-
* @returns Set of external dependency class names
|
|
139
|
-
*/
|
|
140
|
-
getModuleExternalDependencies(moduleClasses, allModuleClasses) {
|
|
141
|
-
const externalDeps = new Set();
|
|
142
|
-
const currentModuleInterfaces = new Set(moduleClasses.map(c => c.interfaceName));
|
|
143
|
-
for (const classInfo of moduleClasses) {
|
|
144
|
-
for (const dep of classInfo.dependencies) {
|
|
145
|
-
if (!currentModuleInterfaces.has(dep)) {
|
|
146
|
-
const externalClass = allModuleClasses.find(c => c.interfaceName === dep);
|
|
147
|
-
if (externalClass) {
|
|
148
|
-
externalDeps.add(externalClass.name);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return externalDeps;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
exports.ModularContainerCodeGenerator = ModularContainerCodeGenerator;
|
|
157
|
-
//# sourceMappingURL=modular-container-code-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modular-container-code-generator.js","sourceRoot":"","sources":["../../../src/generator/modular/modular-container-code-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { ClassInfo } from '../../types';
|
|
2
|
-
/**
|
|
3
|
-
* Handles generation of module exports for modular container generation.
|
|
4
|
-
* Creates export objects that expose singleton and transient class instances.
|
|
5
|
-
*/
|
|
6
|
-
export declare class ModuleExportGenerator {
|
|
7
|
-
private camelCase;
|
|
8
|
-
constructor(camelCase: (str: string) => string);
|
|
9
|
-
/**
|
|
10
|
-
* Generates module exports for a given set of classes.
|
|
11
|
-
* Creates an object with getters for singletons and factory functions for transients.
|
|
12
|
-
*
|
|
13
|
-
* @param classes - Classes to generate exports for
|
|
14
|
-
* @returns Generated module export code
|
|
15
|
-
*/
|
|
16
|
-
generateModuleExports(classes: ClassInfo[]): string;
|
|
17
|
-
/**
|
|
18
|
-
* Creates a getter for a specific class in the module export.
|
|
19
|
-
*
|
|
20
|
-
* @param classInfo - Class to create export getter for
|
|
21
|
-
* @returns Generated getter code
|
|
22
|
-
*/
|
|
23
|
-
private createModuleExportGetter;
|
|
24
|
-
/**
|
|
25
|
-
* Generates module instantiation code for the aggregated container.
|
|
26
|
-
*
|
|
27
|
-
* @param moduleName - Name of the module
|
|
28
|
-
* @param moduleClasses - Classes in the module
|
|
29
|
-
* @param allModuleClasses - All classes across all modules
|
|
30
|
-
* @returns Generated module instantiation code
|
|
31
|
-
*/
|
|
32
|
-
generateModuleInstantiation(moduleName: string, moduleClasses: ClassInfo[], allModuleClasses: ClassInfo[]): string;
|
|
33
|
-
/**
|
|
34
|
-
* Gets the arguments needed for a module function call.
|
|
35
|
-
*
|
|
36
|
-
* @param moduleClasses - Classes in the module
|
|
37
|
-
* @param allModuleClasses - All classes across all modules
|
|
38
|
-
* @returns Comma-separated argument string
|
|
39
|
-
*/
|
|
40
|
-
private getModuleFunctionArguments;
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=module-export-generator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module-export-generator.d.ts","sourceRoot":"","sources":["../../../src/generator/modular/module-export-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,qBAAqB;IACpB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM;IAEtD;;;;;;OAMG;IACH,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM;IAUnD;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;;;;;;OAOG;IACH,2BAA2B,CACzB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,SAAS,EAAE,EAC1B,gBAAgB,EAAE,SAAS,EAAE,GAC5B,MAAM;IAOT;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;CA6BnC"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModuleExportGenerator = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Handles generation of module exports for modular container generation.
|
|
6
|
-
* Creates export objects that expose singleton and transient class instances.
|
|
7
|
-
*/
|
|
8
|
-
class ModuleExportGenerator {
|
|
9
|
-
constructor(camelCase) {
|
|
10
|
-
this.camelCase = camelCase;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Generates module exports for a given set of classes.
|
|
14
|
-
* Creates an object with getters for singletons and factory functions for transients.
|
|
15
|
-
*
|
|
16
|
-
* @param classes - Classes to generate exports for
|
|
17
|
-
* @returns Generated module export code
|
|
18
|
-
*/
|
|
19
|
-
generateModuleExports(classes) {
|
|
20
|
-
if (classes.length === 0)
|
|
21
|
-
return ' return {};';
|
|
22
|
-
const exports = classes.map(classInfo => this.createModuleExportGetter(classInfo));
|
|
23
|
-
return ` return {\n${exports.join(',\n')}\n };`;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Creates a getter for a specific class in the module export.
|
|
27
|
-
*
|
|
28
|
-
* @param classInfo - Class to create export getter for
|
|
29
|
-
* @returns Generated getter code
|
|
30
|
-
*/
|
|
31
|
-
createModuleExportGetter(classInfo) {
|
|
32
|
-
const propertyName = this.camelCase(classInfo.name);
|
|
33
|
-
if (classInfo.scope === 'singleton') {
|
|
34
|
-
return ` get ${propertyName}() { return get${classInfo.name}(); }`;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
return ` get ${propertyName}() { return create${classInfo.name}(); }`;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Generates module instantiation code for the aggregated container.
|
|
42
|
-
*
|
|
43
|
-
* @param moduleName - Name of the module
|
|
44
|
-
* @param moduleClasses - Classes in the module
|
|
45
|
-
* @param allModuleClasses - All classes across all modules
|
|
46
|
-
* @returns Generated module instantiation code
|
|
47
|
-
*/
|
|
48
|
-
generateModuleInstantiation(moduleName, moduleClasses, allModuleClasses) {
|
|
49
|
-
const functionName = `create${moduleName}Module`;
|
|
50
|
-
const args = this.getModuleFunctionArguments(moduleClasses, allModuleClasses);
|
|
51
|
-
return ` const ${this.camelCase(moduleName)}Module = ${functionName}(${args});`;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Gets the arguments needed for a module function call.
|
|
55
|
-
*
|
|
56
|
-
* @param moduleClasses - Classes in the module
|
|
57
|
-
* @param allModuleClasses - All classes across all modules
|
|
58
|
-
* @returns Comma-separated argument string
|
|
59
|
-
*/
|
|
60
|
-
getModuleFunctionArguments(moduleClasses, allModuleClasses) {
|
|
61
|
-
const externalDeps = new Set();
|
|
62
|
-
const currentModuleInterfaces = new Set(moduleClasses.map(c => c.interfaceName));
|
|
63
|
-
// Find all external dependencies
|
|
64
|
-
for (const classInfo of moduleClasses) {
|
|
65
|
-
for (const dep of classInfo.dependencies) {
|
|
66
|
-
if (!currentModuleInterfaces.has(dep)) {
|
|
67
|
-
const externalClass = allModuleClasses.find(c => c.interfaceName === dep);
|
|
68
|
-
if (externalClass) {
|
|
69
|
-
externalDeps.add(externalClass.name);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (externalDeps.size === 0) {
|
|
75
|
-
return '';
|
|
76
|
-
}
|
|
77
|
-
const depArgs = Array.from(externalDeps).map(dep => `${this.camelCase(dep)}: otherModules.${this.camelCase(dep)}`);
|
|
78
|
-
return `{ ${depArgs.join(', ')} }`;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.ModuleExportGenerator = ModuleExportGenerator;
|
|
82
|
-
//# sourceMappingURL=module-export-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module-export-generator.js","sourceRoot":"","sources":["../../../src/generator/modular/module-export-generator.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,qBAAqB;IAChC,YAAoB,SAAkC;QAAlC,cAAS,GAAT,SAAS,CAAyB;IAAG,CAAC;IAE1D;;;;;;OAMG;IACH,qBAAqB,CAAC,OAAoB;QACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC;QAEhD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CACtC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CACzC,CAAC;QAEF,OAAO,eAAe,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACK,wBAAwB,CAAC,SAAoB;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO,WAAW,YAAY,kBAAkB,SAAS,CAAC,IAAI,OAAO,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,OAAO,WAAW,YAAY,qBAAqB,SAAS,CAAC,IAAI,OAAO,CAAC;QAC3E,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,2BAA2B,CACzB,UAAkB,EAClB,aAA0B,EAC1B,gBAA6B;QAE7B,MAAM,YAAY,GAAG,SAAS,UAAU,QAAQ,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAE9E,OAAO,WAAW,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,YAAY,IAAI,IAAI,IAAI,CAAC;IACnF,CAAC;IAED;;;;;;OAMG;IACK,0BAA0B,CAChC,aAA0B,EAC1B,gBAA6B;QAE7B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAEjF,iCAAiC;QACjC,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;YACtC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBACzC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtC,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,GAAG,CAAC,CAAC;oBAC1E,IAAI,aAAa,EAAE,CAAC;wBAClB,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACjD,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAC9D,CAAC;QAEF,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC,CAAC;CACF;AA3FD,sDA2FC"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { ClassInfo } from '../../types';
|
|
2
|
-
import { DependencyResolver } from '../dependency-resolver';
|
|
3
|
-
/**
|
|
4
|
-
* Handles generation of scope-specific code (singleton and transient) for modules.
|
|
5
|
-
* Manages the creation of singleton variables, getters, and transient factories.
|
|
6
|
-
*/
|
|
7
|
-
export declare class ModuleScopeGenerator {
|
|
8
|
-
private dependencyResolver;
|
|
9
|
-
private camelCase;
|
|
10
|
-
constructor(dependencyResolver: DependencyResolver, camelCase: (str: string) => string);
|
|
11
|
-
/**
|
|
12
|
-
* Generates singleton variable declarations for a module.
|
|
13
|
-
*
|
|
14
|
-
* @param singletonClasses - Singleton classes in the module
|
|
15
|
-
* @returns Generated singleton variable code
|
|
16
|
-
*/
|
|
17
|
-
generateSingletonVariables(singletonClasses: ClassInfo[]): string;
|
|
18
|
-
/**
|
|
19
|
-
* Generates singleton getter functions for a module.
|
|
20
|
-
*
|
|
21
|
-
* @param singletonClasses - Singleton classes in the module
|
|
22
|
-
* @param currentModuleClasses - All classes in the current module
|
|
23
|
-
* @param allModuleClasses - All classes across all modules
|
|
24
|
-
* @param externalDependencies - External module dependencies
|
|
25
|
-
* @returns Generated singleton getter code
|
|
26
|
-
*/
|
|
27
|
-
generateSingletonGetters(singletonClasses: ClassInfo[], currentModuleClasses: ClassInfo[], allModuleClasses: ClassInfo[], externalDependencies: Set<string>): string;
|
|
28
|
-
/**
|
|
29
|
-
* Generates transient factory functions for a module.
|
|
30
|
-
*
|
|
31
|
-
* @param transientClasses - Transient classes in the module
|
|
32
|
-
* @param currentModuleClasses - All classes in the current module
|
|
33
|
-
* @param allModuleClasses - All classes across all modules
|
|
34
|
-
* @param externalDependencies - External module dependencies
|
|
35
|
-
* @returns Generated transient factory code
|
|
36
|
-
*/
|
|
37
|
-
generateTransientFactories(transientClasses: ClassInfo[], currentModuleClasses: ClassInfo[], allModuleClasses: ClassInfo[], externalDependencies: Set<string>): string;
|
|
38
|
-
/**
|
|
39
|
-
* Creates a singleton getter function for a specific class.
|
|
40
|
-
*/
|
|
41
|
-
private createSingletonGetter;
|
|
42
|
-
/**
|
|
43
|
-
* Builds constructor arguments for a class instantiation.
|
|
44
|
-
*/
|
|
45
|
-
private buildConstructorArguments;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=module-scope-generator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module-scope-generator.d.ts","sourceRoot":"","sources":["../../../src/generator/modular/module-scope-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D;;;GAGG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,SAAS;gBADT,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM;IAG5C;;;;;OAKG;IACH,0BAA0B,CAAC,gBAAgB,EAAE,SAAS,EAAE,GAAG,MAAM;IAYjE;;;;;;;;OAQG;IACH,wBAAwB,CACtB,gBAAgB,EAAE,SAAS,EAAE,EAC7B,oBAAoB,EAAE,SAAS,EAAE,EACjC,gBAAgB,EAAE,SAAS,EAAE,EAC7B,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,GAChC,MAAM;IAeT;;;;;;;;OAQG;IACH,0BAA0B,CACxB,gBAAgB,EAAE,SAAS,EAAE,EAC7B,oBAAoB,EAAE,SAAS,EAAE,EACjC,gBAAgB,EAAE,SAAS,EAAE,EAC7B,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,GAChC,MAAM;IAqBT;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwB7B;;OAEG;IACH,OAAO,CAAC,yBAAyB;CAiClC"}
|