Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
@nicolas-chaulet/openapi-typescript-codegen
Advanced tools
Library that generates Typescript clients based on the OpenAPI specification.
✨ Turn your OpenAPI specification into a beautiful TypeScript client
This is an opinionated fork of the openapi-typescript-codegen package. We created it after the original project became unmaintained because we wanted to support OpenAPI v3.1 introduced in the FastAPI v0.99.0 release. We plan to resolve the most pressing issues in the original project – open an issue if you'd like to prioritise your use case!
The fastest way to use openapi-ts
is via npx
npx @nicolas-chaulet/openapi-typescript-codegen -i path/to/openapi.json -o src/client
Congratulations on creating your first client! 🎉
npm install @nicolas-chaulet/openapi-typescript-codegen --save-dev
or
yarn add @nicolas-chaulet/openapi-typescript-codegen -D
If you want to use openapi-ts
with CLI, add a script to your package.json
file
"scripts": {
"openapi-ts": "openapi-ts"
}
You can also generate your client programmatically by importing openapi-ts
in a .ts
file.
import { createClient } from '@nicolas-chaulet/openapi-typescript-codegen'
createClient({
input: 'path/to/openapi.json',
output: 'src/client',
})
⚠️ You need to be running Node.js v18 or newer
openapi-ts
supports loading configuration from a file inside your project root directory. You can either create a openapi-ts.config.cjs
file
/** @type {import('@nicolas-chaulet/openapi-typescript-codegen').UserConfig} */
module.exports = {
input: 'path/to/openapi.json',
output: 'src/client',
}
or openapi-ts.config.mjs
/** @type {import('@nicolas-chaulet/openapi-typescript-codegen').UserConfig} */
export default {
input: 'path/to/openapi.json',
output: 'src/client',
}
Alternatively, you can use openapi-ts.config.js
and configure the export statement depending on your project setup.
By default, openapi-ts
will automatically format your client according to your project configuration. To disable automatic formatting, set format
to false
/** @type {import('@nicolas-chaulet/openapi-typescript-codegen').UserConfig} */
export default {
format: false,
input: 'path/to/openapi.json',
output: 'src/client',
}
You can also prevent your client from being processed by formatters by adding your output path to the tool's ignore file (e.g. .prettierignore
).
For performance reasons, openapi-ts
does not automatically lint your client. To enable this feature, set lint
to true
/** @type {import('@nicolas-chaulet/openapi-typescript-codegen').UserConfig} */
export default {
input: 'path/to/openapi.json',
lint: true,
output: 'src/client',
}
You can also prevent your client from being processed by linters by adding your output path to the tool's ignore file (e.g. .eslintignore
).
We do not generate TypeScript enums because they are not standard JavaScript and pose typing challenges. If you want to iterate through possible field values without manually typing arrays, you can export enums by running
/** @type {import('@nicolas-chaulet/openapi-typescript-codegen').UserConfig} */
export default {
enums: true,
input: 'path/to/openapi.json',
output: 'src/client',
}
This will export your enums as plain JavaScript objects. For example, Foo
will generate the following
export const FooEnum = {
FOO: 'foo',
BAR: 'bar',
} as const;
$ openapi-ts --help
Usage: openapi-ts [options]
Options:
-V, --version output the version number
-i, --input <value> OpenAPI specification, can be a path, url or string content (required)
-o, --output <value> Output directory (required)
-c, --client <value> HTTP client to generate [fetch, xhr, node, axios, angular] (default: "fetch")
--name <value> Custom client class name
--useOptions <value> Use options instead of arguments (default: false)
--base <value> Manually set base in OpenAPI config instead of inferring from server value
--enums Generate JavaScript objects from enum definitions (default: false)
--exportCore <value> Write core files to disk (default: true)
--exportServices <value> Write services to disk [true, false, regexp] (default: true)
--exportModels <value> Write models to disk [true, false, regexp] (default: true)
--exportSchemas <value> Write schemas to disk (default: true)
--format Process output folder with formatter?
--no-format Disable processing output folder with formatter
--lint Process output folder with linter?
--no-lint Disable processing output folder with linter
--no-operationId Use path URL to generate operation ID
--postfixServices Service name postfix (default: "Service")
--postfixModels Model name postfix
--request <value> Path to custom request file
--useDateType <value> Output Date instead of string for the format "date-time" in the models (default: false)
-h, --help display help for command
Please refer to the contributing guide for how to install the project for development purposes.
FAQs
Library that generates Typescript clients based on the OpenAPI specification.
The npm package @nicolas-chaulet/openapi-typescript-codegen receives a total of 73 weekly downloads. As such, @nicolas-chaulet/openapi-typescript-codegen popularity was classified as not popular.
We found that @nicolas-chaulet/openapi-typescript-codegen demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.