@hexaijs/plugin-contracts-generator 0.2.0 → 0.2.2
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 +33 -25
- package/dist/ast-utils.d.ts +6 -0
- package/dist/ast-utils.d.ts.map +1 -0
- package/dist/ast-utils.js +73 -0
- package/dist/ast-utils.js.map +1 -0
- package/dist/class-analyzer.d.ts +16 -0
- package/dist/class-analyzer.d.ts.map +1 -0
- package/dist/class-analyzer.js +114 -0
- package/dist/class-analyzer.js.map +1 -0
- package/dist/cli.d.ts +32 -1
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +226 -2480
- package/dist/cli.js.map +1 -1
- package/dist/config-loader.d.ts +24 -0
- package/dist/config-loader.d.ts.map +1 -0
- package/dist/config-loader.js +126 -0
- package/dist/config-loader.js.map +1 -0
- package/dist/context-config.d.ts +44 -0
- package/dist/context-config.d.ts.map +1 -0
- package/dist/context-config.js +140 -0
- package/dist/context-config.js.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +2 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/types.d.ts +182 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +49 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/errors.d.ts +72 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +112 -0
- package/dist/errors.js.map +1 -0
- package/dist/file-copier.d.ts +84 -0
- package/dist/file-copier.d.ts.map +1 -0
- package/dist/file-copier.js +721 -0
- package/dist/file-copier.js.map +1 -0
- package/dist/file-graph-resolver.d.ts +42 -0
- package/dist/file-graph-resolver.d.ts.map +1 -0
- package/dist/file-graph-resolver.js +138 -0
- package/dist/file-graph-resolver.js.map +1 -0
- package/dist/file-system.d.ts +26 -0
- package/dist/file-system.d.ts.map +1 -0
- package/dist/file-system.js +30 -0
- package/dist/file-system.js.map +1 -0
- package/dist/hexai-plugin.d.ts +16 -0
- package/dist/hexai-plugin.d.ts.map +1 -0
- package/dist/hexai-plugin.js +56 -0
- package/dist/hexai-plugin.js.map +1 -0
- package/dist/import-analyzer.d.ts +6 -0
- package/dist/import-analyzer.d.ts.map +1 -0
- package/dist/import-analyzer.js +39 -0
- package/dist/import-analyzer.js.map +1 -0
- package/dist/index.d.ts +39 -531
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -2739
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +21 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +43 -0
- package/dist/logger.js.map +1 -0
- package/dist/parser.d.ts +32 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +202 -0
- package/dist/parser.js.map +1 -0
- package/dist/pipeline.d.ts +57 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +148 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/reexport-generator.d.ts +81 -0
- package/dist/reexport-generator.d.ts.map +1 -0
- package/dist/reexport-generator.js +171 -0
- package/dist/reexport-generator.js.map +1 -0
- package/dist/registry-generator.d.ts +27 -0
- package/dist/registry-generator.d.ts.map +1 -0
- package/dist/registry-generator.js +104 -0
- package/dist/registry-generator.js.map +1 -0
- package/dist/runtime/index.d.ts +2 -23
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +1 -38
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/message-registry.d.ts +23 -0
- package/dist/runtime/message-registry.d.ts.map +1 -0
- package/dist/runtime/message-registry.js +35 -0
- package/dist/runtime/message-registry.js.map +1 -0
- package/dist/scanner.d.ts +21 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +49 -0
- package/dist/scanner.js.map +1 -0
- package/dist/test-utils.d.ts +23 -0
- package/dist/test-utils.d.ts.map +1 -0
- package/dist/test-utils.js +188 -0
- package/dist/test-utils.js.map +1 -0
- package/package.json +69 -64
- package/dist/cli-CPg-O4OY.d.ts +0 -214
- package/dist/decorators/index.d.ts +0 -144
- package/dist/decorators/index.js +0 -28
- package/dist/decorators/index.js.map +0 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { resolve, dirname, basename, relative } from "path";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
import { ConfigLoadError } from "./errors.js";
|
|
4
|
+
import { nodeFileSystem } from "./file-system.js";
|
|
5
|
+
import { mergeDecoratorNames } from "./domain/index.js";
|
|
6
|
+
import { ContextConfig } from "./context-config.js";
|
|
7
|
+
const SUPPORTED_GLOB_PARTS_COUNT = 2;
|
|
8
|
+
export async function resolveContextEntries(entries, configDir, fs = nodeFileSystem) {
|
|
9
|
+
const contexts = [];
|
|
10
|
+
for (let i = 0; i < entries.length; i++) {
|
|
11
|
+
const item = entries[i];
|
|
12
|
+
if (typeof item === "string") {
|
|
13
|
+
const resolved = await resolveStringEntry(item, configDir, fs);
|
|
14
|
+
contexts.push(...resolved);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
const contextConfig = await createObjectContext(item, i, configDir, fs);
|
|
18
|
+
contexts.push(contextConfig);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return contexts;
|
|
22
|
+
}
|
|
23
|
+
async function resolveStringEntry(contextPath, configDir, fs) {
|
|
24
|
+
if (contextPath.includes("*")) {
|
|
25
|
+
return expandGlobPattern(contextPath, configDir, fs);
|
|
26
|
+
}
|
|
27
|
+
const basePath = resolve(configDir, contextPath);
|
|
28
|
+
const name = basename(basePath);
|
|
29
|
+
return [await ContextConfig.create({ name, path: contextPath }, configDir, fs)];
|
|
30
|
+
}
|
|
31
|
+
async function expandGlobPattern(pattern, configDir, fs) {
|
|
32
|
+
const packageDirs = await matchGlobPattern(pattern, configDir, fs);
|
|
33
|
+
return Promise.all(packageDirs.map((dir) => {
|
|
34
|
+
const name = basename(dir);
|
|
35
|
+
const relativePath = relative(configDir, dir);
|
|
36
|
+
return ContextConfig.create({ name, path: relativePath }, configDir, fs);
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
async function createObjectContext(ctx, index, configDir, fs) {
|
|
40
|
+
if (!ctx.name || typeof ctx.name !== "string") {
|
|
41
|
+
throw new ConfigLoadError(`Invalid context at index ${index}: missing 'name'`);
|
|
42
|
+
}
|
|
43
|
+
if (!ctx.path || typeof ctx.path !== "string") {
|
|
44
|
+
throw new ConfigLoadError(`Invalid context at index ${index}: missing 'path'`);
|
|
45
|
+
}
|
|
46
|
+
return ContextConfig.create(ctx, configDir, fs);
|
|
47
|
+
}
|
|
48
|
+
async function matchGlobPattern(pattern, configDir, fs) {
|
|
49
|
+
const globParts = pattern.split("*");
|
|
50
|
+
if (globParts.length !== SUPPORTED_GLOB_PARTS_COUNT) {
|
|
51
|
+
throw new ConfigLoadError(`Invalid glob pattern: "${pattern}". Only single wildcard patterns like "packages/*" are supported.`);
|
|
52
|
+
}
|
|
53
|
+
const [prefix, suffix] = globParts;
|
|
54
|
+
const baseDir = resolve(configDir, prefix);
|
|
55
|
+
if (!await fs.exists(baseDir)) {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
const entries = await fs.readdir(baseDir);
|
|
59
|
+
const matchedDirs = [];
|
|
60
|
+
for (const entry of entries) {
|
|
61
|
+
const fullPath = resolve(baseDir, entry);
|
|
62
|
+
const stats = await fs.stat(fullPath);
|
|
63
|
+
if (!stats.isDirectory()) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (suffix) {
|
|
67
|
+
const suffixPath = resolve(fullPath, suffix.replace(/^\//, ""));
|
|
68
|
+
if (await fs.exists(suffixPath)) {
|
|
69
|
+
matchedDirs.push(fullPath);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
matchedDirs.push(fullPath);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return matchedDirs.sort();
|
|
77
|
+
}
|
|
78
|
+
export class ConfigLoader {
|
|
79
|
+
fs;
|
|
80
|
+
constructor(options = {}) {
|
|
81
|
+
this.fs = options.fileSystem ?? nodeFileSystem;
|
|
82
|
+
}
|
|
83
|
+
async load(configPath) {
|
|
84
|
+
const absolutePath = resolve(configPath);
|
|
85
|
+
const config = await this.loadTypeScriptConfig(absolutePath);
|
|
86
|
+
return this.extractContractsConfig(config, dirname(absolutePath));
|
|
87
|
+
}
|
|
88
|
+
async loadTypeScriptConfig(absolutePath) {
|
|
89
|
+
const source = await this.fs.readFile(absolutePath);
|
|
90
|
+
const result = ts.transpileModule(source, {
|
|
91
|
+
compilerOptions: {
|
|
92
|
+
module: ts.ModuleKind.CommonJS,
|
|
93
|
+
target: ts.ScriptTarget.ES2020,
|
|
94
|
+
esModuleInterop: true,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
const exports = {};
|
|
98
|
+
const moduleWrapper = new Function("exports", result.outputText);
|
|
99
|
+
moduleWrapper(exports);
|
|
100
|
+
return exports.default ?? exports;
|
|
101
|
+
}
|
|
102
|
+
async extractContractsConfig(config, configDir) {
|
|
103
|
+
const contracts = config.contracts;
|
|
104
|
+
if (!contracts) {
|
|
105
|
+
throw new ConfigLoadError("Missing 'contracts' section in config");
|
|
106
|
+
}
|
|
107
|
+
if (!contracts.contexts || !Array.isArray(contracts.contexts)) {
|
|
108
|
+
throw new ConfigLoadError("Missing 'contracts.contexts' in config");
|
|
109
|
+
}
|
|
110
|
+
const contexts = await resolveContextEntries(contracts.contexts, configDir, this.fs);
|
|
111
|
+
if (contexts.length === 0) {
|
|
112
|
+
throw new ConfigLoadError("No contexts found from 'contexts'");
|
|
113
|
+
}
|
|
114
|
+
const decoratorNames = mergeDecoratorNames(contracts.decoratorNames);
|
|
115
|
+
return {
|
|
116
|
+
contexts,
|
|
117
|
+
pathAliasRewrites: contracts.pathAliasRewrites,
|
|
118
|
+
externalDependencies: contracts.externalDependencies,
|
|
119
|
+
decoratorNames,
|
|
120
|
+
responseNamingConventions: contracts.responseNamingConventions,
|
|
121
|
+
removeDecorators: contracts.removeDecorators ?? true,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export { ConfigLoadError } from "./errors.js";
|
|
126
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { FileSystem } from "./file-system.js";
|
|
2
|
+
import type { ResponseNamingConvention } from "./domain/types.js";
|
|
3
|
+
export interface InputContextConfig {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly path: string;
|
|
6
|
+
readonly sourceDir?: string;
|
|
7
|
+
readonly tsconfigPath?: string;
|
|
8
|
+
readonly responseNamingConventions?: readonly ResponseNamingConvention[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Encapsulates context configuration with path resolution capabilities.
|
|
12
|
+
* Created via factory method to ensure proper initialization.
|
|
13
|
+
*/
|
|
14
|
+
export declare class ContextConfig {
|
|
15
|
+
private readonly fs;
|
|
16
|
+
private readonly tsconfig;
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly sourceDir: string;
|
|
19
|
+
readonly responseNamingConventions?: readonly ResponseNamingConvention[];
|
|
20
|
+
private constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Factory method to create ContextConfig with properly loaded tsconfig.
|
|
23
|
+
*/
|
|
24
|
+
static create(input: InputContextConfig, configDir: string, fs?: FileSystem): Promise<ContextConfig>;
|
|
25
|
+
private static loadTsconfig;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a ContextConfig without async loading (for cases where tsconfig is not needed
|
|
28
|
+
* or already handled externally).
|
|
29
|
+
*/
|
|
30
|
+
static createSync(name: string, sourceDir: string, fs?: FileSystem, responseNamingConventions?: readonly ResponseNamingConvention[]): ContextConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Resolves a module specifier (path alias) to actual file path.
|
|
33
|
+
* Only handles non-relative imports (path aliases).
|
|
34
|
+
*
|
|
35
|
+
* @param moduleSpecifier - The import path to resolve (e.g., "@/utils/helper")
|
|
36
|
+
* @returns Object with resolvedPath (null if external) and isExternal flag
|
|
37
|
+
*/
|
|
38
|
+
resolvePath(moduleSpecifier: string): Promise<{
|
|
39
|
+
resolvedPath: string | null;
|
|
40
|
+
isExternal: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
private tryResolveWithExtensions;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=context-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-config.d.ts","sourceRoot":"","sources":["../src/context-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AA0ElE,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,yBAAyB,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAC5E;AAED;;;GAGG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAEpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,yBAAyB,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAEzE,OAAO,eAYN;IAED;;OAEG;IACH,OAAa,MAAM,CACf,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAE,MAAM,EACjB,EAAE,GAAE,UAA2B,GAChC,OAAO,CAAC,aAAa,CAAC,CAmBxB;mBAEoB,YAAY;IAYjC;;;OAGG;IACH,MAAM,CAAC,UAAU,CACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,EAAE,GAAE,UAA2B,EAC/B,yBAAyB,CAAC,EAAE,SAAS,wBAAwB,EAAE,GAChE,aAAa,CAQf;IAED;;;;;;OAMG;IACG,WAAW,CACb,eAAe,EAAE,MAAM,GACxB,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAc/D;YAEa,wBAAwB;CAazC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
import { nodeFileSystem } from "./file-system.js";
|
|
4
|
+
const TYPESCRIPT_EXTENSIONS = [".ts", ".tsx", ".d.ts"];
|
|
5
|
+
const INDEX_FILE = "index.ts";
|
|
6
|
+
/**
|
|
7
|
+
* Internal class for handling tsconfig path alias resolution.
|
|
8
|
+
* Uses Null Object pattern - NONE instance handles missing tsconfig case.
|
|
9
|
+
*/
|
|
10
|
+
class Tsconfig {
|
|
11
|
+
paths;
|
|
12
|
+
static NONE = new Tsconfig(new Map());
|
|
13
|
+
constructor(paths) {
|
|
14
|
+
this.paths = paths;
|
|
15
|
+
}
|
|
16
|
+
static async load(tsconfigPath, fs) {
|
|
17
|
+
const absolutePath = path.resolve(tsconfigPath);
|
|
18
|
+
const configDir = path.dirname(absolutePath);
|
|
19
|
+
const content = await fs.readFile(absolutePath);
|
|
20
|
+
const { config, error } = ts.parseConfigFileTextToJson(absolutePath, content);
|
|
21
|
+
if (error) {
|
|
22
|
+
throw new Error(`Failed to parse tsconfig: ${ts.flattenDiagnosticMessageText(error.messageText, "\n")}`);
|
|
23
|
+
}
|
|
24
|
+
const parsed = ts.parseJsonConfigFileContent(config, ts.sys, configDir);
|
|
25
|
+
const baseUrl = parsed.options.baseUrl ?? configDir;
|
|
26
|
+
const paths = new Map();
|
|
27
|
+
if (parsed.options.paths) {
|
|
28
|
+
for (const [alias, targets] of Object.entries(parsed.options.paths)) {
|
|
29
|
+
const resolvedTargets = targets.map((target) => path.join(baseUrl, target));
|
|
30
|
+
paths.set(alias, resolvedTargets);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return new Tsconfig(paths);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Pure string transformation: resolves path alias to potential file paths.
|
|
37
|
+
* Returns null if no alias matches.
|
|
38
|
+
*/
|
|
39
|
+
resolvePath(importPath) {
|
|
40
|
+
for (const [pattern, targets] of this.paths) {
|
|
41
|
+
const wildcardMatch = this.matchPathPattern(importPath, pattern);
|
|
42
|
+
if (wildcardMatch === null) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
return targets.map((target) => target.replace("*", wildcardMatch));
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
matchPathPattern(moduleSpecifier, pattern) {
|
|
50
|
+
if (pattern.endsWith("*")) {
|
|
51
|
+
const prefix = pattern.slice(0, -1);
|
|
52
|
+
if (moduleSpecifier.startsWith(prefix)) {
|
|
53
|
+
return moduleSpecifier.slice(prefix.length);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if (moduleSpecifier === pattern) {
|
|
57
|
+
return "";
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Encapsulates context configuration with path resolution capabilities.
|
|
64
|
+
* Created via factory method to ensure proper initialization.
|
|
65
|
+
*/
|
|
66
|
+
export class ContextConfig {
|
|
67
|
+
fs;
|
|
68
|
+
tsconfig;
|
|
69
|
+
name;
|
|
70
|
+
sourceDir;
|
|
71
|
+
responseNamingConventions;
|
|
72
|
+
constructor(name, sourceDir, tsconfig, fs, responseNamingConventions) {
|
|
73
|
+
this.name = name;
|
|
74
|
+
this.sourceDir = sourceDir;
|
|
75
|
+
this.tsconfig = tsconfig;
|
|
76
|
+
this.fs = fs;
|
|
77
|
+
this.responseNamingConventions = responseNamingConventions;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Factory method to create ContextConfig with properly loaded tsconfig.
|
|
81
|
+
*/
|
|
82
|
+
static async create(input, configDir, fs = nodeFileSystem) {
|
|
83
|
+
if (!input.name) {
|
|
84
|
+
throw new Error("ContextConfig requires 'name'");
|
|
85
|
+
}
|
|
86
|
+
if (!input.path) {
|
|
87
|
+
throw new Error(`ContextConfig '${input.name}' requires 'path'`);
|
|
88
|
+
}
|
|
89
|
+
const basePath = path.resolve(configDir, input.path);
|
|
90
|
+
const sourceDir = path.resolve(basePath, input.sourceDir ?? "src");
|
|
91
|
+
const tsconfig = await this.loadTsconfig(basePath, input.tsconfigPath, fs);
|
|
92
|
+
return new ContextConfig(input.name, sourceDir, tsconfig, fs, input.responseNamingConventions);
|
|
93
|
+
}
|
|
94
|
+
static async loadTsconfig(basePath, inputPath, fs) {
|
|
95
|
+
const tsconfigPath = path.resolve(basePath, inputPath ?? "tsconfig.json");
|
|
96
|
+
if (!await fs.exists(tsconfigPath)) {
|
|
97
|
+
return Tsconfig.NONE;
|
|
98
|
+
}
|
|
99
|
+
return Tsconfig.load(tsconfigPath, fs);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Creates a ContextConfig without async loading (for cases where tsconfig is not needed
|
|
103
|
+
* or already handled externally).
|
|
104
|
+
*/
|
|
105
|
+
static createSync(name, sourceDir, fs = nodeFileSystem, responseNamingConventions) {
|
|
106
|
+
return new ContextConfig(name, sourceDir, Tsconfig.NONE, fs, responseNamingConventions);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Resolves a module specifier (path alias) to actual file path.
|
|
110
|
+
* Only handles non-relative imports (path aliases).
|
|
111
|
+
*
|
|
112
|
+
* @param moduleSpecifier - The import path to resolve (e.g., "@/utils/helper")
|
|
113
|
+
* @returns Object with resolvedPath (null if external) and isExternal flag
|
|
114
|
+
*/
|
|
115
|
+
async resolvePath(moduleSpecifier) {
|
|
116
|
+
const resolvedPaths = this.tsconfig.resolvePath(moduleSpecifier);
|
|
117
|
+
if (!resolvedPaths) {
|
|
118
|
+
return { resolvedPath: null, isExternal: true };
|
|
119
|
+
}
|
|
120
|
+
for (const resolvedPath of resolvedPaths) {
|
|
121
|
+
const filePath = await this.tryResolveWithExtensions(resolvedPath);
|
|
122
|
+
if (filePath && filePath.startsWith(this.sourceDir)) {
|
|
123
|
+
return { resolvedPath: filePath, isExternal: false };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return { resolvedPath: null, isExternal: true };
|
|
127
|
+
}
|
|
128
|
+
async tryResolveWithExtensions(basePath) {
|
|
129
|
+
const extensionCandidates = TYPESCRIPT_EXTENSIONS.map((ext) => basePath + ext);
|
|
130
|
+
const indexCandidate = path.join(basePath, INDEX_FILE);
|
|
131
|
+
const candidates = [...extensionCandidates, indexCandidate];
|
|
132
|
+
for (const candidate of candidates) {
|
|
133
|
+
if (await this.fs.exists(candidate)) {
|
|
134
|
+
return candidate;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=context-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-config.js","sourceRoot":"","sources":["../src/context-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
export interface SourceFile {
|
|
2
|
+
readonly absolutePath: string;
|
|
3
|
+
readonly relativePath: string;
|
|
4
|
+
readonly packageName?: string;
|
|
5
|
+
}
|
|
6
|
+
export type TypeRef = PrimitiveType | ArrayType | ObjectType | UnionType | IntersectionType | ReferenceType | LiteralType | TupleType | FunctionType;
|
|
7
|
+
export interface PrimitiveType {
|
|
8
|
+
readonly kind: 'primitive';
|
|
9
|
+
readonly name: 'string' | 'number' | 'boolean' | 'null' | 'undefined' | 'void' | 'any' | 'unknown' | 'never' | 'bigint' | 'symbol';
|
|
10
|
+
}
|
|
11
|
+
export interface ArrayType {
|
|
12
|
+
readonly kind: 'array';
|
|
13
|
+
readonly elementType: TypeRef;
|
|
14
|
+
}
|
|
15
|
+
export interface ObjectType {
|
|
16
|
+
readonly kind: 'object';
|
|
17
|
+
readonly fields: readonly Field[];
|
|
18
|
+
}
|
|
19
|
+
export interface UnionType {
|
|
20
|
+
readonly kind: 'union';
|
|
21
|
+
readonly types: readonly TypeRef[];
|
|
22
|
+
}
|
|
23
|
+
export interface IntersectionType {
|
|
24
|
+
readonly kind: 'intersection';
|
|
25
|
+
readonly types: readonly TypeRef[];
|
|
26
|
+
}
|
|
27
|
+
export interface ReferenceType {
|
|
28
|
+
readonly kind: 'reference';
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly typeArguments?: readonly TypeRef[];
|
|
31
|
+
}
|
|
32
|
+
export interface LiteralType {
|
|
33
|
+
readonly kind: 'literal';
|
|
34
|
+
readonly value: string | number | boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface TupleType {
|
|
37
|
+
readonly kind: 'tuple';
|
|
38
|
+
readonly elements: readonly TypeRef[];
|
|
39
|
+
}
|
|
40
|
+
export interface FunctionType {
|
|
41
|
+
readonly kind: 'function';
|
|
42
|
+
readonly parameters: readonly FunctionParameter[];
|
|
43
|
+
readonly returnType: TypeRef;
|
|
44
|
+
}
|
|
45
|
+
export interface FunctionParameter {
|
|
46
|
+
readonly name: string;
|
|
47
|
+
readonly type: TypeRef;
|
|
48
|
+
readonly optional: boolean;
|
|
49
|
+
}
|
|
50
|
+
export interface Field {
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly type: TypeRef;
|
|
53
|
+
readonly optional: boolean;
|
|
54
|
+
readonly readonly: boolean;
|
|
55
|
+
}
|
|
56
|
+
export type TypeDefinitionKind = 'interface' | 'type' | 'enum' | 'class';
|
|
57
|
+
export interface TypeDefinition {
|
|
58
|
+
readonly name: string;
|
|
59
|
+
readonly kind: TypeDefinitionKind;
|
|
60
|
+
readonly sourceFile: SourceFile;
|
|
61
|
+
readonly body: TypeRef;
|
|
62
|
+
readonly typeParameters?: readonly string[];
|
|
63
|
+
readonly exported: boolean;
|
|
64
|
+
}
|
|
65
|
+
export interface EnumMember {
|
|
66
|
+
readonly name: string;
|
|
67
|
+
readonly value?: string | number;
|
|
68
|
+
}
|
|
69
|
+
export interface EnumDefinition extends Omit<TypeDefinition, 'kind' | 'body'> {
|
|
70
|
+
readonly kind: 'enum';
|
|
71
|
+
readonly members: readonly EnumMember[];
|
|
72
|
+
}
|
|
73
|
+
export interface ClassImport {
|
|
74
|
+
readonly names: readonly string[];
|
|
75
|
+
readonly source: string;
|
|
76
|
+
readonly isTypeOnly: boolean;
|
|
77
|
+
readonly isExternal: boolean;
|
|
78
|
+
}
|
|
79
|
+
export interface ClassDefinition {
|
|
80
|
+
readonly name: string;
|
|
81
|
+
readonly kind: 'class';
|
|
82
|
+
readonly sourceFile: SourceFile;
|
|
83
|
+
readonly sourceText: string;
|
|
84
|
+
readonly imports: readonly ClassImport[];
|
|
85
|
+
readonly dependencies: readonly string[];
|
|
86
|
+
readonly baseClass?: string;
|
|
87
|
+
readonly exported: boolean;
|
|
88
|
+
}
|
|
89
|
+
export interface MessageBase {
|
|
90
|
+
readonly name: string;
|
|
91
|
+
readonly sourceFile: SourceFile;
|
|
92
|
+
readonly fields: readonly Field[];
|
|
93
|
+
readonly baseClass?: string;
|
|
94
|
+
readonly sourceText: string;
|
|
95
|
+
readonly imports: readonly ClassImport[];
|
|
96
|
+
}
|
|
97
|
+
export interface DomainEvent extends MessageBase {
|
|
98
|
+
readonly messageType: 'event';
|
|
99
|
+
readonly version?: number;
|
|
100
|
+
readonly context?: string;
|
|
101
|
+
readonly payloadType?: TypeRef;
|
|
102
|
+
}
|
|
103
|
+
export interface Command extends MessageBase {
|
|
104
|
+
readonly messageType: 'command';
|
|
105
|
+
readonly resultType?: TypeRef;
|
|
106
|
+
readonly context?: string;
|
|
107
|
+
readonly payloadType?: TypeRef;
|
|
108
|
+
}
|
|
109
|
+
export interface Query extends MessageBase {
|
|
110
|
+
readonly messageType: 'query';
|
|
111
|
+
readonly resultType?: TypeRef;
|
|
112
|
+
readonly context?: string;
|
|
113
|
+
readonly payloadType?: TypeRef;
|
|
114
|
+
}
|
|
115
|
+
export type Message = DomainEvent | Command | Query;
|
|
116
|
+
/** Used to filter which decorators the scanner should look for. */
|
|
117
|
+
export type MessageType = Message['messageType'];
|
|
118
|
+
export type ImportSource = {
|
|
119
|
+
readonly type: 'local';
|
|
120
|
+
readonly path: string;
|
|
121
|
+
} | {
|
|
122
|
+
readonly type: 'external';
|
|
123
|
+
readonly package: string;
|
|
124
|
+
};
|
|
125
|
+
export type DependencyKind = 'type' | 'value' | 'class';
|
|
126
|
+
export interface Dependency {
|
|
127
|
+
readonly name: string;
|
|
128
|
+
readonly source: ImportSource;
|
|
129
|
+
readonly kind: DependencyKind;
|
|
130
|
+
readonly definition?: TypeDefinition;
|
|
131
|
+
}
|
|
132
|
+
export interface SourceLocation {
|
|
133
|
+
readonly file: string;
|
|
134
|
+
readonly message: string;
|
|
135
|
+
readonly line?: number;
|
|
136
|
+
readonly column?: number;
|
|
137
|
+
}
|
|
138
|
+
export type ExtractionError = SourceLocation;
|
|
139
|
+
export type ExtractionWarning = SourceLocation;
|
|
140
|
+
export interface ExtractionResult {
|
|
141
|
+
readonly events: readonly DomainEvent[];
|
|
142
|
+
readonly commands: readonly Command[];
|
|
143
|
+
readonly types: readonly TypeDefinition[];
|
|
144
|
+
readonly dependencies: readonly Dependency[];
|
|
145
|
+
readonly errors: readonly ExtractionError[];
|
|
146
|
+
readonly warnings: readonly ExtractionWarning[];
|
|
147
|
+
}
|
|
148
|
+
/** Customizes decorator names used to identify public messages. Unspecified names use defaults. */
|
|
149
|
+
export interface DecoratorNames {
|
|
150
|
+
event?: string;
|
|
151
|
+
command?: string;
|
|
152
|
+
query?: string;
|
|
153
|
+
}
|
|
154
|
+
export declare const DEFAULT_DECORATOR_NAMES: Required<DecoratorNames>;
|
|
155
|
+
/** Merges partial decorator names with defaults for backward compatibility. */
|
|
156
|
+
export declare function mergeDecoratorNames(partial?: DecoratorNames): Required<DecoratorNames>;
|
|
157
|
+
export interface ResponseNamingConvention {
|
|
158
|
+
readonly messageSuffix: string;
|
|
159
|
+
readonly responseSuffix: string;
|
|
160
|
+
}
|
|
161
|
+
export interface Config {
|
|
162
|
+
readonly sourceDir: string;
|
|
163
|
+
readonly outputDir: string;
|
|
164
|
+
readonly include?: readonly string[];
|
|
165
|
+
readonly exclude?: readonly string[];
|
|
166
|
+
readonly externalPackages?: Readonly<Record<string, string>>;
|
|
167
|
+
readonly decoratorNames?: DecoratorNames;
|
|
168
|
+
readonly responseNamingConventions?: readonly ResponseNamingConvention[];
|
|
169
|
+
}
|
|
170
|
+
export declare function isPrimitiveType(type: TypeRef): type is PrimitiveType;
|
|
171
|
+
export declare function isArrayType(type: TypeRef): type is ArrayType;
|
|
172
|
+
export declare function isObjectType(type: TypeRef): type is ObjectType;
|
|
173
|
+
export declare function isUnionType(type: TypeRef): type is UnionType;
|
|
174
|
+
export declare function isIntersectionType(type: TypeRef): type is IntersectionType;
|
|
175
|
+
export declare function isReferenceType(type: TypeRef): type is ReferenceType;
|
|
176
|
+
export declare function isLiteralType(type: TypeRef): type is LiteralType;
|
|
177
|
+
export declare function isTupleType(type: TypeRef): type is TupleType;
|
|
178
|
+
export declare function isFunctionType(type: TypeRef): type is FunctionType;
|
|
179
|
+
export declare function isDomainEvent(message: Message): message is DomainEvent;
|
|
180
|
+
export declare function isCommand(message: Message): message is Command;
|
|
181
|
+
export declare function isQuery(message: Message): message is Query;
|
|
182
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/domain/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export const DEFAULT_DECORATOR_NAMES = {
|
|
2
|
+
event: "PublicEvent",
|
|
3
|
+
command: "PublicCommand",
|
|
4
|
+
query: "PublicQuery",
|
|
5
|
+
};
|
|
6
|
+
/** Merges partial decorator names with defaults for backward compatibility. */
|
|
7
|
+
export function mergeDecoratorNames(partial) {
|
|
8
|
+
return {
|
|
9
|
+
...DEFAULT_DECORATOR_NAMES,
|
|
10
|
+
...partial,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function isPrimitiveType(type) {
|
|
14
|
+
return type.kind === 'primitive';
|
|
15
|
+
}
|
|
16
|
+
export function isArrayType(type) {
|
|
17
|
+
return type.kind === 'array';
|
|
18
|
+
}
|
|
19
|
+
export function isObjectType(type) {
|
|
20
|
+
return type.kind === 'object';
|
|
21
|
+
}
|
|
22
|
+
export function isUnionType(type) {
|
|
23
|
+
return type.kind === 'union';
|
|
24
|
+
}
|
|
25
|
+
export function isIntersectionType(type) {
|
|
26
|
+
return type.kind === 'intersection';
|
|
27
|
+
}
|
|
28
|
+
export function isReferenceType(type) {
|
|
29
|
+
return type.kind === 'reference';
|
|
30
|
+
}
|
|
31
|
+
export function isLiteralType(type) {
|
|
32
|
+
return type.kind === 'literal';
|
|
33
|
+
}
|
|
34
|
+
export function isTupleType(type) {
|
|
35
|
+
return type.kind === 'tuple';
|
|
36
|
+
}
|
|
37
|
+
export function isFunctionType(type) {
|
|
38
|
+
return type.kind === 'function';
|
|
39
|
+
}
|
|
40
|
+
export function isDomainEvent(message) {
|
|
41
|
+
return message.messageType === 'event';
|
|
42
|
+
}
|
|
43
|
+
export function isCommand(message) {
|
|
44
|
+
return message.messageType === 'command';
|
|
45
|
+
}
|
|
46
|
+
export function isQuery(message) {
|
|
47
|
+
return message.messageType === 'query';
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/domain/types.ts"],"names":[],"mappings":"AAyMA,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;CACrB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAC,OAAwB;IAC1D,OAAO;QACL,GAAG,uBAAuB;QAC1B,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAiBD,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC9C,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,OAAO,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAO,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC;AACzC,CAAC"}
|