@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,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const container_generator_1 = require("../../generator/container-generator");
5
+ const dependency_resolver_fixtures_1 = require("./fixtures/dependency-resolver.fixtures");
6
+ (0, vitest_1.describe)('ContainerGenerator', () => {
7
+ let containerGenerator;
8
+ (0, vitest_1.describe)('constructor', () => {
9
+ (0, vitest_1.it)('should create an instance with provided classes', () => {
10
+ containerGenerator = new container_generator_1.ContainerGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
11
+ (0, vitest_1.expect)(containerGenerator).toBeInstanceOf(container_generator_1.ContainerGenerator);
12
+ });
13
+ (0, vitest_1.it)('should handle empty classes array', () => {
14
+ containerGenerator = new container_generator_1.ContainerGenerator([]);
15
+ (0, vitest_1.expect)(containerGenerator).toBeInstanceOf(container_generator_1.ContainerGenerator);
16
+ });
17
+ (0, vitest_1.it)('should store classes internally', () => {
18
+ containerGenerator = new container_generator_1.ContainerGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
19
+ (0, vitest_1.expect)(containerGenerator['classes']).toBe(dependency_resolver_fixtures_1.basicManagedClasses);
20
+ });
21
+ });
22
+ (0, vitest_1.describe)('generateContainerObject', () => {
23
+ (0, vitest_1.describe)('with singleton classes only', () => {
24
+ (0, vitest_1.beforeEach)(() => {
25
+ containerGenerator = new container_generator_1.ContainerGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
26
+ });
27
+ (0, vitest_1.it)('should generate container object with singleton properties', () => {
28
+ const result = containerGenerator.generateContainerObject();
29
+ (0, vitest_1.expect)(result).toContain('export const container = {');
30
+ (0, vitest_1.expect)(result).toContain('IUserService: userService,');
31
+ (0, vitest_1.expect)(result).toContain('IUserRepository: userRepository,');
32
+ (0, vitest_1.expect)(result).toContain('};');
33
+ });
34
+ (0, vitest_1.it)('should use interface names as property keys', () => {
35
+ const result = containerGenerator.generateContainerObject();
36
+ (0, vitest_1.expect)(result).toContain('IUserService:');
37
+ (0, vitest_1.expect)(result).toContain('IUserRepository:');
38
+ });
39
+ (0, vitest_1.it)('should use variable names as property values', () => {
40
+ const result = containerGenerator.generateContainerObject();
41
+ (0, vitest_1.expect)(result).toContain(': userService,');
42
+ (0, vitest_1.expect)(result).toContain(': userRepository,');
43
+ });
44
+ });
45
+ (0, vitest_1.describe)('with transient classes only', () => {
46
+ (0, vitest_1.beforeEach)(() => {
47
+ containerGenerator = new container_generator_1.ContainerGenerator(dependency_resolver_fixtures_1.transientClasses);
48
+ });
49
+ (0, vitest_1.it)('should generate container object with getter properties for transients', () => {
50
+ const result = containerGenerator.generateContainerObject();
51
+ (0, vitest_1.expect)(result).toContain('export const container = {');
52
+ (0, vitest_1.expect)(result).toContain('get IEmailService(): EmailService {');
53
+ (0, vitest_1.expect)(result).toContain('return emailServiceFactory();');
54
+ (0, vitest_1.expect)(result).toContain('get IEmailProvider(): EmailProvider {');
55
+ (0, vitest_1.expect)(result).toContain('return emailProviderFactory();');
56
+ (0, vitest_1.expect)(result).toContain('};');
57
+ });
58
+ (0, vitest_1.it)('should use factory functions in getter return statements', () => {
59
+ const result = containerGenerator.generateContainerObject();
60
+ (0, vitest_1.expect)(result).toContain('return emailServiceFactory();');
61
+ (0, vitest_1.expect)(result).toContain('return emailProviderFactory();');
62
+ });
63
+ (0, vitest_1.it)('should use class names as return types in getters', () => {
64
+ const result = containerGenerator.generateContainerObject();
65
+ (0, vitest_1.expect)(result).toContain('get IEmailService(): EmailService {');
66
+ (0, vitest_1.expect)(result).toContain('get IEmailProvider(): EmailProvider {');
67
+ });
68
+ });
69
+ (0, vitest_1.describe)('with mixed scope classes', () => {
70
+ const mixedScopeClasses = [
71
+ ...dependency_resolver_fixtures_1.basicManagedClasses,
72
+ ...dependency_resolver_fixtures_1.transientClasses
73
+ ];
74
+ (0, vitest_1.beforeEach)(() => {
75
+ containerGenerator = new container_generator_1.ContainerGenerator(mixedScopeClasses);
76
+ });
77
+ (0, vitest_1.it)('should generate container object with both singleton and transient properties', () => {
78
+ const result = containerGenerator.generateContainerObject();
79
+ // Singleton properties
80
+ (0, vitest_1.expect)(result).toContain('IUserService: userService,');
81
+ (0, vitest_1.expect)(result).toContain('IUserRepository: userRepository,');
82
+ // Transient properties
83
+ (0, vitest_1.expect)(result).toContain('get IEmailService(): EmailService {');
84
+ (0, vitest_1.expect)(result).toContain('return emailServiceFactory();');
85
+ (0, vitest_1.expect)(result).toContain('get IEmailProvider(): EmailProvider {');
86
+ (0, vitest_1.expect)(result).toContain('return emailProviderFactory();');
87
+ });
88
+ (0, vitest_1.it)('should place singleton properties before transient properties', () => {
89
+ const result = containerGenerator.generateContainerObject();
90
+ const singletonIndex = result.indexOf('IUserService: userService,');
91
+ const transientIndex = result.indexOf('get IEmailService(): EmailService {');
92
+ (0, vitest_1.expect)(singletonIndex).toBeLessThan(transientIndex);
93
+ });
94
+ });
95
+ (0, vitest_1.describe)('with classes without interface names', () => {
96
+ const classesWithoutInterfaces = [
97
+ {
98
+ name: 'SimpleService',
99
+ filePath: '/src/services/simple.service.ts',
100
+ dependencies: [],
101
+ constructorParams: [],
102
+ interfaceName: undefined,
103
+ importPath: './services/simple.service',
104
+ scope: 'singleton'
105
+ }
106
+ ];
107
+ (0, vitest_1.beforeEach)(() => {
108
+ containerGenerator = new container_generator_1.ContainerGenerator(classesWithoutInterfaces);
109
+ });
110
+ (0, vitest_1.it)('should use class name when interface name is not provided', () => {
111
+ const result = containerGenerator.generateContainerObject();
112
+ (0, vitest_1.expect)(result).toContain('SimpleService: simpleService,');
113
+ });
114
+ });
115
+ (0, vitest_1.describe)('with empty classes array', () => {
116
+ (0, vitest_1.beforeEach)(() => {
117
+ containerGenerator = new container_generator_1.ContainerGenerator([]);
118
+ });
119
+ (0, vitest_1.it)('should generate empty container object', () => {
120
+ const result = containerGenerator.generateContainerObject();
121
+ (0, vitest_1.expect)(result).toBe('export const container = {\n\n};');
122
+ });
123
+ });
124
+ (0, vitest_1.describe)('output formatting', () => {
125
+ (0, vitest_1.beforeEach)(() => {
126
+ containerGenerator = new container_generator_1.ContainerGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
127
+ });
128
+ (0, vitest_1.it)('should have proper indentation for properties', () => {
129
+ const result = containerGenerator.generateContainerObject();
130
+ (0, vitest_1.expect)(result).toContain(' IUserService: userService,');
131
+ (0, vitest_1.expect)(result).toContain(' IUserRepository: userRepository,');
132
+ });
133
+ (0, vitest_1.it)('should start with export statement', () => {
134
+ const result = containerGenerator.generateContainerObject();
135
+ (0, vitest_1.expect)(result).toMatch(/^export const container = \{/);
136
+ });
137
+ (0, vitest_1.it)('should end with closing brace and semicolon', () => {
138
+ const result = containerGenerator.generateContainerObject();
139
+ (0, vitest_1.expect)(result).toMatch(/\};$/);
140
+ });
141
+ });
142
+ });
143
+ (0, vitest_1.describe)('generateTypeExport', () => {
144
+ (0, vitest_1.beforeEach)(() => {
145
+ containerGenerator = new container_generator_1.ContainerGenerator(dependency_resolver_fixtures_1.basicManagedClasses);
146
+ });
147
+ (0, vitest_1.it)('should generate type export statement', () => {
148
+ const result = containerGenerator.generateTypeExport();
149
+ (0, vitest_1.expect)(result).toBe('export type Container = typeof container;');
150
+ });
151
+ (0, vitest_1.it)('should return consistent output regardless of classes', () => {
152
+ const emptyGenerator = new container_generator_1.ContainerGenerator([]);
153
+ const mixedGenerator = new container_generator_1.ContainerGenerator([...dependency_resolver_fixtures_1.basicManagedClasses, ...dependency_resolver_fixtures_1.transientClasses]);
154
+ const result1 = containerGenerator.generateTypeExport();
155
+ const result2 = emptyGenerator.generateTypeExport();
156
+ const result3 = mixedGenerator.generateTypeExport();
157
+ (0, vitest_1.expect)(result1).toBe(result2);
158
+ (0, vitest_1.expect)(result2).toBe(result3);
159
+ (0, vitest_1.expect)(result1).toBe('export type Container = typeof container;');
160
+ });
161
+ });
162
+ (0, vitest_1.describe)('integration scenarios', () => {
163
+ (0, vitest_1.it)('should handle complex mixed dependency classes', () => {
164
+ containerGenerator = new container_generator_1.ContainerGenerator(dependency_resolver_fixtures_1.mixedDependencyClasses);
165
+ const containerResult = containerGenerator.generateContainerObject();
166
+ const typeResult = containerGenerator.generateTypeExport();
167
+ (0, vitest_1.expect)(containerResult).toContain('export const container = {');
168
+ (0, vitest_1.expect)(containerResult).toContain('IOrderService: orderService,');
169
+ (0, vitest_1.expect)(containerResult).toContain('};');
170
+ (0, vitest_1.expect)(typeResult).toBe('export type Container = typeof container;');
171
+ });
172
+ (0, vitest_1.it)('should generate valid TypeScript code structure', () => {
173
+ containerGenerator = new container_generator_1.ContainerGenerator([...dependency_resolver_fixtures_1.basicManagedClasses, ...dependency_resolver_fixtures_1.transientClasses]);
174
+ const containerResult = containerGenerator.generateContainerObject();
175
+ const typeResult = containerGenerator.generateTypeExport();
176
+ // Check that the generated code has valid structure
177
+ (0, vitest_1.expect)(containerResult).toMatch(/^export const container = \{[\s\S]*\};$/);
178
+ (0, vitest_1.expect)(typeResult).toMatch(/^export type Container = typeof container;$/);
179
+ // Check that singleton and transient properties are properly formatted
180
+ (0, vitest_1.expect)(containerResult).toMatch(/\s+\w+: \w+,/); // Singleton pattern
181
+ (0, vitest_1.expect)(containerResult).toMatch(/\s+get \w+\(\): \w+ \{[\s\S]*?\}/); // Transient pattern
182
+ });
183
+ });
184
+ });
185
+ //# sourceMappingURL=container-generator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-generator.test.js","sourceRoot":"","sources":["../../../src/__tests__/generator/container-generator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dependency-resolver.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/generator/dependency-resolver.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,330 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const dependency_resolver_1 = require("../../generator/dependency-resolver");
5
+ const dependency_resolver_fixtures_1 = require("./fixtures/dependency-resolver.fixtures");
6
+ (0, vitest_1.describe)('DependencyResolver', () => {
7
+ let dependencyResolver;
8
+ (0, vitest_1.describe)('constructor', () => {
9
+ (0, vitest_1.it)('should create an instance with provided classes', () => {
10
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(dependency_resolver_fixtures_1.basicManagedClasses);
11
+ (0, vitest_1.expect)(dependencyResolver).toBeInstanceOf(dependency_resolver_1.DependencyResolver);
12
+ });
13
+ (0, vitest_1.it)('should handle empty classes array', () => {
14
+ dependencyResolver = new dependency_resolver_1.DependencyResolver([]);
15
+ (0, vitest_1.expect)(dependencyResolver).toBeInstanceOf(dependency_resolver_1.DependencyResolver);
16
+ });
17
+ });
18
+ (0, vitest_1.describe)('createInterfaceToClassMap', () => {
19
+ (0, vitest_1.describe)('with classes that have interface names', () => {
20
+ (0, vitest_1.beforeEach)(() => {
21
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(dependency_resolver_fixtures_1.basicManagedClasses);
22
+ });
23
+ (0, vitest_1.it)('should create correct interface to class mapping', () => {
24
+ const result = dependencyResolver.createInterfaceToClassMap();
25
+ (0, vitest_1.expect)(result.get('IUserService')).toBe('UserService');
26
+ (0, vitest_1.expect)(result.get('IUserRepository')).toBe('UserRepository');
27
+ (0, vitest_1.expect)(result.size).toBe(2);
28
+ });
29
+ (0, vitest_1.it)('should match expected interface mapping', () => {
30
+ const result = dependencyResolver.createInterfaceToClassMap();
31
+ dependency_resolver_fixtures_1.expectedResults.basicInterfaceToClassMap.forEach((className, interfaceName) => {
32
+ (0, vitest_1.expect)(result.get(interfaceName)).toBe(className);
33
+ });
34
+ });
35
+ });
36
+ (0, vitest_1.describe)('with classes without interface names', () => {
37
+ (0, vitest_1.beforeEach)(() => {
38
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(dependency_resolver_fixtures_1.classesWithoutInterfaces);
39
+ });
40
+ (0, vitest_1.it)('should return empty map when no interfaces are defined', () => {
41
+ const result = dependencyResolver.createInterfaceToClassMap();
42
+ (0, vitest_1.expect)(result.size).toBe(0);
43
+ });
44
+ });
45
+ (0, vitest_1.describe)('with mixed classes (some with interfaces, some without)', () => {
46
+ (0, vitest_1.beforeEach)(() => {
47
+ const mixedClasses = [...dependency_resolver_fixtures_1.basicManagedClasses, ...dependency_resolver_fixtures_1.classesWithoutInterfaces];
48
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(mixedClasses);
49
+ });
50
+ (0, vitest_1.it)('should only map classes that have interface names', () => {
51
+ const result = dependencyResolver.createInterfaceToClassMap();
52
+ (0, vitest_1.expect)(result.get('IUserService')).toBe('UserService');
53
+ (0, vitest_1.expect)(result.get('IUserRepository')).toBe('UserRepository');
54
+ (0, vitest_1.expect)(result.has('UtilityService')).toBe(false);
55
+ (0, vitest_1.expect)(result.has('HelperService')).toBe(false);
56
+ (0, vitest_1.expect)(result.size).toBe(2);
57
+ });
58
+ });
59
+ (0, vitest_1.describe)('with empty classes array', () => {
60
+ (0, vitest_1.beforeEach)(() => {
61
+ dependencyResolver = new dependency_resolver_1.DependencyResolver([]);
62
+ });
63
+ (0, vitest_1.it)('should return empty map', () => {
64
+ const result = dependencyResolver.createInterfaceToClassMap();
65
+ (0, vitest_1.expect)(result.size).toBe(0);
66
+ });
67
+ });
68
+ });
69
+ (0, vitest_1.describe)('resolveDependencies', () => {
70
+ (0, vitest_1.describe)('with singleton managed dependencies', () => {
71
+ (0, vitest_1.beforeEach)(() => {
72
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(dependency_resolver_fixtures_1.basicManagedClasses);
73
+ });
74
+ (0, vitest_1.it)('should resolve interface dependencies to variable names', () => {
75
+ const interfaceToClassMap = dependencyResolver.createInterfaceToClassMap();
76
+ const classMap = new Map(dependency_resolver_fixtures_1.basicManagedClasses.map(c => [c.name, c]));
77
+ const result = dependencyResolver.resolveDependencies(dependency_resolver_fixtures_1.basicManagedClasses[0], // UserService
78
+ interfaceToClassMap, classMap);
79
+ (0, vitest_1.expect)(result).toBe('userRepository');
80
+ });
81
+ (0, vitest_1.it)('should handle class with no dependencies', () => {
82
+ const interfaceToClassMap = dependencyResolver.createInterfaceToClassMap();
83
+ const classMap = new Map(dependency_resolver_fixtures_1.basicManagedClasses.map(c => [c.name, c]));
84
+ const result = dependencyResolver.resolveDependencies(dependency_resolver_fixtures_1.basicManagedClasses[1], // UserRepository (no dependencies)
85
+ interfaceToClassMap, classMap);
86
+ (0, vitest_1.expect)(result).toBe('');
87
+ });
88
+ });
89
+ (0, vitest_1.describe)('with transient managed dependencies', () => {
90
+ (0, vitest_1.beforeEach)(() => {
91
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(dependency_resolver_fixtures_1.transientClasses);
92
+ });
93
+ (0, vitest_1.it)('should resolve transient dependencies with factory calls', () => {
94
+ const interfaceToClassMap = dependencyResolver.createInterfaceToClassMap();
95
+ const classMap = new Map(dependency_resolver_fixtures_1.transientClasses.map(c => [c.name, c]));
96
+ const result = dependencyResolver.resolveDependencies(dependency_resolver_fixtures_1.transientClasses[0], // EmailService
97
+ interfaceToClassMap, classMap);
98
+ (0, vitest_1.expect)(result).toBe('emailProviderFactory()');
99
+ });
100
+ });
101
+ (0, vitest_1.describe)('with mixed managed and unmanaged dependencies', () => {
102
+ (0, vitest_1.beforeEach)(() => {
103
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(dependency_resolver_fixtures_1.mixedDependencyClasses);
104
+ });
105
+ (0, vitest_1.it)('should resolve mixed dependencies correctly', () => {
106
+ const interfaceToClassMap = dependencyResolver.createInterfaceToClassMap();
107
+ const classMap = new Map(dependency_resolver_fixtures_1.mixedDependencyClasses.map(c => [c.name, c]));
108
+ const result = dependencyResolver.resolveDependencies(dependency_resolver_fixtures_1.mixedDependencyClasses[0], // OrderService
109
+ interfaceToClassMap, classMap);
110
+ (0, vitest_1.expect)(result).toBe('userService, new PaymentGateway(), new Logger()');
111
+ });
112
+ });
113
+ (0, vitest_1.describe)('with direct class name dependencies', () => {
114
+ (0, vitest_1.beforeEach)(() => {
115
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(dependency_resolver_fixtures_1.classesWithoutInterfaces);
116
+ });
117
+ (0, vitest_1.it)('should resolve direct class dependencies', () => {
118
+ const interfaceToClassMap = dependencyResolver.createInterfaceToClassMap();
119
+ const classMap = new Map(dependency_resolver_fixtures_1.classesWithoutInterfaces.map(c => [c.name, c]));
120
+ const result = dependencyResolver.resolveDependencies(dependency_resolver_fixtures_1.classesWithoutInterfaces[1], // HelperService depends on UtilityService
121
+ interfaceToClassMap, classMap);
122
+ (0, vitest_1.expect)(result).toBe('utilityService');
123
+ });
124
+ });
125
+ (0, vitest_1.describe)('with circular dependencies', () => {
126
+ (0, vitest_1.beforeEach)(() => {
127
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(dependency_resolver_fixtures_1.circularDependencyClasses);
128
+ });
129
+ (0, vitest_1.it)('should handle circular dependencies without infinite loops', () => {
130
+ const interfaceToClassMap = dependencyResolver.createInterfaceToClassMap();
131
+ const classMap = new Map(dependency_resolver_fixtures_1.circularDependencyClasses.map(c => [c.name, c]));
132
+ const resultA = dependencyResolver.resolveDependencies(dependency_resolver_fixtures_1.circularDependencyClasses[0], // ServiceA
133
+ interfaceToClassMap, classMap);
134
+ const resultB = dependencyResolver.resolveDependencies(dependency_resolver_fixtures_1.circularDependencyClasses[1], // ServiceB
135
+ interfaceToClassMap, classMap);
136
+ (0, vitest_1.expect)(resultA).toBe('serviceB');
137
+ (0, vitest_1.expect)(resultB).toBe('serviceA');
138
+ });
139
+ });
140
+ (0, vitest_1.describe)('with unmanaged dependencies', () => {
141
+ (0, vitest_1.it)('should create instances for unmanaged dependencies', () => {
142
+ const testClasses = [dependency_resolver_fixtures_1.testClassForResolution, ...dependency_resolver_fixtures_1.basicManagedClasses, ...dependency_resolver_fixtures_1.transientClasses];
143
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(testClasses);
144
+ const interfaceToClassMap = dependencyResolver.createInterfaceToClassMap();
145
+ const classMap = new Map(testClasses.map(c => [c.name, c]));
146
+ const result = dependencyResolver.resolveDependencies(dependency_resolver_fixtures_1.testClassForResolution, interfaceToClassMap, classMap);
147
+ (0, vitest_1.expect)(result).toBe('userService, emailServiceFactory(), new UnmanagedClass()');
148
+ });
149
+ });
150
+ });
151
+ (0, vitest_1.describe)('createUnmanagedDependencyInstance (private method testing via public interface)', () => {
152
+ (0, vitest_1.describe)('with classes that have constructor parameters', () => {
153
+ (0, vitest_1.beforeEach)(() => {
154
+ dependencyResolver = new dependency_resolver_1.DependencyResolver(dependency_resolver_fixtures_1.unmanagedClassesWithParams);
155
+ });
156
+ (0, vitest_1.it)('should generate constructor calls with default values for primitive types', () => {
157
+ const testClass = {
158
+ name: 'TestClass',
159
+ filePath: '/test.ts',
160
+ dependencies: ['DatabaseConnection'],
161
+ constructorParams: [],
162
+ importPath: './test',
163
+ scope: 'singleton'
164
+ };
165
+ const interfaceToClassMap = new Map();
166
+ const classMap = new Map();
167
+ const result = dependencyResolver.resolveDependencies(testClass, interfaceToClassMap, classMap);
168
+ (0, vitest_1.expect)(result).toBe('new DatabaseConnection("default", 0, undefined)');
169
+ });
170
+ (0, vitest_1.it)('should handle classes with mixed parameter types', () => {
171
+ const testClass = {
172
+ name: 'TestClass',
173
+ filePath: '/test.ts',
174
+ dependencies: ['ConfigService'],
175
+ constructorParams: [],
176
+ importPath: './test',
177
+ scope: 'singleton'
178
+ };
179
+ const interfaceToClassMap = new Map();
180
+ const classMap = new Map();
181
+ const result = dependencyResolver.resolveDependencies(testClass, interfaceToClassMap, classMap);
182
+ (0, vitest_1.expect)(result).toBe('new ConfigService(new Config(), undefined)');
183
+ });
184
+ });
185
+ (0, vitest_1.describe)('with classes that have no constructor parameters', () => {
186
+ (0, vitest_1.it)('should generate simple constructor calls', () => {
187
+ const testClass = {
188
+ name: 'TestClass',
189
+ filePath: '/test.ts',
190
+ dependencies: ['SimpleClass'],
191
+ constructorParams: [],
192
+ importPath: './test',
193
+ scope: 'singleton'
194
+ };
195
+ dependencyResolver = new dependency_resolver_1.DependencyResolver([testClass]);
196
+ const interfaceToClassMap = new Map();
197
+ const classMap = new Map();
198
+ const result = dependencyResolver.resolveDependencies(testClass, interfaceToClassMap, classMap);
199
+ (0, vitest_1.expect)(result).toBe('new SimpleClass()');
200
+ });
201
+ });
202
+ });
203
+ (0, vitest_1.describe)('getDefaultValueForType (private method testing via public interface)', () => {
204
+ (0, vitest_1.beforeEach)(() => {
205
+ dependencyResolver = new dependency_resolver_1.DependencyResolver([]);
206
+ });
207
+ (0, vitest_1.it)('should return correct default values for primitive types', () => {
208
+ const testCases = [
209
+ { type: 'string', expected: '"default"' },
210
+ { type: 'number', expected: '0' },
211
+ { type: 'boolean', expected: 'false' },
212
+ { type: 'Date', expected: 'new Date()' }
213
+ ];
214
+ testCases.forEach(({ type, expected }) => {
215
+ const testClass = {
216
+ name: 'TestClass',
217
+ filePath: '/test.ts',
218
+ dependencies: ['ParamClass'],
219
+ constructorParams: [],
220
+ importPath: './test',
221
+ scope: 'singleton'
222
+ };
223
+ const paramClass = {
224
+ name: 'ParamClass',
225
+ filePath: '/param.ts',
226
+ dependencies: [],
227
+ constructorParams: [
228
+ {
229
+ name: 'param',
230
+ type: type,
231
+ isOptional: false,
232
+ accessModifier: 'private'
233
+ }
234
+ ],
235
+ importPath: './param',
236
+ scope: 'singleton'
237
+ };
238
+ const resolver = new dependency_resolver_1.DependencyResolver([testClass, paramClass]);
239
+ const result = resolver.resolveDependencies(testClass, new Map(), new Map());
240
+ (0, vitest_1.expect)(result).toBe(`new ParamClass(${expected})`);
241
+ });
242
+ });
243
+ (0, vitest_1.it)('should return undefined for optional parameters', () => {
244
+ const testClass = {
245
+ name: 'TestClass',
246
+ filePath: '/test.ts',
247
+ dependencies: ['OptionalParamClass'],
248
+ constructorParams: [],
249
+ importPath: './test',
250
+ scope: 'singleton'
251
+ };
252
+ const optionalParamClass = {
253
+ name: 'OptionalParamClass',
254
+ filePath: '/optional.ts',
255
+ dependencies: [],
256
+ constructorParams: [
257
+ {
258
+ name: 'optionalParam',
259
+ type: 'string',
260
+ isOptional: true,
261
+ accessModifier: 'private'
262
+ }
263
+ ],
264
+ importPath: './optional',
265
+ scope: 'singleton'
266
+ };
267
+ const resolver = new dependency_resolver_1.DependencyResolver([testClass, optionalParamClass]);
268
+ const result = resolver.resolveDependencies(testClass, new Map(), new Map());
269
+ (0, vitest_1.expect)(result).toBe('new OptionalParamClass(undefined)');
270
+ });
271
+ (0, vitest_1.it)('should handle custom class types as parameters', () => {
272
+ const testClass = {
273
+ name: 'TestClass',
274
+ filePath: '/test.ts',
275
+ dependencies: ['ClassWithCustomParam'],
276
+ constructorParams: [],
277
+ importPath: './test',
278
+ scope: 'singleton'
279
+ };
280
+ const classWithCustomParam = {
281
+ name: 'ClassWithCustomParam',
282
+ filePath: '/custom.ts',
283
+ dependencies: [],
284
+ constructorParams: [
285
+ {
286
+ name: 'customParam',
287
+ type: 'CustomType',
288
+ isOptional: false,
289
+ accessModifier: 'private'
290
+ }
291
+ ],
292
+ importPath: './custom',
293
+ scope: 'singleton'
294
+ };
295
+ const resolver = new dependency_resolver_1.DependencyResolver([testClass, classWithCustomParam]);
296
+ const result = resolver.resolveDependencies(testClass, new Map(), new Map());
297
+ (0, vitest_1.expect)(result).toBe('new ClassWithCustomParam(new CustomType())');
298
+ });
299
+ });
300
+ (0, vitest_1.describe)('edge cases and error handling', () => {
301
+ (0, vitest_1.it)('should handle null dependencies gracefully', () => {
302
+ const testClass = {
303
+ name: 'TestClass',
304
+ filePath: '/test.ts',
305
+ dependencies: [],
306
+ constructorParams: [],
307
+ importPath: './test',
308
+ scope: 'singleton'
309
+ };
310
+ dependencyResolver = new dependency_resolver_1.DependencyResolver([testClass]);
311
+ const result = dependencyResolver.resolveDependencies(testClass, new Map(), new Map());
312
+ (0, vitest_1.expect)(result).toBe('');
313
+ });
314
+ (0, vitest_1.it)('should filter out null dependencies', () => {
315
+ // This tests the .filter(dep => dep !== null) part of resolveDependencies
316
+ const testClass = {
317
+ name: 'TestClass',
318
+ filePath: '/test.ts',
319
+ dependencies: ['ValidDep'],
320
+ constructorParams: [],
321
+ importPath: './test',
322
+ scope: 'singleton'
323
+ };
324
+ dependencyResolver = new dependency_resolver_1.DependencyResolver([testClass]);
325
+ const result = dependencyResolver.resolveDependencies(testClass, new Map(), new Map());
326
+ (0, vitest_1.expect)(result).toBe('new ValidDep()');
327
+ });
328
+ });
329
+ });
330
+ //# sourceMappingURL=dependency-resolver.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.test.js","sourceRoot":"","sources":["../../../src/__tests__/generator/dependency-resolver.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ClassInfo } from '../../../types';
2
+ export declare const basicManagedClasses: ClassInfo[];
3
+ export declare const transientClasses: ClassInfo[];
4
+ export declare const mixedDependencyClasses: ClassInfo[];
5
+ export declare const unmanagedClassesWithParams: ClassInfo[];
6
+ export declare const classesWithoutInterfaces: ClassInfo[];
7
+ export declare const circularDependencyClasses: ClassInfo[];
8
+ export declare const testClassForResolution: ClassInfo;
9
+ export declare const expectedResults: {
10
+ basicInterfaceToClassMap: Map<string, string>;
11
+ transientInterfaceToClassMap: Map<string, string>;
12
+ mixedDependenciesResolution: string;
13
+ transientDependenciesResolution: string;
14
+ singletonDependenciesResolution: string;
15
+ unmanagedWithParamsResolution: string;
16
+ primitiveTypesDefaults: {
17
+ string: string;
18
+ number: string;
19
+ boolean: string;
20
+ date: string;
21
+ };
22
+ };
23
+ //# sourceMappingURL=dependency-resolver.fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.fixtures.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/generator/fixtures/dependency-resolver.fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAG3D,eAAO,MAAM,mBAAmB,EAAE,SAAS,EA0B1C,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,SAAS,EA0BvC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,SAAS,EA8B7C,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,SAAS,EAiDjD,CAAC;AAGF,eAAO,MAAM,wBAAwB,EAAE,SAAS,EAwB/C,CAAC;AAGF,eAAO,MAAM,yBAAyB,EAAE,SAAS,EAiChD,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,SA2BpC,CAAC;AAGF,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAmB3B,CAAC"}