@notjustcoders/ioc-arise 1.0.10 → 1.0.12

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 (183) hide show
  1. package/dist/analyser/ast-parser.d.ts +1 -0
  2. package/dist/analyser/ast-parser.d.ts.map +1 -1
  3. package/dist/analyser/ast-parser.js +53 -0
  4. package/dist/analyser/ast-parser.js.map +1 -1
  5. package/dist/analyser/class-analyzer.d.ts.map +1 -1
  6. package/dist/analyser/class-analyzer.js +23 -8
  7. package/dist/analyser/class-analyzer.js.map +1 -1
  8. package/dist/analyser/dependency-resolver.js +4 -4
  9. package/dist/analyser/dependency-resolver.js.map +1 -1
  10. package/dist/analyser/module-dependency-resolver.js +1 -1
  11. package/dist/analyser/module-dependency-resolver.js.map +1 -1
  12. package/dist/commands/analyze.js +1 -1
  13. package/dist/commands/analyze.js.map +1 -1
  14. package/dist/commands/generate.d.ts.map +1 -1
  15. package/dist/commands/generate.js +2 -2
  16. package/dist/commands/generate.js.map +1 -1
  17. package/dist/container.gen.d.ts +20 -12
  18. package/dist/container.gen.d.ts.map +1 -1
  19. package/dist/container.gen.js +114 -80
  20. package/dist/container.gen.js.map +1 -1
  21. package/dist/generator/file-writer.d.ts +1 -0
  22. package/dist/generator/file-writer.d.ts.map +1 -1
  23. package/dist/generator/file-writer.js +3 -0
  24. package/dist/generator/file-writer.js.map +1 -1
  25. package/dist/generator/import-generator.js +2 -2
  26. package/dist/generator/import-generator.js.map +1 -1
  27. package/dist/generator/modular/modular-container-generator.d.ts +5 -0
  28. package/dist/generator/modular/modular-container-generator.d.ts.map +1 -1
  29. package/dist/generator/modular/modular-container-generator.js +17 -2
  30. package/dist/generator/modular/modular-container-generator.js.map +1 -1
  31. package/dist/generator/modular/module-dependency-resolver.js +1 -1
  32. package/dist/generator/modular/module-dependency-resolver.js.map +1 -1
  33. package/dist/generator/modular/split-file-writer.d.ts +46 -0
  34. package/dist/generator/modular/split-file-writer.d.ts.map +1 -0
  35. package/dist/generator/modular/split-file-writer.js +133 -0
  36. package/dist/generator/modular/split-file-writer.js.map +1 -0
  37. package/dist/generator/shared/instantiation-utils.d.ts.map +1 -1
  38. package/dist/generator/shared/instantiation-utils.js +17 -5
  39. package/dist/generator/shared/instantiation-utils.js.map +1 -1
  40. package/dist/index.d.ts +0 -1
  41. package/dist/index.js +0 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/renderer/console-analysis-renderer.js +1 -1
  44. package/dist/renderer/console-analysis-renderer.js.map +1 -1
  45. package/dist/types.d.ts +5 -1
  46. package/dist/types.d.ts.map +1 -1
  47. package/package.json +1 -1
  48. package/dist/__tests__/analyser/ast-parser.test.d.ts +0 -2
  49. package/dist/__tests__/analyser/ast-parser.test.d.ts.map +0 -1
  50. package/dist/__tests__/analyser/ast-parser.test.js +0 -309
  51. package/dist/__tests__/analyser/ast-parser.test.js.map +0 -1
  52. package/dist/__tests__/analyser/class-analyzer.test.d.ts +0 -2
  53. package/dist/__tests__/analyser/class-analyzer.test.d.ts.map +0 -1
  54. package/dist/__tests__/analyser/class-analyzer.test.js +0 -323
  55. package/dist/__tests__/analyser/class-analyzer.test.js.map +0 -1
  56. package/dist/__tests__/analyser/dependency-resolver.test.d.ts +0 -2
  57. package/dist/__tests__/analyser/dependency-resolver.test.d.ts.map +0 -1
  58. package/dist/__tests__/analyser/dependency-resolver.test.js +0 -128
  59. package/dist/__tests__/analyser/dependency-resolver.test.js.map +0 -1
  60. package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.d.ts +0 -28
  61. package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.d.ts.map +0 -1
  62. package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.js +0 -222
  63. package/dist/__tests__/analyser/fixtures/ast-parser-fixtures.js.map +0 -1
  64. package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.d.ts +0 -54
  65. package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.d.ts.map +0 -1
  66. package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.js +0 -285
  67. package/dist/__tests__/analyser/fixtures/class-analyzer-fixtures.js.map +0 -1
  68. package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.d.ts +0 -13
  69. package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.d.ts.map +0 -1
  70. package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.js +0 -266
  71. package/dist/__tests__/analyser/fixtures/dependency-resolver-fixtures.js.map +0 -1
  72. package/dist/__tests__/analyser/project-analyzer.test.d.ts +0 -2
  73. package/dist/__tests__/analyser/project-analyzer.test.d.ts.map +0 -1
  74. package/dist/__tests__/analyser/project-analyzer.test.js +0 -191
  75. package/dist/__tests__/analyser/project-analyzer.test.js.map +0 -1
  76. package/dist/__tests__/generator/container-generator.test.d.ts +0 -2
  77. package/dist/__tests__/generator/container-generator.test.d.ts.map +0 -1
  78. package/dist/__tests__/generator/container-generator.test.js +0 -185
  79. package/dist/__tests__/generator/container-generator.test.js.map +0 -1
  80. package/dist/__tests__/generator/dependency-resolver.test.d.ts +0 -2
  81. package/dist/__tests__/generator/dependency-resolver.test.d.ts.map +0 -1
  82. package/dist/__tests__/generator/dependency-resolver.test.js +0 -330
  83. package/dist/__tests__/generator/dependency-resolver.test.js.map +0 -1
  84. package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.d.ts +0 -23
  85. package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.d.ts.map +0 -1
  86. package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.js +0 -254
  87. package/dist/__tests__/generator/fixtures/dependency-resolver.fixtures.js.map +0 -1
  88. package/dist/__tests__/generator/fixtures/import-generator.fixtures.d.ts +0 -10
  89. package/dist/__tests__/generator/fixtures/import-generator.fixtures.d.ts.map +0 -1
  90. package/dist/__tests__/generator/fixtures/import-generator.fixtures.js +0 -194
  91. package/dist/__tests__/generator/fixtures/import-generator.fixtures.js.map +0 -1
  92. package/dist/__tests__/generator/import-generator.test.d.ts +0 -2
  93. package/dist/__tests__/generator/import-generator.test.d.ts.map +0 -1
  94. package/dist/__tests__/generator/import-generator.test.js +0 -121
  95. package/dist/__tests__/generator/import-generator.test.js.map +0 -1
  96. package/dist/__tests__/generator/instantiation-generator.test.d.ts +0 -2
  97. package/dist/__tests__/generator/instantiation-generator.test.d.ts.map +0 -1
  98. package/dist/__tests__/generator/instantiation-generator.test.js +0 -251
  99. package/dist/__tests__/generator/instantiation-generator.test.js.map +0 -1
  100. package/dist/generator/Container-file-generator.d.ts +0 -20
  101. package/dist/generator/Container-file-generator.d.ts.map +0 -1
  102. package/dist/generator/Container-file-generator.js +0 -255
  103. package/dist/generator/Container-file-generator.js.map +0 -1
  104. package/dist/generator/base-container-code-generator.d.ts +0 -15
  105. package/dist/generator/base-container-code-generator.d.ts.map +0 -1
  106. package/dist/generator/base-container-code-generator.js +0 -23
  107. package/dist/generator/base-container-code-generator.js.map +0 -1
  108. package/dist/generator/base-dependency-resolver.d.ts +0 -26
  109. package/dist/generator/base-dependency-resolver.d.ts.map +0 -1
  110. package/dist/generator/base-dependency-resolver.js +0 -72
  111. package/dist/generator/base-dependency-resolver.js.map +0 -1
  112. package/dist/generator/base-instantiation-generator.d.ts +0 -55
  113. package/dist/generator/base-instantiation-generator.d.ts.map +0 -1
  114. package/dist/generator/base-instantiation-generator.js +0 -117
  115. package/dist/generator/base-instantiation-generator.js.map +0 -1
  116. package/dist/generator/container-generator.d.ts +0 -8
  117. package/dist/generator/container-generator.d.ts.map +0 -1
  118. package/dist/generator/container-generator.js +0 -35
  119. package/dist/generator/container-generator.js.map +0 -1
  120. package/dist/generator/dependency-resolver.d.ts +0 -11
  121. package/dist/generator/dependency-resolver.d.ts.map +0 -1
  122. package/dist/generator/dependency-resolver.js +0 -83
  123. package/dist/generator/dependency-resolver.js.map +0 -1
  124. package/dist/generator/duplicate-import-resolver.d.ts +0 -44
  125. package/dist/generator/duplicate-import-resolver.d.ts.map +0 -1
  126. package/dist/generator/duplicate-import-resolver.js +0 -162
  127. package/dist/generator/duplicate-import-resolver.js.map +0 -1
  128. package/dist/generator/flat/container-generator.d.ts +0 -8
  129. package/dist/generator/flat/container-generator.d.ts.map +0 -1
  130. package/dist/generator/flat/container-generator.js +0 -17
  131. package/dist/generator/flat/container-generator.js.map +0 -1
  132. package/dist/generator/flat/dependency-resolver.d.ts +0 -8
  133. package/dist/generator/flat/dependency-resolver.d.ts.map +0 -1
  134. package/dist/generator/flat/dependency-resolver.js +0 -43
  135. package/dist/generator/flat/dependency-resolver.js.map +0 -1
  136. package/dist/generator/flat/flat-container-generator.d.ts +0 -25
  137. package/dist/generator/flat/flat-container-generator.d.ts.map +0 -1
  138. package/dist/generator/flat/flat-container-generator.js +0 -44
  139. package/dist/generator/flat/flat-container-generator.js.map +0 -1
  140. package/dist/generator/flat/instantiation-generator.d.ts +0 -24
  141. package/dist/generator/flat/instantiation-generator.d.ts.map +0 -1
  142. package/dist/generator/flat/instantiation-generator.js +0 -125
  143. package/dist/generator/flat/instantiation-generator.js.map +0 -1
  144. package/dist/generator/flat-container-generator.d.ts +0 -25
  145. package/dist/generator/flat-container-generator.d.ts.map +0 -1
  146. package/dist/generator/flat-container-generator.js +0 -44
  147. package/dist/generator/flat-container-generator.js.map +0 -1
  148. package/dist/generator/instantiation-generator.d.ts +0 -21
  149. package/dist/generator/instantiation-generator.d.ts.map +0 -1
  150. package/dist/generator/instantiation-generator.js +0 -116
  151. package/dist/generator/instantiation-generator.js.map +0 -1
  152. package/dist/generator/modular/class-sorter.d.ts +0 -17
  153. package/dist/generator/modular/class-sorter.d.ts.map +0 -1
  154. package/dist/generator/modular/class-sorter.js +0 -40
  155. package/dist/generator/modular/class-sorter.js.map +0 -1
  156. package/dist/generator/modular/modular-container-code-generator.d.ts +0 -65
  157. package/dist/generator/modular/modular-container-code-generator.d.ts.map +0 -1
  158. package/dist/generator/modular/modular-container-code-generator.js +0 -157
  159. package/dist/generator/modular/modular-container-code-generator.js.map +0 -1
  160. package/dist/generator/modular/module-export-generator.d.ts +0 -42
  161. package/dist/generator/modular/module-export-generator.d.ts.map +0 -1
  162. package/dist/generator/modular/module-export-generator.js +0 -82
  163. package/dist/generator/modular/module-export-generator.js.map +0 -1
  164. package/dist/generator/modular/module-scope-generator.d.ts +0 -47
  165. package/dist/generator/modular/module-scope-generator.d.ts.map +0 -1
  166. package/dist/generator/modular/module-scope-generator.js +0 -111
  167. package/dist/generator/modular/module-scope-generator.js.map +0 -1
  168. package/dist/generator/modular/refactored-modular-container-generator.d.ts +0 -38
  169. package/dist/generator/modular/refactored-modular-container-generator.d.ts.map +0 -1
  170. package/dist/generator/modular/refactored-modular-container-generator.js +0 -73
  171. package/dist/generator/modular/refactored-modular-container-generator.js.map +0 -1
  172. package/dist/generator/modular-container-generator.d.ts +0 -21
  173. package/dist/generator/modular-container-generator.d.ts.map +0 -1
  174. package/dist/generator/modular-container-generator.js +0 -57
  175. package/dist/generator/modular-container-generator.js.map +0 -1
  176. package/dist/generator/module-container-function-generator.d.ts +0 -30
  177. package/dist/generator/module-container-function-generator.d.ts.map +0 -1
  178. package/dist/generator/module-container-function-generator.js +0 -199
  179. package/dist/generator/module-container-function-generator.js.map +0 -1
  180. package/dist/generator/shared/dependency-resolver-utils.d.ts +0 -28
  181. package/dist/generator/shared/dependency-resolver-utils.d.ts.map +0 -1
  182. package/dist/generator/shared/dependency-resolver-utils.js +0 -67
  183. package/dist/generator/shared/dependency-resolver-utils.js.map +0 -1
@@ -1,251 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const instantiation_generator_1 = require("../../generator/flat/instantiation-generator");
5
- const dependency_resolver_fixtures_1 = require("./fixtures/dependency-resolver.fixtures");
6
- (0, vitest_1.describe)('InstantiationGenerator', () => {
7
- let instantiationGenerator;
8
- (0, vitest_1.describe)('constructor', () => {
9
- (0, vitest_1.it)('should create an instance with provided classes', () => {
10
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
11
- (0, vitest_1.expect)(instantiationGenerator).toBeInstanceOf(instantiation_generator_1.InstantiationGenerator);
12
- });
13
- (0, vitest_1.it)('should handle empty classes array', () => {
14
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator([]);
15
- (0, vitest_1.expect)(instantiationGenerator).toBeInstanceOf(instantiation_generator_1.InstantiationGenerator);
16
- });
17
- (0, vitest_1.it)('should initialize dependency resolver', () => {
18
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
19
- (0, vitest_1.expect)(instantiationGenerator['dependencyResolver']).toBeDefined();
20
- });
21
- });
22
- (0, vitest_1.describe)('generateInstantiations', () => {
23
- (0, vitest_1.describe)('with singleton classes only', () => {
24
- (0, vitest_1.beforeEach)(() => {
25
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
26
- });
27
- (0, vitest_1.it)('should generate singleton instantiations in correct order', () => {
28
- const sortedClasses = ['UserRepository', 'UserService'];
29
- const result = instantiationGenerator.generateInstantiations(sortedClasses);
30
- (0, vitest_1.expect)(result).toContain('// Eager singleton instantiation');
31
- (0, vitest_1.expect)(result).toContain('const userService = new UserService(userRepository);');
32
- (0, vitest_1.expect)(result).toContain('const userRepository = new UserRepository();');
33
- // UserRepository should be instantiated before UserService
34
- const userRepoIndex = result.indexOf('const userRepository');
35
- const userServiceIndex = result.indexOf('const userService');
36
- (0, vitest_1.expect)(userServiceIndex).toBeLessThan(userRepoIndex);
37
- });
38
- (0, vitest_1.it)('should handle classes with no dependencies', () => {
39
- const noDepsClasses = [
40
- {
41
- name: 'SimpleService',
42
- filePath: '/src/services/simple.service.ts',
43
- dependencies: [],
44
- constructorParams: [],
45
- interfaceName: 'ISimpleService',
46
- importPath: './services/simple.service',
47
- scope: 'singleton'
48
- }
49
- ];
50
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(noDepsClasses);
51
- const result = instantiationGenerator.generateInstantiations(['SimpleService']);
52
- (0, vitest_1.expect)(result).toContain('const simpleService = new SimpleService();');
53
- });
54
- });
55
- (0, vitest_1.describe)('with transient classes only', () => {
56
- (0, vitest_1.beforeEach)(() => {
57
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.transientClasses);
58
- });
59
- (0, vitest_1.it)('should generate factory functions for transient classes', () => {
60
- const sortedClasses = ['EmailProvider', 'EmailService'];
61
- const result = instantiationGenerator.generateInstantiations(sortedClasses);
62
- (0, vitest_1.expect)(result).toContain('// Lazy loading setup for transient dependencies');
63
- (0, vitest_1.expect)(result).toContain('const emailServiceFactory = (): EmailService => new EmailService(emailProviderFactory());');
64
- (0, vitest_1.expect)(result).toContain('const emailProviderFactory = (): EmailProvider => new EmailProvider();');
65
- (0, vitest_1.expect)(result).not.toContain('// Eager singleton instantiation');
66
- });
67
- (0, vitest_1.it)('should handle transient classes with no dependencies', () => {
68
- const transientNoDeps = [
69
- {
70
- name: 'TransientService',
71
- filePath: '/src/services/transient.service.ts',
72
- dependencies: [],
73
- constructorParams: [],
74
- interfaceName: 'ITransientService',
75
- importPath: './services/transient.service',
76
- scope: 'transient'
77
- }
78
- ];
79
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(transientNoDeps);
80
- const result = instantiationGenerator.generateInstantiations(['TransientService']);
81
- (0, vitest_1.expect)(result).toContain('const transientServiceFactory = (): TransientService => new TransientService();');
82
- });
83
- });
84
- (0, vitest_1.describe)('with mixed scope classes', () => {
85
- (0, vitest_1.beforeEach)(() => {
86
- // Create a mix of singleton and transient classes
87
- const mixedScopeClasses = [
88
- ...dependency_resolver_fixtures_1.basicManagedClasses, // singletons
89
- ...dependency_resolver_fixtures_1.transientClasses // transients
90
- ];
91
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(mixedScopeClasses);
92
- });
93
- (0, vitest_1.it)('should generate both singleton instantiations and transient factories', () => {
94
- const sortedClasses = ['UserRepository', 'UserService', 'EmailProvider', 'EmailService'];
95
- const result = instantiationGenerator.generateInstantiations(sortedClasses);
96
- // Should have both sections
97
- (0, vitest_1.expect)(result).toContain('// Lazy loading setup for transient dependencies');
98
- (0, vitest_1.expect)(result).toContain('// Eager singleton instantiation');
99
- // Should have factory for transient
100
- (0, vitest_1.expect)(result).toContain('const emailServiceFactory = (): EmailService => new EmailService(emailProviderFactory());');
101
- (0, vitest_1.expect)(result).toContain('const emailProviderFactory = (): EmailProvider => new EmailProvider();');
102
- // Should have instantiation for singletons
103
- (0, vitest_1.expect)(result).toContain('const userService = new UserService(userRepository);');
104
- (0, vitest_1.expect)(result).toContain('const userRepository = new UserRepository();');
105
- });
106
- (0, vitest_1.it)('should separate transient factories from singleton instantiations', () => {
107
- const sortedClasses = ['UserRepository', 'UserService', 'EmailProvider', 'EmailService'];
108
- const result = instantiationGenerator.generateInstantiations(sortedClasses);
109
- const factoryIndex = result.indexOf('// Lazy loading setup');
110
- const singletonIndex = result.indexOf('// Eager singleton instantiation');
111
- (0, vitest_1.expect)(factoryIndex).toBeLessThan(singletonIndex);
112
- });
113
- });
114
- (0, vitest_1.describe)('with mixed dependencies', () => {
115
- (0, vitest_1.beforeEach)(() => {
116
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.mixedDependencyClasses);
117
- });
118
- (0, vitest_1.it)('should handle classes with mixed managed and unmanaged dependencies', () => {
119
- const sortedClasses = ['UserRepository', 'UserService', 'OrderService'];
120
- const result = instantiationGenerator.generateInstantiations(sortedClasses);
121
- // Should properly resolve mixed dependencies
122
- (0, vitest_1.expect)(result).toContain('const orderService = new OrderService(userService, new PaymentGateway(), new Logger());');
123
- (0, vitest_1.expect)(result).toContain('const userService = new UserService(userRepository);');
124
- (0, vitest_1.expect)(result).toContain('const userRepository = new UserRepository();');
125
- });
126
- });
127
- (0, vitest_1.describe)('with unmanaged dependencies', () => {
128
- (0, vitest_1.beforeEach)(() => {
129
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.unmanagedClassesWithParams);
130
- });
131
- (0, vitest_1.it)('should handle classes with unmanaged dependencies', () => {
132
- const sortedClasses = ['DatabaseConnection'];
133
- const result = instantiationGenerator.generateInstantiations(sortedClasses);
134
- (0, vitest_1.expect)(result).toContain('const databaseConnection = new DatabaseConnection("default", 0, undefined);');
135
- });
136
- (0, vitest_1.it)('should generate correct default values for different types', () => {
137
- const classWithMultipleTypes = [
138
- {
139
- name: 'TestService',
140
- filePath: '/src/services/test.service.ts',
141
- dependencies: [],
142
- constructorParams: [
143
- {
144
- name: 'stringParam',
145
- type: 'string',
146
- isOptional: false,
147
- accessModifier: 'private'
148
- },
149
- {
150
- name: 'numberParam',
151
- type: 'number',
152
- isOptional: false,
153
- accessModifier: 'private'
154
- },
155
- {
156
- name: 'booleanParam',
157
- type: 'boolean',
158
- isOptional: false,
159
- accessModifier: 'private'
160
- }
161
- ],
162
- interfaceName: 'ITestService',
163
- importPath: './services/test.service',
164
- scope: 'singleton'
165
- }
166
- ];
167
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(classWithMultipleTypes);
168
- const result = instantiationGenerator.generateInstantiations(['TestService']);
169
- (0, vitest_1.expect)(result).toContain('const testService = new TestService("default", 0, false);');
170
- });
171
- });
172
- (0, vitest_1.describe)('edge cases', () => {
173
- (0, vitest_1.it)('should handle empty sorted classes array', () => {
174
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
175
- const result = instantiationGenerator.generateInstantiations([]);
176
- (0, vitest_1.expect)(result).toBe('');
177
- });
178
- (0, vitest_1.it)('should handle classes not in the sorted list', () => {
179
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
180
- const result = instantiationGenerator.generateInstantiations(['NonExistentClass']);
181
- (0, vitest_1.expect)(result).toBe('');
182
- });
183
- (0, vitest_1.it)('should handle circular dependencies gracefully', () => {
184
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.circularDependencyClasses);
185
- const sortedClasses = ['ServiceA', 'ServiceB'];
186
- const result = instantiationGenerator.generateInstantiations(sortedClasses);
187
- // Should still generate instantiations even with circular dependencies
188
- (0, vitest_1.expect)(result).toContain('const serviceA');
189
- (0, vitest_1.expect)(result).toContain('const serviceB');
190
- });
191
- (0, vitest_1.it)('should handle mixed dependencies correctly', () => {
192
- const mixedClasses = [
193
- {
194
- name: 'MixedService',
195
- filePath: '/src/services/mixed.service.ts',
196
- dependencies: ['IUserRepository'],
197
- constructorParams: [
198
- {
199
- name: 'userRepository',
200
- type: 'IUserRepository',
201
- isOptional: false,
202
- accessModifier: 'private'
203
- },
204
- {
205
- name: 'apiUrl',
206
- type: 'string',
207
- isOptional: false,
208
- accessModifier: 'private'
209
- }
210
- ],
211
- interfaceName: 'IMixedService',
212
- importPath: './services/mixed.service',
213
- scope: 'singleton'
214
- },
215
- ...dependency_resolver_fixtures_1.basicManagedClasses
216
- ];
217
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(mixedClasses);
218
- const result = instantiationGenerator.generateInstantiations(['UserRepository', 'MixedService']);
219
- (0, vitest_1.expect)(result).toContain('const mixedService = new MixedService(userRepository, "default");');
220
- });
221
- });
222
- (0, vitest_1.describe)('output formatting', () => {
223
- (0, vitest_1.it)('should format output with proper sections and spacing', () => {
224
- const mixedScopeClasses = [
225
- ...dependency_resolver_fixtures_1.basicManagedClasses, // singletons
226
- ...dependency_resolver_fixtures_1.transientClasses // transients
227
- ];
228
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(mixedScopeClasses);
229
- const sortedClasses = ['UserRepository', 'UserService', 'EmailProvider', 'EmailService'];
230
- const result = instantiationGenerator.generateInstantiations(sortedClasses);
231
- const lines = result.split('\n');
232
- // Should have proper section headers
233
- (0, vitest_1.expect)(lines).toContain('// Lazy loading setup for transient dependencies');
234
- (0, vitest_1.expect)(lines).toContain('// Eager singleton instantiation');
235
- // Should have empty line between sections
236
- const factoryHeaderIndex = lines.indexOf('// Lazy loading setup for transient dependencies');
237
- const singletonHeaderIndex = lines.indexOf('// Eager singleton instantiation');
238
- (0, vitest_1.expect)(lines[singletonHeaderIndex - 1]).toBe('');
239
- });
240
- (0, vitest_1.it)('should generate proper variable names', () => {
241
- instantiationGenerator = new instantiation_generator_1.InstantiationGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
242
- const result = instantiationGenerator.generateInstantiations(['UserService', 'UserRepository']);
243
- (0, vitest_1.expect)(result).toContain('const userService');
244
- (0, vitest_1.expect)(result).toContain('const userRepository');
245
- (0, vitest_1.expect)(result).not.toContain('const UserService');
246
- (0, vitest_1.expect)(result).not.toContain('const UserRepository');
247
- });
248
- });
249
- });
250
- });
251
- //# sourceMappingURL=instantiation-generator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instantiation-generator.test.js","sourceRoot":"","sources":["../../../src/__tests__/generator/instantiation-generator.test.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { GeneratorOptions } from '../types';
2
- export declare class ContainerFileGenerator {
3
- private dependencyResolver;
4
- private importGenerator;
5
- private instantiationGenerator;
6
- private containerCodeGenerator;
7
- private fileWriter;
8
- private moduleGroupedClasses?;
9
- constructor(options: GeneratorOptions);
10
- generateContainer(): void;
11
- generateModularContainer(): void;
12
- private generateContainerCode;
13
- private generateModularContainerCode;
14
- private generateModuleContainers;
15
- private generateAggregatedContainer;
16
- private generateModularTypeExport;
17
- private camelCase;
18
- private sortClassesByDependencies;
19
- }
20
- //# sourceMappingURL=Container-file-generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Container-file-generator.d.ts","sourceRoot":"","sources":["../../src/generator/Container-file-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAa,MAAM,UAAU,CAAC;AAOvD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,oBAAoB,CAAC,CAA2B;gBAE5C,OAAO,EAAE,gBAAgB;IAsBrC,iBAAiB,IAAI,IAAI;IAWzB,wBAAwB,IAAI,IAAI;IA0BhC,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,wBAAwB;IAyJhC,OAAO,CAAC,2BAA2B;IAcnC,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,yBAAyB;CAqClC"}
@@ -1,255 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"Container-file-generator.js","sourceRoot":"","sources":["../../src/generator/Container-file-generator.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Base class for container code generators.
3
- * Contains common functionality for generating container objects and type exports.
4
- */
5
- export declare abstract class BaseContainerCodeGenerator {
6
- /**
7
- * Generates the type export for the container.
8
- */
9
- generateTypeExport(): string;
10
- /**
11
- * Utility method to convert strings to camelCase.
12
- */
13
- protected camelCase(str: string): string;
14
- }
15
- //# sourceMappingURL=base-container-code-generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-container-code-generator.d.ts","sourceRoot":"","sources":["../../src/generator/base-container-code-generator.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,8BAAsB,0BAA0B;IAC9C;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGzC"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseContainerCodeGenerator = void 0;
4
- /**
5
- * Base class for container code generators.
6
- * Contains common functionality for generating container objects and type exports.
7
- */
8
- class BaseContainerCodeGenerator {
9
- /**
10
- * Generates the type export for the container.
11
- */
12
- generateTypeExport() {
13
- return 'export type Container = typeof container;';
14
- }
15
- /**
16
- * Utility method to convert strings to camelCase.
17
- */
18
- camelCase(str) {
19
- return str.charAt(0).toLowerCase() + str.slice(1).replace(/[^a-zA-Z0-9]/g, '');
20
- }
21
- }
22
- exports.BaseContainerCodeGenerator = BaseContainerCodeGenerator;
23
- //# sourceMappingURL=base-container-code-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-container-code-generator.js","sourceRoot":"","sources":["../../src/generator/base-container-code-generator.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAsB,0BAA0B;IAC9C;;OAEG;IACH,kBAAkB;QAChB,OAAO,2CAA2C,CAAC;IACrD,CAAC;IAED;;OAEG;IACO,SAAS,CAAC,GAAW;QAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC;CACF;AAdD,gEAcC"}