Skip to content

Latest commit

 

History

History
88 lines (68 loc) · 3.24 KB

README.md

File metadata and controls

88 lines (68 loc) · 3.24 KB

@spec2ts/openapi

NPM version NPM download Build Status

@spec2ts/openapi is an utility to create TypeScript types from OpenAPI v3 specification. Unlike other code generators @spec2ts/openapi does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators @spec2ts/openapi does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your OpenAPI v3 specification.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Installation

Install in your project:

npm install @spec2ts/openapi

CLI Usage

oapi2ts [options] <input..>

Generate TypeScript types from OpenAPI specification

Positionals:
  input  Path to OpenAPI Specification(s) to convert to TypeScript      [string]

Options:
  --version     Show version number                                    [boolean]
  --help        Show help usage                                        [boolean]
  --output, -o  Output directory for generated types                    [string]
  --cwd, -c     Root directory for resolving $refs                      [string]
  --avoidAny    Avoid the `any` type and use `unknown` instead         [boolean]
  --enableDate  Build `Date` for format `date` and `date-time`         [boolean]
  --banner, -b  Comment prepended to the top of each generated file     [string]

Programmatic Usage

import { printer } from "@spec2ts/core";
import { parseOpenApiFile } from "@spec2ts/openapi";

async function generateSpec(path: string): Promise<string> {
    const result = await parseOpenApiFile(path);
    return printer.printNodes(result);
}

Implementations

  • Types for parameters:
    • path
    • header
    • query
    • cookie
  • Types for requestBody
  • Types for responses
  • Automatic naming
    • From operationId
    • From path
  • Parameters merging
    • From path item
    • From operation
    • Override from operation
  • Schema references
    • Local (filesystem) schema references
    • External (network) schema references
  • Modular architecture
    • Import local references
    • Embed external references

Compatibility Matrix

TypeScript version spec2ts version
v3.x.x v1
v4.x.x v2

License

This project is under MIT License. See the LICENSE file for the full license text.