@notjustcoders/ioc-arise 1.1.15 → 1.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyser/ast-parser.d.ts +9 -0
- package/dist/analyser/ast-parser.d.ts.map +1 -1
- package/dist/analyser/ast-parser.js +283 -0
- package/dist/analyser/ast-parser.js.map +1 -1
- package/dist/analyser/factory-analyzer.d.ts +13 -0
- package/dist/analyser/factory-analyzer.d.ts.map +1 -0
- package/dist/analyser/factory-analyzer.js +184 -0
- package/dist/analyser/factory-analyzer.js.map +1 -0
- package/dist/analyser/index.d.ts +5 -1
- package/dist/analyser/index.d.ts.map +1 -1
- package/dist/analyser/index.js +9 -0
- package/dist/analyser/index.js.map +1 -1
- package/dist/analyser/project-analyzer.d.ts +6 -2
- package/dist/analyser/project-analyzer.d.ts.map +1 -1
- package/dist/analyser/project-analyzer.js +4 -1
- package/dist/analyser/project-analyzer.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +6 -3
- package/dist/commands/generate.js.map +1 -1
- package/dist/errors/IoCError.d.ts +1 -0
- package/dist/errors/IoCError.d.ts.map +1 -1
- package/dist/errors/IoCError.js +1 -0
- package/dist/errors/IoCError.js.map +1 -1
- package/dist/errors/errorFactory.d.ts +1 -0
- package/dist/errors/errorFactory.d.ts.map +1 -1
- package/dist/errors/errorFactory.js +6 -0
- package/dist/errors/errorFactory.js.map +1 -1
- package/dist/generator/ioc-container-generator.d.ts +6 -6
- package/dist/generator/ioc-container-generator.d.ts.map +1 -1
- package/dist/generator/ioc-container-generator.js +118 -86
- package/dist/generator/ioc-container-generator.js.map +1 -1
- package/dist/generator/type-declaration-generator.d.ts +4 -4
- package/dist/generator/type-declaration-generator.d.ts.map +1 -1
- package/dist/generator/type-declaration-generator.js +40 -44
- package/dist/generator/type-declaration-generator.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyser/project-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"project-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyser/project-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQnE,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,OAAO,EAAE,eAAe;IAM9B,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAAC,SAAS,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC;IAiBnF,OAAO,CAAC,sCAAsC;IA8C9C,OAAO,CAAC,qCAAqC;CA6C9C"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ProjectAnalyzer = void 0;
|
|
4
4
|
const class_analyzer_1 = require("./class-analyzer");
|
|
5
|
+
const factory_analyzer_1 = require("./factory-analyzer");
|
|
5
6
|
const file_discovery_1 = require("./file-discovery");
|
|
6
7
|
const errorFactory_1 = require("../errors/errorFactory");
|
|
7
8
|
const IoCError_1 = require("../errors/IoCError");
|
|
@@ -9,16 +10,18 @@ class ProjectAnalyzer {
|
|
|
9
10
|
constructor(options) {
|
|
10
11
|
this.fileDiscovery = new file_discovery_1.FileDiscovery(options.sourceDir, options.excludePatterns);
|
|
11
12
|
this.classAnalyzer = new class_analyzer_1.ClassAnalyzer(options.sourceDir, options.interfacePattern);
|
|
13
|
+
this.factoryAnalyzer = new factory_analyzer_1.FactoryAnalyzer(options.sourceDir);
|
|
12
14
|
}
|
|
13
15
|
async analyzeProject() {
|
|
14
16
|
const tsFiles = await this.fileDiscovery.findTypeScriptFiles();
|
|
15
17
|
// Analyze all files in a single batch operation for better performance
|
|
16
18
|
const allClasses = await this.classAnalyzer.analyzeFiles(tsFiles);
|
|
19
|
+
const allFactories = await this.factoryAnalyzer.analyzeFiles(tsFiles);
|
|
17
20
|
// Validate that no interface is implemented by multiple classes
|
|
18
21
|
this.validateUniqueInterfaceImplementations(allClasses);
|
|
19
22
|
// Validate that no abstract class is extended by multiple classes
|
|
20
23
|
this.validateUniqueAbstractClassExtensions(allClasses);
|
|
21
|
-
return allClasses;
|
|
24
|
+
return { classes: allClasses, factories: allFactories };
|
|
22
25
|
}
|
|
23
26
|
validateUniqueInterfaceImplementations(classes) {
|
|
24
27
|
const interfaceToClassMap = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-analyzer.js","sourceRoot":"","sources":["../../src/analyser/project-analyzer.ts"],"names":[],"mappings":";;;AACA,qDAAiD;AACjD,qDAAiD;AACjD,yDAAsD;AACtD,iDAAgD;AAGhD,MAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"project-analyzer.js","sourceRoot":"","sources":["../../src/analyser/project-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,eAAe,SAwLxB,CAAC"}
|
|
@@ -63,8 +63,8 @@ exports.generateCommand = new commander_1.Command('generate')
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
logger_1.Logger.custom('🚀', 'Starting analysis...', logger_1.Logger.getColors().cyan + logger_1.Logger.getColors().bright);
|
|
66
|
-
// Analyze the project
|
|
67
|
-
const classes = await (0, analyser_1.
|
|
66
|
+
// Analyze the project (including factories)
|
|
67
|
+
const { classes, factories } = await (0, analyser_1.analyzeProjectWithFactories)(sourceDir, {
|
|
68
68
|
sourceDir,
|
|
69
69
|
interfacePattern: mergedOptions.interface,
|
|
70
70
|
excludePatterns: mergedOptions.exclude
|
|
@@ -151,10 +151,13 @@ exports.generateCommand = new commander_1.Command('generate')
|
|
|
151
151
|
}
|
|
152
152
|
// Generate container file
|
|
153
153
|
logger_1.Logger.custom('🚀', 'Generating container...', logger_1.Logger.getColors().cyan + logger_1.Logger.getColors().bright);
|
|
154
|
-
generator_1.IoCContainerGenerator.generate(classes, outputPath, moduleGroupedClasses);
|
|
154
|
+
generator_1.IoCContainerGenerator.generate(classes, outputPath, moduleGroupedClasses, factories);
|
|
155
155
|
logger_1.Logger.success('Container generated successfully!');
|
|
156
156
|
logger_1.Logger.log(logger_1.Logger.colorizeText(` File: ${outputPath}`, logger_1.Logger.getColors().gray));
|
|
157
157
|
logger_1.Logger.log(logger_1.Logger.colorizeText(` Classes: ${classes.length}`, logger_1.Logger.getColors().gray));
|
|
158
|
+
if (factories && factories.length > 0) {
|
|
159
|
+
logger_1.Logger.log(logger_1.Logger.colorizeText(` Factories: ${factories.length}`, logger_1.Logger.getColors().gray));
|
|
160
|
+
}
|
|
158
161
|
if (mergedOptions.verbose) {
|
|
159
162
|
logger_1.Logger.newline();
|
|
160
163
|
logger_1.Logger.custom('🎉', 'You can now import and use your container:', logger_1.Logger.getColors().green + logger_1.Logger.getColors().bright);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,+BAA+B;AAC/B,2BAAgC;AAChC,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ export declare enum IoCErrorCode {
|
|
|
15
15
|
DUPLICATE_INTERFACE_IMPLEMENTATION = "IOC_1203",
|
|
16
16
|
DUPLICATE_ABSTRACT_CLASS_EXTENSION = "IOC_1204",
|
|
17
17
|
INVALID_INTERFACE_PATTERN = "IOC_1205",
|
|
18
|
+
CLASS_NAME_COLLISION = "IOC_1206",
|
|
18
19
|
GENERATION_FAILED = "IOC_1300",
|
|
19
20
|
OUTPUT_FILE_ERROR = "IOC_1301",
|
|
20
21
|
TEMPLATE_ERROR = "IOC_1302",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IoCError.d.ts","sourceRoot":"","sources":["../../src/errors/IoCError.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,YAAY;IAEtB,cAAc,aAAa;IAC3B,qBAAqB,aAAa;IAClC,kBAAkB,aAAa;IAC/B,uBAAuB,aAAa;IAGpC,oBAAoB,aAAa;IACjC,yBAAyB,aAAa;IACtC,gBAAgB,aAAa;IAG7B,eAAe,aAAa;IAC5B,gBAAgB,aAAa;IAC7B,mBAAmB,aAAa;IAChC,kCAAkC,aAAa;IAC/C,kCAAkC,aAAa;IAC/C,yBAAyB,aAAa;
|
|
1
|
+
{"version":3,"file":"IoCError.d.ts","sourceRoot":"","sources":["../../src/errors/IoCError.ts"],"names":[],"mappings":"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"}
|
package/dist/errors/IoCError.js
CHANGED
|
@@ -22,6 +22,7 @@ var IoCErrorCode;
|
|
|
22
22
|
IoCErrorCode["DUPLICATE_INTERFACE_IMPLEMENTATION"] = "IOC_1203";
|
|
23
23
|
IoCErrorCode["DUPLICATE_ABSTRACT_CLASS_EXTENSION"] = "IOC_1204";
|
|
24
24
|
IoCErrorCode["INVALID_INTERFACE_PATTERN"] = "IOC_1205";
|
|
25
|
+
IoCErrorCode["CLASS_NAME_COLLISION"] = "IOC_1206";
|
|
25
26
|
// Generation errors (1300-1399)
|
|
26
27
|
IoCErrorCode["GENERATION_FAILED"] = "IOC_1300";
|
|
27
28
|
IoCErrorCode["OUTPUT_FILE_ERROR"] = "IOC_1301";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IoCError.js","sourceRoot":"","sources":["../../src/errors/IoCError.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,
|
|
1
|
+
{"version":3,"file":"IoCError.js","sourceRoot":"","sources":["../../src/errors/IoCError.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export declare class ErrorFactory {
|
|
|
12
12
|
static circularDependency(className: string, dependencyChain: string[]): AnalysisError;
|
|
13
13
|
static duplicateInterfaceImplementation(interfaceName: string, classes: string[]): AnalysisError;
|
|
14
14
|
static duplicateAbstractClassExtension(abstractClassName: string, classes: string[]): AnalysisError;
|
|
15
|
+
static classNameCollision(className: string, filePaths: string[]): AnalysisError;
|
|
15
16
|
static generationFailed(reason: string, outputPath?: string): GenerationError;
|
|
16
17
|
static outputFileError(outputPath: string, error: string): GenerationError;
|
|
17
18
|
static moduleConfigInvalid(moduleName: string, reason: string): ValidationError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorFactory.d.ts","sourceRoot":"","sources":["../../src/errors/errorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,YAAY,EAEZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,YAAY;IAEvB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAapD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW;IAa1E,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW;IAc7F,MAAM,CAAC,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAanE,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa;IAc9D,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa;IAcxD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,aAAa;IAatF,MAAM,CAAC,gCAAgC,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,aAAa;IAahG,MAAM,CAAC,+BAA+B,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"errorFactory.d.ts","sourceRoot":"","sources":["../../src/errors/errorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,YAAY,EAEZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,YAAY;IAEvB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAapD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW;IAa1E,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW;IAc7F,MAAM,CAAC,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAanE,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa;IAc9D,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa;IAcxD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,aAAa;IAatF,MAAM,CAAC,gCAAgC,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,aAAa;IAahG,MAAM,CAAC,+BAA+B,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,aAAa;IAanG,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,aAAa;IAahF,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe;IAa7E,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe;IAc1E,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAa/E,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe;IAcjF,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe;IAatD,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe;IAatE,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe;IAcvE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe;IAchF,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,QAAQ;IAetE,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ;IAcvD;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,QAAQ;IAapF;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe;CAYzH"}
|
|
@@ -73,6 +73,12 @@ class ErrorFactory {
|
|
|
73
73
|
'Consider using interfaces with default implementations'
|
|
74
74
|
]);
|
|
75
75
|
}
|
|
76
|
+
static classNameCollision(className, filePaths) {
|
|
77
|
+
return new IoCError_1.AnalysisError(IoCError_1.IoCErrorCode.CLASS_NAME_COLLISION, `Class name collision detected for '${className}'. Multiple classes with the same name found in: ${filePaths.join(', ')}`, { className }, [
|
|
78
|
+
'Rename classes to have unique names',
|
|
79
|
+
'Consider using more specific class names that reflect their purpose'
|
|
80
|
+
]);
|
|
81
|
+
}
|
|
76
82
|
// Generation errors
|
|
77
83
|
static generationFailed(reason, outputPath) {
|
|
78
84
|
return new IoCError_1.GenerationError(IoCError_1.IoCErrorCode.GENERATION_FAILED, `Container generation failed: ${reason}`, { filePath: outputPath }, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorFactory.js","sourceRoot":"","sources":["../../src/errors/errorFactory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errorFactory.js","sourceRoot":"","sources":["../../src/errors/errorFactory.ts"],"names":[],"mappings":";;;AAAA,yCAUoB;AAEpB;;GAEG;AACH,MAAa,YAAY;IACvB,uBAAuB;IACvB,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,IAAI,sBAAW,CACpB,uBAAY,CAAC,qBAAqB,EAClC,iCAAiC,QAAQ,EAAE,EAC3C,EAAE,QAAQ,EAAE,EACZ;YACE,qDAAqD;YACrD,2DAA2D;YAC3D,8CAA8C;SAC/C,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,QAAgB,EAAE,UAAkB;QAC1D,OAAO,IAAI,sBAAW,CACpB,uBAAY,CAAC,kBAAkB,EAC/B,uCAAuC,UAAU,EAAE,EACnD,EAAE,QAAQ,EAAE,EACZ;YACE,8CAA8C;YAC9C,8CAA8C;YAC9C,wCAAwC;SACzC,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,QAAgB,EAAE,KAAU,EAAE,YAAoB;QAC7E,OAAO,IAAI,sBAAW,CACpB,uBAAY,CAAC,uBAAuB,EACpC,mCAAmC,QAAQ,eAAe,YAAY,SAAS,OAAO,KAAK,EAAE,EAC7F,EAAE,cAAc,EAAE,QAAQ,EAAE,EAC5B;YACE,QAAQ,QAAQ,gBAAgB,YAAY,EAAE;YAC9C,wDAAwD;YACxD,0CAA0C;SAC3C,CACF,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,uBAAuB,CAAC,UAAkB;QAC/C,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,oBAAoB,EACjC,+BAA+B,UAAU,EAAE,EAC3C,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxB;YACE,+CAA+C;YAC/C,6BAA6B;YAC7B,mDAAmD;SACpD,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,UAAkB;QAC5C,OAAO,IAAI,wBAAa,CACtB,uBAAY,CAAC,gBAAgB,EAC7B,kDAAkD,UAAU,EAAE,EAC9D,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxB;YACE,8CAA8C;YAC9C,mCAAmC;YACnC,yDAAyD;SAC1D,CACF,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,MAAM,CAAC,cAAc,CAAC,UAAkB;QACtC,OAAO,IAAI,wBAAa,CACtB,uBAAY,CAAC,gBAAgB,EAC7B,iDAAiD,UAAU,EAAE,EAC7D,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxB;YACE,kEAAkE;YAClE,wCAAwC;YACxC,iDAAiD;YACjD,uEAAuE;SACxE,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAAiB,EAAE,eAAyB;QACpE,OAAO,IAAI,wBAAa,CACtB,uBAAY,CAAC,mBAAmB,EAChC,0CAA0C,SAAS,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EACvF,EAAE,SAAS,EAAE,EACb;YACE,kDAAkD;YAClD,2CAA2C;YAC3C,gDAAgD;SACjD,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,gCAAgC,CAAC,aAAqB,EAAE,OAAiB;QAC9E,OAAO,IAAI,wBAAa,CACtB,uBAAY,CAAC,kCAAkC,EAC/C,iDAAiD,aAAa,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACxF,EAAE,aAAa,EAAE,EACjB;YACE,6DAA6D;YAC7D,oCAAoC;YACpC,+CAA+C;SAChD,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,+BAA+B,CAAC,iBAAyB,EAAE,OAAiB;QACjF,OAAO,IAAI,wBAAa,CACtB,uBAAY,CAAC,kCAAkC,EAC/C,8CAA8C,iBAAiB,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACzF,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAChC;YACE,uDAAuD;YACvD,gEAAgE;YAChE,wDAAwD;SACzD,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAAiB,EAAE,SAAmB;QAC9D,OAAO,IAAI,wBAAa,CACtB,uBAAY,CAAC,oBAAoB,EACjC,sCAAsC,SAAS,oDAAoD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACzH,EAAE,SAAS,EAAE,EACb;YACE,qCAAqC;YACrC,qEAAqE;SACtE,CACF,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,UAAmB;QACzD,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,iBAAiB,EAC9B,gCAAgC,MAAM,EAAE,EACxC,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxB;YACE,uCAAuC;YACvC,wCAAwC;YACxC,oCAAoC;SACrC,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,UAAkB,EAAE,KAAa;QACtD,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,iBAAiB,EAC9B,gCAAgC,UAAU,MAAM,KAAK,EAAE,EACvD,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxB;YACE,kDAAkD;YAClD,8BAA8B;YAC9B,yBAAyB;SAC1B,CACF,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,MAAM,CAAC,mBAAmB,CAAC,UAAkB,EAAE,MAAc;QAC3D,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,qBAAqB,EAClC,qCAAqC,UAAU,MAAM,MAAM,EAAE,EAC7D,EAAE,UAAU,EAAE,EACd;YACE,mCAAmC;YACnC,4CAA4C;YAC5C,2CAA2C;SAC5C,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,OAAe,EAAE,UAAkB;QAC7D,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,sBAAsB,EACnC,oBAAoB,OAAO,gBAAgB,UAAU,GAAG,EACxD,EAAE,UAAU,EAAE,EACd;YACE,iDAAiD;YACjD,oCAAoC;YACpC,wCAAwC;SACzC,CACF,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,CAAC,YAAY,CAAC,QAAgB;QAClC,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,cAAc,EAC3B,mBAAmB,QAAQ,EAAE,EAC7B,EAAE,QAAQ,EAAE,EACZ;YACE,mCAAmC;YACnC,wBAAwB;YACxB,yBAAyB;SAC1B,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,QAAgB,EAAE,KAAa;QAClD,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,eAAe,EAC5B,wBAAwB,QAAQ,MAAM,KAAK,EAAE,EAC7C,EAAE,QAAQ,EAAE,EACZ;YACE,wBAAwB;YACxB,8CAA8C;YAC9C,8BAA8B;SAC/B,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB,EAAE,KAAa;QACnD,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,gBAAgB,EAC7B,yBAAyB,QAAQ,MAAM,KAAK,EAAE,EAC9C,EAAE,QAAQ,EAAE,EACZ;YACE,6BAA6B;YAC7B,8BAA8B;YAC9B,gCAAgC;SACjC,CACF,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,MAAM,CAAC,eAAe,CAAC,OAAe,EAAE,OAAsB;QAC5D,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,gBAAgB,EAC7B,OAAO,EACP,OAAO,EACP;YACE,oCAAoC;YACpC,yBAAyB;YACzB,wCAAwC;SACzC,CACF,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,MAAM,CAAC,eAAe,CAAC,KAAY,EAAE,OAAsB;QACzD,OAAO,IAAI,mBAAQ,CACjB,uBAAY,CAAC,gBAAgB,EAC7B,qBAAqB,KAAK,CAAC,OAAO,EAAE,EACpC,wBAAa,CAAC,QAAQ,EACtB,OAAO,EACP;YACE,2CAA2C;YAC3C,oCAAoC;YACpC,sCAAsC;SACvC,CACF,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,MAAM,CAAC,gBAAgB,CAAC,YAAoB;QAC1C,OAAO,IAAI,mBAAQ,CACjB,uBAAY,CAAC,kBAAkB,EAC/B,uBAAuB,YAAY,EAAE,EACrC,wBAAa,CAAC,IAAI,EAClB,SAAS,EACT;YACE,uCAAuC;YACvC,kDAAkD;YAClD,oDAAoD;SACrD,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAY,EAAE,IAAkB,EAAE,OAAsB;QACvE,IAAI,KAAK,YAAY,mBAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,mBAAQ,CACjB,IAAI,EACJ,KAAK,CAAC,OAAO,EACb,wBAAa,CAAC,MAAM,EACpB,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAgB,EAAE,KAAU,EAAE,YAAoB,EAAE,OAAsB;QACpG,OAAO,IAAI,0BAAe,CACxB,uBAAY,CAAC,uBAAuB,EACpC,mCAAmC,QAAQ,eAAe,YAAY,SAAS,OAAO,KAAK,EAAE,EAC7F,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,EACxC;YACE,WAAW,QAAQ,gBAAgB,YAAY,EAAE;YACjD,gCAAgC;YAChC,iDAAiD;SAClD,CACF,CAAC;IACJ,CAAC;CACF;AA/SD,oCA+SC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { ClassInfo } from '../types';
|
|
1
|
+
import { ClassInfo, FactoryInfo } from '../types';
|
|
2
2
|
export declare class IoCContainerGenerator {
|
|
3
3
|
/**
|
|
4
4
|
* Generates the IoC container code for the given classes
|
|
5
5
|
* @param classes - Analyzed classes to be registered (can be flat or grouped)
|
|
6
6
|
* @param outputPath - Path where the container file will be generated
|
|
7
7
|
* @param moduleGroupedClasses - Optional: Classes grouped by modules
|
|
8
|
+
* @param factories - Optional: Factory functions to be registered
|
|
8
9
|
*/
|
|
9
|
-
static generate(classes: ClassInfo[], outputPath: string, moduleGroupedClasses?: Map<string, ClassInfo[]
|
|
10
|
+
static generate(classes: ClassInfo[], outputPath: string, moduleGroupedClasses?: Map<string, ClassInfo[]>, factories?: FactoryInfo[]): void;
|
|
10
11
|
private static generateFlatCode;
|
|
11
12
|
private static generateModularFiles;
|
|
12
13
|
private static generateModuleFile;
|
|
@@ -16,12 +17,11 @@ export declare class IoCContainerGenerator {
|
|
|
16
17
|
private static generateModuleInstantiations;
|
|
17
18
|
private static generateModuleRegistrations;
|
|
18
19
|
private static generateImports;
|
|
19
|
-
private static classNameAliases;
|
|
20
|
-
private static classNameToAliasMap;
|
|
21
20
|
/**
|
|
22
|
-
*
|
|
21
|
+
* Checks for class name collisions and throws an error if any are found
|
|
23
22
|
*/
|
|
24
|
-
private static
|
|
23
|
+
private static checkForNameCollisions;
|
|
25
24
|
private static generateRegistrations;
|
|
25
|
+
private static generateFactoryRegistrations;
|
|
26
26
|
}
|
|
27
27
|
//# sourceMappingURL=ioc-container-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ioc-container-generator.d.ts","sourceRoot":"","sources":["../../src/generator/ioc-container-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ioc-container-generator.d.ts","sourceRoot":"","sources":["../../src/generator/ioc-container-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAMlD,qBAAa,qBAAqB;IAC9B;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CACX,OAAO,EAAE,SAAS,EAAE,EACpB,UAAU,EAAE,MAAM,EAClB,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAC/C,SAAS,CAAC,EAAE,WAAW,EAAE,GAC1B,IAAI;IA4BP,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA6C/B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAyCnC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAqCjC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA0BxC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAsClC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAgBxC,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAY3C,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAwC1C,OAAO,CAAC,MAAM,CAAC,eAAe;IA4D9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAoBrC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA+CpC,OAAO,CAAC,MAAM,CAAC,4BAA4B;CA0D9C"}
|
|
@@ -4,33 +4,41 @@ exports.IoCContainerGenerator = void 0;
|
|
|
4
4
|
const path_1 = require("path");
|
|
5
5
|
const fs_1 = require("fs");
|
|
6
6
|
const type_declaration_generator_1 = require("./type-declaration-generator");
|
|
7
|
+
const errorFactory_1 = require("../errors/errorFactory");
|
|
7
8
|
class IoCContainerGenerator {
|
|
8
9
|
/**
|
|
9
10
|
* Generates the IoC container code for the given classes
|
|
10
11
|
* @param classes - Analyzed classes to be registered (can be flat or grouped)
|
|
11
12
|
* @param outputPath - Path where the container file will be generated
|
|
12
13
|
* @param moduleGroupedClasses - Optional: Classes grouped by modules
|
|
14
|
+
* @param factories - Optional: Factory functions to be registered
|
|
13
15
|
*/
|
|
14
|
-
static generate(classes, outputPath, moduleGroupedClasses) {
|
|
16
|
+
static generate(classes, outputPath, moduleGroupedClasses, factories) {
|
|
17
|
+
// Check for name collisions before generating
|
|
18
|
+
// If moduleGroupedClasses is provided, check all classes from all modules
|
|
19
|
+
const allClassesToCheck = moduleGroupedClasses && moduleGroupedClasses.size > 1
|
|
20
|
+
? Array.from(moduleGroupedClasses.values()).flat()
|
|
21
|
+
: classes;
|
|
22
|
+
this.checkForNameCollisions(allClassesToCheck);
|
|
15
23
|
// Ensure directory exists
|
|
16
24
|
const outputDir = (0, path_1.dirname)(outputPath);
|
|
17
25
|
(0, fs_1.mkdirSync)(outputDir, { recursive: true });
|
|
18
26
|
if (moduleGroupedClasses && moduleGroupedClasses.size > 1) {
|
|
19
27
|
// Generate modular code with separate files for each module
|
|
20
|
-
this.generateModularFiles(moduleGroupedClasses, outputPath);
|
|
28
|
+
this.generateModularFiles(moduleGroupedClasses, outputPath, factories);
|
|
21
29
|
}
|
|
22
30
|
else {
|
|
23
31
|
// Generate single flat file
|
|
24
|
-
const containerCode = this.generateFlatCode(classes, outputPath);
|
|
32
|
+
const containerCode = this.generateFlatCode(classes, outputPath, factories);
|
|
25
33
|
(0, fs_1.writeFileSync)(outputPath, containerCode);
|
|
26
34
|
}
|
|
27
35
|
// Generate type declarations (.d.ts file)
|
|
28
36
|
const typesPath = outputPath.endsWith('.gen.ts')
|
|
29
37
|
? outputPath.replace(/\.gen\.ts$/, '.gen.d.ts')
|
|
30
38
|
: outputPath.replace(/\.ts$/, '.d.ts');
|
|
31
|
-
type_declaration_generator_1.TypeDeclarationGenerator.generate(classes, typesPath);
|
|
39
|
+
type_declaration_generator_1.TypeDeclarationGenerator.generate(classes, typesPath, factories);
|
|
32
40
|
}
|
|
33
|
-
static generateFlatCode(classes, outputPath) {
|
|
41
|
+
static generateFlatCode(classes, outputPath, factories) {
|
|
34
42
|
// Collect all interface names to identify which dependencies should use string tokens
|
|
35
43
|
const interfaceNames = new Set();
|
|
36
44
|
classes.forEach(cls => {
|
|
@@ -49,8 +57,11 @@ class IoCContainerGenerator {
|
|
|
49
57
|
}
|
|
50
58
|
});
|
|
51
59
|
});
|
|
52
|
-
const imports = this.generateImports(classes, outputPath);
|
|
53
|
-
const
|
|
60
|
+
const imports = this.generateImports(classes, outputPath, factories);
|
|
61
|
+
const classRegistrations = this.generateRegistrations(classes, interfaceNames, '', abstractClassNames);
|
|
62
|
+
const factoryRegistrations = factories && factories.length > 0
|
|
63
|
+
? this.generateFactoryRegistrations(factories, interfaceNames, '', abstractClassNames)
|
|
64
|
+
: '';
|
|
54
65
|
const filename = outputPath.split('/').pop()?.replace(/\.ts$/, '') || 'container.gen';
|
|
55
66
|
const dtsFilename = outputPath.split('/').pop()?.replace(/\.ts$/, '.d') || 'container.gen.d';
|
|
56
67
|
return `/**
|
|
@@ -63,10 +74,10 @@ ${imports}
|
|
|
63
74
|
|
|
64
75
|
export const container = new Container<ContainerRegistry>();
|
|
65
76
|
|
|
66
|
-
${
|
|
77
|
+
${classRegistrations}${factoryRegistrations ? '\n\n' + factoryRegistrations : ''}
|
|
67
78
|
`;
|
|
68
79
|
}
|
|
69
|
-
static generateModularFiles(moduleGroupedClasses, outputPath) {
|
|
80
|
+
static generateModularFiles(moduleGroupedClasses, outputPath, factories) {
|
|
70
81
|
const outputDir = (0, path_1.dirname)(outputPath);
|
|
71
82
|
const baseFilename = (0, path_1.basename)(outputPath, '.ts');
|
|
72
83
|
const modulesDir = (0, path_1.join)(outputDir, 'modules');
|
|
@@ -192,14 +203,12 @@ ${registrations};`);
|
|
|
192
203
|
}
|
|
193
204
|
static generateModuleRegistrations(classes, interfaceNames, abstractClassNames = new Set()) {
|
|
194
205
|
return classes.map(cls => {
|
|
195
|
-
// Get the aliased class name (or original if no alias)
|
|
196
|
-
const className = this.classNameAliases.get(cls.filePath) || cls.name;
|
|
197
206
|
// Determine registration token
|
|
198
207
|
const token = cls.interfaceName
|
|
199
208
|
? `'${cls.interfaceName}'`
|
|
200
209
|
: cls.abstractClassName
|
|
201
210
|
? `'${cls.abstractClassName}'`
|
|
202
|
-
:
|
|
211
|
+
: cls.name;
|
|
203
212
|
// Generate dependencies array
|
|
204
213
|
const dependencies = cls.dependencies.length > 0
|
|
205
214
|
? `, dependencies: [${cls.dependencies.map(dep => {
|
|
@@ -211,17 +220,7 @@ ${registrations};`);
|
|
|
211
220
|
if (abstractClassNames.has(dep.name)) {
|
|
212
221
|
return `'${dep.name}'`;
|
|
213
222
|
}
|
|
214
|
-
//
|
|
215
|
-
const aliasMap = this.classNameToAliasMap.get(dep.name);
|
|
216
|
-
if (aliasMap && aliasMap.size > 0) {
|
|
217
|
-
// Resolve which specific alias to use based on import path
|
|
218
|
-
const depFilePath = this.resolveDependencyFilePath(cls.filePath, dep.importPath, dep.name);
|
|
219
|
-
const alias = this.classNameAliases.get(depFilePath);
|
|
220
|
-
if (alias) {
|
|
221
|
-
return alias;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
// No collision or couldn't resolve - use original name
|
|
223
|
+
// Use original class name
|
|
225
224
|
return dep.name;
|
|
226
225
|
}).join(', ')}]`
|
|
227
226
|
: '';
|
|
@@ -229,22 +228,14 @@ ${registrations};`);
|
|
|
229
228
|
const lifecycle = cls.scope === 'singleton'
|
|
230
229
|
? 'Lifecycle.Singleton'
|
|
231
230
|
: 'Lifecycle.Transient';
|
|
232
|
-
return ` .register(${token}, { useClass: ${
|
|
231
|
+
return ` .register(${token}, { useClass: ${cls.name}${dependencies}, lifecycle: ${lifecycle} })`;
|
|
233
232
|
}).join('\n');
|
|
234
233
|
}
|
|
235
|
-
static generateImports(classes, outputPath) {
|
|
234
|
+
static generateImports(classes, outputPath, factories) {
|
|
236
235
|
const outputDir = (0, path_1.dirname)(outputPath);
|
|
237
|
-
// Detect name collisions and create aliases
|
|
238
|
-
const nameToClasses = new Map();
|
|
239
|
-
classes.forEach(cls => {
|
|
240
|
-
if (!nameToClasses.has(cls.name)) {
|
|
241
|
-
nameToClasses.set(cls.name, []);
|
|
242
|
-
}
|
|
243
|
-
nameToClasses.get(cls.name).push(cls);
|
|
244
|
-
});
|
|
245
236
|
const importStatements = [];
|
|
246
|
-
const
|
|
247
|
-
|
|
237
|
+
const importMap = new Map();
|
|
238
|
+
// Collect class imports
|
|
248
239
|
classes.forEach(cls => {
|
|
249
240
|
// Calculate relative path from output file to class file
|
|
250
241
|
let relativePath = (0, path_1.relative)(outputDir, cls.filePath);
|
|
@@ -256,51 +247,58 @@ ${registrations};`);
|
|
|
256
247
|
}
|
|
257
248
|
// Use forward slashes for imports
|
|
258
249
|
relativePath = relativePath.replace(/\\/g, '/');
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
if (classesWithSameName.length > 1) {
|
|
262
|
-
// Name collision detected - create an alias
|
|
263
|
-
// Use the parent directory name as prefix (e.g., user/UpdateItemUseCase -> UserUpdateItemUseCase)
|
|
264
|
-
const pathParts = cls.filePath.split('/');
|
|
265
|
-
const parentDir = pathParts[pathParts.length - 2] || 'Item';
|
|
266
|
-
const alias = `${parentDir.charAt(0).toUpperCase() + parentDir.slice(1)}${cls.name}`;
|
|
267
|
-
classNameAliases.set(cls.filePath, alias);
|
|
268
|
-
// Track alias by class name too
|
|
269
|
-
if (!classNameToAliasMap.has(cls.name)) {
|
|
270
|
-
classNameToAliasMap.set(cls.name, new Map());
|
|
271
|
-
}
|
|
272
|
-
classNameToAliasMap.get(cls.name).set(cls.filePath, alias);
|
|
273
|
-
importStatements.push(`import { ${cls.name} as ${alias} } from '${relativePath}';`);
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
// No collision - use regular import
|
|
277
|
-
classNameAliases.set(cls.filePath, cls.name);
|
|
278
|
-
importStatements.push(`import { ${cls.name} } from '${relativePath}';`);
|
|
250
|
+
if (!importMap.has(relativePath)) {
|
|
251
|
+
importMap.set(relativePath, new Set());
|
|
279
252
|
}
|
|
253
|
+
importMap.get(relativePath).add(cls.name);
|
|
280
254
|
});
|
|
281
|
-
//
|
|
282
|
-
|
|
283
|
-
|
|
255
|
+
// Collect factory imports
|
|
256
|
+
if (factories) {
|
|
257
|
+
factories.forEach(factory => {
|
|
258
|
+
// Calculate relative path from output file to factory file
|
|
259
|
+
let relativePath = (0, path_1.relative)(outputDir, factory.filePath);
|
|
260
|
+
// Remove extension (.ts)
|
|
261
|
+
relativePath = relativePath.replace(/\.ts$/, '');
|
|
262
|
+
// Add ./ if it doesn't start with . or /
|
|
263
|
+
if (!relativePath.startsWith('.')) {
|
|
264
|
+
relativePath = `./${relativePath}`;
|
|
265
|
+
}
|
|
266
|
+
// Use forward slashes for imports
|
|
267
|
+
relativePath = relativePath.replace(/\\/g, '/');
|
|
268
|
+
if (!importMap.has(relativePath)) {
|
|
269
|
+
importMap.set(relativePath, new Set());
|
|
270
|
+
}
|
|
271
|
+
importMap.get(relativePath).add(factory.name);
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
// Generate import statements
|
|
275
|
+
for (const [importPath, names] of importMap.entries()) {
|
|
276
|
+
const namesArray = Array.from(names).sort();
|
|
277
|
+
importStatements.push(`import { ${namesArray.join(', ')} } from '${importPath}';`);
|
|
278
|
+
}
|
|
284
279
|
return importStatements.join('\n');
|
|
285
280
|
}
|
|
286
281
|
/**
|
|
287
|
-
*
|
|
282
|
+
* Checks for class name collisions and throws an error if any are found
|
|
288
283
|
*/
|
|
289
|
-
static
|
|
290
|
-
const
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
284
|
+
static checkForNameCollisions(classes) {
|
|
285
|
+
const nameToClasses = new Map();
|
|
286
|
+
classes.forEach(cls => {
|
|
287
|
+
if (!nameToClasses.has(cls.name)) {
|
|
288
|
+
nameToClasses.set(cls.name, []);
|
|
289
|
+
}
|
|
290
|
+
nameToClasses.get(cls.name).push(cls);
|
|
291
|
+
});
|
|
292
|
+
// Check for collisions
|
|
293
|
+
for (const [className, classesWithSameName] of nameToClasses.entries()) {
|
|
294
|
+
if (classesWithSameName.length > 1) {
|
|
295
|
+
const filePaths = classesWithSameName.map(cls => cls.filePath);
|
|
296
|
+
throw errorFactory_1.ErrorFactory.classNameCollision(className, filePaths);
|
|
297
|
+
}
|
|
295
298
|
}
|
|
296
|
-
// Add .ts extension and normalize
|
|
297
|
-
const withExtension = `${resolvedPath}.ts`;
|
|
298
|
-
return withExtension;
|
|
299
299
|
}
|
|
300
300
|
static generateRegistrations(classes, interfaceNames, indent = '', abstractClassNames = new Set()) {
|
|
301
301
|
return classes.map(cls => {
|
|
302
|
-
// Get the aliased class name (or original if no alias)
|
|
303
|
-
const className = this.classNameAliases.get(cls.filePath) || cls.name;
|
|
304
302
|
// Determine registration token:
|
|
305
303
|
// - If implements interface, use string token of interface name
|
|
306
304
|
// - If extends abstract class, use string token of abstract class name
|
|
@@ -309,7 +307,7 @@ ${registrations};`);
|
|
|
309
307
|
? `'${cls.interfaceName}'`
|
|
310
308
|
: cls.abstractClassName
|
|
311
309
|
? `'${cls.abstractClassName}'`
|
|
312
|
-
:
|
|
310
|
+
: cls.name;
|
|
313
311
|
// Generate dependencies array
|
|
314
312
|
const dependencies = cls.dependencies.length > 0
|
|
315
313
|
? `\n${indent} dependencies: [${cls.dependencies.map(dep => {
|
|
@@ -321,18 +319,7 @@ ${registrations};`);
|
|
|
321
319
|
if (abstractClassNames.has(dep.name)) {
|
|
322
320
|
return `'${dep.name}'`;
|
|
323
321
|
}
|
|
324
|
-
//
|
|
325
|
-
const aliasMap = this.classNameToAliasMap.get(dep.name);
|
|
326
|
-
if (aliasMap && aliasMap.size > 0) {
|
|
327
|
-
// We need to resolve which specific alias to use based on import path
|
|
328
|
-
// Try to find the matching class by resolving the import path
|
|
329
|
-
const depFilePath = this.resolveDependencyFilePath(cls.filePath, dep.importPath, dep.name);
|
|
330
|
-
const alias = this.classNameAliases.get(depFilePath);
|
|
331
|
-
if (alias) {
|
|
332
|
-
return alias;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
// No collision or couldn't resolve - use original name
|
|
322
|
+
// Use original class name
|
|
336
323
|
return dep.name;
|
|
337
324
|
}).join(', ')}],`
|
|
338
325
|
: '';
|
|
@@ -341,13 +328,58 @@ ${registrations};`);
|
|
|
341
328
|
? 'Lifecycle.Singleton'
|
|
342
329
|
: 'Lifecycle.Transient';
|
|
343
330
|
return `${indent}container.register(${token}, {
|
|
344
|
-
${indent} useClass: ${
|
|
331
|
+
${indent} useClass: ${cls.name},${dependencies}
|
|
332
|
+
${indent} lifecycle: ${lifecycle},
|
|
333
|
+
${indent}});`;
|
|
334
|
+
}).join('\n\n');
|
|
335
|
+
}
|
|
336
|
+
static generateFactoryRegistrations(factories, interfaceNames, indent = '', abstractClassNames = new Set()) {
|
|
337
|
+
return factories.map(factory => {
|
|
338
|
+
// Use token if provided, otherwise use function name directly
|
|
339
|
+
const token = factory.token
|
|
340
|
+
? `'${factory.token}'`
|
|
341
|
+
: `'${factory.name}'`;
|
|
342
|
+
// Generate dependencies array
|
|
343
|
+
const dependencies = factory.dependencies.length > 0
|
|
344
|
+
? `\n${indent} dependencies: [${factory.dependencies.map(dep => {
|
|
345
|
+
// If dependency is an interface, use string token
|
|
346
|
+
if (interfaceNames.has(dep.name)) {
|
|
347
|
+
return `'${dep.name}'`;
|
|
348
|
+
}
|
|
349
|
+
// If dependency is an abstract class, use string token
|
|
350
|
+
if (abstractClassNames.has(dep.name)) {
|
|
351
|
+
return `'${dep.name}'`;
|
|
352
|
+
}
|
|
353
|
+
// Use original class name
|
|
354
|
+
return dep.name;
|
|
355
|
+
}).join(', ')}],`
|
|
356
|
+
: '';
|
|
357
|
+
// Determine lifecycle enum value
|
|
358
|
+
const lifecycle = factory.scope === 'singleton'
|
|
359
|
+
? 'Lifecycle.Singleton'
|
|
360
|
+
: 'Lifecycle.Transient';
|
|
361
|
+
// Generate factory function - wrap if context object pattern is used
|
|
362
|
+
let factoryFunction;
|
|
363
|
+
if (factory.useContextObject && factory.contextObjectProperties) {
|
|
364
|
+
// Generate wrapper function that passes dependencies as context object
|
|
365
|
+
const contextProps = factory.contextObjectProperties.map(prop => prop.name).join(', ');
|
|
366
|
+
const contextObject = factory.contextObjectProperties.map(prop => `${prop.name}`).join(', ');
|
|
367
|
+
const depParams = factory.dependencies.map((_, index) => {
|
|
368
|
+
const propName = factory.contextObjectProperties?.[index]?.name || `dep${index}`;
|
|
369
|
+
return propName;
|
|
370
|
+
}).join(', ');
|
|
371
|
+
factoryFunction = `(${depParams}) => ${factory.name}({ ${contextObject} })`;
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
// Use factory directly (existing behavior)
|
|
375
|
+
factoryFunction = factory.name;
|
|
376
|
+
}
|
|
377
|
+
return `${indent}container.register(${token}, {
|
|
378
|
+
${indent} useFactory: ${factoryFunction},${dependencies}
|
|
345
379
|
${indent} lifecycle: ${lifecycle},
|
|
346
380
|
${indent}});`;
|
|
347
381
|
}).join('\n\n');
|
|
348
382
|
}
|
|
349
383
|
}
|
|
350
384
|
exports.IoCContainerGenerator = IoCContainerGenerator;
|
|
351
|
-
IoCContainerGenerator.classNameAliases = new Map(); // filePath -> alias
|
|
352
|
-
IoCContainerGenerator.classNameToAliasMap = new Map(); // className -> (filePath -> alias)
|
|
353
385
|
//# sourceMappingURL=ioc-container-generator.js.map
|