nestjs-openapi-parser 0.0.2 → 0.0.4

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 CHANGED
@@ -183,6 +183,20 @@ export class UsersController {
183
183
  Run `npx nestparser --out openapi.json` — that's it. See [What it parses](docs/parser.md) for
184
184
  every supported construct (DTOs, `class-validator` constraints, enums, `@Scope`, `@Tag`, hooks…).
185
185
 
186
+ ## Available JSDoc tags
187
+
188
+ Add these to a controller, method, or property JSDoc to enrich the output. Each must be on its own line (inline mentions are treated as description text).
189
+
190
+ | Tag | Applies to | Effect |
191
+ | --------------------------- | ------------------------------- | ----------------------------------------------------------------------------------------------- |
192
+ | `@Tag <name>` | Controller or method | Group the operation under `<name>` instead of the tag derived from the class name |
193
+ | `@Name <text>` | Method | Set the operation `summary` (otherwise the method name, humanized) |
194
+ | `@Scope <name>` | Controller, method, or property | Emit the item only when `<name>` is an active scope. Comma-separated for several (`@Scope a,b`) |
195
+ | `@Accept <media-type>` | Method | Request body (`@Body()`) media type — default `application/json` |
196
+ | `@ContentType <media-type>` | Method | Response media type — default `application/json` |
197
+
198
+ Inside any JSDoc body you can also wrap text in `<scope>…</scope>` fragments to show it only under matching scopes — see [Configuration](docs/configuration.md#scoped-description-fragments).
199
+
186
200
  ## What it parses
187
201
 
188
202
  See [Parser Documentation](docs/parser.md)
@@ -20,8 +20,13 @@ export declare class PathBuilder {
20
20
  private readonly paths;
21
21
  private readonly usedOperationIds;
22
22
  private readonly tags;
23
- /** Distinct method-level `@Tag` names seen, declared in root after controllers. */
24
- private readonly methodTagNames;
23
+ /**
24
+ * Tag names actually referenced by an emitted operation — each operation's
25
+ * `@Tag`, or the controller tag it falls back to. A controller tag absent here
26
+ * is unused (e.g. its only method overrides it with its own `@Tag`) and so is
27
+ * not emitted in the root `tags[]`.
28
+ */
29
+ private readonly usedTagNames;
25
30
  private readonly globalPrefix;
26
31
  private readonly hooks;
27
32
  private readonly registeredSchemes;
@@ -30,11 +35,13 @@ export declare class PathBuilder {
30
35
  constructor(index: AstIndex, schemaBuilder: SchemaBuilder, options?: PathBuilderOptions);
31
36
  build(): Record<string, Record<string, unknown>>;
32
37
  /**
33
- * Root `tags[]` entries: one per distinct tag name in play. Controller tags
34
- * (name from `@Tag`/the default-tag hook, description from the class JSDoc;
35
- * first controller wins on a shared name) come first, then any method-level
36
- * `@Tag` name a controller didn't already declare — description-less, since a
37
- * method's JSDoc is its operation description, not a tag description.
38
+ * Root `tags[]` entries: one per tag name actually used by an operation.
39
+ * Controller tags (name from `@Tag`/the default-tag hook, description from the
40
+ * class JSDoc; first controller wins on a shared name) come first, then any
41
+ * method-level `@Tag` name a controller didn't already declare — description-
42
+ * less, since a method's JSDoc is its operation description, not a tag
43
+ * description. A controller tag no operation references (every method overrides
44
+ * it) is dropped, so empty controllers don't leak a dangling tag.
38
45
  */
39
46
  getTags(): {
40
47
  name: string;
@@ -50,6 +57,20 @@ export declare class PathBuilder {
50
57
  private resolveSummary;
51
58
  private buildQueryParameters;
52
59
  private buildRequestBody;
60
+ /**
61
+ * The file upload form fields of an endpoint. Names come from the method's
62
+ * `@UseInterceptors` (`FileInterceptor('x')` → single, `FilesInterceptor('x')`
63
+ * → array). When no recognized interceptor is present, falls back to
64
+ * `@UploadedFile`/`@UploadedFiles` parameters — named by their string argument,
65
+ * else the parameter name.
66
+ */
67
+ private collectFileFields;
68
+ private interceptorFileFields;
69
+ /**
70
+ * Build a multipart request body merging the `@Body()` DTO's fields (inlined,
71
+ * like `@Query() dto`) with the upload's `format: binary` file field(s).
72
+ */
73
+ private buildUploadRequestBody;
53
74
  private buildResponses;
54
75
  /**
55
76
  * The success status code for an operation: an explicit `@HttpCode(...)` when
@@ -11,6 +11,12 @@ const HTTP_METHODS = {
11
11
  Delete: 'delete',
12
12
  Patch: 'patch',
13
13
  };
14
+ // Media type used for request bodies and responses unless an endpoint overrides
15
+ // it with `@Accept` (request) or `@ContentType` (response) in its JSDoc.
16
+ const DEFAULT_MEDIA_TYPE = 'application/json';
17
+ // Default request media type for endpoints with a file upload (binary data
18
+ // can't ride in JSON), used unless `@Accept` says otherwise.
19
+ const MULTIPART_MEDIA_TYPE = 'multipart/form-data';
14
20
  // NestJS's `HttpStatus` enum (from `@nestjs/common`) member name → numeric code.
15
21
  // Used to resolve `@HttpCode(HttpStatus.NO_CONTENT)` statically, since we can't
16
22
  // import `@nestjs/common` to read the value at runtime.
@@ -82,8 +88,13 @@ class PathBuilder {
82
88
  paths = {};
83
89
  usedOperationIds = new Set();
84
90
  tags = new Map();
85
- /** Distinct method-level `@Tag` names seen, declared in root after controllers. */
86
- methodTagNames = new Set();
91
+ /**
92
+ * Tag names actually referenced by an emitted operation — each operation's
93
+ * `@Tag`, or the controller tag it falls back to. A controller tag absent here
94
+ * is unused (e.g. its only method overrides it with its own `@Tag`) and so is
95
+ * not emitted in the root `tags[]`.
96
+ */
97
+ usedTagNames = new Set();
87
98
  globalPrefix;
88
99
  hooks;
89
100
  registeredSchemes;
@@ -105,21 +116,25 @@ class PathBuilder {
105
116
  // Declare any method-level @Tag name no controller already declared, so the
106
117
  // operation's tag isn't dangling. Done after all controllers so a controller's
107
118
  // description always wins over a description-less method-tag placeholder.
108
- for (const name of this.methodTagNames) {
119
+ for (const name of this.usedTagNames) {
109
120
  if (!this.tags.has(name))
110
121
  this.tags.set(name, undefined);
111
122
  }
112
123
  return this.paths;
113
124
  }
114
125
  /**
115
- * Root `tags[]` entries: one per distinct tag name in play. Controller tags
116
- * (name from `@Tag`/the default-tag hook, description from the class JSDoc;
117
- * first controller wins on a shared name) come first, then any method-level
118
- * `@Tag` name a controller didn't already declare — description-less, since a
119
- * method's JSDoc is its operation description, not a tag description.
126
+ * Root `tags[]` entries: one per tag name actually used by an operation.
127
+ * Controller tags (name from `@Tag`/the default-tag hook, description from the
128
+ * class JSDoc; first controller wins on a shared name) come first, then any
129
+ * method-level `@Tag` name a controller didn't already declare — description-
130
+ * less, since a method's JSDoc is its operation description, not a tag
131
+ * description. A controller tag no operation references (every method overrides
132
+ * it) is dropped, so empty controllers don't leak a dangling tag.
120
133
  */
121
134
  getTags() {
122
- return [...this.tags.entries()].map(([name, description]) => description ? { name, description } : { name });
135
+ return [...this.tags.entries()]
136
+ .filter(([name]) => this.usedTagNames.has(name))
137
+ .map(([name, description]) => (description ? { name, description } : { name }));
123
138
  }
124
139
  processController(controller) {
125
140
  if (!(0, tags_1.isVisible)((0, tags_1.getScopes)((0, tags_1.getTags)(controller)), this.activeScopes))
@@ -157,7 +172,7 @@ class PathBuilder {
157
172
  for (const route of routePaths) {
158
173
  const rawPath = this.joinPath(this.globalPrefix, base, route);
159
174
  for (const fullPath of this.expandRoutePaths(rawPath, controller, method)) {
160
- this.methodTagNames.add(methodTag);
175
+ this.usedTagNames.add(methodTag);
161
176
  const templateParams = this.pathParamNames(fullPath);
162
177
  const operation = this.buildOperation(controller, method, httpMethod, methodTag, templateParams);
163
178
  this.paths[fullPath] ??= {};
@@ -175,6 +190,10 @@ class PathBuilder {
175
190
  const summary = this.resolveSummary(controller, method, httpMethod);
176
191
  if (summary)
177
192
  operation.summary = summary;
193
+ // `@Accept <type>` overrides the request body media type; `@ContentType
194
+ // <type>` overrides the response media type. Both default to JSON.
195
+ const methodTags = (0, tags_1.getTags)(method);
196
+ const responseMediaType = methodTags.ContentType?.[0] || DEFAULT_MEDIA_TYPE;
178
197
  const rawDesc = method.getJsDocs()[0]?.getCommentText();
179
198
  const desc = rawDesc
180
199
  ? (0, tags_1.filterScopedComments)(rawDesc, this.activeScopes, {
@@ -190,7 +209,7 @@ class PathBuilder {
190
209
  // `{param}` that has no parameter object.
191
210
  const explicitPathParams = new Map();
192
211
  const otherParameters = [];
193
- let requestBody;
212
+ let bodyParam;
194
213
  for (const param of method.getParameters()) {
195
214
  const decorator = param
196
215
  .getDecorators()
@@ -223,10 +242,21 @@ class PathBuilder {
223
242
  break;
224
243
  }
225
244
  case 'Body':
226
- requestBody = this.buildRequestBody(param);
245
+ bodyParam = param;
227
246
  break;
228
247
  }
229
248
  }
249
+ // File uploads (@UploadedFile/@UploadedFiles, named by their FileInterceptor)
250
+ // become `format: binary` form fields, merged with any @Body() fields into a
251
+ // single multipart schema. With a file present the request defaults to
252
+ // multipart/form-data; `@Accept` still overrides it.
253
+ const fileFields = this.collectFileFields(method);
254
+ const acceptMediaType = methodTags.Accept?.[0] || (fileFields.length ? MULTIPART_MEDIA_TYPE : DEFAULT_MEDIA_TYPE);
255
+ const requestBody = fileFields.length
256
+ ? this.buildUploadRequestBody(bodyParam, fileFields, acceptMediaType)
257
+ : bodyParam
258
+ ? this.buildRequestBody(bodyParam, acceptMediaType)
259
+ : undefined;
230
260
  // Every `{param}` in the route template must have a path-parameter entry, in
231
261
  // template order — even when the handler never binds it with @Param('name')
232
262
  // (e.g. it uses `@Param() all`, `@Req()`, or the name simply doesn't match).
@@ -242,7 +272,7 @@ class PathBuilder {
242
272
  operation.parameters = parameters;
243
273
  if (requestBody)
244
274
  operation.requestBody = requestBody;
245
- operation.responses = this.buildResponses(method, httpMethod);
275
+ operation.responses = this.buildResponses(method, httpMethod, responseMediaType);
246
276
  const security = this.buildSecurity(controller, method);
247
277
  if (security !== undefined)
248
278
  operation.security = security;
@@ -281,11 +311,81 @@ class PathBuilder {
281
311
  schema,
282
312
  }));
283
313
  }
284
- buildRequestBody(param) {
314
+ buildRequestBody(param, mediaType) {
285
315
  const schema = this.schemaBuilder.typeToSchema(param.getType());
286
- return { required: true, content: { 'application/json': { schema } } };
316
+ return { required: true, content: { [mediaType]: { schema } } };
317
+ }
318
+ /**
319
+ * The file upload form fields of an endpoint. Names come from the method's
320
+ * `@UseInterceptors` (`FileInterceptor('x')` → single, `FilesInterceptor('x')`
321
+ * → array). When no recognized interceptor is present, falls back to
322
+ * `@UploadedFile`/`@UploadedFiles` parameters — named by their string argument,
323
+ * else the parameter name.
324
+ */
325
+ collectFileFields(method) {
326
+ const fromInterceptors = this.interceptorFileFields(method);
327
+ if (fromInterceptors.length)
328
+ return fromInterceptors;
329
+ const fields = [];
330
+ for (const param of method.getParameters()) {
331
+ const dec = param
332
+ .getDecorators()
333
+ .find((d) => d.getName() === 'UploadedFile' || d.getName() === 'UploadedFiles');
334
+ if (!dec)
335
+ continue;
336
+ fields.push({
337
+ name: this.stringArg(dec, 0) ?? param.getName(),
338
+ multiple: dec.getName() === 'UploadedFiles',
339
+ });
340
+ }
341
+ return fields;
342
+ }
343
+ interceptorFileFields(method) {
344
+ const dec = method.getDecorator('UseInterceptors');
345
+ if (!dec)
346
+ return [];
347
+ const fields = [];
348
+ for (const arg of dec.getArguments()) {
349
+ if (!ts_morph_1.Node.isCallExpression(arg))
350
+ continue;
351
+ const fn = arg.getExpression().getText();
352
+ const first = arg.getArguments()[0];
353
+ if (!first || !ts_morph_1.Node.isStringLiteral(first))
354
+ continue;
355
+ if (fn === 'FileInterceptor')
356
+ fields.push({ name: first.getLiteralValue(), multiple: false });
357
+ else if (fn === 'FilesInterceptor')
358
+ fields.push({ name: first.getLiteralValue(), multiple: true });
359
+ }
360
+ return fields;
361
+ }
362
+ /**
363
+ * Build a multipart request body merging the `@Body()` DTO's fields (inlined,
364
+ * like `@Query() dto`) with the upload's `format: binary` file field(s).
365
+ */
366
+ buildUploadRequestBody(bodyParam, fileFields, mediaType) {
367
+ const properties = {};
368
+ const required = [];
369
+ if (bodyParam) {
370
+ const className = ast_index_1.AstIndex.symbolName(bodyParam.getType());
371
+ const clazz = className ? this.index.getClass(className) : undefined;
372
+ if (clazz) {
373
+ const members = this.schemaBuilder.buildMembers(clazz);
374
+ Object.assign(properties, members.properties);
375
+ required.push(...members.required);
376
+ }
377
+ }
378
+ for (const file of fileFields) {
379
+ const binary = { type: 'string', format: 'binary' };
380
+ properties[file.name] = file.multiple ? { type: 'array', items: binary } : binary;
381
+ required.push(file.name);
382
+ }
383
+ const schema = { type: 'object', properties };
384
+ if (required.length)
385
+ schema.required = required;
386
+ return { required: true, content: { [mediaType]: { schema } } };
287
387
  }
288
- buildResponses(method, httpMethod) {
388
+ buildResponses(method, httpMethod, mediaType) {
289
389
  let returnType = method.getReturnType();
290
390
  if (ast_index_1.AstIndex.symbolName(returnType) === 'Promise') {
291
391
  const args = returnType.getTypeArguments();
@@ -296,7 +396,7 @@ class PathBuilder {
296
396
  const status = this.responseStatus(method, httpMethod);
297
397
  const response = { description: 'Successful response' };
298
398
  if (responseSchema !== undefined) {
299
- response.content = { 'application/json': { schema: responseSchema } };
399
+ response.content = { [mediaType]: { schema: responseSchema } };
300
400
  }
301
401
  return { [status]: response };
302
402
  }
@@ -1 +1 @@
1
- {"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../src/parser/path-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../src/parser/path-builder.ts"],"names":[],"mappings":"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"}
package/docs/parser.md CHANGED
@@ -59,27 +59,69 @@ HTTP-method decorators (and `@Controller`, `@Body`, `@Query`, `@Param`, `@Header
59
59
 
60
60
  ## Parameters & request body
61
61
 
62
- | Source | Becomes |
63
- | ----------------------------- | --------------------------------------------------------------- |
64
- | `@Param('id')` | path parameter (`required: true`) |
65
- | `@Param('id', ParseUUIDPipe)` | `{ type: 'string', format: 'uuid' }` |
66
- | `@Param('id', ParseIntPipe)` | `{ type: 'integer' }` |
67
- | `@Param('id', ParseBoolPipe)` | `{ type: 'boolean' }` |
68
- | `@Query('q')` | named query parameter |
69
- | `@Query() dto: SomeQueryDto` | expanded into individual query parameters from the DTO |
70
- | `@Body() dto: SomeBodyDto` | `requestBody` with `application/json` schema (`required: true`) |
71
- | `@Headers('x-foo')` | header parameter (`type: string`) |
62
+ | Source | Becomes |
63
+ | -------------------------------------------- | ------------------------------------------------------------------------- |
64
+ | `@Param('id')` | path parameter (`required: true`) |
65
+ | `@Param('id', ParseUUIDPipe)` | `{ type: 'string', format: 'uuid' }` |
66
+ | `@Param('id', ParseIntPipe)` | `{ type: 'integer' }` |
67
+ | `@Param('id', ParseBoolPipe)` | `{ type: 'boolean' }` |
68
+ | `@Query('q')` | named query parameter |
69
+ | `@Query() dto: SomeQueryDto` | expanded into individual query parameters from the DTO |
70
+ | `@Body() dto: SomeBodyDto` | `requestBody` with `application/json` schema (`required: true`) |
71
+ | `@Headers('x-foo')` | header parameter (`type: string`) |
72
+ | `@UploadedFile()` + `FileInterceptor('f')` | `multipart/form-data` body with `f: { type: 'string', format: 'binary' }` |
73
+ | `@UploadedFiles()` + `FilesInterceptor('f')` | the same, as `{ type: 'array', items: { …binary } }` |
72
74
 
73
75
  Pipe detection is **textual** — it looks for `ParseUUIDPipe` / `ParseIntPipe` / `ParseBoolPipe` in the decorator's arguments source. Custom pipes fall back to the parameter's TypeScript type.
74
76
 
75
77
  **Path parameters always match the route template.** Every `:placeholder` in the route (`@Controller`, `@Get`, the global prefix) is emitted as a `required: true` path parameter, in template order — so the document is never invalid for a missing parameter object. When a `:placeholder` has a matching `@Param('placeholder')`, its schema (incl. pipe-derived `uuid`/`integer`/`boolean`) is used; otherwise — the handler reads `@Param() all`, `@Req()`, or the names simply don't line up — it defaults to `{ type: 'string' }`. A `@Param('x')` whose name isn't in the route template is ignored (it can't be a valid path parameter).
76
78
 
79
+ ### File uploads
80
+
81
+ An endpoint with `@UploadedFile()` / `@UploadedFiles()` produces a `multipart/form-data` request body. The file field's **name** comes from the matching `FileInterceptor('field')` / `FilesInterceptor('field')` in `@UseInterceptors` (falling back to the parameter name if no interceptor is recognized), and its schema is `{ type: 'string', format: 'binary' }` — wrapped in an array for `@UploadedFiles` / `FilesInterceptor`. Any `@Body()` DTO on the same handler is **inlined** alongside the file field(s) in the one multipart object (just like `@Query() dto`). The media type defaults to `multipart/form-data` whenever a file is present; an explicit `@Accept` still overrides it.
82
+
83
+ ```ts
84
+ @Post('upload')
85
+ @UseInterceptors(FileInterceptor('file'))
86
+ uploadFile(
87
+ @Body() dto: UploadMonitoringDTO, // form fields, inlined
88
+ @UploadedFile() file: Express.Multer.File, // file: { type: string, format: binary }
89
+ ) { /* ... */ }
90
+ ```
91
+
92
+ The file is marked `required`. `FileFieldsInterceptor` (multiple named fields) isn't parsed yet — fall back to declaring the field via a JSDoc-described `@Body()` DTO if you need it.
93
+
77
94
  ## Responses
78
95
 
79
96
  The default is "method return type **is** the response body" with status `201` for `POST` and `200` for everything else. `Promise<T>` is unwrapped to `T` first. Customize the body with the [`buildResponseSchema`](configuration.md#hooks-project-specific-glue) hook.
80
97
 
81
98
  **`@HttpCode(...)` overrides the status.** A handler decorated with `@HttpCode(204)` (numeric literal) or `@HttpCode(HttpStatus.NO_CONTENT)` (the `HttpStatus` member is resolved from a built-in name→code table) uses that code as the response key instead of the 201/200 default — matching NestJS's own behavior.
82
99
 
100
+ ## Media types — `@Accept` / `@ContentType`
101
+
102
+ Request bodies and responses default to `application/json`. Override per endpoint with a JSDoc tag on the method (single line, like `@Tag`/`@Name`):
103
+
104
+ | Tag | Overrides |
105
+ | --------------------------- | ------------------------------------------- |
106
+ | `@Accept <media-type>` | the **request body** media type (`@Body()`) |
107
+ | `@ContentType <media-type>` | the **response** media type |
108
+
109
+ ```ts
110
+ @Controller('files')
111
+ export class FilesController {
112
+ /**
113
+ * @Accept multipart/form-data
114
+ * @ContentType application/xml
115
+ */
116
+ @Post('upload')
117
+ upload(@Body() dto: UploadDto): FileInfo {
118
+ /* ... */
119
+ }
120
+ }
121
+ ```
122
+
123
+ The `@Body()` schema becomes the `multipart/form-data` content, and the response schema the `application/xml` content. Each tag is independent — set one, the other stays JSON. `@Accept` has no effect on an endpoint without a `@Body()`; `@ContentType` has none when the response has no body.
124
+
83
125
  ## Schemas
84
126
 
85
127
  The schema builder accepts TypeScript classes and produces OpenAPI object schemas:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nestjs-openapi-parser",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "CLI that parses a NestJS project with ts-morph and generates an OpenAPI document.",
5
5
  "author": "MobilyFlow",
6
6
  "license": "MIT",