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
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
Initialize empty rule set
gengen init
Generate list of available endpoints
gengen g:c
Describe endpoints who will be generated
import { Endpoints } from './endpoints'; export default new Set([Endpoints.ProductService.GetProducts, Endpoints.CategoryService.AddCategory]);
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 |
utilsRelativePath | Relative path to utils files. It may be useful when you have multiple generation sources | string | |
unstrictId | Disable converting 'id' properties to strong Guid type. more info | boolean | false |
Option details
aliasName
Alias provides:
- Prefixes for model and service files
- 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
});
}
}
unstrictId
By default, GenGen converts all 'id' properties from string type to custom Guid type. You can disable this behaviour by using it option
Example:
public static toDTO(model: Partial<Product>): IProduct {
return {
// ...
id: model.id ? model.id.toString() : Guid.empty.toString(),
// ...
};
}
public static fromDTO(dto: IProduct): Product {
// ...
model.id = new Guid(dto.id);
// ...
}
License and copyright
Copyright (c) 2020-2023 Luxoft
Licensed under the MIT license