@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.
Files changed (86) hide show
  1. package/.claude/settings.local.json +22 -0
  2. package/CLAUDE.md +63 -0
  3. package/README.md +379 -0
  4. package/dist/analyzer/controllerAnalyzer.d.ts +20 -0
  5. package/dist/analyzer/controllerAnalyzer.d.ts.map +1 -0
  6. package/dist/analyzer/controllerAnalyzer.js +101 -0
  7. package/dist/analyzer/controllerAnalyzer.js.map +1 -0
  8. package/dist/analyzer/parameterAnalyzer.d.ts +19 -0
  9. package/dist/analyzer/parameterAnalyzer.d.ts.map +1 -0
  10. package/dist/analyzer/parameterAnalyzer.js +207 -0
  11. package/dist/analyzer/parameterAnalyzer.js.map +1 -0
  12. package/dist/analyzer/responseAnalyzer.d.ts +12 -0
  13. package/dist/analyzer/responseAnalyzer.d.ts.map +1 -0
  14. package/dist/analyzer/responseAnalyzer.js +116 -0
  15. package/dist/analyzer/responseAnalyzer.js.map +1 -0
  16. package/dist/analyzer/schemaGenerator.d.ts +6 -0
  17. package/dist/analyzer/schemaGenerator.d.ts.map +1 -0
  18. package/dist/analyzer/schemaGenerator.js +347 -0
  19. package/dist/analyzer/schemaGenerator.js.map +1 -0
  20. package/dist/analyzer/securityAnalyzer.d.ts +6 -0
  21. package/dist/analyzer/securityAnalyzer.d.ts.map +1 -0
  22. package/dist/analyzer/securityAnalyzer.js +177 -0
  23. package/dist/analyzer/securityAnalyzer.js.map +1 -0
  24. package/dist/generator/openapiGenerator.d.ts +14 -0
  25. package/dist/generator/openapiGenerator.d.ts.map +1 -0
  26. package/dist/generator/openapiGenerator.js +340 -0
  27. package/dist/generator/openapiGenerator.js.map +1 -0
  28. package/dist/index.d.ts +3 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +218 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/lib.d.ts +61 -0
  33. package/dist/lib.d.ts.map +1 -0
  34. package/dist/lib.js +199 -0
  35. package/dist/lib.js.map +1 -0
  36. package/dist/mcp-server.d.ts +9 -0
  37. package/dist/mcp-server.d.ts.map +1 -0
  38. package/dist/mcp-server.js +257 -0
  39. package/dist/mcp-server.js.map +1 -0
  40. package/dist/mcp-server.mjs +45586 -0
  41. package/dist/parser/astAnalyzer.d.ts +87 -0
  42. package/dist/parser/astAnalyzer.d.ts.map +1 -0
  43. package/dist/parser/astAnalyzer.js +321 -0
  44. package/dist/parser/astAnalyzer.js.map +1 -0
  45. package/dist/parser/javaParser.d.ts +10 -0
  46. package/dist/parser/javaParser.d.ts.map +1 -0
  47. package/dist/parser/javaParser.js +805 -0
  48. package/dist/parser/javaParser.js.map +1 -0
  49. package/dist/types/index.d.ts +217 -0
  50. package/dist/types/index.d.ts.map +1 -0
  51. package/dist/types/index.js +3 -0
  52. package/dist/types/index.js.map +1 -0
  53. package/examples/CreateUserRequest.java +80 -0
  54. package/examples/DepartmentDTO.java +45 -0
  55. package/examples/Filter.java +39 -0
  56. package/examples/PaginatedList.java +71 -0
  57. package/examples/ProductController.java +136 -0
  58. package/examples/ProductDTO.java +129 -0
  59. package/examples/RoleDTO.java +47 -0
  60. package/examples/SearchParam.java +55 -0
  61. package/examples/Sort.java +70 -0
  62. package/examples/UpdateUserRequest.java +74 -0
  63. package/examples/UserController.java +98 -0
  64. package/examples/UserDTO.java +119 -0
  65. package/package.json +51 -0
  66. package/prompt/01_Initial.md +358 -0
  67. package/prompt/02_/354/266/224/352/260/200.md +31 -0
  68. package/src/analyzer/controllerAnalyzer.ts +125 -0
  69. package/src/analyzer/parameterAnalyzer.ts +259 -0
  70. package/src/analyzer/responseAnalyzer.ts +142 -0
  71. package/src/analyzer/schemaGenerator.ts +412 -0
  72. package/src/analyzer/securityAnalyzer.ts +200 -0
  73. package/src/generator/openapiGenerator.ts +378 -0
  74. package/src/index.ts +212 -0
  75. package/src/lib.ts +240 -0
  76. package/src/mcp-server.ts +310 -0
  77. package/src/parser/astAnalyzer.ts +373 -0
  78. package/src/parser/javaParser.ts +901 -0
  79. package/src/types/index.ts +238 -0
  80. package/test-boolean.yaml +607 -0
  81. package/test-filter.yaml +576 -0
  82. package/test-inner.ts +59 -0
  83. package/test-output.yaml +650 -0
  84. package/test-paginated.yaml +585 -0
  85. package/tsconfig.json +20 -0
  86. 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
+ }