@icholy/openapi-ts
TypeScript icon, indicating that this package has built-in type declarations

3.10.0 • Public • Published

openapi-ts

Library for generating TypeScript interfaces from OpenAPI v3 documents.

  • This library is library is incomplete, it implements the subset of the spec that I personally need.

CLI:

The package comes with a cli tool with a basic transformer implementation.

$ openapi-ts ./openapi.json

Basic Usage:

import { load, analyse, transform } from "@icholy/openapi-ts";

function main() {
  const doc = await load("openapi.json");
  const details = analyse(doc);
  console.log(transform(details));
}

Custom Transform

import {
  load,
  analyse,
  Schema,
  Printer,
  DocumentDetails
} from "@icholy/openapi-ts";

function main() {
  const doc = await load("openapi.json");
  const details = analyse(doc);
  console.log(transform(details));
}

function transform(doc: DocumentDetails): string {
  const print = new Printer();
  
  // output component schemas
  for (const [name, schema] of Object.entries(doc.schemas)) {
    print.schema(schema, name);
  }

  // output body types with random names
  for (const op of doc.operations) {
    // usually the name is inferred from the op's method/path
    print.schema(op.params.body, "InterfaceNameHere");
  }
  
  // output a custom type
  const schema = new Schema("object");
  schema.setProperty("a", new Schema("string", { required: true }));
  schema.setProperty("b", new Schema("SomeOtherType"));
  print.schema(schema, "MyType");

  // output types for each route
  return print.code();
}

Readme

Keywords

none

Package Sidebar

Install

npm i @icholy/openapi-ts

Weekly Downloads

554

Version

3.10.0

License

ISC

Unpacked Size

244 kB

Total Files

55

Last publish

Collaborators

  • icholy