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.
@@ -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;CACvB;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;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;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;IA4B7B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,iBAAiB;CAiC1B"}
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
- const parameters = method.getParameters().map(param => ({
144
- name: param.getName(),
145
- type: this.dtoAnalyzer.analyzeType(param.getType()),
146
- decorator: param.getDecorators().map(d => d.getText()).join(' '),
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":"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"}
1
+ {"version":3,"file":"ScannerService.js","sourceRoot":"","sources":["../../src/scanner/ScannerService.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export interface AnalyzedType {
10
10
  export interface PropertyInfo {
11
11
  name: string;
12
12
  type: AnalyzedType;
13
+ description?: string;
13
14
  }
14
15
  export declare class DtoAnalyzer {
15
16
  private visited;
@@ -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;CACpB;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;CAkB1B"}
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":"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"}
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;KAC9B,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;IAqCjI,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,eAAe;IA2DvB,OAAO,CAAC,oBAAoB;IA0C5B,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,kBAAkB;CAsB3B"}
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
- '200': {
57
- description: 'Success',
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.decorator?.includes('@Body')) {
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.decorator?.includes('@Query')) {
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.decorator?.includes('@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
- properties[prop.name] = this.analyzedTypeToSchema(prop.type);
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.0",
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",