Skip to content

devexperts/swagger-codegen-ts

Folders and files

NameName
Last commit message
Last commit date
May 3, 2023
May 13, 2021
May 13, 2021
Feb 16, 2023
Oct 4, 2021
Oct 25, 2019
Oct 8, 2019
Oct 25, 2019
May 13, 2021
Dec 10, 2019
Dec 13, 2018
Sep 10, 2021
Feb 17, 2023
Aug 29, 2019
May 13, 2021
Sep 14, 2021
Oct 31, 2019
Feb 17, 2023
May 11, 2023
Nov 26, 2019
May 20, 2020
Oct 8, 2019
Feb 17, 2023

Repository files navigation

Build Status

Typesafe OpenAPI generator for TypeScript

Features

  • Generates client code from OpenAPI 3.0, 2.0 (aka Swagger) and AsyncAPI specs
  • Pluggable HTTP clients: can use fetch, Axios or any other library
  • Flexible response types: works with Promises and reactive streams like RxJS
  • Runtime type checks: validates server responses against the spec
  • Written in pure TypeScript using fp-ts and io-ts libraries

Demo code

The examples below refer to the Pet Store OpenAPI 3.0 schema.

After running the codegen, interacting with a REST API may be as simple as this:

import { petController as createPetController } from "./src/generated/petstore.json/paths/PetController";
import { Pet } from "./src/generated/petstore.json/components/schemas/Pet";

// Creating a controller, see the "HTTP Clients" wiki page for more details
const petController = createPetController({ httpClient: fetchHttpClient });

// The returned object is guaranteed to be a valid `Pet`
const createdPet: Promise<Pet> = petController.addPet({
  body: {
    // The parameters are statically typed, IntelliSense works, too
    name: "Spotty",
    photoUrls: [],
  },
});

More usage scenarios are supported - check the usage page for more detail.

Installation

  1. Make sure the peer dependencies are installed, then install the codegen itself:

    yarn add typescript fp-ts io-ts io-ts-types
    yarn add -D @devexperts/swagger-codegen-ts
    
  2. Create a console script that would invoke the generate function, passing the options such as path to the schema file and the output directory. See the Generators page for the API reference, and examples/generate for sample scripts.

  3. In most cases, you might want to include the code generation step into the build and local launch scripts. Example:

    /* package.json */
    
      "scripts": {
    +   "generate:api": "ts-node scripts/generate-api.ts",
    -   "start": "react-scripts start",
    +   "start": "yarn generate:api && react-scripts start",
    -   "build": "react-scripts build"
    +   "build": "yarn generate:api && react-scripts build"
      }

Contributing

Please read the Contributors Guide for more information.