@mediusinc/mng-commons 5.4.0-rc.3 → 5.4.0-rc.4
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/core/data-list/data-list-params-helpers.d.ts +1 -1
- package/core/data-list/data-list.model.d.ts +1 -0
- package/core/helpers/type-helpers.d.ts +12 -0
- package/esm2022/core/data-list/data-list-params-helpers.mjs +29 -5
- package/esm2022/core/data-list/data-list.model.mjs +1 -1
- package/esm2022/core/helpers/type-helpers.mjs +1 -1
- package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +21 -0
- package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +1 -1
- package/esm2022/filter/descriptors/filter.descriptor.mjs +40 -1
- package/esm2022/filter/index.mjs +3 -1
- package/esm2022/filter/models/filter-generic-property.model.mjs +2 -0
- package/esm2022/form/components/dropdown/dropdown.component.mjs +159 -10
- package/esm2022/table/api/descriptors/table.descriptor.mjs +51 -2
- package/esm2022/table/components/column-filter/column-filter.component.mjs +2 -2
- package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +4 -1
- package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +42 -9
- package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +95 -11
- package/esm2022/table/components/table/table.component.mjs +54 -10
- package/esm2022/table/helpers/filters.mjs +32 -2
- package/esm2022/table/services/table-feature-config.token.mjs +1 -1
- package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +2 -2
- package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +11 -10
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +16 -2
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +2 -1
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +2 -2
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +3 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +2 -1
- package/fesm2022/mediusinc-mng-commons-core.mjs +28 -4
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs +61 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +156 -7
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +50 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +227 -42
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +26 -10
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +7 -6
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/filter/descriptors/filter-generic.descriptor.d.ts +11 -0
- package/filter/descriptors/filter.descriptor.d.ts +21 -2
- package/filter/index.d.ts +2 -0
- package/filter/models/filter-generic-property.model.d.ts +7 -0
- package/form/components/dropdown/dropdown.component.d.ts +27 -1
- package/i18n/en.json +4 -0
- package/i18n/sl.json +4 -0
- package/package.json +7 -7
- package/table/api/descriptors/table.descriptor.d.ts +33 -1
- package/table/components/filter/filter-form/filter-form.component.d.ts +11 -2
- package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +21 -1
- package/table/components/table/table.component.d.ts +18 -3
- package/table/helpers/filters.d.ts +9 -1
- package/table/services/table-feature-config.token.d.ts +1 -0
- package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +6 -4
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +10 -1
- package/version-info.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons-core.mjs","sources":["../../core/src/components/notification/notification-wrapper.component.ts","../../core/src/components/notification/notification-wrapper.component.html","../../core/src/error/error.model.ts","../../core/src/helpers/date.ts","../../core/src/log/log.model.ts","../../core/src/log/logger.service.ts","../../core/src/services/tokens/browser-storage.token.ts","../../core/src/services/tokens/module-config.token.ts","../../core/src/services/commons.service.ts","../../core/src/components/pages/error/error.page.component.ts","../../core/src/components/pages/error/error.page.component.html","../../core/src/components/pages/not-found/not-found.page.component.ts","../../core/src/components/pages/not-found/not-found.page.component.html","../../core/src/data-list/filter-match.model.ts","../../core/src/data-list/data-list-params-helpers.ts","../../core/src/data-providers/base.data-provider.ts","../../core/src/data-providers/base-data-provider.factory.ts","../../core/src/directives/component.directive.ts","../../core/src/directives/template.directive.ts","../../core/src/enum/enum-helpers.ts","../../core/src/helpers/object.ts","../../core/src/helpers/string.ts","../../core/src/error/error-helpers.ts","../../core/src/error/error-handler.ts","../../core/src/helpers/coercion.ts","../../core/src/helpers/notification.ts","../../core/src/helpers/number.ts","../../core/src/helpers/route.ts","../../core/src/helpers/templates.ts","../../core/src/i18n/i18n-common.ts","../../core/src/i18n/i18n-error.ts","../../core/src/i18n/i18n-type.ts","../../core/src/log/log-publisher-console.service.ts","../../core/src/pipes/boolean.pipe.ts","../../core/src/pipes/class-map.pipe.ts","../../core/src/reflect/type-enum-metadata.ts","../../core/src/pipes/enum.pipe.ts","../../core/src/pipes/json-path.pipe.ts","../../core/src/pipes/enumerate.pipe.ts","../../core/src/pipes/enumerate-async.pipe.ts","../../core/src/pipes/getter.pipe.ts","../../core/src/pipes/i18n-property.pipe.ts","../../core/src/pipes/parametrize.pipe.ts","../../core/src/pipes/template.pipe.ts","../../core/src/reflect/type-enum-decorator.ts","../../core/src/registry/type-registry.ts","../../core/src/security/permissions.model.ts","../../core/src/security/permission-helpers.ts","../../core/src/security/permission.service.ts","../../core/src/security/permission.guard.ts","../../core/src/router/route-builder.ts","../../core/src/router/routes-builder.ts","../../core/src/rxjs/map-data-list-result-operator.ts","../../core/src/services/providers/commons-init.provider.ts","../../core/src/services/tokens/commons-init.token.ts","../../core/src/services/tokens/log-publisher.token.ts","../../core/src/services/commons-configuration.service.ts","../../core/src/services/commons-router.service.ts","../../core/src/services/commons-init.service.ts","../../core/src/services/commons-storage.service.ts","../../core/src/styles/style.model.ts","../../core/src/styles/style-constants.ts","../../core/src/provide.ts","../../core/src/index.ts","../../core/src/mediusinc-mng-commons-core.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, computed, signal} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ConfirmDialogModule} from 'primeng/confirmdialog';\nimport {DialogModule} from 'primeng/dialog';\nimport {ToastModule} from 'primeng/toast';\n\nimport {Nullable} from '../../helpers/type-helpers';\n\n@Component({\n selector: 'mng-notification-wrapper',\n standalone: true,\n templateUrl: 'notification-wrapper.component.html',\n styleUrls: ['notification-wrapper.component.scss'],\n imports: [ToastModule, ConfirmDialogModule, TranslateModule, DialogModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationWrapperComponent {\n public readonly notificationCutoff = 70;\n public isDialogNotificationVisible = computed(() => this.dialogNotification() !== null);\n public dialogNotification = signal<Message | null>(null);\n public dialogNotificationIconClass = computed(() => this.getMessageIcon(this.dialogNotification()));\n\n public getMessageIcon(message: Nullable<Message>): string {\n if (message?.icon) return message.icon;\n\n switch (message?.severity) {\n case 'info':\n return 'pi-info-circle';\n case 'warn':\n return 'pi-exclamation-triangle';\n case 'error':\n return 'pi-times-circle';\n case 'success':\n return 'pi-check';\n default:\n return '';\n }\n }\n\n public onShowNotificationInDialog(message: Message) {\n this.dialogNotification.set(message);\n }\n\n public onDialogNotificationVisibilityChange(visible: boolean) {\n if (!visible) {\n this.dialogNotification.set(null);\n }\n }\n}\n","<ng-content></ng-content>\n<p-confirmDialog appendTo=\"body\" [baseZIndex]=\"50\"></p-confirmDialog>\n\n<p-toast [baseZIndex]=\"50\">\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' + getMessageIcon(message)\"></span>\n <div class=\"p-toast-message-text\">\n <div class=\"p-toast-summary\">{{ message.summary }}</div>\n @if (message.detail) {\n <div class=\"p-toast-detail\">{{ message.detail.slice(0, notificationCutoff) + (message.detail.length > notificationCutoff ? '...' : '') }}</div>\n @if (message.detail.length > notificationCutoff) {\n <div (click)=\"onShowNotificationInDialog(message)\" class=\"p-link font-semibold text-sm mt-2 flex align-items-center\">\n <i class=\"pi pi-chevron-down mr-1\"></i>{{ 'notification.details' | translate }}\n </div>\n }\n }\n </div>\n </ng-template>\n</p-toast>\n\n<p-dialog\n [visible]=\"isDialogNotificationVisible()\"\n (visibleChange)=\"onDialogNotificationVisibilityChange($event)\"\n [styleClass]=\"'p-fluid mng-dialog mng-dialog-xs ' + 'mng-message-detail-dialog mng-message-detail-dialog-' + (dialogNotification()?.severity ?? '')\"\n appendTo=\"body\"\n draggable=\"false\"\n modal=\"true\">\n <ng-template pTemplate=\"header\" mngDialogKeydownHandler>\n <span class=\"p-dialog-title font-bold mng-dialog-success\">\n <span [class]=\"'mr-2 pi ' + dialogNotificationIconClass()\"></span>\n {{ dialogNotification()?.summary ?? '' }}\n </span>\n </ng-template>\n <div class=\"mng-notification-details\">\n {{ dialogNotification()?.detail ?? '' }}\n </div>\n</p-dialog>\n","import {HttpErrorResponse} from '@angular/common/http';\n\nimport {Message} from 'primeng/api/message';\n\nimport {ActionParameters} from '../action/action-parameters.model';\n\nexport type ErrorTypes = 'CommonsInternalError' | 'CommonsActionError' | 'CommonsHttpError';\n\n/**\n * Main use for commons error from action execution.\n * If http error is thrown, add it in cause.\n */\nexport interface ICommonsError extends Error {\n type: ErrorTypes;\n messageCode?: number | string;\n message: string;\n details?: any;\n stack?: string;\n cause?: Error | unknown;\n notification?: Message;\n notificationEmitSource?: string;\n}\n\nexport interface CommonsErrorBaseOptions {\n name?: string;\n messageCode?: number | string;\n details?: any;\n cause?: Error;\n stack?: string;\n location?: string;\n notification?: Message;\n}\n\nexport abstract class ACommonsErrorBase extends Error implements ICommonsError {\n public abstract readonly type: ErrorTypes;\n\n public readonly messageCode?: number | string;\n public readonly location?: string;\n public readonly details?: any;\n public readonly notification?: Message;\n public readonly notificationEmitSource?: string;\n\n protected constructor(message: string, options?: CommonsErrorBaseOptions) {\n super(message);\n\n this.name = options?.name ?? 'MngError';\n this.messageCode = options?.messageCode;\n this.location = options?.location ?? window?.location?.href;\n this.cause = options?.cause;\n this.stack = options?.stack ?? (options?.cause ? options.cause.stack : new Error(message).stack);\n this.details = options?.details;\n this.notification = options?.notification;\n }\n}\n\nexport class CommonsInternalError extends ACommonsErrorBase implements ICommonsError {\n public readonly type = 'CommonsInternalError';\n\n constructor(message: string, options?: CommonsErrorBaseOptions) {\n super(message, {\n name: 'CommonsInternalError',\n ...options\n });\n }\n}\n\nexport class CommonsHttpError extends ACommonsErrorBase implements ICommonsError {\n public readonly type = 'CommonsHttpError';\n\n public readonly httpError: HttpErrorResponse;\n\n constructor(message: string, httpError: HttpErrorResponse, options?: CommonsErrorBaseOptions) {\n super(message, {\n name: 'CommonsHttpError_' + httpError.url,\n cause: httpError,\n ...options\n });\n this.httpError = httpError;\n }\n}\n\nexport interface ICommonsActionError extends ICommonsError {\n type: 'CommonsActionError';\n httpError?: HttpErrorResponse;\n actionContext?: ICommonsActionErrorContext;\n}\n\nexport interface ICommonsActionErrorContext {\n parameters: ActionParameters<any>;\n}\n","export type toIsoStringTypeOptType = 'date' | 'date-time' | 'dateTime';\nexport type toIsoStringDateTimeOptsType = {utc?: boolean; noTimezone?: boolean; noMillis?: boolean};\n\nconst ngPrimerFormatSupported = [/d{1,2}/g, /E{1,5}/g, /c{1,5}/g, /M{1,5}/g, /L{1,5}/g, /y{1,4}/g, /Y{1,4}/g];\nconst ngPrimeFormatOther = [/G{1,5}/g, /w{1,2}/g, /W/g, /a{1,5}/g, /B{1,5}/g, /b{1,5}/g, /h{1,2}/g, /H{1,2}/g, /m{1,2}/g, /s{1,2}/g, /S{1,3}/g, /z{1,4}/g, /Z{1,5}/g, /O{1,4}/g];\nconst ngPrimerFormatMap = {\n // days\n d: 'd',\n dd: 'dd',\n E: 'D',\n EE: 'D',\n EEE: 'D',\n EEEE: 'DD',\n EEEEE: 'D',\n EEEEEE: 'D',\n c: 'd',\n cc: 'dd',\n ccc: 'D',\n cccc: 'DD',\n ccccc: 'D',\n cccccc: 'D',\n // months\n M: 'm',\n MM: 'mm',\n MMM: 'M',\n MMMM: 'MM',\n MMMMM: 'M',\n L: 'm',\n LL: 'mm',\n LLL: 'M',\n LLLL: 'MM',\n LLLLL: 'M',\n // year\n y: 'y',\n yy: 'y',\n yyy: 'yy',\n yyyy: 'yy',\n Y: 'y',\n YY: 'y',\n YYY: 'yy',\n YYYY: 'yy'\n};\n\nfunction padNumber(num: number, size = 2) {\n let str = String(num);\n while (str.length < size) {\n str = '0' + str;\n }\n return str;\n}\n\nexport function dateToIsoString(value: string | number | Date, type?: 'date'): string;\nexport function dateToIsoString(value: string | number | Date, type: 'date-time' | 'dateTime', dateTimeOpts?: toIsoStringDateTimeOptsType): string;\nexport function dateToIsoString(value: undefined | null | unknown, type?: 'date'): null;\nexport function dateToIsoString(value: undefined | null | unknown, type: 'date-time' | 'dateTime', dateTimeOpts?: toIsoStringDateTimeOptsType): null;\nexport function dateToIsoString(value: unknown, type?: toIsoStringTypeOptType, dateTimeOpts?: toIsoStringDateTimeOptsType): string | null;\nexport function dateToIsoString(value: unknown, type: toIsoStringTypeOptType = 'date-time', dateTimeOpts: toIsoStringDateTimeOptsType = {}): string | null {\n if (typeof value === 'string') {\n value = new Date(value);\n }\n if (typeof value === 'number') {\n value = new Date(value);\n }\n if (!(value instanceof Date)) {\n return null;\n }\n if (type === 'date') {\n // date only, no time part (and timezone, millis, utc does not matter ...)\n return value.getFullYear() + '-' + padNumber(value.getMonth() + 1) + '-' + padNumber(value.getDate());\n }\n if (dateTimeOpts.utc) {\n let str = value.toISOString();\n if (dateTimeOpts.noMillis) {\n const dotIdx = str.lastIndexOf('.');\n str = str.substring(0, dotIdx) + str.substring(dotIdx + 4, str.length);\n }\n if (dateTimeOpts.noTimezone) {\n str = str.substring(0, str.length - 1);\n }\n return str;\n } else {\n let base =\n value.getFullYear() +\n '-' +\n padNumber(value.getMonth() + 1) +\n '-' +\n padNumber(value.getDate()) +\n 'T' +\n padNumber(value.getHours()) +\n ':' +\n padNumber(value.getMinutes()) +\n ':' +\n padNumber(value.getSeconds());\n\n if (!dateTimeOpts.noMillis) {\n base += '.' + padNumber(value.getMilliseconds(), 3);\n }\n if (!dateTimeOpts.noTimezone) {\n const tzo = -value.getTimezoneOffset(),\n dif = tzo >= 0 ? '+' : '-';\n\n base = base + (dif + padNumber(Math.floor(Math.abs(tzo) / 60)) + ':' + padNumber(Math.abs(tzo) % 60));\n }\n\n return base;\n }\n}\n\nexport function fromAngularDateFormatToPrime(ngDateFormat: string): string {\n let primeDateFormat = ngDateFormat;\n for (const regex of ngPrimeFormatOther) {\n primeDateFormat = primeDateFormat.replace(regex, ' ');\n }\n for (const regex of ngPrimerFormatSupported) {\n const matches = [...primeDateFormat.matchAll(regex)].reverse();\n for (const match of matches) {\n if (match.index) {\n const matchStr = match[0];\n const replacement = ngPrimerFormatMap[matchStr as keyof object] ?? match[0];\n primeDateFormat = primeDateFormat.substring(0, match.index) + replacement + primeDateFormat.substring(match.index + matchStr.length);\n }\n }\n }\n primeDateFormat = primeDateFormat.replace(/\\s+\\W\\s+/g, ' ');\n primeDateFormat = primeDateFormat.replace(/\\s\\s+/g, ' ');\n\n return primeDateFormat.trim();\n}\n\nexport function angularDateFormatHasTime(ngDateFormat: string): boolean {\n return /[hHmsS]/.test(ngDateFormat);\n}\n\nexport function angularDateFormatHasSeconds(ngDateFormat: string): boolean {\n return /[sS]/.test(ngDateFormat);\n}\n","export enum LogLevelEnum {\n Trace,\n Debug,\n Log,\n Info,\n Warning,\n Error\n}\n\nexport interface LogEntry {\n level: LogLevelEnum;\n message: string;\n messageDetails?: string;\n timestamp: Date;\n timestampFormatted?: string;\n category?: string;\n error?: Error;\n data?: any[];\n}\n\nexport interface LogConfig {\n level?: LogLevelEnum;\n timestampFormat?: string;\n category?: {\n [category: string]: {\n level?: LogLevelEnum;\n };\n };\n}\n\nexport interface ILoggerService {\n create(context: string): ILoggerService;\n trace(msgOrError: string | Error, ...data: any[]): void;\n debug(msgOrError: string | Error, ...data: any[]): void;\n log(msgOrError: string | Error, logLevel: LogLevelEnum, category: string | undefined, ...data: any[]): void;\n logEntry(logEntry: Partial<LogEntry>): void;\n info(msgOrError: string | Error, ...data: any[]): void;\n warn(msgOrError: string | Error, ...data: any[]): void;\n error(msgOrError: string | Error, ...data: any[]): void;\n}\n\nexport interface ILogPublisher {\n addEntry(entry: LogEntry): void;\n}\n","import {DatePipe} from '@angular/common';\n\nimport {CommonsInternalError} from '../error/error.model';\nimport {dateToIsoString} from '../helpers/date';\nimport {CommonsConfigurationService} from '../services/commons-configuration.service';\nimport {ILogPublisher, ILoggerService, LogConfig, LogEntry, LogLevelEnum} from './log.model';\n\nexport class LoggerService implements ILoggerService {\n private static _instance: LoggerService = new LoggerService();\n private static _isInit = false;\n private static _configurationService?: CommonsConfigurationService;\n private static _publishers: ILogPublisher[] = [];\n private static _entriesBuffer: LogEntry[] = [];\n private static _categoryInstances: Record<string, LoggerService> = {};\n private static _timestampFormat = 'yyyy-MM-dd HH:mm:ss.SSS';\n\n private category?: string;\n\n // Temporary settings that cover logging calls before initialisation\n private readonly defaultLogLevel: LogLevelEnum = LogLevelEnum.Info;\n private datePipe = new DatePipe('en-US');\n\n private constructor() {\n // empty\n }\n\n public static get() {\n return LoggerService._instance;\n }\n\n public static configure(config: {timestampFormat?: string}) {\n if (config.timestampFormat) {\n LoggerService._timestampFormat = config.timestampFormat;\n }\n }\n\n public static init(configurationService: CommonsConfigurationService, publishers: ILogPublisher[]) {\n if (LoggerService._isInit) {\n return;\n }\n\n LoggerService._configurationService = configurationService;\n LoggerService._publishers = publishers;\n\n LoggerService._isInit = true;\n LoggerService._flushBuffer();\n }\n\n private static _flushBuffer() {\n if (!LoggerService._isInit) {\n return;\n }\n LoggerService._entriesBuffer.forEach(e => this._instance._log(e));\n LoggerService._entriesBuffer = [];\n }\n\n public static create(category: string): LoggerService {\n return LoggerService._instance.create(category);\n }\n\n public create(category: string): LoggerService {\n if (this.category) {\n throw new CommonsInternalError(`Cannot create logger with category inside another category (${this.category}). Must create logger on root.`);\n }\n if (LoggerService._categoryInstances[category]) {\n return LoggerService._categoryInstances[category];\n }\n\n const logger = new LoggerService();\n logger.category = category;\n\n LoggerService._categoryInstances[category] = logger;\n\n return logger;\n }\n\n private _processLog(msgOrError: string | Error, logLevel: LogLevelEnum, category: string | undefined = undefined, data?: any[]) {\n const [timestamp, timestampFormatted] = [...this._getTimestamps()];\n\n const logEntry = <LogEntry>{\n level: logLevel,\n message: typeof msgOrError === 'string' ? msgOrError : msgOrError.message,\n data: data,\n category: this.category ?? category,\n timestamp: timestamp,\n timestampFormatted: timestampFormatted ?? undefined\n };\n\n if (msgOrError instanceof Error) {\n // set error from message param\n logEntry.error = msgOrError;\n } else if (data?.length && data[0] instanceof Error) {\n // if first data is error, also consider as error\n logEntry.error = data[0];\n logEntry.data = data.splice(1);\n }\n\n this._log(logEntry);\n }\n\n private _getTimestamps(): [Date, string | null] {\n const timestamp = new Date();\n const timestampFormatted = this.datePipe.transform(timestamp, LoggerService._timestampFormat) ?? dateToIsoString(timestamp);\n return [timestamp, timestampFormatted];\n }\n\n private _log(log: LogEntry) {\n if (!LoggerService._isInit) {\n // add to buffer\n LoggerService._entriesBuffer.push(log);\n return;\n }\n\n const logConfig = LoggerService._configurationService?.getConfigValue<LogConfig>?.('log');\n if (\n (this.category && log.level < (logConfig?.category?.[this.category]?.level ?? logConfig?.level ?? this.defaultLogLevel)) ||\n (!this.category && log.level < (logConfig?.level ?? this.defaultLogLevel))\n ) {\n return;\n }\n\n if (logConfig?.timestampFormat) {\n log.timestampFormatted = this.datePipe.transform(log.timestamp, logConfig.timestampFormat) ?? undefined;\n }\n\n LoggerService._publishers.forEach(p => p.addEntry(log));\n }\n\n public trace(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Trace, undefined, data);\n }\n\n public debug(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Debug, undefined, data);\n }\n\n public log(msgOrError: string | Error, logLevel: LogLevelEnum = LogLevelEnum.Log, category: string | undefined = undefined, ...data: any[]) {\n this._processLog(msgOrError, logLevel, category, data);\n }\n\n public logEntry<E extends Partial<LogEntry>>(logEntry: E) {\n const [timestamp, timestampFormatted] = [...this._getTimestamps()];\n const logEntryFinal: LogEntry = {\n timestamp: timestamp,\n timestampFormatted: timestampFormatted ?? undefined,\n category: this.category ?? logEntry.category,\n message: '',\n messageDetails: logEntry.messageDetails,\n level: LogLevelEnum.Log,\n ...logEntry\n };\n this._log(logEntryFinal);\n }\n\n public info(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Info, undefined, data);\n }\n\n public warn(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Warning, undefined, data);\n }\n\n public error(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Error, undefined, data);\n }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const BROWSER_STORAGE_IT = new InjectionToken<Storage>('BROWSER_STORAGE');\n","import {InjectionToken} from '@angular/core';\n\nimport {LogConfig} from '../../log/log.model';\nimport {VersionConfigType} from '../../models/version.model';\n\nexport type ColorScheme = 'light' | 'dark' | 'auto';\n\nexport interface CommonsModuleConfig {\n app?: {\n name?: string;\n owner?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoPath?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoPathLight?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoPathDark?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoNamePath?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoNamePathLight?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoNamePathDark?: string;\n locales?: string[];\n dataLocales?: string[];\n version?: VersionConfigType;\n /**\n * @deprecated Use layout config instead\n */\n colorScheme?: ColorScheme;\n };\n configuration?: {\n projectEnvironment?: any;\n jsonSource?: string | Array<string>;\n skipJsonSourceInit?: boolean;\n jsonSourceEnableEnvProd?: boolean;\n };\n serialization?: CommonsSerializationConfig;\n log?: LogConfig;\n}\n\nexport interface CommonsSerializationConfig {\n dateTimeInUtc?: boolean;\n dateTimeWithTimezone?: boolean;\n dateTimeWithMillis?: boolean;\n filtersDateOnlyDisabled?: boolean;\n}\n\nexport const COMMONS_MODULE_CONFIG_IT = new InjectionToken<CommonsModuleConfig>('COMMONS_MODULE_CONFIG');\n","import {DestroyRef, Injectable, computed, effect, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {Title} from '@angular/platform-browser';\nimport {ActivatedRouteSnapshot, NavigationEnd, Router} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {PrimeNGConfig} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {LoggerService} from '../log/logger.service';\nimport {CommonsMenuItem} from '../models/menu.model';\nimport {IUser} from '../models/user.model';\nimport {BreadcrumbMenuItem, CommonsRouteData} from '../router/router.model';\nimport {BROWSER_STORAGE_IT} from './tokens/browser-storage.token';\nimport {COMMONS_MODULE_CONFIG_IT} from './tokens/module-config.token';\n\n@Injectable()\nexport class CommonsService {\n // internal\n private readonly logger = inject(LoggerService).create('CommonsService');\n private readonly router = inject(Router);\n private readonly primengConfig = inject(PrimeNGConfig);\n private readonly translate = inject(TranslateService);\n private readonly titleService = inject(Title);\n private readonly moduleConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly localStorage = inject(BROWSER_STORAGE_IT);\n private readonly destroyRef = inject(DestroyRef);\n\n // breadcrumbs\n public readonly breadcrumbHome = signal<CommonsMenuItem | null>({\n icon: 'pi pi-home',\n routerLink: '/'\n });\n public readonly breadcrumbs = signal<CommonsMenuItem[]>([]);\n private breadcrumbsTranslateSubscription?: Subscription;\n private breadcrumbHomeTranslateSubscription?: Subscription;\n\n // visual\n /**\n * @deprecated Use layout colorScheme instead.\n */\n public colorScheme = signal(this.moduleConfig?.app?.colorScheme ?? 'light');\n /**\n * @deprecated Use layout colorScheme instead.\n */\n public colorSchemeIsLight = computed(() => this.colorScheme() === 'light');\n\n // user\n public user = signal<IUser | undefined>(undefined);\n public userRoles = signal<Array<string>>([]);\n\n // APP section\n public appName = signal(this.moduleConfig?.app?.name ?? 'app.name');\n public appOwner = signal(this.moduleConfig?.app?.owner ?? 'app.owner');\n\n /**\n * @deprecated Use layout app logo instead.\n */\n private appLogoLight = signal(\n this.moduleConfig?.app?.logoPathLight ? this.moduleConfig.app.logoPathLight : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n /**\n * @deprecated Use layout app logo instead.\n */\n private appLogoDark = signal(this.moduleConfig?.app?.logoPathDark ? this.moduleConfig.app.logoPathDark : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png');\n /**\n * @deprecated Use layout app logo instead.\n */\n public appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));\n\n /**\n * @deprecated Use layout app logo instead.\n */\n private appLogoNameLight = signal(\n this.moduleConfig?.app?.logoNamePathLight ? this.moduleConfig.app.logoNamePathLight : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png'\n );\n /**\n * @deprecated Use layout app logo instead.\n */\n private appLogoNameDark = signal(\n this.moduleConfig?.app?.logoNamePathDark ? this.moduleConfig.app.logoNamePathDark : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png'\n );\n /**\n * @deprecated Use layout app logo instead.\n */\n public appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));\n\n public getDefaultLocale() {\n const browserLang = this.translate.getBrowserLang();\n if (browserLang && this.appLocales().some(l => l === browserLang)) {\n return browserLang;\n }\n return this.appLocales()?.length > 0 ? this.appLocales()[0] : 'en';\n }\n\n public appLocales = signal(this.moduleConfig?.app?.locales ?? ['en']);\n private _appLocale = signal<string>(this.initAppLocale());\n public appLocale = computed(() => this._appLocale());\n\n private initAppLocale(): string {\n const lsLang = this.localStorage.getItem('lang');\n if (lsLang && this.appLocales().some(l => l === lsLang)) {\n return lsLang;\n }\n return this.getDefaultLocale();\n }\n\n public setAppLocale(language: string) {\n if (this.appLocales().some(l => l === language)) {\n this.translate.use(language);\n this._appLocale.set(language);\n if (language !== this.getDefaultLocale()) this.localStorage.setItem('lang', language);\n else this.localStorage.removeItem('lang');\n }\n }\n\n public clearAppLocale() {\n this.localStorage.removeItem('lang');\n this._appLocale.set(this.getDefaultLocale());\n }\n\n public appDataLocales = signal(this.moduleConfig?.app?.dataLocales ?? ['en']);\n private _appDataLocale = signal<string>(this.initAppDataLocale());\n public appDataLocale = computed(() => this._appDataLocale());\n\n private initAppDataLocale(): string {\n const dataLang = this.localStorage.getItem('dataLang');\n if (dataLang && this.appDataLocales().some(dl => dl === dataLang)) {\n return dataLang;\n }\n return this.appDataLocales()?.length > 0 ? this.getDefaultLocale() : 'en';\n }\n\n public setAppDataLocale(dataLocale: string) {\n if (this.appDataLocales().some(dl => dl === dataLocale)) {\n this._appDataLocale.set(dataLocale);\n\n if (dataLocale !== this.getDefaultLocale()) this.localStorage.setItem('dataLang', dataLocale);\n else this.localStorage.removeItem('dataLang');\n }\n }\n\n public clearAppDataLocale() {\n this.localStorage.removeItem('lang');\n this._appDataLocale.set(this.getDefaultLocale());\n }\n\n public appVersion = signal(this.moduleConfig?.app?.version);\n\n constructor() {\n // ripple\n this.primengConfig.ripple = true;\n\n effect(\n () => {\n const appLocales = this.appLocales();\n if (appLocales) {\n this.setAppLocale(this.initAppLocale());\n this.translate.langs = this.appLocales();\n }\n\n const appDataLocales = this.appDataLocales();\n if (appDataLocales) this.setAppDataLocale(this.initAppDataLocale());\n },\n {allowSignalWrites: true}\n );\n\n this.router.events\n .pipe(\n // Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end\n filter(event => event instanceof NavigationEnd),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n\n this.translate\n .stream('mngPrime')\n .pipe(takeUntilDestroyed())\n .subscribe(value => this.primengConfig.setTranslation(value));\n }\n\n public initialize() {\n this.logger.debug('Initialize');\n }\n\n // BREADCRUMB actions\n public findBreadcrumbItem(item: CommonsMenuItem): CommonsMenuItem | null {\n const items = this.breadcrumbs();\n if (item.id) {\n return items.find(i => i.id && i.id === item.id) ?? null;\n } else if (item.routerLink) {\n const routerLinkStr = Array.isArray(item.routerLink) ? item.routerLink.join('/') : item.routerLink;\n return items.find(i => i.routerLink && (Array.isArray(i.routerLink) ? i.routerLink.join('/') : i.routerLink) === routerLinkStr) ?? null;\n } else if (item.positionIndex) {\n return items.find(i => i.positionIndex && i.positionIndex === i.positionIndex) ?? null;\n } else if (item.label) {\n return items.find(i => i.label && i.label === i.label) ?? null;\n } else if (item.icon) {\n return items.find(i => i.icon && i.icon === i.icon) ?? null;\n }\n return null;\n }\n\n public updateBreadcrumbItem(item: CommonsMenuItem): boolean {\n const items = [...this.breadcrumbs()];\n let posIdx = -1;\n if (item.id) {\n posIdx = items.findIndex(i => i.id && i.id === item.id);\n } else if (item.routerLink) {\n const routerLinkStr = Array.isArray(item.routerLink) ? item.routerLink.join('/') : item.routerLink;\n posIdx = items.findIndex(i => i.routerLink && (Array.isArray(i.routerLink) ? i.routerLink.join('/') : i.routerLink) === routerLinkStr);\n } else if (item.positionIndex) {\n posIdx = items.findIndex(i => i.positionIndex && i.positionIndex === i.positionIndex);\n } else if (item.label) {\n posIdx = items.findIndex(i => i.label && i.label === i.label);\n } else if (item.icon) {\n posIdx = items.findIndex(i => i.icon && i.icon === i.icon);\n }\n\n if (posIdx < 0) {\n return false;\n }\n\n items[posIdx] = {\n ...items[posIdx],\n ...item,\n updated: true\n };\n\n this.breadcrumbs.set(items);\n\n return true;\n }\n\n private updateBreadcrumbs() {\n if (this.breadcrumbsTranslateSubscription) {\n this.breadcrumbsTranslateSubscription.unsubscribe();\n this.breadcrumbsTranslateSubscription = undefined;\n }\n if (this.breadcrumbHomeTranslateSubscription) {\n this.breadcrumbHomeTranslateSubscription.unsubscribe();\n this.breadcrumbHomeTranslateSubscription = undefined;\n }\n\n const rootRoute = this.router.routerState.snapshot.root;\n\n const homeBreadcrumb = this.generateHomeBreadcrumb(rootRoute);\n if (homeBreadcrumb) {\n if (homeBreadcrumb.label) {\n this.breadcrumbHomeTranslateSubscription = this.translate\n .get(homeBreadcrumb.label)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(i18n => {\n homeBreadcrumb.label = i18n;\n this.breadcrumbHome.set(homeBreadcrumb);\n });\n } else {\n this.breadcrumbHome.set(homeBreadcrumb);\n }\n }\n\n const breadcrumbs: CommonsMenuItem[] = [];\n this.generateBreadcrumbs(rootRoute, [], breadcrumbs);\n\n breadcrumbs.forEach((b, idx) => {\n b.positionIndex = idx;\n });\n\n const i18nKeys: Array<string> = breadcrumbs.filter(b => typeof b.label === 'string').map(b => b.label!);\n if (i18nKeys.length > 0) {\n this.breadcrumbsTranslateSubscription = this.translate\n .get(i18nKeys)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(i18n => {\n // Construct the breadcrumb hierarchy\n breadcrumbs.forEach(b => {\n if (b.label && i18n[b.label]) {\n b.label = i18n[b.label];\n }\n });\n\n // Emit the new breadcrumbs\n this.breadcrumbs.set(breadcrumbs);\n });\n } else {\n this.breadcrumbs.set(breadcrumbs);\n }\n }\n\n private generateHomeBreadcrumb(route: ActivatedRouteSnapshot | null): CommonsMenuItem | null {\n if (!route) {\n return null;\n }\n\n const routeData = route.data as CommonsRouteData;\n const breadcrumbRouteData = routeData?.breadcrumb;\n if (breadcrumbRouteData && typeof breadcrumbRouteData === 'object' && 'isHome' in breadcrumbRouteData) {\n if (breadcrumbRouteData.isHome === false) {\n return null;\n }\n const breadcrumb = this.createBreadcrumb('/', breadcrumbRouteData, true);\n if (breadcrumb) {\n if (typeof breadcrumb.icon === 'undefined') {\n breadcrumb.icon = 'pi pi-home';\n }\n return breadcrumb;\n }\n } else {\n return this.generateHomeBreadcrumb(route.firstChild);\n }\n return null;\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null, parentUrlSegments: string[], breadcrumbs: CommonsMenuItem[]) {\n if (!route) {\n return;\n }\n\n const routeData = route.data as CommonsRouteData;\n const routeUrlSegments = parentUrlSegments.concat(route.url.map(url => url.path));\n const routeUrl = `/${routeUrlSegments.join('/')}`;\n if (routeData?.breadcrumb) {\n const breadcrumbRouteData = routeData.breadcrumb;\n\n if (Array.isArray(breadcrumbRouteData)) {\n for (const breadcrumbRouteDataItem of breadcrumbRouteData) {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteDataItem);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n } else if (typeof breadcrumbRouteData === 'function') {\n breadcrumbs.push(...breadcrumbRouteData(routeUrl, route));\n } else {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteData);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n }\n this.generateBreadcrumbs(route.firstChild, routeUrlSegments, breadcrumbs);\n }\n\n private createBreadcrumb(routeUrl: string, routeBreadcrumb: string | BreadcrumbMenuItem, includeHome = false): CommonsMenuItem | null {\n const existingBreadcrumb = this.findBreadcrumbItem({routerLink: routeUrl});\n if (existingBreadcrumb?.updated) {\n return existingBreadcrumb;\n }\n if (typeof routeBreadcrumb === 'string') {\n // check for updated existing breadcrumb\n return {\n id: routeUrl,\n label: routeBreadcrumb,\n routerLink: routeUrl\n };\n } else {\n if (!includeHome && typeof routeBreadcrumb.isHome !== 'undefined') {\n // home should not be included\n return null;\n }\n if (typeof routeBreadcrumb.routerLink === 'undefined') {\n routeBreadcrumb.routerLink = routeUrl;\n }\n routeBreadcrumb.id = routeUrl;\n return routeBreadcrumb;\n }\n }\n\n // TITLE section\n\n public setPageTitle(title?: string) {\n let currentRoute = this.router.routerState.snapshot.root;\n while (currentRoute.firstChild) {\n currentRoute = currentRoute.firstChild;\n }\n\n const routeData = currentRoute.data as CommonsRouteData;\n const pageTitle = title ?? routeData.pageTitle;\n\n this.titleService.setTitle(this.formatPageTitle(pageTitle));\n }\n\n private formatPageTitle(titlePrefix?: string) {\n const titlePieces = [];\n\n if (titlePrefix) {\n titlePieces.push(this.translate.instant(titlePrefix));\n }\n\n titlePieces.push(this.translate.instant('app.name'));\n\n return titlePieces.join(' - ');\n }\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {CommonsService} from '../../../services/commons.service';\n\n/**\n * @deprecated Use ErrorPageComponent from layout instead.\n */\n@Component({\n standalone: true,\n selector: 'mng-error-page-deprecated',\n imports: [ButtonModule, TranslateModule, RouterLink],\n styleUrls: ['error.page.component.scss'],\n templateUrl: './error.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ErrorPageComponent {\n constructor(public commons: CommonsService) {}\n}\n","<div [class]=\"'exception-body min-h-screen ' + (commons.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"commons.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"commons.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {CommonsService} from '../../../services/commons.service';\n\n/**\n * @deprecated Use ErrorPageComponent from layout instead.\n */\n@Component({\n standalone: true,\n selector: 'mng-not-found-page-deprecated',\n imports: [ButtonModule, RouterLink, TranslateModule],\n styleUrls: ['not-found.page.component.scss'],\n templateUrl: './not-found.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotFoundPageComponent {\n constructor(public commons: CommonsService) {}\n}\n","<div [class]=\"'exception-body min-h-screen ' + (commons.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"commons.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"commons.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","export type FilterMatchModeType =\n | 'equals'\n | 'notEquals'\n | 'contains'\n | 'notContains'\n | 'in'\n | 'notIn'\n | 'startsWith'\n | 'endsWith'\n | 'lessThan'\n | 'lessThanOrEqualTo'\n | 'greaterThan'\n | 'greaterThanOrEqualTo'\n | 'between'\n | 'exists'\n | 'doesNotExist';\nexport type FilterMatchModeExtendedType = FilterMatchModeType | string;\n\nexport class FilterMatchMode {\n public static Equals: FilterMatchModeType = 'equals';\n public static EqualsAbbr = 'eq';\n\n public static NotEquals: FilterMatchModeType = 'notEquals';\n public static NotEqualsAbbr = 'ne';\n\n public static Contains: FilterMatchModeType = 'contains';\n public static ContainsAbbr = 'cn';\n\n public static NotContains: FilterMatchModeType = 'notContains';\n public static NotContainsAbbr = 'nc';\n\n public static In: FilterMatchModeType = 'in';\n public static InAbbr = 'in';\n\n public static NotIn: FilterMatchModeType = 'notIn';\n public static NotInAbbr = 'ni';\n\n public static StartsWith: FilterMatchModeType = 'startsWith';\n public static StartsWithAbbr = 'sw';\n\n public static EndsWith: FilterMatchModeType = 'endsWith';\n public static EndsWithAbbr = 'ew';\n\n public static LessThan: FilterMatchModeType = 'lessThan';\n public static LessThanAbbr = 'lt';\n\n public static LessThanOrEqualTo: FilterMatchModeType = 'lessThanOrEqualTo';\n public static LessThanOrEqualToAbbr = 'le';\n\n public static GreaterThan: FilterMatchModeType = 'greaterThan';\n public static GreaterThanAbbr = 'gt';\n\n public static GreaterThanOrEqualTo: FilterMatchModeType = 'greaterThanOrEqualTo';\n public static GreaterThanOrEqualToAbbr = 'ge';\n\n public static Between: FilterMatchModeType = 'between';\n public static BetweenAbbr = 'bt';\n\n public static Exists: FilterMatchModeType = 'exists';\n public static ExistsAbbr = 'ex';\n\n public static DoesNotExist: FilterMatchModeType = 'doesNotExist';\n public static DoesNotExistAbbr = 'nx';\n\n public static getAbbreviation(mode: string): string | null {\n switch (mode) {\n case FilterMatchMode.Equals:\n return FilterMatchMode.EqualsAbbr;\n case FilterMatchMode.NotEquals:\n return FilterMatchMode.NotEqualsAbbr;\n case FilterMatchMode.Contains:\n return FilterMatchMode.ContainsAbbr;\n case FilterMatchMode.NotContains:\n return FilterMatchMode.NotContainsAbbr;\n case FilterMatchMode.In:\n return FilterMatchMode.InAbbr;\n case FilterMatchMode.NotIn:\n return FilterMatchMode.NotInAbbr;\n case FilterMatchMode.StartsWith:\n return FilterMatchMode.StartsWithAbbr;\n case FilterMatchMode.EndsWith:\n return FilterMatchMode.EndsWithAbbr;\n case FilterMatchMode.LessThan:\n return FilterMatchMode.LessThanAbbr;\n case FilterMatchMode.LessThanOrEqualTo:\n return FilterMatchMode.LessThanOrEqualToAbbr;\n case FilterMatchMode.GreaterThan:\n return FilterMatchMode.GreaterThanAbbr;\n case FilterMatchMode.GreaterThanOrEqualTo:\n return FilterMatchMode.GreaterThanOrEqualToAbbr;\n case FilterMatchMode.Between:\n return FilterMatchMode.BetweenAbbr;\n case FilterMatchMode.Exists:\n return FilterMatchMode.ExistsAbbr;\n case FilterMatchMode.DoesNotExist:\n return FilterMatchMode.DoesNotExistAbbr;\n default:\n return null;\n }\n }\n\n public static fromAbbreviation(abbr: string): string | null {\n switch (abbr) {\n case FilterMatchMode.EqualsAbbr:\n return FilterMatchMode.Equals;\n case FilterMatchMode.NotEqualsAbbr:\n return FilterMatchMode.NotEquals;\n case FilterMatchMode.ContainsAbbr:\n return FilterMatchMode.Contains;\n case FilterMatchMode.NotContainsAbbr:\n return FilterMatchMode.NotContains;\n case FilterMatchMode.InAbbr:\n return FilterMatchMode.In;\n case FilterMatchMode.NotInAbbr:\n return FilterMatchMode.NotIn;\n case FilterMatchMode.StartsWithAbbr:\n return FilterMatchMode.StartsWith;\n case FilterMatchMode.EndsWithAbbr:\n return FilterMatchMode.EndsWith;\n case FilterMatchMode.LessThanAbbr:\n return FilterMatchMode.LessThan;\n case FilterMatchMode.LessThanOrEqualToAbbr:\n return FilterMatchMode.LessThanOrEqualTo;\n case FilterMatchMode.GreaterThanAbbr:\n return FilterMatchMode.GreaterThan;\n case FilterMatchMode.GreaterThanOrEqualToAbbr:\n return FilterMatchMode.GreaterThanOrEqualTo;\n case FilterMatchMode.BetweenAbbr:\n return FilterMatchMode.Between;\n case FilterMatchMode.ExistsAbbr:\n return FilterMatchMode.Exists;\n case FilterMatchMode.DoesNotExistAbbr:\n return FilterMatchMode.DoesNotExist;\n default:\n return null;\n }\n }\n}\n","import {Params} from '@angular/router';\n\nimport {TableLazyLoadEvent} from 'primeng/table';\n\nimport {CommonsInternalError} from '../error/error.model';\nimport {dateToIsoString} from '../helpers/date';\nimport {DataListFilter, DataListFilterValueType, DataListFiltersType, DataListParams} from './data-list.model';\nimport {FilterMatchMode} from './filter-match.model';\nimport {CommonsFilterMetadata} from './filter-metadata.model';\n\n/**\n * Converts a TableLazyLoadEvent to DataListParams.\n *\n * @param {TableLazyLoadEvent} event - The event containing the data to convert.\n * @return {DataListParams} - The converted DataListParams object.\n */\nexport function fromTableLoadToDataListParams(event: TableLazyLoadEvent): DataListParams {\n const params: DataListParams = {};\n\n if (event.first != null) {\n params.offset = event.first;\n }\n if (event.rows != null) {\n params.limit = event.rows;\n }\n\n if (typeof event.globalFilter === 'string') {\n params.search = event.globalFilter;\n } else if (Array.isArray(event.globalFilter) && event.globalFilter.length > 0) {\n params.search = event.globalFilter.join(',');\n }\n\n if (Array.isArray(event.multiSortMeta) && event.multiSortMeta.length > 0) {\n params.sort = event.multiSortMeta.map(m => ({property: m.field, ascending: m.order >= 0}));\n }\n\n if (event.filters) {\n params.filters = Object.keys(event.filters).reduce((acc, key) => {\n const filter: DataListFilter = {};\n const eventFilter: CommonsFilterMetadata | CommonsFilterMetadata[] | undefined = event.filters?.[key as keyof object];\n if (Array.isArray(eventFilter)) {\n filter.value = eventFilter[0].value;\n filter.matchMode = eventFilter[0].matchMode;\n filter.caseSensitive = eventFilter[0].caseSensitive;\n } else if (eventFilter !== undefined) {\n filter.value = eventFilter.value;\n filter.matchMode = eventFilter.matchMode;\n filter.caseSensitive = eventFilter.caseSensitive;\n }\n return {...acc, [key]: filter};\n }, {});\n }\n\n return params;\n}\n\n/**\n * Converts the given parameters to URL query parameters.\n * Sorts are formatted in Medius data API sort query language: `asc:prop1,desc:prop2`, ...\n * Filter keys are \"flattened\" in the new object, values are formatted in Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {DataListParams} params - The parameters to convert.\n * @param {DataListParams|null} defaults - The default parameters used if no matching property in params is available. Defaults to { limit: 25, offset: 0 } if not provided.\n * @returns {Params} - The URL query parameters object.\n */\nexport function dataListParamsToUrlQuery(\n params: DataListParams<any, any>,\n defaults: DataListParams<any, any> | null = {\n limit: 25,\n offset: 0\n }\n): Params {\n const urlParams: Params = {};\n\n if (params.limit && params.limit !== defaults?.limit) {\n urlParams['limit'] = params.limit;\n }\n if (params.offset && params.offset !== defaults?.offset) {\n urlParams['offset'] = params.offset;\n }\n if (params.search && params.search !== defaults?.search) {\n urlParams['q'] = params.search;\n }\n if (params.sort && Array.isArray(params.sort) && params.sort.length > 0) {\n if (\n defaults?.sort == null ||\n !Array.isArray(defaults.sort) ||\n defaults.sort.length === 0 ||\n params.sort.length !== defaults.sort.length ||\n defaults.sort.some((ds, idx) => ds.property !== params.sort![idx].property || (ds.ascending ?? true) !== (params.sort![idx].ascending ?? true))\n ) {\n urlParams['sort'] = dataListParamsSortToUrlQuery(params);\n }\n }\n if (params.filters) {\n Object.keys(params.filters).forEach(k => {\n const paramFilter = params.filters![k as keyof object]!;\n const defaultFilter = defaults?.filters?.[k as keyof object];\n if (\n defaultFilter &&\n ((Array.isArray(defaultFilter.value) &&\n Array.isArray(paramFilter.value) &&\n defaultFilter.value.length === paramFilter.value.length &&\n defaultFilter.value.every((v, idx) => {\n const value = (paramFilter.value as Array<DataListFilterValueType>)[idx];\n if (value instanceof Date && v instanceof Date) return value.getTime() === v.getTime();\n else return value === v;\n })) || // handle arrays\n defaultFilter.value === paramFilter.value) &&\n defaultFilter.matchMode === paramFilter.matchMode &&\n (defaultFilter.caseSensitive ?? false) === (paramFilter.caseSensitive ?? false)\n ) {\n return;\n }\n\n if (\n paramFilter.value == null &&\n defaultFilter?.value == null &&\n paramFilter.matchMode !== FilterMatchMode.Exists &&\n paramFilter.matchMode !== FilterMatchMode.DoesNotExist\n ) {\n return;\n }\n\n urlParams[k] = dataListParamsFiltersToUrlQuery(params, k, true);\n });\n }\n if (defaults?.filters) {\n // add other defaults\n const paramFilterKeys = params.filters ? Object.keys(params.filters) : [];\n Object.keys(defaults.filters)\n .filter(k => paramFilterKeys.indexOf(k) < 0)\n .forEach(k => {\n urlParams[k] = dataListParamsFiltersToUrlQuery(defaults, k);\n });\n }\n\n return urlParams;\n}\n\n/**\n * Merges the provided parameters with default values and returns the merged object.\n *\n * @param {DataListParams} params - The parameters to merge with defaults.\n * @param {DataListParams} defaults - The default values to merge with params (optional, default is { limit: 25, offset: 0 }).\n * @returns {DataListParams} - The merged parameters object.\n */\nexport function mergeDataListParamsWithDefaults<Sorts = any, Filters extends keyof any = any>(\n params: DataListParams<Sorts, Filters>,\n defaults: DataListParams<Sorts, Filters> = {\n limit: 25,\n offset: 0\n }\n): DataListParams<Sorts, Filters> {\n const merged: DataListParams<Sorts, Filters> = {\n limit: params.limit ?? defaults.limit,\n offset: params.offset ?? defaults.offset,\n search: params.search ?? defaults.search,\n sort: (params.sort ?? defaults.sort)?.map(s => ({...s}))\n };\n\n if (params.filters) {\n merged.filters = {} as DataListFiltersType<Filters>;\n Object.entries(params.filters).forEach(([key, value]) => (merged.filters![key as Filters] = {...(value as DataListFilter)}));\n }\n if (defaults.filters) {\n if (!merged.filters) merged.filters = {} as DataListFiltersType<Filters>;\n Object.entries(defaults.filters).forEach(([key, value]) => {\n if (merged.filters![key as Filters] === undefined) {\n merged.filters![key as Filters] = {...(value as DataListFilter)};\n }\n });\n }\n\n return merged;\n}\n\n/**\n * Converts an object of parameters to a URL query string for sorting.\n * Sorts are formatted in Medius data API sort query language: `asc:prop1,desc:prop2`, ...\n *\n * @param {DataListParams} params - An optional object containing sort parameters.\n * @returns A string representing the URL query or undefined if no sort parameters are provided.\n */\nexport function dataListParamsSortToUrlQuery(params?: DataListParams<any, any>): string | undefined {\n return params && Array.isArray(params.sort)\n ? params.sort.map(s => `${s.ascending === true || s.ascending === undefined ? 'asc' : 'desc'}:${String(s.property)}`).join(',')\n : undefined;\n}\n\n/**\n * Converts a specific filter parameter (by key) from DataListParams object to a URL query string.\n * Filter keys are \"flattened\" in the new object, values are formatted in Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {DataListParams<any, Filters> | undefined} params - The DataListParams object containing the filters.\n * @param {Filters} key - The key of the filter to convert.\n * @param {boolean} [allowNull=false] - Indicates whether to allow null values in the query string.\n * @return {string | undefined} - The URL query string representing the specified filter, or undefined if the filter is not found.\n */\nexport function dataListParamsFiltersToUrlQuery<Filters extends keyof any = string>(\n params: DataListParams<any, Filters> | undefined,\n key: Filters,\n allowNull = false\n): string | undefined {\n const paramFilter = params?.filters?.[key];\n return dataListParamsFilterToUrlQuery(paramFilter, allowNull);\n}\n\n/**\n * Converts a filter to a URL query string.\n * Filter keys are \"flattened\" in the new object, values are formatted in Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {DataListFilter} paramFilter - The filter object to be converted.\n * @param {boolean} [allowNull=false] - Indicates whether to allow null values in the filter.\n * @returns {string|undefined} - The filter converted to a URL query string, or undefined if no filter is provided or the filter has empty or invalid values.\n * @throws {CommonsInternalError} - If the filter has invalid values.\n */\nexport function dataListParamsFilterToUrlQuery(paramFilter?: DataListFilter, allowNull = false): string | undefined {\n const filterValueAsArray = Array.isArray(paramFilter?.value) ? paramFilter!.value.filter(v => v !== undefined && (allowNull || v !== null)) : undefined;\n const matchMode = paramFilter?.matchMode ?? FilterMatchMode.Equals;\n if (\n paramFilter === undefined ||\n (!allowNull && matchMode !== 'exists' && matchMode !== 'doesNotExist' && paramFilter.value == null) ||\n (typeof paramFilter.value === 'string' && paramFilter.value.length === 0) ||\n (Array.isArray(filterValueAsArray) && filterValueAsArray.length === 0)\n ) {\n // no need to include filters for empty values\n return undefined;\n }\n\n if (matchMode === FilterMatchMode.Between && !(Array.isArray(filterValueAsArray) && filterValueAsArray.length === 2)) {\n throw new CommonsInternalError(`Filter match mode between requires exactly 2 values: ${paramFilter.value}`);\n }\n\n if ((matchMode === FilterMatchMode.In || matchMode === FilterMatchMode.NotIn) && (!Array.isArray(filterValueAsArray) || filterValueAsArray.length === 0)) {\n throw new CommonsInternalError(`Filter match mode ${matchMode} requires non-empty array: ${paramFilter.value}`);\n }\n\n if (([FilterMatchMode.In, FilterMatchMode.NotIn, FilterMatchMode.Between] as string[]).indexOf(matchMode) === -1 && Array.isArray(filterValueAsArray)) {\n throw new CommonsInternalError(`Filter match mode ${matchMode} must not be array: ${paramFilter.value}`);\n }\n\n const noVal = paramFilter.matchMode === FilterMatchMode.Exists || paramFilter.matchMode === FilterMatchMode.DoesNotExist;\n const urlValuePart = noVal ? '' : `:${dataListParamsFilterValueToUrlString(filterValueAsArray ?? paramFilter.value, allowNull)}`;\n\n return `${paramFilter.caseSensitive ? 'cs:' : paramFilter.caseSensitive === false ? 'ci:' : ''}${FilterMatchMode.getAbbreviation(matchMode) ?? matchMode}${urlValuePart}`;\n}\n\n/**\n * Converts URL query parameters to a DataListParams object.\n * Sorts are formatted from Medius data API sort query language: `asc:prop1,desc:prop2`, ...\n * Filter keys are all keys in Params object that are not matched elsewhere, values are formatted from Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {Params} urlParams - The URL query parameters.\n * @return {DataListParams} - The converted DataListParams object.\n */\nexport function fromUrlQueryToDataListParams(urlParams: Params): DataListParams {\n const params: DataListParams = {};\n\n Object.entries(urlParams).forEach(([urlParamKey, urlParamValue]) => {\n if (urlParamKey === 'limit') {\n params.limit = +urlParamValue;\n if (isNaN(params.limit) || params.limit < 0) {\n delete params.limit;\n }\n } else if (urlParamKey === 'offset') {\n params.offset = +urlParamValue;\n if (isNaN(params.offset) || params.offset < 0) {\n delete params.offset;\n }\n } else if (urlParamKey === 'q') {\n params.search = urlParamValue;\n } else if (urlParamKey === 'sort') {\n if (typeof urlParamValue === 'string') {\n params.sort = urlParamValue.split(',').map(s => {\n const [direction, property] = s.split(':');\n return {property: (property ?? direction) as keyof object, ascending: direction !== 'desc'};\n });\n } else {\n throw new CommonsInternalError(`String is expected as value for '${urlParamKey}' when converting from urlParams`);\n }\n } else if (typeof urlParamValue === 'string') {\n if (urlParamValue.length === 0) {\n // empty string should be ignored\n return;\n }\n\n const filterParts = urlParamValue.split(':');\n let partIdx = 0;\n\n // case sensitive\n let caseSensitive: boolean | undefined = undefined;\n if (filterParts[partIdx] === 'cs' || filterParts[partIdx] === 'ci') {\n caseSensitive = filterParts[partIdx++] === 'cs';\n }\n\n // match mode\n const matchMode = filterParts[partIdx] ? FilterMatchMode.fromAbbreviation(filterParts[partIdx]) ?? filterParts[partIdx] : FilterMatchMode.Equals;\n partIdx++;\n\n const noVal = matchMode === FilterMatchMode.Exists || matchMode === FilterMatchMode.DoesNotExist;\n\n // value\n let value: string | string[] | undefined | null = undefined;\n if (!noVal) {\n if (filterParts.length < 2) {\n return;\n }\n\n if (partIdx === filterParts.length - 1) {\n value = filterParts[partIdx];\n } else if (partIdx < filterParts.length) {\n // array that should not be array, so join back together\n value = filterParts.slice(partIdx, filterParts.length).join(':');\n }\n\n if (value === undefined && matchMode !== FilterMatchMode.Exists && matchMode !== FilterMatchMode.DoesNotExist) {\n // if value undefined and match mode expects value, then skip\n return;\n }\n\n if (value === 'null') {\n value = null;\n }\n\n if ((matchMode === FilterMatchMode.In || matchMode === FilterMatchMode.NotIn || matchMode === FilterMatchMode.Between) && typeof value === 'string') {\n let arrayVal: string[] = [];\n // these match modes expect array\n if (value.indexOf('\"') >= 0) {\n const tokens: string[] = [];\n let currentToken = '';\n let explicitQuotes = false; //token is quoted, e.g. in:1,2,\"22\"\"\",\",123\"\"\"\n let quotesOpened = false; //token has started processing\n let quotesExplicitlyClosed = false; //token processing has finished, after single \" in quoted mode, or before , in not quoted\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i];\n\n // reset the tokenizer when seeing the token separator\n // only if either:\n // the quotes have not been opened yet (when there are no characters between separators),\n // the token has been explicitly closed (when we actually have explicit opening i.e., quotes as the first character)\n // or we have implicit quotes (i.e., quotes are not the first character)\n if (c === ',' && (!quotesOpened || quotesExplicitlyClosed || !explicitQuotes)) {\n tokens.push(currentToken);\n currentToken = '';\n quotesOpened = false;\n quotesExplicitlyClosed = false;\n explicitQuotes = false;\n } else if (c == '\"') {\n // escaped double-quotes\n if (explicitQuotes && i + 1 < value.length && value[i + 1] === '\"') {\n currentToken += c; // Append one double-quote to the current token\n i++; // Skip the next double-quote\n }\n // we encounter quotes again after they were the first character => we close the token\n else if (explicitQuotes) {\n quotesExplicitlyClosed = true;\n }\n // implicit quotes\n else if (quotesOpened) {\n currentToken += c;\n }\n // quotes are the first character => explicitly open the token\n else {\n currentToken = '';\n quotesOpened = true;\n explicitQuotes = true;\n }\n } else {\n if (quotesExplicitlyClosed) {\n return;\n }\n\n quotesOpened = true;\n currentToken += c;\n }\n }\n\n if (quotesOpened && !quotesExplicitlyClosed && explicitQuotes) {\n return;\n }\n\n // Append the last token after the loop ends\n tokens.push(currentToken.toString());\n\n arrayVal = tokens;\n } else {\n arrayVal = value.split(',');\n }\n\n if (matchMode === FilterMatchMode.Between && arrayVal.length !== 2) {\n return;\n }\n\n value = arrayVal;\n }\n\n if ((typeof value === 'string' && value.length === 0) || (Array.isArray(value) && value!.length === 0)) {\n // filter with empty value is to be ignored\n return;\n }\n } else {\n caseSensitive = undefined;\n }\n\n if (!params.filters) {\n params.filters = {};\n }\n\n params.filters[urlParamKey as keyof object] = {value: value, matchMode: matchMode, caseSensitive: caseSensitive};\n }\n });\n\n return params;\n}\n\n/**\n * Makes a copy of the given DataListParams object.\n *\n * @param {DataListParams<Sorts, Filters>} params - The DataListParams object to be copied.\n * @returns {DataListParams<Sorts, Filters>} - Returns a new copy of the DataListParams object.\n */\nexport function copyDataListParams<Sorts = string, Filters extends keyof any = string>(params: DataListParams<Sorts, Filters>): DataListParams<Sorts, Filters> {\n const copy: DataListParams<Sorts, Filters> = {\n offset: params.offset,\n limit: params.limit,\n search: params.search\n };\n\n if (params.sort) {\n copy.sort = params.sort?.map(s => ({...s}));\n }\n if (params.filters) {\n copy.filters = Object.entries(params.filters).reduce((acc, [key, value]) => {\n const filterValue = value as DataListFilter;\n return {\n ...acc,\n [key]: {\n ...filterValue,\n value: Array.isArray(filterValue.value) ? [...filterValue.value] : filterValue.value\n } as DataListFilter\n };\n }, {} as DataListFiltersType<Filters>);\n }\n\n return copy;\n}\n\n/**\n * Converts a value to a URL query param string representation.\n *\n * @param {unknown} value - The value to be converted.\n * @param {boolean} [allowNull=false] - Indicates whether null values are allowed.\n * @returns {string} The URL parameter representation of the value.\n * @throws {CommonsInternalError} If an undefined value is passed without allowNull set to true.\n * @throws {CommonsInternalError} If the value is an object (excluding Date).\n */\nexport function dataListParamsFilterValueToUrlString(value: unknown, allowNull = false): string {\n if (value === null && allowNull) return 'null';\n if (value == null) throw new CommonsInternalError('Undefined value cannot be converted to url param.'); // this should not happen, should be filtered out earlier\n if (Array.isArray(value))\n return value\n .map(v => dataListParamsFilterValueToUrlString(v, allowNull))\n .map(v => (v.indexOf(',') >= 0 || v.indexOf('\"') >= 0 ? `\"${v.replaceAll('\"', '\"\"')}\"` : v))\n .join(',');\n if (typeof value === 'object') {\n if (value instanceof Date) return dateToIsoString(value, 'dateTime', {utc: true});\n else {\n throw new CommonsInternalError('Filter value cannot be object');\n }\n }\n return String(value);\n}\n","import {ClassOptType, ServiceClassOptType} from '../models/class-service.model';\n\nexport type IDataProvider<ModelType = any, ServiceType = any, CT = ClassOptType<ModelType>, ST = ServiceClassOptType<ServiceType>> = {\n classType: CT;\n serviceType: ST;\n isDataProvider: boolean;\n};\n\n/**\n * A base data provider class used for handling data operations.\n *\n * @tparam Model - The type of data this data provider will handle.\n * @tparam Service - The type of service used by this data provider (optional).\n * @tparam ModelClass - The model type for the data provider (optional).\n * @tparam ServiceClass - The service type for the data provider (optional).\n */\nexport class DataProviderInst<Model, Service = any, ModelClass = ClassOptType<Model>, ServiceClass = ServiceClassOptType<Service>>\n implements IDataProvider<Model, Service, ModelClass, ServiceClass>\n{\n public constructor(\n public readonly classType: ModelClass,\n public readonly serviceType: ServiceClass\n ) {}\n\n public get isDataProvider() {\n return true;\n }\n}\n","import {ClassType, ServiceClassType} from '../models/class-service.model';\nimport {DataProviderInst} from './base.data-provider';\n\nexport class DataProvider extends DataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model>(): DataProviderInst<Model> {\n return dataProviderBase<Model>();\n }\n\n public static fromClass<Model>(type: ClassType<Model>): DataProviderInst<Model, undefined, ClassType<Model>, undefined> {\n return dataProviderFromClass<Model>(type);\n }\n\n public static fromClassWithService<Model, Service>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): DataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>> {\n return dataProviderFromClass<Model, Service>(type, serviceType);\n }\n\n public static fromService<Service, Model>(serviceType: ServiceClassType<Service>): DataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return dataProviderWithService<Service, Model>(serviceType);\n }\n}\n\nexport function dataProviderBase<Model>(): DataProviderInst<Model, undefined, undefined, undefined> {\n return new DataProviderInst<Model, undefined, undefined, undefined>(undefined, undefined);\n}\n\nexport function dataProviderWithService<Service, Model>(serviceType: ServiceClassType<Service>): DataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return new DataProviderInst<Model, Service, undefined, ServiceClassType<Service>>(undefined, serviceType);\n}\n\nexport function dataProviderFromClass<Model>(type: ClassType<Model>): DataProviderInst<Model, undefined, ClassType<Model>, undefined>;\nexport function dataProviderFromClass<Model, Service = any>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n): DataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>;\nexport function dataProviderFromClass<Model, Service = any, ServiceClass = ServiceClassType<Service>>(type: ClassType<Model>, serviceType?: ServiceClass) {\n return new DataProviderInst<Model, Service, ClassType<Model>, ServiceClass>(type, serviceType as ServiceClass);\n}\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n OnInit,\n Output,\n Type,\n ViewContainerRef,\n createComponent,\n inject\n} from '@angular/core';\n\nimport {CommonsInternalError} from '../error/error.model';\n\n@Directive({\n standalone: true,\n selector: '[mngComponent]'\n})\nexport class ComponentDirective<C> implements OnInit {\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef);\n private readonly applicationRef = inject(ApplicationRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n @Input({alias: 'mngComponent'}) component?: Type<C>;\n @Input({alias: 'injectionToken'}) componentIt?: InjectionToken<Type<C>>;\n @Input() inputs?: {[key: string]: any};\n @Input() attachToHost = false;\n @Input() parentInjector?: Injector;\n @Output('instanceCreated') private componentInstanceEventEmitter = new EventEmitter<C>();\n\n public componentRef!: ComponentRef<C>;\n\n ngOnInit() {\n let component: Type<C> | null = null;\n if (this.component) {\n component = this.component;\n } else if (this.componentIt) {\n component = this.injector.get(this.componentIt, null, {optional: true});\n }\n\n if (!component) {\n throw new CommonsInternalError(`Component cannot be created, no component (${this.component}) or no or invalid injection token provided (${this.componentIt}).`);\n }\n\n const elementInjector = this.parentInjector ?? this.injector;\n const environmentInjector = elementInjector.get(EnvironmentInjector, null, {optional: true}) ?? this.applicationRef.injector;\n\n if (this.attachToHost) {\n this.componentRef = createComponent(component, {\n hostElement: this.elementRef.nativeElement,\n environmentInjector: environmentInjector,\n elementInjector: elementInjector\n });\n } else {\n this.viewContainerRef.clear();\n this.componentRef = this.viewContainerRef.createComponent<any>(component, {\n environmentInjector: environmentInjector,\n injector: elementInjector\n });\n }\n\n if (this.inputs) {\n for (const input in this.inputs) {\n this.componentRef.setInput(input, this.inputs[input]);\n }\n }\n\n if (this.attachToHost) {\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n\n this.componentInstanceEventEmitter.next(this.componentRef.instance);\n }\n}\n","import {Directive, Input, TemplateRef, ViewContainerRef, inject} from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[mngTemplate]'\n})\nexport class TemplateDirective {\n public readonly template = inject(TemplateRef<any>);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n @Input() type!: string;\n @Input({required: true, alias: 'mngTemplate'}) name!: string;\n\n public getType(): string {\n return this.name;\n }\n\n public getViewContainerRef(): ViewContainerRef {\n return this.viewContainerRef;\n }\n}\n","import {EnumConstantType, EnumType} from '../helpers/type-helpers';\nimport {EnumValue} from './enum.model';\n\n/**\n * Returns array of names for constants in enum.\n * @param enumType Enum object.\n */\nexport function getEnumConstantNames(enumType: EnumType): Array<string> {\n return getEnumConstantNamesFromObject(enumType);\n}\n\n/**\n * Returns array of names for constants in enum.\n * @param enumObj Enum object.\n */\nexport function getEnumConstantNamesFromObject(enumObj: object): Array<string> {\n // in number enum, the numbers are also represented in objects and should be filtered out\n return Object.keys(enumObj).filter(v => isNaN(+v));\n}\n\n/**\n * Returns array of values for constants in enum.\n * @param enumType Enum object.\n */\nexport function getEnumConstantValues(enumType: EnumType): Array<EnumConstantType> {\n return Object.keys(enumType)\n .filter(v => isNaN(+v))\n .map(v => enumType[v]);\n}\n\n/**\n * Returns array of string values for constants in enum.\n * @param enumType Enum object.\n */\nexport function getEnumConstantValuesAsString(enumType: EnumType): Array<string> {\n return Object.keys(enumType).map(v => enumType[v as keyof object] as string);\n}\n\n/**\n * Returns array of number values for constants in enum.\n * @param enumType Enum object.\n */\nexport function getEnumConstantValuesAsNumber(enumType: EnumType): Array<number> {\n return Object.keys(enumType)\n .filter(v => !isNaN(+v))\n .map(v => +v);\n}\n\n/**\n * Returns array of type EnumValue for all constants in enum.\n * @param enumType Enum object.\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\nexport function fromEnumConstantsAsValueArray(enumType: EnumType, nameAsValue = false, titlePath?: string) {\n return getEnumConstantNames(enumType).map(n => <EnumValue>{name: n, title: `${titlePath ? `${titlePath}.` : ''}${n}`, value: nameAsValue ? n : enumType[n]});\n}\n\n/**\n * Returns array of type EnumValue for provided values in enum.\n * @param enumType Enum object.\n * @param values Enum values (constants).\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\nexport function fromEnumValuesAsValueArray<EnumConstant = EnumConstantType>(enumType: EnumType, values: Array<EnumConstant>, nameAsValue = false, titlePath?: string) {\n return values.map(v => {\n const k = getEnumConstantName(enumType, v);\n return {name: k, title: `${titlePath ? `${titlePath}.` : ''}${k}`, value: nameAsValue ? k : v} as EnumValue;\n });\n}\n\n/**\n * Gets constant name for value.\n * @param enumType Enum object.\n * @param value Value of enum constant.\n */\nexport function getEnumConstantName<EnumConstant = EnumConstantType>(enumType: EnumType, value: EnumConstant): string | null {\n if (typeof value === 'string') {\n return getEnumConstantNames(enumType).find(c => enumType[c] === value) ?? null;\n } else {\n return typeof enumType[value as keyof object] !== 'undefined' ? (enumType[value as keyof object] as string) : null;\n }\n}\n\n/**\n * Gets constant name for value.\n * @param enumObj Enum object.\n * @param value Value of enum constant.\n */\nexport function getEnumConstantNameFromObject<EnumConstant = EnumConstantType>(enumObj: object, value: EnumConstant): string | null {\n const enumObjAny = enumObj as any;\n if (typeof value === 'string') {\n return getEnumConstantNamesFromObject(enumObj).find(c => enumObjAny[c] === value) ?? null;\n } else {\n return typeof enumObjAny[value] !== 'undefined' ? (enumObjAny[value] as string) : null;\n }\n}\n","import {ClassType} from '../models/class-service.model';\n\ninterface DeepCopyPropsOptions {\n mapGettersToProperties?: boolean;\n}\n\nexport interface DeepCopyOptions<P = object> extends DeepCopyPropsOptions {\n objectPrototype?: ClassType<P>;\n}\n\nexport function objectDeepCopy<T = object, P = object>(obj: T, options: DeepCopyOptions<P> & {mapGettersToProperties: true}): T | Record<string, any>;\nexport function objectDeepCopy<T = object, P = object>(obj: T, options: DeepCopyOptions<P> & {objectPrototype: ClassType<P>} & {mapGettersToProperties?: false}): P;\nexport function objectDeepCopy<T = object, P = object>(\n obj: T,\n options: DeepCopyOptions<P> & {objectPrototype: ClassType<P>} & {mapGettersToProperties: true}\n): P | Record<string, any>;\nexport function objectDeepCopy<T = object, P = object>(obj: T, options?: DeepCopyOptions<P>): T;\n\nexport function objectDeepCopy<T = object, P = object>(obj: T, options?: DeepCopyOptions<P>): T | P | Record<string, any> {\n if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\n return obj;\n }\n\n // copy known object types by directly creating\n if (obj instanceof Date) {\n return new Date(+obj);\n } else if (obj instanceof File) {\n return new File([obj], obj.name, {\n type: obj.type,\n lastModified: obj.lastModified\n });\n }\n\n let copy;\n if (options?.mapGettersToProperties) {\n copy = {};\n } else {\n copy = options?.objectPrototype ? Object.create(options.objectPrototype['prototype' as keyof object]) : Object.create(Object.getPrototypeOf(obj));\n Object.assign(copy, obj);\n }\n\n for (const key of getObjectProperties(obj)) {\n const prop = obj[key as keyof object];\n copy[key] = handleProp(prop, {mapGettersToProperties: options?.mapGettersToProperties});\n }\n\n if (options?.mapGettersToProperties) {\n for (const getterKey of getObjectGetters(obj)) {\n const prop = obj[getterKey as keyof object];\n copy[getterKey] = handleProp(prop, {mapGettersToProperties: options?.mapGettersToProperties});\n }\n }\n\n return copy;\n}\n\nexport function objectDeepMerge(target: Record<string, any>, source: Record<string, any>): Record<string, any> {\n if (!isObject(source)) {\n return target;\n }\n\n for (const key of getObjectProperties(source)) {\n if (isObject(source[key])) {\n if (isObject(target[key])) {\n target[key] = objectDeepMerge(target[key], source[key]);\n } else {\n target[key] = objectDeepCopy(source[key]);\n }\n } else if (Array.isArray(source[key])) {\n if (!Array.isArray(target[key])) {\n target[key] = (source[key] as Array<unknown>).map(i => (isObject(i) ? objectDeepMerge({}, i as Record<string, unknown>) : i));\n }\n } else if (typeof target[key] === 'undefined') {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction isObject(obj: any) {\n return typeof obj === 'object' && obj !== null && !Array.isArray(obj);\n}\n\nfunction handleProp(prop: any, options?: DeepCopyPropsOptions) {\n if (Array.isArray(prop)) {\n return prop.map(i => objectDeepCopy(i, options));\n } else if (typeof prop === 'object' && prop !== null) {\n return objectDeepCopy(prop, options);\n } else {\n return prop;\n }\n}\n\nexport function getObjectProperties(obj: object) {\n return Object.keys(obj);\n}\n\nexport function getObjectGetters(obj: any): string[] {\n const getterSet = new Set<string>();\n let currObj = obj;\n\n while (currObj) {\n const getters = Object.entries(Object.getOwnPropertyDescriptors(currObj))\n .filter(([, descriptor]) => typeof descriptor.get === 'function')\n .filter(([key]) => key !== '__proto__')\n .map(([key]) => key);\n\n for (const getter of getters) {\n getterSet.add(getter);\n }\n\n currObj = Object.getPrototypeOf(currObj);\n }\n\n return Array.from(getterSet);\n}\n\nexport function getObjectPropertyByPath(value: any, path: string): any | undefined {\n if (path === '$') {\n // only return the root\n return value;\n }\n\n // Check for leading root object notation\n if (path.startsWith('$')) {\n path = path.substring(1);\n }\n\n // Check for leading .\n if (path.startsWith('.')) {\n path = path.substring(1);\n }\n\n if (path.indexOf('.') >= 0) {\n const pathSplit = path.split('.');\n let currValue = value;\n for (const p of pathSplit) {\n if (typeof currValue === 'undefined' || currValue === null) {\n return currValue;\n }\n\n if (!p.length) {\n // empty path, return current value\n return currValue;\n }\n\n const leftBracketIdx = p.indexOf('[');\n if (leftBracketIdx >= 0 && p.endsWith(']')) {\n // should be reference to array\n const arrayPath = p.substring(0, leftBracketIdx);\n const arrayIdx = +p.substring(leftBracketIdx + 1, p.length - 1);\n const array = currValue[arrayPath];\n if (Array.isArray(array)) {\n if (arrayIdx >= 0 && arrayIdx < array.length) {\n // valid index, continue on the path\n currValue = array[arrayIdx];\n continue;\n }\n }\n\n return undefined;\n } else if (typeof currValue === 'object') {\n currValue = currValue[p];\n }\n }\n return currValue;\n } else {\n return value[path];\n }\n}\n\nexport function flattenObjectKeys(objectModel: any): string[] {\n const flatten = (object: any, parent?: any) => {\n let results: any[] = [];\n for (const key in object) {\n const value = object[key];\n const thisKey = parent ? `${parent}.${key}` : `${key}`;\n\n results = results.concat(isObject(value) ? flatten(value, thisKey) : [[`${thisKey}`, value]]);\n }\n return results;\n };\n\n return flatten(objectModel);\n}\n","import {dateToIsoString} from './date';\nimport {objectDeepCopy} from './object';\n\nexport function escapeHtml(value: string): any {\n return value.replace(/</g, '<').replace(/>/g, '>');\n}\n\nexport function escapeHtmlAny(value?: any): any {\n if (typeof value === 'string') {\n return escapeHtml(value);\n } else if (typeof value === 'object') {\n const escapedValue: any = objectDeepCopy(value, {mapGettersToProperties: true});\n\n for (const key in value) {\n if (typeof value[key] === 'string') {\n escapedValue[key] = escapeHtml(value[key]);\n } else if (typeof value[key] === 'object') {\n escapedValue[key] = escapeHtmlAny(value[key]);\n } else {\n escapedValue[key] = value[key];\n }\n }\n return escapedValue;\n }\n\n return value;\n}\n\n/**\n * Stringifies a value - primitives with toString, dates with dateUtil, objects with JSON.stringify.\n * @param value Any value.\n */\nexport function stringify(value: any): string {\n if (value === null) {\n return 'null';\n }\n if (typeof value === 'undefined') {\n return 'undefined';\n }\n // eliminate functions, cause they could fall into objects\n if (typeof value === 'function') {\n return `Function ${value.name ?? 'anonymous'}()`;\n }\n if (typeof value === 'object') {\n // date is object, but would like it in ISO string representation\n if (value instanceof Date) {\n return dateToIsoString(value) ?? 'null';\n }\n try {\n return JSON.stringify(value);\n } catch (e) {\n return value.toString();\n }\n }\n // only primitives should be left to be printed like this (string, number, boolean)\n return value.toString();\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\nimport {stringify} from '../helpers/string';\nimport {LogLevelEnum} from '../log/log.model';\nimport {ACommonsErrorBase, CommonsErrorBaseOptions, CommonsHttpError, CommonsInternalError, ICommonsActionError} from './error.model';\n\n/**\n * Converts RxJS subscription error to CommonsError.\n * @param error Error.\n * @param name Optional name to write in commons error.\n * @param details Optional details of error.\n */\nexport function fromSubscribeError(error: any, name?: string, details?: any): ACommonsErrorBase {\n const opts: CommonsErrorBaseOptions = {\n name,\n details,\n location: window?.location?.href\n };\n\n if (error instanceof HttpErrorResponse) {\n return new CommonsHttpError(error.message ?? 'Http Error occurred', error, opts);\n } else {\n opts.cause = error;\n return new CommonsInternalError(error.message ?? 'Internal Error occurred', opts);\n }\n}\n\n/**\n * Checks if error is Http error (Angular or Commons).\n * @param error\n */\nexport function isHttpErrorResponse(error: any) {\n return error instanceof HttpErrorResponse || error instanceof CommonsHttpError || (error as ICommonsActionError | undefined)?.httpError instanceof HttpErrorResponse;\n}\n\n/**\n * Gets HttpErrorResponse from error (Angular or Commons).\n * @param error Error.\n */\nexport function getHttpErrorResponse(error: any): HttpErrorResponse | null {\n if (error instanceof HttpErrorResponse) {\n return error;\n } else if (error instanceof CommonsHttpError) {\n return error.httpError;\n } else if ((error as ICommonsActionError | undefined)?.httpError instanceof HttpErrorResponse) {\n return error.httpError;\n } else {\n return null;\n }\n}\n\n/**\n * Gets HttpErrorResponse status from error (Angular or Commons).\n * @param error Error.\n */\nexport function getHttpErrorResponseStatus(error: any): number | null {\n return getHttpErrorResponse(error)?.status ?? null;\n}\n\n/**\n * Gets HttpErrorResponse status text from error (Angular or Commons).\n * @param error Error.\n */\nexport function getHttpErrorResponseStatusText(error: any): string | null {\n return getHttpErrorResponse(error)?.statusText ?? null;\n}\n\n/**\n * Get error log level. All is error, except if error is http error with status >=400 and <500.\n * @param error Error.\n */\nexport function getErrorLogLevel(error: any): LogLevelEnum {\n if (isHttpErrorResponse(error)) {\n const status = getHttpErrorResponseStatus(error);\n if (status && status >= 400 && status < 500) {\n return LogLevelEnum.Warning;\n }\n }\n return LogLevelEnum.Error;\n}\n\n/**\n * Get error name (prototype name or type from commons error if name is not provided).\n * @param error Error.\n */\nexport function getErrorName(error: any): string {\n if (error instanceof ACommonsErrorBase) {\n return error.name ?? error.type;\n } else {\n return error.name;\n }\n}\n\n/**\n * Writes http error to string with all headers and body.\n * @param error Http response error.\n * @param opts Options for hiding parts of error:\n * - hideMessage Hides message of error (message include url, status and status text!).\n * - hideHeaders Hides headers.\n * - hideBody Hides JSON representation of body.\n */\nexport function httpErrorResponseToString(error: HttpErrorResponse, opts?: HttpErrorResponseToStringOptionsType): string {\n let str = opts?.hideMessage ? '' : `${error.message}\\n`; // message should already include url, status, etc.\n if (!opts?.hideHeaders) {\n str += `Http Response Headers: ${error.headers.keys().reduce((acc, key) => `${acc}[${key}: ${error.headers.get(key)}]`, '')}`;\n }\n if (!opts?.hideBody) {\n str += `\\nHttp Response Body: ${stringify(error.error)}`;\n }\n return str;\n}\n\n/**\n * Error to string.\n * @param error Error.\n * @param opts Options for hiding parts of error:\n * - hideMessage Hides message of error.\n * - hideName Hides error name.\n * - hideCause Hides cause of an error (if present, see @link(errorCauseToString) for other options).\n * - hideStack Hides stack of an error (if present).\n * - hideDetails Hides JSON detail's representation of error (if present).\n * - hideLocation Hides location (URL) where error was thrown.\n * - hideHttp Hides http error portion of error if http error response (see @link(httpErrorResponseToString) for other options).\n */\nexport function errorToString(error: Error, opts?: ErrorToStringOptionsType): string {\n if (error instanceof ACommonsErrorBase) {\n return commonsErrorToString(error, opts);\n } else if (error instanceof HttpErrorResponse) {\n return httpErrorResponseToString(error, opts);\n }\n\n const strBlocks: string[] = [];\n if (!opts?.hideMessage) {\n strBlocks.push(error.message);\n }\n if (error.name) {\n strBlocks.push(`Error name: ${error.name}`);\n }\n if (!opts?.hideCause) {\n strBlocks.push(errorCauseToString(error, opts));\n }\n if (!opts?.hideStack && error.stack) {\n strBlocks.push(`Stack trace:\\n${error.stack}`);\n }\n\n return strBlocks.filter(s => s.trim().length > 0).join('\\n');\n}\n\n/**\n * Commons error to string.\n * @param error Commons error.\n * @param opts Options for hiding parts of error:\n * - hideMessage Hides message of error.\n * - hideName Hides error name.\n * - hideCause Hides cause of an error (if present, see @link(errorCauseToString) for other options).\n * - hideStack Hides stack of an error (if present).\n * - hideDetails Hides JSON detail's representation of error (if present).\n * - hideLocation Hides location (URL) where error was thrown.\n * - hideHttp Hides http error portion of error if http error response (see @link(httpErrorResponseToString) for other options).\n * - hideItems Hides all item information (http body, action context data).\n * - hideActionData See @link(commonsActionErrorContextToString) for additional info.\n * - hideQueryParams See @link(commonsActionErrorContextToString) for additional info.\n */\nexport function commonsErrorToString(error: ACommonsErrorBase, opts?: ErrorToStringOptionsType): string {\n const strBlocks: string[] = [];\n if (!opts?.hideMessage) {\n strBlocks.push(`${error.message}${error.messageCode ? ` (code: ${error.messageCode})` : ''}`);\n }\n if (!opts?.hideName) {\n strBlocks.push(`Error name: ${error.name ?? error.type} ${error.name ? `(${error.type})` : ''}`);\n }\n if (!opts?.hideLocation && error.location) {\n strBlocks.push(`Location: ${error.location}`);\n }\n\n let isHttp = false;\n if (!opts?.hideHttp && error instanceof CommonsHttpError) {\n strBlocks.push(\n httpErrorResponseToString(error.httpError, {\n hideBody: opts?.hideItems || opts?.hideBody,\n hideHeaders: opts?.hideHeaders,\n hideMessage: error.message.indexOf(error.httpError.message) >= 0\n })\n );\n isHttp = true;\n }\n if (error.type === 'CommonsActionError') {\n const actionError = error as unknown as ICommonsActionError;\n if (actionError.actionContext) {\n strBlocks.push(commonsActionErrorContextToString(actionError, opts));\n }\n if (!opts?.hideHttp && actionError.httpError instanceof HttpErrorResponse) {\n strBlocks.push(\n httpErrorResponseToString(actionError.httpError, {\n hideBody: opts?.hideItems || opts?.hideBody,\n hideHeaders: opts?.hideHeaders,\n hideMessage: error.message.indexOf(actionError.httpError.message) >= 0\n })\n );\n isHttp = true;\n }\n }\n\n if (!opts?.hideDetails && error.details) {\n strBlocks.push(`Details: ${stringify(error.details)}`);\n }\n if (!opts?.hideCause && (!isHttp || !(error.cause instanceof HttpErrorResponse))) {\n strBlocks.push(errorCauseToString(error, opts));\n }\n if (!opts?.hideStack && error.stack) {\n strBlocks.push(`Stack trace:\\n${error.stack}`);\n }\n\n return strBlocks.filter(s => s.trim().length > 0).join('\\n');\n}\n\n/**\n * Writes commons action error info from context as string.\n * @param error Commons action error.\n * @param opts Options for hiding parts of error:\n * - hideItems Hides all item related information (item, form item, submit item, ...).\n * - hideActionData Hides action data.\n * - hideQueryParams Hides query params.\n */\nexport function commonsActionErrorContextToString(error: ICommonsActionError, opts?: ActionErrorContextToStringOptionsType): string {\n let paramsMessage = '';\n if (error.actionContext?.parameters) {\n if (error.actionContext?.parameters.itemId) {\n paramsMessage += `[itemId: ${error.actionContext.parameters.itemId}]`;\n }\n if (!opts?.hideItems && error.actionContext?.parameters.item) {\n paramsMessage += `[item: ${stringify(error.actionContext.parameters.item)}]`;\n }\n if (!opts?.hideActionData && error.actionContext?.parameters.actionData) {\n paramsMessage += Object.entries(error.actionContext?.parameters.actionData).reduce((acc, [key, value]) => `${acc}[actionData ${key}: ${stringify(value)}]`, '');\n }\n if (!opts?.hideQueryParams && error.actionContext?.parameters.dataListParams) {\n paramsMessage += `[dataListParams: ${stringify(error.actionContext.parameters.dataListParams)}]`;\n }\n if (!opts?.hideItems && error.actionContext?.parameters.formItem) {\n paramsMessage += `[formItem: ${stringify(error.actionContext.parameters.formItem)}]`;\n }\n if (!opts?.hideItems && error.actionContext?.parameters.submitResult) {\n paramsMessage += `[formItem: ${stringify(error.actionContext.parameters.submitResult)}]`;\n }\n if (error.actionContext?.parameters.locale) {\n paramsMessage += `[locale: ${stringify(error.actionContext.parameters.locale)}]`;\n }\n }\n\n return paramsMessage;\n}\n\n/**\n * Writes cause of an error as string.\n * @param error Error.\n * @param opts Options for hiding parts of error:\n * - causeOnErrorOnly Prints only if cause is instance of error.\n * - causeAsJson Print error cause as a JSON (by default, if error only message and name will be printed).\n */\nexport function errorCauseToString(error: Error, opts?: ErrorCauseToStringOptionsType): string {\n // if already logged as http error, check that cause is not also http error (cause it is usually duplicated)\n if (error.cause && (!opts?.causeOnErrorOnly || error.cause instanceof Error)) {\n const needsStringify = opts?.causeAsJson || !(error.cause instanceof Error);\n if (!opts?.causeOnErrorOnly || error.cause instanceof Error) {\n return (\n 'Caused by: ' +\n (needsStringify ? stringify(error.cause) : `${(error.cause as Error).message}${(error.cause as Error).name ? ` (${(error.cause as Error).name})` : ''}`)\n );\n }\n }\n return '';\n}\n\n/**\n * Throws an error with the provided error message.\n * The intended usage is for in-line throwing of an error with TS type narrowing.\n * <br>\n * <i>Example</i>:\n * <pre>\n * const value: string | null = getValue(\"\");\n * const nonNullValue: string = getValue(\"\") ?? throwError(\"value missing\");\n * </pre>\n *\n * @param {string} errorMessage - The error message to be thrown.\n * @param {CommonsErrorBaseOptions} [options] - Additional options for the thrown error.\n * @throws {Error} - The error object with the provided error message.\n * @returns {never} - This function does not return a value.\n * @see CommonsErrorBaseOptions\n */\nexport function throwError(errorMessage: string, options?: CommonsErrorBaseOptions): never {\n throw new CommonsInternalError(errorMessage, options);\n}\n\nexport type ErrorToStringOptionsType = ErrorToStringOptionsBaseType &\n HttpErrorResponseToStringOptionsType &\n ActionErrorContextToStringOptionsType &\n ErrorCauseToStringOptionsType & {\n hideDetails?: boolean;\n hideLocation?: boolean;\n };\n\nexport interface ErrorToStringOptionsBaseType {\n hideName?: boolean;\n hideStack?: boolean;\n hideCause?: boolean;\n hideHttp?: boolean;\n}\n\nexport interface HttpErrorResponseToStringOptionsType {\n hideMessage?: boolean;\n hideHeaders?: boolean;\n hideBody?: boolean;\n}\n\nexport interface ActionErrorContextToStringOptionsType {\n hideItems?: boolean;\n hideActionData?: boolean;\n hideQueryParams?: boolean;\n}\n\nexport interface ErrorCauseToStringOptionsType {\n causeOnErrorOnly?: boolean;\n causeAsJson?: boolean;\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {ErrorHandler} from '@angular/core';\n\nimport {LoggerService} from '../log/logger.service';\nimport {getErrorLogLevel} from './error-helpers';\nimport {ACommonsErrorBase} from './error.model';\n\nexport class CommonsErrorHandler implements ErrorHandler {\n private static readonly logCategory = 'ErrorHandler';\n private readonly logger = LoggerService.get();\n\n handleError(error: Error) {\n if (error instanceof ACommonsErrorBase || error instanceof HttpErrorResponse) {\n const logLevel = getErrorLogLevel(error);\n this.logger.log(error, logLevel);\n } else {\n this.logger.error('Unexpected error occurred', error);\n }\n }\n}\n","import {booleanAttribute, numberAttribute} from '@angular/core';\n\nimport {Observable, isObservable, of} from 'rxjs';\n\nimport {CommonsInternalError} from '../error/error.model';\nimport {IdType, Nullable} from './type-helpers';\n\nexport function boolean$Attribute(value: unknown): Observable<boolean> {\n return isObservable(value) ? (value as Observable<boolean>) : of(booleanAttribute(value));\n}\n\nexport function booleanOrUndefinedAttribute(value: unknown): boolean | undefined {\n return typeof value === 'boolean' ? value : value == null ? undefined : value !== 'false';\n}\n\nexport function number$Attribute(value: unknown): Observable<number> {\n return isObservable(value) ? (value as Observable<number>) : of(numberAttribute(value));\n}\n\nexport const toObservable = <T>(value: T | Observable<T>): Observable<T> => {\n return isObservable(value) ? (value as Observable<T>) : of(value);\n};\n\nexport const itemIdToNumber = (value?: IdType): number => {\n if (typeof value === 'number') {\n return value;\n } else if (typeof value === 'string') {\n const num = +value;\n if (!isNaN(num)) {\n return num;\n }\n throw new CommonsInternalError(`ItemId is a string, but could not be transformed to number: ${value}`);\n } else {\n throw new CommonsInternalError(`ItemId is not a number: ${value}`);\n }\n};\n\nexport const itemIdToString = (value?: IdType): string => {\n if (typeof value === 'string') {\n return value;\n } else {\n throw new CommonsInternalError(`ItemId is not a string: ${value}`);\n }\n};\n\nexport const itemIdToDefined = (value?: IdType): IdType => {\n if (typeof value === 'undefined') {\n throw new CommonsInternalError(`ItemId is not defined: ${value}`);\n } else {\n return value;\n }\n};\n\nexport const valueToDefined = <T>(value: Nullable<T>): T => {\n if (typeof value === 'undefined' || value === null) {\n throw new CommonsInternalError(`Value is null or not defined: ${value}`);\n } else {\n return value;\n }\n};\n","import {Message, MessageService} from 'primeng/api';\n\nexport function toastMessage(messageService: MessageService, title?: string, message?: string, severity: 'success' | 'warn' | 'error' = 'success', icon?: string): Message {\n const notification: Message = {severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000, icon: icon};\n messageService.add(notification);\n return notification;\n}\n","export function fromAngularNumberFormatToFractions(format: string): {\n integer: number;\n fractionsMin: number;\n fractionsMax: number;\n} {\n const hasDot = format.indexOf('.') >= 0;\n const hasDash = format.indexOf('-') >= 0;\n const [intPart, decPart] = format.split('.');\n let int = hasDot || (!hasDot && !hasDash) ? +intPart : 1;\n if (!int || isNaN(int)) int = 1;\n let [fractionsMin, fractionsMax] = !hasDot && !hasDash ? [0, 0] : (hasDot ? decPart : intPart).split('-').map(f => +f);\n if (isNaN(fractionsMin)) fractionsMin = 0;\n if (fractionsMax == null || isNaN(fractionsMax)) fractionsMax = fractionsMin;\n return {\n integer: int,\n fractionsMin: fractionsMin,\n fractionsMax: fractionsMax\n };\n}\n","import {MenuItem as PrimeMenuItem} from 'primeng/api';\n\nimport {CommonsInternalError} from '../error/error.model';\nimport {CommonsMenuItem, InternalCommonsMenuItem} from '../models/menu.model';\n\nexport function removeRouteEmptyPathSegments(path: Array<string>) {\n const filteredPath = path.filter(ps => typeof ps === 'string' && ps.length > 0);\n return filteredPath.length > 0 ? filteredPath : [''];\n}\n\nexport function appendRoutePathToBasePath(basePath: Array<string>, path: Array<string>) {\n if (path.length > 0) {\n if (path[0].startsWith('/')) {\n return path;\n } else if (path[0].startsWith('../')) {\n throw new CommonsInternalError('Not implemented', {name: 'RouteUtilsError'});\n } else {\n return removeRouteEmptyPathSegments([...basePath, ...path]);\n }\n } else {\n return basePath;\n }\n}\n\nexport function doesUrlMatchRouterLink(link: Array<string> | string, url: Array<string> | string) {\n if (typeof url === 'string' && url.startsWith('/')) {\n url = url.substring(1);\n } else if (Array.isArray(url) && url.length > 0 && url[0].startsWith('/')) {\n url[0] = url[0].substring(1);\n }\n\n const routeSegments = Array.isArray(link) ? link : link.split('/');\n const urlSegments = Array.isArray(url) ? url : url.split('#')[0].split('?')[0].split('/');\n\n if (routeSegments.length > 0 && urlSegments.length > 0) {\n for (let i = 0; i < routeSegments.length; i++) {\n if (i < urlSegments.length) {\n if (routeSegments[i] !== urlSegments[i]) {\n return false;\n }\n } else {\n break;\n }\n }\n return true;\n }\n return false;\n}\n\nexport function adjustRouteMenuLazyChildrenRouterLinks(rootMenuItem: PrimeMenuItem | InternalCommonsMenuItem, lazyChildren: Array<CommonsMenuItem>) {\n return lazyChildren.map(i => {\n const childMenuItem = {...i};\n if (childMenuItem.routerLink) {\n childMenuItem.routerLink = appendRoutePathToBasePath(\n rootMenuItem.routerLink,\n typeof childMenuItem.routerLink === 'string' ? [childMenuItem.routerLink] : childMenuItem.routerLink\n );\n }\n if (Array.isArray(childMenuItem.items)) {\n childMenuItem.items = adjustRouteMenuLazyChildrenRouterLinks(rootMenuItem, childMenuItem.items);\n }\n return childMenuItem;\n });\n}\n","import {TemplateRef} from '@angular/core';\n\nimport {TemplateDirective} from '../directives/template.directive';\n\nexport function findTemplateByName(templates: TemplateDirective[], name: string): TemplateRef<any> | null {\n return templates.find(t => t.getType() === name)?.template ?? null;\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nexport function getI18nAsync(translate: TranslateService, params?: any, ...keys: Array<string>): Observable<string | null> {\n return translate.stream(keys, params).pipe(map(i18n => selectI18n(keys, i18n)));\n}\n\nexport function getI18n(translate: TranslateService, params?: any, ...keys: Array<string>): string | null {\n const i18n = translate.instant(keys, params);\n return selectI18n(keys, i18n);\n}\n\nexport function populateI18nParams(item?: any, params: any = {}) {\n const paramsRes = {...params};\n if (item) {\n paramsRes.item = item;\n }\n return paramsRes;\n}\n\nexport function selectI18n(keys: string[], i18n: any): string | null {\n for (const key of keys) {\n if (key !== i18n[key]) {\n return i18n[key];\n }\n }\n return null;\n}\n","import {TranslateService} from '@ngx-translate/core';\n\nimport {getHttpErrorResponse, isHttpErrorResponse} from '../error/error-helpers';\nimport {ICommonsError} from '../error/error.model';\nimport {getI18n} from './i18n-common';\n\nexport function getI18nForError(translate: TranslateService, error: ICommonsError, params: any = {}): string | null {\n const i18nParams = getI18nErrorParams(error, params);\n if (error.messageCode) {\n const keys = [`errors.${error.messageCode}`, `messages.${error.messageCode}`];\n const i18n = getI18n(translate, i18nParams, ...keys);\n if (i18n) {\n return i18n;\n }\n }\n return getI18n(translate, i18nParams, error.message);\n}\n\nexport function getI18nErrorParams(error: ICommonsError, params: any = {}) {\n const paramsRes = {...params};\n paramsRes.errorStatus = '';\n paramsRes.errorMessage = '';\n\n if (isHttpErrorResponse(error)) {\n const httpError = getHttpErrorResponse(error);\n paramsRes.errorStatus = httpError?.status;\n paramsRes.errorMessage = httpError?.message;\n paramsRes.errorStatusDescription = httpError?.statusText;\n }\n\n paramsRes.error = error;\n return paramsRes;\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {getI18n, getI18nAsync, populateI18nParams} from './i18n-common';\n\nexport function getI18nTypeNameAsync(translate: TranslateService, typeName: string, singular?: boolean): Observable<string | null> {\n const keys = getI18nTypeNameKeys(typeName, singular);\n return getI18nAsync(translate, undefined, ...keys);\n}\n\nexport function getI18nTypeName(translate: TranslateService, typeName: string, singular?: boolean): string | null {\n const keys = getI18nTypeNameKeys(typeName, singular);\n return getI18n(translate, undefined, ...keys);\n}\n\nexport function getI18nTypeTabKey(typeName: string, tab: string): string {\n return getI18nTypeKeyBasePath(typeName, 'tabs', tab);\n}\n\nexport function getI18nTypeGroupKey(typeName: string, group: string): string {\n return getI18nTypeKeyBasePath(typeName, 'groups', group);\n}\n\nexport function getI18nTypePropertyKey(typeName: string, property: string): string {\n return getI18nTypeKeyBasePath(typeName, 'properties', property);\n}\n\nexport function getI18nTypeKeyBasePath(typeName: string, ...path: Array<string>): string {\n return `${typeName.length ? `${typeName}.` : ''}${path.join('.')}`;\n}\n\nexport function getI18nTypeParams(translate: TranslateService, typeName?: string, item?: any, params: any = {}): any {\n const i18nTypeName = typeName ? getI18nTypeName(translate, typeName, true) : null;\n return populateI18nTypeParams(i18nTypeName ?? undefined, item, params);\n}\n\nexport function getI18nTypeParamsAsync(translate: TranslateService, typeName?: string, item?: any, params: any = {}): Observable<any> {\n return (typeName ? getI18nTypeNameAsync(translate, typeName, true) : of(null)).pipe(map(i18nTypeName => populateI18nTypeParams(i18nTypeName ?? undefined, item, params)));\n}\n\nexport function populateI18nTypeParams(i18nTypeName?: string, item?: any, params: any = {}): any {\n const paramsRes = {...params};\n if (i18nTypeName) {\n paramsRes.typeName = i18nTypeName;\n }\n return populateI18nParams(item, paramsRes);\n}\n\nfunction getI18nTypeNameKeys(typeName: string, singular?: boolean): Array<string> {\n const keys = [];\n if (typeof singular !== 'undefined') {\n keys.push(singular ? `${typeName}.nameSingular` : `${typeName}.namePlural`);\n }\n keys.push(`${typeName.length ? `${typeName}.` : ''}name`);\n return keys;\n}\n","/* eslint-disable no-console */\nimport {getErrorName} from '../error/error-helpers';\nimport {ILogPublisher, LogEntry, LogLevelEnum} from './log.model';\n\nexport class LogPublisherConsoleService implements ILogPublisher {\n addEntry(entry: LogEntry): void {\n let prefix = `${entry.timestampFormatted}`;\n if (entry.category) prefix += ` [${entry.category}]`;\n prefix += ':';\n\n const message = `${entry.message}${entry.messageDetails ? `\\n${entry.messageDetails}` : ''}`;\n const logParams: any[] = [prefix, message];\n if (entry.error) {\n logParams.push(`\\n${getErrorName(entry.error)}:`, entry.error);\n }\n if (entry.data?.length) {\n logParams.push(`\\nData:\\n`, ...entry.data);\n }\n\n switch (entry.level) {\n case LogLevelEnum.Trace:\n console.trace(...logParams);\n break;\n case LogLevelEnum.Debug:\n console.debug(...logParams);\n break;\n case LogLevelEnum.Log:\n console.log(...logParams);\n break;\n case LogLevelEnum.Info:\n console.info(...logParams);\n break;\n case LogLevelEnum.Warning:\n console.warn(...logParams);\n break;\n case LogLevelEnum.Error:\n console.error(...logParams);\n break;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'mngBoolean',\n pure: true\n})\nexport class BooleanPipe implements PipeTransform {\n transform(value: any, yes?: string, no?: string, icon = false): any {\n if (typeof value === 'string') {\n value = value.toLowerCase() === 'true';\n } else if (typeof value === 'number') {\n value = value === 1;\n }\n if (typeof value === 'boolean') {\n if (icon) {\n return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';\n } else {\n return value ? yes ?? 'general.yes' : no ?? 'general.no';\n }\n } else {\n return value;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'mngClassMap',\n pure: true\n})\nexport class ClassMapPipe<T> implements PipeTransform {\n transform(className?: string, classNameMapFn?: (className?: string, item?: T) => string, item?: T): string {\n if (classNameMapFn && typeof classNameMapFn === 'function') {\n return classNameMapFn(className, item);\n } else {\n return className ?? '';\n }\n }\n}\n","import 'reflect-metadata';\n\nimport {EnumType} from '../helpers/type-helpers';\nimport {LoggerService} from '../log/logger.service';\nimport {ClassType} from '../models/class-service.model';\n\nexport const reflectTypeNameKey = 'typeName';\nexport const reflectEnumNameKey = 'enumName';\n\n/**\n * Defines type name decorator.\n * @param targetType class.\n * @param typeName Name of the type.\n */\nexport function defineReflectTypeName(targetType: ClassType<any>, typeName: string) {\n if (!Reflect.hasOwnMetadata(reflectTypeNameKey, targetType)) {\n Reflect.defineMetadata(reflectTypeNameKey, typeName, targetType);\n }\n}\n\n/**\n * Defines enum name decorator.\n * @param targetType enum object.\n * @param enumName Name of the enum.\n */\nexport function defineReflectEnumName(targetType: EnumType, enumName: string) {\n if (!Reflect.hasOwnMetadata(reflectEnumNameKey, targetType)) {\n Reflect.defineMetadata(reflectEnumNameKey, enumName, targetType);\n }\n}\n\n/**\n * Gets type name from reflect metadata.\n * @param type Class.\n */\nexport function findReflectTypeName<T>(type?: ClassType<T>): string | null {\n if (!type) {\n return null;\n }\n const typeName = Reflect.getMetadata(reflectTypeNameKey, type);\n if (typeName) {\n return typeName;\n }\n LoggerService.get().debug('WARNING: Reflect metadata could not be found for type, you might experience some issues in production build.', type?.name);\n return type.name;\n}\n\n/**\n * Gets type name from either decorator or reflect metadata.\n * @param type Class.\n */\nexport function reflectTypeNameExists(type: ClassType<any>): boolean {\n return Reflect.hasOwnMetadata(reflectTypeNameKey, type);\n}\n\n/**\n * Gets enum name from either decorator or reflect metadata.\n * @param enumType Class.\n */\nexport function findReflectEnumName(enumType: EnumType): string | null {\n const enumName = Reflect.getMetadata(reflectEnumNameKey, enumType);\n if (enumName) {\n return enumName;\n }\n LoggerService.get().debug(`WARNING: Reflect metadata could not be found for enum ${typeof enumType === 'object' ? Object.keys(enumType) : enumType}`, {\n name: 'TypeUtilsError',\n enumType: enumType\n });\n return null;\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {IEnumDescriptor} from '../descriptors/enum.descriptor';\nimport {getEnumConstantNameFromObject, getEnumConstantValues} from '../enum/enum-helpers';\nimport {EnumType} from '../helpers/type-helpers';\nimport {findReflectEnumName} from '../reflect/type-enum-metadata';\n\n@Pipe({\n standalone: true,\n name: 'mngEnum',\n pure: true\n})\nexport class EnumPipe implements PipeTransform {\n transform(value: unknown, enumDesc?: IEnumDescriptor, i18nPath?: string | null): any {\n if (value == null || (typeof value !== 'number' && typeof value !== 'string') || !enumDesc) {\n return value;\n }\n\n const enumValue = enumDesc.nameAsValue ? value : getEnumConstantNameFromObject(enumDesc.type, value);\n if (enumValue == null) {\n // no constant name found (probably not enum), return value\n return value;\n }\n if (enumDesc.nameAsValue) {\n // check if value exists in enum if nameAsValue is used\n const enumValueCheck = getEnumConstantValues(enumDesc.type).find(v => v === enumValue);\n if (enumValueCheck == null) {\n return value;\n }\n }\n if (typeof i18nPath === 'undefined' && enumDesc) {\n i18nPath = enumDesc.i18nBaseKey ?? findReflectEnumName(enumDesc.type as EnumType);\n }\n return i18nPath ? `${i18nPath}.${enumValue}` : enumValue;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {getObjectPropertyByPath} from '../helpers/object';\n\n/**\n * Imitation of JSONPath Syntax. Supports:\n * - Root object notation with '$'\n * - Dot notation (e.g.: $.foo.bar), no bracket notation for properties\n * - Array notation (e.g.: [0])\n */\n@Pipe({\n standalone: true,\n name: 'mngJsonPath',\n pure: true\n})\nexport class JsonPathPipe implements PipeTransform {\n transform(value: any, path = ''): any {\n return getObjectPropertyByPath(value, path);\n }\n}\n","import {Pipe, PipeTransform, inject} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {JsonPathPipe} from './json-path.pipe';\n\n@Pipe({\n standalone: true,\n name: 'mngEnumerate',\n pure: true\n})\nexport class EnumeratePipe implements PipeTransform {\n private readonly translate = inject(TranslateService);\n\n transform<T>(value: Array<T> | Set<T>, jsonPath = '$', valueSeparator = ', ', emptyValueReturn = '/', i18nBaseKey = ''): string {\n if (!value) {\n return emptyValueReturn;\n }\n i18nBaseKey = getEnumerationI18nBaseKey(i18nBaseKey);\n return Array.from(value)\n .map(i => {\n const itemEnumerate = toEnumerationI18nEnumerate(i, jsonPath, i18nBaseKey);\n itemEnumerate.i18n = this.translate.instant(itemEnumerate.i18nKey);\n // return i18n only if used and transl. was found\n return selectEnumerationI18n(itemEnumerate, i18nBaseKey);\n })\n .join(valueSeparator);\n }\n}\n\nexport function getEnumerationI18nBaseKey(baseKey: string): string {\n return baseKey.endsWith('.') ? baseKey?.substring(0, baseKey.length - 1) : baseKey;\n}\n\nexport function selectEnumerationI18n(value: EnumeratePipeI18nInternal, baseKey: string): string {\n return baseKey && value.i18nKey === value.i18n ? value.value : value.i18n;\n}\n\nexport function toEnumerationI18nEnumerate(value: unknown, jsonPath: string, baseKey: string): EnumeratePipeI18nInternal {\n const valueTrans = new JsonPathPipe().transform(value, jsonPath);\n const valueAsString = valueTrans.toString();\n return <EnumeratePipeI18nInternal>{\n value: valueAsString,\n i18nKey: baseKey ? `${baseKey}.${valueAsString}` : valueAsString,\n i18n: valueAsString\n };\n}\n\nexport interface EnumeratePipeI18nInternal {\n value: string;\n i18nKey: string;\n i18n: string;\n}\n","import {Pipe, PipeTransform, inject} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, combineLatest, mergeMap, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {getEnumerationI18nBaseKey, selectEnumerationI18n, toEnumerationI18nEnumerate} from './enumerate.pipe';\n\n@Pipe({\n standalone: true,\n name: 'mngEnumerateAsync',\n pure: true\n})\nexport class EnumerateAsyncPipe implements PipeTransform {\n private readonly translate = inject(TranslateService);\n\n transform(value: Observable<Array<unknown> | Set<unknown>>, jsonPath = '$', valueSeparator = ', ', emptyValueReturn = '/', i18nBaseKey = ''): Observable<string> {\n i18nBaseKey = getEnumerationI18nBaseKey(i18nBaseKey);\n return value.pipe(\n mergeMap(v => {\n if (!v) {\n return of([emptyValueReturn]);\n }\n return combineLatest(\n Array.from(v)\n .map(ai => toEnumerationI18nEnumerate(ai, jsonPath, i18nBaseKey))\n .map(i =>\n this.translate.stream(i.i18nKey).pipe(\n map((i18n: string) => {\n i.i18n = i18n;\n return selectEnumerationI18n(i, i18nBaseKey);\n })\n )\n )\n );\n }),\n map(i => i.join(valueSeparator))\n );\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {GetterFn} from '../models/getter.model';\n\n@Pipe({\n standalone: true,\n name: 'mngGetter',\n pure: true\n})\nexport class GetterPipe implements PipeTransform {\n transform(value: unknown, getterFn?: GetterFn, item?: unknown): any {\n if (typeof getterFn === 'function') {\n return getterFn(item, value);\n }\n\n return value;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {IModelDescriptor} from '../descriptors/model.descriptor';\nimport {getI18nTypePropertyKey} from '../i18n/i18n-type';\n\n@Pipe({\n standalone: true,\n name: 'mngI18nProperty',\n pure: true\n})\nexport class I18nPropertyPipe implements PipeTransform {\n transform(property: string, model: IModelDescriptor<any>): any {\n return getI18nTypePropertyKey(model.i18nBaseKey, property);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {escapeHtmlAny} from '../helpers/string';\nimport {IdType} from '../helpers/type-helpers';\nimport {JsonPathPipe} from './json-path.pipe';\n\n@Pipe({\n standalone: true,\n name: 'mngParametrize',\n pure: true\n})\nexport class ParametrizePipe implements PipeTransform {\n private jsonPath = new JsonPathPipe();\n\n transform(value: unknown, itemId?: IdType, item?: any, data?: Record<string, any>): any {\n let params: any = {};\n if (data) {\n params = {\n ...params,\n ...data\n };\n }\n if (item) {\n params = {\n ...params,\n item: escapeHtmlAny(item)\n };\n }\n if (itemId) {\n params = {\n ...params,\n itemId: itemId\n };\n }\n\n if (typeof value === 'string') {\n return this.transformString(value, params);\n } else if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {\n return value.map((s: string) => this.transformString(s, params));\n } else if (typeof value === 'object') {\n // process only first level citizens\n const obj: any = {...value};\n for (const key in obj) {\n const objProp = obj[key];\n if (typeof objProp === 'string') {\n obj[key] = this.transformString(objProp, params);\n }\n }\n return obj;\n } else {\n return value;\n }\n }\n\n private transformString(s: string, params: any) {\n if ((s.indexOf('/') >= 0 && s.indexOf(':') >= 0 && !s.startsWith('http://') && !s.startsWith('https://')) || s.startsWith(':')) {\n // this is router link\n return s\n .split('/')\n .map(s => this.parametrizeStringAsRouterLink(s, params))\n .join('/');\n } else {\n // parametrize normally\n return this.parametrizeString(s, params);\n }\n }\n\n private parametrizeStringAsRouterLink(s: string, params: any): any {\n if (s.startsWith(':')) {\n const itemProperty = s.substring(1);\n return this.jsonPath.transform(params, itemProperty) ?? '';\n } else {\n return s;\n }\n }\n\n private parametrizeString(s: string, params: any): any {\n return s.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (subs: string, key: string) => this.jsonPath.transform(params, key) ?? subs);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ParametrizePipe} from './parametrize.pipe';\n\n@Pipe({\n standalone: true,\n name: 'template',\n pure: true\n})\nexport class TemplatePipe implements PipeTransform {\n private parametrizePipe = new ParametrizePipe();\n\n transform(value: unknown, template?: string): any {\n if (typeof template === 'string') {\n return this.parametrizePipe.transform(template, undefined, value);\n }\n\n return value;\n }\n}\n","import {defineReflectEnumName, defineReflectTypeName} from './type-enum-metadata';\n\nexport function TypeName(typeName: string): ClassDecorator {\n return function (target: any) {\n defineReflectTypeName(target, typeName);\n };\n}\n\nexport function EnumName(typeName: string): ClassDecorator {\n return function (target: any) {\n defineReflectEnumName(target, typeName);\n };\n}\n","import {EnumType} from '../helpers/type-helpers';\nimport {LogLevelEnum} from '../log/log.model';\nimport {LoggerService} from '../log/logger.service';\nimport {ClassAttributeDef} from '../models/class-attribute.model';\nimport {ClassType} from '../models/class-service.model';\nimport {defineReflectEnumName, defineReflectTypeName, findReflectTypeName, reflectTypeNameExists} from '../reflect/type-enum-metadata';\nimport {RegistryEnumMap, RegistryTypeMap} from './registry.model';\n\nexport class TypeRegistry {\n private static _instance: TypeRegistry = new TypeRegistry();\n private readonly _logCategory = 'TypeRegistry';\n private readonly _typeMap: RegistryTypeMap = {};\n private readonly _enumMap: RegistryEnumMap = {};\n\n public get typeMap() {\n return this._typeMap;\n }\n\n public get enumMap() {\n return this._enumMap;\n }\n\n /**\n * Only use one instance of object (out of Angular context)\n */\n public static get(): TypeRegistry {\n return TypeRegistry._instance;\n }\n\n public findAttributeDefinitionByClassType(type: ClassType<any>, attributeName: string): ClassAttributeDef | null {\n const typeName = findReflectTypeName(type);\n return typeName ? this.findAttributeDefinition(typeName, attributeName) : null;\n }\n\n public findAttributeDefinition(typeName: string, attributeName: string): ClassAttributeDef | null {\n const attributeDefs = this.findAttributesDefinition(typeName);\n if (!attributeDefs) {\n return null;\n }\n for (const attribute of attributeDefs) {\n if (attribute.name === attributeName) {\n return attribute;\n }\n }\n return null;\n }\n\n public findAttributesDefinitionByClassType(type: ClassType<any>): Array<ClassAttributeDef> | null {\n const typeName = findReflectTypeName(type);\n return typeName ? this.findAttributesDefinition(typeName) : null;\n }\n\n public findAttributesDefinition(typeName: string): Array<ClassAttributeDef> | null {\n const typeDef = this.findType(typeName);\n if (!typeDef || typeof typeDef.getAttributeTypeMap !== 'function') {\n return null;\n }\n return typeDef.getAttributeTypeMap() as Array<ClassAttributeDef>;\n }\n\n public findByClassType(type: ClassType<any>): any {\n const typeName = findReflectTypeName(type);\n return typeName ? this.findType(typeName) : null;\n }\n\n public findType(typeName: string): any {\n return this._typeMap[typeName];\n }\n\n public findEnum(enumName: string): any {\n return this._enumMap[enumName];\n }\n\n public registerTypes(types: RegistryTypeMap) {\n for (const key in types) {\n this.registerType(types[key], key);\n }\n }\n\n public registerType(type: ClassType<any>, optTypeName?: string) {\n // try to find name from metadata\n let typeName: string | undefined;\n if (reflectTypeNameExists(type)) {\n // defined name from optional type name\n typeName = findReflectTypeName(type) ?? undefined;\n } else if (optTypeName) {\n typeName = optTypeName;\n // register metadata\n defineReflectTypeName(type, typeName);\n }\n\n if (!typeName) {\n // this._logger.debug(`WARNING: registering type ${type} failed, because typeName could not be determined and optional name was not provided.`);\n LoggerService.get().log(\n `WARNING: registering type ${type} failed, because typeName could not be determined and optional name was not provided.`,\n LogLevelEnum.Debug,\n this._logCategory\n );\n return;\n }\n if (typeof this._typeMap[typeName] !== 'undefined') {\n // this._logger.debug(`WARNING: registering type ${type} under key ${typeName} skipped, because type already exists for this key.`);\n LoggerService.get().log(\n `WARNING: registering type ${type} under key ${typeName} skipped, because type already exists for this key.`,\n LogLevelEnum.Debug,\n this._logCategory\n );\n } else {\n this._typeMap[typeName] = type;\n }\n }\n\n public registerEnums(enums: RegistryEnumMap) {\n for (const key in enums) {\n this.registerEnum(enums[key], key);\n }\n }\n\n public registerEnum(enumType: EnumType, enumName: string) {\n // try to find name from decorator\n defineReflectEnumName(enumType, enumName);\n if (typeof this._enumMap[enumName] !== 'undefined') {\n LoggerService.get().log(`Registering enum ${enumName} skipped, because enum already exists.`, LogLevelEnum.Debug, this._logCategory);\n } else {\n this._enumMap[enumName] = enumType;\n }\n }\n}\n","import {Type} from '@angular/core';\nimport {ActivatedRouteSnapshot} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {ActionParameters} from '../action/action-parameters.model';\nimport {IDataProvider} from '../data-providers/base.data-provider';\nimport {IActionDescriptor} from '../descriptors/action.descriptor';\nimport {CommonsMenuItem} from '../models/menu.model';\n\nexport enum PermissionTypeEnum {\n All = 'ALL',\n Any = 'ANY',\n Rbac = 'ROLE_BASED_ACCESS_CONTROL',\n Service = 'SERVICE'\n}\n\nexport interface IActionContextValidation<Item, Service = undefined> {\n descriptor: IActionDescriptor<Item, Service>;\n parameters: ActionParameters<Item>;\n serviceInstance: Service;\n dataProvider?: IDataProvider<Item, Service>;\n}\n\nexport interface IPermissionService {\n /**\n * Determines whether a route can be activated.\n *\n * @param {ActivatedRouteSnapshot} route - The route snapshot object representing the current route for activation.\n *\n * @returns {Observable<boolean>} - An observable that emits a boolean value indicating whether the route can be activated.\n */\n canActivateRoute(route?: ActivatedRouteSnapshot): Observable<boolean>; //check guards\n\n /**\n * Determines the visibility of menu item.\n *\n * @param {CommonsMenuItem} menuItem - The menu item to check.\n * @return {Observable<boolean>} - An observable that emits a boolean indicating\n * whether the menu item is visible or not.\n */\n isMenuitemVisible(menuItem: CommonsMenuItem): Observable<boolean>;\n\n /**\n * Determines if the specified action is visible based on the action context and route.\n *\n * @param {IActionContextValidation<any, any>} [actionCtx] - The action context object containing the necessary information for validation.\n * @param {ActivatedRouteSnapshot} [route] - The current route snapshot containing the necessary information for validation.\n *\n * @return {Observable<boolean>} - An Observable that emits the visibility status of the action.\n */\n isActionVisible(actionCtx?: IActionContextValidation<any, any>, route?: ActivatedRouteSnapshot): Observable<boolean>;\n}\n\nexport abstract class APermissions {\n private readonly _authorizationType: PermissionTypeEnum;\n\n constructor(type: PermissionTypeEnum) {\n this._authorizationType = type;\n }\n\n public get authorizationType() {\n return this._authorizationType;\n }\n}\n\nexport namespace Permissions {\n export class All extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(PermissionTypeEnum.All);\n }\n\n public static of(...permissions: Array<APermissions>): All {\n const inst = new All();\n inst.and(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public and(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Any extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(PermissionTypeEnum.Any);\n }\n\n public static of(...permissions: Array<APermissions>): Any {\n const inst = new Any();\n inst.or(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public or(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Roles extends APermissions {\n private _roles: Array<Array<string>> = [];\n\n private constructor() {\n super(PermissionTypeEnum.Rbac);\n }\n\n public static of(...roles: Array<string>): Roles {\n const inst = new Roles();\n inst.or(...roles);\n return inst;\n }\n\n public get roles() {\n return this._roles;\n }\n\n public and(...roles: Array<string>): this {\n if (this._roles.length === 0) {\n this._roles.push([]);\n }\n this._roles[this._roles.length - 1].push(...roles);\n return this;\n }\n\n public or(...roles: Array<string>): this {\n this._roles.push(...roles.map(s => [s]));\n return this;\n }\n }\n\n export class Service extends APermissions {\n private constructor(public readonly service: Type<IPermissionService>) {\n super(PermissionTypeEnum.Service);\n }\n\n public static of(service: Type<IPermissionService>): Service {\n return new Service(service);\n }\n }\n}\n","import {CommonsInternalError} from '../error/error.model';\nimport {APermissions, PermissionTypeEnum, Permissions} from './permissions.model';\n\nexport function isPermitted(permissions: APermissions, userRoles: Array<string>): boolean {\n switch (permissions.authorizationType) {\n case PermissionTypeEnum.Rbac:\n return isRbacPermitted(permissions as Permissions.Roles, userRoles);\n default:\n throw new CommonsInternalError(`Permission type \"${permissions.authorizationType}\" not implemented`);\n }\n}\n\nexport function isRbacPermitted(permissions: Permissions.Roles, userRoles: Array<string>): boolean {\n return permissions.roles.some(prg => prg.every(pr => userRoles.indexOf(pr) > -1));\n}\n","import {Injectable, Injector, inject} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {ActivatedRouteSnapshot} from '@angular/router';\n\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {LoggerService} from '../log/logger.service';\nimport {CommonsMenuItem} from '../models/menu.model';\nimport {CommonsService} from '../services/commons.service';\nimport {isPermitted} from './permission-helpers';\nimport {APermissions, IActionContextValidation, PermissionTypeEnum, Permissions} from './permissions.model';\n\n@Injectable()\nexport class PermissionService {\n private readonly injector = inject(Injector);\n private readonly commons = inject(CommonsService);\n private readonly logger = inject(LoggerService).create('AuthorizationService');\n\n private userRoles$ = toObservable(this.commons.userRoles);\n\n public canActivateRoute(permissions: APermissions, route?: ActivatedRouteSnapshot): Observable<boolean> {\n switch (permissions.authorizationType) {\n case PermissionTypeEnum.All:\n return this.canActivateRouteAll(permissions as Permissions.All, route);\n case PermissionTypeEnum.Any:\n return this.canActivateRouteAny(permissions as Permissions.Any, route);\n case PermissionTypeEnum.Service:\n return this.canActivateRouteService(permissions as Permissions.Service, route);\n default:\n return this.userRoles$.pipe(map(ur => isPermitted(permissions, ur)));\n }\n }\n\n private canActivateRouteAll(permission: Permissions.All, route?: ActivatedRouteSnapshot) {\n return combineLatest(permission.permissions.map(p => this.canActivateRoute(p, route))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private canActivateRouteAny(permissions: Permissions.Any, route?: ActivatedRouteSnapshot) {\n return combineLatest(permissions.permissions.map(p => this.canActivateRoute(p, route))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private canActivateRouteService(permission: Permissions.Service, route?: ActivatedRouteSnapshot) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n this.logger.debug(`WARNING: Service instance could not be retrieved for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.canActivateRoute(route);\n }\n\n public isMenuItemVisible(permissions: APermissions, menuItem: CommonsMenuItem): Observable<boolean> {\n switch (permissions.authorizationType) {\n case PermissionTypeEnum.All:\n return this.isMenuItemVisibleAll(permissions as Permissions.All, menuItem);\n case PermissionTypeEnum.Any:\n return this.isMenuItemVisibleAny(permissions as Permissions.Any, menuItem);\n case PermissionTypeEnum.Service:\n return this.isMenuItemVisibleService(permissions as Permissions.Service, menuItem);\n default:\n return this.userRoles$.pipe(map(role => isPermitted(permissions, role)));\n }\n }\n\n private isMenuItemVisibleAll(permission: Permissions.All, menuItem: CommonsMenuItem) {\n return combineLatest(permission.permissions.map(p => this.isMenuItemVisible(p, menuItem))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private isMenuItemVisibleAny(permission: Permissions.Any, menuItem: CommonsMenuItem) {\n return combineLatest(permission.permissions.map(p => this.isMenuItemVisible(p, menuItem))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private isMenuItemVisibleService(permission: Permissions.Service, menuItem: CommonsMenuItem) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.isMenuitemVisible(menuItem);\n }\n\n public isActionVisible(permissions: APermissions, actionCtx?: IActionContextValidation<any, any>, route?: ActivatedRouteSnapshot): Observable<boolean> {\n switch (permissions.authorizationType) {\n case PermissionTypeEnum.All:\n return this.isActionVisibleAll(permissions as Permissions.All, actionCtx, route);\n case PermissionTypeEnum.Any:\n return this.isActionVisibleAny(permissions as Permissions.Any, actionCtx, route);\n case PermissionTypeEnum.Service:\n return this.isActionVisibleService(permissions as Permissions.Service, actionCtx, route);\n default:\n return this.userRoles$.pipe(map(ur => isPermitted(permissions, ur)));\n }\n }\n\n private isActionVisibleAll(permission: Permissions.All, actionCtx?: IActionContextValidation<unknown, unknown>, route?: ActivatedRouteSnapshot) {\n return combineLatest(permission.permissions.map(p => this.isActionVisible(p, actionCtx, route))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private isActionVisibleAny(permission: Permissions.Any, actionCtx?: IActionContextValidation<unknown>, route?: ActivatedRouteSnapshot) {\n return combineLatest(permission.permissions.map(p => this.isActionVisible(p, actionCtx, route))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private isActionVisibleService(permission: Permissions.Service, actionCtx?: IActionContextValidation<unknown>, route?: ActivatedRouteSnapshot) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.isActionVisible(actionCtx, route);\n }\n}\n","import {inject} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivateFn, UrlTree} from '@angular/router';\n\nimport {Observable, of} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {CommonsRouteData} from '../router/router.model';\nimport {PermissionService} from './permission.service';\n\nexport const permissionGuard: CanActivateFn = (route: ActivatedRouteSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree => {\n const permission = inject(PermissionService);\n\n const data = route.data as CommonsRouteData;\n\n if (data.permissions) {\n return permission.canActivateRoute(data.permissions, route).pipe(first());\n } else {\n return of(true);\n }\n};\n","import {EnvironmentProviders, Provider, Type} from '@angular/core';\nimport {CanActivateFn, CanDeactivateFn, DefaultExport, LoadChildren, ResolveFn, Route} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {removeRouteEmptyPathSegments} from '../helpers/route';\nimport {CommonsMenuItem} from '../models/menu.model';\nimport {permissionGuard} from '../security/permission.guard';\nimport {APermissions} from '../security/permissions.model';\nimport {BreadcrumbType, CommonsRouteData} from './router.model';\nimport {RoutesBuilder} from './routes-builder';\n\nexport type RouteBuilderAdjustFnType = (builder: RouteBuilder) => void;\n\nexport class RouteBuilder {\n protected readonly route: Route;\n private routePath: Array<string> = [];\n protected routeData: CommonsRouteData = {breadcrumb: null};\n private root?: RoutesBuilder;\n private parent?: RouteBuilder;\n private children: Array<RouteBuilder> = [];\n\n private menuItem?: CommonsMenuItem;\n private menuItemChildren: Array<CommonsMenuItem> = [];\n private menuItemChildrenAfter: Array<CommonsMenuItem> = []; // append after route children\n\n private permissions?: APermissions;\n\n public constructor(route: Route) {\n this.route = route;\n if (this.route.path && this.route.path.length > 0) {\n this.routePath = [this.route.path];\n }\n }\n\n /**\n * Sets the link to root Routes builder.\n *\n * @param {RoutesBuilder} routesBuilder - The routes builder to set as the root.\n */\n public withRoot(routesBuilder: RoutesBuilder): this {\n this.root = routesBuilder;\n return this;\n }\n\n /**\n * Sets the link to parent Route builder.\n *\n * @param {RouteBuilder} parent - The parent route builder.\n */\n public withParent(parent: RouteBuilder): this {\n this.parent = parent;\n this.routePath = removeRouteEmptyPathSegments([...this.parent.routePath, this.route.path ?? '']);\n return this;\n }\n\n /**\n * Sets the breadcrumb.\n *\n * @param {BreadcrumbType} breadcrumb - Breadcrumb configuration.\n */\n public withBreadcrumb(breadcrumb: BreadcrumbType): this {\n this.routeData.breadcrumb = breadcrumb;\n return this;\n }\n\n /**\n * Sets the page title for the current route.\n *\n * @param {string} pageTitle - The title of the page.\n */\n public withPageTitle(pageTitle: string): this {\n this.routeData.pageTitle = pageTitle;\n return this;\n }\n\n /**\n * Sets the page title and the breadcrumb.\n *\n * @param {string} title - The title of the page and breadcrumb.\n */\n public withTitle(title: string): this {\n this.withPageTitle(title);\n this.withBreadcrumb(title);\n return this;\n }\n\n /**\n * Adds a can activate guard to route.\n *\n * @param {CanActivateFn} fn - The CanActivate function to be added.\n */\n public withCanActivate(fn: CanActivateFn): this {\n if (!this.route.canActivate) {\n this.route.canActivate = [];\n }\n this.route.canActivate.push(fn);\n return this;\n }\n\n /**\n * Adds a can deactivate guard to route.\n *\n * @param {CanDeactivateFn} fn - The CanActivate function to be added.\n */\n public withCanDeactivate(fn: CanDeactivateFn<any>): this {\n if (!this.route.canDeactivate) {\n this.route.canDeactivate = [];\n }\n this.route.canDeactivate.push(fn);\n return this;\n }\n\n /**\n * Adds a resolver to route.\n *\n * @param {string} name - Name of the resolver.\n * @param {CanDeactivateFn} fn - The CanActivate function to be added.\n */\n public withResolver(name: string, fn: ResolveFn<any>): this {\n if (!this.route.resolve) {\n this.route.resolve = {};\n }\n this.route.resolve[name] = fn;\n return this;\n }\n\n /**\n * Adds a provider to the route.\n *\n * @param {Provider | EnvironmentProviders} provider - The provider to add.\n */\n public withProvider(provider: Provider | EnvironmentProviders): this {\n if (!this.route.providers) {\n this.route.providers = [];\n }\n this.route.providers.push(provider);\n return this;\n }\n\n /**\n * Sets the data for the route.\n *\n * @param {CommonsRouteData} data - The data to set for the route.\n * @param {boolean} [merge=true] - If the data should be merged with current data setup (true by default) - page title and breadcrumb config are carried over.\n */\n public withData(data: CommonsRouteData, merge = true): this {\n this.routeData = merge\n ? {\n ...this.routeData,\n ...data\n }\n : {\n breadcrumb: null,\n ...data\n };\n return this;\n }\n\n /**\n * Updates the menu item of route. Merging with current configuration (set with {withMenuItem}) takes place.\n *\n * @param {CommonsMenuItem} opts - The opts properties to be merged on existing menu item for route.\n */\n public withMenuItemOpts(opts: CommonsMenuItem): this {\n if (!this.menuItem) {\n this.menuItem = {};\n }\n this.menuItem = {\n ...this.menuItem,\n ...opts\n };\n return this;\n }\n\n /**\n * Sets the menu item (basic). For more options, see the {withMenuItemFromOpts}.\n *\n * @param {string} [icon] - The icon for the menu item.\n * @param {string} [label] - The label for the menu item.\n * @param {Array<string>} [routerLink] - The router link for the menu item.\n * @param {boolean} [breadcrumb=false] - Indicates whether to display breadcrumb for the menu item.\n */\n public withMenuItem(icon?: string, label?: string, routerLink?: Array<string>, breadcrumb = false): this {\n this.menuItem = createMenuItem(icon, label, routerLink);\n if (breadcrumb && label) {\n this.withBreadcrumb({\n label: label\n });\n }\n return this;\n }\n\n /**\n * Adds menu item child to route's menu item. If no menu item is present, children will be appended directly to parent/root menu item.\n *\n * @param {string} [icon] - The icon for the menu item.\n * @param {string} [label] - The label for the menu item.\n * @param {Array<string>} [routerLink] - The router link for the menu item.\n * @param {boolean} [afterRouteChildren=false] If false, menu item child will be appended before route's children menu items, at the end otherwise.\n */\n public withMenuItemChild(icon?: string, label?: string, routerLink?: Array<string>, afterRouteChildren = false): this {\n if (afterRouteChildren) {\n this.menuItemChildrenAfter.push(createMenuItem(icon, label, routerLink));\n } else {\n this.menuItemChildren.push(createMenuItem(icon, label, routerLink));\n }\n return this;\n }\n\n /**\n * Adds menu item child from opts to route's menu item. If no menu item is present, children will be appended directly to parent/root menu item.\n *\n * @param {CommonsMenuItem} opts - The opts properties to be merged on existing menu item for route.\n * @param {boolean} [afterRouteChildren=false] If false, menu item child will be appended before route's children menu items, at the end otherwise.\n */\n public withMenuItemChildFromOpts(opts: CommonsMenuItem, afterRouteChildren = false): this {\n if (afterRouteChildren) {\n this.menuItemChildrenAfter.push(opts);\n } else {\n this.menuItemChildren.push(opts);\n }\n return this;\n }\n\n /**\n * Sets the menu item's children to be generated lazily from route's lazy loaded routes after the chunk is loaded to runtime.\n */\n public withMenuItemLazyChildren(): this {\n if (!this.menuItem) {\n this.menuItem = {};\n }\n this.menuItem.lazyChildren = true;\n return this;\n }\n\n /**\n * Sets the permissions on the route.\n *\n * @param {APermissions} permissions - The permissions to be set on the route.\n */\n public withPermissions(permissions: APermissions): this {\n this.permissions = permissions;\n this.withCanActivate(permissionGuard);\n return this;\n }\n\n /**\n * Adds a child route to the current route.\n *\n * @param {string} path - The path of the child route.\n * @param {Type<any>} component - The component associated with the child route.\n * @param {RouteBuilderAdjustFnType} [adjustFn] - An optional function to adjust the child route builder.\n */\n public addChild(path: string, component: Type<any>, adjustFn?: RouteBuilderAdjustFnType): this {\n const childRouteBuilder = createRoute(path, component);\n adjustFn?.(childRouteBuilder);\n return this.addChildBuilder(childRouteBuilder);\n }\n\n /**\n * Adds a child builder to the current route.\n *\n * @param {RouteBuilder} builder - The child builder to be added.\n * @return {this} - The current builder with the added child builder.\n */\n public addChildBuilder(builder: RouteBuilder): this {\n builder.withParent(this);\n if (this.root) {\n builder.withRoot(this.root);\n }\n this.children.push(builder);\n return this;\n }\n\n /**\n * Builds an Angular route based on configurations.\n *\n * @returns {Route} The built Angular route.\n */\n public build(): Route {\n const angularRoute: Route = {\n ...this.route\n };\n\n if (angularRoute.data) {\n angularRoute.data = {\n ...angularRoute.data,\n ...this.routeData\n };\n } else {\n angularRoute.data = {...this.routeData};\n }\n\n // append permissions if not already in route data\n if (this.permissions && !(angularRoute.data as CommonsRouteData).permissions) {\n (angularRoute.data as CommonsRouteData).permissions = this.permissions;\n }\n\n const menu = this.buildMenu();\n if (menu.length > 0) {\n (angularRoute.data as CommonsRouteData).menuItems = menu;\n }\n\n if ((this.route.children?.length ?? 0) > 0 || this.children.length > 0) {\n // route has children\n angularRoute.children = [];\n if (this.route.children?.length) {\n angularRoute.children.push(...this.route.children);\n }\n if (this.children.length) {\n for (const childRoute of this.children) {\n angularRoute.children.push(childRoute.build());\n }\n }\n }\n\n if (this.route.canActivate) {\n angularRoute.canActivate = [...this.route.canActivate];\n }\n if (this.route.canActivateChild) {\n angularRoute.canActivateChild = [...this.route.canActivateChild];\n }\n if (this.route.canLoad) {\n angularRoute.canLoad = [...this.route.canLoad];\n }\n if (this.route.canDeactivate) {\n angularRoute.canDeactivate = [...this.route.canDeactivate];\n }\n if (this.route.resolve) {\n angularRoute.resolve = {...this.route.resolve};\n }\n\n return angularRoute;\n }\n\n /**\n * Builds the menu items.\n *\n * @returns {Array<CommonsMenuItem>} - The built menu items.\n */\n private buildMenu(): Array<CommonsMenuItem> {\n const menuItemBuild: CommonsMenuItem | null = this.menuItem ? {...this.menuItem} : null;\n const routeChildrenMenuItems: Array<CommonsMenuItem> = this.children.flatMap(child => child.buildMenu());\n const menuItemChildren: Array<CommonsMenuItem> = [];\n const menuItemChildrenBuild: Array<CommonsMenuItem> = [];\n\n if (menuItemBuild?.items) {\n menuItemChildrenBuild.push(...menuItemBuild.items);\n }\n\n const processMenuItemChild = (child: CommonsMenuItem): CommonsMenuItem => {\n const finalChild: CommonsMenuItem = {...child};\n if (typeof finalChild.routerLink === 'undefined') {\n finalChild.routerLink = this.routePath;\n }\n if (typeof finalChild.routerLink === 'string') {\n finalChild.routerLink = [finalChild.routerLink];\n }\n if (finalChild.routerLink) {\n finalChild.routerLink = removeRouteEmptyPathSegments(finalChild.routerLink);\n }\n // Propagate permissions to children\n if (!finalChild.permissions && this.routeData.permissions) {\n finalChild.permissions = this.routeData.permissions;\n }\n if (!finalChild.permissions && this.permissions) {\n finalChild.permissions = this.permissions;\n }\n return finalChild;\n };\n\n this.menuItemChildren.forEach(child => menuItemChildren.push(processMenuItemChild(child)));\n\n const menuItemChildrenAfterBuild: Array<CommonsMenuItem> = this.menuItemChildrenAfter.map(child => processMenuItemChild(child));\n\n menuItemChildrenBuild.push(...menuItemChildren, ...routeChildrenMenuItems, ...menuItemChildrenAfterBuild);\n\n if (!menuItemBuild) {\n return menuItemChildrenBuild;\n }\n\n menuItemBuild.label = menuItemBuild.label ?? this.routeData.pageTitle;\n if (typeof menuItemBuild.routerLink === 'string') {\n menuItemBuild.routerLink = [menuItemBuild.routerLink];\n }\n menuItemBuild.routerLink = removeRouteEmptyPathSegments(menuItemBuild.routerLink ?? this.routePath);\n if (menuItemChildrenBuild.length > 0) {\n menuItemBuild.items = menuItemChildrenBuild;\n }\n\n if (!menuItemBuild.permissions) {\n menuItemBuild.permissions = this.findMenuItemPermissions();\n }\n\n return [menuItemBuild];\n }\n\n protected findMenuItemPermissions() {\n if (this.menuItem?.permissions) {\n return this.menuItem.permissions;\n }\n if (this.routeData.permissions) {\n // this is already built\n return this.routeData.permissions;\n }\n if (this.permissions) {\n return this.permissions;\n }\n return undefined;\n }\n}\n\nfunction createMenuItem(icon?: string, label?: string, routerLink?: Array<string>) {\n const menuItem: CommonsMenuItem = {};\n if (icon) {\n menuItem.icon = icon;\n }\n if (label) {\n menuItem.label = label;\n }\n if (routerLink) {\n menuItem.routerLink = routerLink;\n }\n return menuItem;\n}\n\n/**\n * Creates a new instance of RouteBuilder with the given path and component.\n *\n * @param {string} path - The path for the route.\n * @param {Type<any>} component - The component for the route.\n * @return {RouteBuilder} - A new instance of RouteBuilder.\n */\nexport function createRoute(path: string, component: Type<any>): RouteBuilder {\n return new RouteBuilder({\n path: path,\n component: component\n });\n}\n\n/**\n * Creates a redirect route for the given path.\n *\n * @param {string} path - The path to match against.\n * @param {string} redirectTo - The URL path to redirect to.\n * @param {'full' | 'prefix'} [pathMatch='prefix'] - The path matching strategy ('full' or 'prefix').\n * @return {RouteBuilder} - A new instance of the RouteBuilder class with the redirect route configuration.\n */\nexport function createRouteRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): RouteBuilder {\n return new RouteBuilder({\n path: path,\n redirectTo: redirectTo,\n pathMatch: pathMatch\n });\n}\n\n/**\n * Creates a lazy route module (or routes).\n *\n * @param {string} path - The path for the route.\n * @param {LoadChildren} loadChildren - The function that loads the lazy module (or routes).\n * @param {Array<any>} [canMatch] - An optional array of objects that can match the route.\n * @returns {RouteBuilder} - A new instance of RouteBuilder class.\n */\nexport function createLazyChildrenRoute(path: string, loadChildren: LoadChildren, canMatch?: Array<any>): RouteBuilder {\n const route: Route = {path: path, loadChildren: loadChildren};\n if (canMatch?.length) {\n route.canMatch = canMatch;\n }\n return new RouteBuilder(route);\n}\n\n/**\n * Creates a lazy route component.\n *\n * @param {string} path - The path for the route.\n * @param {() => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>} loadComponent - The function that loads the component for the route.\n * @param {Array<any>} [canMatch] - The array of values that determine if the route can match.\n * @returns {RouteBuilder} - An instance of RouteBuilder with the created route.\n */\nexport function createLazyRoute(\n path: string,\n loadComponent: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>,\n canMatch?: Array<any>\n): RouteBuilder {\n const route: Route = {path: path, loadComponent: loadComponent};\n if (canMatch?.length) {\n route.canMatch = canMatch;\n }\n return new RouteBuilder(route);\n}\n","import {Route, Routes} from '@angular/router';\n\nimport {RouteBuilder, RouteBuilderAdjustFnType} from './route-builder';\n\nexport class RoutesBuilder {\n private routes: Array<RouteBuilder> = [];\n\n /**\n * Adds an Angular route to the current route configuration.\n *\n * @param {Route} route - The Angular route object to be added.\n * @param {RouteBuilderAdjustFnType} [builderAdjustFn] - Optional function to adjust the route builder before adding.\n */\n public addFromNgRoute(route: Route, builderAdjustFn?: RouteBuilderAdjustFnType): this {\n const builder = new RouteBuilder(route);\n builderAdjustFn?.(builder);\n return this.add(builder);\n }\n\n /**\n * Adds a route redirect to the Angular route.\n *\n * @param {string} path - The path for the redirect.\n * @param {string} redirectTo - The target route to redirect.\n * @param {'full' | 'prefix'} pathMatch - The matching strategy for the redirect. Default is 'prefix'.\n */\n public addRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): this {\n return this.addFromNgRoute({\n path: path,\n redirectTo: redirectTo,\n pathMatch: pathMatch\n });\n }\n\n /**\n * Adds a route to the routes.\n *\n * @param {RouteBuilder} routeBuilder - The route builder object representing the route to be added.\n */\n public add(routeBuilder: RouteBuilder): this {\n this.routes.push(routeBuilder);\n return this;\n }\n\n public build(): Routes {\n return this.routes.map(r => r.build());\n }\n}\n\n/**\n * Creates a new instance of the RoutesBuilder class.\n *\n * @return {RoutesBuilder} A new instance of the RoutesBuilder class.\n */\nexport function createRoutes() {\n return new RoutesBuilder();\n}\n","import {Observable, OperatorFunction} from 'rxjs';\n\nimport {DataListResult} from '../data-list/data-list.model';\n\n/**\n * Maps an Observable of data with optional totalCount and data to a data list result object with provided defaults of empty array and count 0.\n */\nexport function mapToDataList<Item>(): OperatorFunction<{data?: Item[]; totalCount?: number}, DataListResult<Item>> {\n return function <Item>(source: Observable<{data?: Item[]; totalCount?: number}>): Observable<DataListResult<Item>> {\n return new Observable(subscriber => {\n return source.subscribe({\n next(value) {\n subscriber.next({\n data: value.data ?? [],\n totalCount: value.totalCount ?? value.data?.length ?? 0\n });\n },\n error: err => {\n subscriber.error(err);\n }\n });\n });\n };\n}\n","import {HttpBackend} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\n\nimport {CommonsInitService} from '../commons-init.service';\n\nexport function commonsInitializerProvider(handler: HttpBackend, commonsInit: CommonsInitService): () => Observable<void> {\n return () => commonsInit.initialize(handler);\n}\n","import {InjectionToken} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nexport const COMMONS_INITIALIZER_IT = new InjectionToken<ReadonlyArray<() => Observable<unknown>>>('COMMONS_INIZIALIZER');\n","import {InjectionToken} from '@angular/core';\n\nimport {ILogPublisher} from '../../log/log.model';\n\nexport const LOG_PUBLISHERS = new InjectionToken<ILogPublisher[]>('LOG_PUBLISHERS');\n","import {HttpClient, HttpErrorResponse} from '@angular/common/http';\n\nimport {Observable, combineLatest, of, tap} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\n\nimport {throwError} from '../error/error-helpers';\nimport {objectDeepMerge} from '../helpers/object';\nimport {ILoggerService} from '../log/log.model';\nimport {CommonsModuleConfig} from './tokens/module-config.token';\n\nexport class CommonsConfigurationService {\n private static _instance: CommonsConfigurationService = new CommonsConfigurationService();\n\n public static get(): CommonsConfigurationService {\n return CommonsConfigurationService._instance;\n }\n\n private logger?: ILoggerService;\n\n private http?: HttpClient;\n private moduleConfig?: CommonsModuleConfig;\n private projectEnvironment?: any;\n private jsonSources: Array<JsonSourceLoadInfo> = [];\n private objectSources: Array<any> = [];\n\n private configuration = {...this.projectEnvironment};\n\n private constructor() {\n // empty, but needed for private constructor\n }\n\n public init(httpClient: HttpClient, logger?: ILoggerService): this {\n this.http = httpClient;\n this.logger = logger?.create('ConfigurationService');\n return this;\n }\n\n /**\n * Add commons module config.\n * @param config Module config.\n */\n public addModuleConfigSource(config?: CommonsModuleConfig): void {\n this.moduleConfig = config;\n this.mergeConfigs();\n this.logger?.debug(`Module configuration source added.`);\n }\n\n /**\n * Add project environment source.\n * @param environment Environment.\n */\n public addEnvironmentSource(environment: any): void {\n this.projectEnvironment = environment;\n this.mergeConfigs();\n this.logger?.debug(`Environment configuration source added.`);\n }\n\n /**\n * Adds new config source from JSON file loaded from HTTP.\n * @param config Config for JSON file.\n * @param loadImmediately Load is by default triggered on app initialization. If immediate load is required, pass true.\n */\n public addJsonSource(config: {url?: string; enableEnvProd?: boolean} = {}, loadImmediately = false): Observable<boolean> {\n if (!config) {\n config = {};\n }\n const url = config?.url ?? 'assets/config/env{{environment}}.json';\n const enableEnvProdReplace = config?.enableEnvProd ?? false;\n\n const sourceInfo: JsonSourceLoadInfo = {\n url: url,\n isEnvironment: false,\n environmentEnableEnvProd: enableEnvProdReplace,\n isLoaded: false\n };\n this.jsonSources.push(sourceInfo);\n\n this.logger?.debug(`JSON configuration source added: ${url}.`);\n\n if (loadImmediately) {\n return this.loadJsonConfigurations();\n } else {\n return of(true);\n }\n }\n\n /**\n * Adds new config object from any object.\n * @param config Config object.\n */\n public addObjectSource(config: any): void {\n this.objectSources.push(config);\n this.logger?.debug(`Object configuration source added.`);\n this.mergeConfigs();\n }\n\n /**\n * returns true if there is no jsonSources\n */\n private skipJsonConfigsLoading = () => this.jsonSources === null || this.jsonSources.length === 0;\n\n /**\n * loads json sources or skips them returning true in both cases\n * used for `skipJsonSourceInit` configuration parameter\n */\n public loadJsonConfigurations = (): Observable<boolean> => (this.skipJsonConfigsLoading() ? of(true) : this.loadJsonSources());\n\n private loadJsonSources(): Observable<boolean> {\n if (!this.http) {\n this.logger?.warn('HTTP client was not initialized. Json source cannot be loaded');\n return of(false);\n }\n\n const httpClient = this.http;\n\n return combineLatest(\n this.jsonSources\n .filter(source => !source.isLoaded)\n .map(sourceInfo => {\n let url = sourceInfo.url;\n sourceInfo.environment = this.projectEnvironment?.name || (this.projectEnvironment?.production ? (sourceInfo.environmentEnableEnvProd ? 'prod' : null) : 'dev');\n sourceInfo.isEnvironment = !!sourceInfo.environment;\n\n if (sourceInfo.isEnvironment) {\n url = url.replace('{{environment}}', '.' + sourceInfo.environment);\n } else {\n // replace possible environment entry and change source info url\n url = url.replace('{{environment}}', '');\n sourceInfo.url = url;\n }\n\n this.logger?.debug(`Loading JSON configuration source from ${url}.`);\n\n return httpClient.get<object>(url).pipe(\n catchError((err: HttpErrorResponse) => {\n if (sourceInfo.isEnvironment) {\n const noEnvUrl = sourceInfo.url.replace('{{environment}}', '');\n sourceInfo.environment = null;\n return httpClient.get<object>(noEnvUrl);\n } else {\n this.logger?.warn(`Configuration file ${url} not loaded`, err);\n\n return of(false);\n }\n }),\n map(configuration => {\n if (typeof configuration !== 'object') {\n return false;\n }\n\n sourceInfo.configuration = configuration;\n sourceInfo.isLoaded = true;\n\n return true;\n })\n );\n })\n ).pipe(\n map(sourceResults => sourceResults.every(sr => sr)),\n tap(() => this.mergeConfigs())\n );\n }\n\n /**\n * Get configuration.\n */\n public getConfig() {\n return this.configuration;\n }\n\n /**\n * Get configuration value for key.\n * @param key Configuration key.\n */\n public getConfigValue<T = any>(key: string): T | null {\n return this.configuration[key] ? this.configuration[key] : null;\n }\n\n /**\n * Gets the configuration value for the given key. If the value is not found,\n * it throws an error with a custom error message.\n *\n * @param {string} key - The configuration key.\n * @param {string} [errorMessage] - Custom error message to be thrown if the value is not found.\n *\n * @returns {T} - The configuration value.\n *\n * @throws {CommonsInternalError} - If the value is not found or a custom error message is provided.\n */\n public getConfigValueOrThrow<T = any>(key: string, errorMessage?: string): T {\n return this.getConfigValue(key) ?? throwError(errorMessage ?? `Missing configuration value for '${key}'!`, {name: 'CommonsMissingConfigError'});\n }\n\n /**\n * Has configuration for key.\n * @param key Configuration key.\n */\n public hasConfigKey(key: string): boolean {\n return Object.keys(this.configuration).some(k => k === key);\n }\n\n /**\n * Merges configuration from multiple sources with\n */\n private mergeConfigs() {\n let config = {};\n\n // 1. object sources have highest priority\n if (this.objectSources.length) {\n for (const objConfig of this.objectSources) {\n config = objectDeepMerge(config, objConfig);\n }\n }\n\n // 2. JSON sources come next\n const jsonConfigs = this.jsonSources.filter(source => source.isLoaded && typeof source.configuration === 'object').map(source => source.configuration);\n if (jsonConfigs.length) {\n for (const jsonConfig of jsonConfigs) {\n if (jsonConfig) {\n config = objectDeepMerge(config, jsonConfig);\n }\n }\n }\n\n // 3. project env has the next priority\n if (this.projectEnvironment) {\n config = objectDeepMerge(config, this.projectEnvironment);\n }\n\n // 4. module config has the lowest priority\n if (this.moduleConfig) {\n config = objectDeepMerge(config, this.moduleConfig);\n }\n\n this.configuration = config;\n }\n}\n\ninterface JsonSourceLoadInfo {\n url: string;\n isLoaded: boolean;\n isEnvironment: boolean;\n environment?: string | null;\n environmentEnableEnvProd?: boolean;\n configuration?: object;\n}\n","import {Injectable, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Route, RouteConfigLoadEnd, RouteConfigLoadStart, Router, Routes} from '@angular/router';\n\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {LoggerService} from '../log/logger.service';\n\n@Injectable()\nexport class CommonsRouterService {\n private readonly router = inject(Router);\n private readonly logger = inject(LoggerService).create('CommonsRouterService');\n private readonly routesLoadedPropKey = '_loadedRoutes';\n\n private currentNavigationPath?: string;\n private currentNavigationModuleKeys: string[] = [];\n\n private lazyLoadedRoutesConfig: {\n [path: string]: {\n route?: Route;\n isLoadEnd: boolean;\n loadedRoutes?: Routes;\n loadedRoutesSubject: Subject<Routes>;\n };\n } = {};\n\n constructor() {\n this.router.events.pipe(takeUntilDestroyed()).subscribe(event => {\n if (event instanceof NavigationStart) {\n this.startNavigation(event.url);\n } else if (event instanceof RouteConfigLoadStart) {\n this.markNavigationConfigLoad(event.route);\n } else if (event instanceof RouteConfigLoadEnd) {\n this.markNavigationConfigLoad(event.route, true);\n } else if (event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError) {\n this.finishNavigation();\n }\n });\n }\n\n public getRouteLoadedChildren(path: string | Array<string>): Routes | undefined {\n return this.getOrCreateRouteForModule(this.getModulePathFromRouterLink(path)).loadedRoutes;\n }\n\n public getRouteLoadedChildren$(path: string | Array<string>): Observable<Routes> {\n return this.getOrCreateRouteForModule(this.getModulePathFromRouterLink(path)).loadedRoutesSubject.asObservable().pipe(first());\n }\n\n public initialize() {\n this.logger.debug('Initialized.');\n }\n\n private startNavigation(url: string) {\n this.currentNavigationPath = url.split('?')[0].split('#')[0];\n this.currentNavigationModuleKeys = [];\n }\n\n private finishNavigation() {\n if (this.currentNavigationModuleKeys.length) {\n this.currentNavigationModuleKeys.forEach(k => this.getLoadedRoutesFromRoute(k, true));\n }\n this.currentNavigationPath = undefined;\n }\n\n private markNavigationConfigLoad(route: Route, isEnd = false) {\n const routePath = route.path ?? '';\n\n let moduleKey = routePath;\n const currentNavigationPathRoutePathIdx = this.currentNavigationPath?.indexOf(routePath) ?? -1;\n if (this.currentNavigationPath && currentNavigationPathRoutePathIdx >= 0) {\n moduleKey = this.currentNavigationPath.substring(0, currentNavigationPathRoutePathIdx + routePath.length);\n } else if (this.currentNavigationPath && routePath !== this.currentNavigationPath && !routePath.startsWith('/')) {\n // usually means that redirect to currentNavigationPath was done, additionally, route path was also triggered on lazy routes load\n moduleKey = `${this.currentNavigationPath}/${routePath}`;\n }\n\n if (!isEnd && this.currentNavigationModuleKeys.indexOf(moduleKey) < 0) {\n this.currentNavigationModuleKeys.push(moduleKey);\n }\n\n this.logger.trace(`Config load ${isEnd ? 'end' : 'start'} for ${moduleKey} (routePath: ${routePath}; navigationUrl: ${this.currentNavigationPath})`);\n\n const config = this.getOrCreateRouteForModule(moduleKey);\n config.route = route;\n config.isLoadEnd = isEnd;\n\n if (isEnd) {\n this.getLoadedRoutesFromRoute(moduleKey);\n }\n }\n\n private getLoadedRoutesFromRoute(moduleKey: string, isFinish = false) {\n const moduleConfig = this.lazyLoadedRoutesConfig[moduleKey];\n if (!moduleConfig?.route || Array.isArray(moduleConfig.loadedRoutes)) {\n return;\n }\n\n moduleConfig.loadedRoutes = moduleConfig.route![this.routesLoadedPropKey as keyof object];\n\n if (!Array.isArray(moduleConfig.loadedRoutes) && isFinish) {\n // if is called from finish and no lazy loaded routes are matched from router events, try finding in route config, it should be there!\n this.logger.trace(`Route loadedRoutes for ${moduleKey} not found, searching in router config now`);\n const route = this.findRouteInRouteConfig(moduleKey);\n if (route) {\n moduleConfig.route = route;\n moduleConfig.loadedRoutes = moduleConfig.route![this.routesLoadedPropKey as keyof object];\n } else {\n this.logger.warn(`Route loadedRoutes for ${moduleKey} were not found in router config`);\n }\n }\n\n if (typeof moduleConfig.loadedRoutes !== 'undefined') {\n moduleConfig.loadedRoutesSubject.next(moduleConfig.loadedRoutes!);\n moduleConfig.loadedRoutesSubject.complete();\n\n this.logger.trace(`Config load for ${moduleKey} is complete`, moduleConfig);\n }\n }\n\n /**\n * Search for route config by module path by recursive scanning of router config tree.\n * @param modulePath Path of module that is searched.\n * @param routes Routes to be scanned. If not provided, it starts on root router config.\n * @private\n */\n private findRouteInRouteConfig(modulePath: string, routes: Routes = this.router.config): Route | null {\n if (modulePath.startsWith('/')) {\n modulePath = modulePath.substring(1);\n }\n\n for (const route of routes) {\n if (typeof route.path === 'undefined') {\n continue;\n }\n let routePath = route.path;\n if (routePath.startsWith('/')) {\n routePath = routePath.substring(1);\n }\n\n const longestPathMatch = this.findLongestPathMatch(modulePath, routePath);\n if (longestPathMatch === null) {\n continue;\n }\n\n // there is a partial or full match\n if (route.loadChildren && modulePath === longestPathMatch) {\n // it's a hit!\n return route;\n } else if (route.loadChildren && Array.isArray(route[this.routesLoadedPropKey as keyof object])) {\n const result = this.findRouteInRouteConfig(modulePath.substring(longestPathMatch.length, modulePath.length), route[this.routesLoadedPropKey as keyof object]);\n if (result) {\n return result;\n }\n } else if (route.children) {\n const result = this.findRouteInRouteConfig(modulePath.substring(longestPathMatch.length, modulePath.length), route.children);\n if (result) {\n return result;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Finds longest path match of source to match string. If match is '', it is considered as a match in Angular routing.\n * @param source Source string from on which comparison is based.\n * @param match Match string to which the source is matched to.\n * @private\n */\n private findLongestPathMatch(source: string, match: string): string | null {\n const sourceSegments = source.split('/');\n const matchSegments = match.split('/');\n\n if (matchSegments.length === 1 && matchSegments[0] === '') {\n // it's a hit, because empty route must always be processed (kind of a \"abstract\" route)\n return '';\n }\n\n if (sourceSegments[0] === matchSegments[0]) {\n // there is a match, find how long it is\n for (let i = 1; i < sourceSegments.length; i++) {\n if (sourceSegments[i] !== matchSegments[i]) {\n // end of match\n return sourceSegments.slice(0, i).join('/');\n }\n }\n\n // there is full match\n return sourceSegments.join('/');\n }\n\n return null;\n }\n\n private getOrCreateRouteForModule(moduleKey: string) {\n if (!this.lazyLoadedRoutesConfig[moduleKey]) {\n this.lazyLoadedRoutesConfig[moduleKey] = {\n loadedRoutesSubject: new ReplaySubject<Routes>(1),\n isLoadEnd: false\n };\n }\n\n return this.lazyLoadedRoutesConfig[moduleKey];\n }\n\n private getModulePathFromRouterLink(path: string | Array<string>) {\n return ('/' + (Array.isArray(path) ? path.join('/') : path)).replace(/\\/\\//g, '/');\n }\n}\n","import {HttpBackend, HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject, Subject, combineLatest, mergeMap, of, take, throwError} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\n\nimport {LoggerService} from '../log/logger.service';\nimport {CommonsConfigurationService} from './commons-configuration.service';\nimport {CommonsRouterService} from './commons-router.service';\nimport {CommonsService} from './commons.service';\nimport {COMMONS_INITIALIZER_IT} from './tokens/commons-init.token';\nimport {LOG_PUBLISHERS} from './tokens/log-publisher.token';\nimport {COMMONS_MODULE_CONFIG_IT} from './tokens/module-config.token';\n\nexport enum CommonsInitEventEnum {\n CommonsInitStart,\n ConfigSourceModuleLoaded,\n ConfigSourceProjectEnvLoaded,\n ConfigSourceJsonAdded,\n ConfigSourceJsonLoaded,\n CommonsInitEnd,\n CommonsInitError\n}\n\n@Injectable()\nexport class CommonsInitService {\n private readonly logger = inject(LoggerService);\n private readonly logPublishers = inject(LOG_PUBLISHERS, {optional: true});\n private readonly config = inject(CommonsConfigurationService);\n private readonly commons = inject(CommonsService);\n private readonly commonsRouter = inject(CommonsRouterService);\n private readonly moduleConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly commonsInitializers = inject(COMMONS_INITIALIZER_IT, {optional: true});\n\n private isInitialized = false;\n\n private httpClient!: HttpClient;\n\n private isInitializedSubject = new ReplaySubject<boolean>();\n private commonsInitServiceEvents = new Subject<CommonsInitEventEnum>();\n\n public get events$(): Observable<CommonsInitEventEnum> {\n return this.commonsInitServiceEvents.asObservable();\n }\n\n public get isInitialized$(): Observable<boolean> {\n return this.isInitializedSubject.asObservable().pipe(take(1));\n }\n\n public initialize(handler: HttpBackend): Observable<void> {\n if (this.isInitialized) {\n return of(void 0);\n }\n this.isInitialized = true;\n\n LoggerService.configure({timestampFormat: this.moduleConfig?.log?.timestampFormat});\n\n const ctxLogger = this.logger.create('CommonsInitService');\n ctxLogger.debug('Commons initialization is starting');\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.CommonsInitStart);\n\n // init http client\n this.httpClient = new HttpClient(handler);\n\n // init router\n this.commonsRouter.initialize();\n\n // init configurations with settings from module config\n this.config.init(this.httpClient, this.logger);\n this.config.addModuleConfigSource(this.moduleConfig ?? undefined);\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceModuleLoaded);\n if (this.moduleConfig?.configuration?.projectEnvironment) {\n this.config.addEnvironmentSource(this.moduleConfig.configuration.projectEnvironment);\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceProjectEnvLoaded);\n }\n\n // init configurations with settings from module config for json source\n if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {\n const jsonSourceEnableEnvProd = this.moduleConfig?.configuration?.jsonSourceEnableEnvProd ?? false;\n const jsonSource = this.moduleConfig?.configuration?.jsonSource;\n if (!jsonSource) {\n this.config.addJsonSource({enableEnvProd: jsonSourceEnableEnvProd});\n } else if (Array.isArray(jsonSource)) {\n jsonSource.forEach(source => this.config.addJsonSource({url: source, enableEnvProd: jsonSourceEnableEnvProd}));\n } else {\n this.config.addJsonSource({url: jsonSource, enableEnvProd: jsonSourceEnableEnvProd});\n }\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceJsonAdded);\n }\n\n return this.config.loadJsonConfigurations().pipe(\n mergeMap(() => {\n if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceJsonLoaded);\n }\n // init logger\n LoggerService.init(this.config, this.logPublishers ?? []);\n\n if (this.commonsInitializers) {\n ctxLogger.debug('Project initializers are being initialized');\n return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));\n } else {\n return of(true);\n }\n }),\n map(() => {\n ctxLogger.debug('Commons initialization is finished');\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.CommonsInitEnd);\n this.commonsInitServiceEvents.complete();\n this.isInitializedSubject.next(true);\n return this.commons.initialize();\n }),\n catchError(err => {\n ctxLogger.warn('Commons initialization failed with error', err);\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.CommonsInitError);\n this.commonsInitServiceEvents.complete();\n this.isInitializedSubject.next(false);\n return throwError(() => err);\n })\n );\n }\n}\n","import {Injectable, inject} from '@angular/core';\n\nimport {BROWSER_STORAGE_IT} from './tokens/browser-storage.token';\n\nexport type LocalstorageConfigValueType = string | number | Date | object | boolean;\n\n@Injectable()\nexport class CommonsStorageService {\n private readonly localStorage = inject(BROWSER_STORAGE_IT);\n private readonly _configKey = 'CommonsUserPrefs';\n\n private buildLocalStorageKey(type: string, key: string): string {\n return `${this._configKey}_${type}_${key}`;\n }\n\n public getItem<T = LocalstorageConfigValueType>(type: string, key: string): T | undefined {\n const localstorageData = this.localStorage.getItem(this.buildLocalStorageKey(type, key));\n if (localstorageData) {\n return JSON.parse(localstorageData);\n }\n return undefined;\n }\n\n public setItem<T = LocalstorageConfigValueType>(type: string, key: string, value: T): void {\n this.localStorage.setItem(this.buildLocalStorageKey(type, key), JSON.stringify(value));\n }\n\n public removeItem(type: string, key: string) {\n this.localStorage.removeItem(this.buildLocalStorageKey(type, key));\n }\n}\n","export enum StyleSizeEnum {\n ExtraSmall,\n Small,\n Normal,\n Large,\n ExtraLarge\n}\n\nexport enum StyleLevelEnum {\n Default,\n Primary,\n Secondary,\n Info,\n Help,\n Success,\n Warning,\n Danger\n}\n","export class Styles {\n public static readonly BUTTON_ROUNDED_WIDTH_XS = 26;\n public static readonly BUTTON_ROUNDED_WIDTH_SM = 28;\n public static readonly BUTTON_ROUNDED_WIDTH = 32;\n public static readonly BUTTON_ROUNDED_WIDTH_LG = 45;\n\n public static readonly ACTION_BUTTON_MARGIN_X = 2;\n\n public static readonly TABLE_CELL_PADDING_X = 8; // left and right paddings are same\n public static readonly TABLE_CELL_PADDING_X_SM = 4;\n public static readonly TABLE_CELL_PADDING_X_LG = 12;\n}\n","import {HttpBackend} from '@angular/common/http';\nimport {APP_INITIALIZER, ErrorHandler, Provider} from '@angular/core';\n\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService} from 'primeng/dynamicdialog';\n\nimport {CommonsErrorHandler} from './error/error-handler';\nimport {LogPublisherConsoleService} from './log/log-publisher-console.service';\nimport {LoggerService} from './log/logger.service';\nimport {TypeRegistry} from './registry/type-registry';\nimport {PermissionService} from './security/permission.service';\nimport {CommonsConfigurationService} from './services/commons-configuration.service';\nimport {CommonsInitService} from './services/commons-init.service';\nimport {CommonsRouterService} from './services/commons-router.service';\nimport {CommonsStorageService} from './services/commons-storage.service';\nimport {CommonsService} from './services/commons.service';\nimport {commonsInitializerProvider} from './services/providers/commons-init.provider';\nimport {BROWSER_STORAGE_IT} from './services/tokens/browser-storage.token';\nimport {LOG_PUBLISHERS} from './services/tokens/log-publisher.token';\nimport {COMMONS_MODULE_CONFIG_IT, CommonsModuleConfig} from './services/tokens/module-config.token';\n\nexport enum CommonsFeatureTypeEnum {\n Layout,\n Table,\n Tableview,\n DataApiAsClassV1\n}\n\nexport interface CommonsFeature {\n type: CommonsFeatureTypeEnum;\n providers: Provider[];\n}\n\nexport function provideCommons(config?: CommonsModuleConfig, ...features: CommonsFeature[]): Provider[] {\n const providers: Provider[] = [\n // primeng services\n DialogService,\n MessageService,\n ConfirmationService,\n\n // services\n CommonsInitService,\n CommonsService,\n CommonsRouterService,\n PermissionService,\n CommonsStorageService,\n\n {\n provide: COMMONS_MODULE_CONFIG_IT,\n useValue: config\n },\n {\n provide: TypeRegistry,\n useFactory: () => TypeRegistry.get()\n },\n {\n provide: CommonsConfigurationService,\n useFactory: () => CommonsConfigurationService.get()\n },\n {\n provide: APP_INITIALIZER,\n useFactory: commonsInitializerProvider,\n deps: [HttpBackend, CommonsInitService],\n multi: true\n },\n {\n provide: LoggerService,\n useFactory: () => LoggerService.get()\n },\n {\n provide: LOG_PUBLISHERS,\n useClass: LogPublisherConsoleService,\n multi: true\n },\n {\n provide: BROWSER_STORAGE_IT,\n useFactory: () => localStorage\n },\n {\n provide: ErrorHandler,\n useClass: CommonsErrorHandler\n }\n ];\n\n features.forEach(f => {\n providers.push(...f.providers);\n });\n\n return providers;\n}\n","// action\nexport * from './action/action-data.model';\nexport * from './action/action-parameters.model';\n\n// components\nexport * from './components/notification/notification-wrapper.component';\nexport * from './components/pages/error/error.page.component';\nexport * from './components/pages/not-found/not-found.page.component';\n\n// data-list\nexport * from './data-list/data-list.model';\nexport * from './data-list/data-list-params-helpers';\nexport * from './data-list/filter-match.model';\nexport * from './data-list/filter-metadata.model';\n\n// data-providers\nexport * from './data-providers/base.data-provider';\nexport * from './data-providers/base-data-provider.factory';\nexport * from './data-providers/lookup.data-provider';\n\n// descriptors\nexport * from './descriptors/action.descriptor';\nexport * from './descriptors/column.descriptor';\nexport * from './descriptors/editor.descriptor';\nexport * from './descriptors/enum.descriptor';\nexport * from './descriptors/filter.descriptor';\nexport * from './descriptors/lookup.descriptor';\nexport * from './descriptors/model.descriptor';\nexport * from './descriptors/table.descriptor';\nexport * from './descriptors/tableview.descriptor';\n\n// directives\nexport * from './directives/component.directive';\nexport * from './directives/template.directive';\n\n// enums\nexport * from './enum/enum.model';\nexport * from './enum/enum-helpers';\n\n// error\nexport * from './error/error.model';\nexport * from './error/error-handler';\nexport * from './error/error-helpers';\n\n// helpers\nexport * from './helpers/coercion';\nexport * from './helpers/date';\nexport * from './helpers/notification';\nexport * from './helpers/number';\nexport * from './helpers/object';\nexport * from './helpers/route';\nexport * from './helpers/string';\nexport * from './helpers/type-helpers';\nexport * from './helpers/templates';\n\n// i18n\nexport * from './i18n/i18n-common';\nexport * from './i18n/i18n-error';\nexport * from './i18n/i18n-type';\n\n// log\nexport * from './log/log.model';\nexport * from './log/log-publisher-console.service';\nexport * from './log/logger.service';\n\n// models\nexport * from './models/class-attribute.model';\nexport * from './models/class-service.model';\nexport * from './models/getter.model';\nexport * from './models/i18n.model';\nexport * from './models/menu.model';\nexport * from './models/user.model';\nexport * from './models/version.model';\n\n// pipes\nexport * from './pipes/boolean.pipe';\nexport * from './pipes/class-map.pipe';\nexport * from './pipes/enum.pipe';\nexport * from './pipes/enumerate.pipe';\nexport * from './pipes/enumerate-async.pipe';\nexport * from './pipes/getter.pipe';\nexport * from './pipes/i18n-property.pipe';\nexport * from './pipes/json-path.pipe';\nexport * from './pipes/parametrize.pipe';\nexport * from './pipes/template.pipe';\n\n// reflect\nexport * from './reflect/type-enum-decorator';\nexport * from './reflect/type-enum-metadata';\n\n// registry\nexport * from './registry/registry.model';\nexport * from './registry/type-registry';\n\n// router\nexport * from './router/route-builder';\nexport * from './router/router.model';\nexport * from './router/routes-builder';\n\n// rxjs\nexport * from './rxjs/map-data-list-result-operator';\n\n// security\nexport * from './security/permission.guard';\nexport * from './security/permission.service';\nexport * from './security/permission-helpers';\nexport * from './security/permissions.model';\n\n// services\nexport * from './services/providers/commons-init.provider';\nexport * from './services/tokens/browser-storage.token';\nexport * from './services/tokens/commons-init.token';\nexport * from './services/tokens/log-publisher.token';\nexport * from './services/tokens/module-config.token';\nexport * from './services/commons.service';\nexport * from './services/commons-configuration.service';\nexport * from './services/commons-init.service';\nexport * from './services/commons-router.service';\nexport * from './services/commons-storage.service';\n\n// styles\nexport * from './styles/style.model';\nexport * from './styles/style-constants';\n\n// provide\nexport * from './provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i1.CommonsService","i2","i3","toObservable","throwError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-core.mjs","sources":["../../core/src/components/notification/notification-wrapper.component.ts","../../core/src/components/notification/notification-wrapper.component.html","../../core/src/error/error.model.ts","../../core/src/helpers/date.ts","../../core/src/log/log.model.ts","../../core/src/log/logger.service.ts","../../core/src/services/tokens/browser-storage.token.ts","../../core/src/services/tokens/module-config.token.ts","../../core/src/services/commons.service.ts","../../core/src/components/pages/error/error.page.component.ts","../../core/src/components/pages/error/error.page.component.html","../../core/src/components/pages/not-found/not-found.page.component.ts","../../core/src/components/pages/not-found/not-found.page.component.html","../../core/src/data-list/filter-match.model.ts","../../core/src/data-list/data-list-params-helpers.ts","../../core/src/data-providers/base.data-provider.ts","../../core/src/data-providers/base-data-provider.factory.ts","../../core/src/directives/component.directive.ts","../../core/src/directives/template.directive.ts","../../core/src/enum/enum-helpers.ts","../../core/src/helpers/object.ts","../../core/src/helpers/string.ts","../../core/src/error/error-helpers.ts","../../core/src/error/error-handler.ts","../../core/src/helpers/coercion.ts","../../core/src/helpers/notification.ts","../../core/src/helpers/number.ts","../../core/src/helpers/route.ts","../../core/src/helpers/templates.ts","../../core/src/i18n/i18n-common.ts","../../core/src/i18n/i18n-error.ts","../../core/src/i18n/i18n-type.ts","../../core/src/log/log-publisher-console.service.ts","../../core/src/pipes/boolean.pipe.ts","../../core/src/pipes/class-map.pipe.ts","../../core/src/reflect/type-enum-metadata.ts","../../core/src/pipes/enum.pipe.ts","../../core/src/pipes/json-path.pipe.ts","../../core/src/pipes/enumerate.pipe.ts","../../core/src/pipes/enumerate-async.pipe.ts","../../core/src/pipes/getter.pipe.ts","../../core/src/pipes/i18n-property.pipe.ts","../../core/src/pipes/parametrize.pipe.ts","../../core/src/pipes/template.pipe.ts","../../core/src/reflect/type-enum-decorator.ts","../../core/src/registry/type-registry.ts","../../core/src/security/permissions.model.ts","../../core/src/security/permission-helpers.ts","../../core/src/security/permission.service.ts","../../core/src/security/permission.guard.ts","../../core/src/router/route-builder.ts","../../core/src/router/routes-builder.ts","../../core/src/rxjs/map-data-list-result-operator.ts","../../core/src/services/providers/commons-init.provider.ts","../../core/src/services/tokens/commons-init.token.ts","../../core/src/services/tokens/log-publisher.token.ts","../../core/src/services/commons-configuration.service.ts","../../core/src/services/commons-router.service.ts","../../core/src/services/commons-init.service.ts","../../core/src/services/commons-storage.service.ts","../../core/src/styles/style.model.ts","../../core/src/styles/style-constants.ts","../../core/src/provide.ts","../../core/src/index.ts","../../core/src/mediusinc-mng-commons-core.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, computed, signal} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ConfirmDialogModule} from 'primeng/confirmdialog';\nimport {DialogModule} from 'primeng/dialog';\nimport {ToastModule} from 'primeng/toast';\n\nimport {Nullable} from '../../helpers/type-helpers';\n\n@Component({\n selector: 'mng-notification-wrapper',\n standalone: true,\n templateUrl: 'notification-wrapper.component.html',\n styleUrls: ['notification-wrapper.component.scss'],\n imports: [ToastModule, ConfirmDialogModule, TranslateModule, DialogModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationWrapperComponent {\n public readonly notificationCutoff = 70;\n public isDialogNotificationVisible = computed(() => this.dialogNotification() !== null);\n public dialogNotification = signal<Message | null>(null);\n public dialogNotificationIconClass = computed(() => this.getMessageIcon(this.dialogNotification()));\n\n public getMessageIcon(message: Nullable<Message>): string {\n if (message?.icon) return message.icon;\n\n switch (message?.severity) {\n case 'info':\n return 'pi-info-circle';\n case 'warn':\n return 'pi-exclamation-triangle';\n case 'error':\n return 'pi-times-circle';\n case 'success':\n return 'pi-check';\n default:\n return '';\n }\n }\n\n public onShowNotificationInDialog(message: Message) {\n this.dialogNotification.set(message);\n }\n\n public onDialogNotificationVisibilityChange(visible: boolean) {\n if (!visible) {\n this.dialogNotification.set(null);\n }\n }\n}\n","<ng-content></ng-content>\n<p-confirmDialog appendTo=\"body\" [baseZIndex]=\"50\"></p-confirmDialog>\n\n<p-toast [baseZIndex]=\"50\">\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' + getMessageIcon(message)\"></span>\n <div class=\"p-toast-message-text\">\n <div class=\"p-toast-summary\">{{ message.summary }}</div>\n @if (message.detail) {\n <div class=\"p-toast-detail\">{{ message.detail.slice(0, notificationCutoff) + (message.detail.length > notificationCutoff ? '...' : '') }}</div>\n @if (message.detail.length > notificationCutoff) {\n <div (click)=\"onShowNotificationInDialog(message)\" class=\"p-link font-semibold text-sm mt-2 flex align-items-center\">\n <i class=\"pi pi-chevron-down mr-1\"></i>{{ 'notification.details' | translate }}\n </div>\n }\n }\n </div>\n </ng-template>\n</p-toast>\n\n<p-dialog\n [visible]=\"isDialogNotificationVisible()\"\n (visibleChange)=\"onDialogNotificationVisibilityChange($event)\"\n [styleClass]=\"'p-fluid mng-dialog mng-dialog-xs ' + 'mng-message-detail-dialog mng-message-detail-dialog-' + (dialogNotification()?.severity ?? '')\"\n appendTo=\"body\"\n draggable=\"false\"\n modal=\"true\">\n <ng-template pTemplate=\"header\" mngDialogKeydownHandler>\n <span class=\"p-dialog-title font-bold mng-dialog-success\">\n <span [class]=\"'mr-2 pi ' + dialogNotificationIconClass()\"></span>\n {{ dialogNotification()?.summary ?? '' }}\n </span>\n </ng-template>\n <div class=\"mng-notification-details\">\n {{ dialogNotification()?.detail ?? '' }}\n </div>\n</p-dialog>\n","import {HttpErrorResponse} from '@angular/common/http';\n\nimport {Message} from 'primeng/api/message';\n\nimport {ActionParameters} from '../action/action-parameters.model';\n\nexport type ErrorTypes = 'CommonsInternalError' | 'CommonsActionError' | 'CommonsHttpError';\n\n/**\n * Main use for commons error from action execution.\n * If http error is thrown, add it in cause.\n */\nexport interface ICommonsError extends Error {\n type: ErrorTypes;\n messageCode?: number | string;\n message: string;\n details?: any;\n stack?: string;\n cause?: Error | unknown;\n notification?: Message;\n notificationEmitSource?: string;\n}\n\nexport interface CommonsErrorBaseOptions {\n name?: string;\n messageCode?: number | string;\n details?: any;\n cause?: Error;\n stack?: string;\n location?: string;\n notification?: Message;\n}\n\nexport abstract class ACommonsErrorBase extends Error implements ICommonsError {\n public abstract readonly type: ErrorTypes;\n\n public readonly messageCode?: number | string;\n public readonly location?: string;\n public readonly details?: any;\n public readonly notification?: Message;\n public readonly notificationEmitSource?: string;\n\n protected constructor(message: string, options?: CommonsErrorBaseOptions) {\n super(message);\n\n this.name = options?.name ?? 'MngError';\n this.messageCode = options?.messageCode;\n this.location = options?.location ?? window?.location?.href;\n this.cause = options?.cause;\n this.stack = options?.stack ?? (options?.cause ? options.cause.stack : new Error(message).stack);\n this.details = options?.details;\n this.notification = options?.notification;\n }\n}\n\nexport class CommonsInternalError extends ACommonsErrorBase implements ICommonsError {\n public readonly type = 'CommonsInternalError';\n\n constructor(message: string, options?: CommonsErrorBaseOptions) {\n super(message, {\n name: 'CommonsInternalError',\n ...options\n });\n }\n}\n\nexport class CommonsHttpError extends ACommonsErrorBase implements ICommonsError {\n public readonly type = 'CommonsHttpError';\n\n public readonly httpError: HttpErrorResponse;\n\n constructor(message: string, httpError: HttpErrorResponse, options?: CommonsErrorBaseOptions) {\n super(message, {\n name: 'CommonsHttpError_' + httpError.url,\n cause: httpError,\n ...options\n });\n this.httpError = httpError;\n }\n}\n\nexport interface ICommonsActionError extends ICommonsError {\n type: 'CommonsActionError';\n httpError?: HttpErrorResponse;\n actionContext?: ICommonsActionErrorContext;\n}\n\nexport interface ICommonsActionErrorContext {\n parameters: ActionParameters<any>;\n}\n","export type toIsoStringTypeOptType = 'date' | 'date-time' | 'dateTime';\nexport type toIsoStringDateTimeOptsType = {utc?: boolean; noTimezone?: boolean; noMillis?: boolean};\n\nconst ngPrimerFormatSupported = [/d{1,2}/g, /E{1,5}/g, /c{1,5}/g, /M{1,5}/g, /L{1,5}/g, /y{1,4}/g, /Y{1,4}/g];\nconst ngPrimeFormatOther = [/G{1,5}/g, /w{1,2}/g, /W/g, /a{1,5}/g, /B{1,5}/g, /b{1,5}/g, /h{1,2}/g, /H{1,2}/g, /m{1,2}/g, /s{1,2}/g, /S{1,3}/g, /z{1,4}/g, /Z{1,5}/g, /O{1,4}/g];\nconst ngPrimerFormatMap = {\n // days\n d: 'd',\n dd: 'dd',\n E: 'D',\n EE: 'D',\n EEE: 'D',\n EEEE: 'DD',\n EEEEE: 'D',\n EEEEEE: 'D',\n c: 'd',\n cc: 'dd',\n ccc: 'D',\n cccc: 'DD',\n ccccc: 'D',\n cccccc: 'D',\n // months\n M: 'm',\n MM: 'mm',\n MMM: 'M',\n MMMM: 'MM',\n MMMMM: 'M',\n L: 'm',\n LL: 'mm',\n LLL: 'M',\n LLLL: 'MM',\n LLLLL: 'M',\n // year\n y: 'y',\n yy: 'y',\n yyy: 'yy',\n yyyy: 'yy',\n Y: 'y',\n YY: 'y',\n YYY: 'yy',\n YYYY: 'yy'\n};\n\nfunction padNumber(num: number, size = 2) {\n let str = String(num);\n while (str.length < size) {\n str = '0' + str;\n }\n return str;\n}\n\nexport function dateToIsoString(value: string | number | Date, type?: 'date'): string;\nexport function dateToIsoString(value: string | number | Date, type: 'date-time' | 'dateTime', dateTimeOpts?: toIsoStringDateTimeOptsType): string;\nexport function dateToIsoString(value: undefined | null | unknown, type?: 'date'): null;\nexport function dateToIsoString(value: undefined | null | unknown, type: 'date-time' | 'dateTime', dateTimeOpts?: toIsoStringDateTimeOptsType): null;\nexport function dateToIsoString(value: unknown, type?: toIsoStringTypeOptType, dateTimeOpts?: toIsoStringDateTimeOptsType): string | null;\nexport function dateToIsoString(value: unknown, type: toIsoStringTypeOptType = 'date-time', dateTimeOpts: toIsoStringDateTimeOptsType = {}): string | null {\n if (typeof value === 'string') {\n value = new Date(value);\n }\n if (typeof value === 'number') {\n value = new Date(value);\n }\n if (!(value instanceof Date)) {\n return null;\n }\n if (type === 'date') {\n // date only, no time part (and timezone, millis, utc does not matter ...)\n return value.getFullYear() + '-' + padNumber(value.getMonth() + 1) + '-' + padNumber(value.getDate());\n }\n if (dateTimeOpts.utc) {\n let str = value.toISOString();\n if (dateTimeOpts.noMillis) {\n const dotIdx = str.lastIndexOf('.');\n str = str.substring(0, dotIdx) + str.substring(dotIdx + 4, str.length);\n }\n if (dateTimeOpts.noTimezone) {\n str = str.substring(0, str.length - 1);\n }\n return str;\n } else {\n let base =\n value.getFullYear() +\n '-' +\n padNumber(value.getMonth() + 1) +\n '-' +\n padNumber(value.getDate()) +\n 'T' +\n padNumber(value.getHours()) +\n ':' +\n padNumber(value.getMinutes()) +\n ':' +\n padNumber(value.getSeconds());\n\n if (!dateTimeOpts.noMillis) {\n base += '.' + padNumber(value.getMilliseconds(), 3);\n }\n if (!dateTimeOpts.noTimezone) {\n const tzo = -value.getTimezoneOffset(),\n dif = tzo >= 0 ? '+' : '-';\n\n base = base + (dif + padNumber(Math.floor(Math.abs(tzo) / 60)) + ':' + padNumber(Math.abs(tzo) % 60));\n }\n\n return base;\n }\n}\n\nexport function fromAngularDateFormatToPrime(ngDateFormat: string): string {\n let primeDateFormat = ngDateFormat;\n for (const regex of ngPrimeFormatOther) {\n primeDateFormat = primeDateFormat.replace(regex, ' ');\n }\n for (const regex of ngPrimerFormatSupported) {\n const matches = [...primeDateFormat.matchAll(regex)].reverse();\n for (const match of matches) {\n if (match.index) {\n const matchStr = match[0];\n const replacement = ngPrimerFormatMap[matchStr as keyof object] ?? match[0];\n primeDateFormat = primeDateFormat.substring(0, match.index) + replacement + primeDateFormat.substring(match.index + matchStr.length);\n }\n }\n }\n primeDateFormat = primeDateFormat.replace(/\\s+\\W\\s+/g, ' ');\n primeDateFormat = primeDateFormat.replace(/\\s\\s+/g, ' ');\n\n return primeDateFormat.trim();\n}\n\nexport function angularDateFormatHasTime(ngDateFormat: string): boolean {\n return /[hHmsS]/.test(ngDateFormat);\n}\n\nexport function angularDateFormatHasSeconds(ngDateFormat: string): boolean {\n return /[sS]/.test(ngDateFormat);\n}\n","export enum LogLevelEnum {\n Trace,\n Debug,\n Log,\n Info,\n Warning,\n Error\n}\n\nexport interface LogEntry {\n level: LogLevelEnum;\n message: string;\n messageDetails?: string;\n timestamp: Date;\n timestampFormatted?: string;\n category?: string;\n error?: Error;\n data?: any[];\n}\n\nexport interface LogConfig {\n level?: LogLevelEnum;\n timestampFormat?: string;\n category?: {\n [category: string]: {\n level?: LogLevelEnum;\n };\n };\n}\n\nexport interface ILoggerService {\n create(context: string): ILoggerService;\n trace(msgOrError: string | Error, ...data: any[]): void;\n debug(msgOrError: string | Error, ...data: any[]): void;\n log(msgOrError: string | Error, logLevel: LogLevelEnum, category: string | undefined, ...data: any[]): void;\n logEntry(logEntry: Partial<LogEntry>): void;\n info(msgOrError: string | Error, ...data: any[]): void;\n warn(msgOrError: string | Error, ...data: any[]): void;\n error(msgOrError: string | Error, ...data: any[]): void;\n}\n\nexport interface ILogPublisher {\n addEntry(entry: LogEntry): void;\n}\n","import {DatePipe} from '@angular/common';\n\nimport {CommonsInternalError} from '../error/error.model';\nimport {dateToIsoString} from '../helpers/date';\nimport {CommonsConfigurationService} from '../services/commons-configuration.service';\nimport {ILogPublisher, ILoggerService, LogConfig, LogEntry, LogLevelEnum} from './log.model';\n\nexport class LoggerService implements ILoggerService {\n private static _instance: LoggerService = new LoggerService();\n private static _isInit = false;\n private static _configurationService?: CommonsConfigurationService;\n private static _publishers: ILogPublisher[] = [];\n private static _entriesBuffer: LogEntry[] = [];\n private static _categoryInstances: Record<string, LoggerService> = {};\n private static _timestampFormat = 'yyyy-MM-dd HH:mm:ss.SSS';\n\n private category?: string;\n\n // Temporary settings that cover logging calls before initialisation\n private readonly defaultLogLevel: LogLevelEnum = LogLevelEnum.Info;\n private datePipe = new DatePipe('en-US');\n\n private constructor() {\n // empty\n }\n\n public static get() {\n return LoggerService._instance;\n }\n\n public static configure(config: {timestampFormat?: string}) {\n if (config.timestampFormat) {\n LoggerService._timestampFormat = config.timestampFormat;\n }\n }\n\n public static init(configurationService: CommonsConfigurationService, publishers: ILogPublisher[]) {\n if (LoggerService._isInit) {\n return;\n }\n\n LoggerService._configurationService = configurationService;\n LoggerService._publishers = publishers;\n\n LoggerService._isInit = true;\n LoggerService._flushBuffer();\n }\n\n private static _flushBuffer() {\n if (!LoggerService._isInit) {\n return;\n }\n LoggerService._entriesBuffer.forEach(e => this._instance._log(e));\n LoggerService._entriesBuffer = [];\n }\n\n public static create(category: string): LoggerService {\n return LoggerService._instance.create(category);\n }\n\n public create(category: string): LoggerService {\n if (this.category) {\n throw new CommonsInternalError(`Cannot create logger with category inside another category (${this.category}). Must create logger on root.`);\n }\n if (LoggerService._categoryInstances[category]) {\n return LoggerService._categoryInstances[category];\n }\n\n const logger = new LoggerService();\n logger.category = category;\n\n LoggerService._categoryInstances[category] = logger;\n\n return logger;\n }\n\n private _processLog(msgOrError: string | Error, logLevel: LogLevelEnum, category: string | undefined = undefined, data?: any[]) {\n const [timestamp, timestampFormatted] = [...this._getTimestamps()];\n\n const logEntry = <LogEntry>{\n level: logLevel,\n message: typeof msgOrError === 'string' ? msgOrError : msgOrError.message,\n data: data,\n category: this.category ?? category,\n timestamp: timestamp,\n timestampFormatted: timestampFormatted ?? undefined\n };\n\n if (msgOrError instanceof Error) {\n // set error from message param\n logEntry.error = msgOrError;\n } else if (data?.length && data[0] instanceof Error) {\n // if first data is error, also consider as error\n logEntry.error = data[0];\n logEntry.data = data.splice(1);\n }\n\n this._log(logEntry);\n }\n\n private _getTimestamps(): [Date, string | null] {\n const timestamp = new Date();\n const timestampFormatted = this.datePipe.transform(timestamp, LoggerService._timestampFormat) ?? dateToIsoString(timestamp);\n return [timestamp, timestampFormatted];\n }\n\n private _log(log: LogEntry) {\n if (!LoggerService._isInit) {\n // add to buffer\n LoggerService._entriesBuffer.push(log);\n return;\n }\n\n const logConfig = LoggerService._configurationService?.getConfigValue<LogConfig>?.('log');\n if (\n (this.category && log.level < (logConfig?.category?.[this.category]?.level ?? logConfig?.level ?? this.defaultLogLevel)) ||\n (!this.category && log.level < (logConfig?.level ?? this.defaultLogLevel))\n ) {\n return;\n }\n\n if (logConfig?.timestampFormat) {\n log.timestampFormatted = this.datePipe.transform(log.timestamp, logConfig.timestampFormat) ?? undefined;\n }\n\n LoggerService._publishers.forEach(p => p.addEntry(log));\n }\n\n public trace(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Trace, undefined, data);\n }\n\n public debug(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Debug, undefined, data);\n }\n\n public log(msgOrError: string | Error, logLevel: LogLevelEnum = LogLevelEnum.Log, category: string | undefined = undefined, ...data: any[]) {\n this._processLog(msgOrError, logLevel, category, data);\n }\n\n public logEntry<E extends Partial<LogEntry>>(logEntry: E) {\n const [timestamp, timestampFormatted] = [...this._getTimestamps()];\n const logEntryFinal: LogEntry = {\n timestamp: timestamp,\n timestampFormatted: timestampFormatted ?? undefined,\n category: this.category ?? logEntry.category,\n message: '',\n messageDetails: logEntry.messageDetails,\n level: LogLevelEnum.Log,\n ...logEntry\n };\n this._log(logEntryFinal);\n }\n\n public info(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Info, undefined, data);\n }\n\n public warn(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Warning, undefined, data);\n }\n\n public error(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Error, undefined, data);\n }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const BROWSER_STORAGE_IT = new InjectionToken<Storage>('BROWSER_STORAGE');\n","import {InjectionToken} from '@angular/core';\n\nimport {LogConfig} from '../../log/log.model';\nimport {VersionConfigType} from '../../models/version.model';\n\nexport type ColorScheme = 'light' | 'dark' | 'auto';\n\nexport interface CommonsModuleConfig {\n app?: {\n name?: string;\n owner?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoPath?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoPathLight?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoPathDark?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoNamePath?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoNamePathLight?: string;\n /**\n * @deprecated Use layout config instead\n */\n logoNamePathDark?: string;\n locales?: string[];\n dataLocales?: string[];\n version?: VersionConfigType;\n /**\n * @deprecated Use layout config instead\n */\n colorScheme?: ColorScheme;\n };\n configuration?: {\n projectEnvironment?: any;\n jsonSource?: string | Array<string>;\n skipJsonSourceInit?: boolean;\n jsonSourceEnableEnvProd?: boolean;\n };\n serialization?: CommonsSerializationConfig;\n log?: LogConfig;\n}\n\nexport interface CommonsSerializationConfig {\n dateTimeInUtc?: boolean;\n dateTimeWithTimezone?: boolean;\n dateTimeWithMillis?: boolean;\n filtersDateOnlyDisabled?: boolean;\n}\n\nexport const COMMONS_MODULE_CONFIG_IT = new InjectionToken<CommonsModuleConfig>('COMMONS_MODULE_CONFIG');\n","import {DestroyRef, Injectable, computed, effect, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {Title} from '@angular/platform-browser';\nimport {ActivatedRouteSnapshot, NavigationEnd, Router} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {PrimeNGConfig} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {LoggerService} from '../log/logger.service';\nimport {CommonsMenuItem} from '../models/menu.model';\nimport {IUser} from '../models/user.model';\nimport {BreadcrumbMenuItem, CommonsRouteData} from '../router/router.model';\nimport {BROWSER_STORAGE_IT} from './tokens/browser-storage.token';\nimport {COMMONS_MODULE_CONFIG_IT} from './tokens/module-config.token';\n\n@Injectable()\nexport class CommonsService {\n // internal\n private readonly logger = inject(LoggerService).create('CommonsService');\n private readonly router = inject(Router);\n private readonly primengConfig = inject(PrimeNGConfig);\n private readonly translate = inject(TranslateService);\n private readonly titleService = inject(Title);\n private readonly moduleConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly localStorage = inject(BROWSER_STORAGE_IT);\n private readonly destroyRef = inject(DestroyRef);\n\n // breadcrumbs\n public readonly breadcrumbHome = signal<CommonsMenuItem | null>({\n icon: 'pi pi-home',\n routerLink: '/'\n });\n public readonly breadcrumbs = signal<CommonsMenuItem[]>([]);\n private breadcrumbsTranslateSubscription?: Subscription;\n private breadcrumbHomeTranslateSubscription?: Subscription;\n\n // visual\n /**\n * @deprecated Use layout colorScheme instead.\n */\n public colorScheme = signal(this.moduleConfig?.app?.colorScheme ?? 'light');\n /**\n * @deprecated Use layout colorScheme instead.\n */\n public colorSchemeIsLight = computed(() => this.colorScheme() === 'light');\n\n // user\n public user = signal<IUser | undefined>(undefined);\n public userRoles = signal<Array<string>>([]);\n\n // APP section\n public appName = signal(this.moduleConfig?.app?.name ?? 'app.name');\n public appOwner = signal(this.moduleConfig?.app?.owner ?? 'app.owner');\n\n /**\n * @deprecated Use layout app logo instead.\n */\n private appLogoLight = signal(\n this.moduleConfig?.app?.logoPathLight ? this.moduleConfig.app.logoPathLight : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n /**\n * @deprecated Use layout app logo instead.\n */\n private appLogoDark = signal(this.moduleConfig?.app?.logoPathDark ? this.moduleConfig.app.logoPathDark : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png');\n /**\n * @deprecated Use layout app logo instead.\n */\n public appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));\n\n /**\n * @deprecated Use layout app logo instead.\n */\n private appLogoNameLight = signal(\n this.moduleConfig?.app?.logoNamePathLight ? this.moduleConfig.app.logoNamePathLight : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png'\n );\n /**\n * @deprecated Use layout app logo instead.\n */\n private appLogoNameDark = signal(\n this.moduleConfig?.app?.logoNamePathDark ? this.moduleConfig.app.logoNamePathDark : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png'\n );\n /**\n * @deprecated Use layout app logo instead.\n */\n public appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));\n\n public getDefaultLocale() {\n const browserLang = this.translate.getBrowserLang();\n if (browserLang && this.appLocales().some(l => l === browserLang)) {\n return browserLang;\n }\n return this.appLocales()?.length > 0 ? this.appLocales()[0] : 'en';\n }\n\n public appLocales = signal(this.moduleConfig?.app?.locales ?? ['en']);\n private _appLocale = signal<string>(this.initAppLocale());\n public appLocale = computed(() => this._appLocale());\n\n private initAppLocale(): string {\n const lsLang = this.localStorage.getItem('lang');\n if (lsLang && this.appLocales().some(l => l === lsLang)) {\n return lsLang;\n }\n return this.getDefaultLocale();\n }\n\n public setAppLocale(language: string) {\n if (this.appLocales().some(l => l === language)) {\n this.translate.use(language);\n this._appLocale.set(language);\n if (language !== this.getDefaultLocale()) this.localStorage.setItem('lang', language);\n else this.localStorage.removeItem('lang');\n }\n }\n\n public clearAppLocale() {\n this.localStorage.removeItem('lang');\n this._appLocale.set(this.getDefaultLocale());\n }\n\n public appDataLocales = signal(this.moduleConfig?.app?.dataLocales ?? ['en']);\n private _appDataLocale = signal<string>(this.initAppDataLocale());\n public appDataLocale = computed(() => this._appDataLocale());\n\n private initAppDataLocale(): string {\n const dataLang = this.localStorage.getItem('dataLang');\n if (dataLang && this.appDataLocales().some(dl => dl === dataLang)) {\n return dataLang;\n }\n return this.appDataLocales()?.length > 0 ? this.getDefaultLocale() : 'en';\n }\n\n public setAppDataLocale(dataLocale: string) {\n if (this.appDataLocales().some(dl => dl === dataLocale)) {\n this._appDataLocale.set(dataLocale);\n\n if (dataLocale !== this.getDefaultLocale()) this.localStorage.setItem('dataLang', dataLocale);\n else this.localStorage.removeItem('dataLang');\n }\n }\n\n public clearAppDataLocale() {\n this.localStorage.removeItem('lang');\n this._appDataLocale.set(this.getDefaultLocale());\n }\n\n public appVersion = signal(this.moduleConfig?.app?.version);\n\n constructor() {\n // ripple\n this.primengConfig.ripple = true;\n\n effect(\n () => {\n const appLocales = this.appLocales();\n if (appLocales) {\n this.setAppLocale(this.initAppLocale());\n this.translate.langs = this.appLocales();\n }\n\n const appDataLocales = this.appDataLocales();\n if (appDataLocales) this.setAppDataLocale(this.initAppDataLocale());\n },\n {allowSignalWrites: true}\n );\n\n this.router.events\n .pipe(\n // Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end\n filter(event => event instanceof NavigationEnd),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n\n this.translate\n .stream('mngPrime')\n .pipe(takeUntilDestroyed())\n .subscribe(value => this.primengConfig.setTranslation(value));\n }\n\n public initialize() {\n this.logger.debug('Initialize');\n }\n\n // BREADCRUMB actions\n public findBreadcrumbItem(item: CommonsMenuItem): CommonsMenuItem | null {\n const items = this.breadcrumbs();\n if (item.id) {\n return items.find(i => i.id && i.id === item.id) ?? null;\n } else if (item.routerLink) {\n const routerLinkStr = Array.isArray(item.routerLink) ? item.routerLink.join('/') : item.routerLink;\n return items.find(i => i.routerLink && (Array.isArray(i.routerLink) ? i.routerLink.join('/') : i.routerLink) === routerLinkStr) ?? null;\n } else if (item.positionIndex) {\n return items.find(i => i.positionIndex && i.positionIndex === i.positionIndex) ?? null;\n } else if (item.label) {\n return items.find(i => i.label && i.label === i.label) ?? null;\n } else if (item.icon) {\n return items.find(i => i.icon && i.icon === i.icon) ?? null;\n }\n return null;\n }\n\n public updateBreadcrumbItem(item: CommonsMenuItem): boolean {\n const items = [...this.breadcrumbs()];\n let posIdx = -1;\n if (item.id) {\n posIdx = items.findIndex(i => i.id && i.id === item.id);\n } else if (item.routerLink) {\n const routerLinkStr = Array.isArray(item.routerLink) ? item.routerLink.join('/') : item.routerLink;\n posIdx = items.findIndex(i => i.routerLink && (Array.isArray(i.routerLink) ? i.routerLink.join('/') : i.routerLink) === routerLinkStr);\n } else if (item.positionIndex) {\n posIdx = items.findIndex(i => i.positionIndex && i.positionIndex === i.positionIndex);\n } else if (item.label) {\n posIdx = items.findIndex(i => i.label && i.label === i.label);\n } else if (item.icon) {\n posIdx = items.findIndex(i => i.icon && i.icon === i.icon);\n }\n\n if (posIdx < 0) {\n return false;\n }\n\n items[posIdx] = {\n ...items[posIdx],\n ...item,\n updated: true\n };\n\n this.breadcrumbs.set(items);\n\n return true;\n }\n\n private updateBreadcrumbs() {\n if (this.breadcrumbsTranslateSubscription) {\n this.breadcrumbsTranslateSubscription.unsubscribe();\n this.breadcrumbsTranslateSubscription = undefined;\n }\n if (this.breadcrumbHomeTranslateSubscription) {\n this.breadcrumbHomeTranslateSubscription.unsubscribe();\n this.breadcrumbHomeTranslateSubscription = undefined;\n }\n\n const rootRoute = this.router.routerState.snapshot.root;\n\n const homeBreadcrumb = this.generateHomeBreadcrumb(rootRoute);\n if (homeBreadcrumb) {\n if (homeBreadcrumb.label) {\n this.breadcrumbHomeTranslateSubscription = this.translate\n .get(homeBreadcrumb.label)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(i18n => {\n homeBreadcrumb.label = i18n;\n this.breadcrumbHome.set(homeBreadcrumb);\n });\n } else {\n this.breadcrumbHome.set(homeBreadcrumb);\n }\n }\n\n const breadcrumbs: CommonsMenuItem[] = [];\n this.generateBreadcrumbs(rootRoute, [], breadcrumbs);\n\n breadcrumbs.forEach((b, idx) => {\n b.positionIndex = idx;\n });\n\n const i18nKeys: Array<string> = breadcrumbs.filter(b => typeof b.label === 'string').map(b => b.label!);\n if (i18nKeys.length > 0) {\n this.breadcrumbsTranslateSubscription = this.translate\n .get(i18nKeys)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(i18n => {\n // Construct the breadcrumb hierarchy\n breadcrumbs.forEach(b => {\n if (b.label && i18n[b.label]) {\n b.label = i18n[b.label];\n }\n });\n\n // Emit the new breadcrumbs\n this.breadcrumbs.set(breadcrumbs);\n });\n } else {\n this.breadcrumbs.set(breadcrumbs);\n }\n }\n\n private generateHomeBreadcrumb(route: ActivatedRouteSnapshot | null): CommonsMenuItem | null {\n if (!route) {\n return null;\n }\n\n const routeData = route.data as CommonsRouteData;\n const breadcrumbRouteData = routeData?.breadcrumb;\n if (breadcrumbRouteData && typeof breadcrumbRouteData === 'object' && 'isHome' in breadcrumbRouteData) {\n if (breadcrumbRouteData.isHome === false) {\n return null;\n }\n const breadcrumb = this.createBreadcrumb('/', breadcrumbRouteData, true);\n if (breadcrumb) {\n if (typeof breadcrumb.icon === 'undefined') {\n breadcrumb.icon = 'pi pi-home';\n }\n return breadcrumb;\n }\n } else {\n return this.generateHomeBreadcrumb(route.firstChild);\n }\n return null;\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null, parentUrlSegments: string[], breadcrumbs: CommonsMenuItem[]) {\n if (!route) {\n return;\n }\n\n const routeData = route.data as CommonsRouteData;\n const routeUrlSegments = parentUrlSegments.concat(route.url.map(url => url.path));\n const routeUrl = `/${routeUrlSegments.join('/')}`;\n if (routeData?.breadcrumb) {\n const breadcrumbRouteData = routeData.breadcrumb;\n\n if (Array.isArray(breadcrumbRouteData)) {\n for (const breadcrumbRouteDataItem of breadcrumbRouteData) {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteDataItem);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n } else if (typeof breadcrumbRouteData === 'function') {\n breadcrumbs.push(...breadcrumbRouteData(routeUrl, route));\n } else {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteData);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n }\n this.generateBreadcrumbs(route.firstChild, routeUrlSegments, breadcrumbs);\n }\n\n private createBreadcrumb(routeUrl: string, routeBreadcrumb: string | BreadcrumbMenuItem, includeHome = false): CommonsMenuItem | null {\n const existingBreadcrumb = this.findBreadcrumbItem({routerLink: routeUrl});\n if (existingBreadcrumb?.updated) {\n return existingBreadcrumb;\n }\n if (typeof routeBreadcrumb === 'string') {\n // check for updated existing breadcrumb\n return {\n id: routeUrl,\n label: routeBreadcrumb,\n routerLink: routeUrl\n };\n } else {\n if (!includeHome && typeof routeBreadcrumb.isHome !== 'undefined') {\n // home should not be included\n return null;\n }\n if (typeof routeBreadcrumb.routerLink === 'undefined') {\n routeBreadcrumb.routerLink = routeUrl;\n }\n routeBreadcrumb.id = routeUrl;\n return routeBreadcrumb;\n }\n }\n\n // TITLE section\n\n public setPageTitle(title?: string) {\n let currentRoute = this.router.routerState.snapshot.root;\n while (currentRoute.firstChild) {\n currentRoute = currentRoute.firstChild;\n }\n\n const routeData = currentRoute.data as CommonsRouteData;\n const pageTitle = title ?? routeData.pageTitle;\n\n this.titleService.setTitle(this.formatPageTitle(pageTitle));\n }\n\n private formatPageTitle(titlePrefix?: string) {\n const titlePieces = [];\n\n if (titlePrefix) {\n titlePieces.push(this.translate.instant(titlePrefix));\n }\n\n titlePieces.push(this.translate.instant('app.name'));\n\n return titlePieces.join(' - ');\n }\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {CommonsService} from '../../../services/commons.service';\n\n/**\n * @deprecated Use ErrorPageComponent from layout instead.\n */\n@Component({\n standalone: true,\n selector: 'mng-error-page-deprecated',\n imports: [ButtonModule, TranslateModule, RouterLink],\n styleUrls: ['error.page.component.scss'],\n templateUrl: './error.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ErrorPageComponent {\n constructor(public commons: CommonsService) {}\n}\n","<div [class]=\"'exception-body min-h-screen ' + (commons.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"commons.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"commons.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {CommonsService} from '../../../services/commons.service';\n\n/**\n * @deprecated Use ErrorPageComponent from layout instead.\n */\n@Component({\n standalone: true,\n selector: 'mng-not-found-page-deprecated',\n imports: [ButtonModule, RouterLink, TranslateModule],\n styleUrls: ['not-found.page.component.scss'],\n templateUrl: './not-found.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotFoundPageComponent {\n constructor(public commons: CommonsService) {}\n}\n","<div [class]=\"'exception-body min-h-screen ' + (commons.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"commons.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"commons.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","export type FilterMatchModeType =\n | 'equals'\n | 'notEquals'\n | 'contains'\n | 'notContains'\n | 'in'\n | 'notIn'\n | 'startsWith'\n | 'endsWith'\n | 'lessThan'\n | 'lessThanOrEqualTo'\n | 'greaterThan'\n | 'greaterThanOrEqualTo'\n | 'between'\n | 'exists'\n | 'doesNotExist';\nexport type FilterMatchModeExtendedType = FilterMatchModeType | string;\n\nexport class FilterMatchMode {\n public static Equals: FilterMatchModeType = 'equals';\n public static EqualsAbbr = 'eq';\n\n public static NotEquals: FilterMatchModeType = 'notEquals';\n public static NotEqualsAbbr = 'ne';\n\n public static Contains: FilterMatchModeType = 'contains';\n public static ContainsAbbr = 'cn';\n\n public static NotContains: FilterMatchModeType = 'notContains';\n public static NotContainsAbbr = 'nc';\n\n public static In: FilterMatchModeType = 'in';\n public static InAbbr = 'in';\n\n public static NotIn: FilterMatchModeType = 'notIn';\n public static NotInAbbr = 'ni';\n\n public static StartsWith: FilterMatchModeType = 'startsWith';\n public static StartsWithAbbr = 'sw';\n\n public static EndsWith: FilterMatchModeType = 'endsWith';\n public static EndsWithAbbr = 'ew';\n\n public static LessThan: FilterMatchModeType = 'lessThan';\n public static LessThanAbbr = 'lt';\n\n public static LessThanOrEqualTo: FilterMatchModeType = 'lessThanOrEqualTo';\n public static LessThanOrEqualToAbbr = 'le';\n\n public static GreaterThan: FilterMatchModeType = 'greaterThan';\n public static GreaterThanAbbr = 'gt';\n\n public static GreaterThanOrEqualTo: FilterMatchModeType = 'greaterThanOrEqualTo';\n public static GreaterThanOrEqualToAbbr = 'ge';\n\n public static Between: FilterMatchModeType = 'between';\n public static BetweenAbbr = 'bt';\n\n public static Exists: FilterMatchModeType = 'exists';\n public static ExistsAbbr = 'ex';\n\n public static DoesNotExist: FilterMatchModeType = 'doesNotExist';\n public static DoesNotExistAbbr = 'nx';\n\n public static getAbbreviation(mode: string): string | null {\n switch (mode) {\n case FilterMatchMode.Equals:\n return FilterMatchMode.EqualsAbbr;\n case FilterMatchMode.NotEquals:\n return FilterMatchMode.NotEqualsAbbr;\n case FilterMatchMode.Contains:\n return FilterMatchMode.ContainsAbbr;\n case FilterMatchMode.NotContains:\n return FilterMatchMode.NotContainsAbbr;\n case FilterMatchMode.In:\n return FilterMatchMode.InAbbr;\n case FilterMatchMode.NotIn:\n return FilterMatchMode.NotInAbbr;\n case FilterMatchMode.StartsWith:\n return FilterMatchMode.StartsWithAbbr;\n case FilterMatchMode.EndsWith:\n return FilterMatchMode.EndsWithAbbr;\n case FilterMatchMode.LessThan:\n return FilterMatchMode.LessThanAbbr;\n case FilterMatchMode.LessThanOrEqualTo:\n return FilterMatchMode.LessThanOrEqualToAbbr;\n case FilterMatchMode.GreaterThan:\n return FilterMatchMode.GreaterThanAbbr;\n case FilterMatchMode.GreaterThanOrEqualTo:\n return FilterMatchMode.GreaterThanOrEqualToAbbr;\n case FilterMatchMode.Between:\n return FilterMatchMode.BetweenAbbr;\n case FilterMatchMode.Exists:\n return FilterMatchMode.ExistsAbbr;\n case FilterMatchMode.DoesNotExist:\n return FilterMatchMode.DoesNotExistAbbr;\n default:\n return null;\n }\n }\n\n public static fromAbbreviation(abbr: string): string | null {\n switch (abbr) {\n case FilterMatchMode.EqualsAbbr:\n return FilterMatchMode.Equals;\n case FilterMatchMode.NotEqualsAbbr:\n return FilterMatchMode.NotEquals;\n case FilterMatchMode.ContainsAbbr:\n return FilterMatchMode.Contains;\n case FilterMatchMode.NotContainsAbbr:\n return FilterMatchMode.NotContains;\n case FilterMatchMode.InAbbr:\n return FilterMatchMode.In;\n case FilterMatchMode.NotInAbbr:\n return FilterMatchMode.NotIn;\n case FilterMatchMode.StartsWithAbbr:\n return FilterMatchMode.StartsWith;\n case FilterMatchMode.EndsWithAbbr:\n return FilterMatchMode.EndsWith;\n case FilterMatchMode.LessThanAbbr:\n return FilterMatchMode.LessThan;\n case FilterMatchMode.LessThanOrEqualToAbbr:\n return FilterMatchMode.LessThanOrEqualTo;\n case FilterMatchMode.GreaterThanAbbr:\n return FilterMatchMode.GreaterThan;\n case FilterMatchMode.GreaterThanOrEqualToAbbr:\n return FilterMatchMode.GreaterThanOrEqualTo;\n case FilterMatchMode.BetweenAbbr:\n return FilterMatchMode.Between;\n case FilterMatchMode.ExistsAbbr:\n return FilterMatchMode.Exists;\n case FilterMatchMode.DoesNotExistAbbr:\n return FilterMatchMode.DoesNotExist;\n default:\n return null;\n }\n }\n}\n","import {Params} from '@angular/router';\n\nimport {TableLazyLoadEvent} from 'primeng/table';\n\nimport {CommonsInternalError} from '../error/error.model';\nimport {dateToIsoString} from '../helpers/date';\nimport {DataListFilter, DataListFilterValueType, DataListFiltersType, DataListParams} from './data-list.model';\nimport {FilterMatchMode} from './filter-match.model';\nimport {CommonsFilterMetadata} from './filter-metadata.model';\n\n/**\n * Converts a TableLazyLoadEvent to DataListParams.\n *\n * @param {TableLazyLoadEvent} event - The event containing the data to convert.\n * @return {DataListParams} - The converted DataListParams object.\n */\nexport function fromTableLoadToDataListParams(event: TableLazyLoadEvent): DataListParams {\n const params: DataListParams = {};\n\n if (event.first != null) {\n params.offset = event.first;\n }\n if (event.rows != null) {\n params.limit = event.rows;\n }\n\n if (typeof event.globalFilter === 'string') {\n params.search = event.globalFilter;\n } else if (Array.isArray(event.globalFilter) && event.globalFilter.length > 0) {\n params.search = event.globalFilter[0];\n }\n\n if (Array.isArray(event.multiSortMeta) && event.multiSortMeta.length > 0) {\n params.sort = event.multiSortMeta.map(m => ({property: m.field, ascending: m.order >= 0}));\n }\n\n if (event.filters) {\n params.filters = Object.keys(event.filters).reduce((acc, key) => {\n const filter: DataListFilter = {};\n const eventFilter: CommonsFilterMetadata | CommonsFilterMetadata[] | undefined = event.filters?.[key as keyof object];\n if (Array.isArray(eventFilter)) {\n filter.value = eventFilter[0].value;\n filter.matchMode = eventFilter[0].matchMode;\n filter.caseSensitive = eventFilter[0].caseSensitive;\n } else if (eventFilter !== undefined) {\n filter.value = eventFilter.value;\n filter.matchMode = eventFilter.matchMode;\n filter.caseSensitive = eventFilter.caseSensitive;\n }\n // handle search case sensitivity to be also written on searchCaseSensitive\n if (key === 'global' && typeof params.search === 'string' && filter.caseSensitive !== undefined) {\n params.searchCaseSensitive = filter.caseSensitive;\n return acc;\n }\n return {...acc, [key]: filter};\n }, {});\n }\n\n return params;\n}\n\n/**\n * Converts the given parameters to URL query parameters.\n * Sorts are formatted in Medius data API sort query language: `asc:prop1,desc:prop2`, ...\n * Filter keys are \"flattened\" in the new object, values are formatted in Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {DataListParams} params - The parameters to convert.\n * @param {DataListParams|null} defaults - The default parameters used if no matching property in params is available. Defaults to { limit: 25, offset: 0 } if not provided.\n * @returns {Params} - The URL query parameters object.\n */\nexport function dataListParamsToUrlQuery(\n params: DataListParams<any, any>,\n defaults: DataListParams<any, any> | null = {\n limit: 25,\n offset: 0\n }\n): Params {\n const urlParams: Params = {};\n\n if (params.limit && params.limit !== defaults?.limit) {\n urlParams['limit'] = params.limit;\n }\n if (params.offset && params.offset !== defaults?.offset) {\n urlParams['offset'] = params.offset;\n }\n if (params.search && params.search !== defaults?.search) {\n urlParams['q'] = `${params.searchCaseSensitive ? `cs:` : ''}${params.search}`;\n }\n if (params.sort && Array.isArray(params.sort) && params.sort.length > 0) {\n if (\n defaults?.sort == null ||\n !Array.isArray(defaults.sort) ||\n defaults.sort.length === 0 ||\n params.sort.length !== defaults.sort.length ||\n defaults.sort.some((ds, idx) => ds.property !== params.sort![idx].property || (ds.ascending ?? true) !== (params.sort![idx].ascending ?? true))\n ) {\n urlParams['sort'] = dataListParamsSortToUrlQuery(params);\n }\n }\n if (params.filters) {\n Object.keys(params.filters).forEach(k => {\n // global search filter is already included in the 'q' parameter, no need to include it here\n if (k === 'global') {\n return;\n }\n const paramFilter = params.filters![k as keyof object]!;\n const defaultFilter = defaults?.filters?.[k as keyof object];\n if (\n defaultFilter &&\n ((Array.isArray(defaultFilter.value) &&\n Array.isArray(paramFilter.value) &&\n defaultFilter.value.length === paramFilter.value.length &&\n defaultFilter.value.every((v, idx) => {\n const value = (paramFilter.value as Array<DataListFilterValueType>)[idx];\n if (value instanceof Date && v instanceof Date) return value.getTime() === v.getTime();\n else return value === v;\n })) || // handle arrays\n defaultFilter.value === paramFilter.value) &&\n defaultFilter.matchMode === paramFilter.matchMode &&\n (defaultFilter.caseSensitive ?? false) === (paramFilter.caseSensitive ?? false)\n ) {\n return;\n }\n\n if (\n paramFilter.value == null &&\n defaultFilter?.value == null &&\n paramFilter.matchMode !== FilterMatchMode.Exists &&\n paramFilter.matchMode !== FilterMatchMode.DoesNotExist\n ) {\n return;\n }\n\n urlParams[k] = dataListParamsFiltersToUrlQuery(params, k, true);\n });\n }\n if (defaults?.filters) {\n // add other defaults\n const paramFilterKeys = params.filters ? Object.keys(params.filters) : [];\n Object.keys(defaults.filters)\n .filter(k => paramFilterKeys.indexOf(k) < 0)\n .forEach(k => {\n urlParams[k] = dataListParamsFiltersToUrlQuery(defaults, k);\n });\n }\n\n return urlParams;\n}\n\n/**\n * Merges the provided parameters with default values and returns the merged object.\n *\n * @param {DataListParams} params - The parameters to merge with defaults.\n * @param {DataListParams} defaults - The default values to merge with params (optional, default is { limit: 25, offset: 0 }).\n * @returns {DataListParams} - The merged parameters object.\n */\nexport function mergeDataListParamsWithDefaults<Sorts = any, Filters extends keyof any = any>(\n params: DataListParams<Sorts, Filters>,\n defaults: DataListParams<Sorts, Filters> = {\n limit: 25,\n offset: 0\n }\n): DataListParams<Sorts, Filters> {\n const merged: DataListParams<Sorts, Filters> = {\n limit: params.limit ?? defaults.limit,\n offset: params.offset ?? defaults.offset,\n search: params.search ?? defaults.search,\n sort: (params.sort ?? defaults.sort)?.map(s => ({...s}))\n };\n\n if (params.filters) {\n merged.filters = {} as DataListFiltersType<Filters>;\n Object.entries(params.filters).forEach(([key, value]) => (merged.filters![key as Filters] = {...(value as DataListFilter)}));\n }\n if (defaults.filters) {\n if (!merged.filters) merged.filters = {} as DataListFiltersType<Filters>;\n Object.entries(defaults.filters).forEach(([key, value]) => {\n if (merged.filters![key as Filters] === undefined) {\n merged.filters![key as Filters] = {...(value as DataListFilter)};\n }\n });\n }\n\n return merged;\n}\n\n/**\n * Converts an object of parameters to a URL query string for sorting.\n * Sorts are formatted in Medius data API sort query language: `asc:prop1,desc:prop2`, ...\n *\n * @param {DataListParams} params - An optional object containing sort parameters.\n * @returns A string representing the URL query or undefined if no sort parameters are provided.\n */\nexport function dataListParamsSortToUrlQuery(params?: DataListParams<any, any>): string | undefined {\n return params && Array.isArray(params.sort)\n ? params.sort.map(s => `${s.ascending === true || s.ascending === undefined ? 'asc' : 'desc'}:${String(s.property)}`).join(',')\n : undefined;\n}\n\n/**\n * Converts a specific filter parameter (by key) from DataListParams object to a URL query string.\n * Filter keys are \"flattened\" in the new object, values are formatted in Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {DataListParams<any, Filters> | undefined} params - The DataListParams object containing the filters.\n * @param {Filters} key - The key of the filter to convert.\n * @param {boolean} [allowNull=false] - Indicates whether to allow null values in the query string.\n * @return {string | undefined} - The URL query string representing the specified filter, or undefined if the filter is not found.\n */\nexport function dataListParamsFiltersToUrlQuery<Filters extends keyof any = string>(\n params: DataListParams<any, Filters> | undefined,\n key: Filters,\n allowNull = false\n): string | undefined {\n const paramFilter = params?.filters?.[key];\n return dataListParamsFilterToUrlQuery(paramFilter, allowNull);\n}\n\n/**\n * Converts a filter to a URL query string.\n * Filter keys are \"flattened\" in the new object, values are formatted in Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {DataListFilter} paramFilter - The filter object to be converted.\n * @param {boolean} [allowNull=false] - Indicates whether to allow null values in the filter.\n * @returns {string|undefined} - The filter converted to a URL query string, or undefined if no filter is provided or the filter has empty or invalid values.\n * @throws {CommonsInternalError} - If the filter has invalid values.\n */\nexport function dataListParamsFilterToUrlQuery(paramFilter?: DataListFilter, allowNull = false): string | undefined {\n const filterValueAsArray = Array.isArray(paramFilter?.value) ? paramFilter!.value.filter(v => v !== undefined && (allowNull || v !== null)) : undefined;\n const matchMode = paramFilter?.matchMode ?? FilterMatchMode.Equals;\n if (\n paramFilter === undefined ||\n (!allowNull && matchMode !== 'exists' && matchMode !== 'doesNotExist' && paramFilter.value == null) ||\n (typeof paramFilter.value === 'string' && paramFilter.value.length === 0) ||\n (Array.isArray(filterValueAsArray) && filterValueAsArray.length === 0)\n ) {\n // no need to include filters for empty values\n return undefined;\n }\n\n if (matchMode === FilterMatchMode.Between && !(Array.isArray(filterValueAsArray) && filterValueAsArray.length === 2)) {\n throw new CommonsInternalError(`Filter match mode between requires exactly 2 values: ${paramFilter.value}`);\n }\n\n if ((matchMode === FilterMatchMode.In || matchMode === FilterMatchMode.NotIn) && (!Array.isArray(filterValueAsArray) || filterValueAsArray.length === 0)) {\n throw new CommonsInternalError(`Filter match mode ${matchMode} requires non-empty array: ${paramFilter.value}`);\n }\n\n if (([FilterMatchMode.In, FilterMatchMode.NotIn, FilterMatchMode.Between] as string[]).indexOf(matchMode) === -1 && Array.isArray(filterValueAsArray)) {\n throw new CommonsInternalError(`Filter match mode ${matchMode} must not be array: ${paramFilter.value}`);\n }\n\n const noVal = paramFilter.matchMode === FilterMatchMode.Exists || paramFilter.matchMode === FilterMatchMode.DoesNotExist;\n const urlValuePart = noVal ? '' : `:${dataListParamsFilterValueToUrlString(filterValueAsArray ?? paramFilter.value, allowNull)}`;\n\n return `${paramFilter.caseSensitive ? 'cs:' : paramFilter.caseSensitive === false ? 'ci:' : ''}${FilterMatchMode.getAbbreviation(matchMode) ?? matchMode}${urlValuePart}`;\n}\n\n/**\n * Converts URL query parameters to a DataListParams object.\n * Sorts are formatted from Medius data API sort query language: `asc:prop1,desc:prop2`, ...\n * Filter keys are all keys in Params object that are not matched elsewhere, values are formatted from Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {Params} urlParams - The URL query parameters.\n * @return {DataListParams} - The converted DataListParams object.\n */\nexport function fromUrlQueryToDataListParams(urlParams: Params, searchAsGlobal = false): DataListParams {\n const params: DataListParams = {};\n\n Object.entries(urlParams).forEach(([urlParamKey, urlParamValue]) => {\n if (urlParamKey === 'limit') {\n params.limit = +urlParamValue;\n if (isNaN(params.limit) || params.limit < 0) {\n delete params.limit;\n }\n } else if (urlParamKey === 'offset') {\n params.offset = +urlParamValue;\n if (isNaN(params.offset) || params.offset < 0) {\n delete params.offset;\n }\n } else if (urlParamKey === 'q') {\n if (typeof urlParamValue === 'string' && urlParamValue.length > 0) {\n const searchQuery = urlParamValue.startsWith('cs:') || urlParamValue.startsWith('ci:') ? urlParamValue.substring(3) : urlParamValue;\n const caseSensitive = urlParamValue.startsWith('cs:');\n\n params.search = searchQuery;\n params.searchCaseSensitive = caseSensitive;\n\n if (searchAsGlobal) {\n if (!params.filters) {\n params.filters = {};\n }\n params.filters['global'] = {\n value: searchQuery,\n matchMode: FilterMatchMode.Contains,\n caseSensitive: caseSensitive\n };\n }\n }\n } else if (urlParamKey === 'sort') {\n if (typeof urlParamValue === 'string') {\n params.sort = urlParamValue.split(',').map(s => {\n const [direction, property] = s.split(':');\n return {property: (property ?? direction) as keyof object, ascending: direction !== 'desc'};\n });\n } else {\n throw new CommonsInternalError(`String is expected as value for '${urlParamKey}' when converting from urlParams`);\n }\n } else if (typeof urlParamValue === 'string') {\n if (urlParamValue.length === 0) {\n // empty string should be ignored\n return;\n }\n\n const filterParts = urlParamValue.split(':');\n let partIdx = 0;\n\n // case sensitive\n let caseSensitive: boolean | undefined = undefined;\n if (filterParts[partIdx] === 'cs' || filterParts[partIdx] === 'ci') {\n caseSensitive = filterParts[partIdx++] === 'cs';\n }\n\n // match mode\n const matchMode = filterParts[partIdx] ? FilterMatchMode.fromAbbreviation(filterParts[partIdx]) ?? filterParts[partIdx] : FilterMatchMode.Equals;\n partIdx++;\n\n const noVal = matchMode === FilterMatchMode.Exists || matchMode === FilterMatchMode.DoesNotExist;\n\n // value\n let value: string | string[] | undefined | null = undefined;\n if (!noVal) {\n if (filterParts.length < 2) {\n return;\n }\n\n if (partIdx === filterParts.length - 1) {\n value = filterParts[partIdx];\n } else if (partIdx < filterParts.length) {\n // array that should not be array, so join back together\n value = filterParts.slice(partIdx, filterParts.length).join(':');\n }\n\n if (value === undefined && matchMode !== FilterMatchMode.Exists && matchMode !== FilterMatchMode.DoesNotExist) {\n // if value undefined and match mode expects value, then skip\n return;\n }\n\n if (value === 'null') {\n value = null;\n }\n\n if ((matchMode === FilterMatchMode.In || matchMode === FilterMatchMode.NotIn || matchMode === FilterMatchMode.Between) && typeof value === 'string') {\n let arrayVal: string[] = [];\n // these match modes expect array\n if (value.indexOf('\"') >= 0) {\n const tokens: string[] = [];\n let currentToken = '';\n let explicitQuotes = false; //token is quoted, e.g. in:1,2,\"22\"\"\",\",123\"\"\"\n let quotesOpened = false; //token has started processing\n let quotesExplicitlyClosed = false; //token processing has finished, after single \" in quoted mode, or before , in not quoted\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i];\n\n // reset the tokenizer when seeing the token separator\n // only if either:\n // the quotes have not been opened yet (when there are no characters between separators),\n // the token has been explicitly closed (when we actually have explicit opening i.e., quotes as the first character)\n // or we have implicit quotes (i.e., quotes are not the first character)\n if (c === ',' && (!quotesOpened || quotesExplicitlyClosed || !explicitQuotes)) {\n tokens.push(currentToken);\n currentToken = '';\n quotesOpened = false;\n quotesExplicitlyClosed = false;\n explicitQuotes = false;\n } else if (c == '\"') {\n // escaped double-quotes\n if (explicitQuotes && i + 1 < value.length && value[i + 1] === '\"') {\n currentToken += c; // Append one double-quote to the current token\n i++; // Skip the next double-quote\n }\n // we encounter quotes again after they were the first character => we close the token\n else if (explicitQuotes) {\n quotesExplicitlyClosed = true;\n }\n // implicit quotes\n else if (quotesOpened) {\n currentToken += c;\n }\n // quotes are the first character => explicitly open the token\n else {\n currentToken = '';\n quotesOpened = true;\n explicitQuotes = true;\n }\n } else {\n if (quotesExplicitlyClosed) {\n return;\n }\n\n quotesOpened = true;\n currentToken += c;\n }\n }\n\n if (quotesOpened && !quotesExplicitlyClosed && explicitQuotes) {\n return;\n }\n\n // Append the last token after the loop ends\n tokens.push(currentToken.toString());\n\n arrayVal = tokens;\n } else {\n arrayVal = value.split(',');\n }\n\n if (matchMode === FilterMatchMode.Between && arrayVal.length !== 2) {\n return;\n }\n\n value = arrayVal;\n }\n\n if ((typeof value === 'string' && value.length === 0) || (Array.isArray(value) && value!.length === 0)) {\n // filter with empty value is to be ignored\n return;\n }\n } else {\n caseSensitive = undefined;\n }\n\n if (!params.filters) {\n params.filters = {};\n }\n\n params.filters[urlParamKey as keyof object] = {value: value, matchMode: matchMode, caseSensitive: caseSensitive};\n }\n });\n\n return params;\n}\n\n/**\n * Makes a copy of the given DataListParams object.\n *\n * @param {DataListParams<Sorts, Filters>} params - The DataListParams object to be copied.\n * @returns {DataListParams<Sorts, Filters>} - Returns a new copy of the DataListParams object.\n */\nexport function copyDataListParams<Sorts = string, Filters extends keyof any = string>(params: DataListParams<Sorts, Filters>): DataListParams<Sorts, Filters> {\n const copy: DataListParams<Sorts, Filters> = {\n offset: params.offset,\n limit: params.limit,\n search: params.search\n };\n\n if (params.sort) {\n copy.sort = params.sort?.map(s => ({...s}));\n }\n if (params.filters) {\n copy.filters = Object.entries(params.filters).reduce((acc, [key, value]) => {\n const filterValue = value as DataListFilter;\n return {\n ...acc,\n [key]: {\n ...filterValue,\n value: Array.isArray(filterValue.value) ? [...filterValue.value] : filterValue.value\n } as DataListFilter\n };\n }, {} as DataListFiltersType<Filters>);\n }\n\n return copy;\n}\n\n/**\n * Converts a value to a URL query param string representation.\n *\n * @param {unknown} value - The value to be converted.\n * @param {boolean} [allowNull=false] - Indicates whether null values are allowed.\n * @returns {string} The URL parameter representation of the value.\n * @throws {CommonsInternalError} If an undefined value is passed without allowNull set to true.\n * @throws {CommonsInternalError} If the value is an object (excluding Date).\n */\nexport function dataListParamsFilterValueToUrlString(value: unknown, allowNull = false): string {\n if (value === null && allowNull) return 'null';\n if (value == null) throw new CommonsInternalError('Undefined value cannot be converted to url param.'); // this should not happen, should be filtered out earlier\n if (Array.isArray(value))\n return value\n .map(v => dataListParamsFilterValueToUrlString(v, allowNull))\n .map(v => (v.indexOf(',') >= 0 || v.indexOf('\"') >= 0 ? `\"${v.replaceAll('\"', '\"\"')}\"` : v))\n .join(',');\n if (typeof value === 'object') {\n if (value instanceof Date) return dateToIsoString(value, 'dateTime', {utc: true});\n else {\n throw new CommonsInternalError('Filter value cannot be object');\n }\n }\n return String(value);\n}\n","import {ClassOptType, ServiceClassOptType} from '../models/class-service.model';\n\nexport type IDataProvider<ModelType = any, ServiceType = any, CT = ClassOptType<ModelType>, ST = ServiceClassOptType<ServiceType>> = {\n classType: CT;\n serviceType: ST;\n isDataProvider: boolean;\n};\n\n/**\n * A base data provider class used for handling data operations.\n *\n * @tparam Model - The type of data this data provider will handle.\n * @tparam Service - The type of service used by this data provider (optional).\n * @tparam ModelClass - The model type for the data provider (optional).\n * @tparam ServiceClass - The service type for the data provider (optional).\n */\nexport class DataProviderInst<Model, Service = any, ModelClass = ClassOptType<Model>, ServiceClass = ServiceClassOptType<Service>>\n implements IDataProvider<Model, Service, ModelClass, ServiceClass>\n{\n public constructor(\n public readonly classType: ModelClass,\n public readonly serviceType: ServiceClass\n ) {}\n\n public get isDataProvider() {\n return true;\n }\n}\n","import {ClassType, ServiceClassType} from '../models/class-service.model';\nimport {DataProviderInst} from './base.data-provider';\n\nexport class DataProvider extends DataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model>(): DataProviderInst<Model> {\n return dataProviderBase<Model>();\n }\n\n public static fromClass<Model>(type: ClassType<Model>): DataProviderInst<Model, undefined, ClassType<Model>, undefined> {\n return dataProviderFromClass<Model>(type);\n }\n\n public static fromClassWithService<Model, Service>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): DataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>> {\n return dataProviderFromClass<Model, Service>(type, serviceType);\n }\n\n public static fromService<Service, Model>(serviceType: ServiceClassType<Service>): DataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return dataProviderWithService<Service, Model>(serviceType);\n }\n}\n\nexport function dataProviderBase<Model>(): DataProviderInst<Model, undefined, undefined, undefined> {\n return new DataProviderInst<Model, undefined, undefined, undefined>(undefined, undefined);\n}\n\nexport function dataProviderWithService<Service, Model>(serviceType: ServiceClassType<Service>): DataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return new DataProviderInst<Model, Service, undefined, ServiceClassType<Service>>(undefined, serviceType);\n}\n\nexport function dataProviderFromClass<Model>(type: ClassType<Model>): DataProviderInst<Model, undefined, ClassType<Model>, undefined>;\nexport function dataProviderFromClass<Model, Service = any>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n): DataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>;\nexport function dataProviderFromClass<Model, Service = any, ServiceClass = ServiceClassType<Service>>(type: ClassType<Model>, serviceType?: ServiceClass) {\n return new DataProviderInst<Model, Service, ClassType<Model>, ServiceClass>(type, serviceType as ServiceClass);\n}\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n OnInit,\n Output,\n Type,\n ViewContainerRef,\n createComponent,\n inject\n} from '@angular/core';\n\nimport {CommonsInternalError} from '../error/error.model';\n\n@Directive({\n standalone: true,\n selector: '[mngComponent]'\n})\nexport class ComponentDirective<C> implements OnInit {\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef);\n private readonly applicationRef = inject(ApplicationRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n @Input({alias: 'mngComponent'}) component?: Type<C>;\n @Input({alias: 'injectionToken'}) componentIt?: InjectionToken<Type<C>>;\n @Input() inputs?: {[key: string]: any};\n @Input() attachToHost = false;\n @Input() parentInjector?: Injector;\n @Output('instanceCreated') private componentInstanceEventEmitter = new EventEmitter<C>();\n\n public componentRef!: ComponentRef<C>;\n\n ngOnInit() {\n let component: Type<C> | null = null;\n if (this.component) {\n component = this.component;\n } else if (this.componentIt) {\n component = this.injector.get(this.componentIt, null, {optional: true});\n }\n\n if (!component) {\n throw new CommonsInternalError(`Component cannot be created, no component (${this.component}) or no or invalid injection token provided (${this.componentIt}).`);\n }\n\n const elementInjector = this.parentInjector ?? this.injector;\n const environmentInjector = elementInjector.get(EnvironmentInjector, null, {optional: true}) ?? this.applicationRef.injector;\n\n if (this.attachToHost) {\n this.componentRef = createComponent(component, {\n hostElement: this.elementRef.nativeElement,\n environmentInjector: environmentInjector,\n elementInjector: elementInjector\n });\n } else {\n this.viewContainerRef.clear();\n this.componentRef = this.viewContainerRef.createComponent<any>(component, {\n environmentInjector: environmentInjector,\n injector: elementInjector\n });\n }\n\n if (this.inputs) {\n for (const input in this.inputs) {\n this.componentRef.setInput(input, this.inputs[input]);\n }\n }\n\n if (this.attachToHost) {\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n\n this.componentInstanceEventEmitter.next(this.componentRef.instance);\n }\n}\n","import {Directive, Input, TemplateRef, ViewContainerRef, inject} from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[mngTemplate]'\n})\nexport class TemplateDirective {\n public readonly template = inject(TemplateRef<any>);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n @Input() type!: string;\n @Input({required: true, alias: 'mngTemplate'}) name!: string;\n\n public getType(): string {\n return this.name;\n }\n\n public getViewContainerRef(): ViewContainerRef {\n return this.viewContainerRef;\n }\n}\n","import {EnumConstantType, EnumType} from '../helpers/type-helpers';\nimport {EnumValue} from './enum.model';\n\n/**\n * Returns array of names for constants in enum.\n * @param enumType Enum object.\n */\nexport function getEnumConstantNames(enumType: EnumType): Array<string> {\n return getEnumConstantNamesFromObject(enumType);\n}\n\n/**\n * Returns array of names for constants in enum.\n * @param enumObj Enum object.\n */\nexport function getEnumConstantNamesFromObject(enumObj: object): Array<string> {\n // in number enum, the numbers are also represented in objects and should be filtered out\n return Object.keys(enumObj).filter(v => isNaN(+v));\n}\n\n/**\n * Returns array of values for constants in enum.\n * @param enumType Enum object.\n */\nexport function getEnumConstantValues(enumType: EnumType): Array<EnumConstantType> {\n return Object.keys(enumType)\n .filter(v => isNaN(+v))\n .map(v => enumType[v]);\n}\n\n/**\n * Returns array of string values for constants in enum.\n * @param enumType Enum object.\n */\nexport function getEnumConstantValuesAsString(enumType: EnumType): Array<string> {\n return Object.keys(enumType).map(v => enumType[v as keyof object] as string);\n}\n\n/**\n * Returns array of number values for constants in enum.\n * @param enumType Enum object.\n */\nexport function getEnumConstantValuesAsNumber(enumType: EnumType): Array<number> {\n return Object.keys(enumType)\n .filter(v => !isNaN(+v))\n .map(v => +v);\n}\n\n/**\n * Returns array of type EnumValue for all constants in enum.\n * @param enumType Enum object.\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\nexport function fromEnumConstantsAsValueArray(enumType: EnumType, nameAsValue = false, titlePath?: string) {\n return getEnumConstantNames(enumType).map(n => <EnumValue>{name: n, title: `${titlePath ? `${titlePath}.` : ''}${n}`, value: nameAsValue ? n : enumType[n]});\n}\n\n/**\n * Returns array of type EnumValue for provided values in enum.\n * @param enumType Enum object.\n * @param values Enum values (constants).\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\nexport function fromEnumValuesAsValueArray<EnumConstant = EnumConstantType>(enumType: EnumType, values: Array<EnumConstant>, nameAsValue = false, titlePath?: string) {\n return values.map(v => {\n const k = getEnumConstantName(enumType, v);\n return {name: k, title: `${titlePath ? `${titlePath}.` : ''}${k}`, value: nameAsValue ? k : v} as EnumValue;\n });\n}\n\n/**\n * Gets constant name for value.\n * @param enumType Enum object.\n * @param value Value of enum constant.\n */\nexport function getEnumConstantName<EnumConstant = EnumConstantType>(enumType: EnumType, value: EnumConstant): string | null {\n if (typeof value === 'string') {\n return getEnumConstantNames(enumType).find(c => enumType[c] === value) ?? null;\n } else {\n return typeof enumType[value as keyof object] !== 'undefined' ? (enumType[value as keyof object] as string) : null;\n }\n}\n\n/**\n * Gets constant name for value.\n * @param enumObj Enum object.\n * @param value Value of enum constant.\n */\nexport function getEnumConstantNameFromObject<EnumConstant = EnumConstantType>(enumObj: object, value: EnumConstant): string | null {\n const enumObjAny = enumObj as any;\n if (typeof value === 'string') {\n return getEnumConstantNamesFromObject(enumObj).find(c => enumObjAny[c] === value) ?? null;\n } else {\n return typeof enumObjAny[value] !== 'undefined' ? (enumObjAny[value] as string) : null;\n }\n}\n","import {ClassType} from '../models/class-service.model';\n\ninterface DeepCopyPropsOptions {\n mapGettersToProperties?: boolean;\n}\n\nexport interface DeepCopyOptions<P = object> extends DeepCopyPropsOptions {\n objectPrototype?: ClassType<P>;\n}\n\nexport function objectDeepCopy<T = object, P = object>(obj: T, options: DeepCopyOptions<P> & {mapGettersToProperties: true}): T | Record<string, any>;\nexport function objectDeepCopy<T = object, P = object>(obj: T, options: DeepCopyOptions<P> & {objectPrototype: ClassType<P>} & {mapGettersToProperties?: false}): P;\nexport function objectDeepCopy<T = object, P = object>(\n obj: T,\n options: DeepCopyOptions<P> & {objectPrototype: ClassType<P>} & {mapGettersToProperties: true}\n): P | Record<string, any>;\nexport function objectDeepCopy<T = object, P = object>(obj: T, options?: DeepCopyOptions<P>): T;\n\nexport function objectDeepCopy<T = object, P = object>(obj: T, options?: DeepCopyOptions<P>): T | P | Record<string, any> {\n if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\n return obj;\n }\n\n // copy known object types by directly creating\n if (obj instanceof Date) {\n return new Date(+obj);\n } else if (obj instanceof File) {\n return new File([obj], obj.name, {\n type: obj.type,\n lastModified: obj.lastModified\n });\n }\n\n let copy;\n if (options?.mapGettersToProperties) {\n copy = {};\n } else {\n copy = options?.objectPrototype ? Object.create(options.objectPrototype['prototype' as keyof object]) : Object.create(Object.getPrototypeOf(obj));\n Object.assign(copy, obj);\n }\n\n for (const key of getObjectProperties(obj)) {\n const prop = obj[key as keyof object];\n copy[key] = handleProp(prop, {mapGettersToProperties: options?.mapGettersToProperties});\n }\n\n if (options?.mapGettersToProperties) {\n for (const getterKey of getObjectGetters(obj)) {\n const prop = obj[getterKey as keyof object];\n copy[getterKey] = handleProp(prop, {mapGettersToProperties: options?.mapGettersToProperties});\n }\n }\n\n return copy;\n}\n\nexport function objectDeepMerge(target: Record<string, any>, source: Record<string, any>): Record<string, any> {\n if (!isObject(source)) {\n return target;\n }\n\n for (const key of getObjectProperties(source)) {\n if (isObject(source[key])) {\n if (isObject(target[key])) {\n target[key] = objectDeepMerge(target[key], source[key]);\n } else {\n target[key] = objectDeepCopy(source[key]);\n }\n } else if (Array.isArray(source[key])) {\n if (!Array.isArray(target[key])) {\n target[key] = (source[key] as Array<unknown>).map(i => (isObject(i) ? objectDeepMerge({}, i as Record<string, unknown>) : i));\n }\n } else if (typeof target[key] === 'undefined') {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction isObject(obj: any) {\n return typeof obj === 'object' && obj !== null && !Array.isArray(obj);\n}\n\nfunction handleProp(prop: any, options?: DeepCopyPropsOptions) {\n if (Array.isArray(prop)) {\n return prop.map(i => objectDeepCopy(i, options));\n } else if (typeof prop === 'object' && prop !== null) {\n return objectDeepCopy(prop, options);\n } else {\n return prop;\n }\n}\n\nexport function getObjectProperties(obj: object) {\n return Object.keys(obj);\n}\n\nexport function getObjectGetters(obj: any): string[] {\n const getterSet = new Set<string>();\n let currObj = obj;\n\n while (currObj) {\n const getters = Object.entries(Object.getOwnPropertyDescriptors(currObj))\n .filter(([, descriptor]) => typeof descriptor.get === 'function')\n .filter(([key]) => key !== '__proto__')\n .map(([key]) => key);\n\n for (const getter of getters) {\n getterSet.add(getter);\n }\n\n currObj = Object.getPrototypeOf(currObj);\n }\n\n return Array.from(getterSet);\n}\n\nexport function getObjectPropertyByPath(value: any, path: string): any | undefined {\n if (path === '$') {\n // only return the root\n return value;\n }\n\n // Check for leading root object notation\n if (path.startsWith('$')) {\n path = path.substring(1);\n }\n\n // Check for leading .\n if (path.startsWith('.')) {\n path = path.substring(1);\n }\n\n if (path.indexOf('.') >= 0) {\n const pathSplit = path.split('.');\n let currValue = value;\n for (const p of pathSplit) {\n if (typeof currValue === 'undefined' || currValue === null) {\n return currValue;\n }\n\n if (!p.length) {\n // empty path, return current value\n return currValue;\n }\n\n const leftBracketIdx = p.indexOf('[');\n if (leftBracketIdx >= 0 && p.endsWith(']')) {\n // should be reference to array\n const arrayPath = p.substring(0, leftBracketIdx);\n const arrayIdx = +p.substring(leftBracketIdx + 1, p.length - 1);\n const array = currValue[arrayPath];\n if (Array.isArray(array)) {\n if (arrayIdx >= 0 && arrayIdx < array.length) {\n // valid index, continue on the path\n currValue = array[arrayIdx];\n continue;\n }\n }\n\n return undefined;\n } else if (typeof currValue === 'object') {\n currValue = currValue[p];\n }\n }\n return currValue;\n } else {\n return value[path];\n }\n}\n\nexport function flattenObjectKeys(objectModel: any): string[] {\n const flatten = (object: any, parent?: any) => {\n let results: any[] = [];\n for (const key in object) {\n const value = object[key];\n const thisKey = parent ? `${parent}.${key}` : `${key}`;\n\n results = results.concat(isObject(value) ? flatten(value, thisKey) : [[`${thisKey}`, value]]);\n }\n return results;\n };\n\n return flatten(objectModel);\n}\n","import {dateToIsoString} from './date';\nimport {objectDeepCopy} from './object';\n\nexport function escapeHtml(value: string): any {\n return value.replace(/</g, '<').replace(/>/g, '>');\n}\n\nexport function escapeHtmlAny(value?: any): any {\n if (typeof value === 'string') {\n return escapeHtml(value);\n } else if (typeof value === 'object') {\n const escapedValue: any = objectDeepCopy(value, {mapGettersToProperties: true});\n\n for (const key in value) {\n if (typeof value[key] === 'string') {\n escapedValue[key] = escapeHtml(value[key]);\n } else if (typeof value[key] === 'object') {\n escapedValue[key] = escapeHtmlAny(value[key]);\n } else {\n escapedValue[key] = value[key];\n }\n }\n return escapedValue;\n }\n\n return value;\n}\n\n/**\n * Stringifies a value - primitives with toString, dates with dateUtil, objects with JSON.stringify.\n * @param value Any value.\n */\nexport function stringify(value: any): string {\n if (value === null) {\n return 'null';\n }\n if (typeof value === 'undefined') {\n return 'undefined';\n }\n // eliminate functions, cause they could fall into objects\n if (typeof value === 'function') {\n return `Function ${value.name ?? 'anonymous'}()`;\n }\n if (typeof value === 'object') {\n // date is object, but would like it in ISO string representation\n if (value instanceof Date) {\n return dateToIsoString(value) ?? 'null';\n }\n try {\n return JSON.stringify(value);\n } catch (e) {\n return value.toString();\n }\n }\n // only primitives should be left to be printed like this (string, number, boolean)\n return value.toString();\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\nimport {stringify} from '../helpers/string';\nimport {LogLevelEnum} from '../log/log.model';\nimport {ACommonsErrorBase, CommonsErrorBaseOptions, CommonsHttpError, CommonsInternalError, ICommonsActionError} from './error.model';\n\n/**\n * Converts RxJS subscription error to CommonsError.\n * @param error Error.\n * @param name Optional name to write in commons error.\n * @param details Optional details of error.\n */\nexport function fromSubscribeError(error: any, name?: string, details?: any): ACommonsErrorBase {\n const opts: CommonsErrorBaseOptions = {\n name,\n details,\n location: window?.location?.href\n };\n\n if (error instanceof HttpErrorResponse) {\n return new CommonsHttpError(error.message ?? 'Http Error occurred', error, opts);\n } else {\n opts.cause = error;\n return new CommonsInternalError(error.message ?? 'Internal Error occurred', opts);\n }\n}\n\n/**\n * Checks if error is Http error (Angular or Commons).\n * @param error\n */\nexport function isHttpErrorResponse(error: any) {\n return error instanceof HttpErrorResponse || error instanceof CommonsHttpError || (error as ICommonsActionError | undefined)?.httpError instanceof HttpErrorResponse;\n}\n\n/**\n * Gets HttpErrorResponse from error (Angular or Commons).\n * @param error Error.\n */\nexport function getHttpErrorResponse(error: any): HttpErrorResponse | null {\n if (error instanceof HttpErrorResponse) {\n return error;\n } else if (error instanceof CommonsHttpError) {\n return error.httpError;\n } else if ((error as ICommonsActionError | undefined)?.httpError instanceof HttpErrorResponse) {\n return error.httpError;\n } else {\n return null;\n }\n}\n\n/**\n * Gets HttpErrorResponse status from error (Angular or Commons).\n * @param error Error.\n */\nexport function getHttpErrorResponseStatus(error: any): number | null {\n return getHttpErrorResponse(error)?.status ?? null;\n}\n\n/**\n * Gets HttpErrorResponse status text from error (Angular or Commons).\n * @param error Error.\n */\nexport function getHttpErrorResponseStatusText(error: any): string | null {\n return getHttpErrorResponse(error)?.statusText ?? null;\n}\n\n/**\n * Get error log level. All is error, except if error is http error with status >=400 and <500.\n * @param error Error.\n */\nexport function getErrorLogLevel(error: any): LogLevelEnum {\n if (isHttpErrorResponse(error)) {\n const status = getHttpErrorResponseStatus(error);\n if (status && status >= 400 && status < 500) {\n return LogLevelEnum.Warning;\n }\n }\n return LogLevelEnum.Error;\n}\n\n/**\n * Get error name (prototype name or type from commons error if name is not provided).\n * @param error Error.\n */\nexport function getErrorName(error: any): string {\n if (error instanceof ACommonsErrorBase) {\n return error.name ?? error.type;\n } else {\n return error.name;\n }\n}\n\n/**\n * Writes http error to string with all headers and body.\n * @param error Http response error.\n * @param opts Options for hiding parts of error:\n * - hideMessage Hides message of error (message include url, status and status text!).\n * - hideHeaders Hides headers.\n * - hideBody Hides JSON representation of body.\n */\nexport function httpErrorResponseToString(error: HttpErrorResponse, opts?: HttpErrorResponseToStringOptionsType): string {\n let str = opts?.hideMessage ? '' : `${error.message}\\n`; // message should already include url, status, etc.\n if (!opts?.hideHeaders) {\n str += `Http Response Headers: ${error.headers.keys().reduce((acc, key) => `${acc}[${key}: ${error.headers.get(key)}]`, '')}`;\n }\n if (!opts?.hideBody) {\n str += `\\nHttp Response Body: ${stringify(error.error)}`;\n }\n return str;\n}\n\n/**\n * Error to string.\n * @param error Error.\n * @param opts Options for hiding parts of error:\n * - hideMessage Hides message of error.\n * - hideName Hides error name.\n * - hideCause Hides cause of an error (if present, see @link(errorCauseToString) for other options).\n * - hideStack Hides stack of an error (if present).\n * - hideDetails Hides JSON detail's representation of error (if present).\n * - hideLocation Hides location (URL) where error was thrown.\n * - hideHttp Hides http error portion of error if http error response (see @link(httpErrorResponseToString) for other options).\n */\nexport function errorToString(error: Error, opts?: ErrorToStringOptionsType): string {\n if (error instanceof ACommonsErrorBase) {\n return commonsErrorToString(error, opts);\n } else if (error instanceof HttpErrorResponse) {\n return httpErrorResponseToString(error, opts);\n }\n\n const strBlocks: string[] = [];\n if (!opts?.hideMessage) {\n strBlocks.push(error.message);\n }\n if (error.name) {\n strBlocks.push(`Error name: ${error.name}`);\n }\n if (!opts?.hideCause) {\n strBlocks.push(errorCauseToString(error, opts));\n }\n if (!opts?.hideStack && error.stack) {\n strBlocks.push(`Stack trace:\\n${error.stack}`);\n }\n\n return strBlocks.filter(s => s.trim().length > 0).join('\\n');\n}\n\n/**\n * Commons error to string.\n * @param error Commons error.\n * @param opts Options for hiding parts of error:\n * - hideMessage Hides message of error.\n * - hideName Hides error name.\n * - hideCause Hides cause of an error (if present, see @link(errorCauseToString) for other options).\n * - hideStack Hides stack of an error (if present).\n * - hideDetails Hides JSON detail's representation of error (if present).\n * - hideLocation Hides location (URL) where error was thrown.\n * - hideHttp Hides http error portion of error if http error response (see @link(httpErrorResponseToString) for other options).\n * - hideItems Hides all item information (http body, action context data).\n * - hideActionData See @link(commonsActionErrorContextToString) for additional info.\n * - hideQueryParams See @link(commonsActionErrorContextToString) for additional info.\n */\nexport function commonsErrorToString(error: ACommonsErrorBase, opts?: ErrorToStringOptionsType): string {\n const strBlocks: string[] = [];\n if (!opts?.hideMessage) {\n strBlocks.push(`${error.message}${error.messageCode ? ` (code: ${error.messageCode})` : ''}`);\n }\n if (!opts?.hideName) {\n strBlocks.push(`Error name: ${error.name ?? error.type} ${error.name ? `(${error.type})` : ''}`);\n }\n if (!opts?.hideLocation && error.location) {\n strBlocks.push(`Location: ${error.location}`);\n }\n\n let isHttp = false;\n if (!opts?.hideHttp && error instanceof CommonsHttpError) {\n strBlocks.push(\n httpErrorResponseToString(error.httpError, {\n hideBody: opts?.hideItems || opts?.hideBody,\n hideHeaders: opts?.hideHeaders,\n hideMessage: error.message.indexOf(error.httpError.message) >= 0\n })\n );\n isHttp = true;\n }\n if (error.type === 'CommonsActionError') {\n const actionError = error as unknown as ICommonsActionError;\n if (actionError.actionContext) {\n strBlocks.push(commonsActionErrorContextToString(actionError, opts));\n }\n if (!opts?.hideHttp && actionError.httpError instanceof HttpErrorResponse) {\n strBlocks.push(\n httpErrorResponseToString(actionError.httpError, {\n hideBody: opts?.hideItems || opts?.hideBody,\n hideHeaders: opts?.hideHeaders,\n hideMessage: error.message.indexOf(actionError.httpError.message) >= 0\n })\n );\n isHttp = true;\n }\n }\n\n if (!opts?.hideDetails && error.details) {\n strBlocks.push(`Details: ${stringify(error.details)}`);\n }\n if (!opts?.hideCause && (!isHttp || !(error.cause instanceof HttpErrorResponse))) {\n strBlocks.push(errorCauseToString(error, opts));\n }\n if (!opts?.hideStack && error.stack) {\n strBlocks.push(`Stack trace:\\n${error.stack}`);\n }\n\n return strBlocks.filter(s => s.trim().length > 0).join('\\n');\n}\n\n/**\n * Writes commons action error info from context as string.\n * @param error Commons action error.\n * @param opts Options for hiding parts of error:\n * - hideItems Hides all item related information (item, form item, submit item, ...).\n * - hideActionData Hides action data.\n * - hideQueryParams Hides query params.\n */\nexport function commonsActionErrorContextToString(error: ICommonsActionError, opts?: ActionErrorContextToStringOptionsType): string {\n let paramsMessage = '';\n if (error.actionContext?.parameters) {\n if (error.actionContext?.parameters.itemId) {\n paramsMessage += `[itemId: ${error.actionContext.parameters.itemId}]`;\n }\n if (!opts?.hideItems && error.actionContext?.parameters.item) {\n paramsMessage += `[item: ${stringify(error.actionContext.parameters.item)}]`;\n }\n if (!opts?.hideActionData && error.actionContext?.parameters.actionData) {\n paramsMessage += Object.entries(error.actionContext?.parameters.actionData).reduce((acc, [key, value]) => `${acc}[actionData ${key}: ${stringify(value)}]`, '');\n }\n if (!opts?.hideQueryParams && error.actionContext?.parameters.dataListParams) {\n paramsMessage += `[dataListParams: ${stringify(error.actionContext.parameters.dataListParams)}]`;\n }\n if (!opts?.hideItems && error.actionContext?.parameters.formItem) {\n paramsMessage += `[formItem: ${stringify(error.actionContext.parameters.formItem)}]`;\n }\n if (!opts?.hideItems && error.actionContext?.parameters.submitResult) {\n paramsMessage += `[formItem: ${stringify(error.actionContext.parameters.submitResult)}]`;\n }\n if (error.actionContext?.parameters.locale) {\n paramsMessage += `[locale: ${stringify(error.actionContext.parameters.locale)}]`;\n }\n }\n\n return paramsMessage;\n}\n\n/**\n * Writes cause of an error as string.\n * @param error Error.\n * @param opts Options for hiding parts of error:\n * - causeOnErrorOnly Prints only if cause is instance of error.\n * - causeAsJson Print error cause as a JSON (by default, if error only message and name will be printed).\n */\nexport function errorCauseToString(error: Error, opts?: ErrorCauseToStringOptionsType): string {\n // if already logged as http error, check that cause is not also http error (cause it is usually duplicated)\n if (error.cause && (!opts?.causeOnErrorOnly || error.cause instanceof Error)) {\n const needsStringify = opts?.causeAsJson || !(error.cause instanceof Error);\n if (!opts?.causeOnErrorOnly || error.cause instanceof Error) {\n return (\n 'Caused by: ' +\n (needsStringify ? stringify(error.cause) : `${(error.cause as Error).message}${(error.cause as Error).name ? ` (${(error.cause as Error).name})` : ''}`)\n );\n }\n }\n return '';\n}\n\n/**\n * Throws an error with the provided error message.\n * The intended usage is for in-line throwing of an error with TS type narrowing.\n * <br>\n * <i>Example</i>:\n * <pre>\n * const value: string | null = getValue(\"\");\n * const nonNullValue: string = getValue(\"\") ?? throwError(\"value missing\");\n * </pre>\n *\n * @param {string} errorMessage - The error message to be thrown.\n * @param {CommonsErrorBaseOptions} [options] - Additional options for the thrown error.\n * @throws {Error} - The error object with the provided error message.\n * @returns {never} - This function does not return a value.\n * @see CommonsErrorBaseOptions\n */\nexport function throwError(errorMessage: string, options?: CommonsErrorBaseOptions): never {\n throw new CommonsInternalError(errorMessage, options);\n}\n\nexport type ErrorToStringOptionsType = ErrorToStringOptionsBaseType &\n HttpErrorResponseToStringOptionsType &\n ActionErrorContextToStringOptionsType &\n ErrorCauseToStringOptionsType & {\n hideDetails?: boolean;\n hideLocation?: boolean;\n };\n\nexport interface ErrorToStringOptionsBaseType {\n hideName?: boolean;\n hideStack?: boolean;\n hideCause?: boolean;\n hideHttp?: boolean;\n}\n\nexport interface HttpErrorResponseToStringOptionsType {\n hideMessage?: boolean;\n hideHeaders?: boolean;\n hideBody?: boolean;\n}\n\nexport interface ActionErrorContextToStringOptionsType {\n hideItems?: boolean;\n hideActionData?: boolean;\n hideQueryParams?: boolean;\n}\n\nexport interface ErrorCauseToStringOptionsType {\n causeOnErrorOnly?: boolean;\n causeAsJson?: boolean;\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {ErrorHandler} from '@angular/core';\n\nimport {LoggerService} from '../log/logger.service';\nimport {getErrorLogLevel} from './error-helpers';\nimport {ACommonsErrorBase} from './error.model';\n\nexport class CommonsErrorHandler implements ErrorHandler {\n private static readonly logCategory = 'ErrorHandler';\n private readonly logger = LoggerService.get();\n\n handleError(error: Error) {\n if (error instanceof ACommonsErrorBase || error instanceof HttpErrorResponse) {\n const logLevel = getErrorLogLevel(error);\n this.logger.log(error, logLevel);\n } else {\n this.logger.error('Unexpected error occurred', error);\n }\n }\n}\n","import {booleanAttribute, numberAttribute} from '@angular/core';\n\nimport {Observable, isObservable, of} from 'rxjs';\n\nimport {CommonsInternalError} from '../error/error.model';\nimport {IdType, Nullable} from './type-helpers';\n\nexport function boolean$Attribute(value: unknown): Observable<boolean> {\n return isObservable(value) ? (value as Observable<boolean>) : of(booleanAttribute(value));\n}\n\nexport function booleanOrUndefinedAttribute(value: unknown): boolean | undefined {\n return typeof value === 'boolean' ? value : value == null ? undefined : value !== 'false';\n}\n\nexport function number$Attribute(value: unknown): Observable<number> {\n return isObservable(value) ? (value as Observable<number>) : of(numberAttribute(value));\n}\n\nexport const toObservable = <T>(value: T | Observable<T>): Observable<T> => {\n return isObservable(value) ? (value as Observable<T>) : of(value);\n};\n\nexport const itemIdToNumber = (value?: IdType): number => {\n if (typeof value === 'number') {\n return value;\n } else if (typeof value === 'string') {\n const num = +value;\n if (!isNaN(num)) {\n return num;\n }\n throw new CommonsInternalError(`ItemId is a string, but could not be transformed to number: ${value}`);\n } else {\n throw new CommonsInternalError(`ItemId is not a number: ${value}`);\n }\n};\n\nexport const itemIdToString = (value?: IdType): string => {\n if (typeof value === 'string') {\n return value;\n } else {\n throw new CommonsInternalError(`ItemId is not a string: ${value}`);\n }\n};\n\nexport const itemIdToDefined = (value?: IdType): IdType => {\n if (typeof value === 'undefined') {\n throw new CommonsInternalError(`ItemId is not defined: ${value}`);\n } else {\n return value;\n }\n};\n\nexport const valueToDefined = <T>(value: Nullable<T>): T => {\n if (typeof value === 'undefined' || value === null) {\n throw new CommonsInternalError(`Value is null or not defined: ${value}`);\n } else {\n return value;\n }\n};\n","import {Message, MessageService} from 'primeng/api';\n\nexport function toastMessage(messageService: MessageService, title?: string, message?: string, severity: 'success' | 'warn' | 'error' = 'success', icon?: string): Message {\n const notification: Message = {severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000, icon: icon};\n messageService.add(notification);\n return notification;\n}\n","export function fromAngularNumberFormatToFractions(format: string): {\n integer: number;\n fractionsMin: number;\n fractionsMax: number;\n} {\n const hasDot = format.indexOf('.') >= 0;\n const hasDash = format.indexOf('-') >= 0;\n const [intPart, decPart] = format.split('.');\n let int = hasDot || (!hasDot && !hasDash) ? +intPart : 1;\n if (!int || isNaN(int)) int = 1;\n let [fractionsMin, fractionsMax] = !hasDot && !hasDash ? [0, 0] : (hasDot ? decPart : intPart).split('-').map(f => +f);\n if (isNaN(fractionsMin)) fractionsMin = 0;\n if (fractionsMax == null || isNaN(fractionsMax)) fractionsMax = fractionsMin;\n return {\n integer: int,\n fractionsMin: fractionsMin,\n fractionsMax: fractionsMax\n };\n}\n","import {MenuItem as PrimeMenuItem} from 'primeng/api';\n\nimport {CommonsInternalError} from '../error/error.model';\nimport {CommonsMenuItem, InternalCommonsMenuItem} from '../models/menu.model';\n\nexport function removeRouteEmptyPathSegments(path: Array<string>) {\n const filteredPath = path.filter(ps => typeof ps === 'string' && ps.length > 0);\n return filteredPath.length > 0 ? filteredPath : [''];\n}\n\nexport function appendRoutePathToBasePath(basePath: Array<string>, path: Array<string>) {\n if (path.length > 0) {\n if (path[0].startsWith('/')) {\n return path;\n } else if (path[0].startsWith('../')) {\n throw new CommonsInternalError('Not implemented', {name: 'RouteUtilsError'});\n } else {\n return removeRouteEmptyPathSegments([...basePath, ...path]);\n }\n } else {\n return basePath;\n }\n}\n\nexport function doesUrlMatchRouterLink(link: Array<string> | string, url: Array<string> | string) {\n if (typeof url === 'string' && url.startsWith('/')) {\n url = url.substring(1);\n } else if (Array.isArray(url) && url.length > 0 && url[0].startsWith('/')) {\n url[0] = url[0].substring(1);\n }\n\n const routeSegments = Array.isArray(link) ? link : link.split('/');\n const urlSegments = Array.isArray(url) ? url : url.split('#')[0].split('?')[0].split('/');\n\n if (routeSegments.length > 0 && urlSegments.length > 0) {\n for (let i = 0; i < routeSegments.length; i++) {\n if (i < urlSegments.length) {\n if (routeSegments[i] !== urlSegments[i]) {\n return false;\n }\n } else {\n break;\n }\n }\n return true;\n }\n return false;\n}\n\nexport function adjustRouteMenuLazyChildrenRouterLinks(rootMenuItem: PrimeMenuItem | InternalCommonsMenuItem, lazyChildren: Array<CommonsMenuItem>) {\n return lazyChildren.map(i => {\n const childMenuItem = {...i};\n if (childMenuItem.routerLink) {\n childMenuItem.routerLink = appendRoutePathToBasePath(\n rootMenuItem.routerLink,\n typeof childMenuItem.routerLink === 'string' ? [childMenuItem.routerLink] : childMenuItem.routerLink\n );\n }\n if (Array.isArray(childMenuItem.items)) {\n childMenuItem.items = adjustRouteMenuLazyChildrenRouterLinks(rootMenuItem, childMenuItem.items);\n }\n return childMenuItem;\n });\n}\n","import {TemplateRef} from '@angular/core';\n\nimport {TemplateDirective} from '../directives/template.directive';\n\nexport function findTemplateByName(templates: TemplateDirective[], name: string): TemplateRef<any> | null {\n return templates.find(t => t.getType() === name)?.template ?? null;\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nexport function getI18nAsync(translate: TranslateService, params?: any, ...keys: Array<string>): Observable<string | null> {\n return translate.stream(keys, params).pipe(map(i18n => selectI18n(keys, i18n)));\n}\n\nexport function getI18n(translate: TranslateService, params?: any, ...keys: Array<string>): string | null {\n const i18n = translate.instant(keys, params);\n return selectI18n(keys, i18n);\n}\n\nexport function populateI18nParams(item?: any, params: any = {}) {\n const paramsRes = {...params};\n if (item) {\n paramsRes.item = item;\n }\n return paramsRes;\n}\n\nexport function selectI18n(keys: string[], i18n: any): string | null {\n for (const key of keys) {\n if (key !== i18n[key]) {\n return i18n[key];\n }\n }\n return null;\n}\n","import {TranslateService} from '@ngx-translate/core';\n\nimport {getHttpErrorResponse, isHttpErrorResponse} from '../error/error-helpers';\nimport {ICommonsError} from '../error/error.model';\nimport {getI18n} from './i18n-common';\n\nexport function getI18nForError(translate: TranslateService, error: ICommonsError, params: any = {}): string | null {\n const i18nParams = getI18nErrorParams(error, params);\n if (error.messageCode) {\n const keys = [`errors.${error.messageCode}`, `messages.${error.messageCode}`];\n const i18n = getI18n(translate, i18nParams, ...keys);\n if (i18n) {\n return i18n;\n }\n }\n return getI18n(translate, i18nParams, error.message);\n}\n\nexport function getI18nErrorParams(error: ICommonsError, params: any = {}) {\n const paramsRes = {...params};\n paramsRes.errorStatus = '';\n paramsRes.errorMessage = '';\n\n if (isHttpErrorResponse(error)) {\n const httpError = getHttpErrorResponse(error);\n paramsRes.errorStatus = httpError?.status;\n paramsRes.errorMessage = httpError?.message;\n paramsRes.errorStatusDescription = httpError?.statusText;\n }\n\n paramsRes.error = error;\n return paramsRes;\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {getI18n, getI18nAsync, populateI18nParams} from './i18n-common';\n\nexport function getI18nTypeNameAsync(translate: TranslateService, typeName: string, singular?: boolean): Observable<string | null> {\n const keys = getI18nTypeNameKeys(typeName, singular);\n return getI18nAsync(translate, undefined, ...keys);\n}\n\nexport function getI18nTypeName(translate: TranslateService, typeName: string, singular?: boolean): string | null {\n const keys = getI18nTypeNameKeys(typeName, singular);\n return getI18n(translate, undefined, ...keys);\n}\n\nexport function getI18nTypeTabKey(typeName: string, tab: string): string {\n return getI18nTypeKeyBasePath(typeName, 'tabs', tab);\n}\n\nexport function getI18nTypeGroupKey(typeName: string, group: string): string {\n return getI18nTypeKeyBasePath(typeName, 'groups', group);\n}\n\nexport function getI18nTypePropertyKey(typeName: string, property: string): string {\n return getI18nTypeKeyBasePath(typeName, 'properties', property);\n}\n\nexport function getI18nTypeKeyBasePath(typeName: string, ...path: Array<string>): string {\n return `${typeName.length ? `${typeName}.` : ''}${path.join('.')}`;\n}\n\nexport function getI18nTypeParams(translate: TranslateService, typeName?: string, item?: any, params: any = {}): any {\n const i18nTypeName = typeName ? getI18nTypeName(translate, typeName, true) : null;\n return populateI18nTypeParams(i18nTypeName ?? undefined, item, params);\n}\n\nexport function getI18nTypeParamsAsync(translate: TranslateService, typeName?: string, item?: any, params: any = {}): Observable<any> {\n return (typeName ? getI18nTypeNameAsync(translate, typeName, true) : of(null)).pipe(map(i18nTypeName => populateI18nTypeParams(i18nTypeName ?? undefined, item, params)));\n}\n\nexport function populateI18nTypeParams(i18nTypeName?: string, item?: any, params: any = {}): any {\n const paramsRes = {...params};\n if (i18nTypeName) {\n paramsRes.typeName = i18nTypeName;\n }\n return populateI18nParams(item, paramsRes);\n}\n\nfunction getI18nTypeNameKeys(typeName: string, singular?: boolean): Array<string> {\n const keys = [];\n if (typeof singular !== 'undefined') {\n keys.push(singular ? `${typeName}.nameSingular` : `${typeName}.namePlural`);\n }\n keys.push(`${typeName.length ? `${typeName}.` : ''}name`);\n return keys;\n}\n","/* eslint-disable no-console */\nimport {getErrorName} from '../error/error-helpers';\nimport {ILogPublisher, LogEntry, LogLevelEnum} from './log.model';\n\nexport class LogPublisherConsoleService implements ILogPublisher {\n addEntry(entry: LogEntry): void {\n let prefix = `${entry.timestampFormatted}`;\n if (entry.category) prefix += ` [${entry.category}]`;\n prefix += ':';\n\n const message = `${entry.message}${entry.messageDetails ? `\\n${entry.messageDetails}` : ''}`;\n const logParams: any[] = [prefix, message];\n if (entry.error) {\n logParams.push(`\\n${getErrorName(entry.error)}:`, entry.error);\n }\n if (entry.data?.length) {\n logParams.push(`\\nData:\\n`, ...entry.data);\n }\n\n switch (entry.level) {\n case LogLevelEnum.Trace:\n console.trace(...logParams);\n break;\n case LogLevelEnum.Debug:\n console.debug(...logParams);\n break;\n case LogLevelEnum.Log:\n console.log(...logParams);\n break;\n case LogLevelEnum.Info:\n console.info(...logParams);\n break;\n case LogLevelEnum.Warning:\n console.warn(...logParams);\n break;\n case LogLevelEnum.Error:\n console.error(...logParams);\n break;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'mngBoolean',\n pure: true\n})\nexport class BooleanPipe implements PipeTransform {\n transform(value: any, yes?: string, no?: string, icon = false): any {\n if (typeof value === 'string') {\n value = value.toLowerCase() === 'true';\n } else if (typeof value === 'number') {\n value = value === 1;\n }\n if (typeof value === 'boolean') {\n if (icon) {\n return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';\n } else {\n return value ? yes ?? 'general.yes' : no ?? 'general.no';\n }\n } else {\n return value;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'mngClassMap',\n pure: true\n})\nexport class ClassMapPipe<T> implements PipeTransform {\n transform(className?: string, classNameMapFn?: (className?: string, item?: T) => string, item?: T): string {\n if (classNameMapFn && typeof classNameMapFn === 'function') {\n return classNameMapFn(className, item);\n } else {\n return className ?? '';\n }\n }\n}\n","import 'reflect-metadata';\n\nimport {EnumType} from '../helpers/type-helpers';\nimport {LoggerService} from '../log/logger.service';\nimport {ClassType} from '../models/class-service.model';\n\nexport const reflectTypeNameKey = 'typeName';\nexport const reflectEnumNameKey = 'enumName';\n\n/**\n * Defines type name decorator.\n * @param targetType class.\n * @param typeName Name of the type.\n */\nexport function defineReflectTypeName(targetType: ClassType<any>, typeName: string) {\n if (!Reflect.hasOwnMetadata(reflectTypeNameKey, targetType)) {\n Reflect.defineMetadata(reflectTypeNameKey, typeName, targetType);\n }\n}\n\n/**\n * Defines enum name decorator.\n * @param targetType enum object.\n * @param enumName Name of the enum.\n */\nexport function defineReflectEnumName(targetType: EnumType, enumName: string) {\n if (!Reflect.hasOwnMetadata(reflectEnumNameKey, targetType)) {\n Reflect.defineMetadata(reflectEnumNameKey, enumName, targetType);\n }\n}\n\n/**\n * Gets type name from reflect metadata.\n * @param type Class.\n */\nexport function findReflectTypeName<T>(type?: ClassType<T>): string | null {\n if (!type) {\n return null;\n }\n const typeName = Reflect.getMetadata(reflectTypeNameKey, type);\n if (typeName) {\n return typeName;\n }\n LoggerService.get().debug('WARNING: Reflect metadata could not be found for type, you might experience some issues in production build.', type?.name);\n return type.name;\n}\n\n/**\n * Gets type name from either decorator or reflect metadata.\n * @param type Class.\n */\nexport function reflectTypeNameExists(type: ClassType<any>): boolean {\n return Reflect.hasOwnMetadata(reflectTypeNameKey, type);\n}\n\n/**\n * Gets enum name from either decorator or reflect metadata.\n * @param enumType Class.\n */\nexport function findReflectEnumName(enumType: EnumType): string | null {\n const enumName = Reflect.getMetadata(reflectEnumNameKey, enumType);\n if (enumName) {\n return enumName;\n }\n LoggerService.get().debug(`WARNING: Reflect metadata could not be found for enum ${typeof enumType === 'object' ? Object.keys(enumType) : enumType}`, {\n name: 'TypeUtilsError',\n enumType: enumType\n });\n return null;\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {IEnumDescriptor} from '../descriptors/enum.descriptor';\nimport {getEnumConstantNameFromObject, getEnumConstantValues} from '../enum/enum-helpers';\nimport {EnumType} from '../helpers/type-helpers';\nimport {findReflectEnumName} from '../reflect/type-enum-metadata';\n\n@Pipe({\n standalone: true,\n name: 'mngEnum',\n pure: true\n})\nexport class EnumPipe implements PipeTransform {\n transform(value: unknown, enumDesc?: IEnumDescriptor, i18nPath?: string | null): any {\n if (value == null || (typeof value !== 'number' && typeof value !== 'string') || !enumDesc) {\n return value;\n }\n\n const enumValue = enumDesc.nameAsValue ? value : getEnumConstantNameFromObject(enumDesc.type, value);\n if (enumValue == null) {\n // no constant name found (probably not enum), return value\n return value;\n }\n if (enumDesc.nameAsValue) {\n // check if value exists in enum if nameAsValue is used\n const enumValueCheck = getEnumConstantValues(enumDesc.type).find(v => v === enumValue);\n if (enumValueCheck == null) {\n return value;\n }\n }\n if (typeof i18nPath === 'undefined' && enumDesc) {\n i18nPath = enumDesc.i18nBaseKey ?? findReflectEnumName(enumDesc.type as EnumType);\n }\n return i18nPath ? `${i18nPath}.${enumValue}` : enumValue;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {getObjectPropertyByPath} from '../helpers/object';\n\n/**\n * Imitation of JSONPath Syntax. Supports:\n * - Root object notation with '$'\n * - Dot notation (e.g.: $.foo.bar), no bracket notation for properties\n * - Array notation (e.g.: [0])\n */\n@Pipe({\n standalone: true,\n name: 'mngJsonPath',\n pure: true\n})\nexport class JsonPathPipe implements PipeTransform {\n transform(value: any, path = ''): any {\n return getObjectPropertyByPath(value, path);\n }\n}\n","import {Pipe, PipeTransform, inject} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {JsonPathPipe} from './json-path.pipe';\n\n@Pipe({\n standalone: true,\n name: 'mngEnumerate',\n pure: true\n})\nexport class EnumeratePipe implements PipeTransform {\n private readonly translate = inject(TranslateService);\n\n transform<T>(value: Array<T> | Set<T>, jsonPath = '$', valueSeparator = ', ', emptyValueReturn = '/', i18nBaseKey = ''): string {\n if (!value) {\n return emptyValueReturn;\n }\n i18nBaseKey = getEnumerationI18nBaseKey(i18nBaseKey);\n return Array.from(value)\n .map(i => {\n const itemEnumerate = toEnumerationI18nEnumerate(i, jsonPath, i18nBaseKey);\n itemEnumerate.i18n = this.translate.instant(itemEnumerate.i18nKey);\n // return i18n only if used and transl. was found\n return selectEnumerationI18n(itemEnumerate, i18nBaseKey);\n })\n .join(valueSeparator);\n }\n}\n\nexport function getEnumerationI18nBaseKey(baseKey: string): string {\n return baseKey.endsWith('.') ? baseKey?.substring(0, baseKey.length - 1) : baseKey;\n}\n\nexport function selectEnumerationI18n(value: EnumeratePipeI18nInternal, baseKey: string): string {\n return baseKey && value.i18nKey === value.i18n ? value.value : value.i18n;\n}\n\nexport function toEnumerationI18nEnumerate(value: unknown, jsonPath: string, baseKey: string): EnumeratePipeI18nInternal {\n const valueTrans = new JsonPathPipe().transform(value, jsonPath);\n const valueAsString = valueTrans.toString();\n return <EnumeratePipeI18nInternal>{\n value: valueAsString,\n i18nKey: baseKey ? `${baseKey}.${valueAsString}` : valueAsString,\n i18n: valueAsString\n };\n}\n\nexport interface EnumeratePipeI18nInternal {\n value: string;\n i18nKey: string;\n i18n: string;\n}\n","import {Pipe, PipeTransform, inject} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, combineLatest, mergeMap, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {getEnumerationI18nBaseKey, selectEnumerationI18n, toEnumerationI18nEnumerate} from './enumerate.pipe';\n\n@Pipe({\n standalone: true,\n name: 'mngEnumerateAsync',\n pure: true\n})\nexport class EnumerateAsyncPipe implements PipeTransform {\n private readonly translate = inject(TranslateService);\n\n transform(value: Observable<Array<unknown> | Set<unknown>>, jsonPath = '$', valueSeparator = ', ', emptyValueReturn = '/', i18nBaseKey = ''): Observable<string> {\n i18nBaseKey = getEnumerationI18nBaseKey(i18nBaseKey);\n return value.pipe(\n mergeMap(v => {\n if (!v) {\n return of([emptyValueReturn]);\n }\n return combineLatest(\n Array.from(v)\n .map(ai => toEnumerationI18nEnumerate(ai, jsonPath, i18nBaseKey))\n .map(i =>\n this.translate.stream(i.i18nKey).pipe(\n map((i18n: string) => {\n i.i18n = i18n;\n return selectEnumerationI18n(i, i18nBaseKey);\n })\n )\n )\n );\n }),\n map(i => i.join(valueSeparator))\n );\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {GetterFn} from '../models/getter.model';\n\n@Pipe({\n standalone: true,\n name: 'mngGetter',\n pure: true\n})\nexport class GetterPipe implements PipeTransform {\n transform(value: unknown, getterFn?: GetterFn, item?: unknown): any {\n if (typeof getterFn === 'function') {\n return getterFn(item, value);\n }\n\n return value;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {IModelDescriptor} from '../descriptors/model.descriptor';\nimport {getI18nTypePropertyKey} from '../i18n/i18n-type';\n\n@Pipe({\n standalone: true,\n name: 'mngI18nProperty',\n pure: true\n})\nexport class I18nPropertyPipe implements PipeTransform {\n transform(property: string, model: IModelDescriptor<any>): any {\n return getI18nTypePropertyKey(model.i18nBaseKey, property);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {escapeHtmlAny} from '../helpers/string';\nimport {IdType} from '../helpers/type-helpers';\nimport {JsonPathPipe} from './json-path.pipe';\n\n@Pipe({\n standalone: true,\n name: 'mngParametrize',\n pure: true\n})\nexport class ParametrizePipe implements PipeTransform {\n private jsonPath = new JsonPathPipe();\n\n transform(value: unknown, itemId?: IdType, item?: any, data?: Record<string, any>): any {\n let params: any = {};\n if (data) {\n params = {\n ...params,\n ...data\n };\n }\n if (item) {\n params = {\n ...params,\n item: escapeHtmlAny(item)\n };\n }\n if (itemId) {\n params = {\n ...params,\n itemId: itemId\n };\n }\n\n if (typeof value === 'string') {\n return this.transformString(value, params);\n } else if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {\n return value.map((s: string) => this.transformString(s, params));\n } else if (typeof value === 'object') {\n // process only first level citizens\n const obj: any = {...value};\n for (const key in obj) {\n const objProp = obj[key];\n if (typeof objProp === 'string') {\n obj[key] = this.transformString(objProp, params);\n }\n }\n return obj;\n } else {\n return value;\n }\n }\n\n private transformString(s: string, params: any) {\n if ((s.indexOf('/') >= 0 && s.indexOf(':') >= 0 && !s.startsWith('http://') && !s.startsWith('https://')) || s.startsWith(':')) {\n // this is router link\n return s\n .split('/')\n .map(s => this.parametrizeStringAsRouterLink(s, params))\n .join('/');\n } else {\n // parametrize normally\n return this.parametrizeString(s, params);\n }\n }\n\n private parametrizeStringAsRouterLink(s: string, params: any): any {\n if (s.startsWith(':')) {\n const itemProperty = s.substring(1);\n return this.jsonPath.transform(params, itemProperty) ?? '';\n } else {\n return s;\n }\n }\n\n private parametrizeString(s: string, params: any): any {\n return s.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (subs: string, key: string) => this.jsonPath.transform(params, key) ?? subs);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ParametrizePipe} from './parametrize.pipe';\n\n@Pipe({\n standalone: true,\n name: 'template',\n pure: true\n})\nexport class TemplatePipe implements PipeTransform {\n private parametrizePipe = new ParametrizePipe();\n\n transform(value: unknown, template?: string): any {\n if (typeof template === 'string') {\n return this.parametrizePipe.transform(template, undefined, value);\n }\n\n return value;\n }\n}\n","import {defineReflectEnumName, defineReflectTypeName} from './type-enum-metadata';\n\nexport function TypeName(typeName: string): ClassDecorator {\n return function (target: any) {\n defineReflectTypeName(target, typeName);\n };\n}\n\nexport function EnumName(typeName: string): ClassDecorator {\n return function (target: any) {\n defineReflectEnumName(target, typeName);\n };\n}\n","import {EnumType} from '../helpers/type-helpers';\nimport {LogLevelEnum} from '../log/log.model';\nimport {LoggerService} from '../log/logger.service';\nimport {ClassAttributeDef} from '../models/class-attribute.model';\nimport {ClassType} from '../models/class-service.model';\nimport {defineReflectEnumName, defineReflectTypeName, findReflectTypeName, reflectTypeNameExists} from '../reflect/type-enum-metadata';\nimport {RegistryEnumMap, RegistryTypeMap} from './registry.model';\n\nexport class TypeRegistry {\n private static _instance: TypeRegistry = new TypeRegistry();\n private readonly _logCategory = 'TypeRegistry';\n private readonly _typeMap: RegistryTypeMap = {};\n private readonly _enumMap: RegistryEnumMap = {};\n\n public get typeMap() {\n return this._typeMap;\n }\n\n public get enumMap() {\n return this._enumMap;\n }\n\n /**\n * Only use one instance of object (out of Angular context)\n */\n public static get(): TypeRegistry {\n return TypeRegistry._instance;\n }\n\n public findAttributeDefinitionByClassType(type: ClassType<any>, attributeName: string): ClassAttributeDef | null {\n const typeName = findReflectTypeName(type);\n return typeName ? this.findAttributeDefinition(typeName, attributeName) : null;\n }\n\n public findAttributeDefinition(typeName: string, attributeName: string): ClassAttributeDef | null {\n const attributeDefs = this.findAttributesDefinition(typeName);\n if (!attributeDefs) {\n return null;\n }\n for (const attribute of attributeDefs) {\n if (attribute.name === attributeName) {\n return attribute;\n }\n }\n return null;\n }\n\n public findAttributesDefinitionByClassType(type: ClassType<any>): Array<ClassAttributeDef> | null {\n const typeName = findReflectTypeName(type);\n return typeName ? this.findAttributesDefinition(typeName) : null;\n }\n\n public findAttributesDefinition(typeName: string): Array<ClassAttributeDef> | null {\n const typeDef = this.findType(typeName);\n if (!typeDef || typeof typeDef.getAttributeTypeMap !== 'function') {\n return null;\n }\n return typeDef.getAttributeTypeMap() as Array<ClassAttributeDef>;\n }\n\n public findByClassType(type: ClassType<any>): any {\n const typeName = findReflectTypeName(type);\n return typeName ? this.findType(typeName) : null;\n }\n\n public findType(typeName: string): any {\n return this._typeMap[typeName];\n }\n\n public findEnum(enumName: string): any {\n return this._enumMap[enumName];\n }\n\n public registerTypes(types: RegistryTypeMap) {\n for (const key in types) {\n this.registerType(types[key], key);\n }\n }\n\n public registerType(type: ClassType<any>, optTypeName?: string) {\n // try to find name from metadata\n let typeName: string | undefined;\n if (reflectTypeNameExists(type)) {\n // defined name from optional type name\n typeName = findReflectTypeName(type) ?? undefined;\n } else if (optTypeName) {\n typeName = optTypeName;\n // register metadata\n defineReflectTypeName(type, typeName);\n }\n\n if (!typeName) {\n // this._logger.debug(`WARNING: registering type ${type} failed, because typeName could not be determined and optional name was not provided.`);\n LoggerService.get().log(\n `WARNING: registering type ${type} failed, because typeName could not be determined and optional name was not provided.`,\n LogLevelEnum.Debug,\n this._logCategory\n );\n return;\n }\n if (typeof this._typeMap[typeName] !== 'undefined') {\n // this._logger.debug(`WARNING: registering type ${type} under key ${typeName} skipped, because type already exists for this key.`);\n LoggerService.get().log(\n `WARNING: registering type ${type} under key ${typeName} skipped, because type already exists for this key.`,\n LogLevelEnum.Debug,\n this._logCategory\n );\n } else {\n this._typeMap[typeName] = type;\n }\n }\n\n public registerEnums(enums: RegistryEnumMap) {\n for (const key in enums) {\n this.registerEnum(enums[key], key);\n }\n }\n\n public registerEnum(enumType: EnumType, enumName: string) {\n // try to find name from decorator\n defineReflectEnumName(enumType, enumName);\n if (typeof this._enumMap[enumName] !== 'undefined') {\n LoggerService.get().log(`Registering enum ${enumName} skipped, because enum already exists.`, LogLevelEnum.Debug, this._logCategory);\n } else {\n this._enumMap[enumName] = enumType;\n }\n }\n}\n","import {Type} from '@angular/core';\nimport {ActivatedRouteSnapshot} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {ActionParameters} from '../action/action-parameters.model';\nimport {IDataProvider} from '../data-providers/base.data-provider';\nimport {IActionDescriptor} from '../descriptors/action.descriptor';\nimport {CommonsMenuItem} from '../models/menu.model';\n\nexport enum PermissionTypeEnum {\n All = 'ALL',\n Any = 'ANY',\n Rbac = 'ROLE_BASED_ACCESS_CONTROL',\n Service = 'SERVICE'\n}\n\nexport interface IActionContextValidation<Item, Service = undefined> {\n descriptor: IActionDescriptor<Item, Service>;\n parameters: ActionParameters<Item>;\n serviceInstance: Service;\n dataProvider?: IDataProvider<Item, Service>;\n}\n\nexport interface IPermissionService {\n /**\n * Determines whether a route can be activated.\n *\n * @param {ActivatedRouteSnapshot} route - The route snapshot object representing the current route for activation.\n *\n * @returns {Observable<boolean>} - An observable that emits a boolean value indicating whether the route can be activated.\n */\n canActivateRoute(route?: ActivatedRouteSnapshot): Observable<boolean>; //check guards\n\n /**\n * Determines the visibility of menu item.\n *\n * @param {CommonsMenuItem} menuItem - The menu item to check.\n * @return {Observable<boolean>} - An observable that emits a boolean indicating\n * whether the menu item is visible or not.\n */\n isMenuitemVisible(menuItem: CommonsMenuItem): Observable<boolean>;\n\n /**\n * Determines if the specified action is visible based on the action context and route.\n *\n * @param {IActionContextValidation<any, any>} [actionCtx] - The action context object containing the necessary information for validation.\n * @param {ActivatedRouteSnapshot} [route] - The current route snapshot containing the necessary information for validation.\n *\n * @return {Observable<boolean>} - An Observable that emits the visibility status of the action.\n */\n isActionVisible(actionCtx?: IActionContextValidation<any, any>, route?: ActivatedRouteSnapshot): Observable<boolean>;\n}\n\nexport abstract class APermissions {\n private readonly _authorizationType: PermissionTypeEnum;\n\n constructor(type: PermissionTypeEnum) {\n this._authorizationType = type;\n }\n\n public get authorizationType() {\n return this._authorizationType;\n }\n}\n\nexport namespace Permissions {\n export class All extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(PermissionTypeEnum.All);\n }\n\n public static of(...permissions: Array<APermissions>): All {\n const inst = new All();\n inst.and(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public and(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Any extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(PermissionTypeEnum.Any);\n }\n\n public static of(...permissions: Array<APermissions>): Any {\n const inst = new Any();\n inst.or(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public or(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Roles extends APermissions {\n private _roles: Array<Array<string>> = [];\n\n private constructor() {\n super(PermissionTypeEnum.Rbac);\n }\n\n public static of(...roles: Array<string>): Roles {\n const inst = new Roles();\n inst.or(...roles);\n return inst;\n }\n\n public get roles() {\n return this._roles;\n }\n\n public and(...roles: Array<string>): this {\n if (this._roles.length === 0) {\n this._roles.push([]);\n }\n this._roles[this._roles.length - 1].push(...roles);\n return this;\n }\n\n public or(...roles: Array<string>): this {\n this._roles.push(...roles.map(s => [s]));\n return this;\n }\n }\n\n export class Service extends APermissions {\n private constructor(public readonly service: Type<IPermissionService>) {\n super(PermissionTypeEnum.Service);\n }\n\n public static of(service: Type<IPermissionService>): Service {\n return new Service(service);\n }\n }\n}\n","import {CommonsInternalError} from '../error/error.model';\nimport {APermissions, PermissionTypeEnum, Permissions} from './permissions.model';\n\nexport function isPermitted(permissions: APermissions, userRoles: Array<string>): boolean {\n switch (permissions.authorizationType) {\n case PermissionTypeEnum.Rbac:\n return isRbacPermitted(permissions as Permissions.Roles, userRoles);\n default:\n throw new CommonsInternalError(`Permission type \"${permissions.authorizationType}\" not implemented`);\n }\n}\n\nexport function isRbacPermitted(permissions: Permissions.Roles, userRoles: Array<string>): boolean {\n return permissions.roles.some(prg => prg.every(pr => userRoles.indexOf(pr) > -1));\n}\n","import {Injectable, Injector, inject} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {ActivatedRouteSnapshot} from '@angular/router';\n\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {LoggerService} from '../log/logger.service';\nimport {CommonsMenuItem} from '../models/menu.model';\nimport {CommonsService} from '../services/commons.service';\nimport {isPermitted} from './permission-helpers';\nimport {APermissions, IActionContextValidation, PermissionTypeEnum, Permissions} from './permissions.model';\n\n@Injectable()\nexport class PermissionService {\n private readonly injector = inject(Injector);\n private readonly commons = inject(CommonsService);\n private readonly logger = inject(LoggerService).create('AuthorizationService');\n\n private userRoles$ = toObservable(this.commons.userRoles);\n\n public canActivateRoute(permissions: APermissions, route?: ActivatedRouteSnapshot): Observable<boolean> {\n switch (permissions.authorizationType) {\n case PermissionTypeEnum.All:\n return this.canActivateRouteAll(permissions as Permissions.All, route);\n case PermissionTypeEnum.Any:\n return this.canActivateRouteAny(permissions as Permissions.Any, route);\n case PermissionTypeEnum.Service:\n return this.canActivateRouteService(permissions as Permissions.Service, route);\n default:\n return this.userRoles$.pipe(map(ur => isPermitted(permissions, ur)));\n }\n }\n\n private canActivateRouteAll(permission: Permissions.All, route?: ActivatedRouteSnapshot) {\n return combineLatest(permission.permissions.map(p => this.canActivateRoute(p, route))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private canActivateRouteAny(permissions: Permissions.Any, route?: ActivatedRouteSnapshot) {\n return combineLatest(permissions.permissions.map(p => this.canActivateRoute(p, route))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private canActivateRouteService(permission: Permissions.Service, route?: ActivatedRouteSnapshot) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n this.logger.debug(`WARNING: Service instance could not be retrieved for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.canActivateRoute(route);\n }\n\n public isMenuItemVisible(permissions: APermissions, menuItem: CommonsMenuItem): Observable<boolean> {\n switch (permissions.authorizationType) {\n case PermissionTypeEnum.All:\n return this.isMenuItemVisibleAll(permissions as Permissions.All, menuItem);\n case PermissionTypeEnum.Any:\n return this.isMenuItemVisibleAny(permissions as Permissions.Any, menuItem);\n case PermissionTypeEnum.Service:\n return this.isMenuItemVisibleService(permissions as Permissions.Service, menuItem);\n default:\n return this.userRoles$.pipe(map(role => isPermitted(permissions, role)));\n }\n }\n\n private isMenuItemVisibleAll(permission: Permissions.All, menuItem: CommonsMenuItem) {\n return combineLatest(permission.permissions.map(p => this.isMenuItemVisible(p, menuItem))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private isMenuItemVisibleAny(permission: Permissions.Any, menuItem: CommonsMenuItem) {\n return combineLatest(permission.permissions.map(p => this.isMenuItemVisible(p, menuItem))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private isMenuItemVisibleService(permission: Permissions.Service, menuItem: CommonsMenuItem) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.isMenuitemVisible(menuItem);\n }\n\n public isActionVisible(permissions: APermissions, actionCtx?: IActionContextValidation<any, any>, route?: ActivatedRouteSnapshot): Observable<boolean> {\n switch (permissions.authorizationType) {\n case PermissionTypeEnum.All:\n return this.isActionVisibleAll(permissions as Permissions.All, actionCtx, route);\n case PermissionTypeEnum.Any:\n return this.isActionVisibleAny(permissions as Permissions.Any, actionCtx, route);\n case PermissionTypeEnum.Service:\n return this.isActionVisibleService(permissions as Permissions.Service, actionCtx, route);\n default:\n return this.userRoles$.pipe(map(ur => isPermitted(permissions, ur)));\n }\n }\n\n private isActionVisibleAll(permission: Permissions.All, actionCtx?: IActionContextValidation<unknown, unknown>, route?: ActivatedRouteSnapshot) {\n return combineLatest(permission.permissions.map(p => this.isActionVisible(p, actionCtx, route))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private isActionVisibleAny(permission: Permissions.Any, actionCtx?: IActionContextValidation<unknown>, route?: ActivatedRouteSnapshot) {\n return combineLatest(permission.permissions.map(p => this.isActionVisible(p, actionCtx, route))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private isActionVisibleService(permission: Permissions.Service, actionCtx?: IActionContextValidation<unknown>, route?: ActivatedRouteSnapshot) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.isActionVisible(actionCtx, route);\n }\n}\n","import {inject} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivateFn, UrlTree} from '@angular/router';\n\nimport {Observable, of} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {CommonsRouteData} from '../router/router.model';\nimport {PermissionService} from './permission.service';\n\nexport const permissionGuard: CanActivateFn = (route: ActivatedRouteSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree => {\n const permission = inject(PermissionService);\n\n const data = route.data as CommonsRouteData;\n\n if (data.permissions) {\n return permission.canActivateRoute(data.permissions, route).pipe(first());\n } else {\n return of(true);\n }\n};\n","import {EnvironmentProviders, Provider, Type} from '@angular/core';\nimport {CanActivateFn, CanDeactivateFn, DefaultExport, LoadChildren, ResolveFn, Route} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {removeRouteEmptyPathSegments} from '../helpers/route';\nimport {CommonsMenuItem} from '../models/menu.model';\nimport {permissionGuard} from '../security/permission.guard';\nimport {APermissions} from '../security/permissions.model';\nimport {BreadcrumbType, CommonsRouteData} from './router.model';\nimport {RoutesBuilder} from './routes-builder';\n\nexport type RouteBuilderAdjustFnType = (builder: RouteBuilder) => void;\n\nexport class RouteBuilder {\n protected readonly route: Route;\n private routePath: Array<string> = [];\n protected routeData: CommonsRouteData = {breadcrumb: null};\n private root?: RoutesBuilder;\n private parent?: RouteBuilder;\n private children: Array<RouteBuilder> = [];\n\n private menuItem?: CommonsMenuItem;\n private menuItemChildren: Array<CommonsMenuItem> = [];\n private menuItemChildrenAfter: Array<CommonsMenuItem> = []; // append after route children\n\n private permissions?: APermissions;\n\n public constructor(route: Route) {\n this.route = route;\n if (this.route.path && this.route.path.length > 0) {\n this.routePath = [this.route.path];\n }\n }\n\n /**\n * Sets the link to root Routes builder.\n *\n * @param {RoutesBuilder} routesBuilder - The routes builder to set as the root.\n */\n public withRoot(routesBuilder: RoutesBuilder): this {\n this.root = routesBuilder;\n return this;\n }\n\n /**\n * Sets the link to parent Route builder.\n *\n * @param {RouteBuilder} parent - The parent route builder.\n */\n public withParent(parent: RouteBuilder): this {\n this.parent = parent;\n this.routePath = removeRouteEmptyPathSegments([...this.parent.routePath, this.route.path ?? '']);\n return this;\n }\n\n /**\n * Sets the breadcrumb.\n *\n * @param {BreadcrumbType} breadcrumb - Breadcrumb configuration.\n */\n public withBreadcrumb(breadcrumb: BreadcrumbType): this {\n this.routeData.breadcrumb = breadcrumb;\n return this;\n }\n\n /**\n * Sets the page title for the current route.\n *\n * @param {string} pageTitle - The title of the page.\n */\n public withPageTitle(pageTitle: string): this {\n this.routeData.pageTitle = pageTitle;\n return this;\n }\n\n /**\n * Sets the page title and the breadcrumb.\n *\n * @param {string} title - The title of the page and breadcrumb.\n */\n public withTitle(title: string): this {\n this.withPageTitle(title);\n this.withBreadcrumb(title);\n return this;\n }\n\n /**\n * Adds a can activate guard to route.\n *\n * @param {CanActivateFn} fn - The CanActivate function to be added.\n */\n public withCanActivate(fn: CanActivateFn): this {\n if (!this.route.canActivate) {\n this.route.canActivate = [];\n }\n this.route.canActivate.push(fn);\n return this;\n }\n\n /**\n * Adds a can deactivate guard to route.\n *\n * @param {CanDeactivateFn} fn - The CanActivate function to be added.\n */\n public withCanDeactivate(fn: CanDeactivateFn<any>): this {\n if (!this.route.canDeactivate) {\n this.route.canDeactivate = [];\n }\n this.route.canDeactivate.push(fn);\n return this;\n }\n\n /**\n * Adds a resolver to route.\n *\n * @param {string} name - Name of the resolver.\n * @param {CanDeactivateFn} fn - The CanActivate function to be added.\n */\n public withResolver(name: string, fn: ResolveFn<any>): this {\n if (!this.route.resolve) {\n this.route.resolve = {};\n }\n this.route.resolve[name] = fn;\n return this;\n }\n\n /**\n * Adds a provider to the route.\n *\n * @param {Provider | EnvironmentProviders} provider - The provider to add.\n */\n public withProvider(provider: Provider | EnvironmentProviders): this {\n if (!this.route.providers) {\n this.route.providers = [];\n }\n this.route.providers.push(provider);\n return this;\n }\n\n /**\n * Sets the data for the route.\n *\n * @param {CommonsRouteData} data - The data to set for the route.\n * @param {boolean} [merge=true] - If the data should be merged with current data setup (true by default) - page title and breadcrumb config are carried over.\n */\n public withData(data: CommonsRouteData, merge = true): this {\n this.routeData = merge\n ? {\n ...this.routeData,\n ...data\n }\n : {\n breadcrumb: null,\n ...data\n };\n return this;\n }\n\n /**\n * Updates the menu item of route. Merging with current configuration (set with {withMenuItem}) takes place.\n *\n * @param {CommonsMenuItem} opts - The opts properties to be merged on existing menu item for route.\n */\n public withMenuItemOpts(opts: CommonsMenuItem): this {\n if (!this.menuItem) {\n this.menuItem = {};\n }\n this.menuItem = {\n ...this.menuItem,\n ...opts\n };\n return this;\n }\n\n /**\n * Sets the menu item (basic). For more options, see the {withMenuItemFromOpts}.\n *\n * @param {string} [icon] - The icon for the menu item.\n * @param {string} [label] - The label for the menu item.\n * @param {Array<string>} [routerLink] - The router link for the menu item.\n * @param {boolean} [breadcrumb=false] - Indicates whether to display breadcrumb for the menu item.\n */\n public withMenuItem(icon?: string, label?: string, routerLink?: Array<string>, breadcrumb = false): this {\n this.menuItem = createMenuItem(icon, label, routerLink);\n if (breadcrumb && label) {\n this.withBreadcrumb({\n label: label\n });\n }\n return this;\n }\n\n /**\n * Adds menu item child to route's menu item. If no menu item is present, children will be appended directly to parent/root menu item.\n *\n * @param {string} [icon] - The icon for the menu item.\n * @param {string} [label] - The label for the menu item.\n * @param {Array<string>} [routerLink] - The router link for the menu item.\n * @param {boolean} [afterRouteChildren=false] If false, menu item child will be appended before route's children menu items, at the end otherwise.\n */\n public withMenuItemChild(icon?: string, label?: string, routerLink?: Array<string>, afterRouteChildren = false): this {\n if (afterRouteChildren) {\n this.menuItemChildrenAfter.push(createMenuItem(icon, label, routerLink));\n } else {\n this.menuItemChildren.push(createMenuItem(icon, label, routerLink));\n }\n return this;\n }\n\n /**\n * Adds menu item child from opts to route's menu item. If no menu item is present, children will be appended directly to parent/root menu item.\n *\n * @param {CommonsMenuItem} opts - The opts properties to be merged on existing menu item for route.\n * @param {boolean} [afterRouteChildren=false] If false, menu item child will be appended before route's children menu items, at the end otherwise.\n */\n public withMenuItemChildFromOpts(opts: CommonsMenuItem, afterRouteChildren = false): this {\n if (afterRouteChildren) {\n this.menuItemChildrenAfter.push(opts);\n } else {\n this.menuItemChildren.push(opts);\n }\n return this;\n }\n\n /**\n * Sets the menu item's children to be generated lazily from route's lazy loaded routes after the chunk is loaded to runtime.\n */\n public withMenuItemLazyChildren(): this {\n if (!this.menuItem) {\n this.menuItem = {};\n }\n this.menuItem.lazyChildren = true;\n return this;\n }\n\n /**\n * Sets the permissions on the route.\n *\n * @param {APermissions} permissions - The permissions to be set on the route.\n */\n public withPermissions(permissions: APermissions): this {\n this.permissions = permissions;\n this.withCanActivate(permissionGuard);\n return this;\n }\n\n /**\n * Adds a child route to the current route.\n *\n * @param {string} path - The path of the child route.\n * @param {Type<any>} component - The component associated with the child route.\n * @param {RouteBuilderAdjustFnType} [adjustFn] - An optional function to adjust the child route builder.\n */\n public addChild(path: string, component: Type<any>, adjustFn?: RouteBuilderAdjustFnType): this {\n const childRouteBuilder = createRoute(path, component);\n adjustFn?.(childRouteBuilder);\n return this.addChildBuilder(childRouteBuilder);\n }\n\n /**\n * Adds a child builder to the current route.\n *\n * @param {RouteBuilder} builder - The child builder to be added.\n * @return {this} - The current builder with the added child builder.\n */\n public addChildBuilder(builder: RouteBuilder): this {\n builder.withParent(this);\n if (this.root) {\n builder.withRoot(this.root);\n }\n this.children.push(builder);\n return this;\n }\n\n /**\n * Builds an Angular route based on configurations.\n *\n * @returns {Route} The built Angular route.\n */\n public build(): Route {\n const angularRoute: Route = {\n ...this.route\n };\n\n if (angularRoute.data) {\n angularRoute.data = {\n ...angularRoute.data,\n ...this.routeData\n };\n } else {\n angularRoute.data = {...this.routeData};\n }\n\n // append permissions if not already in route data\n if (this.permissions && !(angularRoute.data as CommonsRouteData).permissions) {\n (angularRoute.data as CommonsRouteData).permissions = this.permissions;\n }\n\n const menu = this.buildMenu();\n if (menu.length > 0) {\n (angularRoute.data as CommonsRouteData).menuItems = menu;\n }\n\n if ((this.route.children?.length ?? 0) > 0 || this.children.length > 0) {\n // route has children\n angularRoute.children = [];\n if (this.route.children?.length) {\n angularRoute.children.push(...this.route.children);\n }\n if (this.children.length) {\n for (const childRoute of this.children) {\n angularRoute.children.push(childRoute.build());\n }\n }\n }\n\n if (this.route.canActivate) {\n angularRoute.canActivate = [...this.route.canActivate];\n }\n if (this.route.canActivateChild) {\n angularRoute.canActivateChild = [...this.route.canActivateChild];\n }\n if (this.route.canLoad) {\n angularRoute.canLoad = [...this.route.canLoad];\n }\n if (this.route.canDeactivate) {\n angularRoute.canDeactivate = [...this.route.canDeactivate];\n }\n if (this.route.resolve) {\n angularRoute.resolve = {...this.route.resolve};\n }\n\n return angularRoute;\n }\n\n /**\n * Builds the menu items.\n *\n * @returns {Array<CommonsMenuItem>} - The built menu items.\n */\n private buildMenu(): Array<CommonsMenuItem> {\n const menuItemBuild: CommonsMenuItem | null = this.menuItem ? {...this.menuItem} : null;\n const routeChildrenMenuItems: Array<CommonsMenuItem> = this.children.flatMap(child => child.buildMenu());\n const menuItemChildren: Array<CommonsMenuItem> = [];\n const menuItemChildrenBuild: Array<CommonsMenuItem> = [];\n\n if (menuItemBuild?.items) {\n menuItemChildrenBuild.push(...menuItemBuild.items);\n }\n\n const processMenuItemChild = (child: CommonsMenuItem): CommonsMenuItem => {\n const finalChild: CommonsMenuItem = {...child};\n if (typeof finalChild.routerLink === 'undefined') {\n finalChild.routerLink = this.routePath;\n }\n if (typeof finalChild.routerLink === 'string') {\n finalChild.routerLink = [finalChild.routerLink];\n }\n if (finalChild.routerLink) {\n finalChild.routerLink = removeRouteEmptyPathSegments(finalChild.routerLink);\n }\n // Propagate permissions to children\n if (!finalChild.permissions && this.routeData.permissions) {\n finalChild.permissions = this.routeData.permissions;\n }\n if (!finalChild.permissions && this.permissions) {\n finalChild.permissions = this.permissions;\n }\n return finalChild;\n };\n\n this.menuItemChildren.forEach(child => menuItemChildren.push(processMenuItemChild(child)));\n\n const menuItemChildrenAfterBuild: Array<CommonsMenuItem> = this.menuItemChildrenAfter.map(child => processMenuItemChild(child));\n\n menuItemChildrenBuild.push(...menuItemChildren, ...routeChildrenMenuItems, ...menuItemChildrenAfterBuild);\n\n if (!menuItemBuild) {\n return menuItemChildrenBuild;\n }\n\n menuItemBuild.label = menuItemBuild.label ?? this.routeData.pageTitle;\n if (typeof menuItemBuild.routerLink === 'string') {\n menuItemBuild.routerLink = [menuItemBuild.routerLink];\n }\n menuItemBuild.routerLink = removeRouteEmptyPathSegments(menuItemBuild.routerLink ?? this.routePath);\n if (menuItemChildrenBuild.length > 0) {\n menuItemBuild.items = menuItemChildrenBuild;\n }\n\n if (!menuItemBuild.permissions) {\n menuItemBuild.permissions = this.findMenuItemPermissions();\n }\n\n return [menuItemBuild];\n }\n\n protected findMenuItemPermissions() {\n if (this.menuItem?.permissions) {\n return this.menuItem.permissions;\n }\n if (this.routeData.permissions) {\n // this is already built\n return this.routeData.permissions;\n }\n if (this.permissions) {\n return this.permissions;\n }\n return undefined;\n }\n}\n\nfunction createMenuItem(icon?: string, label?: string, routerLink?: Array<string>) {\n const menuItem: CommonsMenuItem = {};\n if (icon) {\n menuItem.icon = icon;\n }\n if (label) {\n menuItem.label = label;\n }\n if (routerLink) {\n menuItem.routerLink = routerLink;\n }\n return menuItem;\n}\n\n/**\n * Creates a new instance of RouteBuilder with the given path and component.\n *\n * @param {string} path - The path for the route.\n * @param {Type<any>} component - The component for the route.\n * @return {RouteBuilder} - A new instance of RouteBuilder.\n */\nexport function createRoute(path: string, component: Type<any>): RouteBuilder {\n return new RouteBuilder({\n path: path,\n component: component\n });\n}\n\n/**\n * Creates a redirect route for the given path.\n *\n * @param {string} path - The path to match against.\n * @param {string} redirectTo - The URL path to redirect to.\n * @param {'full' | 'prefix'} [pathMatch='prefix'] - The path matching strategy ('full' or 'prefix').\n * @return {RouteBuilder} - A new instance of the RouteBuilder class with the redirect route configuration.\n */\nexport function createRouteRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): RouteBuilder {\n return new RouteBuilder({\n path: path,\n redirectTo: redirectTo,\n pathMatch: pathMatch\n });\n}\n\n/**\n * Creates a lazy route module (or routes).\n *\n * @param {string} path - The path for the route.\n * @param {LoadChildren} loadChildren - The function that loads the lazy module (or routes).\n * @param {Array<any>} [canMatch] - An optional array of objects that can match the route.\n * @returns {RouteBuilder} - A new instance of RouteBuilder class.\n */\nexport function createLazyChildrenRoute(path: string, loadChildren: LoadChildren, canMatch?: Array<any>): RouteBuilder {\n const route: Route = {path: path, loadChildren: loadChildren};\n if (canMatch?.length) {\n route.canMatch = canMatch;\n }\n return new RouteBuilder(route);\n}\n\n/**\n * Creates a lazy route component.\n *\n * @param {string} path - The path for the route.\n * @param {() => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>} loadComponent - The function that loads the component for the route.\n * @param {Array<any>} [canMatch] - The array of values that determine if the route can match.\n * @returns {RouteBuilder} - An instance of RouteBuilder with the created route.\n */\nexport function createLazyRoute(\n path: string,\n loadComponent: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>,\n canMatch?: Array<any>\n): RouteBuilder {\n const route: Route = {path: path, loadComponent: loadComponent};\n if (canMatch?.length) {\n route.canMatch = canMatch;\n }\n return new RouteBuilder(route);\n}\n","import {Route, Routes} from '@angular/router';\n\nimport {RouteBuilder, RouteBuilderAdjustFnType} from './route-builder';\n\nexport class RoutesBuilder {\n private routes: Array<RouteBuilder> = [];\n\n /**\n * Adds an Angular route to the current route configuration.\n *\n * @param {Route} route - The Angular route object to be added.\n * @param {RouteBuilderAdjustFnType} [builderAdjustFn] - Optional function to adjust the route builder before adding.\n */\n public addFromNgRoute(route: Route, builderAdjustFn?: RouteBuilderAdjustFnType): this {\n const builder = new RouteBuilder(route);\n builderAdjustFn?.(builder);\n return this.add(builder);\n }\n\n /**\n * Adds a route redirect to the Angular route.\n *\n * @param {string} path - The path for the redirect.\n * @param {string} redirectTo - The target route to redirect.\n * @param {'full' | 'prefix'} pathMatch - The matching strategy for the redirect. Default is 'prefix'.\n */\n public addRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): this {\n return this.addFromNgRoute({\n path: path,\n redirectTo: redirectTo,\n pathMatch: pathMatch\n });\n }\n\n /**\n * Adds a route to the routes.\n *\n * @param {RouteBuilder} routeBuilder - The route builder object representing the route to be added.\n */\n public add(routeBuilder: RouteBuilder): this {\n this.routes.push(routeBuilder);\n return this;\n }\n\n public build(): Routes {\n return this.routes.map(r => r.build());\n }\n}\n\n/**\n * Creates a new instance of the RoutesBuilder class.\n *\n * @return {RoutesBuilder} A new instance of the RoutesBuilder class.\n */\nexport function createRoutes() {\n return new RoutesBuilder();\n}\n","import {Observable, OperatorFunction} from 'rxjs';\n\nimport {DataListResult} from '../data-list/data-list.model';\n\n/**\n * Maps an Observable of data with optional totalCount and data to a data list result object with provided defaults of empty array and count 0.\n */\nexport function mapToDataList<Item>(): OperatorFunction<{data?: Item[]; totalCount?: number}, DataListResult<Item>> {\n return function <Item>(source: Observable<{data?: Item[]; totalCount?: number}>): Observable<DataListResult<Item>> {\n return new Observable(subscriber => {\n return source.subscribe({\n next(value) {\n subscriber.next({\n data: value.data ?? [],\n totalCount: value.totalCount ?? value.data?.length ?? 0\n });\n },\n error: err => {\n subscriber.error(err);\n }\n });\n });\n };\n}\n","import {HttpBackend} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\n\nimport {CommonsInitService} from '../commons-init.service';\n\nexport function commonsInitializerProvider(handler: HttpBackend, commonsInit: CommonsInitService): () => Observable<void> {\n return () => commonsInit.initialize(handler);\n}\n","import {InjectionToken} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nexport const COMMONS_INITIALIZER_IT = new InjectionToken<ReadonlyArray<() => Observable<unknown>>>('COMMONS_INIZIALIZER');\n","import {InjectionToken} from '@angular/core';\n\nimport {ILogPublisher} from '../../log/log.model';\n\nexport const LOG_PUBLISHERS = new InjectionToken<ILogPublisher[]>('LOG_PUBLISHERS');\n","import {HttpClient, HttpErrorResponse} from '@angular/common/http';\n\nimport {Observable, combineLatest, of, tap} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\n\nimport {throwError} from '../error/error-helpers';\nimport {objectDeepMerge} from '../helpers/object';\nimport {ILoggerService} from '../log/log.model';\nimport {CommonsModuleConfig} from './tokens/module-config.token';\n\nexport class CommonsConfigurationService {\n private static _instance: CommonsConfigurationService = new CommonsConfigurationService();\n\n public static get(): CommonsConfigurationService {\n return CommonsConfigurationService._instance;\n }\n\n private logger?: ILoggerService;\n\n private http?: HttpClient;\n private moduleConfig?: CommonsModuleConfig;\n private projectEnvironment?: any;\n private jsonSources: Array<JsonSourceLoadInfo> = [];\n private objectSources: Array<any> = [];\n\n private configuration = {...this.projectEnvironment};\n\n private constructor() {\n // empty, but needed for private constructor\n }\n\n public init(httpClient: HttpClient, logger?: ILoggerService): this {\n this.http = httpClient;\n this.logger = logger?.create('ConfigurationService');\n return this;\n }\n\n /**\n * Add commons module config.\n * @param config Module config.\n */\n public addModuleConfigSource(config?: CommonsModuleConfig): void {\n this.moduleConfig = config;\n this.mergeConfigs();\n this.logger?.debug(`Module configuration source added.`);\n }\n\n /**\n * Add project environment source.\n * @param environment Environment.\n */\n public addEnvironmentSource(environment: any): void {\n this.projectEnvironment = environment;\n this.mergeConfigs();\n this.logger?.debug(`Environment configuration source added.`);\n }\n\n /**\n * Adds new config source from JSON file loaded from HTTP.\n * @param config Config for JSON file.\n * @param loadImmediately Load is by default triggered on app initialization. If immediate load is required, pass true.\n */\n public addJsonSource(config: {url?: string; enableEnvProd?: boolean} = {}, loadImmediately = false): Observable<boolean> {\n if (!config) {\n config = {};\n }\n const url = config?.url ?? 'assets/config/env{{environment}}.json';\n const enableEnvProdReplace = config?.enableEnvProd ?? false;\n\n const sourceInfo: JsonSourceLoadInfo = {\n url: url,\n isEnvironment: false,\n environmentEnableEnvProd: enableEnvProdReplace,\n isLoaded: false\n };\n this.jsonSources.push(sourceInfo);\n\n this.logger?.debug(`JSON configuration source added: ${url}.`);\n\n if (loadImmediately) {\n return this.loadJsonConfigurations();\n } else {\n return of(true);\n }\n }\n\n /**\n * Adds new config object from any object.\n * @param config Config object.\n */\n public addObjectSource(config: any): void {\n this.objectSources.push(config);\n this.logger?.debug(`Object configuration source added.`);\n this.mergeConfigs();\n }\n\n /**\n * returns true if there is no jsonSources\n */\n private skipJsonConfigsLoading = () => this.jsonSources === null || this.jsonSources.length === 0;\n\n /**\n * loads json sources or skips them returning true in both cases\n * used for `skipJsonSourceInit` configuration parameter\n */\n public loadJsonConfigurations = (): Observable<boolean> => (this.skipJsonConfigsLoading() ? of(true) : this.loadJsonSources());\n\n private loadJsonSources(): Observable<boolean> {\n if (!this.http) {\n this.logger?.warn('HTTP client was not initialized. Json source cannot be loaded');\n return of(false);\n }\n\n const httpClient = this.http;\n\n return combineLatest(\n this.jsonSources\n .filter(source => !source.isLoaded)\n .map(sourceInfo => {\n let url = sourceInfo.url;\n sourceInfo.environment = this.projectEnvironment?.name || (this.projectEnvironment?.production ? (sourceInfo.environmentEnableEnvProd ? 'prod' : null) : 'dev');\n sourceInfo.isEnvironment = !!sourceInfo.environment;\n\n if (sourceInfo.isEnvironment) {\n url = url.replace('{{environment}}', '.' + sourceInfo.environment);\n } else {\n // replace possible environment entry and change source info url\n url = url.replace('{{environment}}', '');\n sourceInfo.url = url;\n }\n\n this.logger?.debug(`Loading JSON configuration source from ${url}.`);\n\n return httpClient.get<object>(url).pipe(\n catchError((err: HttpErrorResponse) => {\n if (sourceInfo.isEnvironment) {\n const noEnvUrl = sourceInfo.url.replace('{{environment}}', '');\n sourceInfo.environment = null;\n return httpClient.get<object>(noEnvUrl);\n } else {\n this.logger?.warn(`Configuration file ${url} not loaded`, err);\n\n return of(false);\n }\n }),\n map(configuration => {\n if (typeof configuration !== 'object') {\n return false;\n }\n\n sourceInfo.configuration = configuration;\n sourceInfo.isLoaded = true;\n\n return true;\n })\n );\n })\n ).pipe(\n map(sourceResults => sourceResults.every(sr => sr)),\n tap(() => this.mergeConfigs())\n );\n }\n\n /**\n * Get configuration.\n */\n public getConfig() {\n return this.configuration;\n }\n\n /**\n * Get configuration value for key.\n * @param key Configuration key.\n */\n public getConfigValue<T = any>(key: string): T | null {\n return this.configuration[key] ? this.configuration[key] : null;\n }\n\n /**\n * Gets the configuration value for the given key. If the value is not found,\n * it throws an error with a custom error message.\n *\n * @param {string} key - The configuration key.\n * @param {string} [errorMessage] - Custom error message to be thrown if the value is not found.\n *\n * @returns {T} - The configuration value.\n *\n * @throws {CommonsInternalError} - If the value is not found or a custom error message is provided.\n */\n public getConfigValueOrThrow<T = any>(key: string, errorMessage?: string): T {\n return this.getConfigValue(key) ?? throwError(errorMessage ?? `Missing configuration value for '${key}'!`, {name: 'CommonsMissingConfigError'});\n }\n\n /**\n * Has configuration for key.\n * @param key Configuration key.\n */\n public hasConfigKey(key: string): boolean {\n return Object.keys(this.configuration).some(k => k === key);\n }\n\n /**\n * Merges configuration from multiple sources with\n */\n private mergeConfigs() {\n let config = {};\n\n // 1. object sources have highest priority\n if (this.objectSources.length) {\n for (const objConfig of this.objectSources) {\n config = objectDeepMerge(config, objConfig);\n }\n }\n\n // 2. JSON sources come next\n const jsonConfigs = this.jsonSources.filter(source => source.isLoaded && typeof source.configuration === 'object').map(source => source.configuration);\n if (jsonConfigs.length) {\n for (const jsonConfig of jsonConfigs) {\n if (jsonConfig) {\n config = objectDeepMerge(config, jsonConfig);\n }\n }\n }\n\n // 3. project env has the next priority\n if (this.projectEnvironment) {\n config = objectDeepMerge(config, this.projectEnvironment);\n }\n\n // 4. module config has the lowest priority\n if (this.moduleConfig) {\n config = objectDeepMerge(config, this.moduleConfig);\n }\n\n this.configuration = config;\n }\n}\n\ninterface JsonSourceLoadInfo {\n url: string;\n isLoaded: boolean;\n isEnvironment: boolean;\n environment?: string | null;\n environmentEnableEnvProd?: boolean;\n configuration?: object;\n}\n","import {Injectable, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Route, RouteConfigLoadEnd, RouteConfigLoadStart, Router, Routes} from '@angular/router';\n\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {LoggerService} from '../log/logger.service';\n\n@Injectable()\nexport class CommonsRouterService {\n private readonly router = inject(Router);\n private readonly logger = inject(LoggerService).create('CommonsRouterService');\n private readonly routesLoadedPropKey = '_loadedRoutes';\n\n private currentNavigationPath?: string;\n private currentNavigationModuleKeys: string[] = [];\n\n private lazyLoadedRoutesConfig: {\n [path: string]: {\n route?: Route;\n isLoadEnd: boolean;\n loadedRoutes?: Routes;\n loadedRoutesSubject: Subject<Routes>;\n };\n } = {};\n\n constructor() {\n this.router.events.pipe(takeUntilDestroyed()).subscribe(event => {\n if (event instanceof NavigationStart) {\n this.startNavigation(event.url);\n } else if (event instanceof RouteConfigLoadStart) {\n this.markNavigationConfigLoad(event.route);\n } else if (event instanceof RouteConfigLoadEnd) {\n this.markNavigationConfigLoad(event.route, true);\n } else if (event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError) {\n this.finishNavigation();\n }\n });\n }\n\n public getRouteLoadedChildren(path: string | Array<string>): Routes | undefined {\n return this.getOrCreateRouteForModule(this.getModulePathFromRouterLink(path)).loadedRoutes;\n }\n\n public getRouteLoadedChildren$(path: string | Array<string>): Observable<Routes> {\n return this.getOrCreateRouteForModule(this.getModulePathFromRouterLink(path)).loadedRoutesSubject.asObservable().pipe(first());\n }\n\n public initialize() {\n this.logger.debug('Initialized.');\n }\n\n private startNavigation(url: string) {\n this.currentNavigationPath = url.split('?')[0].split('#')[0];\n this.currentNavigationModuleKeys = [];\n }\n\n private finishNavigation() {\n if (this.currentNavigationModuleKeys.length) {\n this.currentNavigationModuleKeys.forEach(k => this.getLoadedRoutesFromRoute(k, true));\n }\n this.currentNavigationPath = undefined;\n }\n\n private markNavigationConfigLoad(route: Route, isEnd = false) {\n const routePath = route.path ?? '';\n\n let moduleKey = routePath;\n const currentNavigationPathRoutePathIdx = this.currentNavigationPath?.indexOf(routePath) ?? -1;\n if (this.currentNavigationPath && currentNavigationPathRoutePathIdx >= 0) {\n moduleKey = this.currentNavigationPath.substring(0, currentNavigationPathRoutePathIdx + routePath.length);\n } else if (this.currentNavigationPath && routePath !== this.currentNavigationPath && !routePath.startsWith('/')) {\n // usually means that redirect to currentNavigationPath was done, additionally, route path was also triggered on lazy routes load\n moduleKey = `${this.currentNavigationPath}/${routePath}`;\n }\n\n if (!isEnd && this.currentNavigationModuleKeys.indexOf(moduleKey) < 0) {\n this.currentNavigationModuleKeys.push(moduleKey);\n }\n\n this.logger.trace(`Config load ${isEnd ? 'end' : 'start'} for ${moduleKey} (routePath: ${routePath}; navigationUrl: ${this.currentNavigationPath})`);\n\n const config = this.getOrCreateRouteForModule(moduleKey);\n config.route = route;\n config.isLoadEnd = isEnd;\n\n if (isEnd) {\n this.getLoadedRoutesFromRoute(moduleKey);\n }\n }\n\n private getLoadedRoutesFromRoute(moduleKey: string, isFinish = false) {\n const moduleConfig = this.lazyLoadedRoutesConfig[moduleKey];\n if (!moduleConfig?.route || Array.isArray(moduleConfig.loadedRoutes)) {\n return;\n }\n\n moduleConfig.loadedRoutes = moduleConfig.route![this.routesLoadedPropKey as keyof object];\n\n if (!Array.isArray(moduleConfig.loadedRoutes) && isFinish) {\n // if is called from finish and no lazy loaded routes are matched from router events, try finding in route config, it should be there!\n this.logger.trace(`Route loadedRoutes for ${moduleKey} not found, searching in router config now`);\n const route = this.findRouteInRouteConfig(moduleKey);\n if (route) {\n moduleConfig.route = route;\n moduleConfig.loadedRoutes = moduleConfig.route![this.routesLoadedPropKey as keyof object];\n } else {\n this.logger.warn(`Route loadedRoutes for ${moduleKey} were not found in router config`);\n }\n }\n\n if (typeof moduleConfig.loadedRoutes !== 'undefined') {\n moduleConfig.loadedRoutesSubject.next(moduleConfig.loadedRoutes!);\n moduleConfig.loadedRoutesSubject.complete();\n\n this.logger.trace(`Config load for ${moduleKey} is complete`, moduleConfig);\n }\n }\n\n /**\n * Search for route config by module path by recursive scanning of router config tree.\n * @param modulePath Path of module that is searched.\n * @param routes Routes to be scanned. If not provided, it starts on root router config.\n * @private\n */\n private findRouteInRouteConfig(modulePath: string, routes: Routes = this.router.config): Route | null {\n if (modulePath.startsWith('/')) {\n modulePath = modulePath.substring(1);\n }\n\n for (const route of routes) {\n if (typeof route.path === 'undefined') {\n continue;\n }\n let routePath = route.path;\n if (routePath.startsWith('/')) {\n routePath = routePath.substring(1);\n }\n\n const longestPathMatch = this.findLongestPathMatch(modulePath, routePath);\n if (longestPathMatch === null) {\n continue;\n }\n\n // there is a partial or full match\n if (route.loadChildren && modulePath === longestPathMatch) {\n // it's a hit!\n return route;\n } else if (route.loadChildren && Array.isArray(route[this.routesLoadedPropKey as keyof object])) {\n const result = this.findRouteInRouteConfig(modulePath.substring(longestPathMatch.length, modulePath.length), route[this.routesLoadedPropKey as keyof object]);\n if (result) {\n return result;\n }\n } else if (route.children) {\n const result = this.findRouteInRouteConfig(modulePath.substring(longestPathMatch.length, modulePath.length), route.children);\n if (result) {\n return result;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Finds longest path match of source to match string. If match is '', it is considered as a match in Angular routing.\n * @param source Source string from on which comparison is based.\n * @param match Match string to which the source is matched to.\n * @private\n */\n private findLongestPathMatch(source: string, match: string): string | null {\n const sourceSegments = source.split('/');\n const matchSegments = match.split('/');\n\n if (matchSegments.length === 1 && matchSegments[0] === '') {\n // it's a hit, because empty route must always be processed (kind of a \"abstract\" route)\n return '';\n }\n\n if (sourceSegments[0] === matchSegments[0]) {\n // there is a match, find how long it is\n for (let i = 1; i < sourceSegments.length; i++) {\n if (sourceSegments[i] !== matchSegments[i]) {\n // end of match\n return sourceSegments.slice(0, i).join('/');\n }\n }\n\n // there is full match\n return sourceSegments.join('/');\n }\n\n return null;\n }\n\n private getOrCreateRouteForModule(moduleKey: string) {\n if (!this.lazyLoadedRoutesConfig[moduleKey]) {\n this.lazyLoadedRoutesConfig[moduleKey] = {\n loadedRoutesSubject: new ReplaySubject<Routes>(1),\n isLoadEnd: false\n };\n }\n\n return this.lazyLoadedRoutesConfig[moduleKey];\n }\n\n private getModulePathFromRouterLink(path: string | Array<string>) {\n return ('/' + (Array.isArray(path) ? path.join('/') : path)).replace(/\\/\\//g, '/');\n }\n}\n","import {HttpBackend, HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject, Subject, combineLatest, mergeMap, of, take, throwError} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\n\nimport {LoggerService} from '../log/logger.service';\nimport {CommonsConfigurationService} from './commons-configuration.service';\nimport {CommonsRouterService} from './commons-router.service';\nimport {CommonsService} from './commons.service';\nimport {COMMONS_INITIALIZER_IT} from './tokens/commons-init.token';\nimport {LOG_PUBLISHERS} from './tokens/log-publisher.token';\nimport {COMMONS_MODULE_CONFIG_IT} from './tokens/module-config.token';\n\nexport enum CommonsInitEventEnum {\n CommonsInitStart,\n ConfigSourceModuleLoaded,\n ConfigSourceProjectEnvLoaded,\n ConfigSourceJsonAdded,\n ConfigSourceJsonLoaded,\n CommonsInitEnd,\n CommonsInitError\n}\n\n@Injectable()\nexport class CommonsInitService {\n private readonly logger = inject(LoggerService);\n private readonly logPublishers = inject(LOG_PUBLISHERS, {optional: true});\n private readonly config = inject(CommonsConfigurationService);\n private readonly commons = inject(CommonsService);\n private readonly commonsRouter = inject(CommonsRouterService);\n private readonly moduleConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly commonsInitializers = inject(COMMONS_INITIALIZER_IT, {optional: true});\n\n private isInitialized = false;\n\n private httpClient!: HttpClient;\n\n private isInitializedSubject = new ReplaySubject<boolean>();\n private commonsInitServiceEvents = new Subject<CommonsInitEventEnum>();\n\n public get events$(): Observable<CommonsInitEventEnum> {\n return this.commonsInitServiceEvents.asObservable();\n }\n\n public get isInitialized$(): Observable<boolean> {\n return this.isInitializedSubject.asObservable().pipe(take(1));\n }\n\n public initialize(handler: HttpBackend): Observable<void> {\n if (this.isInitialized) {\n return of(void 0);\n }\n this.isInitialized = true;\n\n LoggerService.configure({timestampFormat: this.moduleConfig?.log?.timestampFormat});\n\n const ctxLogger = this.logger.create('CommonsInitService');\n ctxLogger.debug('Commons initialization is starting');\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.CommonsInitStart);\n\n // init http client\n this.httpClient = new HttpClient(handler);\n\n // init router\n this.commonsRouter.initialize();\n\n // init configurations with settings from module config\n this.config.init(this.httpClient, this.logger);\n this.config.addModuleConfigSource(this.moduleConfig ?? undefined);\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceModuleLoaded);\n if (this.moduleConfig?.configuration?.projectEnvironment) {\n this.config.addEnvironmentSource(this.moduleConfig.configuration.projectEnvironment);\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceProjectEnvLoaded);\n }\n\n // init configurations with settings from module config for json source\n if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {\n const jsonSourceEnableEnvProd = this.moduleConfig?.configuration?.jsonSourceEnableEnvProd ?? false;\n const jsonSource = this.moduleConfig?.configuration?.jsonSource;\n if (!jsonSource) {\n this.config.addJsonSource({enableEnvProd: jsonSourceEnableEnvProd});\n } else if (Array.isArray(jsonSource)) {\n jsonSource.forEach(source => this.config.addJsonSource({url: source, enableEnvProd: jsonSourceEnableEnvProd}));\n } else {\n this.config.addJsonSource({url: jsonSource, enableEnvProd: jsonSourceEnableEnvProd});\n }\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceJsonAdded);\n }\n\n return this.config.loadJsonConfigurations().pipe(\n mergeMap(() => {\n if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceJsonLoaded);\n }\n // init logger\n LoggerService.init(this.config, this.logPublishers ?? []);\n\n if (this.commonsInitializers) {\n ctxLogger.debug('Project initializers are being initialized');\n return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));\n } else {\n return of(true);\n }\n }),\n map(() => {\n ctxLogger.debug('Commons initialization is finished');\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.CommonsInitEnd);\n this.commonsInitServiceEvents.complete();\n this.isInitializedSubject.next(true);\n return this.commons.initialize();\n }),\n catchError(err => {\n ctxLogger.warn('Commons initialization failed with error', err);\n this.commonsInitServiceEvents.next(CommonsInitEventEnum.CommonsInitError);\n this.commonsInitServiceEvents.complete();\n this.isInitializedSubject.next(false);\n return throwError(() => err);\n })\n );\n }\n}\n","import {Injectable, inject} from '@angular/core';\n\nimport {BROWSER_STORAGE_IT} from './tokens/browser-storage.token';\n\nexport type LocalstorageConfigValueType = string | number | Date | object | boolean;\n\n@Injectable()\nexport class CommonsStorageService {\n private readonly localStorage = inject(BROWSER_STORAGE_IT);\n private readonly _configKey = 'CommonsUserPrefs';\n\n private buildLocalStorageKey(type: string, key: string): string {\n return `${this._configKey}_${type}_${key}`;\n }\n\n public getItem<T = LocalstorageConfigValueType>(type: string, key: string): T | undefined {\n const localstorageData = this.localStorage.getItem(this.buildLocalStorageKey(type, key));\n if (localstorageData) {\n return JSON.parse(localstorageData);\n }\n return undefined;\n }\n\n public setItem<T = LocalstorageConfigValueType>(type: string, key: string, value: T): void {\n this.localStorage.setItem(this.buildLocalStorageKey(type, key), JSON.stringify(value));\n }\n\n public removeItem(type: string, key: string) {\n this.localStorage.removeItem(this.buildLocalStorageKey(type, key));\n }\n}\n","export enum StyleSizeEnum {\n ExtraSmall,\n Small,\n Normal,\n Large,\n ExtraLarge\n}\n\nexport enum StyleLevelEnum {\n Default,\n Primary,\n Secondary,\n Info,\n Help,\n Success,\n Warning,\n Danger\n}\n","export class Styles {\n public static readonly BUTTON_ROUNDED_WIDTH_XS = 26;\n public static readonly BUTTON_ROUNDED_WIDTH_SM = 28;\n public static readonly BUTTON_ROUNDED_WIDTH = 32;\n public static readonly BUTTON_ROUNDED_WIDTH_LG = 45;\n\n public static readonly ACTION_BUTTON_MARGIN_X = 2;\n\n public static readonly TABLE_CELL_PADDING_X = 8; // left and right paddings are same\n public static readonly TABLE_CELL_PADDING_X_SM = 4;\n public static readonly TABLE_CELL_PADDING_X_LG = 12;\n}\n","import {HttpBackend} from '@angular/common/http';\nimport {APP_INITIALIZER, ErrorHandler, Provider} from '@angular/core';\n\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService} from 'primeng/dynamicdialog';\n\nimport {CommonsErrorHandler} from './error/error-handler';\nimport {LogPublisherConsoleService} from './log/log-publisher-console.service';\nimport {LoggerService} from './log/logger.service';\nimport {TypeRegistry} from './registry/type-registry';\nimport {PermissionService} from './security/permission.service';\nimport {CommonsConfigurationService} from './services/commons-configuration.service';\nimport {CommonsInitService} from './services/commons-init.service';\nimport {CommonsRouterService} from './services/commons-router.service';\nimport {CommonsStorageService} from './services/commons-storage.service';\nimport {CommonsService} from './services/commons.service';\nimport {commonsInitializerProvider} from './services/providers/commons-init.provider';\nimport {BROWSER_STORAGE_IT} from './services/tokens/browser-storage.token';\nimport {LOG_PUBLISHERS} from './services/tokens/log-publisher.token';\nimport {COMMONS_MODULE_CONFIG_IT, CommonsModuleConfig} from './services/tokens/module-config.token';\n\nexport enum CommonsFeatureTypeEnum {\n Layout,\n Table,\n Tableview,\n DataApiAsClassV1\n}\n\nexport interface CommonsFeature {\n type: CommonsFeatureTypeEnum;\n providers: Provider[];\n}\n\nexport function provideCommons(config?: CommonsModuleConfig, ...features: CommonsFeature[]): Provider[] {\n const providers: Provider[] = [\n // primeng services\n DialogService,\n MessageService,\n ConfirmationService,\n\n // services\n CommonsInitService,\n CommonsService,\n CommonsRouterService,\n PermissionService,\n CommonsStorageService,\n\n {\n provide: COMMONS_MODULE_CONFIG_IT,\n useValue: config\n },\n {\n provide: TypeRegistry,\n useFactory: () => TypeRegistry.get()\n },\n {\n provide: CommonsConfigurationService,\n useFactory: () => CommonsConfigurationService.get()\n },\n {\n provide: APP_INITIALIZER,\n useFactory: commonsInitializerProvider,\n deps: [HttpBackend, CommonsInitService],\n multi: true\n },\n {\n provide: LoggerService,\n useFactory: () => LoggerService.get()\n },\n {\n provide: LOG_PUBLISHERS,\n useClass: LogPublisherConsoleService,\n multi: true\n },\n {\n provide: BROWSER_STORAGE_IT,\n useFactory: () => localStorage\n },\n {\n provide: ErrorHandler,\n useClass: CommonsErrorHandler\n }\n ];\n\n features.forEach(f => {\n providers.push(...f.providers);\n });\n\n return providers;\n}\n","// action\nexport * from './action/action-data.model';\nexport * from './action/action-parameters.model';\n\n// components\nexport * from './components/notification/notification-wrapper.component';\nexport * from './components/pages/error/error.page.component';\nexport * from './components/pages/not-found/not-found.page.component';\n\n// data-list\nexport * from './data-list/data-list.model';\nexport * from './data-list/data-list-params-helpers';\nexport * from './data-list/filter-match.model';\nexport * from './data-list/filter-metadata.model';\n\n// data-providers\nexport * from './data-providers/base.data-provider';\nexport * from './data-providers/base-data-provider.factory';\nexport * from './data-providers/lookup.data-provider';\n\n// descriptors\nexport * from './descriptors/action.descriptor';\nexport * from './descriptors/column.descriptor';\nexport * from './descriptors/editor.descriptor';\nexport * from './descriptors/enum.descriptor';\nexport * from './descriptors/filter.descriptor';\nexport * from './descriptors/lookup.descriptor';\nexport * from './descriptors/model.descriptor';\nexport * from './descriptors/table.descriptor';\nexport * from './descriptors/tableview.descriptor';\n\n// directives\nexport * from './directives/component.directive';\nexport * from './directives/template.directive';\n\n// enums\nexport * from './enum/enum.model';\nexport * from './enum/enum-helpers';\n\n// error\nexport * from './error/error.model';\nexport * from './error/error-handler';\nexport * from './error/error-helpers';\n\n// helpers\nexport * from './helpers/coercion';\nexport * from './helpers/date';\nexport * from './helpers/notification';\nexport * from './helpers/number';\nexport * from './helpers/object';\nexport * from './helpers/route';\nexport * from './helpers/string';\nexport * from './helpers/type-helpers';\nexport * from './helpers/templates';\n\n// i18n\nexport * from './i18n/i18n-common';\nexport * from './i18n/i18n-error';\nexport * from './i18n/i18n-type';\n\n// log\nexport * from './log/log.model';\nexport * from './log/log-publisher-console.service';\nexport * from './log/logger.service';\n\n// models\nexport * from './models/class-attribute.model';\nexport * from './models/class-service.model';\nexport * from './models/getter.model';\nexport * from './models/i18n.model';\nexport * from './models/menu.model';\nexport * from './models/user.model';\nexport * from './models/version.model';\n\n// pipes\nexport * from './pipes/boolean.pipe';\nexport * from './pipes/class-map.pipe';\nexport * from './pipes/enum.pipe';\nexport * from './pipes/enumerate.pipe';\nexport * from './pipes/enumerate-async.pipe';\nexport * from './pipes/getter.pipe';\nexport * from './pipes/i18n-property.pipe';\nexport * from './pipes/json-path.pipe';\nexport * from './pipes/parametrize.pipe';\nexport * from './pipes/template.pipe';\n\n// reflect\nexport * from './reflect/type-enum-decorator';\nexport * from './reflect/type-enum-metadata';\n\n// registry\nexport * from './registry/registry.model';\nexport * from './registry/type-registry';\n\n// router\nexport * from './router/route-builder';\nexport * from './router/router.model';\nexport * from './router/routes-builder';\n\n// rxjs\nexport * from './rxjs/map-data-list-result-operator';\n\n// security\nexport * from './security/permission.guard';\nexport * from './security/permission.service';\nexport * from './security/permission-helpers';\nexport * from './security/permissions.model';\n\n// services\nexport * from './services/providers/commons-init.provider';\nexport * from './services/tokens/browser-storage.token';\nexport * from './services/tokens/commons-init.token';\nexport * from './services/tokens/log-publisher.token';\nexport * from './services/tokens/module-config.token';\nexport * from './services/commons.service';\nexport * from './services/commons-configuration.service';\nexport * from './services/commons-init.service';\nexport * from './services/commons-router.service';\nexport * from './services/commons-storage.service';\n\n// styles\nexport * from './styles/style.model';\nexport * from './styles/style-constants';\n\n// provide\nexport * from './provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i1.CommonsService","i2","i3","toObservable","throwError"],"mappings":"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"}
|