@mosa-ng/core 20.0.1 → 20.1.0
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 +46 -73
- package/fesm2022/mosa-ng-core.mjs.map +1 -1
- package/index.d.ts +21 -34
- package/package.json +1 -1
|
@@ -129,7 +129,7 @@ class TranslateCollectorService {
|
|
|
129
129
|
}
|
|
130
130
|
this.translationMap[lang].push({ priority, translation });
|
|
131
131
|
this.translationMap[lang].sort((a, b) => a.priority - b.priority);
|
|
132
|
-
const merged = JSON.parse(localStorage.getItem(MOSA_MERGED_TRANSLATION(lang))
|
|
132
|
+
const merged = JSON.parse(localStorage.getItem(MOSA_MERGED_TRANSLATION(lang)) || '{}');
|
|
133
133
|
for (const translationsData of this.translationMap[lang]) {
|
|
134
134
|
const translations = translationsData.translation;
|
|
135
135
|
if (translations != null) {
|
|
@@ -172,6 +172,7 @@ class AssetsI18nLoaderService {
|
|
|
172
172
|
this.myHttpClient = myHttpClient;
|
|
173
173
|
this.myTranslateCollectorService = myTranslateCollectorService;
|
|
174
174
|
this.priority = 0;
|
|
175
|
+
this.supportedLanguages = [];
|
|
175
176
|
}
|
|
176
177
|
init(path, libName, priority) {
|
|
177
178
|
return new Promise(async (resolve) => {
|
|
@@ -186,25 +187,25 @@ class AssetsI18nLoaderService {
|
|
|
186
187
|
this.subLanguages = this.myHttpClient.get(`assets/i18n/supported-languages.json?v=${getRandomString()}`)
|
|
187
188
|
.pipe(share());
|
|
188
189
|
}
|
|
189
|
-
this.subLanguages.
|
|
190
|
-
|
|
191
|
-
this.
|
|
192
|
-
for (let i = 0; i < this.supportedLanguages.length; i++) {
|
|
193
|
-
await firstValueFrom(this.loadTranslations(this.supportedLanguages[i], path, libName, priority));
|
|
194
|
-
}
|
|
195
|
-
resolve();
|
|
196
|
-
}, () => {
|
|
197
|
-
this.subLanguages = null;
|
|
190
|
+
const res = await firstValueFrom(this.subLanguages).catch(() => null);
|
|
191
|
+
if (!res) {
|
|
192
|
+
this.subLanguages = undefined;
|
|
198
193
|
console.error('Missing file -> assets/i18n/supported-languages.json <-- FIX THIS!');
|
|
199
|
-
|
|
200
|
-
}
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
this.subLanguages = undefined;
|
|
197
|
+
this.supportedLanguages = res.languages;
|
|
198
|
+
for (let i = 0; i < this.supportedLanguages.length; i++) {
|
|
199
|
+
await firstValueFrom(this.loadTranslations(this.supportedLanguages[i], path, libName, priority));
|
|
200
|
+
}
|
|
201
|
+
resolve();
|
|
201
202
|
});
|
|
202
203
|
}
|
|
203
204
|
loadTranslations(lang, path, libName, priority) {
|
|
204
205
|
const filename = libName ? `${libName}-${lang}.json` : `${lang}.json`;
|
|
205
206
|
return this.myHttpClient.get(`${(path || './assets/i18n/') + filename}?v=${getRandomString()}`)
|
|
206
207
|
.pipe(tap((response) => this.myTranslateCollectorService.addTranslations(response, lang, priority || this.priority)), catchError(() => {
|
|
207
|
-
console.error(`Missing file -> ${filename}
|
|
208
|
+
console.error(`Missing file -> ${filename}`);
|
|
208
209
|
return of(null);
|
|
209
210
|
}));
|
|
210
211
|
}
|
|
@@ -379,7 +380,7 @@ class CoreLoggerService {
|
|
|
379
380
|
}
|
|
380
381
|
// Serialize configuration
|
|
381
382
|
config.duration = CoreLoggerService.getValue(config.duration, this.defaultConfig.duration, 4);
|
|
382
|
-
config.className = CoreLoggerService.getValue(config.className, this.defaultConfig.className,
|
|
383
|
+
config.className = CoreLoggerService.getValue(config.className, this.defaultConfig.className, '');
|
|
383
384
|
config.showDismiss = CoreLoggerService.getValue(config.showDismiss, this.defaultConfig.showDismiss, false);
|
|
384
385
|
config.closeOnClick = CoreLoggerService.getValue(config.closeOnClick, this.defaultConfig.closeOnClick, true);
|
|
385
386
|
return config;
|
|
@@ -416,28 +417,6 @@ class ApiService {
|
|
|
416
417
|
this.myCoreLoggerService = myCoreLoggerService;
|
|
417
418
|
this.myHttpClient = myHttpClient;
|
|
418
419
|
}
|
|
419
|
-
/**
|
|
420
|
-
* Gets an access token
|
|
421
|
-
* @deprecated use getToken()
|
|
422
|
-
*/
|
|
423
|
-
getAccessToken() {
|
|
424
|
-
return window.localStorage.getItem('jwtAccessToken');
|
|
425
|
-
}
|
|
426
|
-
/**
|
|
427
|
-
* Sets an access token
|
|
428
|
-
* @param token
|
|
429
|
-
* @deprecated use setToken()
|
|
430
|
-
*/
|
|
431
|
-
setAccessToken(token) {
|
|
432
|
-
window.localStorage.setItem('jwtAccessToken', token);
|
|
433
|
-
}
|
|
434
|
-
/**
|
|
435
|
-
* Removes an access token from local storage
|
|
436
|
-
* @deprecated use deleteAccessToken()
|
|
437
|
-
*/
|
|
438
|
-
removeAccessToken() {
|
|
439
|
-
window.localStorage.removeItem('jwtAccessToken');
|
|
440
|
-
}
|
|
441
420
|
/**
|
|
442
421
|
* Sets the token
|
|
443
422
|
* @param tokenSettings
|
|
@@ -481,7 +460,7 @@ class ApiService {
|
|
|
481
460
|
* @param options
|
|
482
461
|
*/
|
|
483
462
|
async getWithHeadersAsync(url, headers, options) {
|
|
484
|
-
return this.getWithHeaders(url, headers, options)
|
|
463
|
+
return firstValueFrom(this.getWithHeaders(url, headers, options));
|
|
485
464
|
}
|
|
486
465
|
/**
|
|
487
466
|
* Makes an http get call, which also includes the response headers
|
|
@@ -591,20 +570,14 @@ class ApiService {
|
|
|
591
570
|
if (!headers) {
|
|
592
571
|
headers = new HttpHeaders();
|
|
593
572
|
}
|
|
594
|
-
if (!options
|
|
573
|
+
if (!options?.skipContentType) {
|
|
595
574
|
if (!headers.get('Content-Type')) {
|
|
596
575
|
headers = headers.set('Content-Type', 'application/json');
|
|
597
576
|
}
|
|
598
577
|
}
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
headers = headers.set('Authorization', `${tokenSettings.tokenType} ${tokenSettings.token}`);
|
|
603
|
-
}
|
|
604
|
-
else {
|
|
605
|
-
// Deprecated. Use ITokenSettings
|
|
606
|
-
headers = headers.set('Authorization', `Bearer ${this.getAccessToken()}`);
|
|
607
|
-
}
|
|
578
|
+
const tokenSettings = this.getToken();
|
|
579
|
+
if (!options?.skipAuth && tokenSettings) {
|
|
580
|
+
headers = headers.set('Authorization', `${tokenSettings.tokenType} ${tokenSettings.token}`);
|
|
608
581
|
}
|
|
609
582
|
return headers;
|
|
610
583
|
}
|
|
@@ -637,7 +610,7 @@ class MosaSocketService {
|
|
|
637
610
|
return this.subject;
|
|
638
611
|
}
|
|
639
612
|
send(data) {
|
|
640
|
-
this.subject
|
|
613
|
+
this.subject?.next(data);
|
|
641
614
|
}
|
|
642
615
|
create(url) {
|
|
643
616
|
const ws = new WebSocket(url);
|
|
@@ -920,7 +893,7 @@ class Sieve {
|
|
|
920
893
|
* public getter to get page size
|
|
921
894
|
*/
|
|
922
895
|
get pageSize() {
|
|
923
|
-
return this.options.pageSize;
|
|
896
|
+
return this.options.pageSize || 10;
|
|
924
897
|
}
|
|
925
898
|
/**
|
|
926
899
|
* Setter to set page size
|
|
@@ -932,7 +905,7 @@ class Sieve {
|
|
|
932
905
|
* public getter to get page
|
|
933
906
|
*/
|
|
934
907
|
get page() {
|
|
935
|
-
return this.options.page;
|
|
908
|
+
return this.options.page || 0;
|
|
936
909
|
}
|
|
937
910
|
/**
|
|
938
911
|
* Setter to set page
|
|
@@ -970,7 +943,7 @@ class Sieve {
|
|
|
970
943
|
* @param desc sort descending
|
|
971
944
|
*/
|
|
972
945
|
addSort(name, desc) {
|
|
973
|
-
this.options.sorts
|
|
946
|
+
this.options.sorts?.push({
|
|
974
947
|
name,
|
|
975
948
|
desc,
|
|
976
949
|
});
|
|
@@ -982,7 +955,7 @@ class Sieve {
|
|
|
982
955
|
* @param value filtered value
|
|
983
956
|
*/
|
|
984
957
|
addFilter(key, operator, value) {
|
|
985
|
-
this.options.filters
|
|
958
|
+
this.options.filters?.push({
|
|
986
959
|
key,
|
|
987
960
|
operator,
|
|
988
961
|
value,
|
|
@@ -1090,6 +1063,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
1090
1063
|
}] });
|
|
1091
1064
|
|
|
1092
1065
|
class FilterPipe {
|
|
1066
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1093
1067
|
transform(array, searchValue, searchKey) {
|
|
1094
1068
|
// Return if array is empty or null
|
|
1095
1069
|
if (!array?.length) {
|
|
@@ -1111,6 +1085,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
1111
1085
|
}] });
|
|
1112
1086
|
|
|
1113
1087
|
class FindPipe {
|
|
1088
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1114
1089
|
transform(array, searchValue, searchKey) {
|
|
1115
1090
|
// Return if array is empty or null
|
|
1116
1091
|
if (!array?.length) {
|
|
@@ -1155,20 +1130,22 @@ class MosaDatePipe {
|
|
|
1155
1130
|
constructor(myTranslateService, myDatePipe) {
|
|
1156
1131
|
this.myTranslateService = myTranslateService;
|
|
1157
1132
|
this.myDatePipe = myDatePipe;
|
|
1158
|
-
this.store$ = new BehaviorSubject(
|
|
1133
|
+
this.store$ = new BehaviorSubject(new Date().getTime());
|
|
1134
|
+
this.templates = {};
|
|
1159
1135
|
this.updateTemplates();
|
|
1160
|
-
setInterval(() =>
|
|
1161
|
-
this.store$.next(new Date().getTime());
|
|
1162
|
-
}, 10);
|
|
1136
|
+
setInterval(() => this.store$.next(new Date().getTime()), 10);
|
|
1163
1137
|
this.myTranslateService.onLangChange.subscribe(() => {
|
|
1164
1138
|
this.updateTemplates();
|
|
1165
1139
|
this.store$.next(new Date().getTime());
|
|
1166
1140
|
});
|
|
1167
1141
|
}
|
|
1168
|
-
transform(date, mode = 'timeSince') {
|
|
1169
|
-
return this.store$.pipe(map((currentDate) => this.calcDate(currentDate, date, mode)));
|
|
1142
|
+
transform(date, mode = 'timeSince', options) {
|
|
1143
|
+
return this.store$.pipe(map((currentDate) => this.calcDate(currentDate, date, mode, options)));
|
|
1170
1144
|
}
|
|
1171
|
-
calcDate(currentDate, date, mode) {
|
|
1145
|
+
calcDate(currentDate, date, mode, options) {
|
|
1146
|
+
if (!date) {
|
|
1147
|
+
return '';
|
|
1148
|
+
}
|
|
1172
1149
|
let parsed;
|
|
1173
1150
|
if (date instanceof Date) {
|
|
1174
1151
|
parsed = new Date(date.toString()).getTime();
|
|
@@ -1186,7 +1163,7 @@ class MosaDatePipe {
|
|
|
1186
1163
|
const hours = minutes / 60;
|
|
1187
1164
|
const days = hours / 24;
|
|
1188
1165
|
const years = days / 365;
|
|
1189
|
-
const timeSince = this.templates['prefix'] + (seconds < 60 && this.template('seconds', seconds) ||
|
|
1166
|
+
const timeSince = (options?.withPrefix ? this.templates['prefix'] : '') + (seconds < 60 && this.template('seconds', seconds) ||
|
|
1190
1167
|
seconds < 120 && this.template('minute', 1) ||
|
|
1191
1168
|
minutes < 60 && this.template('minutes', minutes) ||
|
|
1192
1169
|
minutes < 120 && this.template('hour', 1) ||
|
|
@@ -1196,7 +1173,7 @@ class MosaDatePipe {
|
|
|
1196
1173
|
days < 45 && this.template('month', 1) ||
|
|
1197
1174
|
days < 365 && this.template('months', days / 30) ||
|
|
1198
1175
|
years < 1.5 && this.template('year', 1) ||
|
|
1199
|
-
this.template('years', years)) + this.templates['
|
|
1176
|
+
this.template('years', years)) + (options?.withSuffix ? this.templates['suffix'] : '');
|
|
1200
1177
|
if (mode === 'timeSince') {
|
|
1201
1178
|
return timeSince;
|
|
1202
1179
|
}
|
|
@@ -1204,7 +1181,7 @@ class MosaDatePipe {
|
|
|
1204
1181
|
return `${convertedDate} (${timeSince})`;
|
|
1205
1182
|
}
|
|
1206
1183
|
}
|
|
1207
|
-
return convertedDate;
|
|
1184
|
+
return convertedDate || '';
|
|
1208
1185
|
}
|
|
1209
1186
|
template(key, val) {
|
|
1210
1187
|
return this.templates[key]?.replace(/%d/i, String(Math.abs(Math.round(val))));
|
|
@@ -1238,12 +1215,8 @@ class MosaDurationPipe {
|
|
|
1238
1215
|
constructor(myTranslateService) {
|
|
1239
1216
|
this.myTranslateService = myTranslateService;
|
|
1240
1217
|
this.store$ = new BehaviorSubject(new Date().getTime());
|
|
1241
|
-
this.interval = setInterval(() =>
|
|
1242
|
-
|
|
1243
|
-
}, 1000);
|
|
1244
|
-
this.myTranslateService.onLangChange.subscribe(() => {
|
|
1245
|
-
this.store$.next(new Date().getTime());
|
|
1246
|
-
});
|
|
1218
|
+
this.interval = setInterval(() => this.store$.next(new Date().getTime()), 1000);
|
|
1219
|
+
this.myTranslateService.onLangChange.subscribe(() => this.store$.next(new Date().getTime()));
|
|
1247
1220
|
}
|
|
1248
1221
|
/**
|
|
1249
1222
|
* Converts a timestamp to a duration in the given format
|
|
@@ -1260,11 +1233,11 @@ class MosaDurationPipe {
|
|
|
1260
1233
|
return this.store$.pipe(map((currentDate) => {
|
|
1261
1234
|
if (!millis) {
|
|
1262
1235
|
clearInterval(this.interval);
|
|
1263
|
-
return
|
|
1236
|
+
return '';
|
|
1264
1237
|
}
|
|
1265
1238
|
if (millis - currentDate < 0) {
|
|
1266
1239
|
clearInterval(this.interval);
|
|
1267
|
-
return
|
|
1240
|
+
return '';
|
|
1268
1241
|
}
|
|
1269
1242
|
return this.calcDuration(currentDate, millis, format);
|
|
1270
1243
|
}));
|
|
@@ -1305,7 +1278,7 @@ class MosaDurationPipe {
|
|
|
1305
1278
|
}
|
|
1306
1279
|
return this.getTranslation(days, 'days');
|
|
1307
1280
|
}
|
|
1308
|
-
return
|
|
1281
|
+
return '';
|
|
1309
1282
|
}
|
|
1310
1283
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: MosaDurationPipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1311
1284
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.11", ngImport: i0, type: MosaDurationPipe, isStandalone: true, name: "mosaDuration" }); }
|
|
@@ -1316,10 +1289,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
1316
1289
|
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
1317
1290
|
|
|
1318
1291
|
function initI18n(i18n) {
|
|
1319
|
-
return i18n.init(
|
|
1292
|
+
return i18n.init(undefined, undefined, 1);
|
|
1320
1293
|
}
|
|
1321
1294
|
function initI18nCore(i18n) {
|
|
1322
|
-
return i18n.init(
|
|
1295
|
+
return i18n.init(undefined, 'mosa');
|
|
1323
1296
|
}
|
|
1324
1297
|
const provideMosaCore = () => makeEnvironmentProviders([
|
|
1325
1298
|
provideAppInitializer(() => initI18n(inject(AssetsI18nLoaderService))),
|
|
@@ -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): 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): 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, 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, share, 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 subLanguages: Observable<{ languages: string[] }>;\n\n constructor(\n protected myHttpClient: HttpClient,\n protected myTranslateCollectorService: TranslateCollectorService,\n ) {\n }\n\n public init(path?: string, libName?: string, priority?: number): Promise<void> {\n return new Promise(async (resolve: () => void): Promise<void> => {\n if (this.supportedLanguages) {\n for (let i: number = 0; i < this.supportedLanguages.length; i++) {\n await firstValueFrom(this.loadTranslations(this.supportedLanguages[ i ], path, libName, priority));\n }\n resolve();\n return;\n }\n\n if (!this.subLanguages) {\n this.subLanguages = this.myHttpClient.get<{ languages: string[] }>(`assets/i18n/supported-languages.json?v=${getRandomString()}`)\n .pipe(share());\n }\n this.subLanguages.subscribe(async (res: { languages: string[] }) => {\n this.subLanguages = null;\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 resolve();\n }, () => {\n this.subLanguages = null;\n console.error('Missing file -> assets/i18n/supported-languages.json <-- FIX THIS!');\n resolve();\n });\n });\n }\n\n protected loadTranslations(lang: string, path?: string, libName?: string, priority?: number): Observable<Record<string, string>> {\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} <-- FIX THIS!`);\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;\n\n private readonly uiLogs$: BehaviorSubject<ILogEvent>;\n\n /**\n * Default constructor\n */\n constructor() {\n this.uiLogs$ = new BehaviorSubject(null);\n }\n\n public subUiLogs(): Observable<ILogEvent> {\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): 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, null);\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 { 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 * Gets an access token\n * @deprecated use getToken()\n */\n public getAccessToken(): string {\n return window.localStorage.getItem('jwtAccessToken');\n }\n\n /**\n * Sets an access token\n * @param token\n * @deprecated use setToken()\n */\n public setAccessToken(token: string): void {\n window.localStorage.setItem('jwtAccessToken', token);\n }\n\n /**\n * Removes an access token from local storage\n * @deprecated use deleteAccessToken()\n */\n public removeAccessToken(): void {\n window.localStorage.removeItem('jwtAccessToken');\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 {\n const tokenSettings: string = 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 this.getWithHeaders<T>(url, headers, options).toPromise();\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;\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 if (!options?.skipAuth) {\n if (this.getToken()) {\n const tokenSettings: ITokenSettings = this.getToken();\n headers = headers.set('Authorization', `${ tokenSettings.tokenType } ${ tokenSettings.token }`);\n } else {\n // Deprecated. Use ITokenSettings\n headers = headers.set('Authorization', `Bearer ${ this.getAccessToken() }`);\n }\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>;\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>> {\n return new Observable<IKeyMap<string>>((observer: Observer<IKeyMap<string>>) => {\n const item: string = localStorage.getItem(MOSA_MERGED_TRANSLATION(lang));\n const responseObj: IKeyMap<string> = tryJsonParse(item, () => this.loadFallbackLanguage());\n\n observer.next(responseObj);\n observer.complete();\n });\n }\n\n private loadFallbackLanguage(): IKeyMap<string> {\n const defaultTranslation: string = 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> {\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 {\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;\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;\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;\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[] {\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[] {\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 {\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 public transform<T>(array: T[], searchValue: T[keyof T] | T[keyof T][], 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 public transform<T>(array: T[], searchValue: T[keyof T] | T[keyof T][], searchKey?: keyof T): T {\n // Return if array is empty or null\n if (!array?.length) {\n return null;\n }\n\n const foundItem: T = 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 { 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>;\n private templates: Record<string, string>;\n\n constructor(\n private readonly myTranslateService: TranslateService,\n private readonly myDatePipe: DatePipe,\n ) {\n this.store$ = new BehaviorSubject<number>(null);\n this.updateTemplates();\n setInterval((): void => {\n this.store$.next(new Date().getTime());\n }, 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, mode: 'full' | 'timeSince' | 'date' = 'timeSince'): Observable<string> {\n return this.store$.pipe(map((currentDate: number): string => this.calcDate(currentDate, date, mode)));\n }\n\n private calcDate(currentDate: number, date: string | Date, mode: 'full' | 'timeSince' | 'date'): string {\n let parsed: number;\n if (date instanceof Date) {\n parsed = new Date(date.toString()).getTime();\n } else {\n parsed = new Date(date).getTime();\n }\n\n if (!currentDate) {\n currentDate = new Date().getTime();\n }\n\n const convertedDate = this.myDatePipe.transform(parsed, 'dd. MMM. yyyy hh:mm aaa');\n if (mode === 'full' || mode === 'timeSince') {\n const seconds = ((currentDate - parsed) * .001) >> 0;\n const minutes = seconds / 60;\n const hours = minutes / 60;\n const days = hours / 24;\n const years = days / 365;\n\n const timeSince: string = this.templates[ 'prefix' ] + (\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', days / 30) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + this.templates[ 'prefix' ];\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 prefix: this.myTranslateService.instant('mosa.pipes.timeSince.prefix'),\n suffix: this.myTranslateService.instant('mosa.pipes.timeSince.suffix'),\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>;\n private readonly interval: NodeJS.Timeout;\n\n constructor(\n private readonly myTranslateService: TranslateService,\n ) {\n this.store$ = new BehaviorSubject<number>(new Date().getTime());\n this.interval = setInterval(() => {\n this.store$.next(new Date().getTime());\n }, 1000);\n this.myTranslateService.onLangChange.subscribe((): void => {\n this.store$.next(new Date().getTime());\n });\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, format: MosaDurationFormat = 'auto'): Observable<string> {\n return this.store$.pipe(\n map((currentDate: number): string => {\n if (!millis) {\n clearInterval(this.interval);\n return null;\n }\n\n if (millis - currentDate < 0) {\n clearInterval(this.interval);\n return null;\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 null;\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(null, null, 1);\n}\n\nfunction initI18nCore(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(null, '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/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): 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, share, 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 subLanguages: Observable<{ languages: string[] }> | undefined;\n\n constructor(\n protected myHttpClient: HttpClient,\n protected myTranslateCollectorService: TranslateCollectorService,\n ) {\n }\n\n public init(path?: string, libName?: string, priority?: number): Promise<void> {\n return new Promise(async (resolve: () => void): Promise<void> => {\n if (this.supportedLanguages) {\n for (let i: number = 0; i < this.supportedLanguages.length; i++) {\n await firstValueFrom(this.loadTranslations(this.supportedLanguages[ i ], path, libName, priority));\n }\n resolve();\n return;\n }\n\n if (!this.subLanguages) {\n this.subLanguages = this.myHttpClient.get<{ languages: string[] }>(`assets/i18n/supported-languages.json?v=${getRandomString()}`)\n .pipe(share());\n }\n const res: { languages: string[] } | null = await firstValueFrom(this.subLanguages).catch(() => null);\n if (!res) {\n this.subLanguages = undefined;\n console.error('Missing file -> assets/i18n/supported-languages.json <-- FIX THIS!');\n return;\n }\n\n this.subLanguages = undefined;\n this.supportedLanguages = res.languages;\n\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 resolve();\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 { 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 constructor(\n private readonly myTranslateService: TranslateService,\n private readonly myDatePipe: DatePipe,\n ) {\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(currentDate: 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: number;\n if (date instanceof Date) {\n parsed = new Date(date.toString()).getTime();\n } else {\n parsed = new Date(date).getTime();\n }\n\n if (!currentDate) {\n currentDate = new Date().getTime();\n }\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 = ((currentDate - parsed) * .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 timeSince: string = (options?.withPrefix ? this.templates[ 'prefix' ] : '') + (\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', days / 30) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + (options?.withSuffix ? this.templates[ 'suffix' ] : '');\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 prefix: this.myTranslateService.instant('mosa.pipes.timeSince.prefix'),\n suffix: this.myTranslateService.instant('mosa.pipes.timeSince.suffix'),\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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"}
|
package/index.d.ts
CHANGED
|
@@ -61,13 +61,13 @@ interface ILoggerDefaultConfig extends ILoggerBaseConfig {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
declare class CoreLoggerService {
|
|
64
|
-
defaultConfig: ILoggerDefaultConfig;
|
|
64
|
+
defaultConfig: ILoggerDefaultConfig | undefined;
|
|
65
65
|
private readonly uiLogs$;
|
|
66
66
|
/**
|
|
67
67
|
* Default constructor
|
|
68
68
|
*/
|
|
69
69
|
constructor();
|
|
70
|
-
subUiLogs(): Observable<ILogEvent>;
|
|
70
|
+
subUiLogs(): Observable<ILogEvent | null>;
|
|
71
71
|
/**
|
|
72
72
|
* Gets the error message from any type of object
|
|
73
73
|
*/
|
|
@@ -140,22 +140,6 @@ declare class ApiService {
|
|
|
140
140
|
private readonly myCoreLoggerService;
|
|
141
141
|
private readonly myHttpClient;
|
|
142
142
|
constructor(myCoreLoggerService: CoreLoggerService, myHttpClient: HttpClient);
|
|
143
|
-
/**
|
|
144
|
-
* Gets an access token
|
|
145
|
-
* @deprecated use getToken()
|
|
146
|
-
*/
|
|
147
|
-
getAccessToken(): string;
|
|
148
|
-
/**
|
|
149
|
-
* Sets an access token
|
|
150
|
-
* @param token
|
|
151
|
-
* @deprecated use setToken()
|
|
152
|
-
*/
|
|
153
|
-
setAccessToken(token: string): void;
|
|
154
|
-
/**
|
|
155
|
-
* Removes an access token from local storage
|
|
156
|
-
* @deprecated use deleteAccessToken()
|
|
157
|
-
*/
|
|
158
|
-
removeAccessToken(): void;
|
|
159
143
|
/**
|
|
160
144
|
* Sets the token
|
|
161
145
|
* @param tokenSettings
|
|
@@ -164,7 +148,7 @@ declare class ApiService {
|
|
|
164
148
|
/**
|
|
165
149
|
* Gets token
|
|
166
150
|
*/
|
|
167
|
-
getToken(): ITokenSettings;
|
|
151
|
+
getToken(): ITokenSettings | null;
|
|
168
152
|
/**
|
|
169
153
|
* Deletes token
|
|
170
154
|
*/
|
|
@@ -266,7 +250,7 @@ declare class TranslateCollectorService {
|
|
|
266
250
|
}
|
|
267
251
|
|
|
268
252
|
declare class CustomTranslateLoaderService {
|
|
269
|
-
getTranslation(lang: string): Observable<IKeyMap<string
|
|
253
|
+
getTranslation(lang: string): Observable<IKeyMap<string> | null>;
|
|
270
254
|
private loadFallbackLanguage;
|
|
271
255
|
static ɵfac: i0.ɵɵFactoryDeclaration<CustomTranslateLoaderService, never>;
|
|
272
256
|
static ɵprov: i0.ɵɵInjectableDeclaration<CustomTranslateLoaderService>;
|
|
@@ -280,7 +264,7 @@ declare class AssetsI18nLoaderService {
|
|
|
280
264
|
private subLanguages;
|
|
281
265
|
constructor(myHttpClient: HttpClient, myTranslateCollectorService: TranslateCollectorService);
|
|
282
266
|
init(path?: string, libName?: string, priority?: number): Promise<void>;
|
|
283
|
-
protected loadTranslations(lang: string, path?: string, libName?: string, priority?: number): Observable<Record<string, string
|
|
267
|
+
protected loadTranslations(lang: string, path?: string, libName?: string, priority?: number): Observable<Record<string, string> | null>;
|
|
284
268
|
static ɵfac: i0.ɵɵFactoryDeclaration<AssetsI18nLoaderService, never>;
|
|
285
269
|
static ɵprov: i0.ɵɵInjectableDeclaration<AssetsI18nLoaderService>;
|
|
286
270
|
}
|
|
@@ -446,12 +430,12 @@ declare function isNullOrUndefined(val: any): boolean;
|
|
|
446
430
|
* Checks if a string is null or empty
|
|
447
431
|
* @param str
|
|
448
432
|
*/
|
|
449
|
-
declare function isNullOrEmpty(str: string): boolean;
|
|
433
|
+
declare function isNullOrEmpty(str: string | null | undefined): boolean;
|
|
450
434
|
/**
|
|
451
435
|
* Checks if a string or number is zero or higher
|
|
452
436
|
* @param num
|
|
453
437
|
*/
|
|
454
|
-
declare function isZeroOrHigher(num: number | string): boolean;
|
|
438
|
+
declare function isZeroOrHigher(num: number | string | null): boolean;
|
|
455
439
|
/**
|
|
456
440
|
* Checks if an object is a number
|
|
457
441
|
* @param num
|
|
@@ -482,7 +466,7 @@ declare function getRandomString(length?: number): string;
|
|
|
482
466
|
/**
|
|
483
467
|
* Trys to convert a json string. If it fails it returns [null] or a given fallback of [T]
|
|
484
468
|
*/
|
|
485
|
-
declare function tryJsonParse<T>(data: string, fallback?: () => T): T | null;
|
|
469
|
+
declare function tryJsonParse<T>(data: string | undefined | null, fallback?: () => T): T | null;
|
|
486
470
|
|
|
487
471
|
declare class Dictionary<Key, Value> {
|
|
488
472
|
private readonly dictionaryItems$;
|
|
@@ -509,7 +493,7 @@ declare class Dictionary<Key, Value> {
|
|
|
509
493
|
* @param key
|
|
510
494
|
* @returns single dictionary item
|
|
511
495
|
*/
|
|
512
|
-
get(key: Key): IDictionaryItem<Key, Value
|
|
496
|
+
get(key: Key): IDictionaryItem<Key, Value> | undefined;
|
|
513
497
|
/**
|
|
514
498
|
* Checks if dictionary contains item
|
|
515
499
|
* @param key
|
|
@@ -563,7 +547,7 @@ type PromiseReject = (reason?: any) => void;
|
|
|
563
547
|
declare function cast<T>(data: any): T;
|
|
564
548
|
declare class StringExtensions implements IStringExtensions {
|
|
565
549
|
getPart(maxChars: number, appendDot?: boolean): string;
|
|
566
|
-
fromJSON<T>(): T;
|
|
550
|
+
fromJSON<T>(): T | null;
|
|
567
551
|
toCSSClass(): string;
|
|
568
552
|
toUTC(): string;
|
|
569
553
|
}
|
|
@@ -589,7 +573,7 @@ interface IStringExtensions {
|
|
|
589
573
|
* Converts a string from json
|
|
590
574
|
* @returns object of expected type
|
|
591
575
|
*/
|
|
592
|
-
fromJSON<T>(): T;
|
|
576
|
+
fromJSON<T>(): T | null;
|
|
593
577
|
/**
|
|
594
578
|
* Converts a string to a css class
|
|
595
579
|
* @returns converted kebab case css class
|
|
@@ -658,7 +642,7 @@ declare class Sieve {
|
|
|
658
642
|
/**
|
|
659
643
|
* public getter to get filters
|
|
660
644
|
*/
|
|
661
|
-
get filters(): ISieveFilter[];
|
|
645
|
+
get filters(): ISieveFilter[] | undefined;
|
|
662
646
|
/**
|
|
663
647
|
* Setter to set filters
|
|
664
648
|
*/
|
|
@@ -666,7 +650,7 @@ declare class Sieve {
|
|
|
666
650
|
/**
|
|
667
651
|
* public getter to get sorts
|
|
668
652
|
*/
|
|
669
|
-
get sorts(): ISieveSort[];
|
|
653
|
+
get sorts(): ISieveSort[] | undefined;
|
|
670
654
|
/**
|
|
671
655
|
* Setter to set sorts
|
|
672
656
|
*/
|
|
@@ -687,7 +671,7 @@ declare class Sieve {
|
|
|
687
671
|
/**
|
|
688
672
|
* Getter for base url
|
|
689
673
|
*/
|
|
690
|
-
get baseUrl(): string;
|
|
674
|
+
get baseUrl(): string | undefined;
|
|
691
675
|
/**
|
|
692
676
|
* Setter for base url
|
|
693
677
|
* @param url
|
|
@@ -752,13 +736,13 @@ declare class DictionaryItemPipe implements PipeTransform {
|
|
|
752
736
|
}
|
|
753
737
|
|
|
754
738
|
declare class FilterPipe implements PipeTransform {
|
|
755
|
-
transform<T>(array: T[], searchValue:
|
|
739
|
+
transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T[];
|
|
756
740
|
static ɵfac: i0.ɵɵFactoryDeclaration<FilterPipe, never>;
|
|
757
741
|
static ɵpipe: i0.ɵɵPipeDeclaration<FilterPipe, "filter", true>;
|
|
758
742
|
}
|
|
759
743
|
|
|
760
744
|
declare class FindPipe implements PipeTransform {
|
|
761
|
-
transform<T>(array: T[], searchValue:
|
|
745
|
+
transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T | null;
|
|
762
746
|
static ɵfac: i0.ɵɵFactoryDeclaration<FindPipe, never>;
|
|
763
747
|
static ɵpipe: i0.ɵɵPipeDeclaration<FindPipe, "find", true>;
|
|
764
748
|
}
|
|
@@ -781,7 +765,10 @@ declare class MosaDatePipe implements PipeTransform {
|
|
|
781
765
|
private readonly store$;
|
|
782
766
|
private templates;
|
|
783
767
|
constructor(myTranslateService: TranslateService, myDatePipe: DatePipe);
|
|
784
|
-
transform(date: string | Date, mode?: 'full' | 'timeSince' | 'date'
|
|
768
|
+
transform(date: string | Date | undefined, mode?: 'full' | 'timeSince' | 'date', options?: {
|
|
769
|
+
withPrefix?: boolean;
|
|
770
|
+
withSuffix?: boolean;
|
|
771
|
+
}): Observable<string>;
|
|
785
772
|
private calcDate;
|
|
786
773
|
private template;
|
|
787
774
|
private updateTemplates;
|
|
@@ -805,7 +792,7 @@ declare class MosaDurationPipe implements PipeTransform {
|
|
|
805
792
|
* hours: 7200000 -> 2 hours
|
|
806
793
|
* days: 172800000 -> 2 days
|
|
807
794
|
*/
|
|
808
|
-
transform(millis: number, format?: MosaDurationFormat): Observable<string>;
|
|
795
|
+
transform(millis: number | undefined, format?: MosaDurationFormat): Observable<string>;
|
|
809
796
|
private getTranslation;
|
|
810
797
|
private calcDuration;
|
|
811
798
|
static ɵfac: i0.ɵɵFactoryDeclaration<MosaDurationPipe, never>;
|