npm package: @miaguila/common
Description: Mi Águila Common library
Author: Mi Águila
Latest version: 10.0.2

# @miaguila/Common

Mi Aguila Common is the "source of truth" which contains the reusable common features of Mi Aguila web projects. The Common Library is a "logical code pool", it contains modules, pipes, services and any shared functional code.


## Install
---
**1.** To install the package from your project run:

    npm i @miaguila/common -s

## Usage
---
 * ### Seo service:
 The seo service provides SEO tools and pre-configured meta tags to use in Mi Águila projects 

#### Methods: 
 - **generateTitle(TITLE: string): void;**
   * Change the main title
 - **generateTags(config?: GenerateTagsConfig): void;**
   * Generate seo meta-tags
    ```
    export interface GenerateTagsConfig {
        description?: string;
        image?: string;
        robots?: string;
        slug?: string;
        title?: string;
    }
    ``` 
 - **generateCanonicalURL(): void;**
   * Generate canonical URLs

 #### Usage: 


**1.** Import into your module
```
...
import { SeoServiceModule } from '@miaguila/common';
...
@NgModule({
  imports: [
    ...
    SeoServiceModule
    ...
  ]
})
```

**2.** Import SeoService into your local service

```
...
import { SeoService } from '@miaguila/common';
...
constructor(
  ...
  private seoService: SeoService,
  ...
) {}

```

**3.** Call methods from the service:
```
  testSeo(): void {
    this.seoService.generateTags();
    this.seoService.generateTitle('Hola mundo!');
    this.seoService.generateCanonicalURL();
  }
```
---
 * ### Zapier service:
 Zapier provides workflows to automate the use of web applications together. It is often described as a translator between web APIs. https://zapier.com/

#### Methods: 

 - **delete(options?: HttpOptions): Observable\<ArrayBuffer>;**
   * sent a delete request to Zapier Api.
 - **get(options?: HttpOptions): Observable\<ArrayBuffer>;**
   * sent a get request to Zapier Api.
 - **post(options?: HttpOptions): Observable\<Object>;**
   * sent a post request to Zapier Api.
 - **put(options?: HttpOptions): Observable\<Object>;**
   * sent a put request to Zapier Api.

 #### Usage: 

**1.** Configure it into the `app-module.ts`

```
...
import { ZapierServiceModule } from '@miaguila/common';
...
@NgModule({
imports: [
  ...
  ZapierServiceModule.forRoot({
    zapierUrl: environment.zapierUrl
  })
  ...
  })
]
```


**2.** Call methods from the service:
```
import { Injectable } from '@angular/core';

import { Subscription } from 'rxjs';

import { ZapierService } from '@miaguila/common';

@Injectable({
  providedIn: 'root'
})
export class TestService {
  constructor(private zapierService: ZapierService) {}
  testGetZapier(): Subscription {
    return this.zapierService.get().subscribe((value) => {
      console.log(value);
    });
  }
}


```


## Linter
---


### Using tslint.json

@miaguila/common export the `tslint.json`

From your angular project change the content of `/tslint.json` to:

    {
        "extends": "@miaguila/common/tslint.json"
    }

**Note:** This linter extends from `recommended`:

    "extends": "tslint:recommended",...

---

## Build

From `.../mi-aguila-kit/` build the project and make a copy of tslint.json file:

    npm run build:common


The build artifacts will be stored in the `dist/common` directory.

## Publishing
**1.** Login:

    npm login 

**2.** **After building** your library with `npm run build:common`, go to the dist folder `cd dist/common` and run:

    npm publish

## Running unit tests

Run `ng test common` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).