Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@civ-board/engine-api

indvd00m28Unlicense1.8.3TypeScript support: included

swagger client for @civ-board/engine-api

swagger-client

readme

@civ-board/engine-api@1.8.3

Generating

Generate new api

`shell script $ swagger-codegen generate -l typescript-angular -i http://localhost:8080/engine/v3/api-docs --additional-properties ngVersion=10.1.5,npmName=@civ-board/engine-api,supportsES6=true -o civ-engine-api


#### Updating generated sources

To apply changes in REST API you can use git patches:
```shell script
# start previous version of server
$ mkdir /tmp/civ-engine-api
$ cd /tmp/civ-engine-api
$ swagger-codegen generate -l typescript-angular -i http://localhost:8080/engine/v3/api-docs --additional-properties ngVersion=10.1.5,npmName=@civ-board/engine-api,supportsES6=true -o .
$ git init
$ git add .
$ git commit -m "Prev version"
# stop previous version and start new version of server (or use another URL for new server)
$ swagger-codegen generate -l typescript-angular -i http://localhost:8080/engine/v3/api-docs --additional-properties ngVersion=10.1.5,npmName=@civ-board/engine-api,supportsES6=true -o .
$ git add .
$ git commit -m "Description of changes"
$ git format-patch -1 HEAD -o /tmp/patches
$ cd /path/to/civ-engine-api-repo
$ git am -3 /tmp/patches/*

Git settings: `shell script $ git config user.name "indvd00m" && git config user.email "gotoindvdum@gmail.com"



### Building

To install the required dependencies and to build the typescript sources run:

npm install npm run build


### publishing

First build the package than run ```npm publish dist``` (don't forget to specify the `dist` folder!)

### consuming

Navigate to the folder of your consuming project and run one of next commands.

_published:_

npm install @civ-board/engine-api@1.8.3 --save


_without publishing (not recommended):_

npm install PATH_TO_GENERATED_PACKAGE/dist.tgz --save

It's important to take the tgz file, otherwise you'll get trouble with links on windows.  

_using `npm link`:_

In PATH_TO_GENERATED_PACKAGE/dist:

npm link


In your project:

npm link @civ-board/engine-api


__Note for Windows users:__ The Angular CLI has troubles to use linked npm packages.
Please refer to this issue https://github.com/angular/angular-cli/issues/8284 for a solution / workaround.
Published packages are not effected by this issue.


#### General usage

In your Angular project:

// without configuring providers import { ApiModule } from '@civ-board/engine-api'; import { HttpClientModule } from '@angular/common/http';

@NgModule({ imports: [ ApiModule, // make sure to import the HttpClientModule in the AppModule only, // see https://github.com/angular/angular/issues/20575 HttpClientModule ], declarations: [ AppComponent ], providers: [], bootstrap: [ AppComponent ] }) export class AppModule {}

// configuring providers import { ApiModule, Configuration, ConfigurationParameters } from '@civ-board/engine-api';

export function apiConfigFactory (): Configuration => { const params: ConfigurationParameters = { // set configuration parameters here. } return new Configuration(params); }

@NgModule({ imports: [ ApiModule.forRoot(apiConfigFactory) ], declarations: [ AppComponent ], providers: [], bootstrap: [ AppComponent ] }) export class AppModule {}

import { DefaultApi } from '@civ-board/engine-api';

export class AppComponent { constructor(private apiGateway: DefaultApi) { } }


Note: The ApiModule is restricted to being instantiated once app wide.
This is to ensure that all services are treated as singletons.

#### Using multiple swagger files / APIs / ApiModules
In order to use multiple `ApiModules` generated from different swagger files,
you can create an alias name when importing the modules
in order to avoid naming conflicts:

import { ApiModule } from 'my-api-path'; import { ApiModule as OtherApiModule } from 'my-other-api-path'; import { HttpClientModule } from '@angular/common/http';

@NgModule({ imports: [ ApiModule, OtherApiModule, // make sure to import the HttpClientModule in the AppModule only, // see https://github.com/angular/angular/issues/20575 HttpClientModule ] }) export class AppModule {

}



### Set service base path
If different than the generated base path, during app bootstrap, you can provide the base path to your service. 

import { BASE_PATH } from '@civ-board/engine-api';

bootstrap(AppComponent, [ { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, ]);

or

import { BASE_PATH } from '@civ-board/engine-api';

@NgModule({ imports: [], declarations: [ AppComponent ], providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], bootstrap: [ AppComponent ] }) export class AppModule {}



#### Using @angular/cli
First extend your `src/environments/*.ts` files by adding the corresponding base path:

export const environment = { production: false, API_BASE_PATH: 'http://127.0.0.1:8080' };


In the src/app/app.module.ts:

import { BASE_PATH } from '@civ-board/engine-api'; import { environment } from '../environments/environment';

@NgModule({ declarations: [ AppComponent ], imports: [ ], providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], bootstrap: [ AppComponent ] }) export class AppModule { } `