openapi-codegen-typescript
TypeScript icon, indicating that this package has built-in type declarations

0.1.29 • Public • Published

OpenApi-codegen-typescript

Installation

  • yarn add -D openapi-codegen-typescript
  • npm install openapi-codegen-typescript --save-dev

Description

What is this library for?

  • For fetching json file (mostly for "Swagger json")

Example:

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

Example:

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

Example:

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')

Overriding enum schema type

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();

AllInOne Example:

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();

Methods:

fetchSwaggerJsonFile(url)

url: string - url to swagger json file

Returns a swagger json object;

convertToTypes({ json, fileName, folderPath })

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;

convertToMocks({ json, fileName, folderPath, typesPath })

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;

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
0.1.2916latest

Version History

VersionDownloads (Last 7 Days)Published
0.1.2916
0.1.2867
0.1.270
0.1.260
0.1.250
0.1.240
0.1.230
0.1.220
0.1.210
0.1.200
0.1.190
0.1.180
0.1.170
0.1.160
0.1.150
0.1.140
0.1.130
0.1.120
0.1.110
0.1.100
0.1.90
0.1.80
0.1.73
0.1.60
0.1.50
0.1.40
0.1.30
0.1.20
0.1.10

Package Sidebar

Install

npm i openapi-codegen-typescript

Weekly Downloads

86

Version

0.1.29

License

MIT

Unpacked Size

141 kB

Total Files

106

Last publish

Collaborators

  • landr-audio-bot