https://github.com/scottlogic/openapi-forge-typescript
⚒️ OpenAPI Forge generator for TypeScript clients
https://github.com/scottlogic/openapi-forge-typescript
Last synced: about 1 month ago
JSON representation
⚒️ OpenAPI Forge generator for TypeScript clients
- Host: GitHub
- URL: https://github.com/scottlogic/openapi-forge-typescript
- Owner: ScottLogic
- Created: 2022-06-03T15:34:56.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-06-07T13:52:36.000Z (almost 2 years ago)
- Last Synced: 2025-03-28T11:39:08.855Z (about 2 months ago)
- Language: TypeScript
- Homepage:
- Size: 234 KB
- Stars: 0
- Watchers: 2
- Forks: 8
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OpenAPI Forge - TypeScript
This repository is the TypeScript generator for the [OpenAPI Forge](https://github.com/ScottLogic/openapi-forge), see that repository for usage instructions:
https://github.com/ScottLogic/openapi-forge
The client API it generates is suitable for running in the browser (after being bundled appropriately), or via node. The generated code uses the Fetch API, and as a result you'll need to use node v18 or greater.
## Example
You should consult the [OpenAPI Forge](https://github.com/ScottLogic/openapi-forge) repository for a complete user guide. The following is a very brief example that quickly gets you up-and-running with this generator.
Run the `forge` command to generate a client API using this generator as follows:
```
$ openapi-forge forge \
https://petstore3.swagger.io/api/v3/openapi.json \
openapi-forge-typescript \
-o api
```This will generate various files in the `api` folder.
### Running with node (>= v18)
Add the following `index.ts` in the `api` folder:
```typescript
import ApiPet from "./apiPet";
import Configuration from "./configuration";
import transport from "./fetch";// create API client
const config = new Configuration(transport);
config.basePath = "https://petstore3.swagger.io";
const api = new ApiPet(config);// use it!
(async () => {
await api.addPet({
id: 1,
name: "Fido",
photoUrls: [],
});const pet = await api.getPetById(1);
console.log(pet.data.name);
})();
```To test the API, this example adds a Pet named “Fido” to the Pet Store, then retrieves it via its id, logging the name. You can run the example as follows:
```
% npx ts-node index.ts
Fido
```### Running in the browser
The first step is to transpile from TypeScript to JavaScript:
```
% tsc
```Following this, bundle the files into a single script. There are various tools that can be used for this purpose, but browserify is one of the simplest:
```
% npx browserify index.js -o bundle.js
```Next create a simple HTML file that loads this script:
```
```
Load the above page in a browser and you should see `Fido` logged to the console.
## Development
The OpenAPI Forge project [details the process for creating a new generator](https://github.com/ScottLogic/openapi-forge#generator-development). The documentation gives a few generator-specific instructions.
### Running
To run this generator, you also need to have [OpenAPI Forge] installed, or the repository checked out. Assuming you have it installed as a global module, you can run this generator as follows:
```
$ openapi-forge forge \
https://petstore3.swagger.io/api/v3/openapi.json \
. \
-o api \
```This generates an API from the Pet Store swagger definition, using the generator within the current folder (`.`), outputting the results to the `api` folder.
### Testing
The standard test script is used to execute the BDD-style tests against this generator.
```
npm run test
```The script expects that the openapi-forge project (which is where the BDD feature files are located) is checked out at the same folder-level as this project.
### Linting
Two scripts are available to help you find linting errors:
```
npm run lint:check:all
```This runs eslint in check mode which will raise errors found but not try and fix them. This is also ran on a PR and a push to main. It will fail if any errors were found.
```
npm run lint:write:all
```This runs eslint in write mode which will raise errors found and try to fix them.