@notjustcoders/ioc-arise 1.0.9 → 1.0.11

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