astraea
v1.3.5
Published
help developer output the typescript interfaces of api by swagger or json
Downloads
21
Maintainers
Readme
Description
help developer output the typescript interfaces of api by swagger.json
or json
Install
npm install astraea
Usage
swagger
options
input
, swagger.jsondir
, output directoryopt
,blackList
, filterpath
optional
, boolean, all params are optinaolsuffix
, file format, eg:ts
ord.ts
const astraea = require('astraea');
const swagger = require('./swagger.json');
astraea.swagger(
swagger,
'./example/swagger',
{
blackList: ['DELETE/pet/:petId']
}
)
json
options
input
, json descriptiondir
, output directoryopt
,blackList
, filterpath
optional
, boolean, all params are optinaolsuffix
, file format, eg:ts
ord.ts
const astraea = require('astraea');
astraea.json(
{
get: {
'/api/persion/detail': {
a: 1,
},
'/api/pet/detail': {
a: 1,
}
},
post: {
'/api/persion/create': () => [{
a: 1,
b: [
{
v: 1
}
]
}],
}
},
'./example/json',
{
blackList: [ 'GET/api/persion/detail'],
optional: true,
}
)
scan
astraea.scan
based on astraea.json
, it will scan all .js
files of inputDir
.
options
inputDir
, .js diroutputDir
, output directoryopt
,blackList
, filterpath
optional
, boolean, all params are optinaolsuffix
, file format, eg:ts
ord.ts
const astraea = require('../index.js');
const path = require('path');
astraea.scan({
inputDir: path.resolve(__dirname, './scanData'),
outputDir: path.resolve(__dirname, '../example/scan'),
request: {
optional: true,
},
response: {},
});
How to use?
this is a simple example, you need to rework if use in prod!
import {
IGetRoutes as ISwaggerGetRoutes,
IPostRoutes as ISwaggerPostRoutes,
IPutRoutes as ISwaggerPutRoutes,
IDeleteRoutes as ISwaggerDeleteRoutes,
} from './swagger/routes';
import {
IGetRoutes as IJsonGetRoutes,
IPostRoutes as IJsonPostRoutes,
IPutRoutes as IJsonPutRoutes,
IDeleteRoutes as IJsonDeleteRoutes,
} from './json/routes';
export interface IGetRoutes extends ISwaggerGetRoutes, IJsonGetRoutes {}
export interface IPostRoutes extends ISwaggerPostRoutes, IJsonPostRoutes {}
export interface IPutRoutes extends ISwaggerPutRoutes, IJsonPutRoutes {}
export interface IDeleteRoutes extends ISwaggerDeleteRoutes, IJsonDeleteRoutes {}
const get: <K extends keyof IGetRoutes>(url: K) => IGetRoutes[K];
const post: <K extends keyof IPostRoutes>(url: K) => IPostRoutes[K];
const dl: <K extends keyof IPutRoutes>(url: K) => IPutRoutes[K];
const put: <K extends keyof IDeleteRoutes>(url: K) => IDeleteRoutes[K];
get('/pet/:petId').category.id;
post('/api/persion/create');
dl('/pet');
put('/store/order/:orderId');
Examlpe
routes.ts
import { RootObject as GetPetFindByStatus } from './GET/pet/findByStatus';
import { RootObject as GetPetFindByTags } from './GET/pet/findByTags';
import { RootObject as GetPetPetId } from './GET/pet/:petId';
import { RootObject as GetStoreInventory } from './GET/store/inventory';
import { RootObject as GetStoreOrderOrderId } from './GET/store/order/:orderId';
import { RootObject as GetUserLogin } from './GET/user/login';
import { RootObject as GetUserLogout } from './GET/user/logout';
import { RootObject as GetUserUsername } from './GET/user/:username';
import { RootObject as PostPet } from './POST/pet';
import { RootObject as PostPetPetId } from './POST/pet/:petId';
import { RootObject as PostPetPetIdUploadImage } from './POST/pet/:petId/uploadImage';
import { RootObject as PostStoreOrder } from './POST/store/order';
import { RootObject as PostUser } from './POST/user';
import { RootObject as PostUserCreateWithArray } from './POST/user/createWithArray';
import { RootObject as PostUserCreateWithList } from './POST/user/createWithList';
import { RootObject as PutPet } from './PUT/pet';
import { RootObject as PutUserUsername } from './PUT/user/:username';
import { RootObject as DeletePetPetId } from './DELETE/pet/:petId';
import { RootObject as DeleteStoreOrderOrderId } from './DELETE/store/order/:orderId';
import { RootObject as DeleteUserUsername } from './DELETE/user/:username';
export interface IGetRoutes {
'/pet/findByStatus': GetPetFindByStatus;
'/pet/findByTags': GetPetFindByTags;
'/pet/:petId': GetPetPetId;
'/store/inventory': GetStoreInventory;
'/store/order/:orderId': GetStoreOrderOrderId;
'/user/login': GetUserLogin;
'/user/logout': GetUserLogout;
'/user/:username': GetUserUsername;
}
export interface IPostRoutes {
'/pet': PostPet;
'/pet/:petId': PostPetPetId;
'/pet/:petId/uploadImage': PostPetPetIdUploadImage;
'/store/order': PostStoreOrder;
'/user': PostUser;
'/user/createWithArray': PostUserCreateWithArray;
'/user/createWithList': PostUserCreateWithList;
}
export interface IPutRoutes {
'/pet': PutPet;
'/user/:username': PutUserUsername;
}
export interface IDeleteRoutes {
'/pet/:petId': DeletePetPetId;
'/store/order/:orderId': DeleteStoreOrderOrderId;
'/user/:username': DeleteUserUsername;
}