nest-scramble 1.3.0 → 1.4.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/dist/scanner/ScannerService.d.ts +3 -0
- package/dist/scanner/ScannerService.d.ts.map +1 -1
- package/dist/scanner/ScannerService.js +40 -5
- package/dist/scanner/ScannerService.js.map +1 -1
- package/dist/utils/DtoAnalyzer.d.ts +1 -0
- package/dist/utils/DtoAnalyzer.d.ts.map +1 -1
- package/dist/utils/DtoAnalyzer.js +10 -0
- package/dist/utils/DtoAnalyzer.js.map +1 -1
- package/dist/utils/OpenApiTransformer.d.ts +4 -0
- package/dist/utils/OpenApiTransformer.d.ts.map +1 -1
- package/dist/utils/OpenApiTransformer.js +197 -13
- package/dist/utils/OpenApiTransformer.js.map +1 -1
- package/examples/example-controller.ts +85 -0
- package/examples/example-dto.ts +182 -0
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ export interface ControllerInfo {
|
|
|
3
3
|
name: string;
|
|
4
4
|
path: string;
|
|
5
5
|
methods: MethodInfo[];
|
|
6
|
+
hasGuards?: boolean;
|
|
6
7
|
}
|
|
7
8
|
export interface MethodInfo {
|
|
8
9
|
name: string;
|
|
@@ -10,11 +11,13 @@ export interface MethodInfo {
|
|
|
10
11
|
route: string;
|
|
11
12
|
parameters: ParameterInfo[];
|
|
12
13
|
returnType: AnalyzedType;
|
|
14
|
+
hasGuards?: boolean;
|
|
13
15
|
}
|
|
14
16
|
export interface ParameterInfo {
|
|
15
17
|
name: string;
|
|
16
18
|
type: AnalyzedType;
|
|
17
19
|
decorator?: string;
|
|
20
|
+
parameterLocation?: 'path' | 'query' | 'header' | 'body';
|
|
18
21
|
}
|
|
19
22
|
export declare class ScannerService {
|
|
20
23
|
private project;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScannerService.d.ts","sourceRoot":"","sources":["../../src/scanner/ScannerService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ScannerService.d.ts","sourceRoot":"","sources":["../../src/scanner/ScannerService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,EAAE,YAAY,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC1D;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,WAAW,CAAqB;IAExC;;;;OAIG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE;IAsErD,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,qBAAqB;IAqC7B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,iBAAiB;CA0D1B"}
|
|
@@ -97,6 +97,14 @@ class ScannerService {
|
|
|
97
97
|
if (!controllerDecorator)
|
|
98
98
|
return null;
|
|
99
99
|
const controllerPath = this.extractDecoratorArgument(controllerDecorator) || '';
|
|
100
|
+
// Check for class-level @UseGuards() decorator
|
|
101
|
+
const hasGuards = cls.getDecorators().some(decorator => {
|
|
102
|
+
const callExpression = decorator.getCallExpression();
|
|
103
|
+
if (!callExpression)
|
|
104
|
+
return false;
|
|
105
|
+
const expression = callExpression.getExpression();
|
|
106
|
+
return ts_morph_1.Node.isIdentifier(expression) && expression.getText() === 'UseGuards';
|
|
107
|
+
});
|
|
100
108
|
const methods = [];
|
|
101
109
|
for (const method of cls.getMethods()) {
|
|
102
110
|
const methodInfo = this.extractMethodInfo(method);
|
|
@@ -108,6 +116,7 @@ class ScannerService {
|
|
|
108
116
|
name: cls.getName() || 'UnknownController',
|
|
109
117
|
path: controllerPath,
|
|
110
118
|
methods,
|
|
119
|
+
hasGuards,
|
|
111
120
|
};
|
|
112
121
|
}
|
|
113
122
|
extractDecoratorArgument(decorator) {
|
|
@@ -140,11 +149,36 @@ class ScannerService {
|
|
|
140
149
|
const expression = callExpression.getExpression();
|
|
141
150
|
const httpMethod = expression.getText().toUpperCase();
|
|
142
151
|
const route = this.extractDecoratorArgument(httpDecorator) || '';
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
152
|
+
// Check for @UseGuards() decorator
|
|
153
|
+
const hasGuards = method.getDecorators().some(decorator => {
|
|
154
|
+
const callExpression = decorator.getCallExpression();
|
|
155
|
+
if (!callExpression)
|
|
156
|
+
return false;
|
|
157
|
+
const expression = callExpression.getExpression();
|
|
158
|
+
return ts_morph_1.Node.isIdentifier(expression) && expression.getText() === 'UseGuards';
|
|
159
|
+
});
|
|
160
|
+
const parameters = method.getParameters().map(param => {
|
|
161
|
+
const decoratorText = param.getDecorators().map(d => d.getText()).join(' ');
|
|
162
|
+
let parameterLocation;
|
|
163
|
+
if (decoratorText.includes('@Body')) {
|
|
164
|
+
parameterLocation = 'body';
|
|
165
|
+
}
|
|
166
|
+
else if (decoratorText.includes('@Param')) {
|
|
167
|
+
parameterLocation = 'path';
|
|
168
|
+
}
|
|
169
|
+
else if (decoratorText.includes('@Query')) {
|
|
170
|
+
parameterLocation = 'query';
|
|
171
|
+
}
|
|
172
|
+
else if (decoratorText.includes('@Headers')) {
|
|
173
|
+
parameterLocation = 'header';
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
name: param.getName(),
|
|
177
|
+
type: this.dtoAnalyzer.analyzeType(param.getType()),
|
|
178
|
+
decorator: decoratorText,
|
|
179
|
+
parameterLocation,
|
|
180
|
+
};
|
|
181
|
+
});
|
|
148
182
|
const returnType = this.dtoAnalyzer.analyzeType(method.getReturnType());
|
|
149
183
|
return {
|
|
150
184
|
name: method.getName(),
|
|
@@ -152,6 +186,7 @@ class ScannerService {
|
|
|
152
186
|
route,
|
|
153
187
|
parameters,
|
|
154
188
|
returnType,
|
|
189
|
+
hasGuards,
|
|
155
190
|
};
|
|
156
191
|
}
|
|
157
192
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScannerService.js","sourceRoot":"","sources":["../../src/scanner/ScannerService.ts"],"names":[],"mappings":";;;AAAA,kEAAkE;AAClE,uCAAyF;AACzF,sDAAiE;
|
|
1
|
+
{"version":3,"file":"ScannerService.js","sourceRoot":"","sources":["../../src/scanner/ScannerService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DtoAnalyzer.d.ts","sourceRoot":"","sources":["../../src/utils/DtoAnalyzer.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAgD,IAAI,EAAE,MAAM,UAAU,CAAC;AAE9E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"DtoAnalyzer.d.ts","sourceRoot":"","sources":["../../src/utils/DtoAnalyzer.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAgD,IAAI,EAAE,MAAM,UAAU,CAAC;AAE9E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAqB;IAEpC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,UAAQ,GAAG,YAAY;IAmEzD,OAAO,CAAC,iBAAiB;CA6B1B"}
|
|
@@ -81,9 +81,19 @@ class DtoAnalyzer {
|
|
|
81
81
|
const type = prop.getType();
|
|
82
82
|
const isOptional = prop.hasQuestionToken ? prop.hasQuestionToken() : false;
|
|
83
83
|
const analyzedType = this.analyzeType(type, isOptional);
|
|
84
|
+
// Extract JSDoc description
|
|
85
|
+
const jsDocs = prop.getJsDocs();
|
|
86
|
+
let description;
|
|
87
|
+
if (jsDocs.length > 0) {
|
|
88
|
+
const comment = jsDocs[0].getDescription().trim();
|
|
89
|
+
if (comment) {
|
|
90
|
+
description = comment;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
84
93
|
properties.push({
|
|
85
94
|
name,
|
|
86
95
|
type: analyzedType,
|
|
96
|
+
description,
|
|
87
97
|
});
|
|
88
98
|
}
|
|
89
99
|
return properties;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DtoAnalyzer.js","sourceRoot":"","sources":["../../src/utils/DtoAnalyzer.ts"],"names":[],"mappings":";;;AAAA,kEAAkE;AAClE,uCAA8E;
|
|
1
|
+
{"version":3,"file":"DtoAnalyzer.js","sourceRoot":"","sources":["../../src/utils/DtoAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ interface OpenApiSpec {
|
|
|
13
13
|
paths: Record<string, Record<string, any>>;
|
|
14
14
|
components: {
|
|
15
15
|
schemas: Record<string, any>;
|
|
16
|
+
securitySchemes?: Record<string, any>;
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
export declare class OpenApiTransformer {
|
|
@@ -30,8 +31,11 @@ export declare class OpenApiTransformer {
|
|
|
30
31
|
transform(controllers: ControllerInfo[], title?: string, version?: string, baseUrl?: string): OpenApiSpec;
|
|
31
32
|
private buildPath;
|
|
32
33
|
private createOperation;
|
|
34
|
+
private getSuccessStatusCode;
|
|
35
|
+
private getSuccessDescription;
|
|
33
36
|
private analyzedTypeToSchema;
|
|
34
37
|
private generateCodeSamples;
|
|
38
|
+
private generateSmartExample;
|
|
35
39
|
private typeStringToSchema;
|
|
36
40
|
}
|
|
37
41
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApiTransformer.d.ts","sourceRoot":"","sources":["../../src/utils/OpenApiTransformer.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAE,cAAc,EAAc,MAAM,2BAA2B,CAAC;AAGvE,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenApiTransformer.d.ts","sourceRoot":"","sources":["../../src/utils/OpenApiTransformer.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAE,cAAc,EAAc,MAAM,2BAA2B,CAAC;AAGvE,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACvC,CAAC;CACH;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,SAA0B;IAI7C;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,KAAK,SAAe,EAAE,OAAO,SAAU,EAAE,OAAO,SAA0B,GAAG,WAAW;IA6CjI,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,eAAe;IAqHvB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,oBAAoB;IAuD5B,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,oBAAoB;IAuG5B,OAAO,CAAC,kBAAkB;CAsB3B"}
|
|
@@ -20,7 +20,7 @@ class OpenApiTransformer {
|
|
|
20
20
|
for (const controller of controllers) {
|
|
21
21
|
for (const method of controller.methods) {
|
|
22
22
|
const fullPath = this.buildPath(controller.path, method.route);
|
|
23
|
-
const operation = this.createOperation(method);
|
|
23
|
+
const operation = this.createOperation(method, controller.hasGuards);
|
|
24
24
|
if (!paths[fullPath]) {
|
|
25
25
|
paths[fullPath] = {};
|
|
26
26
|
}
|
|
@@ -42,6 +42,14 @@ class OpenApiTransformer {
|
|
|
42
42
|
paths,
|
|
43
43
|
components: {
|
|
44
44
|
schemas: this.schemas,
|
|
45
|
+
securitySchemes: {
|
|
46
|
+
bearerAuth: {
|
|
47
|
+
type: 'http',
|
|
48
|
+
scheme: 'bearer',
|
|
49
|
+
bearerFormat: 'JWT',
|
|
50
|
+
description: 'Enter your Bearer token in the format: Bearer <token>',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
45
53
|
},
|
|
46
54
|
};
|
|
47
55
|
}
|
|
@@ -49,24 +57,56 @@ class OpenApiTransformer {
|
|
|
49
57
|
const parts = [controllerPath, methodRoute].filter(p => p);
|
|
50
58
|
return '/' + parts.join('/').replace(/\/+/g, '/');
|
|
51
59
|
}
|
|
52
|
-
createOperation(method) {
|
|
60
|
+
createOperation(method, controllerHasGuards) {
|
|
61
|
+
// Determine success status code based on HTTP method
|
|
62
|
+
const successStatusCode = this.getSuccessStatusCode(method.httpMethod);
|
|
63
|
+
const successDescription = this.getSuccessDescription(method.httpMethod);
|
|
53
64
|
const operation = {
|
|
54
65
|
summary: method.name,
|
|
55
66
|
responses: {
|
|
56
|
-
|
|
57
|
-
description:
|
|
67
|
+
[successStatusCode]: {
|
|
68
|
+
description: successDescription,
|
|
58
69
|
content: {
|
|
59
70
|
'application/json': {
|
|
60
71
|
schema: this.analyzedTypeToSchema(method.returnType),
|
|
61
72
|
},
|
|
62
73
|
},
|
|
63
74
|
},
|
|
75
|
+
'400': {
|
|
76
|
+
description: 'Bad Request',
|
|
77
|
+
content: {
|
|
78
|
+
'application/json': {
|
|
79
|
+
schema: {
|
|
80
|
+
type: 'object',
|
|
81
|
+
properties: {
|
|
82
|
+
statusCode: { type: 'number', example: 400 },
|
|
83
|
+
message: { type: 'string', example: 'Bad Request' },
|
|
84
|
+
error: { type: 'string', example: 'Validation failed' },
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
'500': {
|
|
91
|
+
description: 'Internal Server Error',
|
|
92
|
+
content: {
|
|
93
|
+
'application/json': {
|
|
94
|
+
schema: {
|
|
95
|
+
type: 'object',
|
|
96
|
+
properties: {
|
|
97
|
+
statusCode: { type: 'number', example: 500 },
|
|
98
|
+
message: { type: 'string', example: 'Internal server error' },
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
64
104
|
},
|
|
65
105
|
};
|
|
66
106
|
// Add parameters
|
|
67
107
|
const parameters = [];
|
|
68
108
|
for (const param of method.parameters) {
|
|
69
|
-
if (param.
|
|
109
|
+
if (param.parameterLocation === 'body') {
|
|
70
110
|
operation.requestBody = {
|
|
71
111
|
required: true,
|
|
72
112
|
content: {
|
|
@@ -76,7 +116,7 @@ class OpenApiTransformer {
|
|
|
76
116
|
},
|
|
77
117
|
};
|
|
78
118
|
}
|
|
79
|
-
else if (param.
|
|
119
|
+
else if (param.parameterLocation === 'query') {
|
|
80
120
|
// For query params, if it's an object, add properties as query params
|
|
81
121
|
if (param.type.properties) {
|
|
82
122
|
for (const prop of param.type.properties) {
|
|
@@ -85,11 +125,21 @@ class OpenApiTransformer {
|
|
|
85
125
|
in: 'query',
|
|
86
126
|
schema: this.analyzedTypeToSchema(prop.type),
|
|
87
127
|
required: !prop.type.isOptional,
|
|
128
|
+
description: prop.description,
|
|
88
129
|
});
|
|
89
130
|
}
|
|
90
131
|
}
|
|
132
|
+
else {
|
|
133
|
+
// Single query parameter
|
|
134
|
+
parameters.push({
|
|
135
|
+
name: param.name,
|
|
136
|
+
in: 'query',
|
|
137
|
+
schema: this.analyzedTypeToSchema(param.type),
|
|
138
|
+
required: !param.type.isOptional,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
91
141
|
}
|
|
92
|
-
else if (param.
|
|
142
|
+
else if (param.parameterLocation === 'path') {
|
|
93
143
|
parameters.push({
|
|
94
144
|
name: param.name,
|
|
95
145
|
in: 'path',
|
|
@@ -97,14 +147,58 @@ class OpenApiTransformer {
|
|
|
97
147
|
schema: this.analyzedTypeToSchema(param.type),
|
|
98
148
|
});
|
|
99
149
|
}
|
|
150
|
+
else if (param.parameterLocation === 'header') {
|
|
151
|
+
parameters.push({
|
|
152
|
+
name: param.name,
|
|
153
|
+
in: 'header',
|
|
154
|
+
schema: this.analyzedTypeToSchema(param.type),
|
|
155
|
+
required: !param.type.isOptional,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
100
158
|
}
|
|
101
159
|
if (parameters.length > 0) {
|
|
102
160
|
operation.parameters = parameters;
|
|
103
161
|
}
|
|
162
|
+
// Add security requirements if method or controller has guards
|
|
163
|
+
if (method.hasGuards || controllerHasGuards) {
|
|
164
|
+
operation.security = [
|
|
165
|
+
{
|
|
166
|
+
bearerAuth: [],
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
}
|
|
104
170
|
// Add code samples
|
|
105
171
|
operation['x-code-samples'] = this.generateCodeSamples(method);
|
|
106
172
|
return operation;
|
|
107
173
|
}
|
|
174
|
+
getSuccessStatusCode(httpMethod) {
|
|
175
|
+
switch (httpMethod.toUpperCase()) {
|
|
176
|
+
case 'POST':
|
|
177
|
+
return '201';
|
|
178
|
+
case 'GET':
|
|
179
|
+
case 'PUT':
|
|
180
|
+
case 'PATCH':
|
|
181
|
+
case 'DELETE':
|
|
182
|
+
default:
|
|
183
|
+
return '200';
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
getSuccessDescription(httpMethod) {
|
|
187
|
+
switch (httpMethod.toUpperCase()) {
|
|
188
|
+
case 'POST':
|
|
189
|
+
return 'Created';
|
|
190
|
+
case 'GET':
|
|
191
|
+
return 'Success';
|
|
192
|
+
case 'PUT':
|
|
193
|
+
return 'Updated';
|
|
194
|
+
case 'PATCH':
|
|
195
|
+
return 'Partially Updated';
|
|
196
|
+
case 'DELETE':
|
|
197
|
+
return 'Deleted';
|
|
198
|
+
default:
|
|
199
|
+
return 'Success';
|
|
200
|
+
}
|
|
201
|
+
}
|
|
108
202
|
analyzedTypeToSchema(type) {
|
|
109
203
|
if (type.isArray) {
|
|
110
204
|
return {
|
|
@@ -123,7 +217,16 @@ class OpenApiTransformer {
|
|
|
123
217
|
const properties = {};
|
|
124
218
|
const required = [];
|
|
125
219
|
for (const prop of type.properties) {
|
|
126
|
-
|
|
220
|
+
const propSchema = this.analyzedTypeToSchema(prop.type);
|
|
221
|
+
// Add description from JSDoc if available
|
|
222
|
+
if (prop.description) {
|
|
223
|
+
propSchema.description = prop.description;
|
|
224
|
+
}
|
|
225
|
+
// Add smart example based on property name
|
|
226
|
+
if (!propSchema.example && !propSchema.$ref) {
|
|
227
|
+
propSchema.example = this.generateSmartExample(prop.name, prop.type.type);
|
|
228
|
+
}
|
|
229
|
+
properties[prop.name] = propSchema;
|
|
127
230
|
if (!prop.type.isOptional) {
|
|
128
231
|
required.push(prop.name);
|
|
129
232
|
}
|
|
@@ -160,22 +263,103 @@ class OpenApiTransformer {
|
|
|
160
263
|
});
|
|
161
264
|
return samples;
|
|
162
265
|
}
|
|
266
|
+
generateSmartExample(propertyName, propertyType) {
|
|
267
|
+
const lowerName = propertyName.toLowerCase();
|
|
268
|
+
const lowerType = propertyType.toLowerCase();
|
|
269
|
+
// Email patterns
|
|
270
|
+
if (lowerName.includes('email')) {
|
|
271
|
+
return 'user@example.com';
|
|
272
|
+
}
|
|
273
|
+
// Name patterns
|
|
274
|
+
if (lowerName.includes('name') || lowerName === 'title') {
|
|
275
|
+
return 'John Doe';
|
|
276
|
+
}
|
|
277
|
+
// Phone patterns
|
|
278
|
+
if (lowerName.includes('phone') || lowerName.includes('mobile')) {
|
|
279
|
+
return '+1234567890';
|
|
280
|
+
}
|
|
281
|
+
// Address patterns
|
|
282
|
+
if (lowerName.includes('address') || lowerName.includes('street')) {
|
|
283
|
+
return '123 Main St';
|
|
284
|
+
}
|
|
285
|
+
if (lowerName.includes('city')) {
|
|
286
|
+
return 'New York';
|
|
287
|
+
}
|
|
288
|
+
if (lowerName.includes('country')) {
|
|
289
|
+
return 'United States';
|
|
290
|
+
}
|
|
291
|
+
if (lowerName.includes('zip') || lowerName.includes('postal')) {
|
|
292
|
+
return '10001';
|
|
293
|
+
}
|
|
294
|
+
// ID patterns
|
|
295
|
+
if (lowerName === 'id' || lowerName.endsWith('id')) {
|
|
296
|
+
return 1;
|
|
297
|
+
}
|
|
298
|
+
// Age pattern
|
|
299
|
+
if (lowerName === 'age') {
|
|
300
|
+
return 25;
|
|
301
|
+
}
|
|
302
|
+
// Price/Amount patterns
|
|
303
|
+
if (lowerName.includes('price') || lowerName.includes('amount') || lowerName.includes('cost')) {
|
|
304
|
+
return 99.99;
|
|
305
|
+
}
|
|
306
|
+
// URL patterns
|
|
307
|
+
if (lowerName.includes('url') || lowerName.includes('link')) {
|
|
308
|
+
return 'https://example.com';
|
|
309
|
+
}
|
|
310
|
+
// Description/Content patterns
|
|
311
|
+
if (lowerName.includes('description') || lowerName.includes('content') || lowerName.includes('text')) {
|
|
312
|
+
return 'Sample description text';
|
|
313
|
+
}
|
|
314
|
+
// Password pattern
|
|
315
|
+
if (lowerName.includes('password')) {
|
|
316
|
+
return 'SecurePassword123!';
|
|
317
|
+
}
|
|
318
|
+
// Username pattern
|
|
319
|
+
if (lowerName.includes('username')) {
|
|
320
|
+
return 'johndoe';
|
|
321
|
+
}
|
|
322
|
+
// Status pattern
|
|
323
|
+
if (lowerName.includes('status')) {
|
|
324
|
+
return 'active';
|
|
325
|
+
}
|
|
326
|
+
// Role pattern
|
|
327
|
+
if (lowerName.includes('role')) {
|
|
328
|
+
return 'user';
|
|
329
|
+
}
|
|
330
|
+
// Date patterns
|
|
331
|
+
if (lowerName.includes('date') || lowerName.includes('createdat') || lowerName.includes('updatedat')) {
|
|
332
|
+
return '2024-01-01T00:00:00.000Z';
|
|
333
|
+
}
|
|
334
|
+
// Type-based fallbacks
|
|
335
|
+
if (lowerType.includes('number') || lowerType.includes('int') || lowerType.includes('float')) {
|
|
336
|
+
return 0;
|
|
337
|
+
}
|
|
338
|
+
if (lowerType.includes('boolean')) {
|
|
339
|
+
return true;
|
|
340
|
+
}
|
|
341
|
+
if (lowerType.includes('date')) {
|
|
342
|
+
return '2024-01-01T00:00:00.000Z';
|
|
343
|
+
}
|
|
344
|
+
// Default to string
|
|
345
|
+
return 'sample value';
|
|
346
|
+
}
|
|
163
347
|
typeStringToSchema(type) {
|
|
164
348
|
const lowerType = type.toLowerCase();
|
|
165
349
|
if (lowerType.includes('string')) {
|
|
166
|
-
return { type: 'string' };
|
|
350
|
+
return { type: 'string', example: 'sample string' };
|
|
167
351
|
}
|
|
168
352
|
if (lowerType.includes('number') || lowerType.includes('int') || lowerType.includes('float')) {
|
|
169
|
-
return { type: 'number' };
|
|
353
|
+
return { type: 'number', example: 0 };
|
|
170
354
|
}
|
|
171
355
|
if (lowerType.includes('boolean')) {
|
|
172
|
-
return { type: 'boolean' };
|
|
356
|
+
return { type: 'boolean', example: true };
|
|
173
357
|
}
|
|
174
358
|
if (lowerType.includes('date')) {
|
|
175
|
-
return { type: 'string', format: 'date-time' };
|
|
359
|
+
return { type: 'string', format: 'date-time', example: '2024-01-01T00:00:00.000Z' };
|
|
176
360
|
}
|
|
177
361
|
// Default to string
|
|
178
|
-
return { type: 'string' };
|
|
362
|
+
return { type: 'string', example: 'value' };
|
|
179
363
|
}
|
|
180
364
|
}
|
|
181
365
|
exports.OpenApiTransformer = OpenApiTransformer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApiTransformer.js","sourceRoot":"","sources":["../../src/utils/OpenApiTransformer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OpenApiTransformer.js","sourceRoot":"","sources":["../../src/utils/OpenApiTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example Controller demonstrating full metadata extraction
|
|
3
|
+
* This controller showcases all the new features:
|
|
4
|
+
* - Request Body schemas with @Body()
|
|
5
|
+
* - Response schemas with proper return types
|
|
6
|
+
* - Status codes (POST=201, GET=200, etc.)
|
|
7
|
+
* - Query and Path parameters
|
|
8
|
+
* - JSDoc descriptions
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { Controller, Get, Post, Put, Delete, Body, Param, Query } from '@nestjs/common';
|
|
12
|
+
import {
|
|
13
|
+
CreateUserDto,
|
|
14
|
+
UpdateUserDto,
|
|
15
|
+
UserResponseDto,
|
|
16
|
+
PaginationQueryDto,
|
|
17
|
+
PaginatedResponseDto,
|
|
18
|
+
} from './example-dto';
|
|
19
|
+
|
|
20
|
+
@Controller('users')
|
|
21
|
+
export class UsersController {
|
|
22
|
+
/**
|
|
23
|
+
* Get all users with pagination
|
|
24
|
+
* @returns Paginated list of users
|
|
25
|
+
*/
|
|
26
|
+
@Get()
|
|
27
|
+
findAll(@Query() query: PaginationQueryDto): Promise<PaginatedResponseDto<UserResponseDto>> {
|
|
28
|
+
// Implementation here
|
|
29
|
+
return Promise.resolve({
|
|
30
|
+
data: [],
|
|
31
|
+
total: 0,
|
|
32
|
+
page: 1,
|
|
33
|
+
limit: 10,
|
|
34
|
+
totalPages: 0,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Get a single user by ID
|
|
40
|
+
* @param id User ID
|
|
41
|
+
* @returns User details
|
|
42
|
+
*/
|
|
43
|
+
@Get(':id')
|
|
44
|
+
findOne(@Param('id') id: string): Promise<UserResponseDto> {
|
|
45
|
+
// Implementation here
|
|
46
|
+
return Promise.resolve({} as UserResponseDto);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Create a new user
|
|
51
|
+
* @param createUserDto User creation data
|
|
52
|
+
* @returns Created user details
|
|
53
|
+
*/
|
|
54
|
+
@Post()
|
|
55
|
+
create(@Body() createUserDto: CreateUserDto): Promise<UserResponseDto> {
|
|
56
|
+
// Implementation here
|
|
57
|
+
return Promise.resolve({} as UserResponseDto);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Update an existing user
|
|
62
|
+
* @param id User ID
|
|
63
|
+
* @param updateUserDto User update data
|
|
64
|
+
* @returns Updated user details
|
|
65
|
+
*/
|
|
66
|
+
@Put(':id')
|
|
67
|
+
update(
|
|
68
|
+
@Param('id') id: string,
|
|
69
|
+
@Body() updateUserDto: UpdateUserDto,
|
|
70
|
+
): Promise<UserResponseDto> {
|
|
71
|
+
// Implementation here
|
|
72
|
+
return Promise.resolve({} as UserResponseDto);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Delete a user
|
|
77
|
+
* @param id User ID
|
|
78
|
+
* @returns Deletion confirmation
|
|
79
|
+
*/
|
|
80
|
+
@Delete(':id')
|
|
81
|
+
remove(@Param('id') id: string): Promise<{ message: string }> {
|
|
82
|
+
// Implementation here
|
|
83
|
+
return Promise.resolve({ message: 'User deleted successfully' });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example DTOs demonstrating full metadata extraction
|
|
3
|
+
* These DTOs showcase JSDoc comments, required fields, and nested structures
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export enum UserRole {
|
|
7
|
+
ADMIN = 'admin',
|
|
8
|
+
USER = 'user',
|
|
9
|
+
GUEST = 'guest',
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class CreateUserDto {
|
|
13
|
+
/**
|
|
14
|
+
* User's full name
|
|
15
|
+
*/
|
|
16
|
+
name: string;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* User's email address (must be unique)
|
|
20
|
+
*/
|
|
21
|
+
email: string;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* User's password (min 8 characters)
|
|
25
|
+
*/
|
|
26
|
+
password: string;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* User's role in the system
|
|
30
|
+
*/
|
|
31
|
+
role: UserRole;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* User's age (optional)
|
|
35
|
+
*/
|
|
36
|
+
age?: number;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* User's phone number (optional)
|
|
40
|
+
*/
|
|
41
|
+
phone?: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export class UpdateUserDto {
|
|
45
|
+
/**
|
|
46
|
+
* User's full name (optional for updates)
|
|
47
|
+
*/
|
|
48
|
+
name?: string;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* User's email address (optional for updates)
|
|
52
|
+
*/
|
|
53
|
+
email?: string;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* User's role in the system (optional for updates)
|
|
57
|
+
*/
|
|
58
|
+
role?: UserRole;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* User's age (optional)
|
|
62
|
+
*/
|
|
63
|
+
age?: number;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export class AddressDto {
|
|
67
|
+
/**
|
|
68
|
+
* Street address
|
|
69
|
+
*/
|
|
70
|
+
street: string;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* City name
|
|
74
|
+
*/
|
|
75
|
+
city: string;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Country name
|
|
79
|
+
*/
|
|
80
|
+
country: string;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Postal/ZIP code (optional)
|
|
84
|
+
*/
|
|
85
|
+
zipCode?: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export class UserResponseDto {
|
|
89
|
+
/**
|
|
90
|
+
* Unique user identifier
|
|
91
|
+
*/
|
|
92
|
+
id: number;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* User's full name
|
|
96
|
+
*/
|
|
97
|
+
name: string;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* User's email address
|
|
101
|
+
*/
|
|
102
|
+
email: string;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* User's role in the system
|
|
106
|
+
*/
|
|
107
|
+
role: UserRole;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* User's age
|
|
111
|
+
*/
|
|
112
|
+
age?: number;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* User's phone number
|
|
116
|
+
*/
|
|
117
|
+
phone?: string;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* User's address information
|
|
121
|
+
*/
|
|
122
|
+
address?: AddressDto;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Timestamp when the user was created
|
|
126
|
+
*/
|
|
127
|
+
createdAt: Date;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Timestamp when the user was last updated
|
|
131
|
+
*/
|
|
132
|
+
updatedAt: Date;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export class PaginationQueryDto {
|
|
136
|
+
/**
|
|
137
|
+
* Page number (starts from 1)
|
|
138
|
+
*/
|
|
139
|
+
page?: number;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Number of items per page
|
|
143
|
+
*/
|
|
144
|
+
limit?: number;
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Sort field name
|
|
148
|
+
*/
|
|
149
|
+
sortBy?: string;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Sort order (asc or desc)
|
|
153
|
+
*/
|
|
154
|
+
order?: 'asc' | 'desc';
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export class PaginatedResponseDto<T> {
|
|
158
|
+
/**
|
|
159
|
+
* Array of items for the current page
|
|
160
|
+
*/
|
|
161
|
+
data: T[];
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Total number of items across all pages
|
|
165
|
+
*/
|
|
166
|
+
total: number;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Current page number
|
|
170
|
+
*/
|
|
171
|
+
page: number;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Number of items per page
|
|
175
|
+
*/
|
|
176
|
+
limit: number;
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Total number of pages
|
|
180
|
+
*/
|
|
181
|
+
totalPages: number;
|
|
182
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nest-scramble",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "A next-generation, decorator-free API documentation engine and intelligent mock server for NestJS, engineered by Mohamed Mustafa",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|