@g1cloud/api-gen 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +22 -0
- package/CLAUDE.md +63 -0
- package/README.md +379 -0
- package/dist/analyzer/controllerAnalyzer.d.ts +20 -0
- package/dist/analyzer/controllerAnalyzer.d.ts.map +1 -0
- package/dist/analyzer/controllerAnalyzer.js +101 -0
- package/dist/analyzer/controllerAnalyzer.js.map +1 -0
- package/dist/analyzer/parameterAnalyzer.d.ts +19 -0
- package/dist/analyzer/parameterAnalyzer.d.ts.map +1 -0
- package/dist/analyzer/parameterAnalyzer.js +207 -0
- package/dist/analyzer/parameterAnalyzer.js.map +1 -0
- package/dist/analyzer/responseAnalyzer.d.ts +12 -0
- package/dist/analyzer/responseAnalyzer.d.ts.map +1 -0
- package/dist/analyzer/responseAnalyzer.js +116 -0
- package/dist/analyzer/responseAnalyzer.js.map +1 -0
- package/dist/analyzer/schemaGenerator.d.ts +6 -0
- package/dist/analyzer/schemaGenerator.d.ts.map +1 -0
- package/dist/analyzer/schemaGenerator.js +347 -0
- package/dist/analyzer/schemaGenerator.js.map +1 -0
- package/dist/analyzer/securityAnalyzer.d.ts +6 -0
- package/dist/analyzer/securityAnalyzer.d.ts.map +1 -0
- package/dist/analyzer/securityAnalyzer.js +177 -0
- package/dist/analyzer/securityAnalyzer.js.map +1 -0
- package/dist/generator/openapiGenerator.d.ts +14 -0
- package/dist/generator/openapiGenerator.d.ts.map +1 -0
- package/dist/generator/openapiGenerator.js +340 -0
- package/dist/generator/openapiGenerator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +218 -0
- package/dist/index.js.map +1 -0
- package/dist/lib.d.ts +61 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +199 -0
- package/dist/lib.js.map +1 -0
- package/dist/mcp-server.d.ts +9 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +257 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp-server.mjs +45586 -0
- package/dist/parser/astAnalyzer.d.ts +87 -0
- package/dist/parser/astAnalyzer.d.ts.map +1 -0
- package/dist/parser/astAnalyzer.js +321 -0
- package/dist/parser/astAnalyzer.js.map +1 -0
- package/dist/parser/javaParser.d.ts +10 -0
- package/dist/parser/javaParser.d.ts.map +1 -0
- package/dist/parser/javaParser.js +805 -0
- package/dist/parser/javaParser.js.map +1 -0
- package/dist/types/index.d.ts +217 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/examples/CreateUserRequest.java +80 -0
- package/examples/DepartmentDTO.java +45 -0
- package/examples/Filter.java +39 -0
- package/examples/PaginatedList.java +71 -0
- package/examples/ProductController.java +136 -0
- package/examples/ProductDTO.java +129 -0
- package/examples/RoleDTO.java +47 -0
- package/examples/SearchParam.java +55 -0
- package/examples/Sort.java +70 -0
- package/examples/UpdateUserRequest.java +74 -0
- package/examples/UserController.java +98 -0
- package/examples/UserDTO.java +119 -0
- package/package.json +51 -0
- package/prompt/01_Initial.md +358 -0
- package/prompt/02_/354/266/224/352/260/200.md +31 -0
- package/src/analyzer/controllerAnalyzer.ts +125 -0
- package/src/analyzer/parameterAnalyzer.ts +259 -0
- package/src/analyzer/responseAnalyzer.ts +142 -0
- package/src/analyzer/schemaGenerator.ts +412 -0
- package/src/analyzer/securityAnalyzer.ts +200 -0
- package/src/generator/openapiGenerator.ts +378 -0
- package/src/index.ts +212 -0
- package/src/lib.ts +240 -0
- package/src/mcp-server.ts +310 -0
- package/src/parser/astAnalyzer.ts +373 -0
- package/src/parser/javaParser.ts +901 -0
- package/src/types/index.ts +238 -0
- package/test-boolean.yaml +607 -0
- package/test-filter.yaml +576 -0
- package/test-inner.ts +59 -0
- package/test-output.yaml +650 -0
- package/test-paginated.yaml +585 -0
- package/tsconfig.json +20 -0
- package/tsup.config.ts +30 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
// CLI Options
|
|
2
|
+
export interface CLIOptions {
|
|
3
|
+
source: string[]; // Multiple source directories for class parsing
|
|
4
|
+
apiSource?: string; // Optional: specific directory to search for RestControllers
|
|
5
|
+
output?: string;
|
|
6
|
+
outDir?: string;
|
|
7
|
+
title: string;
|
|
8
|
+
version: string;
|
|
9
|
+
basePath?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Java Parsing Types
|
|
13
|
+
export interface JavaAnnotation {
|
|
14
|
+
name: string;
|
|
15
|
+
values: Record<string, string | string[] | boolean>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface JavaParameter {
|
|
19
|
+
name: string;
|
|
20
|
+
type: string;
|
|
21
|
+
genericType?: string;
|
|
22
|
+
annotations: JavaAnnotation[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface JavaField {
|
|
26
|
+
name: string;
|
|
27
|
+
type: string;
|
|
28
|
+
genericType?: string;
|
|
29
|
+
annotations: JavaAnnotation[];
|
|
30
|
+
accessModifier: string;
|
|
31
|
+
javadoc?: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface JavadocInfo {
|
|
35
|
+
description?: string;
|
|
36
|
+
params: Record<string, string>; // param name -> description
|
|
37
|
+
returns?: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface JavaMethod {
|
|
41
|
+
name: string;
|
|
42
|
+
returnType: string;
|
|
43
|
+
returnGenericType?: string;
|
|
44
|
+
parameters: JavaParameter[];
|
|
45
|
+
annotations: JavaAnnotation[];
|
|
46
|
+
javadoc?: string;
|
|
47
|
+
javadocInfo?: JavadocInfo;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface JavaClass {
|
|
51
|
+
name: string;
|
|
52
|
+
packageName: string;
|
|
53
|
+
annotations: JavaAnnotation[];
|
|
54
|
+
methods: JavaMethod[];
|
|
55
|
+
fields: JavaField[];
|
|
56
|
+
filePath: string;
|
|
57
|
+
javadoc?: string;
|
|
58
|
+
superClass?: string; // Name of the superclass (if any)
|
|
59
|
+
isEnum?: boolean; // True if this is an enum
|
|
60
|
+
enumValues?: string[]; // Enum constant names (if isEnum is true)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Controller Analysis Types
|
|
64
|
+
export interface EndpointInfo {
|
|
65
|
+
path: string;
|
|
66
|
+
method: HttpMethod;
|
|
67
|
+
operationId: string;
|
|
68
|
+
summary: string;
|
|
69
|
+
description?: string;
|
|
70
|
+
returnDescription?: string; // @return from javadoc
|
|
71
|
+
parameters: ParameterInfo[];
|
|
72
|
+
requestBody?: RequestBodyInfo;
|
|
73
|
+
responses: ResponseInfo[];
|
|
74
|
+
security: SecurityInfo;
|
|
75
|
+
hasSearchParam: boolean;
|
|
76
|
+
hasPaginatedList: boolean;
|
|
77
|
+
paginatedListItemType?: string;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch';
|
|
81
|
+
|
|
82
|
+
export interface ParameterInfo {
|
|
83
|
+
name: string;
|
|
84
|
+
in: 'query' | 'path' | 'header';
|
|
85
|
+
required: boolean;
|
|
86
|
+
type: string;
|
|
87
|
+
description?: string;
|
|
88
|
+
defaultValue?: string;
|
|
89
|
+
schema?: SchemaInfo;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface RequestBodyInfo {
|
|
93
|
+
required: boolean;
|
|
94
|
+
contentType: string;
|
|
95
|
+
schema: SchemaInfo;
|
|
96
|
+
description?: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface ResponseInfo {
|
|
100
|
+
statusCode: string;
|
|
101
|
+
description: string;
|
|
102
|
+
contentType?: string;
|
|
103
|
+
schema?: SchemaInfo;
|
|
104
|
+
headers?: Record<string, HeaderInfo>;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface HeaderInfo {
|
|
108
|
+
schema: { type: string };
|
|
109
|
+
description: string;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface SecurityInfo {
|
|
113
|
+
roles: string[];
|
|
114
|
+
authorities: string[];
|
|
115
|
+
securityExpression?: string;
|
|
116
|
+
hasComplexExpression: boolean;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Schema Types
|
|
120
|
+
export interface SchemaInfo {
|
|
121
|
+
type?: string;
|
|
122
|
+
format?: string;
|
|
123
|
+
items?: SchemaInfo;
|
|
124
|
+
$ref?: string;
|
|
125
|
+
properties?: Record<string, SchemaInfo>;
|
|
126
|
+
required?: string[];
|
|
127
|
+
additionalProperties?: boolean | SchemaInfo;
|
|
128
|
+
enum?: string[];
|
|
129
|
+
description?: string;
|
|
130
|
+
minLength?: number;
|
|
131
|
+
maxLength?: number;
|
|
132
|
+
minimum?: number;
|
|
133
|
+
maximum?: number;
|
|
134
|
+
pattern?: string;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export interface DTOInfo {
|
|
138
|
+
name: string;
|
|
139
|
+
fields: FieldInfo[];
|
|
140
|
+
packageName: string;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export interface FieldInfo {
|
|
144
|
+
name: string;
|
|
145
|
+
type: string;
|
|
146
|
+
genericType?: string;
|
|
147
|
+
required: boolean;
|
|
148
|
+
format?: string;
|
|
149
|
+
minLength?: number;
|
|
150
|
+
maxLength?: number;
|
|
151
|
+
minimum?: number;
|
|
152
|
+
maximum?: number;
|
|
153
|
+
pattern?: string;
|
|
154
|
+
enumValues?: string[];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// OpenAPI Types
|
|
158
|
+
export interface TagInfo {
|
|
159
|
+
name: string;
|
|
160
|
+
description?: string;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export interface OpenAPISpec {
|
|
164
|
+
openapi: string;
|
|
165
|
+
info: {
|
|
166
|
+
title: string;
|
|
167
|
+
version: string;
|
|
168
|
+
};
|
|
169
|
+
servers?: Array<{
|
|
170
|
+
url: string;
|
|
171
|
+
}>;
|
|
172
|
+
tags?: TagInfo[];
|
|
173
|
+
paths: Record<string, PathItem>;
|
|
174
|
+
components: {
|
|
175
|
+
schemas: Record<string, SchemaInfo>;
|
|
176
|
+
securitySchemes?: Record<string, SecurityScheme>;
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export interface PathItem {
|
|
181
|
+
[method: string]: OperationObject;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export interface OperationObject {
|
|
185
|
+
tags?: string[];
|
|
186
|
+
summary?: string;
|
|
187
|
+
description?: string;
|
|
188
|
+
operationId?: string;
|
|
189
|
+
parameters?: ParameterObject[];
|
|
190
|
+
requestBody?: RequestBodyObject;
|
|
191
|
+
responses: Record<string, ResponseObject>;
|
|
192
|
+
security?: Array<Record<string, string[]>>;
|
|
193
|
+
'x-required-roles'?: string[];
|
|
194
|
+
'x-security-expression'?: string;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export interface ParameterObject {
|
|
198
|
+
name: string;
|
|
199
|
+
in: string;
|
|
200
|
+
required?: boolean;
|
|
201
|
+
schema: SchemaInfo;
|
|
202
|
+
description?: string;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export interface RequestBodyObject {
|
|
206
|
+
required?: boolean;
|
|
207
|
+
description?: string;
|
|
208
|
+
content: Record<string, { schema: SchemaInfo }>;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export interface ResponseObject {
|
|
212
|
+
description: string;
|
|
213
|
+
headers?: Record<string, { schema: { type: string }; description: string }>;
|
|
214
|
+
content?: Record<string, { schema: SchemaInfo }>;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export interface SecurityScheme {
|
|
218
|
+
type: string;
|
|
219
|
+
scheme?: string;
|
|
220
|
+
bearerFormat?: string;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Controller Info for Analysis
|
|
224
|
+
export interface ControllerInfo {
|
|
225
|
+
className: string;
|
|
226
|
+
basePath: string;
|
|
227
|
+
endpoints: EndpointInfo[];
|
|
228
|
+
javaClass: JavaClass;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Processing Context
|
|
232
|
+
export interface ProcessingContext {
|
|
233
|
+
javaClasses: Map<string, JavaClass>;
|
|
234
|
+
controllers: ControllerInfo[];
|
|
235
|
+
dtoSchemas: Map<string, SchemaInfo>;
|
|
236
|
+
referencedTypes: Set<string>;
|
|
237
|
+
apiSourcePath?: string; // Optional: restrict RestController search to this directory
|
|
238
|
+
}
|