Package Exports
- tswagger
- tswagger/axios
- tswagger/axiosTemplate
- tswagger/cli
- tswagger/dist/axios
- tswagger/dist/axiosTemplate
- tswagger/dist/cli
- tswagger/dist/fetchSpec
- tswagger/dist/index
- tswagger/dist/parametersToTuples
- tswagger/dist/request
- tswagger/dist/schemaToType
- tswagger/dist/spec/schema
- tswagger/dist/spec/v2
- tswagger/dist/spec/v3
- tswagger/dist/template
- tswagger/dist/traversePaths
- tswagger/dist/tsDoc
- tswagger/dist/typeOperation
- tswagger/dist/typeUtils
- tswagger/dist/utils
- tswagger/fetchSpec
- tswagger/index
- tswagger/parametersToTuples
- tswagger/request
- tswagger/schemaToType
- tswagger/spec/schema
- tswagger/spec/v2
- tswagger/spec/v3
- tswagger/template
- tswagger/traversePaths
- tswagger/tsDoc
- tswagger/typeOperation
- tswagger/typeUtils
- tswagger/utils
Readme
TSwagger
TS-Swagger plugin generator CLI
Installation
npm i -D tswaggerBasic Usage
in project directory
npx tswagger https://api.server.foo/swagger.jsonin script code
import { createApi } from './lib/api'
const api = createApi()
const foo = await api.foo.bar(1).post(requestBody) // Post /foo/{bar}
api.foo.bar.get() // GET /foo/barUse fetch or other request library
npx tswagger https://api.server.foo/swagger.json --mode requestimport { createApi } from './lib/api'
const fetchApi = createApi((path, method, { params, formData, body }) => {
const url = new URL(`http://localhost${path}`)
const url.searchParams = (...)
return fetch(url, {
method,
body: formData ?? body ?? JSON.stringify(body),
})
}, response => response.json())
const {data} = await fetchApi.foo.bar(1).get(2) // GET /foo/{bar}
fetchApi.foo.bar.get() // GET /foo/bar
import axios, { AxiosError } from 'axios'
const axiosApi = createApi((path, method, { params, formData, body }) =>
axios({ url: path, method, params, data: formData ?? body }),
response => response.data)
const {data} = axiosApi.foo.bar(1).get(2)Options
options priority : command line > tswagger.config > package.json
npx tswagger argument1 --option1 value1 --option2 value2| option | description | default | example |
|---|---|---|---|
| (first argument) | Swagger schema JSON path | (required) | http://.. or ./foo/swagger.json |
src |
same as first argument | first argument | same as above |
mode |
Code generation mode | axios |
request |
plugins-dir |
Directory | lib |
|
plugin-name |
Name for generated flile | api |
|
export-name |
Export name | createApi |
''(export default) |
type-path |
Path for scheme type file | {plugins-dir}/{plugin-name}/{types.ts} |
./types/models.ts |
Set options using tswagger.config
import { TSwaggerOptions } from 'tswagger'
const option: Partial<TSwaggerOptions> = {
pluginName: 'foo'
}
export default optionSet options using package.json
{
"tswagger": {
"pluginsDir": "api"
}
}tsconfig.json
{
"compilerOptions": {
"types": ["tswagger/types"]
}
}and npm run swagger or npx tswagger
License
ISC License Copyright (c) 2023, Elevista