@notjustcoders/ioc-arise 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +266 -0
  3. package/dist/__tests__/analyser/ast-parser.test.d.ts +2 -0
  4. package/dist/__tests__/analyser/ast-parser.test.d.ts.map +1 -0
  5. package/dist/__tests__/analyser/ast-parser.test.js +268 -0
  6. package/dist/__tests__/analyser/ast-parser.test.js.map +1 -0
  7. package/dist/__tests__/analyser/class-analyzer.test.d.ts +2 -0
  8. package/dist/__tests__/analyser/class-analyzer.test.d.ts.map +1 -0
  9. package/dist/__tests__/analyser/class-analyzer.test.js +259 -0
  10. package/dist/__tests__/analyser/class-analyzer.test.js.map +1 -0
  11. package/dist/__tests__/analyser/dependency-resolver.test.d.ts +2 -0
  12. package/dist/__tests__/analyser/dependency-resolver.test.d.ts.map +1 -0
  13. package/dist/__tests__/analyser/dependency-resolver.test.js +128 -0
  14. package/dist/__tests__/analyser/dependency-resolver.test.js.map +1 -0
  15. package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.d.ts +26 -0
  16. package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.d.ts.map +1 -0
  17. package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.js +178 -0
  18. package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.js.map +1 -0
  19. package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.d.ts +54 -0
  20. package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.d.ts.map +1 -0
  21. package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.js +285 -0
  22. package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.js.map +1 -0
  23. package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.d.ts +13 -0
  24. package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.d.ts.map +1 -0
  25. package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.js +266 -0
  26. package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.js.map +1 -0
  27. package/dist/__tests__/generator/container-generator.test.d.ts +2 -0
  28. package/dist/__tests__/generator/container-generator.test.d.ts.map +1 -0
  29. package/dist/__tests__/generator/container-generator.test.js +185 -0
  30. package/dist/__tests__/generator/container-generator.test.js.map +1 -0
  31. package/dist/__tests__/generator/dependency-resolver.test.d.ts +2 -0
  32. package/dist/__tests__/generator/dependency-resolver.test.d.ts.map +1 -0
  33. package/dist/__tests__/generator/dependency-resolver.test.js +330 -0
  34. package/dist/__tests__/generator/dependency-resolver.test.js.map +1 -0
  35. package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.d.ts +23 -0
  36. package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.d.ts.map +1 -0
  37. package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.js +254 -0
  38. package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.js.map +1 -0
  39. package/dist/__tests__/generator/fixtures/import-generator.fixtures.d.ts +10 -0
  40. package/dist/__tests__/generator/fixtures/import-generator.fixtures.d.ts.map +1 -0
  41. package/dist/__tests__/generator/fixtures/import-generator.fixtures.js +194 -0
  42. package/dist/__tests__/generator/fixtures/import-generator.fixtures.js.map +1 -0
  43. package/dist/__tests__/generator/import-generator.test.d.ts +2 -0
  44. package/dist/__tests__/generator/import-generator.test.d.ts.map +1 -0
  45. package/dist/__tests__/generator/import-generator.test.js +121 -0
  46. package/dist/__tests__/generator/import-generator.test.js.map +1 -0
  47. package/dist/__tests__/generator/instantiation-generator.test.d.ts +2 -0
  48. package/dist/__tests__/generator/instantiation-generator.test.d.ts.map +1 -0
  49. package/dist/__tests__/generator/instantiation-generator.test.js +251 -0
  50. package/dist/__tests__/generator/instantiation-generator.test.js.map +1 -0
  51. package/dist/analyser/ast-parser.d.ts +12 -0
  52. package/dist/analyser/ast-parser.d.ts.map +1 -0
  53. package/dist/analyser/ast-parser.js +192 -0
  54. package/dist/analyser/ast-parser.js.map +1 -0
  55. package/dist/analyser/class-analyzer.d.ts +11 -0
  56. package/dist/analyser/class-analyzer.d.ts.map +1 -0
  57. package/dist/analyser/class-analyzer.js +78 -0
  58. package/dist/analyser/class-analyzer.js.map +1 -0
  59. package/dist/analyser/dependency-resolver.d.ts +10 -0
  60. package/dist/analyser/dependency-resolver.d.ts.map +1 -0
  61. package/dist/analyser/dependency-resolver.js +46 -0
  62. package/dist/analyser/dependency-resolver.js.map +1 -0
  63. package/dist/analyser/file-discovery.d.ts +7 -0
  64. package/dist/analyser/file-discovery.d.ts.map +1 -0
  65. package/dist/analyser/file-discovery.js +30 -0
  66. package/dist/analyser/file-discovery.js.map +1 -0
  67. package/dist/analyser/index.d.ts +3 -0
  68. package/dist/analyser/index.d.ts.map +1 -0
  69. package/dist/analyser/index.js +14 -0
  70. package/dist/analyser/index.js.map +1 -0
  71. package/dist/analyser/module-dependency-resolver.d.ts +17 -0
  72. package/dist/analyser/module-dependency-resolver.d.ts.map +1 -0
  73. package/dist/analyser/module-dependency-resolver.js +66 -0
  74. package/dist/analyser/module-dependency-resolver.js.map +1 -0
  75. package/dist/analyser/project-analyzer.d.ts +8 -0
  76. package/dist/analyser/project-analyzer.d.ts.map +1 -0
  77. package/dist/analyser/project-analyzer.js +20 -0
  78. package/dist/analyser/project-analyzer.js.map +1 -0
  79. package/dist/commands/analyze.d.ts +3 -0
  80. package/dist/commands/analyze.d.ts.map +1 -0
  81. package/dist/commands/analyze.js +66 -0
  82. package/dist/commands/analyze.js.map +1 -0
  83. package/dist/commands/generate.d.ts +3 -0
  84. package/dist/commands/generate.d.ts.map +1 -0
  85. package/dist/commands/generate.js +150 -0
  86. package/dist/commands/generate.js.map +1 -0
  87. package/dist/container.d.ts +5 -0
  88. package/dist/container.d.ts.map +1 -0
  89. package/dist/container.js +8 -0
  90. package/dist/container.js.map +1 -0
  91. package/dist/generator/container-file-generator.d.ts +20 -0
  92. package/dist/generator/container-file-generator.d.ts.map +1 -0
  93. package/dist/generator/container-file-generator.js +255 -0
  94. package/dist/generator/container-file-generator.js.map +1 -0
  95. package/dist/generator/container-generator.d.ts +8 -0
  96. package/dist/generator/container-generator.d.ts.map +1 -0
  97. package/dist/generator/container-generator.js +35 -0
  98. package/dist/generator/container-generator.js.map +1 -0
  99. package/dist/generator/dependency-resolver.d.ts +11 -0
  100. package/dist/generator/dependency-resolver.d.ts.map +1 -0
  101. package/dist/generator/dependency-resolver.js +83 -0
  102. package/dist/generator/dependency-resolver.js.map +1 -0
  103. package/dist/generator/file-writer.d.ts +6 -0
  104. package/dist/generator/file-writer.d.ts.map +1 -0
  105. package/dist/generator/file-writer.js +19 -0
  106. package/dist/generator/file-writer.js.map +1 -0
  107. package/dist/generator/import-generator.d.ts +7 -0
  108. package/dist/generator/import-generator.d.ts.map +1 -0
  109. package/dist/generator/import-generator.js +31 -0
  110. package/dist/generator/import-generator.js.map +1 -0
  111. package/dist/generator/index.d.ts +4 -0
  112. package/dist/generator/index.d.ts.map +1 -0
  113. package/dist/generator/index.js +25 -0
  114. package/dist/generator/index.js.map +1 -0
  115. package/dist/generator/instantiation-generator.d.ts +8 -0
  116. package/dist/generator/instantiation-generator.d.ts.map +1 -0
  117. package/dist/generator/instantiation-generator.js +153 -0
  118. package/dist/generator/instantiation-generator.js.map +1 -0
  119. package/dist/generator/module-container-generator.d.ts +10 -0
  120. package/dist/generator/module-container-generator.d.ts.map +1 -0
  121. package/dist/generator/module-container-generator.js +51 -0
  122. package/dist/generator/module-container-generator.js.map +1 -0
  123. package/dist/index.d.ts +3 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +20 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/types.d.ts +30 -0
  128. package/dist/types.d.ts.map +1 -0
  129. package/dist/types.js +3 -0
  130. package/dist/types.js.map +1 -0
  131. package/dist/utils/configManager.d.ts +21 -0
  132. package/dist/utils/configManager.d.ts.map +1 -0
  133. package/dist/utils/configManager.js +50 -0
  134. package/dist/utils/configManager.js.map +1 -0
  135. package/dist/utils/moduleResolver.d.ts +38 -0
  136. package/dist/utils/moduleResolver.d.ts.map +1 -0
  137. package/dist/utils/moduleResolver.js +108 -0
  138. package/dist/utils/moduleResolver.js.map +1 -0
  139. package/dist/utils/naming.d.ts +7 -0
  140. package/dist/utils/naming.d.ts.map +1 -0
  141. package/dist/utils/naming.js +12 -0
  142. package/dist/utils/naming.js.map +1 -0
  143. package/dist/utils/topological-sorter.d.ts +17 -0
  144. package/dist/utils/topological-sorter.d.ts.map +1 -0
  145. package/dist/utils/topological-sorter.js +69 -0
  146. package/dist/utils/topological-sorter.js.map +1 -0
  147. package/package.json +72 -0
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContainerFileGenerator = void 0;
4
+ const dependency_resolver_1 = require("../analyser/dependency-resolver");
5
+ const module_dependency_resolver_1 = require("../analyser/module-dependency-resolver");
6
+ const container_generator_1 = require("./container-generator");
7
+ const file_writer_1 = require("./file-writer");
8
+ const import_generator_1 = require("./import-generator");
9
+ const instantiation_generator_1 = require("./instantiation-generator");
10
+ class ContainerFileGenerator {
11
+ constructor(options) {
12
+ if (options.classes) {
13
+ // Backward compatibility mode
14
+ this.dependencyResolver = new dependency_resolver_1.DependencyResolver(options.classes);
15
+ this.importGenerator = new import_generator_1.ImportGenerator(options.classes);
16
+ this.instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(options.classes);
17
+ this.containerCodeGenerator = new container_generator_1.ContainerGenerator(options.classes);
18
+ }
19
+ else if (options.moduleGroupedClasses) {
20
+ // Module mode
21
+ this.moduleGroupedClasses = options.moduleGroupedClasses;
22
+ // Flatten classes for existing generators (temporary solution)
23
+ const allClasses = Array.from(options.moduleGroupedClasses.values()).flat();
24
+ this.dependencyResolver = new dependency_resolver_1.DependencyResolver(allClasses);
25
+ this.importGenerator = new import_generator_1.ImportGenerator(allClasses);
26
+ this.instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(allClasses);
27
+ this.containerCodeGenerator = new container_generator_1.ContainerGenerator(allClasses);
28
+ }
29
+ else {
30
+ throw new Error('Either classes or moduleGroupedClasses must be provided');
31
+ }
32
+ this.fileWriter = new file_writer_1.FileWriter(options.outputPath);
33
+ }
34
+ generateContainer() {
35
+ const sortResult = this.dependencyResolver.resolve();
36
+ if (sortResult.cycles.length > 0) {
37
+ throw new Error(`Circular dependencies detected: ${JSON.stringify(sortResult.cycles)}`);
38
+ }
39
+ const containerCode = this.generateContainerCode(sortResult.sorted);
40
+ this.fileWriter.writeContainer(containerCode);
41
+ }
42
+ generateModularContainer() {
43
+ if (!this.moduleGroupedClasses) {
44
+ throw new Error('Module grouped classes not provided for modular container generation');
45
+ }
46
+ // First, check for module-level cycles
47
+ const moduleDependencyResolver = new module_dependency_resolver_1.ModuleDependencyResolver(this.moduleGroupedClasses);
48
+ const moduleResult = moduleDependencyResolver.resolve();
49
+ if (moduleResult.cycles.length > 0) {
50
+ throw new Error(`Circular dependencies detected between modules: ${JSON.stringify(moduleResult.cycles)}`);
51
+ }
52
+ // Then resolve class-level dependencies within each module
53
+ const allClasses = Array.from(this.moduleGroupedClasses.values()).flat();
54
+ const dependencyResolver = new dependency_resolver_1.DependencyResolver(allClasses);
55
+ const sortResult = dependencyResolver.resolve();
56
+ if (sortResult.cycles.length > 0) {
57
+ throw new Error(`Circular dependencies detected within classes: ${JSON.stringify(sortResult.cycles)}`);
58
+ }
59
+ const containerCode = this.generateModularContainerCode(sortResult.sorted, moduleResult.sortedModules, moduleResult.moduleDependencies);
60
+ this.fileWriter.writeContainer(containerCode);
61
+ }
62
+ generateContainerCode(sortedClasses) {
63
+ const imports = this.importGenerator.generateImports();
64
+ const instantiations = this.instantiationGenerator.generateInstantiations(sortedClasses);
65
+ const containerObject = this.containerCodeGenerator.generateContainerObject();
66
+ const typeExport = this.containerCodeGenerator.generateTypeExport();
67
+ return `${imports}\n\n${instantiations}\n\n${containerObject}\n\n${typeExport}\n`;
68
+ }
69
+ generateModularContainerCode(sortedClasses, sortedModules, moduleDependencies) {
70
+ console.log("sorted modules", sortedModules);
71
+ const imports = this.importGenerator.generateImports();
72
+ const moduleContainers = this.generateModuleContainers(sortedModules, moduleDependencies);
73
+ const aggregatedContainer = this.generateAggregatedContainer(sortedModules);
74
+ const typeExport = this.generateModularTypeExport();
75
+ return `${imports}\n\n${moduleContainers}\n\n${aggregatedContainer}\n\n${typeExport}\n`;
76
+ }
77
+ generateModuleContainers(sortedModules, moduleDependencies) {
78
+ if (!this.moduleGroupedClasses)
79
+ return '';
80
+ const moduleContainerCodes = [];
81
+ const moduleContainerFunctions = [];
82
+ // Generate module container functions in dependency order
83
+ for (const moduleName of sortedModules) {
84
+ const moduleClasses = this.moduleGroupedClasses.get(moduleName);
85
+ if (!moduleClasses)
86
+ continue;
87
+ const moduleFunctionName = `create${moduleName}Container`;
88
+ const moduleExports = [];
89
+ const moduleDeps = moduleDependencies.get(moduleName) || new Set();
90
+ // Generate function parameters for dependent modules
91
+ const functionParams = [];
92
+ for (const depModule of moduleDeps) {
93
+ const depVarName = this.camelCase(depModule) + 'Container';
94
+ functionParams.push(`${depVarName}: ReturnType<typeof create${depModule}Container>`);
95
+ }
96
+ // Generate lazy initialization variables and factory functions
97
+ const lazyInitializations = [];
98
+ const factoryFunctions = [];
99
+ // First, create factory functions for transient dependencies
100
+ for (const classInfo of moduleClasses) {
101
+ if (classInfo.scope === 'transient') {
102
+ const instanceName = this.camelCase(classInfo.name);
103
+ const factoryName = `${instanceName}Factory`;
104
+ factoryFunctions.push(` const ${factoryName} = (): ${classInfo.name} => new ${classInfo.name}();`);
105
+ }
106
+ }
107
+ // Sort singleton classes by their dependencies within the module
108
+ const singletonClasses = moduleClasses.filter(c => c.scope !== 'transient');
109
+ const sortedSingletons = this.sortClassesByDependencies(singletonClasses, moduleClasses);
110
+ // Generate lazy initialization variables for singletons
111
+ for (const classInfo of sortedSingletons) {
112
+ const instanceName = this.camelCase(classInfo.name);
113
+ lazyInitializations.push(` let ${instanceName}: ${classInfo.name} | undefined;`);
114
+ }
115
+ // Generate lazy getter functions for singletons
116
+ const lazyGetters = [];
117
+ for (const classInfo of sortedSingletons) {
118
+ const instanceName = this.camelCase(classInfo.name);
119
+ const getterName = `get${classInfo.name}`;
120
+ const constructorArgs = [];
121
+ // Build constructor arguments
122
+ for (const dep of classInfo.dependencies) {
123
+ // Check if dependency is from another module
124
+ let foundInOtherModule = false;
125
+ for (const depModule of moduleDeps) {
126
+ const depModuleClasses = this.moduleGroupedClasses.get(depModule);
127
+ if (depModuleClasses) {
128
+ const depClass = depModuleClasses.find(c => c.interfaceName === dep);
129
+ if (depClass) {
130
+ const depModuleVarName = this.camelCase(depModule) + 'Container';
131
+ constructorArgs.push(`${depModuleVarName}.${dep}`);
132
+ foundInOtherModule = true;
133
+ break;
134
+ }
135
+ }
136
+ }
137
+ // If not found in other modules, it's from the same module
138
+ if (!foundInOtherModule) {
139
+ const depClass = moduleClasses.find(c => c.interfaceName === dep);
140
+ if (depClass) {
141
+ if (depClass.scope === 'transient') {
142
+ const depInstanceName = this.camelCase(depClass.name);
143
+ constructorArgs.push(`${depInstanceName}Factory()`);
144
+ }
145
+ else {
146
+ const depGetterName = `get${depClass.name}`;
147
+ constructorArgs.push(`${depGetterName}()`);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ const instantiation = constructorArgs.length > 0 ?
153
+ `new ${classInfo.name}(${constructorArgs.join(', ')})` :
154
+ `new ${classInfo.name}()`;
155
+ const lazyGetter = ` const ${getterName} = (): ${classInfo.name} => {\n if (!${instanceName}) {\n ${instanceName} = ${instantiation};\n }\n return ${instanceName};\n };`;
156
+ lazyGetters.push(lazyGetter);
157
+ }
158
+ // Generate module exports
159
+ for (const classInfo of moduleClasses) {
160
+ if (classInfo.interfaceName) {
161
+ const instanceName = this.camelCase(classInfo.name);
162
+ const isTransient = classInfo.scope === 'transient';
163
+ if (isTransient) {
164
+ moduleExports.push(` get ${classInfo.interfaceName}(): ${classInfo.name} {\n return ${instanceName}Factory();\n }`);
165
+ }
166
+ else {
167
+ const getterName = `get${classInfo.name}`;
168
+ moduleExports.push(` get ${classInfo.interfaceName}(): ${classInfo.name} {\n return ${getterName}();\n }`);
169
+ }
170
+ }
171
+ }
172
+ const functionSignature = functionParams.length > 0 ?
173
+ `function ${moduleFunctionName}(${functionParams.join(', ')})` :
174
+ `function ${moduleFunctionName}()`;
175
+ const returnObject = moduleExports.length > 0 ?
176
+ ` return {\n${moduleExports.join(',\n')}\n };` :
177
+ ' return {};';
178
+ const functionBody = [
179
+ ...factoryFunctions,
180
+ '',
181
+ ...lazyInitializations,
182
+ '',
183
+ ...lazyGetters,
184
+ '',
185
+ returnObject
186
+ ].filter(line => line !== '' || factoryFunctions.length > 0 || lazyInitializations.length > 0 || lazyGetters.length > 0).join('\n');
187
+ const moduleContainerFunction = `${functionSignature} {\n${functionBody}\n}`;
188
+ moduleContainerFunctions.push(moduleContainerFunction);
189
+ }
190
+ // Sort modules by dependencies and generate instantiations
191
+ for (const moduleName of sortedModules) {
192
+ const moduleVarName = this.camelCase(moduleName) + 'Container';
193
+ const moduleFunctionName = `create${moduleName}Container`;
194
+ const moduleDeps = moduleDependencies.get(moduleName) || new Set();
195
+ const functionArgs = [];
196
+ for (const depModule of moduleDeps) {
197
+ const depVarName = this.camelCase(depModule) + 'Container';
198
+ functionArgs.push(depVarName);
199
+ }
200
+ const moduleInstantiation = functionArgs.length > 0 ?
201
+ `const ${moduleVarName} = ${moduleFunctionName}(${functionArgs.join(', ')});` :
202
+ `const ${moduleVarName} = ${moduleFunctionName}();`;
203
+ moduleContainerCodes.push(moduleInstantiation);
204
+ }
205
+ return moduleContainerFunctions.join('\n\n') + '\n\n' + moduleContainerCodes.join('\n');
206
+ }
207
+ generateAggregatedContainer(sortedModules) {
208
+ if (!this.moduleGroupedClasses)
209
+ return '';
210
+ const moduleExports = [];
211
+ for (const moduleName of sortedModules) {
212
+ const moduleVarName = this.camelCase(moduleName) + 'Container';
213
+ const moduleKey = this.camelCase(moduleName);
214
+ moduleExports.push(` ${moduleKey}: ${moduleVarName}`);
215
+ }
216
+ return `export const container = {\n${moduleExports.join(',\n')}\n};`;
217
+ }
218
+ generateModularTypeExport() {
219
+ return 'export type Container = typeof container;';
220
+ }
221
+ camelCase(str) {
222
+ return str.charAt(0).toLowerCase() + str.slice(1).replace(/[^a-zA-Z0-9]/g, '');
223
+ }
224
+ sortClassesByDependencies(classes, allModuleClasses) {
225
+ const sorted = [];
226
+ const visited = new Set();
227
+ const visiting = new Set();
228
+ const visit = (classInfo) => {
229
+ if (visiting.has(classInfo.name)) {
230
+ // Circular dependency detected, just add it
231
+ return;
232
+ }
233
+ if (visited.has(classInfo.name)) {
234
+ return;
235
+ }
236
+ visiting.add(classInfo.name);
237
+ // Visit dependencies first (only within the same module)
238
+ for (const dep of classInfo.dependencies) {
239
+ const depClass = allModuleClasses.find(c => c.interfaceName === dep && c.scope !== 'transient');
240
+ if (depClass && classes.includes(depClass)) {
241
+ visit(depClass);
242
+ }
243
+ }
244
+ visiting.delete(classInfo.name);
245
+ visited.add(classInfo.name);
246
+ sorted.push(classInfo);
247
+ };
248
+ for (const classInfo of classes) {
249
+ visit(classInfo);
250
+ }
251
+ return sorted;
252
+ }
253
+ }
254
+ exports.ContainerFileGenerator = ContainerFileGenerator;
255
+ //# sourceMappingURL=container-file-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-file-generator.js","sourceRoot":"","sources":["../../src/generator/container-file-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ClassInfo } from '../types';
2
+ export declare class ContainerGenerator {
3
+ private classes;
4
+ constructor(classes: ClassInfo[]);
5
+ generateContainerObject(): string;
6
+ generateTypeExport(): string;
7
+ }
8
+ //# sourceMappingURL=container-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-generator.d.ts","sourceRoot":"","sources":["../../src/generator/container-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,EAAE,SAAS,EAAE;IAIhC,uBAAuB,IAAI,MAAM;IAwBjC,kBAAkB,IAAI,MAAM;CAG7B"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContainerGenerator = void 0;
4
+ const naming_1 = require("../utils/naming");
5
+ class ContainerGenerator {
6
+ constructor(classes) {
7
+ this.classes = classes;
8
+ }
9
+ generateContainerObject() {
10
+ const singletonProperties = [];
11
+ const transientProperties = [];
12
+ for (const classInfo of this.classes) {
13
+ const variableName = (0, naming_1.toVariableName)(classInfo.name);
14
+ const interfaceName = classInfo.interfaceName || classInfo.name;
15
+ const getterName = `get${classInfo.name}`;
16
+ if (classInfo.scope === 'singleton') {
17
+ singletonProperties.push(` get ${interfaceName}(): ${classInfo.name} {
18
+ return ${getterName}();
19
+ },`);
20
+ }
21
+ else if (classInfo.scope === 'transient') {
22
+ transientProperties.push(` get ${interfaceName}(): ${classInfo.name} {
23
+ return ${variableName}Factory();
24
+ },`);
25
+ }
26
+ }
27
+ const allProperties = [...singletonProperties, ...transientProperties];
28
+ return `export const container = {\n${allProperties.join('\n')}\n};`;
29
+ }
30
+ generateTypeExport() {
31
+ return 'export type Container = typeof container;';
32
+ }
33
+ }
34
+ exports.ContainerGenerator = ContainerGenerator;
35
+ //# sourceMappingURL=container-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-generator.js","sourceRoot":"","sources":["../../src/generator/container-generator.ts"],"names":[],"mappings":";;;AACA,4CAAiD;AAEjD,MAAa,kBAAkB;IAG7B,YAAY,OAAoB;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,uBAAuB;QACrB,MAAM,mBAAmB,GAAa,EAAE,CAAC;QACzC,MAAM,mBAAmB,GAAa,EAAE,CAAC;QAEzC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,IAAA,uBAAc,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,IAAI,CAAC;YAChE,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YAE1C,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBACpC,mBAAmB,CAAC,IAAI,CAAC,SAAS,aAAa,OAAO,SAAS,CAAC,IAAI;aAC/D,UAAU;KAClB,CAAC,CAAC;YACD,CAAC;iBAAM,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC3C,mBAAmB,CAAC,IAAI,CAAC,SAAS,aAAa,OAAO,SAAS,CAAC,IAAI;aAC/D,YAAY;KACpB,CAAC,CAAC;YACD,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,CAAC,CAAC;QACvE,OAAO,+BAA+B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACvE,CAAC;IAED,kBAAkB;QAChB,OAAO,2CAA2C,CAAC;IACrD,CAAC;CACF;AAlCD,gDAkCC"}
@@ -0,0 +1,11 @@
1
+ import { ClassInfo } from '../types';
2
+ export declare class DependencyResolver {
3
+ private classes;
4
+ constructor(classes: ClassInfo[]);
5
+ createInterfaceToClassMap(): Map<string, string>;
6
+ resolveDependencies(classInfo: ClassInfo, interfaceToClassMap: Map<string, string>, classMap: Map<string, ClassInfo>): string;
7
+ private createUnmanagedDependencyInstance;
8
+ private generateConstructorArgs;
9
+ getDefaultValueForType(type: string, isOptional: boolean): string;
10
+ }
11
+ //# sourceMappingURL=dependency-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../src/generator/dependency-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,UAAU,CAAC;AAG3D,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,EAAE,SAAS,EAAE;IAIhC,yBAAyB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAUhD,mBAAmB,CACjB,SAAS,EAAE,SAAS,EACpB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAC/B,MAAM;IA4BT,OAAO,CAAC,iCAAiC;IAWzC,OAAO,CAAC,uBAAuB;IAI/B,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM;CAyBlE"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DependencyResolver = void 0;
4
+ const naming_1 = require("../utils/naming");
5
+ class DependencyResolver {
6
+ constructor(classes) {
7
+ this.classes = classes;
8
+ }
9
+ createInterfaceToClassMap() {
10
+ const interfaceToClassMap = new Map();
11
+ for (const classInfo of this.classes) {
12
+ if (classInfo.interfaceName) {
13
+ interfaceToClassMap.set(classInfo.interfaceName, classInfo.name);
14
+ }
15
+ }
16
+ return interfaceToClassMap;
17
+ }
18
+ resolveDependencies(classInfo, interfaceToClassMap, classMap) {
19
+ return classInfo.dependencies
20
+ .map(dep => {
21
+ // Check if dependency is an interface name
22
+ const implementingClass = interfaceToClassMap.get(dep);
23
+ if (implementingClass) {
24
+ const depClassInfo = classMap.get(implementingClass);
25
+ if (depClassInfo && depClassInfo.scope === 'transient') {
26
+ // For transient dependencies, use factory call
27
+ return `${(0, naming_1.toVariableName)(implementingClass)}Factory()`;
28
+ }
29
+ return (0, naming_1.toVariableName)(implementingClass);
30
+ }
31
+ // Check if dependency is a class name
32
+ if (classMap.has(dep)) {
33
+ const depClassInfo = classMap.get(dep);
34
+ if (depClassInfo && depClassInfo.scope === 'transient') {
35
+ return `${(0, naming_1.toVariableName)(dep)}Factory()`;
36
+ }
37
+ return (0, naming_1.toVariableName)(dep);
38
+ }
39
+ // Check if dependency is a class that exists in the same file but not managed
40
+ return this.createUnmanagedDependencyInstance(dep);
41
+ })
42
+ .filter(dep => dep !== null)
43
+ .join(', ');
44
+ }
45
+ createUnmanagedDependencyInstance(className) {
46
+ // Find the class info for this unmanaged dependency
47
+ const classInfo = this.classes.find(c => c.name === className);
48
+ if (!classInfo || !classInfo.constructorParams.length) {
49
+ return `new ${className}()`;
50
+ }
51
+ const args = this.generateConstructorArgs(classInfo.constructorParams);
52
+ return `new ${className}(${args})`;
53
+ }
54
+ generateConstructorArgs(params) {
55
+ return params.map(param => this.getDefaultValueForType(param.type, param.isOptional)).join(', ');
56
+ }
57
+ getDefaultValueForType(type, isOptional) {
58
+ if (isOptional) {
59
+ return 'undefined';
60
+ }
61
+ // Handle primitive types
62
+ switch (type.toLowerCase()) {
63
+ case 'string':
64
+ return '"default"';
65
+ case 'number':
66
+ return '0';
67
+ case 'boolean':
68
+ return 'false';
69
+ case 'date':
70
+ return 'new Date()';
71
+ default:
72
+ // For class types, try to find if it's a managed dependency
73
+ const classMap = new Map(this.classes.map(c => [c.name, c]));
74
+ if (classMap.has(type)) {
75
+ return (0, naming_1.toVariableName)(type);
76
+ }
77
+ // For unmanaged class types, create a simple instance
78
+ return `new ${type}()`;
79
+ }
80
+ }
81
+ }
82
+ exports.DependencyResolver = DependencyResolver;
83
+ //# sourceMappingURL=dependency-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/generator/dependency-resolver.ts"],"names":[],"mappings":";;;AACA,4CAAiD;AAEjD,MAAa,kBAAkB;IAG7B,YAAY,OAAoB;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,yBAAyB;QACvB,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;gBAC5B,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,mBAAmB,CACjB,SAAoB,EACpB,mBAAwC,EACxC,QAAgC;QAEhC,OAAO,SAAS,CAAC,YAAY;aAC1B,GAAG,CAAC,GAAG,CAAC,EAAE;YACT,2CAA2C;YAC3C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACrD,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;oBACvD,+CAA+C;oBAC/C,OAAO,GAAG,IAAA,uBAAc,EAAC,iBAAiB,CAAC,WAAW,CAAC;gBACzD,CAAC;gBACD,OAAO,IAAA,uBAAc,EAAC,iBAAiB,CAAC,CAAC;YAC3C,CAAC;YACD,sCAAsC;YACtC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;oBACvD,OAAO,GAAG,IAAA,uBAAc,EAAC,GAAG,CAAC,WAAW,CAAC;gBAC3C,CAAC;gBACD,OAAO,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YACD,8EAA8E;YAC9E,OAAO,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,CAAC;aACD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC;aAC3B,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAEO,iCAAiC,CAAC,SAAiB;QACzD,oDAAoD;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YACtD,OAAO,OAAO,SAAS,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACvE,OAAO,OAAO,SAAS,IAAI,IAAI,GAAG,CAAC;IACrC,CAAC;IAEO,uBAAuB,CAAC,MAA8B;QAC5D,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnG,CAAC;IAED,sBAAsB,CAAC,IAAY,EAAE,UAAmB;QACtD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,yBAAyB;QACzB,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3B,KAAK,QAAQ;gBACX,OAAO,WAAW,CAAC;YACrB,KAAK,QAAQ;gBACX,OAAO,GAAG,CAAC;YACb,KAAK,SAAS;gBACZ,OAAO,OAAO,CAAC;YACjB,KAAK,MAAM;gBACT,OAAO,YAAY,CAAC;YACtB;gBACE,4DAA4D;gBAC5D,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;gBAC7D,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,OAAO,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;gBACD,sDAAsD;gBACtD,OAAO,OAAO,IAAI,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;CACF;AAzFD,gDAyFC"}
@@ -0,0 +1,6 @@
1
+ export declare class FileWriter {
2
+ private outputPath;
3
+ constructor(outputPath: string);
4
+ writeContainer(content: string): void;
5
+ }
6
+ //# sourceMappingURL=file-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../src/generator/file-writer.ts"],"names":[],"mappings":"AAGA,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,EAAE,MAAM;IAI9B,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAQtC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileWriter = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ class FileWriter {
7
+ constructor(outputPath) {
8
+ this.outputPath = outputPath;
9
+ }
10
+ writeContainer(content) {
11
+ // Ensure output directory exists
12
+ const outputDir = (0, path_1.dirname)(this.outputPath);
13
+ (0, fs_1.mkdirSync)(outputDir, { recursive: true });
14
+ // Write the container file
15
+ (0, fs_1.writeFileSync)(this.outputPath, content, 'utf-8');
16
+ }
17
+ }
18
+ exports.FileWriter = FileWriter;
19
+ //# sourceMappingURL=file-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-writer.js","sourceRoot":"","sources":["../../src/generator/file-writer.ts"],"names":[],"mappings":";;;AAAA,2BAA8C;AAC9C,+BAA+B;AAE/B,MAAa,UAAU;IAGrB,YAAY,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,iCAAiC;QACjC,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAA,cAAS,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,2BAA2B;QAC3B,IAAA,kBAAa,EAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;CACF;AAfD,gCAeC"}
@@ -0,0 +1,7 @@
1
+ import { ClassInfo } from '../types';
2
+ export declare class ImportGenerator {
3
+ private classes;
4
+ constructor(classes: ClassInfo[]);
5
+ generateImports(): string;
6
+ }
7
+ //# sourceMappingURL=import-generator.d.ts.map
@@ -0,0 +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;CAwB1B"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImportGenerator = void 0;
4
+ class ImportGenerator {
5
+ constructor(classes) {
6
+ this.classes = classes;
7
+ }
8
+ generateImports() {
9
+ const importSet = new Set();
10
+ const classMap = new Map(this.classes.map(c => [c.name, c]));
11
+ // Add imports for all managed classes
12
+ for (const classInfo of this.classes) {
13
+ importSet.add(`import { ${classInfo.name} } from '${classInfo.importPath}';`);
14
+ }
15
+ // Add imports for unmanaged dependencies
16
+ for (const classInfo of this.classes) {
17
+ for (const dep of classInfo.dependencies) {
18
+ // If dependency is not a managed class, we need to import it
19
+ if (!classMap.has(dep)) {
20
+ // Check if it's an interface (starts with 'I' by convention)
21
+ if (!dep.startsWith('I')) {
22
+ importSet.add(`import { ${dep} } from '${classInfo.importPath}';`);
23
+ }
24
+ }
25
+ }
26
+ }
27
+ return Array.from(importSet).join('\n');
28
+ }
29
+ }
30
+ exports.ImportGenerator = ImportGenerator;
31
+ //# sourceMappingURL=import-generator.js.map
@@ -0,0 +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;oBACvB,6DAA6D;oBAC7D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACzB,SAAS,CAAC,GAAG,CAAC,YAAY,GAAG,YAAY,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;oBACrE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AA/BD,0CA+BC"}
@@ -0,0 +1,4 @@
1
+ import { ClassInfo } from '../types';
2
+ export declare function generateContainerFile(classesOrModules: ClassInfo[] | Map<string, ClassInfo[]>, outputPath: string): void;
3
+ export declare function detectCircularDependencies(classes: ClassInfo[]): string[][];
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAMrC,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAUxH;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,EAAE,CAG3E"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateContainerFile = generateContainerFile;
4
+ exports.detectCircularDependencies = detectCircularDependencies;
5
+ const dependency_resolver_1 = require("../analyser/dependency-resolver");
6
+ const container_file_generator_1 = require("./container-file-generator");
7
+ const one_logger_client_sdk_1 = require("@notjustcoders/one-logger-client-sdk");
8
+ const ContainerFileGenerator = (0, one_logger_client_sdk_1.wrappedClass)("ContainerFileGenerator", container_file_generator_1.ContainerFileGenerator, (name, ...args) => ({ name, args }));
9
+ function generateContainerFile(classesOrModules, outputPath) {
10
+ if (classesOrModules instanceof Map) {
11
+ // Module-based generation
12
+ const generator = new ContainerFileGenerator({ moduleGroupedClasses: classesOrModules, outputPath });
13
+ generator.generateModularContainer();
14
+ }
15
+ else {
16
+ // Backward compatibility: flat classes array
17
+ const generator = new ContainerFileGenerator({ classes: classesOrModules, outputPath });
18
+ generator.generateContainer();
19
+ }
20
+ }
21
+ function detectCircularDependencies(classes) {
22
+ const resolver = new dependency_resolver_1.DependencyResolver(classes);
23
+ return resolver.detectCircularDependencies();
24
+ }
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";;AAMA,sDAUC;AAED,gEAGC;AApBD,yEAAqE;AACrE,yEAA+E;AAC/E,gFAAoE;AACpE,MAAM,sBAAsB,GAAG,IAAA,oCAAY,EAAC,wBAAwB,EAAE,iDAAO,EAAC,CAAC,IAAI,EAAC,GAAG,IAAI,EAAC,EAAE,CAAA,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC,CAAA;AAE5G,SAAgB,qBAAqB,CAAC,gBAAwD,EAAE,UAAkB;IAChH,IAAI,gBAAgB,YAAY,GAAG,EAAE,CAAC;QACpC,0BAA0B;QAC1B,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAAC,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC;QACrG,SAAS,CAAC,wBAAwB,EAAE,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,6CAA6C;QAC7C,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC;QACxF,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAgB,0BAA0B,CAAC,OAAoB;IAC7D,MAAM,QAAQ,GAAG,IAAI,wCAAkB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC,0BAA0B,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ClassInfo } from '../types';
2
+ export declare class InstantiationGenerator {
3
+ private classes;
4
+ private dependencyResolver;
5
+ constructor(classes: ClassInfo[]);
6
+ generateInstantiations(sortedClasses: string[]): string;
7
+ }
8
+ //# sourceMappingURL=instantiation-generator.d.ts.map
@@ -0,0 +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;gBAEnC,OAAO,EAAE,SAAS,EAAE;IAKhC,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM;CAgKxD"}