@routup/swagger-preset
A @trapi/metadata preset that maps routup's @routup/decorators (@DController, @DGet, @DBody, …) to OpenAPI primitives. Without this preset, the @routup/swagger generator wouldn't know what @DPath('id') means — the preset is the bridge.
Installation
npm install @routup/swagger-preset @routup/swagger@routup/swagger-preset peer-depends on @trapi/metadata. If you're calling @trapi/metadata directly (rare), install it explicitly; the @routup/swagger entry point pulls it in transitively.
Usage
You almost never import the preset directly. The generator takes its name as a string:
await generate({
version: Version.V3,
options: {
metadata: {
preset: '@routup/swagger-preset',
entryPoint: { cwd: process.cwd(), pattern: '**/*.ts' },
},
// ...
},
});The generator resolves '@routup/swagger-preset' to the package and runs its controllers, methods, and parameters handlers against your TypeScript AST.
What the preset registers
| Decorator | OpenAPI mapping |
|---|---|
@DController(path) | Sets the controller's base path |
@DGet / @DPost / @DPut / @DPatch / @DDelete | Method + sub-path |
@DPath(name) | path parameter |
@DQuery(name?) | query parameter |
@DBody(prop?) | requestBody (with optional property pick) |
@DCookie(name) | cookie parameter |
@DHeader(name) | header parameter |
@DCookies() / @DHeaders() / @DPaths() | bag-style parameters |
@DContext() / @DRequest() / @DResponse() / @DNext() | ignored — they're injection helpers, not API surface |
Customizing the preset
For most projects, the default preset is enough. If you need extra metadata (custom decorators, JSDoc-driven examples, security schemes), see @trapi/metadata documentation for how to write your own preset on top of buildPreset().
See also
@routup/swagger— the generator + UI plugin- Generator — how the preset is invoked
@routup/decorators— the decorators this preset interprets