yarn add -D openapi-codegen-typescript
npm install openapi-codegen-typescript --save-dev
What is this library for?
- For fetching json file (mostly for "Swagger json")
const { fetchSwaggerJsonFile } = require('openapi-codegen-typescript');
async function doSomething() {
const json = await fetchSwaggerJsonFile('https://custom/swagger.json');
console.log('Json Result', json);
}
- For converting swagger.json file to typescript types
const { fetchSwaggerJsonFile, convertToTypes } = require('openapi-codegen-typescript');
async function doSomething() {
const json = await fetchSwaggerJsonFile('https://custom/swagger.json');
convertToTypes({ json, fileName: 'dtoAPI', folderPath: 'src/types/generated' });
}
This function ('doSomething()') fetches json file from urls, then converts json to typescript "types" and writes "types" to file ('src/types/generated/dtoAPI')
- For generating mock files that are using converted types
const { fetchSwaggerJsonFile, convertToTypes } = require('openapi-codegen-typescript');
async function doSomething() {
const json = await fetchSwaggerJsonFile('https://custom/swagger.json');
convertToMocks({
json,
fileName: 'dtoAPI',
folderPath: 'src/mocks/generated',
typesPath: '../../types/generated/dtoAPI',
});
}
This function ('doSomething()') fetches json file from urls, then converts json to "mocks" and writes "mocks" to file ('src/mocks/generated/dtoAPI') with imports from typescript types ('src/types/generated/dtoAPI')
You can override open-api enum types and mocks by specifying overrideSchemas
prop.
Let's imagine that we have this schema enum type in a json file:
{
"SomeType": {
"type": "string",
"description": "",
"x-enumNames": ["Audio", "Video", "Image", "Text", "Raw"],
"enum": ["Audio", "Video", "Image", "Text", "Raw"]
}
}
Overriding example:
const { fetchSwaggerJsonFile, convertToTypes, convertToMocks } = require('openapi-codegen-typescript');
const url = 'https://someLinkToSwagger/v2/swagger.json';
async function main() {
const json = await fetchSwaggerJsonFile(url);
const overrideSchemas = [
{
ServiceOfferKind: {
type: 'string',
description: 'Warning! This type is overrided',
enum: ['masteringAndDistribution', 'video', 'samples', 'mastering', 'distribution', 'sessions'],
},
},
];
convertToTypes({
json,
fileName: 'typesAPI',
folderPath: 'src/types/generated',
overrideSchemas,
});
convertToMocks({
json,
fileName: 'mocksAPI',
folderPath: 'src/mocks/generated',
typesPath: '../../types/generated/typesAPI',
overrideSchemas,
});
}
main();
const { fetchSwaggerJsonFile, convertToTypes, convertToMocks } = require('openapi-codegen-typescript');
const petShopLink = 'https://petstore.swagger.io/v2/swagger.json';
async function main() {
const json = await fetchSwaggerJsonFile(petShopLink);
convertToTypes({ json, fileName: 'typesAPI', folderPath: 'src/types/generated' });
convertToMocks({
json,
fileName: 'mocksAPI',
folderPath: 'src/mocks/generated',
typesPath: '../../types/generated/typesAPI',
});
}
main();
url
: string
- url to swagger json file
Returns a swagger json object;
json
: object
- swagger json data;
fileName
: string
- name of the file, where typescript types data will be saved;
folderPath
: string
- folder path the fileName
, where typescript types data will be saved;
Returns void
;
json
: object
- swagger json data;
fileName
: string
- name of the file, where mocks data will be saved;
folderPath
: string
- folder path the fileName
, where mocks data will be saved;
typesPath
: string
- folder path to types
, where typescript types data are saved.
Path to types
will be inserted to the type imports in generated mocks (generated -> import {...} from typesPath
;);
Returns void
;