JSPM

  • Created
  • Published
  • 0
  • Score
    100M100P100Q52186F
  • License MIT

Tool for generating models and Angular services based on OpenAPIs and Swagger's JSON

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@luxbss/gengen) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    GenGen

    NPM version license GitHub contributors

    This tool generates models and Angular services based on generated Swagger JSON.

    Getting Started

    First of all you make sure that swagger.json is accessable.

    Location by default is https://localhost:5001/swagger/v1/swagger.json. You can override it. See all options

    Generate all API

    gengen g --all

    Generate a part of API

    1. Initialize empty rule set

      gengen init
    2. Generate list of available endpoints

      gengen g:c
    3. Describe endpoints who will be generated

      import { Endpoints } from './endpoints';
      
      export default new Set([Endpoints.ProductService.GetProducts, Endpoints.CategoryService.AddCategory]);
    4. Generate specified routes

      gengen g

    Options

    Option Description Type Default value
    all Generate all boolean false
    url Location of swagger.json string https://localhost:5001/swagger/v1/swagger.json
    file Local path to swagger.json string
    output Output directory string ./src/generated
    configOutput Output directory using in 'Generate a part of API' scenario string ./.generated
    aliasName Specify prefix for generated filenames. more info string
    withRequestOptions Allows to pass http request options to generated methods. more info boolean false

    Option details

    aliasName

    Alias provides:

    1. Prefixes for model and service files
    2. A way to specify dynamic basePath for services.

    Example:

    gengen --aliasName myalias

    GenGen would create files myalias-models.ts, myalias-services.ts in output directory. And we could override services basePath with following code

    window.__gengen__basePathMap = {
        myalias: 'https://myexternalapi/api'
    };

    withRequestOptions

    GenGen would generate optional parameter options for each method in services. With which you could provide any additional request options from the interface below (IAngularHttpRequestOptions).

    Example:

    interface IAngularHttpRequestOptions {
        headers?: HttpHeaders | { [header: string]: string | string[] };
        observe?: 'body' | 'response';
        params?: HttpParams | { [param: string]: string | string[] };
        reportProgress?: boolean;
        responseType?: 'json' | 'blob';
        withCredentials?: boolean;
    }
    
    @Injectable({
        providedIn: 'root'
    })
    export class ExampleService extends BaseHttpService {
        // ...
    
        public methodName(options?: IAngularHttpRequestOptions): Observable<void> {
            return this.post<string>(`methodName`, options);
        }
    
        // ...
    }
    
    @Component(
        // ...
    )
    export class MyComponent {
        constructor(private exampleService: ExampleService) {
            this.exampleService.methodName({
                withCredentials: true
            });
        }
    }

    License and copyright

    Copyright (c) 2020-2021 Luxoft

    Licensed under the MIT license