Skip to content

@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

bash
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:

typescript
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

DecoratorOpenAPI mapping
@DController(path)Sets the controller's base path
@DGet / @DPost / @DPut / @DPatch / @DDeleteMethod + 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

Released under the MIT License.