# @cauca-911/core

Run `npm install @cauca-911/core` to add this library to your project

## To use this library, you need to import the module with specific configuration


```
@NgModule({
    imports: [
        CaucaCoreModule,
    ]
    providers: [{
        provide: CAUCA_CORE_MODULE_OPTIONS,
        useValue: {
            logLevel: LogLevel.warning or 3, // default=LogLevel.error
            logError: (logLevel, message, data) => void, // default=(logLevel, message, data) => void
            apiUrl: 'http://example.com/api/', // default=''
            languages: ['fr'], // default=['fr', 'en']
            loginURL: () => '/login', // default=() => '/login/'
            allowRefreshToken: true, // default=false
            refreshLoginURL: '/refreshLogin', // default=''
            libraries: ['devextreme', 'geolocation', 'management', 'material', 'social-network'], // default=[]
            i18nPaths: ['additional-folder'], // default=[]
            locale: 'fr', // default=''
            jsonConfigFile: 'path/config.json', default=''
            nbRetryOnNetworkError: 2, // default=0
            contentSecurityPolicyActivated: true, // default=false
        }
    }]
});
```

See CoreModuleOptions class for more available options.


## Automatically added by this library

- HttpClientModule (@angular/common/http)
- TranslateModule (@ngx-translate/core)

## Module
- CaucaCore
- CaucaCoreTesting
- CaucaCoreForChild

## Component
- CaucaPageNotFoundComponent
    - Ajouter le path `**` dans le routing
    ```
    {
        path: '**',
        component: CaucaPageNotFoundComponent,
    }
    ```

## Service
- TranslateService
    - from @cauca-911/core is extended by TranslateService form @ngx-translate/core
    - we added "appInitializer" and "getMultilingualTranslations"
- CaucaCoreService
    - getConfig() : return active configuration
- ClientInformationService
- FullscreenService
- ImageService
- LogService
    - publishError -> Post error to webapi, URL = `'${this.config.apiUrl}Error/logErrors' || '${this.config.apiUrl}logErrors'`
    - information -> Execute "logError" with a log level at LogLevel.information
    - warning -> Execute "logError" with a log level at LogLevel.warning
    - error -> Execute "logError" with a log level at LogLevel.error
    - disconnection -> Execute "logError" with a log level at LogLevel.disconnection
- NetworkInformationService
- VersionCheckService


## Interceptor implemented by this library
- HttpOfflineInterceptor : Catch HttpClient when client is offline
- HttpTokenWriterInterceptor : When exist, add "Authorization token" and "CSRF token" on HttpClient
- HttpTokenReaderInterceptor : Read "CSRF token" on HttpClient
- HttpErrorInterceptor : Catch HttpClient error and in an @angular/snackbar

## Generic class
- Configuration
- Browser
- Color
- OperatingSystem

