Socket
Socket
Sign inDemoInstall

astraea

Package Overview
Dependencies
37
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    astraea

help developer output the typescript interfaces of api by swagger or json


Version published
Weekly downloads
19
increased by850%
Maintainers
1
Install size
70.8 MB
Created
Weekly downloads
 

Readme

Source

Astraea

travis ci badge version license downloads downloads-month

Description

help developer output the typescript interfaces of api by swagger.json or json

Install

npm install astraea

Usage

swagger

Demo

Test

options
  • input, swagger.json
  • dir, output directory
  • opt,
    • blackList, filter path
    • optional, boolean, all params are optinaol
    • suffix, file format, eg: ts or d.ts
const astraea = require('astraea');
const swagger = require('./swagger.json');
astraea.swagger(
  swagger, 
  './example/swagger', 
  {
    blackList: ['DELETE/pet/:petId']
  }
)

json

Demo

Test

options
  • input, json description
  • dir, output directory
  • opt,
    • blackList, filter path
    • optional, boolean, all params are optinaol
    • suffix, file format, eg: ts or d.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.

Demo

Test

options
  • inputDir, .js dir
  • outputDir, output directory
  • opt,
    • blackList, filter path
    • optional, boolean, all params are optinaol
    • suffix, file format, eg: ts or d.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

here

routes.ts

click here

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;
} 

Keywords

FAQs

Last updated on 23 Dec 2020

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc