Skip to content
forked from lukeautry/tsoa

A TSOA fork that only has expressjs dependencies and other optimizations/fixes.

License

Notifications You must be signed in to change notification settings

FastComments/tsoa

 
 

Repository files navigation

@fastcomments/tsoa

FastComments Fork of TSOA

Express-only, optimized OpenAPI-compliant REST APIs using TypeScript and Node

npm version

About This Fork

This is a FastComments maintained fork of the original TSOA project. This fork includes:

  • Express-only support - Removed Koa, Hapi and other framework dependencies for a lighter package
  • Performance optimizations - Various improvements for better runtime performance
  • Bug fixes - Additional fixes not yet in upstream
  • Reduced dependencies - Cleaner dependency tree focused on Express ecosystem

The original TSOA documentation largely applies, but note that only Express is supported as a framework.

Goal

  • TypeScript controllers and models as the single source of truth for your API
  • A valid OpenAPI (formerly Swagger) spec (2.0 or 3.0 if you choose 😍) is generated from your controllers and models, including:
    • Paths (e.g. GET /users)
    • Definitions based on TypeScript interfaces (models)
    • Parameters/model properties marked as required or optional based on TypeScript (e.g. myProperty?: string is optional in the OpenAPI spec)
    • jsDoc supported for object descriptions (most other metadata can be inferred from TypeScript types)
  • Routes are generated for Express middleware
    • Validate request payloads

Philosophy

  • Rely on TypeScript type annotations to generate API metadata if possible
  • If regular type annotations aren't an appropriate way to express metadata, use decorators
  • Use jsdoc for pure text metadata (e.g. endpoint descriptions)
  • Minimize boilerplate
  • Models are best represented by interfaces (pure data structures), but can also be represented by classes
  • Runtime validation of tsoa should behave as closely as possible to the specifications that the generated OpenAPI 2/3 schema describes. Any differences in validation logic are clarified by logging warnings during the generation of the OpenAPI Specification (OAS) and/or the routes.
    • Please note that by enabling OpenAPI 3 you minimize the chances of divergent validation logic since OpenAPI 3 has a more expressive schema syntax.

Getting Started

Examples

Check out the guides

See example controllers in the tests

See example models in the tests

Help wanted

Contributing code

To contribute (via a PR), please first see the Contributing Guide

Becoming a maintainer

tsoa wants additional maintainers! The library has increased in popularity and has quite a lot of pull requests and issues. Please post in this issue if you're willing to take on the role of a maintainer.

About

A TSOA fork that only has expressjs dependencies and other optimizations/fixes.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 97.8%
  • JavaScript 1.4%
  • Handlebars 0.8%