@mosa-ng/core 21.0.1 → 21.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/mosa-ng-core.mjs +109 -37
- package/fesm2022/mosa-ng-core.mjs.map +1 -1
- package/package.json +1 -1
- package/src/assets/i18n/mosa-core-de-DE.json +35 -0
- package/src/assets/i18n/mosa-core-en-US.json +35 -0
- package/types/mosa-ng-core.d.ts +126 -107
- package/src/assets/i18n/mosa-de-DE.json +0 -63
- package/src/assets/i18n/mosa-en-US.json +0 -63
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable,
|
|
3
|
-
import { firstValueFrom, of, BehaviorSubject, throwError, Observable, Subject } from 'rxjs';
|
|
2
|
+
import { Injectable, inject, Pipe, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';
|
|
3
|
+
import { firstValueFrom, of, BehaviorSubject, throwError, Observable, Subject, mergeMap } from 'rxjs';
|
|
4
4
|
import { tap, catchError, map } from 'rxjs/operators';
|
|
5
5
|
import * as i1$1 from '@angular/common/http';
|
|
6
|
-
import { HttpErrorResponse, HttpResponse, HttpHeaders } from '@angular/common/http';
|
|
6
|
+
import { HttpErrorResponse, HttpClient, HttpResponse, HttpHeaders } from '@angular/common/http';
|
|
7
7
|
import * as i1 from '@ngx-translate/core';
|
|
8
8
|
import { TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { DatePipe } from '@angular/common';
|
|
@@ -174,23 +174,35 @@ class AssetsI18nLoaderService {
|
|
|
174
174
|
this.myTranslateCollectorService = myTranslateCollectorService;
|
|
175
175
|
this.priority = 0;
|
|
176
176
|
this.supportedLanguages = [];
|
|
177
|
+
this.supportedLanguagesPromise = null;
|
|
177
178
|
}
|
|
178
179
|
async init(path, libName, priority) {
|
|
180
|
+
const languages = await this.getSupportedLanguages();
|
|
181
|
+
for (const lang of languages) {
|
|
182
|
+
await firstValueFrom(this.loadTranslations(lang, path, libName, priority));
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
async getSupportedLanguages() {
|
|
186
|
+
// If we already have the data, return it immediately
|
|
179
187
|
if (this.supportedLanguages.length > 0) {
|
|
180
|
-
|
|
181
|
-
|
|
188
|
+
return this.supportedLanguages;
|
|
189
|
+
}
|
|
190
|
+
// If a request is already in flight, return that same promise
|
|
191
|
+
if (this.supportedLanguagesPromise) {
|
|
192
|
+
return this.supportedLanguagesPromise;
|
|
193
|
+
}
|
|
194
|
+
// Create the promise for the HTTP call
|
|
195
|
+
this.supportedLanguagesPromise = (async () => {
|
|
196
|
+
const url = `assets/i18n/supported-languages.json?v=${getRandomString()}`;
|
|
197
|
+
const res = await firstValueFrom(this.myHttpClient.get(url)).catch(() => null);
|
|
198
|
+
if (!res?.languages) {
|
|
199
|
+
this.supportedLanguagesPromise = null;
|
|
200
|
+
return [];
|
|
182
201
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
console.error('Missing file -> assets/i18n/supported-languages.json');
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
this.supportedLanguages = res.languages;
|
|
191
|
-
for (let i = 0; i < this.supportedLanguages.length; i++) {
|
|
192
|
-
await firstValueFrom(this.loadTranslations(this.supportedLanguages[i], path, libName, priority));
|
|
193
|
-
}
|
|
202
|
+
this.supportedLanguages = res.languages;
|
|
203
|
+
return res.languages;
|
|
204
|
+
})();
|
|
205
|
+
return this.supportedLanguagesPromise;
|
|
194
206
|
}
|
|
195
207
|
loadTranslations(lang, path, libName, priority) {
|
|
196
208
|
const filename = libName ? `${libName}-${lang}.json` : `${lang}.json`;
|
|
@@ -224,17 +236,11 @@ class CoreLoggerService {
|
|
|
224
236
|
* Gets the error message from any type of object
|
|
225
237
|
*/
|
|
226
238
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
227
|
-
getErrorMsg(err) {
|
|
239
|
+
async getErrorMsg(err) {
|
|
228
240
|
let msg = 'Unknown Error';
|
|
229
241
|
if (!err) {
|
|
230
242
|
return msg;
|
|
231
243
|
}
|
|
232
|
-
if (err instanceof HttpErrorResponse) {
|
|
233
|
-
if (typeof err.error !== 'string') {
|
|
234
|
-
return `mosa.commons.errors.status[${err.status}].message`;
|
|
235
|
-
}
|
|
236
|
-
return err.error;
|
|
237
|
-
}
|
|
238
244
|
if (typeof err === 'string') {
|
|
239
245
|
msg = err;
|
|
240
246
|
}
|
|
@@ -256,9 +262,21 @@ class CoreLoggerService {
|
|
|
256
262
|
else if (err.Message) {
|
|
257
263
|
msg = err.Message;
|
|
258
264
|
}
|
|
265
|
+
if (err.error instanceof Blob) {
|
|
266
|
+
// Convert the Blob back to a string
|
|
267
|
+
const text = await err.error.text();
|
|
268
|
+
const errorBody = JSON.parse(text);
|
|
269
|
+
return errorBody.message;
|
|
270
|
+
}
|
|
259
271
|
if (typeof err.error === 'string') {
|
|
260
272
|
msg = err.error;
|
|
261
273
|
}
|
|
274
|
+
if (!msg && err instanceof HttpErrorResponse) {
|
|
275
|
+
if (typeof err.error !== 'string') {
|
|
276
|
+
return `mosa.commons.errors.status[${err.status}].message`;
|
|
277
|
+
}
|
|
278
|
+
return err.error;
|
|
279
|
+
}
|
|
262
280
|
return msg;
|
|
263
281
|
}
|
|
264
282
|
/**
|
|
@@ -288,9 +306,9 @@ class CoreLoggerService {
|
|
|
288
306
|
* @param showUser
|
|
289
307
|
* @param config
|
|
290
308
|
*/
|
|
291
|
-
logError(config) {
|
|
309
|
+
async logError(config) {
|
|
292
310
|
config = this.serializeConfig(config);
|
|
293
|
-
config.msg = this.getErrorMsg(config.msg);
|
|
311
|
+
config.msg = await this.getErrorMsg(config.msg);
|
|
294
312
|
if (!config.title) {
|
|
295
313
|
config.title = this.getErrorTitle(config.msg);
|
|
296
314
|
}
|
|
@@ -404,9 +422,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
404
422
|
|
|
405
423
|
const LOCAL_STORAGE_TOKEN_KEY = 'tokenSettings';
|
|
406
424
|
class ApiService {
|
|
407
|
-
constructor(
|
|
408
|
-
this.
|
|
409
|
-
this.
|
|
425
|
+
constructor() {
|
|
426
|
+
this.refreshTokenUrl = '/api/auth/token/refresh';
|
|
427
|
+
this.myCoreLoggerService = inject(CoreLoggerService);
|
|
428
|
+
this.myHttpClient = inject(HttpClient);
|
|
410
429
|
}
|
|
411
430
|
/**
|
|
412
431
|
* Sets the token
|
|
@@ -431,6 +450,19 @@ class ApiService {
|
|
|
431
450
|
deleteToken() {
|
|
432
451
|
window.localStorage.removeItem(LOCAL_STORAGE_TOKEN_KEY);
|
|
433
452
|
}
|
|
453
|
+
setRefreshTokenUrl(url) {
|
|
454
|
+
this.refreshTokenUrl = url;
|
|
455
|
+
}
|
|
456
|
+
getRefreshTokenUrl() {
|
|
457
|
+
return this.refreshTokenUrl;
|
|
458
|
+
}
|
|
459
|
+
refreshToken(url, data, headers, options) {
|
|
460
|
+
options = ApiService.serializeOptions(options);
|
|
461
|
+
headers = this.getHeaders(headers, options);
|
|
462
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
463
|
+
return this.myHttpClient.post(url, data, { ...options.httpOptions, headers })
|
|
464
|
+
.pipe(map((response) => this.handleResponse(response)), tap((res) => this.setToken({ ...this.getToken(), ...res.data })), catchError((err) => this.handleError(err, options)));
|
|
465
|
+
}
|
|
434
466
|
/**
|
|
435
467
|
* Makes an http get call
|
|
436
468
|
* @param url
|
|
@@ -442,7 +474,9 @@ class ApiService {
|
|
|
442
474
|
headers = this.getHeaders(headers, options);
|
|
443
475
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
444
476
|
return this.myHttpClient.get(url, { ...options.httpOptions, headers })
|
|
445
|
-
.pipe(
|
|
477
|
+
.pipe(
|
|
478
|
+
// switchMap(() => ,
|
|
479
|
+
map((response) => this.handleResponse(response)), catchError((err) => this.handleError(err, options)));
|
|
446
480
|
}
|
|
447
481
|
/**
|
|
448
482
|
* Makes an async http get call, which also includes the response headers
|
|
@@ -547,7 +581,7 @@ class ApiService {
|
|
|
547
581
|
}
|
|
548
582
|
handleError(err, options) {
|
|
549
583
|
if (!options?.skipErrorHandling) {
|
|
550
|
-
this.myCoreLoggerService.logError({ msg: err });
|
|
584
|
+
void this.myCoreLoggerService.logError({ msg: err });
|
|
551
585
|
}
|
|
552
586
|
return throwError(() => err);
|
|
553
587
|
}
|
|
@@ -568,7 +602,7 @@ class ApiService {
|
|
|
568
602
|
}
|
|
569
603
|
const tokenSettings = this.getToken();
|
|
570
604
|
if (!options?.skipAuth && tokenSettings) {
|
|
571
|
-
headers = headers.set('Authorization', `${tokenSettings.tokenType} ${tokenSettings.
|
|
605
|
+
headers = headers.set('Authorization', `${tokenSettings.tokenType} ${tokenSettings.accessToken}`);
|
|
572
606
|
}
|
|
573
607
|
return headers;
|
|
574
608
|
}
|
|
@@ -581,7 +615,7 @@ class ApiService {
|
|
|
581
615
|
}
|
|
582
616
|
return options;
|
|
583
617
|
}
|
|
584
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ApiService, deps: [
|
|
618
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
585
619
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ApiService, providedIn: 'root' }); }
|
|
586
620
|
}
|
|
587
621
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ApiService, decorators: [{
|
|
@@ -589,7 +623,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
589
623
|
args: [{
|
|
590
624
|
providedIn: 'root',
|
|
591
625
|
}]
|
|
592
|
-
}]
|
|
626
|
+
}] });
|
|
593
627
|
|
|
594
628
|
class MosaSocketService {
|
|
595
629
|
constructor() {
|
|
@@ -669,6 +703,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
669
703
|
}]
|
|
670
704
|
}] });
|
|
671
705
|
|
|
706
|
+
const authenticationGuard = (_route, _state) => {
|
|
707
|
+
const apiService = inject(ApiService);
|
|
708
|
+
if (!apiService.getToken()) {
|
|
709
|
+
return false;
|
|
710
|
+
}
|
|
711
|
+
return true;
|
|
712
|
+
};
|
|
713
|
+
|
|
714
|
+
const languageInterceptor = (req, next) => {
|
|
715
|
+
const translate = inject(TranslateService);
|
|
716
|
+
const lang = translate.getCurrentLang() || 'en-US';
|
|
717
|
+
// Clone the request to add the Accept-Language header
|
|
718
|
+
const authReq = req.clone({
|
|
719
|
+
setHeaders: {
|
|
720
|
+
'Accept-Language': lang
|
|
721
|
+
}
|
|
722
|
+
});
|
|
723
|
+
return next(authReq);
|
|
724
|
+
};
|
|
725
|
+
|
|
726
|
+
function refreshTokenInterceptor(req, next) {
|
|
727
|
+
const apiService = inject(ApiService);
|
|
728
|
+
return next(req).pipe(catchError((err) => {
|
|
729
|
+
if (err instanceof HttpErrorResponse && err?.status === 401) {
|
|
730
|
+
return apiService.refreshToken(apiService.getRefreshTokenUrl(), apiService.getToken())
|
|
731
|
+
.pipe(mergeMap(() => next(updateHeader(req, apiService))));
|
|
732
|
+
}
|
|
733
|
+
return throwError(() => err);
|
|
734
|
+
}));
|
|
735
|
+
}
|
|
736
|
+
function updateHeader(req, apiService) {
|
|
737
|
+
const authToken = apiService.getToken();
|
|
738
|
+
req = req.clone({
|
|
739
|
+
headers: req.headers.set('Authorization', `${authToken?.tokenType} ${authToken?.accessToken}`),
|
|
740
|
+
});
|
|
741
|
+
return req;
|
|
742
|
+
}
|
|
743
|
+
|
|
672
744
|
class Dictionary {
|
|
673
745
|
/**
|
|
674
746
|
* Default constructor.
|
|
@@ -1260,9 +1332,9 @@ class MosaDurationPipe {
|
|
|
1260
1332
|
}
|
|
1261
1333
|
getTranslation(num, format) {
|
|
1262
1334
|
if (num === 1) {
|
|
1263
|
-
return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.
|
|
1335
|
+
return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.pipes.dateTime[${format}].label`)}`;
|
|
1264
1336
|
}
|
|
1265
|
-
return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.
|
|
1337
|
+
return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.pipes.dateTime[${format}].plural.label`)}`;
|
|
1266
1338
|
}
|
|
1267
1339
|
calcDuration(currentDate, millis, format) {
|
|
1268
1340
|
millis = millis - currentDate;
|
|
@@ -1308,7 +1380,7 @@ function initI18n(i18n) {
|
|
|
1308
1380
|
return i18n.init(undefined, undefined, 1);
|
|
1309
1381
|
}
|
|
1310
1382
|
function initI18nCore(i18n) {
|
|
1311
|
-
return i18n.init(undefined, 'mosa');
|
|
1383
|
+
return i18n.init(undefined, 'mosa-core');
|
|
1312
1384
|
}
|
|
1313
1385
|
const provideMosaCore = () => makeEnvironmentProviders([
|
|
1314
1386
|
provideAppInitializer(() => initI18n(inject(AssetsI18nLoaderService))),
|
|
@@ -1319,5 +1391,5 @@ const provideMosaCore = () => makeEnvironmentProviders([
|
|
|
1319
1391
|
* Generated bundle index. Do not edit.
|
|
1320
1392
|
*/
|
|
1321
1393
|
|
|
1322
|
-
export { ApiService, ArrayExtensions, AssetsI18nLoaderService, Browser, CanDeactivateGuard, ContentPosition, CoreLoggerService, CustomTranslateLoaderService, Dictionary, DictionaryItemPipe, FilterPipe, FindPipe, I18nSupported, JoinPipe, LOCAL_STORAGE_TOKEN_KEY, MOSA_FALLBACK_TRANSLATION, MOSA_MERGED_TRANSLATION, MosaDatePipe, MosaDurationPipe, MosaSocketService, NumberExtensions, Prototypes, Sieve, StringExtensions, Theme, TranslateCollectorService, cast, getRandomString, getTransformMatrix, isNullOrEmpty, isNullOrUndefined, isNumber, isZeroOrHigher, mergeArray, provideMosaCore, roundNearest, some, tryJsonParse };
|
|
1394
|
+
export { ApiService, ArrayExtensions, AssetsI18nLoaderService, Browser, CanDeactivateGuard, ContentPosition, CoreLoggerService, CustomTranslateLoaderService, Dictionary, DictionaryItemPipe, FilterPipe, FindPipe, I18nSupported, JoinPipe, LOCAL_STORAGE_TOKEN_KEY, MOSA_FALLBACK_TRANSLATION, MOSA_MERGED_TRANSLATION, MosaDatePipe, MosaDurationPipe, MosaSocketService, NumberExtensions, Prototypes, Sieve, StringExtensions, Theme, TranslateCollectorService, authenticationGuard, cast, getRandomString, getTransformMatrix, isNullOrEmpty, isNullOrUndefined, isNumber, isZeroOrHigher, languageInterceptor, mergeArray, provideMosaCore, refreshTokenInterceptor, roundNearest, some, tryJsonParse };
|
|
1323
1395
|
//# sourceMappingURL=mosa-ng-core.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mosa-ng-core.mjs","sources":["../../../../projects/core/src/lib/utils/commons.util.ts","../../../../projects/core/src/lib/enums/i18n-supported.enum.ts","../../../../projects/core/src/lib/constants/local-storage.constant.ts","../../../../projects/core/src/lib/services/translation/translate-collector.service.ts","../../../../projects/core/src/lib/services/translation/assets-i18n-loader.service.ts","../../../../projects/core/src/lib/services/core-logger.service.ts","../../../../projects/core/src/lib/services/api.service.ts","../../../../projects/core/src/lib/services/mosa-socket.service.ts","../../../../projects/core/src/lib/services/translation/custom-translate-loader.service.ts","../../../../projects/core/src/lib/services/guards/can-deactivate.guard.ts","../../../../projects/core/src/lib/utils/dictionary.util.ts","../../../../projects/core/src/lib/utils/prototypes.util.ts","../../../../projects/core/src/lib/utils/sieve.util.ts","../../../../projects/core/src/lib/enums/theme.enum.ts","../../../../projects/core/src/lib/enums/content-position.enum.ts","../../../../projects/core/src/lib/enums/browser.enum.ts","../../../../projects/core/src/lib/pipes/dictionary-item.pipe.ts","../../../../projects/core/src/lib/pipes/filter.pipe.ts","../../../../projects/core/src/lib/pipes/find.pipe.ts","../../../../projects/core/src/lib/pipes/join.pipe.ts","../../../../projects/core/src/lib/pipes/mosa-date.pipe.ts","../../../../projects/core/src/lib/pipes/mosa-duration.pipe.ts","../../../../projects/core/src/lib/provider.ts","../../../../projects/core/src/mosa-ng-core.ts"],"sourcesContent":["import { ITransformMatrix } from '../models/transform-matrix.model';\n\n/**\n * Checks if an object is null or undefined. Does not check for\n * empty strings, or false booleans\n * @param val\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNullOrUndefined(val: any): boolean {\n return val === null || val === undefined;\n}\n\n/**\n * Checks if a string is null or empty\n * @param str\n */\nexport function isNullOrEmpty(str: string | null | undefined): boolean {\n return !str?.trim();\n}\n\n/**\n * Checks if a string or number is zero or higher\n * @param num\n */\nexport function isZeroOrHigher(num: number | string | null | undefined): boolean {\n return num != null && +num >= 0;\n}\n\n/**\n * Checks if an object is a number\n * @param num\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNumber(num: any): boolean {\n return num !== null && !isNaN(+num);\n}\n\n/**\n * Round to nearest number given\n * @param value\n * @param round\n */\nexport function roundNearest(value: number): number {\n return Math.ceil(value / 5) * 5;\n}\n\n/**\n * Merge a two dimensional array\n * @param array\n */\nexport function mergeArray<T>(array: T[][]): T[] {\n return array.reduce((flat: T[], toFlatten: T[] | T[][]): T[] =>\n flat.concat(Array.isArray(toFlatten) ? mergeArray<T>(toFlatten as T[][]) : toFlatten), []);\n}\n\n/**\n * Get CSS Transform matrix from an element\n * @param element\n */\nexport function getTransformMatrix(element: HTMLElement): ITransformMatrix {\n const values = element.style.transform.split(/\\w+\\(|\\);?/);\n const transform = values[ 1 ].split(/,\\s?/g).map((numStr: string): number => parseInt(numStr, 10));\n\n return {\n x: transform[ 0 ],\n y: transform[ 1 ],\n z: transform[ 2 ],\n };\n}\n\nexport function some<T>(item: T, searchValue: T[keyof T] | T[keyof T][], searchKey?: keyof T): boolean {\n let searchValues: T[keyof T][] = searchValue as T[keyof T][];\n if (!Array.isArray(searchValue)) {\n searchValues = [ searchValue ];\n }\n\n return searchValues.includes(searchKey ? item[ searchKey ] : item as T[keyof T]);\n}\n\n/**\n * Generates a random string with numbers and letters\n * @param length\n */\nexport function getRandomString(length: number = 10): string {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result: string = '';\n for (let i: number = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return result;\n}\n\n/**\n * Trys to convert a json string. If it fails it returns [null] or a given fallback of [T]\n */\nexport function tryJsonParse<T>(data: string | undefined | null, fallback?: () => T): T | null {\n try {\n if (!isNullOrEmpty(data)) {\n return JSON.parse(data!);\n }\n } catch {\n // Ignore - go on with fallback check\n }\n\n if (fallback) {\n return fallback();\n }\n return null;\n}\n","export enum I18nSupported {\n enUS = 'en-US',\n deDE = 'de-DE',\n deCH = 'de-CH',\n deAT = 'de-AT',\n enGB = 'en-GB',\n frFR = 'fr-FR',\n esES = 'es-ES',\n ptPT = 'pt-PT',\n}\n","import { I18nSupported } from '../enums/i18n-supported.enum';\n\nexport const MOSA_MERGED_TRANSLATION = (lang: string): string => `mosa_${ lang }_merged_${ location.host }`;\nexport const MOSA_FALLBACK_TRANSLATION = `mosa_${ I18nSupported.enUS }_merged_${ location.host }`;\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MOSA_MERGED_TRANSLATION } from '../../constants/local-storage.constant';\nimport { IKeyMap } from '../../models/key-map.model';\nimport { isNullOrUndefined } from '../../utils/commons.util';\n\nexport interface ITranslationMap {\n priority: number;\n translation: IKeyMap<string>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslateCollectorService {\n\n private translationMap: IKeyMap<ITranslationMap[]> = {};\n\n constructor(private readonly myTranslateService: TranslateService) {\n }\n\n public addTranslations(translation: Record<string, string>, lang: string, priority: number): void {\n if (isNullOrUndefined(this.translationMap[ lang ])) {\n this.translationMap[ lang ] = [];\n }\n\n this.translationMap[ lang ].push({ priority, translation });\n this.translationMap[ lang ].sort((a: ITranslationMap, b: ITranslationMap) => a.priority - b.priority);\n const merged: IKeyMap<string> = JSON.parse(localStorage.getItem(MOSA_MERGED_TRANSLATION(lang))|| '{}');\n\n for (const translationsData of this.translationMap[ lang ]) {\n const translations: IKeyMap<string> = translationsData.translation;\n if (translations != null) {\n Object.keys(translations).forEach((key: string) => void (merged[ key ] = translations[ key ]));\n }\n }\n\n let trans: boolean = true;\n let count: number = 0;\n while (trans) {\n count++;\n trans = false;\n if (count >= 10) {\n console.warn('Limit reached! Please check translation file! Last replaced values:');\n }\n Object.keys(merged).forEach((key: string) => {\n if (merged[ key ].startsWith('@:')) {\n merged[ key ] = merged[ merged[ key ].substring(2, merged[ key ].length) ];\n trans = count < 10;\n if (count > 10) {\n console.warn(merged[ key ]);\n }\n }\n });\n }\n localStorage.setItem(MOSA_MERGED_TRANSLATION(lang), JSON.stringify(merged));\n this.myTranslateService.reloadLang(lang);\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { getRandomString } from '../../utils/commons.util';\nimport { TranslateCollectorService } from './translate-collector.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AssetsI18nLoaderService {\n\n protected priority: number = 0;\n protected supportedLanguages: string[] = [];\n\n constructor(\n protected myHttpClient: HttpClient,\n protected myTranslateCollectorService: TranslateCollectorService,\n ) {\n }\n\n public async init(path?: string, libName?: string, priority?: number): Promise<void> {\n if (this.supportedLanguages.length > 0) {\n for (let i: number = 0; i < this.supportedLanguages.length; i++) {\n await firstValueFrom(this.loadTranslations(this.supportedLanguages[ i ], path, libName, priority));\n }\n return;\n }\n\n const res: { languages: string[] } | null = await firstValueFrom(this.myHttpClient.get<{ languages: string[] }>(`assets/i18n/supported-languages.json?v=${getRandomString()}`)).catch(() => null);\n if (!res) {\n console.error('Missing file -> assets/i18n/supported-languages.json');\n return;\n }\n\n this.supportedLanguages = res.languages;\n\n for (let i: number = 0; i < this.supportedLanguages.length; i++) {\n await firstValueFrom(this.loadTranslations(this.supportedLanguages[ i ], path, libName, priority));\n }\n }\n\n protected loadTranslations(lang: string, path?: string, libName?: string, priority?: number): Observable<Record<string, string> | null> {\n const filename: string = libName ? `${libName}-${lang}.json` : `${lang}.json`;\n return this.myHttpClient.get<Record<string, string>>(`${(path || './assets/i18n/') + filename}?v=${getRandomString()}`)\n .pipe(\n tap((response: Record<string, string>) =>\n this.myTranslateCollectorService.addTranslations(response, lang, priority || this.priority)),\n catchError(() => {\n console.error(`Missing file -> ${filename}`);\n return of(null);\n }),\n );\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ILogEvent } from '../models/logger/log-event.model';\nimport { LogType } from '../models/logger/log-type.model';\nimport { ILoggerConfig } from '../models/logger/logger-config.model';\nimport { ILoggerDefaultConfig } from '../models/logger/logger-default-config.model';\nimport { isNullOrUndefined } from '../utils/commons.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreLoggerService {\n\n public defaultConfig: ILoggerDefaultConfig | undefined;\n\n private readonly uiLogs$: BehaviorSubject<ILogEvent | null> = new BehaviorSubject<ILogEvent | null>(null);\n\n /**\n * Default constructor\n */\n constructor() {\n }\n\n public subUiLogs(): Observable<ILogEvent | null> {\n return this.uiLogs$.asObservable();\n }\n\n /**\n * Gets the error message from any type of object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getErrorMsg(err: any): string {\n let msg: string = 'Unknown Error';\n\n if (!err) {\n return msg;\n }\n\n if (err instanceof HttpErrorResponse) {\n if (typeof err.error !== 'string') {\n return `mosa.commons.errors.status[${err.status}].message`;\n }\n\n return err.error;\n }\n\n if (typeof err === 'string') {\n msg = err;\n } else if (err.msg) {\n msg = err.msg;\n } else if (err.error?.msg) {\n msg = err.error.msg;\n } else if (err.error?.message) {\n msg = err.error.message;\n } else if (err.error?.errors?.[ 0 ]?.message) {\n msg = err.error.errors[ 0 ].message;\n } else if (err.message) {\n msg = err.message;\n } else if (err.Message) {\n msg = err.Message;\n }\n\n if (typeof err.error === 'string') {\n msg = err.error;\n }\n\n return msg;\n }\n\n /**\n * Get the title to be shown in logger toast\n * @param err\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getErrorTitle(err: any): string {\n let title: string = 'mosa.commons.logs.error.label';\n if (err?.label) {\n title = err.label;\n } else if (err?.title) {\n title = err.title;\n } else if (err?.error?.label) {\n title = err.error.label;\n } else if (err?.error?.title) {\n title = err.error.title;\n }\n return title;\n }\n\n /**\n * Logs an error to the user\n * @param data\n * @param showUser\n * @param config\n */\n public logError(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.msg = this.getErrorMsg(config.msg);\n\n if (!config.title) {\n config.title = this.getErrorTitle(config.msg);\n }\n\n config.className = 'snackbar-error';\n\n this.show(config, 'error');\n }\n\n /**\n * Logs a success message to the user\n * @param data\n * @param config\n */\n public logSuccess(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-success';\n\n this.show(config, 'success');\n }\n\n /**\n * Logs a warning to the user\n * @param data\n * @param showUser\n * @param config\n */\n public logWarning(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-warning';\n\n this.show(config, 'warning');\n }\n\n /**\n * Logs an info to the user\n * @param data\n * @param config\n */\n public logInfo(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-info';\n\n this.show(config, 'info');\n }\n\n /**\n * Logs any kind of message to the user\n * @param data\n * @param config\n */\n public log(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-default';\n\n this.show(config, 'default');\n }\n\n /**\n * Show the log\n * @requires @mosa-ng/material\n * @param data\n * @param type\n * @param config\n */\n public show(config: ILoggerConfig, type: LogType): void {\n this.uiLogs$.next({ title: config.title, msg: config.msg, type, config });\n }\n\n /**\n * Serializes empty values, so no error is being returned\n * @param config\n * @private\n */\n private serializeConfig(config: ILoggerConfig | undefined): ILoggerConfig {\n // Check if user has default config\n if (!this.defaultConfig) {\n this.defaultConfig = {\n debug: true,\n };\n }\n\n if (!config) {\n // Get user default config\n config = {\n showDismiss: this.defaultConfig.showDismiss,\n closeOnClick: isNullOrUndefined(this.defaultConfig.closeOnClick) ? true : this.defaultConfig.closeOnClick,\n className: this.defaultConfig.className,\n duration: this.defaultConfig.duration || 4,\n };\n }\n\n // Serialize configuration\n config.duration = CoreLoggerService.getValue<number>(config.duration!, this.defaultConfig.duration!, 4);\n config.className = CoreLoggerService.getValue<string>(config.className!, this.defaultConfig.className!, '');\n config.showDismiss = CoreLoggerService.getValue<boolean>(config.showDismiss!, this.defaultConfig.showDismiss!, false);\n config.closeOnClick = CoreLoggerService.getValue<boolean>(config.closeOnClick!, this.defaultConfig.closeOnClick!, true);\n\n return config;\n }\n\n /**\n * Gets a value which is not undefined or null\n * @param val\n * @param val1\n * @param def\n * @private\n */\n private static getValue<T>(val: T, val1: T, def: T): T {\n if (isNullOrUndefined(val)) {\n if (isNullOrUndefined(val1)) {\n return def;\n }\n return val1;\n }\n return val;\n }\n\n}\n","import { HttpClient, HttpErrorResponse, HttpEvent, HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { IApiOptions } from '../models/api-options.model';\nimport { ITokenSettings } from '../models/token-settings.model';\nimport { CoreLoggerService } from './core-logger.service';\nimport { isNullOrEmpty } from '../utils/commons.util';\n\nexport const LOCAL_STORAGE_TOKEN_KEY = 'tokenSettings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n\n constructor(\n private readonly myCoreLoggerService: CoreLoggerService,\n private readonly myHttpClient: HttpClient,\n ) {\n }\n\n /**\n * Sets the token\n * @param tokenSettings\n */\n public setToken(tokenSettings: ITokenSettings): void {\n window.localStorage.setItem(LOCAL_STORAGE_TOKEN_KEY, JSON.stringify(tokenSettings));\n }\n\n /**\n * Gets token\n */\n public getToken(): ITokenSettings | null {\n const tokenSettings: string | null = window.localStorage.getItem(LOCAL_STORAGE_TOKEN_KEY);\n if (isNullOrEmpty(tokenSettings)) {\n return null;\n }\n\n return JSON.parse(tokenSettings!);\n }\n\n /**\n * Deletes token\n */\n public deleteToken(): void {\n window.localStorage.removeItem(LOCAL_STORAGE_TOKEN_KEY);\n }\n\n /**\n * Makes an http get call\n * @param url\n * @param headers\n * @param options\n */\n public get<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.get<T>(url, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an async http get call, which also includes the response headers\n * @param url\n * @param headers\n * @param options\n */\n public async getWithHeadersAsync<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Promise<HttpEvent<T>> {\n return firstValueFrom(this.getWithHeaders<T>(url, headers, options));\n }\n\n /**\n * Makes an http get call, which also includes the response headers\n * @param url\n * @param headers\n * @param options\n */\n public getWithHeaders<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<HttpEvent<T>> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.get<T>(url, { ...options.httpOptions as any, headers, observe: 'response' })\n .pipe(\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http patch call (For partial updates)\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public patch<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.patch<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http put call\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public put<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.put<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http post call\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public post<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.post<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * makes an http delete call\n * @param url\n * @param headers\n * @param options\n * @returns Observable\n */\n public delete<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n return this.myHttpClient.delete<T>(url, { ...options.httpOptions as {}, headers })\n .pipe(\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Appends a script to the html body\n * @param path\n * @param attributes\n * @param onLoad\n */\n public loadExternalScript(path: string, attributes?: { key: string, value: string }[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLoad?: ((this: GlobalEventHandlers, ev: Event) => any)): void {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = path;\n script.async = true;\n\n if (onLoad) {\n script.onload = onLoad;\n }\n\n if (attributes) {\n for (const attribute of attributes) {\n script.setAttribute(attribute.key, attribute.value);\n }\n }\n\n document.body.append(script);\n }\n\n private handleError(err: HttpErrorResponse, options: IApiOptions): Observable<never> {\n if (!options?.skipErrorHandling) {\n this.myCoreLoggerService.logError({ msg: err });\n }\n\n return throwError(() => err);\n }\n\n private handleResponse<T>(response: HttpEvent<T>): T {\n if (response instanceof HttpResponse) {\n return response.body as T;\n }\n return response as T;\n }\n\n private getHeaders(headers?: HttpHeaders, options?: IApiOptions): HttpHeaders {\n if (!headers) {\n headers = new HttpHeaders();\n }\n\n if (!options?.skipContentType) {\n if (!headers.get('Content-Type')) {\n headers = headers.set('Content-Type', 'application/json');\n }\n }\n\n const tokenSettings: ITokenSettings | null = this.getToken();\n if (!options?.skipAuth && tokenSettings) {\n headers = headers.set('Authorization', `${tokenSettings.tokenType} ${tokenSettings.token}`);\n }\n return headers;\n }\n\n private static serializeOptions(options?: IApiOptions): IApiOptions {\n if (!options) {\n options = {};\n }\n\n if (!options.httpOptions) {\n options.httpOptions = {};\n }\n\n return options;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MosaSocketService {\n\n private subject: Subject<MessageEvent> | undefined;\n\n constructor() {\n }\n\n public connect(url: string): Subject<MessageEvent> {\n if (!this.subject) {\n this.subject = this.create(url);\n }\n return this.subject;\n }\n\n public send(data: MessageEvent): void {\n this.subject?.next(data);\n }\n\n private create(url: string): Subject<MessageEvent> {\n const ws = new WebSocket(url);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const observable = new Observable((obs: Observer<MessageEvent>): any => {\n ws.onmessage = obs.next.bind(obs);\n ws.onerror = obs.error.bind(obs);\n ws.onclose = obs.complete.bind(obs);\n return ws.close.bind(ws);\n });\n const observer = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n next: (data: any): void => {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(data));\n }\n },\n };\n return Subject.create(observer, observable);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { MOSA_FALLBACK_TRANSLATION, MOSA_MERGED_TRANSLATION } from '../../constants/local-storage.constant';\nimport { IKeyMap } from '../../models/key-map.model';\nimport { isNullOrEmpty, tryJsonParse } from '../../utils/commons.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CustomTranslateLoaderService {\n\n public getTranslation(lang: string): Observable<IKeyMap<string> | null> {\n return new Observable<IKeyMap<string> | null>((observer: Observer<IKeyMap<string> | null>) => {\n const item: string | null = localStorage.getItem(MOSA_MERGED_TRANSLATION(lang));\n const responseObj: IKeyMap<string> | null = tryJsonParse(item, () => this.loadFallbackLanguage());\n\n observer.next(responseObj);\n observer.complete();\n });\n }\n\n private loadFallbackLanguage(): IKeyMap<string> {\n const defaultTranslation: string | null = localStorage.getItem(MOSA_FALLBACK_TRANSLATION);\n return isNullOrEmpty(defaultTranslation) ? {} : JSON.parse(defaultTranslation!);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport interface ICanComponentDeactivate {\n canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CanDeactivateGuard implements CanDeactivate<ICanComponentDeactivate> {\n\n public canDeactivate(component: ICanComponentDeactivate): boolean {\n return component.canDeactivate ? component.canDeactivate() as boolean : true;\n }\n\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IDictionaryItem } from '../models/dictionary-item.model';\nimport { IKeyMap } from '../models/key-map.model';\n\nexport class Dictionary<Key, Value> {\n\n private readonly dictionaryItems$: BehaviorSubject<IDictionaryItem<Key, Value>[]>;\n\n /**\n * Default constructor.\n * @param data Requires an array of IDictionaryItem with a key and a value\n */\n constructor(...data: IDictionaryItem<Key, Value>[]) {\n this.dictionaryItems$ = new BehaviorSubject<IDictionaryItem<Key, Value>[]>(data);\n }\n\n /**\n * Observable to subscribe to dictionary changes\n */\n public valueChanges(): Observable<IDictionaryItem<Key, Value>[]> {\n return this.dictionaryItems$.asObservable();\n }\n\n /**\n * Observable to subscribe to dictionary as object changes\n */\n public objectArray(): Observable<IKeyMap<Value>> {\n return this.dictionaryItems$.asObservable()\n .pipe(\n map((items: IDictionaryItem<Key, Value>[]): IKeyMap<Value> => this.toObject(items)),\n );\n }\n\n /**\n * Gets the items of the dictionary\n * @returns dictionary items\n */\n public get items(): IDictionaryItem<Key, Value>[] {\n return this.dictionaryItems$.value;\n }\n\n /**\n * Gets a dictionary item by key\n * @param key\n * @returns single dictionary item\n */\n public get(key: Key): IDictionaryItem<Key, Value> | undefined {\n return this.dictionaryItems$.value.find((item: IDictionaryItem<Key, Value>): boolean => item.key === key);\n }\n\n /**\n * Checks if dictionary contains item\n * @param key\n */\n public contains(key: Key): boolean {\n return this.get(key) != null;\n }\n\n /**\n * Adds a dictionary item\n * @param key\n * @param value\n */\n public add(key: Key, value: Value): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n dictionaryItems.push({ key, value });\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Updates a dictionary item\n * @param data\n * @param index\n */\n public update(data: IDictionaryItem<Key, Value>, index?: number): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n if (!index) {\n index = this.getIndex(data.key);\n }\n\n if (index !== -1) {\n dictionaryItems[ index ] = data;\n } else {\n console.warn('Dictionary: Index not found');\n }\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Gets an index with a specific key\n * @param key\n */\n public getIndex(key: Key): number {\n return this.dictionaryItems$.value.findIndex((val: IDictionaryItem<Key, Value>): boolean => val.key === key);\n }\n\n /**\n * Removes an item from the dictionary\n * @param value\n * @param index\n */\n public remove(value: Key, index?: number): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n if (!index) {\n index = this.getIndex(value);\n }\n\n if (index !== -1) {\n dictionaryItems.splice(index, 1);\n } else {\n console.warn('Dictionary: Index not found');\n }\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Private function to cast array to an object\n * @param items\n * @private\n */\n private toObject(items: IDictionaryItem<Key, Value>[]): IKeyMap<Value> {\n const obj: IKeyMap<Value> = {};\n for (const item of items) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj[ item.key as any ] = item.value;\n }\n return obj;\n }\n\n /**\n * Private function to update dictionary items\n * @param items\n * @private\n */\n private updateItems(items: IDictionaryItem<Key, Value>[]): void {\n this.dictionaryItems$.next(items);\n }\n\n}\n","/**\n * Cast any type\n * @param data to be casted\n * @returns casted data\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any,max-classes-per-file\nexport function cast<T>(data: any): T {\n return data as T;\n}\n\nexport class StringExtensions implements IStringExtensions {\n public getPart(maxChars: number, appendDot?: boolean): string {\n let newStr = cast<string>(this).replace(/\\\\n/g, ' ');\n if (newStr.length > maxChars) {\n newStr = newStr.substring(0, maxChars);\n if (appendDot && newStr.length > maxChars - 3) {\n newStr += '...';\n }\n }\n return newStr;\n }\n\n public fromJSON<T>(): T | null {\n let str: string = cast<string>(this);\n if (typeof this !== 'string') {\n str = JSON.stringify(str);\n }\n\n try {\n str = JSON.parse(str);\n } catch {\n return null;\n }\n\n if (typeof str === 'object') {\n return str as T;\n }\n\n return null;\n }\n\n public toCSSClass(): string {\n return cast<string>(this)?.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase();\n }\n\n public toUTC(): string {\n return `${cast<string>(this)}Z`;\n }\n}\n\nexport class ArrayExtensions implements IArrayExtensions {\n public hasChanges<T>(data: T[]): boolean {\n return JSON.stringify(this) !== JSON.stringify(data);\n }\n\n public replaceRange<T>(data: T[], start: number, end: number): T[] {\n const array: T[] = cast<T[]>(this);\n let replaceDataIndex: number = 0;\n for (let i: number = start; i < end; i++) {\n if (!array[ i ] && !data[ replaceDataIndex ]) {\n array.splice(i, 1);\n continue;\n }\n\n array[ i ] = data[ replaceDataIndex ];\n replaceDataIndex++;\n }\n return array;\n }\n}\n\nexport class NumberExtensions implements INumberExtensions {\n public between(start: number, end: number): boolean {\n const num: number = cast<number>(this);\n return num >= start && num <= end;\n }\n}\n\n/**\n * @interface StringExtensions\n */\nexport interface IStringExtensions {\n /**\n * Gets a part of a string\n * @param maxChars maximum amount of chars\n * @param appendDot append three dots at the end\n * @returns splitted string\n */\n getPart(maxChars: number, appendDot?: boolean): string;\n\n /**\n * Converts a string from json\n * @returns object of expected type\n */\n fromJSON<T>(): T | null;\n\n /**\n * Converts a string to a css class\n * @returns converted kebab case css class\n */\n toCSSClass(): string;\n\n /**\n * Converts a datetime string to utc format\n */\n toUTC(): string;\n}\n\nexport interface IArrayExtensions {\n /**\n * Checks if array has changes\n * @param data array passed\n * @deprecated learn how to program\n */\n hasChanges: <T>(data: T[]) => boolean;\n /**\n * Replaces a specific element range in an array\n * @param data\n */\n replaceRange: <T>(replaceData: T[], start: number, end: number) => T[];\n}\n\nexport interface INumberExtensions {\n /**\n * checks if a number in a range\n * @param start of range\n * @param end of range\n */\n between(start: number, end: number): boolean;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention,id-blacklist,@typescript-eslint/no-empty-object-type\n interface String extends IStringExtensions {\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-empty-object-type,@typescript-eslint/no-unused-vars\n interface Array<T> extends IArrayExtensions {\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention,id-blacklist,@typescript-eslint/no-empty-object-type\n interface Number extends INumberExtensions {\n }\n}\n\nexport class Prototypes {\n\n /**\n * Initialize prototypes\n */\n public static init(): void {\n const stringExtensions = new StringExtensions();\n const arrayExtensions = new ArrayExtensions();\n const numberExtensions = new NumberExtensions();\n\n String.prototype.getPart = stringExtensions.getPart;\n String.prototype.fromJSON = stringExtensions.fromJSON;\n String.prototype.toCSSClass = stringExtensions.toCSSClass;\n String.prototype.toUTC = stringExtensions.toUTC;\n\n Array.prototype.hasChanges = arrayExtensions.hasChanges;\n Array.prototype.replaceRange = arrayExtensions.replaceRange;\n\n Number.prototype.between = numberExtensions.between;\n }\n}\n","import { ISieveFilter } from '../models/sieve/sieve-filter.model';\nimport { SieveOperator } from '../models/sieve/sieve-operator.model';\nimport { ISieveOptions } from '../models/sieve/sieve-options.model';\nimport { ISieveSort } from '../models/sieve/sieve-sort.model';\n\nexport class Sieve {\n\n private readonly options: ISieveOptions;\n\n constructor(options: ISieveOptions) {\n this.options = options;\n this.options.baseUrl = options.baseUrl || '';\n this.options.filters = options.filters || [];\n this.options.sorts = options.sorts || [];\n }\n\n /**\n * public getter to get page size\n */\n public get pageSize(): number {\n return this.options.pageSize || 10;\n }\n\n /**\n * Setter to set page size\n */\n public set pageSize(pageSize: number) {\n this.options.pageSize = pageSize;\n }\n\n /**\n * public getter to get page\n */\n public get page(): number {\n return this.options.page || 0;\n }\n\n /**\n * Setter to set page\n */\n public set page(page: number) {\n this.options.page = page;\n }\n\n /**\n * public getter to get filters\n */\n public get filters(): ISieveFilter[] | undefined {\n return this.options.filters;\n }\n\n /**\n * Setter to set filters\n */\n public set filters(filters: ISieveFilter[]) {\n this.options.filters = filters;\n }\n\n /**\n * public getter to get sorts\n */\n public get sorts(): ISieveSort[] | undefined {\n return this.options.sorts;\n }\n\n /**\n * Setter to set sorts\n */\n public set sorts(sorts: ISieveSort[]) {\n this.options.sorts = sorts;\n }\n\n /**\n * method to add a sort option\n * @param name of the item to sort\n * @param desc sort descending\n */\n public addSort(name: string, desc?: boolean): void {\n this.options.sorts?.push({\n name,\n desc,\n });\n }\n\n /**\n * method to add a filter option\n * @param key of the item\n * @param operator { SieveOperator }\n * @param value filtered value\n */\n public addFilter(key: string, operator: SieveOperator, value: string): void {\n this.options.filters?.push({\n key,\n operator,\n value,\n });\n }\n\n /**\n * Getter for base url\n */\n public get baseUrl(): string | undefined {\n return this.options.baseUrl;\n }\n\n /**\n * Setter for base url\n * @param url\n */\n public set baseUrl(url: string) {\n this.options.baseUrl = url;\n }\n\n /**\n * Convert to queried string\n */\n public getUrl(): string {\n return `${ this.options.baseUrl }${ this.toQuery() }`;\n }\n\n /**\n * to Query\n * @private converts options to actual query\n */\n private toQuery(): string {\n let query = '?';\n\n if (this.page) {\n query += `page=${ this.page }`;\n }\n\n if (this.pageSize) {\n query += `&pageSize=${ this.pageSize }`;\n }\n\n if (this.filters?.length) {\n let filterQuery: string = '&filters=';\n\n for (const filter of this.filters) {\n if (filter.value) {\n filterQuery += `${ filter.key }${ filter.operator }${ filter.value },`;\n }\n }\n\n if (filterQuery !== '&filters=') {\n filterQuery = filterQuery.slice(0, -1);\n query += filterQuery;\n }\n }\n\n if (this.sorts?.length) {\n let sortQuery: string = '&sorts=';\n\n for (const sort of this.sorts) {\n sortQuery += `${ sort.desc ? '-' : '+' }${ sort.name },`;\n }\n\n sortQuery = sortQuery.slice(0, -1);\n query += sortQuery;\n }\n\n if (query.startsWith('&')) {\n query = query.slice(1);\n }\n\n return query;\n }\n\n}\n","export enum Theme {\n light,\n dark,\n}\n","export enum ContentPosition {\n top = 'top',\n topLeft = 'top-left',\n topRight = 'top-right',\n bottom = 'bottom',\n bottomLeft = 'bottom-left',\n bottomRight = 'bottom-right',\n center = 'center',\n centerLeft = 'center-left',\n centerRight = 'center-right',\n}\n","export enum Browser {\n chrome,\n firefox,\n internetExplorer,\n opera,\n edge,\n safari,\n other,\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Dictionary } from '../utils/dictionary.util';\n\n@Pipe({ name: 'dictionaryItem' })\nexport class DictionaryItemPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(key: any, dictionary: Dictionary<any, any>): string {\n return dictionary.get(key)?.value;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { some } from '../utils/commons.util';\n\n@Pipe({ name: 'filter' })\nexport class FilterPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T[] {\n // Return if array is empty or null\n if (!array?.length) {\n return [];\n }\n\n const foundItems: T[] = array.filter((v: T): boolean => some(v, searchValue, searchKey));\n if (!foundItems.length) {\n return [];\n }\n\n // Return whole item\n return foundItems;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { some } from '../utils/commons.util';\n\n@Pipe({ name: 'find' })\nexport class FindPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T | null {\n // Return if array is empty or null\n if (!array?.length) {\n return null;\n }\n\n const foundItem: T | undefined = array.find((v: T): boolean => some(v, searchValue, searchKey));\n if (!foundItem) {\n return null;\n }\n\n // Return whole item\n return foundItem;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'join' })\nexport class JoinPipe implements PipeTransform {\n\n /**\n * Join array by separator\n * @param array\n * @param returnField\n * @param separator\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(array: any[], returnField: any, separator: string = ', '): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return array.map((val: any): string => returnField ? val[ returnField ] : val).join(separator);\n }\n\n}\n","import { DatePipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Pipe({ name: 'mosaDate' })\nexport class MosaDatePipe implements PipeTransform {\n\n private readonly store$: BehaviorSubject<number> = new BehaviorSubject<number>(new Date().getTime());\n\n private templates: Record<string, string> = {};\n\n private readonly myTranslateService: TranslateService = inject(TranslateService);\n private readonly myDatePipe: DatePipe = inject(DatePipe);\n\n constructor() {\n this.updateTemplates();\n setInterval((): void => this.store$.next(new Date().getTime()), 10);\n this.myTranslateService.onLangChange.subscribe((): void => {\n this.updateTemplates();\n this.store$.next(new Date().getTime());\n });\n }\n\n public transform(date: string | Date | undefined, mode: 'full' | 'timeSince' | 'date' = 'timeSince', options?: { withPrefix?: boolean, withSuffix?: boolean }): Observable<string> {\n return this.store$.pipe(map((currentDate: number): string => this.calcDate(currentDate, date, mode, options)));\n }\n\n private calcDate(currentTimestamp: number, date: string | Date | undefined, mode: 'full' | 'timeSince' | 'date', options?: { withPrefix?: boolean, withSuffix?: boolean }): string {\n if (!date) {\n return '';\n }\n\n let parsed: Date;\n if (date instanceof Date) {\n parsed = new Date(date.toString());\n } else {\n parsed = new Date(date);\n }\n\n if (!currentTimestamp) {\n currentTimestamp = new Date().getTime();\n }\n const currentDate = new Date(currentTimestamp);\n const parsedTimestamp: number = parsed.getTime();\n\n const convertedDate: string | null = this.myDatePipe.transform(parsed, 'dd. MMM. yyyy hh:mm aaa');\n if (mode === 'full' || mode === 'timeSince') {\n const seconds: number = Math.abs(((currentTimestamp - parsedTimestamp) * .001) >> 0);\n const minutes: number = seconds / 60;\n const hours: number = minutes / 60;\n const days: number = hours / 24;\n const years: number = days / 365;\n\n const yearDifference = (currentDate.getFullYear() - parsed.getFullYear()) * 12;\n const monthDifference = currentDate.getMonth() - parsed.getMonth();\n\n let timeSince: string = '';\n if (parsedTimestamp > currentTimestamp) {\n timeSince = (options?.withPrefix ? this.templates[ 'prefixFuture' ] : '') + (\n seconds > 0 && seconds < 2 && this.template('second', 1) ||\n seconds < 60 && this.template('seconds', seconds) ||\n seconds < 120 && this.template('minute', 1) ||\n minutes < 60 && this.template('minutes', minutes) ||\n minutes < 120 && this.template('hour', 1) ||\n hours < 24 && this.template('hours', hours) ||\n hours < 42 && this.template('day', 1) ||\n days < 30 && this.template('days', days) ||\n days < 45 && this.template('month', 1) ||\n days < 365 && this.template('months', yearDifference + monthDifference) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + (options?.withSuffix ? this.templates[ 'suffixFuture' ] : '');\n } else {\n timeSince = (options?.withPrefix ? this.templates[ 'prefixPast' ] : '') + (\n seconds > 0 && seconds < 2 && this.template('second', 1) ||\n seconds < 60 && this.template('seconds', seconds) ||\n seconds < 120 && this.template('minute', 1) ||\n minutes < 60 && this.template('minutes', minutes) ||\n minutes < 120 && this.template('hour', 1) ||\n hours < 24 && this.template('hours', hours) ||\n hours < 42 && this.template('day', 1) ||\n days < 30 && this.template('days', days) ||\n days < 45 && this.template('month', 1) ||\n days < 365 && this.template('months', yearDifference + monthDifference) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + (options?.withSuffix ? this.templates[ 'suffixPast' ] : '');\n }\n\n if (mode === 'timeSince') {\n return timeSince;\n }\n\n if (mode === 'full') {\n return `${convertedDate} (${timeSince})`;\n }\n }\n\n return convertedDate || '';\n }\n\n private template(key: string, val: number): string {\n return this.templates[ key ]?.replace(/%d/i, String(Math.abs(Math.round(val))));\n }\n\n private updateTemplates(): void {\n this.templates = {\n prefixPast: this.myTranslateService.instant('mosa.pipes.timeSince.prefix.past'),\n suffixPast: this.myTranslateService.instant('mosa.pipes.timeSince.suffix.past'),\n prefixFuture: this.myTranslateService.instant('mosa.pipes.timeSince.prefix.future'),\n suffixFuture: this.myTranslateService.instant('mosa.pipes.timeSince.suffix.future'),\n second: this.myTranslateService.instant('mosa.pipes.timeSince.second'),\n seconds: this.myTranslateService.instant('mosa.pipes.timeSince.seconds'),\n minute: this.myTranslateService.instant('mosa.pipes.timeSince.minute'),\n minutes: this.myTranslateService.instant('mosa.pipes.timeSince.minutes'),\n hour: this.myTranslateService.instant('mosa.pipes.timeSince.hour'),\n hours: this.myTranslateService.instant('mosa.pipes.timeSince.hours'),\n day: this.myTranslateService.instant('mosa.pipes.timeSince.day'),\n days: this.myTranslateService.instant('mosa.pipes.timeSince.days'),\n month: this.myTranslateService.instant('mosa.pipes.timeSince.month'),\n months: this.myTranslateService.instant('mosa.pipes.timeSince.months'),\n year: this.myTranslateService.instant('mosa.pipes.timeSince.year'),\n years: this.myTranslateService.instant('mosa.pipes.timeSince.years'),\n };\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MosaDurationFormat } from '../models/mosa-duration.model';\n\n@Pipe({ name: 'mosaDuration' })\nexport class MosaDurationPipe implements PipeTransform {\n\n private readonly store$: BehaviorSubject<number> = new BehaviorSubject<number>(new Date().getTime());\n private readonly interval: NodeJS.Timeout;\n\n constructor(\n private readonly myTranslateService: TranslateService,\n ) {\n this.interval = setInterval(() => this.store$.next(new Date().getTime()), 1000);\n this.myTranslateService.onLangChange.subscribe((): void => this.store$.next(new Date().getTime()));\n }\n\n /**\n * Converts a timestamp to a duration in the given format\n * @param millis\n * @param format\n * @returns\n * auto: 15000 -> 15 seconds\n * seconds: 15000 -> 15 seconds\n * minutes: 60000 -> 1 minute\n * hours: 7200000 -> 2 hours\n * days: 172800000 -> 2 days\n */\n public transform(millis: number | undefined, format: MosaDurationFormat = 'auto'): Observable<string> {\n return this.store$.pipe(\n map((currentDate: number): string => {\n if (!millis) {\n clearInterval(this.interval);\n return '';\n }\n\n if (millis - currentDate < 0) {\n clearInterval(this.interval);\n return '';\n }\n\n return this.calcDuration(currentDate, millis, format);\n }),\n );\n }\n\n\n private getTranslation(num: number, format: MosaDurationFormat): string {\n if (num === 1) {\n return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.commons.dateTime[${format}].label`)}`;\n }\n return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.commons.dateTime[${format}].plural.label`)}`;\n }\n\n\n private calcDuration(currentDate: number, millis: number, format: MosaDurationFormat): string {\n millis = millis - currentDate;\n\n const seconds: number = millis / 1000;\n if (format === 'seconds') {\n return this.getTranslation(seconds, 'seconds');\n }\n\n const minutes: number = seconds / 60;\n if (format === 'minutes') {\n return this.getTranslation(minutes, 'minutes');\n }\n\n const hours: number = minutes / 60;\n if (format === 'hours') {\n return this.getTranslation(hours, 'hours');\n }\n\n const days: number = hours / 24;\n if (format === 'days') {\n return this.getTranslation(days, 'days');\n }\n\n if (format === 'auto') {\n if (seconds < 60) {\n return this.getTranslation(seconds, 'seconds');\n }\n\n if (minutes < 60) {\n return this.getTranslation(minutes, 'minutes');\n }\n\n if (hours < 24) {\n return this.getTranslation(hours, 'hours');\n }\n\n return this.getTranslation(days, 'days');\n }\n\n return '';\n }\n}\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { AssetsI18nLoaderService } from './services/translation/assets-i18n-loader.service';\n\n/*\n * Public API Surface of core\n */\n\n/**\n * Services\n */\nexport * from './services/api.service';\nexport * from './services/mosa-socket.service';\nexport * from './services/core-logger.service';\n\nexport * from './services/translation/translate-collector.service';\nexport * from './services/translation/custom-translate-loader.service';\nexport * from './services/translation/assets-i18n-loader.service';\n\n/**\n * Guards\n */\nexport * from './services/guards/can-deactivate.guard';\n\n/**\n * Models\n */\nexport * from './models/dictionary-item.model';\nexport * from './models/api-options.model';\nexport * from './models/mosa-duration.model';\nexport * from './models/token-settings.model';\nexport * from './models/transform-matrix.model';\nexport * from './models/key-map.model';\nexport * from './models/item.model';\nexport * from './models/size.model';\n\nexport * from './models/sieve/sieve-response.model';\nexport * from './models/sieve/sieve-sort.model';\nexport * from './models/sieve/sieve-filter.model';\nexport * from './models/sieve/sieve-operator.model';\nexport * from './models/sieve/sieve-options.model';\n\nexport * from './models/logger/logger-config.model';\nexport * from './models/logger/log.model';\nexport * from './models/logger/log-event.model';\nexport * from './models/logger/log-message-data.model';\nexport * from './models/logger/logger-base-config.model';\nexport * from './models/logger/logger-default-config.model';\nexport * from './models/logger/log-type.model';\n\nexport * from './models/types/form.type';\n\n/**\n * Utils\n */\nexport * from './utils/commons.util';\nexport * from './utils/dictionary.util';\nexport * from './utils/promise.util';\nexport * from './utils/prototypes.util';\nexport * from './utils/sieve.util';\n\n/**\n * Enums\n */\nexport * from './enums/theme.enum';\nexport * from './enums/content-position.enum';\nexport * from './enums/browser.enum';\nexport * from './enums/i18n-supported.enum';\n\n/**\n * Constants\n */\nexport * from './constants/local-storage.constant';\n\n/**\n * Pipes\n */\nexport * from './pipes/dictionary-item.pipe';\nexport * from './pipes/filter.pipe';\nexport * from './pipes/find.pipe';\nexport * from './pipes/join.pipe';\nexport * from './pipes/mosa-date.pipe';\nexport * from './pipes/mosa-duration.pipe';\n\nfunction initI18n(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, undefined, 1);\n}\n\nfunction initI18nCore(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, 'mosa');\n}\n\nexport const provideMosaCore: () => EnvironmentProviders = () => makeEnvironmentProviders([\n provideAppInitializer(() => initI18n(inject(AssetsI18nLoaderService))),\n provideAppInitializer(() => initI18nCore(inject(AssetsI18nLoaderService))),\n]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.TranslateCollectorService","i1.CoreLoggerService","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mosa-ng-core.mjs","sources":["../../../../projects/core/src/lib/utils/commons.util.ts","../../../../projects/core/src/lib/enums/i18n-supported.enum.ts","../../../../projects/core/src/lib/constants/local-storage.constant.ts","../../../../projects/core/src/lib/services/translation/translate-collector.service.ts","../../../../projects/core/src/lib/services/translation/assets-i18n-loader.service.ts","../../../../projects/core/src/lib/services/core-logger.service.ts","../../../../projects/core/src/lib/services/api.service.ts","../../../../projects/core/src/lib/services/mosa-socket.service.ts","../../../../projects/core/src/lib/services/translation/custom-translate-loader.service.ts","../../../../projects/core/src/lib/services/guards/can-deactivate.guard.ts","../../../../projects/core/src/lib/services/guards/authentication.guard.ts","../../../../projects/core/src/lib/services/interceptors/language.interceptor.ts","../../../../projects/core/src/lib/services/interceptors/refresh-token.interceptor.ts","../../../../projects/core/src/lib/utils/dictionary.util.ts","../../../../projects/core/src/lib/utils/prototypes.util.ts","../../../../projects/core/src/lib/utils/sieve.util.ts","../../../../projects/core/src/lib/enums/theme.enum.ts","../../../../projects/core/src/lib/enums/content-position.enum.ts","../../../../projects/core/src/lib/enums/browser.enum.ts","../../../../projects/core/src/lib/pipes/dictionary-item.pipe.ts","../../../../projects/core/src/lib/pipes/filter.pipe.ts","../../../../projects/core/src/lib/pipes/find.pipe.ts","../../../../projects/core/src/lib/pipes/join.pipe.ts","../../../../projects/core/src/lib/pipes/mosa-date.pipe.ts","../../../../projects/core/src/lib/pipes/mosa-duration.pipe.ts","../../../../projects/core/src/lib/provider.ts","../../../../projects/core/src/mosa-ng-core.ts"],"sourcesContent":["import { ITransformMatrix } from '../models/transform-matrix.model';\n\n/**\n * Checks if an object is null or undefined. Does not check for\n * empty strings, or false booleans\n * @param val\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNullOrUndefined(val: any): boolean {\n return val === null || val === undefined;\n}\n\n/**\n * Checks if a string is null or empty\n * @param str\n */\nexport function isNullOrEmpty(str: string | null | undefined): boolean {\n return !str?.trim();\n}\n\n/**\n * Checks if a string or number is zero or higher\n * @param num\n */\nexport function isZeroOrHigher(num: number | string | null | undefined): boolean {\n return num != null && +num >= 0;\n}\n\n/**\n * Checks if an object is a number\n * @param num\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNumber(num: any): boolean {\n return num !== null && !isNaN(+num);\n}\n\n/**\n * Round to nearest number given\n * @param value\n * @param round\n */\nexport function roundNearest(value: number): number {\n return Math.ceil(value / 5) * 5;\n}\n\n/**\n * Merge a two dimensional array\n * @param array\n */\nexport function mergeArray<T>(array: T[][]): T[] {\n return array.reduce((flat: T[], toFlatten: T[] | T[][]): T[] =>\n flat.concat(Array.isArray(toFlatten) ? mergeArray<T>(toFlatten as T[][]) : toFlatten), []);\n}\n\n/**\n * Get CSS Transform matrix from an element\n * @param element\n */\nexport function getTransformMatrix(element: HTMLElement): ITransformMatrix {\n const values = element.style.transform.split(/\\w+\\(|\\);?/);\n const transform = values[ 1 ].split(/,\\s?/g).map((numStr: string): number => parseInt(numStr, 10));\n\n return {\n x: transform[ 0 ],\n y: transform[ 1 ],\n z: transform[ 2 ],\n };\n}\n\nexport function some<T>(item: T, searchValue: T[keyof T] | T[keyof T][], searchKey?: keyof T): boolean {\n let searchValues: T[keyof T][] = searchValue as T[keyof T][];\n if (!Array.isArray(searchValue)) {\n searchValues = [ searchValue ];\n }\n\n return searchValues.includes(searchKey ? item[ searchKey ] : item as T[keyof T]);\n}\n\n/**\n * Generates a random string with numbers and letters\n * @param length\n */\nexport function getRandomString(length: number = 10): string {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result: string = '';\n for (let i: number = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return result;\n}\n\n/**\n * Trys to convert a json string. If it fails it returns [null] or a given fallback of [T]\n */\nexport function tryJsonParse<T>(data: string | undefined | null, fallback?: () => T): T | null {\n try {\n if (!isNullOrEmpty(data)) {\n return JSON.parse(data!);\n }\n } catch {\n // Ignore - go on with fallback check\n }\n\n if (fallback) {\n return fallback();\n }\n return null;\n}\n","export enum I18nSupported {\n enUS = 'en-US',\n deDE = 'de-DE',\n deCH = 'de-CH',\n deAT = 'de-AT',\n enGB = 'en-GB',\n frFR = 'fr-FR',\n esES = 'es-ES',\n ptPT = 'pt-PT',\n}\n","import { I18nSupported } from '../enums/i18n-supported.enum';\n\nexport const MOSA_MERGED_TRANSLATION = (lang: string): string => `mosa_${ lang }_merged_${ location.host }`;\nexport const MOSA_FALLBACK_TRANSLATION = `mosa_${ I18nSupported.enUS }_merged_${ location.host }`;\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MOSA_MERGED_TRANSLATION } from '../../constants/local-storage.constant';\nimport { IKeyMap } from '../../models/key-map.model';\nimport { isNullOrUndefined } from '../../utils/commons.util';\n\nexport interface ITranslationMap {\n priority: number;\n translation: IKeyMap<string>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslateCollectorService {\n\n private translationMap: IKeyMap<ITranslationMap[]> = {};\n\n constructor(private readonly myTranslateService: TranslateService) {\n }\n\n public addTranslations(translation: Record<string, string>, lang: string, priority: number): void {\n if (isNullOrUndefined(this.translationMap[ lang ])) {\n this.translationMap[ lang ] = [];\n }\n\n this.translationMap[ lang ].push({ priority, translation });\n this.translationMap[ lang ].sort((a: ITranslationMap, b: ITranslationMap) => a.priority - b.priority);\n const merged: IKeyMap<string> = JSON.parse(localStorage.getItem(MOSA_MERGED_TRANSLATION(lang))|| '{}');\n\n for (const translationsData of this.translationMap[ lang ]) {\n const translations: IKeyMap<string> = translationsData.translation;\n if (translations != null) {\n Object.keys(translations).forEach((key: string) => void (merged[ key ] = translations[ key ]));\n }\n }\n\n let trans: boolean = true;\n let count: number = 0;\n while (trans) {\n count++;\n trans = false;\n if (count >= 10) {\n console.warn('Limit reached! Please check translation file! Last replaced values:');\n }\n Object.keys(merged).forEach((key: string) => {\n if (merged[ key ].startsWith('@:')) {\n merged[ key ] = merged[ merged[ key ].substring(2, merged[ key ].length) ];\n trans = count < 10;\n if (count > 10) {\n console.warn(merged[ key ]);\n }\n }\n });\n }\n localStorage.setItem(MOSA_MERGED_TRANSLATION(lang), JSON.stringify(merged));\n this.myTranslateService.reloadLang(lang);\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { getRandomString } from '../../utils/commons.util';\nimport { TranslateCollectorService } from './translate-collector.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AssetsI18nLoaderService {\n\n protected priority: number = 0;\n protected supportedLanguages: string[] = [];\n\n private supportedLanguagesPromise: Promise<string[]> | null = null;\n\n constructor(\n protected myHttpClient: HttpClient,\n protected myTranslateCollectorService: TranslateCollectorService,\n ) {\n }\n\n public async init(path?: string, libName?: string, priority?: number): Promise<void> {\n const languages: string[] = await this.getSupportedLanguages();\n\n for (const lang of languages) {\n await firstValueFrom(this.loadTranslations(lang, path, libName, priority));\n }\n }\n\n private async getSupportedLanguages(): Promise<string[]> {\n // If we already have the data, return it immediately\n if (this.supportedLanguages.length > 0) {\n return this.supportedLanguages;\n }\n\n // If a request is already in flight, return that same promise\n if (this.supportedLanguagesPromise) {\n return this.supportedLanguagesPromise;\n }\n\n // Create the promise for the HTTP call\n this.supportedLanguagesPromise = (async (): Promise<string[]> => {\n const url = `assets/i18n/supported-languages.json?v=${getRandomString()}`;\n const res = await firstValueFrom(\n this.myHttpClient.get<{ languages: string[] }>(url)\n ).catch(() => null);\n\n if (!res?.languages) {\n this.supportedLanguagesPromise = null;\n return [];\n }\n\n this.supportedLanguages = res.languages;\n return res.languages;\n })();\n\n return this.supportedLanguagesPromise;\n }\n\n private loadTranslations(lang: string, path?: string, libName?: string, priority?: number): Observable<Record<string, string> | null> {\n const filename: string = libName ? `${libName}-${lang}.json` : `${lang}.json`;\n return this.myHttpClient.get<Record<string, string>>(`${(path || './assets/i18n/') + filename}?v=${getRandomString()}`)\n .pipe(\n tap((response: Record<string, string>) =>\n this.myTranslateCollectorService.addTranslations(response, lang, priority || this.priority)),\n catchError(() => {\n console.error(`Missing file -> ${filename}`);\n return of(null);\n }),\n );\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ILogEvent } from '../models/logger/log-event.model';\nimport { LogType } from '../models/logger/log-type.model';\nimport { ILoggerConfig } from '../models/logger/logger-config.model';\nimport { ILoggerDefaultConfig } from '../models/logger/logger-default-config.model';\nimport { isNullOrUndefined } from '../utils/commons.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreLoggerService {\n\n public defaultConfig: ILoggerDefaultConfig | undefined;\n\n private readonly uiLogs$: BehaviorSubject<ILogEvent | null> = new BehaviorSubject<ILogEvent | null>(null);\n\n /**\n * Default constructor\n */\n constructor() {\n }\n\n public subUiLogs(): Observable<ILogEvent | null> {\n return this.uiLogs$.asObservable();\n }\n\n /**\n * Gets the error message from any type of object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async getErrorMsg(err: any): Promise<string> {\n let msg: string = 'Unknown Error';\n\n if (!err) {\n return msg;\n }\n\n if (typeof err === 'string') {\n msg = err;\n } else if (err.msg) {\n msg = err.msg;\n } else if (err.error?.msg) {\n msg = err.error.msg;\n } else if (err.error?.message) {\n msg = err.error.message;\n } else if (err.error?.errors?.[ 0 ]?.message) {\n msg = err.error.errors[ 0 ].message;\n } else if (err.message) {\n msg = err.message;\n } else if (err.Message) {\n msg = err.Message;\n }\n\n if (err.error instanceof Blob) {\n // Convert the Blob back to a string\n const text: string = await (err.error as Blob).text();\n const errorBody = JSON.parse(text);\n return errorBody.message;\n }\n\n if (typeof err.error === 'string') {\n msg = err.error;\n }\n\n if (!msg && err instanceof HttpErrorResponse) {\n if (typeof err.error !== 'string') {\n return `mosa.commons.errors.status[${err.status}].message`;\n }\n\n return err.error;\n }\n\n return msg;\n }\n\n /**\n * Get the title to be shown in logger toast\n * @param err\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getErrorTitle(err: any): string {\n let title: string = 'mosa.commons.logs.error.label';\n if (err?.label) {\n title = err.label;\n } else if (err?.title) {\n title = err.title;\n } else if (err?.error?.label) {\n title = err.error.label;\n } else if (err?.error?.title) {\n title = err.error.title;\n }\n return title;\n }\n\n /**\n * Logs an error to the user\n * @param data\n * @param showUser\n * @param config\n */\n public async logError(config: ILoggerConfig): Promise<void> {\n config = this.serializeConfig(config);\n config.msg = await this.getErrorMsg(config.msg);\n\n if (!config.title) {\n config.title = this.getErrorTitle(config.msg);\n }\n\n config.className = 'snackbar-error';\n\n this.show(config, 'error');\n }\n\n /**\n * Logs a success message to the user\n * @param data\n * @param config\n */\n public logSuccess(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-success';\n\n this.show(config, 'success');\n }\n\n /**\n * Logs a warning to the user\n * @param data\n * @param showUser\n * @param config\n */\n public logWarning(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-warning';\n\n this.show(config, 'warning');\n }\n\n /**\n * Logs an info to the user\n * @param data\n * @param config\n */\n public logInfo(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-info';\n\n this.show(config, 'info');\n }\n\n /**\n * Logs any kind of message to the user\n * @param data\n * @param config\n */\n public log(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-default';\n\n this.show(config, 'default');\n }\n\n /**\n * Show the log\n * @requires @mosa-ng/material\n * @param data\n * @param type\n * @param config\n */\n public show(config: ILoggerConfig, type: LogType): void {\n this.uiLogs$.next({ title: config.title, msg: config.msg, type, config });\n }\n\n /**\n * Serializes empty values, so no error is being returned\n * @param config\n * @private\n */\n private serializeConfig(config: ILoggerConfig | undefined): ILoggerConfig {\n // Check if user has default config\n if (!this.defaultConfig) {\n this.defaultConfig = {\n debug: true,\n };\n }\n\n if (!config) {\n // Get user default config\n config = {\n showDismiss: this.defaultConfig.showDismiss,\n closeOnClick: isNullOrUndefined(this.defaultConfig.closeOnClick) ? true : this.defaultConfig.closeOnClick,\n className: this.defaultConfig.className,\n duration: this.defaultConfig.duration || 4,\n };\n }\n\n // Serialize configuration\n config.duration = CoreLoggerService.getValue<number>(config.duration!, this.defaultConfig.duration!, 4);\n config.className = CoreLoggerService.getValue<string>(config.className!, this.defaultConfig.className!, '');\n config.showDismiss = CoreLoggerService.getValue<boolean>(config.showDismiss!, this.defaultConfig.showDismiss!, false);\n config.closeOnClick = CoreLoggerService.getValue<boolean>(config.closeOnClick!, this.defaultConfig.closeOnClick!, true);\n\n return config;\n }\n\n /**\n * Gets a value which is not undefined or null\n * @param val\n * @param val1\n * @param def\n * @private\n */\n private static getValue<T>(val: T, val1: T, def: T): T {\n if (isNullOrUndefined(val)) {\n if (isNullOrUndefined(val1)) {\n return def;\n }\n return val1;\n }\n return val;\n }\n\n}\n","import { HttpClient, HttpErrorResponse, HttpEvent, HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, throwError } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { IApiOptions } from '../models/api-options.model';\nimport { ITokenSettings } from '../models/token-settings.model';\nimport { CoreLoggerService } from './core-logger.service';\nimport { isNullOrEmpty } from '../utils/commons.util';\nimport { IApiResult } from '../models/api-result.model';\n\nexport const LOCAL_STORAGE_TOKEN_KEY = 'tokenSettings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n\n private refreshTokenUrl: string = '/api/auth/token/refresh';\n\n private readonly myCoreLoggerService: CoreLoggerService = inject(CoreLoggerService);\n private readonly myHttpClient: HttpClient = inject(HttpClient);\n\n /**\n * Sets the token\n * @param tokenSettings\n */\n public setToken(tokenSettings: ITokenSettings): void {\n window.localStorage.setItem(LOCAL_STORAGE_TOKEN_KEY, JSON.stringify(tokenSettings));\n }\n\n /**\n * Gets token\n */\n public getToken(): ITokenSettings | null {\n const tokenSettings: string | null = window.localStorage.getItem(LOCAL_STORAGE_TOKEN_KEY);\n if (isNullOrEmpty(tokenSettings)) {\n return null;\n }\n\n return JSON.parse(tokenSettings!);\n }\n\n /**\n * Deletes token\n */\n public deleteToken(): void {\n window.localStorage.removeItem(LOCAL_STORAGE_TOKEN_KEY);\n }\n\n public setRefreshTokenUrl(url: string): void {\n this.refreshTokenUrl = url;\n }\n\n public getRefreshTokenUrl(): string {\n return this.refreshTokenUrl;\n }\n\n public refreshToken<T>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<IApiResult<ITokenSettings>> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.post<IApiResult<ITokenSettings>>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<IApiResult<ITokenSettings>>) => this.handleResponse(response)),\n tap((res: IApiResult<ITokenSettings>) => this.setToken({ ...this.getToken()!, ...res.data })),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http get call\n * @param url\n * @param headers\n * @param options\n */\n public get<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.get<T>(url, { ...options.httpOptions as any, headers })\n .pipe(\n // switchMap(() => ,\n map((response: HttpEvent<T>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an async http get call, which also includes the response headers\n * @param url\n * @param headers\n * @param options\n */\n public async getWithHeadersAsync<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Promise<HttpEvent<T>> {\n return firstValueFrom(this.getWithHeaders<T>(url, headers, options));\n }\n\n /**\n * Makes an http get call, which also includes the response headers\n * @param url\n * @param headers\n * @param options\n */\n public getWithHeaders<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<HttpEvent<T>> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.get<T>(url, { ...options.httpOptions as any, headers, observe: 'response' })\n .pipe(\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http patch call (For partial updates)\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public patch<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.patch<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http put call\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public put<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.put<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http post call\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public post<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.post<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * makes an http delete call\n * @param url\n * @param headers\n * @param options\n * @returns Observable\n */\n public delete<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n return this.myHttpClient.delete<T>(url, { ...options.httpOptions as {}, headers })\n .pipe(\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Appends a script to the html body\n * @param path\n * @param attributes\n * @param onLoad\n */\n public loadExternalScript(path: string, attributes?: { key: string, value: string }[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLoad?: ((this: GlobalEventHandlers, ev: Event) => any)): void {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = path;\n script.async = true;\n\n if (onLoad) {\n script.onload = onLoad;\n }\n\n if (attributes) {\n for (const attribute of attributes) {\n script.setAttribute(attribute.key, attribute.value);\n }\n }\n\n document.body.append(script);\n }\n\n private handleError(err: HttpErrorResponse, options: IApiOptions): Observable<never> {\n if (!options?.skipErrorHandling) {\n void this.myCoreLoggerService.logError({ msg: err });\n }\n\n return throwError(() => err);\n }\n\n private handleResponse<T>(response: HttpEvent<T>): T {\n if (response instanceof HttpResponse) {\n return response.body as T;\n }\n return response as T;\n }\n\n private getHeaders(headers?: HttpHeaders, options?: IApiOptions): HttpHeaders {\n if (!headers) {\n headers = new HttpHeaders();\n }\n\n if (!options?.skipContentType) {\n if (!headers.get('Content-Type')) {\n headers = headers.set('Content-Type', 'application/json');\n }\n }\n\n const tokenSettings: ITokenSettings | null = this.getToken();\n if (!options?.skipAuth && tokenSettings) {\n headers = headers.set('Authorization', `${tokenSettings.tokenType} ${tokenSettings.accessToken}`);\n }\n return headers;\n }\n\n private static serializeOptions(options?: IApiOptions): IApiOptions {\n if (!options) {\n options = {};\n }\n\n if (!options.httpOptions) {\n options.httpOptions = {};\n }\n\n return options;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MosaSocketService {\n\n private subject: Subject<MessageEvent> | undefined;\n\n constructor() {\n }\n\n public connect(url: string): Subject<MessageEvent> {\n if (!this.subject) {\n this.subject = this.create(url);\n }\n return this.subject;\n }\n\n public send(data: MessageEvent): void {\n this.subject?.next(data);\n }\n\n private create(url: string): Subject<MessageEvent> {\n const ws = new WebSocket(url);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const observable = new Observable((obs: Observer<MessageEvent>): any => {\n ws.onmessage = obs.next.bind(obs);\n ws.onerror = obs.error.bind(obs);\n ws.onclose = obs.complete.bind(obs);\n return ws.close.bind(ws);\n });\n const observer = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n next: (data: any): void => {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(data));\n }\n },\n };\n return Subject.create(observer, observable);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { MOSA_FALLBACK_TRANSLATION, MOSA_MERGED_TRANSLATION } from '../../constants/local-storage.constant';\nimport { IKeyMap } from '../../models/key-map.model';\nimport { isNullOrEmpty, tryJsonParse } from '../../utils/commons.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CustomTranslateLoaderService {\n\n public getTranslation(lang: string): Observable<IKeyMap<string> | null> {\n return new Observable<IKeyMap<string> | null>((observer: Observer<IKeyMap<string> | null>) => {\n const item: string | null = localStorage.getItem(MOSA_MERGED_TRANSLATION(lang));\n const responseObj: IKeyMap<string> | null = tryJsonParse(item, () => this.loadFallbackLanguage());\n\n observer.next(responseObj);\n observer.complete();\n });\n }\n\n private loadFallbackLanguage(): IKeyMap<string> {\n const defaultTranslation: string | null = localStorage.getItem(MOSA_FALLBACK_TRANSLATION);\n return isNullOrEmpty(defaultTranslation) ? {} : JSON.parse(defaultTranslation!);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport interface ICanComponentDeactivate {\n canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CanDeactivateGuard implements CanDeactivate<ICanComponentDeactivate> {\n\n public canDeactivate(component: ICanComponentDeactivate): boolean {\n return component.canDeactivate ? component.canDeactivate() as boolean : true;\n }\n\n}\n","import { ActivatedRouteSnapshot, CanActivateFn, RouterStateSnapshot } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { ApiService } from '../api.service';\n\nexport const authenticationGuard: CanActivateFn = (_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot) => {\n const apiService: ApiService = inject(ApiService);\n if (!apiService.getToken()) {\n return false;\n }\n\n return true;\n};\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport const languageInterceptor: HttpInterceptorFn = (req, next) => {\n const translate: TranslateService = inject(TranslateService);\n const lang: string = translate.getCurrentLang() || 'en-US';\n\n // Clone the request to add the Accept-Language header\n const authReq = req.clone({\n setHeaders: {\n 'Accept-Language': lang\n }\n });\n\n return next(authReq);\n};\n","import { HttpErrorResponse, HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { mergeMap, Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { inject } from '@angular/core';\nimport { ApiService } from '../api.service';\nimport { ITokenSettings } from '../../models/token-settings.model';\n\nexport function refreshTokenInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\n const apiService = inject(ApiService);\n\n return next(req).pipe(\n catchError((err: unknown) => {\n if (err instanceof HttpErrorResponse && err?.status === 401) {\n return apiService.refreshToken(apiService.getRefreshTokenUrl(), apiService.getToken())\n .pipe(mergeMap(() => next(updateHeader(req, apiService))));\n }\n return throwError(() => err);\n }),\n );\n}\n\nfunction updateHeader(req: HttpRequest<unknown>, apiService: ApiService): HttpRequest<unknown> {\n const authToken: ITokenSettings | null = apiService.getToken();\n req = req.clone({\n headers: req.headers.set('Authorization', `${authToken?.tokenType} ${authToken?.accessToken}`),\n });\n return req;\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IDictionaryItem } from '../models/dictionary-item.model';\nimport { IKeyMap } from '../models/key-map.model';\n\nexport class Dictionary<Key, Value> {\n\n private readonly dictionaryItems$: BehaviorSubject<IDictionaryItem<Key, Value>[]>;\n\n /**\n * Default constructor.\n * @param data Requires an array of IDictionaryItem with a key and a value\n */\n constructor(...data: IDictionaryItem<Key, Value>[]) {\n this.dictionaryItems$ = new BehaviorSubject<IDictionaryItem<Key, Value>[]>(data);\n }\n\n /**\n * Observable to subscribe to dictionary changes\n */\n public valueChanges(): Observable<IDictionaryItem<Key, Value>[]> {\n return this.dictionaryItems$.asObservable();\n }\n\n /**\n * Observable to subscribe to dictionary as object changes\n */\n public objectArray(): Observable<IKeyMap<Value>> {\n return this.dictionaryItems$.asObservable()\n .pipe(\n map((items: IDictionaryItem<Key, Value>[]): IKeyMap<Value> => this.toObject(items)),\n );\n }\n\n /**\n * Gets the items of the dictionary\n * @returns dictionary items\n */\n public get items(): IDictionaryItem<Key, Value>[] {\n return this.dictionaryItems$.value;\n }\n\n /**\n * Gets a dictionary item by key\n * @param key\n * @returns single dictionary item\n */\n public get(key: Key): IDictionaryItem<Key, Value> | undefined {\n return this.dictionaryItems$.value.find((item: IDictionaryItem<Key, Value>): boolean => item.key === key);\n }\n\n /**\n * Checks if dictionary contains item\n * @param key\n */\n public contains(key: Key): boolean {\n return this.get(key) != null;\n }\n\n /**\n * Adds a dictionary item\n * @param key\n * @param value\n */\n public add(key: Key, value: Value): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n dictionaryItems.push({ key, value });\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Updates a dictionary item\n * @param data\n * @param index\n */\n public update(data: IDictionaryItem<Key, Value>, index?: number): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n if (!index) {\n index = this.getIndex(data.key);\n }\n\n if (index !== -1) {\n dictionaryItems[ index ] = data;\n } else {\n console.warn('Dictionary: Index not found');\n }\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Gets an index with a specific key\n * @param key\n */\n public getIndex(key: Key): number {\n return this.dictionaryItems$.value.findIndex((val: IDictionaryItem<Key, Value>): boolean => val.key === key);\n }\n\n /**\n * Removes an item from the dictionary\n * @param value\n * @param index\n */\n public remove(value: Key, index?: number): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n if (!index) {\n index = this.getIndex(value);\n }\n\n if (index !== -1) {\n dictionaryItems.splice(index, 1);\n } else {\n console.warn('Dictionary: Index not found');\n }\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Private function to cast array to an object\n * @param items\n * @private\n */\n private toObject(items: IDictionaryItem<Key, Value>[]): IKeyMap<Value> {\n const obj: IKeyMap<Value> = {};\n for (const item of items) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj[ item.key as any ] = item.value;\n }\n return obj;\n }\n\n /**\n * Private function to update dictionary items\n * @param items\n * @private\n */\n private updateItems(items: IDictionaryItem<Key, Value>[]): void {\n this.dictionaryItems$.next(items);\n }\n\n}\n","/**\n * Cast any type\n * @param data to be casted\n * @returns casted data\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any,max-classes-per-file\nexport function cast<T>(data: any): T {\n return data as T;\n}\n\nexport class StringExtensions implements IStringExtensions {\n public getPart(maxChars: number, appendDot?: boolean): string {\n let newStr = cast<string>(this).replace(/\\\\n/g, ' ');\n if (newStr.length > maxChars) {\n newStr = newStr.substring(0, maxChars);\n if (appendDot && newStr.length > maxChars - 3) {\n newStr += '...';\n }\n }\n return newStr;\n }\n\n public fromJSON<T>(): T | null {\n let str: string = cast<string>(this);\n if (typeof this !== 'string') {\n str = JSON.stringify(str);\n }\n\n try {\n str = JSON.parse(str);\n } catch {\n return null;\n }\n\n if (typeof str === 'object') {\n return str as T;\n }\n\n return null;\n }\n\n public toCSSClass(): string {\n return cast<string>(this)?.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase();\n }\n\n public toUTC(): string {\n return `${cast<string>(this)}Z`;\n }\n}\n\nexport class ArrayExtensions implements IArrayExtensions {\n public hasChanges<T>(data: T[]): boolean {\n return JSON.stringify(this) !== JSON.stringify(data);\n }\n\n public replaceRange<T>(data: T[], start: number, end: number): T[] {\n const array: T[] = cast<T[]>(this);\n let replaceDataIndex: number = 0;\n for (let i: number = start; i < end; i++) {\n if (!array[ i ] && !data[ replaceDataIndex ]) {\n array.splice(i, 1);\n continue;\n }\n\n array[ i ] = data[ replaceDataIndex ];\n replaceDataIndex++;\n }\n return array;\n }\n}\n\nexport class NumberExtensions implements INumberExtensions {\n public between(start: number, end: number): boolean {\n const num: number = cast<number>(this);\n return num >= start && num <= end;\n }\n}\n\n/**\n * @interface StringExtensions\n */\nexport interface IStringExtensions {\n /**\n * Gets a part of a string\n * @param maxChars maximum amount of chars\n * @param appendDot append three dots at the end\n * @returns splitted string\n */\n getPart(maxChars: number, appendDot?: boolean): string;\n\n /**\n * Converts a string from json\n * @returns object of expected type\n */\n fromJSON<T>(): T | null;\n\n /**\n * Converts a string to a css class\n * @returns converted kebab case css class\n */\n toCSSClass(): string;\n\n /**\n * Converts a datetime string to utc format\n */\n toUTC(): string;\n}\n\nexport interface IArrayExtensions {\n /**\n * Checks if array has changes\n * @param data array passed\n * @deprecated learn how to program\n */\n hasChanges: <T>(data: T[]) => boolean;\n /**\n * Replaces a specific element range in an array\n * @param data\n */\n replaceRange: <T>(replaceData: T[], start: number, end: number) => T[];\n}\n\nexport interface INumberExtensions {\n /**\n * checks if a number in a range\n * @param start of range\n * @param end of range\n */\n between(start: number, end: number): boolean;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention,id-blacklist,@typescript-eslint/no-empty-object-type\n interface String extends IStringExtensions {\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-empty-object-type,@typescript-eslint/no-unused-vars\n interface Array<T> extends IArrayExtensions {\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention,id-blacklist,@typescript-eslint/no-empty-object-type\n interface Number extends INumberExtensions {\n }\n}\n\nexport class Prototypes {\n\n /**\n * Initialize prototypes\n */\n public static init(): void {\n const stringExtensions = new StringExtensions();\n const arrayExtensions = new ArrayExtensions();\n const numberExtensions = new NumberExtensions();\n\n String.prototype.getPart = stringExtensions.getPart;\n String.prototype.fromJSON = stringExtensions.fromJSON;\n String.prototype.toCSSClass = stringExtensions.toCSSClass;\n String.prototype.toUTC = stringExtensions.toUTC;\n\n Array.prototype.hasChanges = arrayExtensions.hasChanges;\n Array.prototype.replaceRange = arrayExtensions.replaceRange;\n\n Number.prototype.between = numberExtensions.between;\n }\n}\n","import { ISieveFilter } from '../models/sieve/sieve-filter.model';\nimport { SieveOperator } from '../models/sieve/sieve-operator.model';\nimport { ISieveOptions } from '../models/sieve/sieve-options.model';\nimport { ISieveSort } from '../models/sieve/sieve-sort.model';\n\nexport class Sieve {\n\n private readonly options: ISieveOptions;\n\n constructor(options: ISieveOptions) {\n this.options = options;\n this.options.baseUrl = options.baseUrl || '';\n this.options.filters = options.filters || [];\n this.options.sorts = options.sorts || [];\n }\n\n /**\n * public getter to get page size\n */\n public get pageSize(): number {\n return this.options.pageSize || 10;\n }\n\n /**\n * Setter to set page size\n */\n public set pageSize(pageSize: number) {\n this.options.pageSize = pageSize;\n }\n\n /**\n * public getter to get page\n */\n public get page(): number {\n return this.options.page || 0;\n }\n\n /**\n * Setter to set page\n */\n public set page(page: number) {\n this.options.page = page;\n }\n\n /**\n * public getter to get filters\n */\n public get filters(): ISieveFilter[] | undefined {\n return this.options.filters;\n }\n\n /**\n * Setter to set filters\n */\n public set filters(filters: ISieveFilter[]) {\n this.options.filters = filters;\n }\n\n /**\n * public getter to get sorts\n */\n public get sorts(): ISieveSort[] | undefined {\n return this.options.sorts;\n }\n\n /**\n * Setter to set sorts\n */\n public set sorts(sorts: ISieveSort[]) {\n this.options.sorts = sorts;\n }\n\n /**\n * method to add a sort option\n * @param name of the item to sort\n * @param desc sort descending\n */\n public addSort(name: string, desc?: boolean): void {\n this.options.sorts?.push({\n name,\n desc,\n });\n }\n\n /**\n * method to add a filter option\n * @param key of the item\n * @param operator { SieveOperator }\n * @param value filtered value\n */\n public addFilter(key: string, operator: SieveOperator, value: string): void {\n this.options.filters?.push({\n key,\n operator,\n value,\n });\n }\n\n /**\n * Getter for base url\n */\n public get baseUrl(): string | undefined {\n return this.options.baseUrl;\n }\n\n /**\n * Setter for base url\n * @param url\n */\n public set baseUrl(url: string) {\n this.options.baseUrl = url;\n }\n\n /**\n * Convert to queried string\n */\n public getUrl(): string {\n return `${ this.options.baseUrl }${ this.toQuery() }`;\n }\n\n /**\n * to Query\n * @private converts options to actual query\n */\n private toQuery(): string {\n let query = '?';\n\n if (this.page) {\n query += `page=${ this.page }`;\n }\n\n if (this.pageSize) {\n query += `&pageSize=${ this.pageSize }`;\n }\n\n if (this.filters?.length) {\n let filterQuery: string = '&filters=';\n\n for (const filter of this.filters) {\n if (filter.value) {\n filterQuery += `${ filter.key }${ filter.operator }${ filter.value },`;\n }\n }\n\n if (filterQuery !== '&filters=') {\n filterQuery = filterQuery.slice(0, -1);\n query += filterQuery;\n }\n }\n\n if (this.sorts?.length) {\n let sortQuery: string = '&sorts=';\n\n for (const sort of this.sorts) {\n sortQuery += `${ sort.desc ? '-' : '+' }${ sort.name },`;\n }\n\n sortQuery = sortQuery.slice(0, -1);\n query += sortQuery;\n }\n\n if (query.startsWith('&')) {\n query = query.slice(1);\n }\n\n return query;\n }\n\n}\n","export enum Theme {\n light,\n dark,\n}\n","export enum ContentPosition {\n top = 'top',\n topLeft = 'top-left',\n topRight = 'top-right',\n bottom = 'bottom',\n bottomLeft = 'bottom-left',\n bottomRight = 'bottom-right',\n center = 'center',\n centerLeft = 'center-left',\n centerRight = 'center-right',\n}\n","export enum Browser {\n chrome,\n firefox,\n internetExplorer,\n opera,\n edge,\n safari,\n other,\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Dictionary } from '../utils/dictionary.util';\n\n@Pipe({ name: 'dictionaryItem' })\nexport class DictionaryItemPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(key: any, dictionary: Dictionary<any, any>): string {\n return dictionary.get(key)?.value;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { some } from '../utils/commons.util';\n\n@Pipe({ name: 'filter' })\nexport class FilterPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T[] {\n // Return if array is empty or null\n if (!array?.length) {\n return [];\n }\n\n const foundItems: T[] = array.filter((v: T): boolean => some(v, searchValue, searchKey));\n if (!foundItems.length) {\n return [];\n }\n\n // Return whole item\n return foundItems;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { some } from '../utils/commons.util';\n\n@Pipe({ name: 'find' })\nexport class FindPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T | null {\n // Return if array is empty or null\n if (!array?.length) {\n return null;\n }\n\n const foundItem: T | undefined = array.find((v: T): boolean => some(v, searchValue, searchKey));\n if (!foundItem) {\n return null;\n }\n\n // Return whole item\n return foundItem;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'join' })\nexport class JoinPipe implements PipeTransform {\n\n /**\n * Join array by separator\n * @param array\n * @param returnField\n * @param separator\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(array: any[], returnField: any, separator: string = ', '): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return array.map((val: any): string => returnField ? val[ returnField ] : val).join(separator);\n }\n\n}\n","import { DatePipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Pipe({ name: 'mosaDate' })\nexport class MosaDatePipe implements PipeTransform {\n\n private readonly store$: BehaviorSubject<number> = new BehaviorSubject<number>(new Date().getTime());\n\n private templates: Record<string, string> = {};\n\n private readonly myTranslateService: TranslateService = inject(TranslateService);\n private readonly myDatePipe: DatePipe = inject(DatePipe);\n\n constructor() {\n this.updateTemplates();\n setInterval((): void => this.store$.next(new Date().getTime()), 10);\n this.myTranslateService.onLangChange.subscribe((): void => {\n this.updateTemplates();\n this.store$.next(new Date().getTime());\n });\n }\n\n public transform(date: string | Date | undefined, mode: 'full' | 'timeSince' | 'date' = 'timeSince', options?: { withPrefix?: boolean, withSuffix?: boolean }): Observable<string> {\n return this.store$.pipe(map((currentDate: number): string => this.calcDate(currentDate, date, mode, options)));\n }\n\n private calcDate(currentTimestamp: number, date: string | Date | undefined, mode: 'full' | 'timeSince' | 'date', options?: { withPrefix?: boolean, withSuffix?: boolean }): string {\n if (!date) {\n return '';\n }\n\n let parsed: Date;\n if (date instanceof Date) {\n parsed = new Date(date.toString());\n } else {\n parsed = new Date(date);\n }\n\n if (!currentTimestamp) {\n currentTimestamp = new Date().getTime();\n }\n const currentDate = new Date(currentTimestamp);\n const parsedTimestamp: number = parsed.getTime();\n\n const convertedDate: string | null = this.myDatePipe.transform(parsed, 'dd. MMM. yyyy hh:mm aaa');\n if (mode === 'full' || mode === 'timeSince') {\n const seconds: number = Math.abs(((currentTimestamp - parsedTimestamp) * .001) >> 0);\n const minutes: number = seconds / 60;\n const hours: number = minutes / 60;\n const days: number = hours / 24;\n const years: number = days / 365;\n\n const yearDifference = (currentDate.getFullYear() - parsed.getFullYear()) * 12;\n const monthDifference = currentDate.getMonth() - parsed.getMonth();\n\n let timeSince: string = '';\n if (parsedTimestamp > currentTimestamp) {\n timeSince = (options?.withPrefix ? this.templates[ 'prefixFuture' ] : '') + (\n seconds > 0 && seconds < 2 && this.template('second', 1) ||\n seconds < 60 && this.template('seconds', seconds) ||\n seconds < 120 && this.template('minute', 1) ||\n minutes < 60 && this.template('minutes', minutes) ||\n minutes < 120 && this.template('hour', 1) ||\n hours < 24 && this.template('hours', hours) ||\n hours < 42 && this.template('day', 1) ||\n days < 30 && this.template('days', days) ||\n days < 45 && this.template('month', 1) ||\n days < 365 && this.template('months', yearDifference + monthDifference) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + (options?.withSuffix ? this.templates[ 'suffixFuture' ] : '');\n } else {\n timeSince = (options?.withPrefix ? this.templates[ 'prefixPast' ] : '') + (\n seconds > 0 && seconds < 2 && this.template('second', 1) ||\n seconds < 60 && this.template('seconds', seconds) ||\n seconds < 120 && this.template('minute', 1) ||\n minutes < 60 && this.template('minutes', minutes) ||\n minutes < 120 && this.template('hour', 1) ||\n hours < 24 && this.template('hours', hours) ||\n hours < 42 && this.template('day', 1) ||\n days < 30 && this.template('days', days) ||\n days < 45 && this.template('month', 1) ||\n days < 365 && this.template('months', yearDifference + monthDifference) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + (options?.withSuffix ? this.templates[ 'suffixPast' ] : '');\n }\n\n if (mode === 'timeSince') {\n return timeSince;\n }\n\n if (mode === 'full') {\n return `${convertedDate} (${timeSince})`;\n }\n }\n\n return convertedDate || '';\n }\n\n private template(key: string, val: number): string {\n return this.templates[ key ]?.replace(/%d/i, String(Math.abs(Math.round(val))));\n }\n\n private updateTemplates(): void {\n this.templates = {\n prefixPast: this.myTranslateService.instant('mosa.pipes.timeSince.prefix.past'),\n suffixPast: this.myTranslateService.instant('mosa.pipes.timeSince.suffix.past'),\n prefixFuture: this.myTranslateService.instant('mosa.pipes.timeSince.prefix.future'),\n suffixFuture: this.myTranslateService.instant('mosa.pipes.timeSince.suffix.future'),\n second: this.myTranslateService.instant('mosa.pipes.timeSince.second'),\n seconds: this.myTranslateService.instant('mosa.pipes.timeSince.seconds'),\n minute: this.myTranslateService.instant('mosa.pipes.timeSince.minute'),\n minutes: this.myTranslateService.instant('mosa.pipes.timeSince.minutes'),\n hour: this.myTranslateService.instant('mosa.pipes.timeSince.hour'),\n hours: this.myTranslateService.instant('mosa.pipes.timeSince.hours'),\n day: this.myTranslateService.instant('mosa.pipes.timeSince.day'),\n days: this.myTranslateService.instant('mosa.pipes.timeSince.days'),\n month: this.myTranslateService.instant('mosa.pipes.timeSince.month'),\n months: this.myTranslateService.instant('mosa.pipes.timeSince.months'),\n year: this.myTranslateService.instant('mosa.pipes.timeSince.year'),\n years: this.myTranslateService.instant('mosa.pipes.timeSince.years'),\n };\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MosaDurationFormat } from '../models/mosa-duration.model';\n\n@Pipe({ name: 'mosaDuration' })\nexport class MosaDurationPipe implements PipeTransform {\n\n private readonly store$: BehaviorSubject<number> = new BehaviorSubject<number>(new Date().getTime());\n private readonly interval: NodeJS.Timeout;\n\n constructor(\n private readonly myTranslateService: TranslateService,\n ) {\n this.interval = setInterval(() => this.store$.next(new Date().getTime()), 1000);\n this.myTranslateService.onLangChange.subscribe((): void => this.store$.next(new Date().getTime()));\n }\n\n /**\n * Converts a timestamp to a duration in the given format\n * @param millis\n * @param format\n * @returns\n * auto: 15000 -> 15 seconds\n * seconds: 15000 -> 15 seconds\n * minutes: 60000 -> 1 minute\n * hours: 7200000 -> 2 hours\n * days: 172800000 -> 2 days\n */\n public transform(millis: number | undefined, format: MosaDurationFormat = 'auto'): Observable<string> {\n return this.store$.pipe(\n map((currentDate: number): string => {\n if (!millis) {\n clearInterval(this.interval);\n return '';\n }\n\n if (millis - currentDate < 0) {\n clearInterval(this.interval);\n return '';\n }\n\n return this.calcDuration(currentDate, millis, format);\n }),\n );\n }\n\n\n private getTranslation(num: number, format: MosaDurationFormat): string {\n if (num === 1) {\n return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.pipes.dateTime[${format}].label`)}`;\n }\n return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.pipes.dateTime[${format}].plural.label`)}`;\n }\n\n\n private calcDuration(currentDate: number, millis: number, format: MosaDurationFormat): string {\n millis = millis - currentDate;\n\n const seconds: number = millis / 1000;\n if (format === 'seconds') {\n return this.getTranslation(seconds, 'seconds');\n }\n\n const minutes: number = seconds / 60;\n if (format === 'minutes') {\n return this.getTranslation(minutes, 'minutes');\n }\n\n const hours: number = minutes / 60;\n if (format === 'hours') {\n return this.getTranslation(hours, 'hours');\n }\n\n const days: number = hours / 24;\n if (format === 'days') {\n return this.getTranslation(days, 'days');\n }\n\n if (format === 'auto') {\n if (seconds < 60) {\n return this.getTranslation(seconds, 'seconds');\n }\n\n if (minutes < 60) {\n return this.getTranslation(minutes, 'minutes');\n }\n\n if (hours < 24) {\n return this.getTranslation(hours, 'hours');\n }\n\n return this.getTranslation(days, 'days');\n }\n\n return '';\n }\n}\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { AssetsI18nLoaderService } from './services/translation/assets-i18n-loader.service';\n\n/*\n * Public API Surface of core\n */\n\n/**\n * Services\n */\nexport * from './services/api.service';\nexport * from './services/mosa-socket.service';\nexport * from './services/core-logger.service';\n\nexport * from './services/translation/translate-collector.service';\nexport * from './services/translation/custom-translate-loader.service';\nexport * from './services/translation/assets-i18n-loader.service';\n\n/**\n * Guards\n */\nexport * from './services/guards/can-deactivate.guard';\nexport * from './services/guards/authentication.guard';\n\n/**\n * Interceptors\n */\nexport * from './services/interceptors/language.interceptor';\nexport * from './services/interceptors/refresh-token.interceptor';\n\n/**\n * Models\n */\nexport * from './models/dictionary-item.model';\nexport * from './models/api-options.model';\nexport * from './models/api-result.model';\nexport * from './models/mosa-duration.model';\nexport * from './models/token-settings.model';\nexport * from './models/transform-matrix.model';\nexport * from './models/key-map.model';\nexport * from './models/item.model';\nexport * from './models/size.model';\n\nexport * from './models/sieve/sieve-response.model';\nexport * from './models/sieve/sieve-sort.model';\nexport * from './models/sieve/sieve-filter.model';\nexport * from './models/sieve/sieve-operator.model';\nexport * from './models/sieve/sieve-options.model';\n\nexport * from './models/logger/logger-config.model';\nexport * from './models/logger/log.model';\nexport * from './models/logger/log-event.model';\nexport * from './models/logger/log-message-data.model';\nexport * from './models/logger/logger-base-config.model';\nexport * from './models/logger/logger-default-config.model';\nexport * from './models/logger/log-type.model';\n\nexport * from './models/types/form.type';\n\n/**\n * Utils\n */\nexport * from './utils/commons.util';\nexport * from './utils/dictionary.util';\nexport * from './utils/promise.util';\nexport * from './utils/prototypes.util';\nexport * from './utils/sieve.util';\n\n/**\n * Enums\n */\nexport * from './enums/theme.enum';\nexport * from './enums/content-position.enum';\nexport * from './enums/browser.enum';\nexport * from './enums/i18n-supported.enum';\n\n/**\n * Constants\n */\nexport * from './constants/local-storage.constant';\n\n/**\n * Pipes\n */\nexport * from './pipes/dictionary-item.pipe';\nexport * from './pipes/filter.pipe';\nexport * from './pipes/find.pipe';\nexport * from './pipes/join.pipe';\nexport * from './pipes/mosa-date.pipe';\nexport * from './pipes/mosa-duration.pipe';\n\nfunction initI18n(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, undefined, 1);\n}\n\nfunction initI18nCore(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, 'mosa-core');\n}\n\nexport const provideMosaCore: () => EnvironmentProviders = () => makeEnvironmentProviders([\n provideAppInitializer(() => initI18n(inject(AssetsI18nLoaderService))),\n provideAppInitializer(() => initI18nCore(inject(AssetsI18nLoaderService))),\n]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.TranslateCollectorService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mosa.commons.logs.error.label": "Fehler",
|
|
3
|
+
|
|
4
|
+
"mosa.commons.errors.status[400].message": "Die Anfrage konnte nicht verarbeitet werden",
|
|
5
|
+
"mosa.commons.errors.status[401].message": "Sie sind nicht angemeldet",
|
|
6
|
+
"mosa.commons.errors.status[403].message": "Sie haben keine Berechtigung für diese Aktion",
|
|
7
|
+
"mosa.commons.errors.status[404].message": "Die angeforderte Ressource wurde nicht gefunden",
|
|
8
|
+
"mosa.commons.errors.status[500].message": "Ein interner Fehler ist aufgetreten",
|
|
9
|
+
|
|
10
|
+
"mosa.pipes.timeSince.prefix.past": "vor ",
|
|
11
|
+
"mosa.pipes.timeSince.prefix.future": "in ",
|
|
12
|
+
"mosa.pipes.timeSince.suffix.past": "",
|
|
13
|
+
"mosa.pipes.timeSince.suffix.future": "",
|
|
14
|
+
"mosa.pipes.timeSince.second": "%d Sekunde",
|
|
15
|
+
"mosa.pipes.timeSince.seconds": "%d Sekunden",
|
|
16
|
+
"mosa.pipes.timeSince.minute": "einer Minute",
|
|
17
|
+
"mosa.pipes.timeSince.minutes": "%d Minuten",
|
|
18
|
+
"mosa.pipes.timeSince.hour": "einer Stunde",
|
|
19
|
+
"mosa.pipes.timeSince.hours": "%d Stunden",
|
|
20
|
+
"mosa.pipes.timeSince.day": "einem Tag",
|
|
21
|
+
"mosa.pipes.timeSince.days": "%d Tagen",
|
|
22
|
+
"mosa.pipes.timeSince.month": "einem Monat",
|
|
23
|
+
"mosa.pipes.timeSince.months": "%d Monaten",
|
|
24
|
+
"mosa.pipes.timeSince.year": "einem Jahr",
|
|
25
|
+
"mosa.pipes.timeSince.years": "%d Jahren",
|
|
26
|
+
|
|
27
|
+
"mosa.pipes.dateTime[seconds].label": "Sekunde",
|
|
28
|
+
"mosa.pipes.dateTime[seconds].plural.label": "Sekunden",
|
|
29
|
+
"mosa.pipes.dateTime[minutes].label": "Minute",
|
|
30
|
+
"mosa.pipes.dateTime[minutes].plural.label": "Minuten",
|
|
31
|
+
"mosa.pipes.dateTime[hours].label": "Stunde",
|
|
32
|
+
"mosa.pipes.dateTime[hours].plural.label": "Stunden",
|
|
33
|
+
"mosa.pipes.dateTime[days].label": "Tag",
|
|
34
|
+
"mosa.pipes.dateTime[days].plural.label": "Tage"
|
|
35
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mosa.commons.logs.error.label": "Error",
|
|
3
|
+
|
|
4
|
+
"mosa.commons.errors.status[400].message": "An unexpected error happened",
|
|
5
|
+
"mosa.commons.errors.status[403].message": "Forbidden request",
|
|
6
|
+
"mosa.commons.errors.status[401].message": "Unauthorized request",
|
|
7
|
+
"mosa.commons.errors.status[404].message": "Not found",
|
|
8
|
+
"mosa.commons.errors.status[500].message": "Internal Server Error",
|
|
9
|
+
|
|
10
|
+
"mosa.pipes.timeSince.prefix.past": "",
|
|
11
|
+
"mosa.pipes.timeSince.prefix.future": "",
|
|
12
|
+
"mosa.pipes.timeSince.suffix.past": " ago",
|
|
13
|
+
"mosa.pipes.timeSince.suffix.future": "",
|
|
14
|
+
"mosa.pipes.timeSince.second": "%d second",
|
|
15
|
+
"mosa.pipes.timeSince.seconds": "%d seconds",
|
|
16
|
+
"mosa.pipes.timeSince.minute": "a minute",
|
|
17
|
+
"mosa.pipes.timeSince.minutes": "%d minutes",
|
|
18
|
+
"mosa.pipes.timeSince.hour": "an hour",
|
|
19
|
+
"mosa.pipes.timeSince.hours": "%d hours",
|
|
20
|
+
"mosa.pipes.timeSince.day": "a day",
|
|
21
|
+
"mosa.pipes.timeSince.days": "%d days",
|
|
22
|
+
"mosa.pipes.timeSince.month": "a month",
|
|
23
|
+
"mosa.pipes.timeSince.months": "%d months",
|
|
24
|
+
"mosa.pipes.timeSince.year": "a year",
|
|
25
|
+
"mosa.pipes.timeSince.years": "%d years",
|
|
26
|
+
|
|
27
|
+
"mosa.pipes.dateTime[seconds].label": "second",
|
|
28
|
+
"mosa.pipes.dateTime[seconds].plural.label": "seconds",
|
|
29
|
+
"mosa.pipes.dateTime[minutes].label": "minute",
|
|
30
|
+
"mosa.pipes.dateTime[minutes].plural.label": "minutes",
|
|
31
|
+
"mosa.pipes.dateTime[hours].label": "hour",
|
|
32
|
+
"mosa.pipes.dateTime[hours].plural.label": "hours",
|
|
33
|
+
"mosa.pipes.dateTime[days].label": "day",
|
|
34
|
+
"mosa.pipes.dateTime[days].plural.label": "days"
|
|
35
|
+
}
|
package/types/mosa-ng-core.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { PipeTransform, EnvironmentProviders } from '@angular/core';
|
|
3
|
-
import { HttpParams, HttpClient,
|
|
3
|
+
import { HttpParams, HttpHeaders, HttpEvent, HttpClient, HttpInterceptorFn, HttpRequest, HttpHandlerFn } from '@angular/common/http';
|
|
4
4
|
import { Observable, Subject } from 'rxjs';
|
|
5
5
|
import { TranslateService } from '@ngx-translate/core';
|
|
6
|
-
import { CanDeactivate } from '@angular/router';
|
|
6
|
+
import { CanDeactivate, CanActivateFn } from '@angular/router';
|
|
7
7
|
import { AbstractControl } from '@angular/forms';
|
|
8
8
|
|
|
9
9
|
type ApiResponseTypes = 'json' | 'blob' | 'text' | 'arraybuffer';
|
|
@@ -16,6 +16,7 @@ interface IHttpOptions {
|
|
|
16
16
|
}
|
|
17
17
|
interface IApiOptions {
|
|
18
18
|
skipAuth?: boolean;
|
|
19
|
+
skipRefreshToken?: boolean;
|
|
19
20
|
skipContentType?: boolean;
|
|
20
21
|
skipErrorHandling?: boolean;
|
|
21
22
|
httpOptions?: IHttpOptions;
|
|
@@ -23,8 +24,117 @@ interface IApiOptions {
|
|
|
23
24
|
|
|
24
25
|
interface ITokenSettings {
|
|
25
26
|
tokenType: string;
|
|
26
|
-
|
|
27
|
+
accessToken: string;
|
|
27
28
|
expiration?: string;
|
|
29
|
+
refreshToken?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
interface IApiResult<T = unknown> {
|
|
33
|
+
data: T;
|
|
34
|
+
errorCode?: number;
|
|
35
|
+
message?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
declare const LOCAL_STORAGE_TOKEN_KEY = "tokenSettings";
|
|
39
|
+
declare class ApiService {
|
|
40
|
+
private refreshTokenUrl;
|
|
41
|
+
private readonly myCoreLoggerService;
|
|
42
|
+
private readonly myHttpClient;
|
|
43
|
+
/**
|
|
44
|
+
* Sets the token
|
|
45
|
+
* @param tokenSettings
|
|
46
|
+
*/
|
|
47
|
+
setToken(tokenSettings: ITokenSettings): void;
|
|
48
|
+
/**
|
|
49
|
+
* Gets token
|
|
50
|
+
*/
|
|
51
|
+
getToken(): ITokenSettings | null;
|
|
52
|
+
/**
|
|
53
|
+
* Deletes token
|
|
54
|
+
*/
|
|
55
|
+
deleteToken(): void;
|
|
56
|
+
setRefreshTokenUrl(url: string): void;
|
|
57
|
+
getRefreshTokenUrl(): string;
|
|
58
|
+
refreshToken<T>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<IApiResult<ITokenSettings>>;
|
|
59
|
+
/**
|
|
60
|
+
* Makes an http get call
|
|
61
|
+
* @param url
|
|
62
|
+
* @param headers
|
|
63
|
+
* @param options
|
|
64
|
+
*/
|
|
65
|
+
get<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T>;
|
|
66
|
+
/**
|
|
67
|
+
* Makes an async http get call, which also includes the response headers
|
|
68
|
+
* @param url
|
|
69
|
+
* @param headers
|
|
70
|
+
* @param options
|
|
71
|
+
*/
|
|
72
|
+
getWithHeadersAsync<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Promise<HttpEvent<T>>;
|
|
73
|
+
/**
|
|
74
|
+
* Makes an http get call, which also includes the response headers
|
|
75
|
+
* @param url
|
|
76
|
+
* @param headers
|
|
77
|
+
* @param options
|
|
78
|
+
*/
|
|
79
|
+
getWithHeaders<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<HttpEvent<T>>;
|
|
80
|
+
/**
|
|
81
|
+
* Makes an http patch call (For partial updates)
|
|
82
|
+
* @param url
|
|
83
|
+
* @param data
|
|
84
|
+
* @param headers
|
|
85
|
+
* @param options
|
|
86
|
+
*/
|
|
87
|
+
patch<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1>;
|
|
88
|
+
/**
|
|
89
|
+
* Makes an http put call
|
|
90
|
+
* @param url
|
|
91
|
+
* @param data
|
|
92
|
+
* @param headers
|
|
93
|
+
* @param options
|
|
94
|
+
*/
|
|
95
|
+
put<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1>;
|
|
96
|
+
/**
|
|
97
|
+
* Makes an http post call
|
|
98
|
+
* @param url
|
|
99
|
+
* @param data
|
|
100
|
+
* @param headers
|
|
101
|
+
* @param options
|
|
102
|
+
*/
|
|
103
|
+
post<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1>;
|
|
104
|
+
/**
|
|
105
|
+
* makes an http delete call
|
|
106
|
+
* @param url
|
|
107
|
+
* @param headers
|
|
108
|
+
* @param options
|
|
109
|
+
* @returns Observable
|
|
110
|
+
*/
|
|
111
|
+
delete<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T>;
|
|
112
|
+
/**
|
|
113
|
+
* Appends a script to the html body
|
|
114
|
+
* @param path
|
|
115
|
+
* @param attributes
|
|
116
|
+
* @param onLoad
|
|
117
|
+
*/
|
|
118
|
+
loadExternalScript(path: string, attributes?: {
|
|
119
|
+
key: string;
|
|
120
|
+
value: string;
|
|
121
|
+
}[], onLoad?: ((this: GlobalEventHandlers, ev: Event) => any)): void;
|
|
122
|
+
private handleError;
|
|
123
|
+
private handleResponse;
|
|
124
|
+
private getHeaders;
|
|
125
|
+
private static serializeOptions;
|
|
126
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ApiService, never>;
|
|
127
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ApiService>;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
declare class MosaSocketService {
|
|
131
|
+
private subject;
|
|
132
|
+
constructor();
|
|
133
|
+
connect(url: string): Subject<MessageEvent>;
|
|
134
|
+
send(data: MessageEvent): void;
|
|
135
|
+
private create;
|
|
136
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MosaSocketService, never>;
|
|
137
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MosaSocketService>;
|
|
28
138
|
}
|
|
29
139
|
|
|
30
140
|
interface ILogMessageData {
|
|
@@ -70,7 +180,7 @@ declare class CoreLoggerService {
|
|
|
70
180
|
/**
|
|
71
181
|
* Gets the error message from any type of object
|
|
72
182
|
*/
|
|
73
|
-
getErrorMsg(err: any): string
|
|
183
|
+
getErrorMsg(err: any): Promise<string>;
|
|
74
184
|
/**
|
|
75
185
|
* Get the title to be shown in logger toast
|
|
76
186
|
* @param err
|
|
@@ -82,7 +192,7 @@ declare class CoreLoggerService {
|
|
|
82
192
|
* @param showUser
|
|
83
193
|
* @param config
|
|
84
194
|
*/
|
|
85
|
-
logError(config: ILoggerConfig): void
|
|
195
|
+
logError(config: ILoggerConfig): Promise<void>;
|
|
86
196
|
/**
|
|
87
197
|
* Logs a success message to the user
|
|
88
198
|
* @param data
|
|
@@ -134,105 +244,6 @@ declare class CoreLoggerService {
|
|
|
134
244
|
static ɵprov: i0.ɵɵInjectableDeclaration<CoreLoggerService>;
|
|
135
245
|
}
|
|
136
246
|
|
|
137
|
-
declare const LOCAL_STORAGE_TOKEN_KEY = "tokenSettings";
|
|
138
|
-
declare class ApiService {
|
|
139
|
-
private readonly myCoreLoggerService;
|
|
140
|
-
private readonly myHttpClient;
|
|
141
|
-
constructor(myCoreLoggerService: CoreLoggerService, myHttpClient: HttpClient);
|
|
142
|
-
/**
|
|
143
|
-
* Sets the token
|
|
144
|
-
* @param tokenSettings
|
|
145
|
-
*/
|
|
146
|
-
setToken(tokenSettings: ITokenSettings): void;
|
|
147
|
-
/**
|
|
148
|
-
* Gets token
|
|
149
|
-
*/
|
|
150
|
-
getToken(): ITokenSettings | null;
|
|
151
|
-
/**
|
|
152
|
-
* Deletes token
|
|
153
|
-
*/
|
|
154
|
-
deleteToken(): void;
|
|
155
|
-
/**
|
|
156
|
-
* Makes an http get call
|
|
157
|
-
* @param url
|
|
158
|
-
* @param headers
|
|
159
|
-
* @param options
|
|
160
|
-
*/
|
|
161
|
-
get<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T>;
|
|
162
|
-
/**
|
|
163
|
-
* Makes an async http get call, which also includes the response headers
|
|
164
|
-
* @param url
|
|
165
|
-
* @param headers
|
|
166
|
-
* @param options
|
|
167
|
-
*/
|
|
168
|
-
getWithHeadersAsync<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Promise<HttpEvent<T>>;
|
|
169
|
-
/**
|
|
170
|
-
* Makes an http get call, which also includes the response headers
|
|
171
|
-
* @param url
|
|
172
|
-
* @param headers
|
|
173
|
-
* @param options
|
|
174
|
-
*/
|
|
175
|
-
getWithHeaders<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<HttpEvent<T>>;
|
|
176
|
-
/**
|
|
177
|
-
* Makes an http patch call (For partial updates)
|
|
178
|
-
* @param url
|
|
179
|
-
* @param data
|
|
180
|
-
* @param headers
|
|
181
|
-
* @param options
|
|
182
|
-
*/
|
|
183
|
-
patch<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1>;
|
|
184
|
-
/**
|
|
185
|
-
* Makes an http put call
|
|
186
|
-
* @param url
|
|
187
|
-
* @param data
|
|
188
|
-
* @param headers
|
|
189
|
-
* @param options
|
|
190
|
-
*/
|
|
191
|
-
put<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1>;
|
|
192
|
-
/**
|
|
193
|
-
* Makes an http post call
|
|
194
|
-
* @param url
|
|
195
|
-
* @param data
|
|
196
|
-
* @param headers
|
|
197
|
-
* @param options
|
|
198
|
-
*/
|
|
199
|
-
post<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1>;
|
|
200
|
-
/**
|
|
201
|
-
* makes an http delete call
|
|
202
|
-
* @param url
|
|
203
|
-
* @param headers
|
|
204
|
-
* @param options
|
|
205
|
-
* @returns Observable
|
|
206
|
-
*/
|
|
207
|
-
delete<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T>;
|
|
208
|
-
/**
|
|
209
|
-
* Appends a script to the html body
|
|
210
|
-
* @param path
|
|
211
|
-
* @param attributes
|
|
212
|
-
* @param onLoad
|
|
213
|
-
*/
|
|
214
|
-
loadExternalScript(path: string, attributes?: {
|
|
215
|
-
key: string;
|
|
216
|
-
value: string;
|
|
217
|
-
}[], onLoad?: ((this: GlobalEventHandlers, ev: Event) => any)): void;
|
|
218
|
-
private handleError;
|
|
219
|
-
private handleResponse;
|
|
220
|
-
private getHeaders;
|
|
221
|
-
private static serializeOptions;
|
|
222
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ApiService, never>;
|
|
223
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<ApiService>;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
declare class MosaSocketService {
|
|
227
|
-
private subject;
|
|
228
|
-
constructor();
|
|
229
|
-
connect(url: string): Subject<MessageEvent>;
|
|
230
|
-
send(data: MessageEvent): void;
|
|
231
|
-
private create;
|
|
232
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MosaSocketService, never>;
|
|
233
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<MosaSocketService>;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
247
|
type IKeyMap<T> = Record<string | number, T>;
|
|
237
248
|
|
|
238
249
|
interface ITranslationMap {
|
|
@@ -260,9 +271,11 @@ declare class AssetsI18nLoaderService {
|
|
|
260
271
|
protected myTranslateCollectorService: TranslateCollectorService;
|
|
261
272
|
protected priority: number;
|
|
262
273
|
protected supportedLanguages: string[];
|
|
274
|
+
private supportedLanguagesPromise;
|
|
263
275
|
constructor(myHttpClient: HttpClient, myTranslateCollectorService: TranslateCollectorService);
|
|
264
276
|
init(path?: string, libName?: string, priority?: number): Promise<void>;
|
|
265
|
-
|
|
277
|
+
private getSupportedLanguages;
|
|
278
|
+
private loadTranslations;
|
|
266
279
|
static ɵfac: i0.ɵɵFactoryDeclaration<AssetsI18nLoaderService, never>;
|
|
267
280
|
static ɵprov: i0.ɵɵInjectableDeclaration<AssetsI18nLoaderService>;
|
|
268
281
|
}
|
|
@@ -276,6 +289,12 @@ declare class CanDeactivateGuard implements CanDeactivate<ICanComponentDeactivat
|
|
|
276
289
|
static ɵprov: i0.ɵɵInjectableDeclaration<CanDeactivateGuard>;
|
|
277
290
|
}
|
|
278
291
|
|
|
292
|
+
declare const authenticationGuard: CanActivateFn;
|
|
293
|
+
|
|
294
|
+
declare const languageInterceptor: HttpInterceptorFn;
|
|
295
|
+
|
|
296
|
+
declare function refreshTokenInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>>;
|
|
297
|
+
|
|
279
298
|
/**
|
|
280
299
|
* Interface for dictionary class. Has a key and a value
|
|
281
300
|
*/
|
|
@@ -799,5 +818,5 @@ declare class MosaDurationPipe implements PipeTransform {
|
|
|
799
818
|
|
|
800
819
|
declare const provideMosaCore: () => EnvironmentProviders;
|
|
801
820
|
|
|
802
|
-
export { ApiService, ArrayExtensions, AssetsI18nLoaderService, Browser, CanDeactivateGuard, ContentPosition, CoreLoggerService, CustomTranslateLoaderService, Dictionary, DictionaryItemPipe, FilterPipe, FindPipe, I18nSupported, JoinPipe, LOCAL_STORAGE_TOKEN_KEY, MOSA_FALLBACK_TRANSLATION, MOSA_MERGED_TRANSLATION, MosaDatePipe, MosaDurationPipe, MosaSocketService, NumberExtensions, Prototypes, Sieve, StringExtensions, Theme, TranslateCollectorService, cast, getRandomString, getTransformMatrix, isNullOrEmpty, isNullOrUndefined, isNumber, isZeroOrHigher, mergeArray, provideMosaCore, roundNearest, some, tryJsonParse };
|
|
803
|
-
export type { ApiObserveTypes, ApiResponseTypes, FormType, IApiOptions, IArrayExtensions, ICanComponentDeactivate, IDictionaryItem, IHttpOptions, IItem, IKeyMap, ILog, ILogEvent, ILogMessageData, ILoggerBaseConfig, ILoggerConfig, ILoggerDefaultConfig, INumberExtensions, ISieveFilter, ISieveOptions, ISieveResponse, ISieveSort, ISize, IStringExtensions, ITokenSettings, ITransformMatrix, ITranslationMap, LogType, MosaDurationFormat, PromiseReject, PromiseResolve, SieveOperator };
|
|
821
|
+
export { ApiService, ArrayExtensions, AssetsI18nLoaderService, Browser, CanDeactivateGuard, ContentPosition, CoreLoggerService, CustomTranslateLoaderService, Dictionary, DictionaryItemPipe, FilterPipe, FindPipe, I18nSupported, JoinPipe, LOCAL_STORAGE_TOKEN_KEY, MOSA_FALLBACK_TRANSLATION, MOSA_MERGED_TRANSLATION, MosaDatePipe, MosaDurationPipe, MosaSocketService, NumberExtensions, Prototypes, Sieve, StringExtensions, Theme, TranslateCollectorService, authenticationGuard, cast, getRandomString, getTransformMatrix, isNullOrEmpty, isNullOrUndefined, isNumber, isZeroOrHigher, languageInterceptor, mergeArray, provideMosaCore, refreshTokenInterceptor, roundNearest, some, tryJsonParse };
|
|
822
|
+
export type { ApiObserveTypes, ApiResponseTypes, FormType, IApiOptions, IApiResult, IArrayExtensions, ICanComponentDeactivate, IDictionaryItem, IHttpOptions, IItem, IKeyMap, ILog, ILogEvent, ILogMessageData, ILoggerBaseConfig, ILoggerConfig, ILoggerDefaultConfig, INumberExtensions, ISieveFilter, ISieveOptions, ISieveResponse, ISieveSort, ISize, IStringExtensions, ITokenSettings, ITransformMatrix, ITranslationMap, LogType, MosaDurationFormat, PromiseReject, PromiseResolve, SieveOperator };
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"mosa.confirmDialog.label": "Aktion bestätigen",
|
|
3
|
-
"mosa.confirmDialog.message": "Wollen Sie diese Aktion wirklich ausführen?",
|
|
4
|
-
"mosa.updateDialog.label": "Update verfügbar",
|
|
5
|
-
"mosa.updateDialog.message": "Ein neues Update dieser Seite ist verfügbar. Welche Aktion wollen Sie ausführen?",
|
|
6
|
-
|
|
7
|
-
"mosa.cellEditor.discardChanges.label": "Änderungen verwerfen?",
|
|
8
|
-
"mosa.cellEditor.discardChanges.message": "Wollen Sie Ihre Änderungen wirklich verwerfen?",
|
|
9
|
-
|
|
10
|
-
"mosa.components.cellEditorBase.discardChanges.label": "Änderungen verwerfen?",
|
|
11
|
-
"mosa.components.cellEditorBase.discardChanges.message": "Sie haben noch nicht gespeicherte Änderungen. Wollen Sie diese Seite wirklich schließen?",
|
|
12
|
-
|
|
13
|
-
"mosa.pipes.timeSince.prefix.past": "vor ",
|
|
14
|
-
"mosa.pipes.timeSince.prefix.future": "in ",
|
|
15
|
-
"mosa.pipes.timeSince.suffix.past": "",
|
|
16
|
-
"mosa.pipes.timeSince.suffix.future": "",
|
|
17
|
-
"mosa.pipes.timeSince.second": "%d Sekunde",
|
|
18
|
-
"mosa.pipes.timeSince.seconds": "%d Sekunden",
|
|
19
|
-
"mosa.pipes.timeSince.minute": "einer Minute",
|
|
20
|
-
"mosa.pipes.timeSince.minutes": "%d Minuten",
|
|
21
|
-
"mosa.pipes.timeSince.hour": "einer Stunde",
|
|
22
|
-
"mosa.pipes.timeSince.hours": "%d Stunden",
|
|
23
|
-
"mosa.pipes.timeSince.day": "einem Tag",
|
|
24
|
-
"mosa.pipes.timeSince.days": "%d Tagen",
|
|
25
|
-
"mosa.pipes.timeSince.month": "einem Monat",
|
|
26
|
-
"mosa.pipes.timeSince.months": "%d Monaten",
|
|
27
|
-
"mosa.pipes.timeSince.year": "einem Jahr",
|
|
28
|
-
"mosa.pipes.timeSince.years": "%d Jahren",
|
|
29
|
-
|
|
30
|
-
"mosa.commons.logs.success.label": "Erfolgreich",
|
|
31
|
-
"mosa.commons.logs.success.message": "Aktion wurde erfolgreich ausgeführt",
|
|
32
|
-
"mosa.commons.logs.warning.label": "Warnung",
|
|
33
|
-
"mosa.commons.logs.warning.message": "Aktion wurde mit Warnungen ausgeführt",
|
|
34
|
-
"mosa.commons.logs.info.label": "Info",
|
|
35
|
-
"mosa.commons.logs.info.message": "Aktion wurde ausgeführt",
|
|
36
|
-
"mosa.commons.logs.error.label": "Fehler",
|
|
37
|
-
"mosa.commons.logs.error.message": "Ein Fehler ist aufgetreten",
|
|
38
|
-
|
|
39
|
-
"mosa.commons.errors.status[400].message": "Die Anfrage konnte nicht verarbeitet werden",
|
|
40
|
-
"mosa.commons.errors.status[403].message": "Sie haben keine Berechtigung für diese Aktion",
|
|
41
|
-
"mosa.commons.errors.status[401].message": "Sie sind nicht angemeldet",
|
|
42
|
-
"mosa.commons.errors.status[404].message": "Die angeforderte Ressource wurde nicht gefunden",
|
|
43
|
-
"mosa.commons.errors.status[500].message": "Ein interner Fehler ist aufgetreten",
|
|
44
|
-
|
|
45
|
-
"mosa.commons.dateTime.seconds.label": "Sekunde",
|
|
46
|
-
"mosa.commons.dateTime.seconds.plural.label": "Sekunden",
|
|
47
|
-
"mosa.commons.dateTime.minutes.label": "Minute",
|
|
48
|
-
"mosa.commons.dateTime.minutes.plural.label": "Minuten",
|
|
49
|
-
"mosa.commons.dateTime.hours.label": "Stunde",
|
|
50
|
-
"mosa.commons.dateTime.hours.plural.label": "Stunden",
|
|
51
|
-
"mosa.commons.dateTime.days.label": "Tag",
|
|
52
|
-
"mosa.commons.dateTime.days.plural.label": "Tage",
|
|
53
|
-
|
|
54
|
-
"mosa.commons.buttons.save": "Speichern",
|
|
55
|
-
"mosa.commons.buttons.deny": "Ablehnen",
|
|
56
|
-
"mosa.commons.buttons.dismiss": "Schließen",
|
|
57
|
-
"mosa.commons.buttons.confirm": "Bestätigen",
|
|
58
|
-
"mosa.commons.buttons.cancel": "Abbrechen",
|
|
59
|
-
"mosa.commons.buttons.delete": "Löschen",
|
|
60
|
-
"mosa.commons.buttons.accept": "Akzeptieren",
|
|
61
|
-
"mosa.commons.buttons.reloadNow": "Jetzt neu laden",
|
|
62
|
-
"mosa.commons.buttons.ignoreFor": "Für {{ duration }} ignorieren"
|
|
63
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"mosa.confirmDialog.label": "Confirm Action",
|
|
3
|
-
"mosa.confirmDialog.message": "Do you really want to execute this action?",
|
|
4
|
-
"mosa.updateDialog.label": "Update available",
|
|
5
|
-
"mosa.updateDialog.message": "A new update was found. Which action do you want to take?",
|
|
6
|
-
|
|
7
|
-
"mosa.cellEditor.discardChanges.label": "Discard changes?",
|
|
8
|
-
"mosa.cellEditor.discardChanges.message": "Do you really want to discard your changes?",
|
|
9
|
-
|
|
10
|
-
"mosa.components.cellEditorBase.discardChanges.label": "Discard changes?",
|
|
11
|
-
"mosa.components.cellEditorBase.discardChanges.message": "You have still unsaved changes. Are you sure you want to close the page?",
|
|
12
|
-
|
|
13
|
-
"mosa.pipes.timeSince.prefix.past": "",
|
|
14
|
-
"mosa.pipes.timeSince.prefix.future": "",
|
|
15
|
-
"mosa.pipes.timeSince.suffix.past": " ago",
|
|
16
|
-
"mosa.pipes.timeSince.suffix.future": "",
|
|
17
|
-
"mosa.pipes.timeSince.second": "%d second",
|
|
18
|
-
"mosa.pipes.timeSince.seconds": "%d seconds",
|
|
19
|
-
"mosa.pipes.timeSince.minute": "a minute",
|
|
20
|
-
"mosa.pipes.timeSince.minutes": "%d minutes",
|
|
21
|
-
"mosa.pipes.timeSince.hour": "an hour",
|
|
22
|
-
"mosa.pipes.timeSince.hours": "%d hours",
|
|
23
|
-
"mosa.pipes.timeSince.day": "a day",
|
|
24
|
-
"mosa.pipes.timeSince.days": "%d days",
|
|
25
|
-
"mosa.pipes.timeSince.month": "a month",
|
|
26
|
-
"mosa.pipes.timeSince.months": "%d months",
|
|
27
|
-
"mosa.pipes.timeSince.year": "a year",
|
|
28
|
-
"mosa.pipes.timeSince.years": "%d years",
|
|
29
|
-
|
|
30
|
-
"mosa.commons.logs.success.label": "Success",
|
|
31
|
-
"mosa.commons.logs.success.message": "Action processed successfully",
|
|
32
|
-
"mosa.commons.logs.warning.label": "Warning",
|
|
33
|
-
"mosa.commons.logs.warning.message": "Action processed with warnings",
|
|
34
|
-
"mosa.commons.logs.info.label": "Info",
|
|
35
|
-
"mosa.commons.logs.info.message": "Action was processed",
|
|
36
|
-
"mosa.commons.logs.error.label": "Error",
|
|
37
|
-
"mosa.commons.logs.error.message": "An error happened",
|
|
38
|
-
|
|
39
|
-
"mosa.commons.errors.status[400].message": "An unexpected error happened",
|
|
40
|
-
"mosa.commons.errors.status[403].message": "Forbidden request",
|
|
41
|
-
"mosa.commons.errors.status[401].message": "Unauthorized request",
|
|
42
|
-
"mosa.commons.errors.status[404].message": "Not found",
|
|
43
|
-
"mosa.commons.errors.status[500].message": "Internal Server Error",
|
|
44
|
-
|
|
45
|
-
"mosa.commons.dateTime.seconds.label": "second",
|
|
46
|
-
"mosa.commons.dateTime.seconds.plural.label": "seconds",
|
|
47
|
-
"mosa.commons.dateTime.minutes.label": "minute",
|
|
48
|
-
"mosa.commons.dateTime.minutes.plural.label": "minutes",
|
|
49
|
-
"mosa.commons.dateTime.hours.label": "hour",
|
|
50
|
-
"mosa.commons.dateTime.hours.plural.label": "hours",
|
|
51
|
-
"mosa.commons.dateTime.days.label": "day",
|
|
52
|
-
"mosa.commons.dateTime.days.plural.label": "days",
|
|
53
|
-
|
|
54
|
-
"mosa.commons.buttons.save": "Save",
|
|
55
|
-
"mosa.commons.buttons.deny": "Deny",
|
|
56
|
-
"mosa.commons.buttons.dismiss": "Dismiss",
|
|
57
|
-
"mosa.commons.buttons.confirm": "Confirm",
|
|
58
|
-
"mosa.commons.buttons.cancel": "Cancel",
|
|
59
|
-
"mosa.commons.buttons.delete": "Delete",
|
|
60
|
-
"mosa.commons.buttons.accept": "Accept",
|
|
61
|
-
"mosa.commons.buttons.reloadNow": "Reload now",
|
|
62
|
-
"mosa.commons.buttons.ignoreFor": "Ignore for {{ duration }}"
|
|
63
|
-
}
|