#swagger #interface #typescript #spec #generate #ts #json

bin+lib lupinas-lullaby

从 Swagger 2.0 规范自动生成 TypeScript 接口

11 个版本

0.3.3 2021 年 4 月 1 日
0.3.2 2021 年 3 月 14 日
0.3.0 2021 年 2 月 20 日
0.2.0 2021 年 2 月 16 日
0.1.7 2021 年 1 月 27 日

14#ts

每月 30 次下载

MIT 许可证

33KB
784

Lupinas Lullaby

将 Swagger 文件(v2 和 v3)解析为 TypeScript 接口文件。

帮助

lupinas-lullaby 0.3.2
Hanif Bin Ariffin <hanif.ariffin.4326@gmail.com>

USAGE:
    lupinas-lullaby [FLAGS] [OPTIONS]

FLAGS:
    -h, --help                Prints help information
        --skip-empty-types    Skip empty types because some linter will complain.
                              Possibly only relevant in languages with structural typing e.g. TypeScript.
        --stdin               Accepts input from stdin
    -V, --version             Prints version information

OPTIONS:
        --auth-password <auth-password>         The basic authentication username payload to pass along.
        --auth-user <auth-user>                 The basic authentication password payload to pass along.
        --file <file>                           The Swagger file to parse.
        --skip-type-name <skip-type-name>...    Skip types with the given name.
                                                Useful if the swagger file overwrites some implicitly imported classes
                                                or its messing up type checking.
                                                Takes multiple occurences.
        --url <url>                             The URL to the Swagger file. Must be a URL to a JSON/YAML resource
        --write <write>                         The destination file to write to.
                                                If this value is not specified, it will simply write to stdout.

示例

格式可能不是最好的 ... 但它是一个完全有效的 TS 文件。你仍然会用 prettier 来修复它。

lupinas-lullaby on  master is 📦 v0.1.3 via ⬢ v15.2.0 via 🦀 v1.49.0
❯ lupinas-lullaby --url https://petstore.swagger.io/v2/swagger.json
export type ApiResponse = {"code" ? : number;"message" ? : string;"type" ? : string;}
export type Category = {"id" ? : number;"name" ? : string;}
export type Order = {"complete" ? : boolean;"id" ? : number;"petId" ? : number;"quantity" ? : number;"shipDate" ? : Date;"status" ? : "placed" |"approved" |"delivered" ;}
export type Pet = {"category" ? : Category;"id" ? : number;"name"  : string;"photoUrls"  : string[];"status" ? : "available" |"pending" |"sold" ;"tags" ? : Tag[];}
export type Tag = {"id" ? : number;"name" ? : string;}
export type User = {"email" ? : string;"firstName" ? : string;"id" ? : number;"lastName" ? : string;"password" ? : string;"phone" ? : string;"userStatus" ? : number;"username" ? : string;}

依赖关系

~6–18MB
~270K SLoC