@notjustcoders/ioc-arise 1.1.30 → 1.1.32
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/README.md +58 -1
- package/dist/analyser/ast-parser.d.ts +8 -0
- package/dist/analyser/ast-parser.d.ts.map +1 -1
- package/dist/analyser/ast-parser.js +45 -1
- package/dist/analyser/ast-parser.js.map +1 -1
- package/dist/analyser/class-analyzer.d.ts.map +1 -1
- package/dist/analyser/class-analyzer.js +11 -1
- package/dist/analyser/class-analyzer.js.map +1 -1
- package/dist/analyser/external-types.test.d.ts +10 -0
- package/dist/analyser/external-types.test.d.ts.map +1 -0
- package/dist/analyser/external-types.test.js +222 -0
- package/dist/analyser/external-types.test.js.map +1 -0
- package/dist/analyser/factory-analyzer.d.ts.map +1 -1
- package/dist/analyser/factory-analyzer.js +16 -4
- package/dist/analyser/factory-analyzer.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +13 -3
- package/dist/commands/generate.js.map +1 -1
- package/dist/generator/ioc-container-generator.d.ts +1 -1
- package/dist/generator/ioc-container-generator.d.ts.map +1 -1
- package/dist/generator/ioc-container-generator.js +44 -37
- package/dist/generator/ioc-container-generator.js.map +1 -1
- package/dist/utils/configManager.d.ts +1 -0
- package/dist/utils/configManager.d.ts.map +1 -1
- package/dist/utils/configManager.js +1 -0
- package/dist/utils/configManager.js.map +1 -1
- package/dist/utils/generatedCodeValidator.d.ts +10 -0
- package/dist/utils/generatedCodeValidator.d.ts.map +1 -0
- package/dist/utils/generatedCodeValidator.js +83 -0
- package/dist/utils/generatedCodeValidator.js.map +1 -0
- package/package.json +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configManager.js","sourceRoot":"","sources":["../../src/utils/configManager.ts"],"names":[],"mappings":";;;AAAA,2BAA8C;AAC9C,+BAAwC;AACxC,yDAAsD;AACtD,iDAAgD;AAChD,qCAAkC;
|
|
1
|
+
{"version":3,"file":"configManager.js","sourceRoot":"","sources":["../../src/utils/configManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class GeneratedCodeValidator {
|
|
2
|
+
/**
|
|
3
|
+
* Validates generated TypeScript files for errors
|
|
4
|
+
* @param filePaths - Array of absolute paths to generated files
|
|
5
|
+
* @param sourceDir - Source directory of the project for context
|
|
6
|
+
*/
|
|
7
|
+
static validate(filePaths: string[], sourceDir: string): void;
|
|
8
|
+
private static reportErrors;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=generatedCodeValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatedCodeValidator.d.ts","sourceRoot":"","sources":["../../src/utils/generatedCodeValidator.ts"],"names":[],"mappings":"AAIA,qBAAa,sBAAsB;IACjC;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAiD7D,OAAO,CAAC,MAAM,CAAC,YAAY;CAsC5B"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeneratedCodeValidator = void 0;
|
|
4
|
+
const ts_morph_1 = require("ts-morph");
|
|
5
|
+
const logger_1 = require("./logger");
|
|
6
|
+
class GeneratedCodeValidator {
|
|
7
|
+
/**
|
|
8
|
+
* Validates generated TypeScript files for errors
|
|
9
|
+
* @param filePaths - Array of absolute paths to generated files
|
|
10
|
+
* @param sourceDir - Source directory of the project for context
|
|
11
|
+
*/
|
|
12
|
+
static validate(filePaths, sourceDir) {
|
|
13
|
+
if (filePaths.length === 0)
|
|
14
|
+
return;
|
|
15
|
+
logger_1.Logger.custom("🔍", "Validating generated code...", logger_1.Logger.getColors().cyan + logger_1.Logger.getColors().bright);
|
|
16
|
+
const project = new ts_morph_1.Project({
|
|
17
|
+
compilerOptions: {
|
|
18
|
+
noEmit: true,
|
|
19
|
+
skipLibCheck: true,
|
|
20
|
+
allowJs: true,
|
|
21
|
+
esModuleInterop: true,
|
|
22
|
+
experimentalDecorators: true,
|
|
23
|
+
emitDecoratorMetadata: true,
|
|
24
|
+
moduleResolution: 2, // NodeNext
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
// Add source files from the project for context (to resolve imports)
|
|
28
|
+
logger_1.Logger.debug(`Adding context from: ${sourceDir}/**/*.ts`);
|
|
29
|
+
project.addSourceFilesAtPaths([
|
|
30
|
+
`${sourceDir}/**/*.ts`,
|
|
31
|
+
`!${sourceDir}/**/*.gen.ts`, // Exclude already generated files
|
|
32
|
+
`!**/node_modules/**`
|
|
33
|
+
]);
|
|
34
|
+
// Add exactly the generated files we want to check
|
|
35
|
+
for (const filePath of filePaths) {
|
|
36
|
+
if (filePath.endsWith('.d.ts')) {
|
|
37
|
+
logger_1.Logger.debug(`Skipping .d.ts file: ${filePath}`);
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
logger_1.Logger.debug(`Validating: ${filePath}`);
|
|
41
|
+
project.addSourceFileAtPath(filePath);
|
|
42
|
+
}
|
|
43
|
+
// Get all diagnostics
|
|
44
|
+
const diagnostics = project.getPreEmitDiagnostics();
|
|
45
|
+
if (diagnostics.length > 0) {
|
|
46
|
+
this.reportErrors(diagnostics, filePaths);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
logger_1.Logger.success("No TypeScript errors found in generated files!");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
static reportErrors(diagnostics, generatedFiles) {
|
|
53
|
+
const generatedFilesSet = new Set(generatedFiles);
|
|
54
|
+
// Filter diagnostics to only show those in our generated files
|
|
55
|
+
const relevantDiagnostics = diagnostics.filter(d => {
|
|
56
|
+
const sourceFile = d.getSourceFile();
|
|
57
|
+
return sourceFile && generatedFilesSet.has(sourceFile.getFilePath());
|
|
58
|
+
});
|
|
59
|
+
if (relevantDiagnostics.length === 0) {
|
|
60
|
+
logger_1.Logger.success("No TypeScript errors found in generated files!");
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
logger_1.Logger.error(`Found ${relevantDiagnostics.length} TypeScript error(s) in generated files:`);
|
|
64
|
+
relevantDiagnostics.forEach((diagnostic) => {
|
|
65
|
+
const message = diagnostic.getMessageText();
|
|
66
|
+
const sourceFile = diagnostic.getSourceFile();
|
|
67
|
+
const line = diagnostic.getLineNumber();
|
|
68
|
+
const fileName = sourceFile ? sourceFile.getBaseName() : "unknown";
|
|
69
|
+
const filePath = sourceFile ? sourceFile.getFilePath() : "unknown";
|
|
70
|
+
const formattedMessage = typeof message === "string"
|
|
71
|
+
? message
|
|
72
|
+
: message.getMessageText();
|
|
73
|
+
logger_1.Logger.log(`${logger_1.Logger.getColors().red}❌ ${fileName}:${line}${logger_1.Logger.getColors().reset} - ${formattedMessage}`);
|
|
74
|
+
logger_1.Logger.log(logger_1.Logger.colorizeText(` at ${filePath}:${line}`, logger_1.Logger.getColors().gray));
|
|
75
|
+
});
|
|
76
|
+
// We don't necessarily want to exit here if we want the user to see the files,
|
|
77
|
+
// but typically if the generated code is invalid, it's a failure.
|
|
78
|
+
// For now, let's just log it. If the user wants it to fail, we can throw.
|
|
79
|
+
throw new Error("Generated code has TypeScript errors.");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.GeneratedCodeValidator = GeneratedCodeValidator;
|
|
83
|
+
//# sourceMappingURL=generatedCodeValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatedCodeValidator.js","sourceRoot":"","sources":["../../src/utils/generatedCodeValidator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@notjustcoders/ioc-arise",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.32",
|
|
4
4
|
"description": "Arise type-safe IoC containers from your code. Zero overhead, zero coupling.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"commander": "^11.1.0",
|
|
47
47
|
"glob": "^10.3.10",
|
|
48
48
|
"minimatch": "^10.0.1",
|
|
49
|
+
"ts-morph": "^27.0.2",
|
|
49
50
|
"@notjustcoders/di-container": "1.0.7"
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|
|
@@ -54,7 +55,8 @@
|
|
|
54
55
|
"@vitest/coverage-v8": "^1.0.0",
|
|
55
56
|
"ts-node": "^10.9.0",
|
|
56
57
|
"typescript": "^5.3.0",
|
|
57
|
-
"vitest": "^1.0.0"
|
|
58
|
+
"vitest": "^1.0.0",
|
|
59
|
+
"@word-tracker/sync": "0.0.1"
|
|
58
60
|
},
|
|
59
61
|
"scripts": {
|
|
60
62
|
"build": "tsc",
|
|
@@ -81,6 +83,8 @@
|
|
|
81
83
|
"test15:generate": "npm run build && cd examples/instance-factories-example && node ../../dist/index.js generate",
|
|
82
84
|
"test16:generate": "npm run build && cd examples/instance-factory-with-context-example && node ../../dist/index.js generate",
|
|
83
85
|
"test17:generate": "npm run build && cd examples/instance-factory-separate-params-example && node ../../dist/index.js generate",
|
|
84
|
-
"test18:generate": "npm run build && cd examples/instance-factories-modules-example && node ../../dist/index.js generate"
|
|
86
|
+
"test18:generate": "npm run build && cd examples/instance-factories-modules-example && node ../../dist/index.js generate",
|
|
87
|
+
"test19:generate": "npm run build && cd examples/word-tracker && node ../../dist/index.js generate",
|
|
88
|
+
"test20:generate": "npm run build && cd examples/external-types-example && node ../../dist/index.js generate"
|
|
85
89
|
}
|
|
86
90
|
}
|