@newheap/platform-common 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"newheap-platform-common.mjs","sources":["../../../projects/nh-common/src/lib/models/config.models.ts","../../../projects/nh-common/src/lib/models/misc.models.ts","../../../projects/nh-common/src/lib/models/http.models.ts","../../../projects/nh-common/src/lib/models/auth.models.ts","../../../projects/nh-common/src/lib/models/user-notification.models.ts","../../../projects/nh-common/src/lib/models/background-operation.models.ts","../../../projects/nh-common/src/lib/util/nh-common-util.ts","../../../projects/nh-common/src/lib/util/nh-string-util.ts","../../../projects/nh-common/src/lib/util/nh-http-util.ts","../../../projects/nh-common/src/lib/util/nh-encoding-util.ts","../../../projects/nh-common/src/lib/util/nh-angular-util.ts","../../../projects/nh-common/src/lib/util/nh-api-util.ts","../../../projects/nh-common/src/lib/util/nh-form.util.ts","../../../projects/nh-common/src/lib/util/nh-mutex.util.ts","../../../projects/nh-common/src/lib/interceptors/nh-encode-http-params.interceptor.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/utils.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/validators.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/parseDate.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/formatDate.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/cookie.ts","../../../projects/nh-common/src/lib/services/nh-cookie.service.ts","../../../projects/nh-common/src/lib/services/nh-passkey-client.service.ts","../../../projects/nh-common/src/lib/services/nh-auth.service.ts","../../../projects/nh-common/src/lib/interceptors/nh-server-http.interceptor.ts","../../../projects/nh-common/src/lib/interceptors/nh-deduplicate-get-requests.interceptor.ts","../../../projects/nh-common/src/lib/accessors/abstract-value.accessor.ts","../../../projects/nh-common/src/lib/services/nh-error-handler.service.ts","../../../projects/nh-common/src/lib/services/nh-app.service.ts","../../../projects/nh-common/src/lib/services/nh-json-ld.service.ts","../../../projects/nh-common/src/lib/services/nh-config.service.ts","../../../projects/nh-common/src/lib/services/nh-title.service.ts","../../../projects/nh-common/src/lib/services/nh-meta.service.ts","../../../projects/nh-common/src/lib/services/nh-router-setup.service.ts","../../../projects/nh-common/src/lib/services/nh-router.service.ts","../../../projects/nh-common/src/lib/services/nh-page.service.ts","../../../projects/nh-common/src/lib/services/nh-api.service.ts","../../../projects/nh-common/src/lib/directives/nh-modal.directives.ts","../../../projects/nh-common/src/lib/components/nh-loader/component.ts","../../../projects/nh-common/src/lib/components/nh-loader/component.html","../../../projects/nh-common/src/lib/components/nh-modal/component.ts","../../../projects/nh-common/src/lib/components/nh-modal/component.html","../../../projects/nh-common/src/lib/components/nh-confirm-modal/component.ts","../../../projects/nh-common/src/lib/components/nh-confirm-modal/component.html","../../../projects/nh-common/src/lib/services/nh-modal.service.ts","../../../projects/nh-common/src/lib/services/nh-task-result-form.validator.ts","../../../projects/nh-common/src/lib/services/nh-head.service.ts","../../../projects/nh-common/src/lib/services/nh-internet-connection.service.ts","../../../projects/nh-common/src/lib/services/nh-server.service.ts","../../../projects/nh-common/src/lib/services/nh-server-side-form-validator.service.ts","../../../projects/nh-common/src/lib/services/nh-base-api.service.ts","../../../projects/nh-common/src/lib/services/nh-user-notification.service.ts","../../../projects/nh-common/src/lib/services/nh-background-operation.service.ts","../../../projects/nh-common/src/lib/services/nh-background-operation-administration.service.ts","../../../projects/nh-common/src/lib/services/nh-background-operation-live-update.service.ts","../../../projects/nh-common/src/lib/services/nh-background-operation.store.ts","../../../projects/nh-common/src/lib/services/nh-context-menu.service.ts","../../../projects/nh-common/src/lib/guards/nh-auth.guards.ts","../../../projects/nh-common/src/lib/pipes/encode.pipes.ts","../../../projects/nh-common/src/lib/pipes/date.pipes.ts","../../../projects/nh-common/src/lib/pipes/auth.pipes.ts","../../../projects/nh-common/src/lib/pipes/primitive-type.pipes.ts","../../../projects/nh-common/src/lib/pipes/safe-html.pipes.ts","../../../projects/nh-common/src/lib/directives/nh-to-head.directive.ts","../../../projects/nh-common/src/lib/directives/nh-debounce.directives.ts","../../../projects/nh-common/src/lib/directives/nh-router-link.directive.ts","../../../projects/nh-common/src/lib/components/nh-json-ld/nh-json-ld.component.ts","../../../projects/nh-common/src/lib/components/nh-loading-modal/component.ts","../../../projects/nh-common/src/lib/components/nh-loading-modal/component.html","../../../projects/nh-common/src/lib/components/nh-page-base-component/nh-page-base.component.ts","../../../projects/nh-common/src/lib/components/nh-form-dropdown/form-dropdown.component.ts","../../../projects/nh-common/src/lib/components/nh-form-dropdown/form-dropdown.component.html","../../../projects/nh-common/src/lib/components/nh-form-error-message/form-error-message.component.ts","../../../projects/nh-common/src/lib/components/nh-form-error-message/form-error-message.component.html","../../../projects/nh-common/src/lib/components/nh-collection-base-component/component.ts","../../../projects/nh-common/src/lib/components/nh-mutate-base-component/component.ts","../../../projects/nh-common/src/lib/components/nh-modal-mutate-base-component/component.ts","../../../projects/nh-common/src/lib/components/nh-error/component.ts","../../../projects/nh-common/src/lib/components/nh-error/component.html","../../../projects/nh-common/src/lib/components/nh-user-notifications-component/abstract.component.ts","../../../projects/nh-common/src/lib/components/nh-background-operation-progress/component.ts","../../../projects/nh-common/src/lib/components/nh-background-operation-progress/component.html","../../../projects/nh-common/src/lib/components/nh-search-input/search-input.component.ts","../../../projects/nh-common/src/lib/components/nh-search-input/search-input.component.html","../../../projects/nh-common/src/lib/components/nh-page-size/page-size.component.ts","../../../projects/nh-common/src/lib/components/nh-page-size/page-size.component.html","../../../projects/nh-common/src/lib/guards/nh-cancel-navigation.guard.ts","../../../projects/nh-common/src/lib/interceptors/nh-active-division.interceptor.ts","../../../projects/nh-common/src/lib/interceptors/nh-api.auth.interceptor.ts","../../../projects/nh-common/src/lib/nh-common.module.ts","../../../projects/nh-common/src/lib/prototype-extensions/array.extensions.ts","../../../projects/nh-common/src/lib/prototype-extensions/observable.extensions.ts","../../../projects/nh-common/src/lib/miscellaneous/translate-loaders/translate-browser.loader.ts","../../../projects/nh-common/src/public-api.ts","../../../projects/nh-common/src/newheap-platform-common.ts"],"sourcesContent":["export class EndpointsAuthenticationNhCommonModuleConfig {\n msAuthenticate: string = '/authentication/oath/microsoft/authorize';\n msRedirectUrl: string = '/authentication/oath/microsoft';\n authorizationFlow: string = '/authentication/method';\n login: string = '/authentication/login';\n logout: string = '/authentication/logout';\n refresh: string = '/authentication/refresh';\n impersonate: string = '/authentication/impersonate';\n revertImpersonate: string = '/authentication/ImpersonateRevert';\n accountInformation: string ='/account';\n twoFactorVerify: string = '/authentication/two-factor/verify';\n twoFactorStatus: string = '/account/two-factor';\n twoFactorAuthenticator: string = '/account/two-factor/authenticator';\n twoFactorAuthenticatorConfirm: string = '/account/two-factor/authenticator/confirm';\n twoFactorRecoveryCodes: string = '/account/two-factor/recovery-codes';\n twoFactorDisable: string = '/account/two-factor/disable';\n twoFactorForgetDevices: string = '/account/two-factor/forget-devices';\n twoFactorEmailSetup: string = '/account/two-factor/email';\n twoFactorEmailConfirm: string = '/account/two-factor/email/confirm';\n twoFactorEmail: string = '/authentication/two-factor/email';\n twoFactorPasskeyOptions: string = '/authentication/two-factor/passkey/options';\n twoFactorPasskey: string = '/authentication/two-factor/passkey';\n twoFactorEnrollmentAuthenticator: string = '/authentication/two-factor/enrollment/authenticator';\n twoFactorEnrollmentAuthenticatorConfirm: string = '/authentication/two-factor/enrollment/authenticator/confirm';\n twoFactorEnrollmentEmail: string = '/authentication/two-factor/enrollment/email';\n twoFactorEnrollmentEmailConfirm: string = '/authentication/two-factor/enrollment/email/confirm';\n twoFactorEnrollmentPasskeyOptions: string = '/authentication/two-factor/enrollment/passkey/options';\n twoFactorEnrollmentPasskey: string = '/authentication/two-factor/enrollment/passkey';\n /** Administration route; `{userId}` is replaced with the user ID. */\n twoFactorUserReset: string = '/authentication/two-factor/users/{userId}/reset';\n twoFactorEnrollmentReminders: string = '/authentication/two-factor/operations/enrollment-reminders';\n twoFactorSessionRevocation: string = '/authentication/two-factor/operations/session-revocation';\n passkeySignInOptions: string = '/authentication/passkey/options';\n passkeySignIn: string = '/authentication/passkey/login';\n passkeys: string = '/account/passkeys';\n passkeyRegistrationOptions: string = '/account/passkeys/options';\n\n public constructor(init?: Partial<EndpointsAuthenticationNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class AuthenticationNhCommonModuleConfig {\n addAuthTokensToRequests: boolean = true;\n additionalClaimPermissionTypes: string[] = [];\n additionalDivisionClaimPermissionTypes: string[] = [];\n endpoints: EndpointsAuthenticationNhCommonModuleConfig = new EndpointsAuthenticationNhCommonModuleConfig();\n loginPath: string = '/';\n\n public constructor(init?: Partial<AuthenticationNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class UserNotificationNhCommonModuleConfig {\n urlSuffix: string = '/UserNotification';\n pollingInterval: number = 5000; // in milliseconds\n\n public constructor(init?: Partial<UserNotificationNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class BackgroundOperationsNhCommonModuleConfig {\n urlSuffix: string = '/background-operations';\n administrationUrlSuffix: string = '/background-operations/administration';\n hubBaseUrl?: string;\n hubUrlSuffix: string = '/hub/background-operations';\n pollingInterval: number = 5000;\n liveUpdatesEnabled: boolean = true;\n listPageSize: number = 100;\n\n public constructor(init?: Partial<BackgroundOperationsNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\nexport class NhTranslationNhCommonModuleConfig {\n browserLoaderPrefix: string = './assets/i18n/';\n serverLoaderPath: string = 'assets/i18n/';\n public constructor(init?: Partial<NhTranslationNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhFormDropDownNhCommonModuleConfig {\n deferLazyLoadUntilOpened: boolean = false;\n\n public constructor(init?: Partial<NhFormDropDownNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhHttpNhCommonModuleConfig {\n deduplicateGetRequests: boolean = false;\n deduplicateGetRequestHeaderNames: string[] = [\n 'accept',\n 'accept-language',\n 'authorization',\n 'cookie',\n 'x-nh-activedivisionid'\n ];\n\n public constructor(init?: Partial<NhHttpNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\n\nexport class NhCommonModuleConfig {\n appDisplayName: string = '';\n baseUrl: string = '';\n apiBaseUrl: string = '';\n authApiBaseUrl: string = '';\n defaultLanguage: string = '';\n supportedLanguages: string[] = [];\n authType: 'cookie'|'header' = 'header';\n language: string = '';\n defaultCulture: string = '';\n culture: string = '';\n authenticationRealm: string = '';\n environment: string = '';\n cookieDomain: string = '';\n defaultItemsPerPage: number = 20;\n defaultDateFormat: string = 'dd-MM-yyyy';\n defaultDateTimeFormat: string = 'dd-MM-yyyy HH:mm:ss';\n authentication: AuthenticationNhCommonModuleConfig = new AuthenticationNhCommonModuleConfig();\n userNotification: UserNotificationNhCommonModuleConfig = new UserNotificationNhCommonModuleConfig();\n backgroundOperations: BackgroundOperationsNhCommonModuleConfig = new BackgroundOperationsNhCommonModuleConfig();\n translation: NhTranslationNhCommonModuleConfig = new NhTranslationNhCommonModuleConfig();\n formDropdown: NhFormDropDownNhCommonModuleConfig = new NhFormDropDownNhCommonModuleConfig();\n http: NhHttpNhCommonModuleConfig = new NhHttpNhCommonModuleConfig();\n\n public constructor(init?: Partial<NhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhCommonConfig {\n languageCode: string = '';\n culture: string = '';\n\n public constructor(init?: Partial<NhCommonConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhCommonConfigChanged {\n config: NhCommonConfig = new NhCommonConfig();\n public constructor(init?: Partial<NhCommonConfigChanged>) {\n Object.assign(this, init);\n }\n}\n","import {KeyValue} from \"@angular/common\";\n\nexport type SuccessResult<T> = TaskResult<T> & { isSuccess: true, data: T };\nexport type ErrorResult<T> = TaskResult<T> & { isSuccess: false, data: T | undefined };\nexport type TypedResult<T> = SuccessResult<T> | ErrorResult<T>;\n\nexport class TaskResultItem {\n name: string = '';\n errorMessages: string[] = [];\n\n public constructor(init?: Partial<TaskResultItem>) {\n Object.assign(this, init);\n }\n}\n\nexport class TaskResult<T> {\n isSuccess: boolean = true;\n items: TaskResultItem[] = [];\n data: T | undefined;\n\n public constructor(init?: Partial<TaskResult<T>>) {\n Object.assign(this, init);\n }\n\n withError(name: string, errorMessages: string | string[]): TaskResult<T> {\n this.addError(name, errorMessages);\n return this;\n }\n\n addError(name: string, errorMessages: string | string[]) {\n this.isSuccess = false;\n let item = this.items.find(x => x.name === name);\n\n if (!item) {\n item = new TaskResultItem({name: name});\n this.items.push(item);\n }\n\n if (!Array.isArray(errorMessages)) {\n errorMessages = [errorMessages];\n }\n\n if (errorMessages && errorMessages.length > 0) {\n for (const errorMessage of errorMessages) {\n item.errorMessages.push(errorMessage);\n }\n }\n }\n\n addErrors(errors: TaskResultItem[]) {\n this.isSuccess = false;\n\n for (const error of errors) {\n let item = this.items.find(x => x.name === error.name);\n\n if (!item) {\n item = new TaskResultItem({name: error.name});\n this.items.push(item);\n }\n\n for (const errorMessage of error.errorMessages) {\n if (!item.errorMessages.includes(errorMessage)) {\n item.errorMessages.push(errorMessage);\n }\n }\n }\n }\n\n copyTo<T2>(target: TaskResult<T2>) {\n if (target) {\n for (const item of this.items) {\n for (const err of item.errorMessages) {\n target.addError(item.name, err);\n }\n }\n }\n }\n\n getAllErrorMessages(): string[] {\n return this.items.flatMap(x => x.errorMessages);\n }\n\n asTypedResult(): TypedResult<T> {\n return <TypedResult<T>>this;\n }\n\n}\n\nexport enum ListSortDirection {\n Ascending = 'Ascending',\n Descending = 'Descending',\n}\n\nexport class PreConnectUrlItem {\n preConnect: boolean = true;\n dnsPrefetch: boolean = true;\n url!: string;\n withCrossOrigin: boolean = false;\n crossOrigin?: string;\n additionalAttributes: KeyValue<string, string>[] = [];\n\n public constructor(init?: Partial<PreConnectUrlItem>) {\n Object.assign(this, init);\n }\n}\n\nexport class PreLoadUrlItem {\n url!: string;\n withCrossOrigin: boolean = false;\n crossOrigin?: string;\n as!: string;\n type!: string;\n additionalAttributes: KeyValue<string, string>[] = [];\n\n public constructor(init?: Partial<PreLoadUrlItem>) {\n Object.assign(this, init);\n }\n}\n\nexport type NhRouterLink = {\n id: string;\n arguments?: any;\n language?: string | null | undefined; // Undefined will use the current language\n scrollToTop?: boolean;\n};\n","import {HttpHeaders, HttpParams} from \"@angular/common/http\";\n\nexport interface IHttpRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'json' | 'blob' | 'text' | 'arraybuffer';\n withCredentials?: boolean;\n}\n\nexport class HttpRequestOptions implements IHttpRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n\n public constructor(init?: Partial<HttpRequestOptions>) {\n Object.assign(this, init);\n }\n}\n\nexport class HttpRequestOptionsArrayBuffer implements IHttpRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'arraybuffer';\n withCredentials?: boolean;\n\n public constructor(init?: Partial<HttpRequestOptions>) {\n Object.assign(this, init);\n }\n}\n\nexport class HttpRequestOptionsText implements IHttpRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'text';\n withCredentials?: boolean;\n\n public constructor(init?: Partial<HttpRequestOptionsText>) {\n Object.assign(this, init);\n }\n}\n\nexport interface IHttpDownloadRequestOptions extends IHttpRequestOptions {\n responseType?: 'blob';\n}\n\nexport class HttpDownloadRequestOptions implements IHttpDownloadRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'blob';\n withCredentials?: boolean;\n\n public constructor(init?: Partial<HttpDownloadRequestOptions>) {\n Object.assign(this, init);\n }\n}\n\nexport interface ISimpleCollectionHttpRequestOptions extends IHttpRequestOptions {\n page: number;\n itemsPerPage: number;\n}\n\nexport class SimpleCollectionHttpRequestOptions extends HttpRequestOptions implements ISimpleCollectionHttpRequestOptions {\n page: number = 1;\n itemsPerPage: number = 30;\n\n public constructor(init?: Partial<SimpleCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport interface ISearchableCollectionHttpRequestOptions extends ISimpleCollectionHttpRequestOptions {\n search?: string;\n}\n\nexport class SearchableCollectionHttpRequestOptions extends SimpleCollectionHttpRequestOptions implements ISearchableCollectionHttpRequestOptions {\n search: string | undefined;\n\n public constructor(init?: Partial<SearchableCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport interface ICollectionHttpRequestOptions extends ISearchableCollectionHttpRequestOptions {\n orderBy: OrderByRequestOptions[];\n filter: FilterRequestOptions[];\n}\n\nexport class CollectionHttpRequestOptions extends SearchableCollectionHttpRequestOptions implements ICollectionHttpRequestOptions {\n orderBy: OrderByRequestOptions[] = [];\n filter: FilterRequestOptions[] = [];\n\n public constructor(init?: Partial<CollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n\n public or(condition: FilterRequestOptions): this {\n if (this.filter.length == 0) {\n this.filter = [condition];\n return this;\n }\n\n if (this.filter.length == 1) {\n this.filter[0].ors.push(condition);\n } else {\n this.filter[0]\n .andArray(this.filter.slice(1))\n .or(condition)\n ;\n }\n return this;\n }\n\n public and(condition: FilterRequestOptions): this {\n this.filter.push(condition);\n return this;\n }\n\n public equals(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.equals(key, value, tag));\n return this;\n }\n\n public notEquals(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.notEquals(key, value, tag));\n return this;\n }\n\n public isIn(key: string, value: any[], tag?: string): this {\n this.and(FilterRequestOptions.in(key, value, tag));\n return this;\n }\n\n public isNotIn(key: string, value: any[], tag?: string): this {\n this.and(FilterRequestOptions.notIn(key, value, tag));\n return this;\n }\n\n public lessThan(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.lessThan(key, value, tag));\n return this;\n }\n\n public lessThanOrEqual(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.lessThanOrEqual(key, value, tag));\n return this;\n }\n\n public greaterThan(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.greaterThan(key, value, tag));\n return this;\n }\n\n public greaterThanOrEqual(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.greaterThanOrEqual(key, value, tag));\n return this;\n }\n\n public like(key: string, value: string, tag?: string): this {\n this.and(FilterRequestOptions.like(key, value, tag));\n return this;\n }\n\n public order(key: string, direction: 'ASC' | 'DESC'): this {\n this.orderBy.push(new OrderByRequestOptions({key, direction}));\n return this;\n }\n\n public orderByFirst(propertyName: string, collectionItemProperty: string, direction: 'ASC' | 'DESC'): this {\n this.orderBy.push(new OrderByRequestOptions({\n key: `${propertyName}.{first:${direction}}${collectionItemProperty}`\n , direction\n }));\n return this;\n }\n\n public orderByLast(propertyName: string, collectionItemProperty: string, direction: 'ASC' | 'DESC'): this {\n this.orderBy.push(new OrderByRequestOptions({\n key: `${propertyName}.{last:${direction}}${collectionItemProperty}`\n , direction\n }));\n return this;\n }\n\n public orderAsc(key: string): this {\n return this.order(key, 'ASC');\n }\n\n public orderDesc(key: string): this {\n return this.order(key, 'DESC');\n }\n}\n\nexport interface ISimpleCollectionHttpResponse<T> {\n page?: number;\n itemsPerPage?: number;\n resultCount?: number;\n totalCount?: number;\n items?: T[];\n}\n\nexport class SimpleCollectionHttpResponse<T> implements ISimpleCollectionHttpResponse<T> {\n page = 1;\n itemsPerPage = 10;\n resultCount: number = 0;\n totalCount: number = 0;\n items: T[] = [];\n\n public constructor(init?: Partial<SimpleCollectionHttpResponse<T>>) {\n Object.assign(this, init);\n }\n}\n\nexport interface ICollectionHttpResponse<T> extends ISimpleCollectionHttpResponse<T> {\n orderBy?: OrderByRequestOptions[];\n filter?: FilterRequestOptions[];\n search?: string;\n}\n\nexport class CollectionHttpResponse<T> extends SimpleCollectionHttpResponse<T> implements ICollectionHttpResponse<T> {\n orderBy: OrderByRequestOptions[] = [];\n filter: FilterRequestOptions[] = [];\n search = '';\n\n public constructor(init?: Partial<CollectionHttpResponse<T>>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport class OrderByRequestOptions {\n key: string = '';\n direction: 'ASC' | 'DESC' = 'ASC';\n\n public constructor(init?: Partial<OrderByRequestOptions>) {\n Object.assign(this, init);\n }\n}\n\nexport class FilterRequestOptions {\n tag: string | undefined;\n key: string = '';\n value: any;\n operator: string = '==';\n ands: Array<FilterRequestOptions> = [];\n ors: Array<FilterRequestOptions> = [];\n\n public static mergeToAndFilters(filters: Array<FilterRequestOptions>): FilterRequestOptions | null {\n let mainFilter = null;\n for (const filter of filters) {\n if (!filter.value || filter.value == null || filter.value.length < 1) {\n continue;\n }\n\n if (mainFilter == null) {\n mainFilter = filter;\n } else {\n mainFilter.ands.push(filter);\n }\n }\n\n return mainFilter;\n }\n\n public static mergeToOrFilters(filters: Array<FilterRequestOptions>): FilterRequestOptions | null {\n let mainFilter = null;\n\n for (const filter of filters) {\n if (!filter.value || filter.value == null || filter.value.length < 1) {\n continue;\n }\n\n if (mainFilter == null) {\n mainFilter = filter;\n } else {\n mainFilter.ors.push(filter);\n }\n }\n\n return mainFilter;\n }\n\n public and(options: FilterRequestOptions) {\n this.ands.push(options);\n return this;\n }\n\n public andArray(options: FilterRequestOptions[]) {\n this.ands.push(...options);\n return this;\n }\n\n public or(options: FilterRequestOptions) {\n this.ors.push(options);\n return this;\n }\n\n public orArray(options: FilterRequestOptions[]) {\n this.ors.push(...options);\n return this;\n }\n\n public static like(key: string, value: string, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: 'LIKE',\n value: value,\n tag: tag\n });\n }\n\n public static in(key: string, value: any[], tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: 'IN',\n value: value,\n tag: tag\n });\n }\n\n public static notIn(key: string, value: any[], tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: 'NOT IN',\n value: value,\n tag: tag\n });\n }\n\n public static lessThan(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '<',\n value: value,\n tag: tag\n });\n }\n\n public static lessThanOrEqual(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '<=',\n value: value,\n tag: tag\n });\n }\n\n public static greaterThan(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '>',\n value: value,\n tag: tag\n });\n }\n\n public static greaterThanOrEqual(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '>=',\n value: value,\n tag: tag\n });\n }\n\n public static equals(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '==',\n value: value,\n tag: tag\n })\n }\n\n public static notEquals(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '!=',\n value: value,\n tag: tag\n })\n }\n\n\n public constructor(init?: Partial<FilterRequestOptions>) {\n Object.assign(this, init);\n }\n}\n","export interface INhUser {\n id: string | undefined;\n email: string | undefined;\n creationDateTime: any;\n emailConfirmed: boolean;\n lockoutEnd: any;\n lockoutStart: any;\n activeDivisionId: string | undefined;\n activeDivision: INhDivision | undefined;\n roles: Array<string>;\n}\n\nexport class NhUser implements INhUser {\n id: string | undefined;\n email: string | undefined;\n creationDateTime: any;\n emailConfirmed: boolean = false;\n lockoutEnd: any;\n lockoutStart: any;\n activeDivisionId: string | undefined;\n activeDivision: INhDivision | undefined;\n division: INhDivision | undefined;\n roles: Array<string> = [];\n\n public constructor(init?: Partial<NhUser>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhAuthorization {\n realm: string;\n provider: string;\n token: string;\n validTo: string | undefined;\n refreshToken: string | undefined;\n refreshTokenExpires: string | undefined;\n user?: INhUser;\n claims: Claim[];\n divisions: INhDivision[];\n activeDivision?: INhDivision;\n}\n\nexport class NhAuthorization implements INhAuthorization {\n realm: string = '';\n provider: string = '';\n token: string = '';\n validTo: string | undefined;\n refreshToken: string | undefined;\n refreshTokenExpires: string | undefined; // Not implemented yet\n user?: INhUser;\n claims: Claim[] = [];\n divisions: INhDivision[] = [];\n activeDivision?: INhDivision;\n\n public constructor(init?: Partial<NhAuthorization>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhAccountInformationResponse {\n user?: INhUser;\n claims: Claim[];\n divisions: INhDivision[];\n activeDivision?: INhDivision;\n}\n\nexport class NhAccountInformationResponse implements INhAccountInformationResponse {\n user?: INhUser;\n claims: Claim[] = [];\n divisions: INhDivision[] = [];\n activeDivision?: INhDivision;\n public constructor(init?: Partial<NhAccountInformationResponse>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhDivision {\n id: string;\n creationDateTime: any;\n lastModifiedDateTime: any;\n name: string;\n description: string;\n userSelectAllowed: boolean;\n timeZoneId: string;\n}\n\nexport class NhDivision implements INhDivision {\n id: string = '';\n creationDateTime: any;\n lastModifiedDateTime: any;\n name: string = '';\n description: string = '';\n userSelectAllowed: boolean = false;\n timeZoneId: string = '';\n\n public constructor(init?: Partial<NhDivision>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhDivisionRole {\n id?: string;\n name?: string;\n}\n\nexport class NhDivisionRole implements INhDivisionRole {\n id?: string;\n name?: string;\n\n public constructor(init?: Partial<NhDivisionRole>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhDivisionUser {\n id?: string;\n lockOutStartDateTime?: string;\n lockOutEndDateTime?: string;\n userId?: string;\n user?: INhUser;\n divisionId?: string;\n division?: NhDivision;\n roles: Array<NhDivisionRole>;\n roleIds: Array<string>;\n}\n\nexport class NhDivisionUser implements INhDivisionUser {\n id?: string;\n lockOutStartDateTime?: string;\n lockOutEndDateTime?: string;\n userId?: string;\n user?: INhUser;\n divisionId?: string\n division?: INhDivision;\n roles: Array<INhDivisionRole> = [];\n roleIds: Array<string> = [];\n\n public constructor(init?: Partial<NhDivisionUser>) {\n Object.assign(this, init);\n }\n}\n\n\nexport class AuthSessionExpirationInformation {\n isAuthenticated: boolean = false;\n expiresWithin15MinutesOrExpired: boolean = false;\n displayMinutesSecondsUntilExpiration: string = '00:00';\n\n public constructor(init?: Partial<AuthSessionExpirationInformation>) {\n Object.assign(this, init);\n }\n}\n\nexport class RefreshTokenLoginAccountMutateModel {\n token: string = '';\n refreshToken: string = '';\n\n public constructor(init?: Partial<RefreshTokenLoginAccountMutateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class AuthenticationSessionCreateResponse {\n sessionToken: string = '';\n expirationDateTime: string = '';\n\n public constructor(init?: Partial<AuthenticationSessionCreateResponse>) {\n Object.assign(this, init);\n }\n}\n\nexport class ClaimAuthenticateSessionAccountMutateModel {\n sessionToken: string = '';\n\n public constructor(init?: Partial<ClaimAuthenticateSessionAccountMutateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport interface IClaimAuthenticateSessionAccountViewModel {\n completed: boolean;\n success: boolean;\n errorMessages: string[];\n token?: INhAuthorization;\n}\n\nexport class ClaimAuthenticateSessionAccountViewModel implements IClaimAuthenticateSessionAccountViewModel {\n completed: boolean = false;\n success: boolean = false;\n errorMessages: string[] = [];\n token?: INhAuthorization;\n\n public constructor(init?: Partial<ClaimAuthenticateSessionAccountViewModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class CheckAuthenticateSessionModel {\n success: boolean = false;\n didTry: boolean = false;\n completed: boolean = false;\n errorMessages: string[] = [];\n\n public constructor(init?: Partial<CheckAuthenticateSessionModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class Claim {\n type: string | undefined;\n value: string | undefined;\n\n public constructor(init?: Partial<Claim>) {\n Object.assign(this, init);\n }\n}\n\nexport enum ClaimTypes {\n Name = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name',\n Email = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress',\n NameIdentifier = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier',\n Country = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country',\n Role = 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role',\n Permission = 'nh.platform.permission',\n DivisionRole = 'nh.platform.division.role',\n DivisionPermission = 'nh.platform.division.permission',\n ImpersonateOriginUserId = 'nh.platform.auth.impersonate.origin-user-id'\n}\n\nexport class AuthenticateModel {\n realm: string = '';\n username!: string;\n password: string | undefined;\n /** Remember-device token for header authentication; cookie clients send it as a cookie. */\n rememberDeviceToken?: string;\n\n public constructor(init?: Partial<AuthenticateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class ImpersonateAuthenticateModel {\n userId: string = '';\n\n public constructor(init?: Partial<ImpersonateAuthenticateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class RevertImpersonateAuthenticateModel {\n public constructor(init?: Partial<RevertImpersonateAuthenticateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport type AuthenticationFlow = 'password' | 'microsoft-oauth' | string;\n\n\n/**\n * Second-factor methods a user can present after the first factor succeeded.\n */\nexport const NhTwoFactorMethods = {\n authenticator: 'authenticator',\n recoveryCode: 'recovery-code',\n email: 'email',\n passkey: 'passkey'\n} as const;\n\nexport type NhTwoFactorMethod = typeof NhTwoFactorMethods[keyof typeof NhTwoFactorMethods] | string;\n\n/**\n * Safe failure codes returned by the two-factor endpoints. Each error item uses the code as\n * its name and `nh-two-factor.<suffix>` as its translation key.\n */\nexport enum NhTwoFactorFailureCodes {\n Required = 'two-factor-required',\n EnrollmentRequired = 'two-factor-enrollment-required',\n InvalidCode = 'two-factor-invalid-code',\n ChallengeExpired = 'two-factor-challenge-expired',\n LockedOut = 'two-factor-locked-out',\n MethodNotAllowed = 'two-factor-method-not-allowed',\n NotEnabled = 'two-factor-not-enabled',\n AlreadyEnabled = 'two-factor-already-enabled',\n SetupNotStarted = 'two-factor-setup-not-started',\n ReauthenticationRequired = 'two-factor-reauthentication-required',\n ReauthenticationFailed = 'two-factor-reauthentication-failed',\n RequiredByPolicy = 'two-factor-required-by-policy',\n NotAllowedWhileImpersonating = 'two-factor-not-allowed-while-impersonating',\n ConfigurationInvalid = 'two-factor-configuration-invalid',\n EmailCooldown = 'two-factor-email-cooldown',\n EmailUnavailable = 'two-factor-email-unavailable',\n UserNotFound = 'two-factor-user-not-found',\n PasskeyInvalid = 'two-factor-passkey-invalid',\n PasskeyNotFound = 'two-factor-passkey-not-found',\n /** The browser does not support passkeys or the user cancelled the passkey prompt. */\n PasskeyUnavailable = 'two-factor-passkey-unavailable'\n}\n\n/**\n * Status values of a pending authentication step.\n */\nexport const NhAuthenticationStepStatuses = {\n twoFactorRequired: 'two-factor-required',\n enrollmentRequired: 'enrollment-required'\n} as const;\n\n/**\n * A pending sign-in step. With status `two-factor-required` the user presents a second\n * factor; with `enrollment-required` the policy requires the user to enroll one first, and\n * `challengeToken` is the enrollment token.\n */\nexport class NhTwoFactorChallenge {\n status: string = NhAuthenticationStepStatuses.twoFactorRequired;\n challengeToken: string = '';\n expiresAt: string = '';\n methods: NhTwoFactorMethod[] = [];\n /** Whether completing the challenge can remember this device for later sign-ins. */\n rememberDeviceAvailable: boolean = false;\n\n public constructor(init?: Partial<NhTwoFactorChallenge>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Login response when two-factor authentication is enabled on the server. A complete\n * session has the token fields; a pending sign-in only has `twoFactor`.\n */\nexport interface NhLoginResponse {\n token?: string | null;\n validTo?: string | null;\n refreshToken?: string | null;\n refreshValidTo?: string | null;\n issuer?: string | null;\n twoFactor?: NhTwoFactorChallenge | null;\n /** Remember-device token for header authentication, returned when the user chose to remember the device. */\n rememberDeviceToken?: string | null;\n}\n\nexport type NhAuthenticationStepStatus = 'authenticated' | 'two-factor-required' | 'enrollment-required';\n\n/**\n * Outcome of an interactive sign-in step: the stored authorization, a second-factor\n * challenge or a required enrollment.\n */\nexport class NhAuthenticationStep<TAuthorization extends INhAuthorization = INhAuthorization> {\n status: NhAuthenticationStepStatus = 'authenticated';\n authorization?: TAuthorization;\n challenge?: NhTwoFactorChallenge;\n\n public constructor(init?: Partial<NhAuthenticationStep<TAuthorization>>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhTwoFactorVerifyModel {\n challengeToken: string = '';\n method: NhTwoFactorMethod = NhTwoFactorMethods.authenticator;\n code: string = '';\n /** Skip the second factor on this device for later sign-ins, when the server allows it. */\n rememberDevice?: boolean;\n\n public constructor(init?: Partial<NhTwoFactorVerifyModel>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Proof that the signed-in user is present before a sensitive change: the current password\n * or a valid second-factor code.\n */\nexport class NhTwoFactorReauthentication {\n password?: string;\n method?: NhTwoFactorMethod;\n code?: string;\n\n public constructor(init?: Partial<NhTwoFactorReauthentication>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhTwoFactorStatus {\n enabled: boolean = false;\n required: boolean = false;\n methods: NhTwoFactorMethod[] = [];\n availableMethods: NhTwoFactorMethod[] = [];\n recoveryCodesLeft: number = 0;\n authenticatorSetupPending: boolean = false;\n emailSetupPending: boolean = false;\n rememberDeviceAvailable: boolean = false;\n passkeyCount: number = 0;\n\n public constructor(init?: Partial<NhTwoFactorStatus>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Pending authenticator enrollment. `qrCodeDataUri` is a PNG data URI rendered by the server.\n */\nexport class NhAuthenticatorSetup {\n sharedKey: string = '';\n authenticatorUri: string = '';\n qrCodeDataUri?: string;\n\n public constructor(init?: Partial<NhAuthenticatorSetup>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Result of a two-factor change. Recovery codes are returned once. When the change ended\n * every session, the service has already stored the renewed session for this device.\n */\nexport class NhTwoFactorChange {\n recoveryCodes?: string[];\n sessionRenewed: boolean = false;\n\n public constructor(init?: Partial<NhTwoFactorChange>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Confirmation that the server e-mailed a code.\n */\nexport class NhTwoFactorEmailCodeSent {\n expiresAt: string = '';\n /** When another code can be requested. */\n resendAvailableAt: string = '';\n\n public constructor(init?: Partial<NhTwoFactorEmailCodeSent>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Result of an enrollment that the policy required during sign-in. The session is already\n * stored; the recovery codes are returned once.\n */\nexport class NhTwoFactorEnrollmentResult<TAuthorization extends INhAuthorization = INhAuthorization> {\n authorization?: TAuthorization;\n recoveryCodes?: string[];\n\n public constructor(init?: Partial<NhTwoFactorEnrollmentResult<TAuthorization>>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * WebAuthn options from the server for one passkey ceremony. `options` is the JSON form of\n * the creation or request options; `ceremonyToken` goes back with the credential.\n */\nexport class NhPasskeyOptions {\n options: any = {};\n ceremonyToken: string = '';\n expiresAt: string = '';\n\n public constructor(init?: Partial<NhPasskeyOptions>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * A registered passkey. The public key is never returned.\n */\nexport class NhPasskey {\n /** Credential ID, base64url encoded. */\n id: string = '';\n name: string = '';\n createdAt: string = '';\n /** Whether a passkey provider, such as a password manager, syncs the passkey. */\n isBackedUp: boolean = false;\n transports: string[] = [];\n\n public constructor(init?: Partial<NhPasskey>) {\n Object.assign(this, init);\n }\n}\n","import {CollectionHttpRequestOptions} from \"./http.models\";\n\nexport class NhUserNotificationCollectionHttpRequestOptions extends CollectionHttpRequestOptions {\n\n public constructor(init?: Partial<NhUserNotificationCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\nexport type NhUserNotificationSeverity =\n | 'Information'\n | 'Success'\n | 'Warning'\n | 'Error'\n | number;\n\nexport function nhUserNotificationSeverityName(severity: NhUserNotificationSeverity | null | undefined): string {\n if (typeof severity === 'string') {\n return severity;\n }\n\n return ({\n 0: 'Information',\n 10: 'Success',\n 20: 'Warning',\n 30: 'Error'\n } as Record<number, string>)[severity ?? 0] ?? 'Information';\n}\n\nexport class NhUserNotificationState {\n overview: NhUserNotificationOverview = new NhUserNotificationOverview();\n\n public constructor(init?: Partial<NhUserNotificationState>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhUserNotificationOverview {\n totalCount: number = 0;\n unreadCount: number = 0;\n lastNotificationDate: string = '';\n\n public constructor(init?: Partial<NhUserNotificationOverview>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhUserNotification {\n id: string = '';\n creationDateTime: string = '';\n lastModifiedDateTime: string = '';\n messages: NhUserNotificationMessage[] = [];\n lastTitle: string = '';\n lastMessage: string = '';\n isLastRead: boolean = false;\n category: string | null = null;\n severity: NhUserNotificationSeverity = 'Information';\n groupKey: string | null = null;\n data: NhUserNotificationData = new NhUserNotificationData();\n\n public constructor(init?: Partial<NhUserNotification>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhUserNotificationMessage {\n id: string = '';\n creationDateTime: string = '';\n lastModifiedDateTime: string = '';\n title: string = '';\n message: string = '';\n severity: NhUserNotificationSeverity = 'Information';\n userNotificationId: string = '';\n\n public constructor(init?: Partial<NhUserNotificationMessage>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhUserNotificationData {\n url: string = '';\n urlInNewTab: boolean = false;\n\n public constructor(init?: Partial<NhUserNotificationData>) {\n Object.assign(this, init);\n }\n}\n","import { CollectionHttpRequestOptions } from './http.models';\n\nexport type NhBackgroundOperationStatus =\n | 'PendingDispatch'\n | 'Queued'\n | 'Running'\n | 'WaitingForChildren'\n | 'WaitingForSignal'\n | 'CancelRequested'\n | 'RetryScheduled'\n | 'Succeeded'\n | 'Failed'\n | 'Cancelled'\n | 'TimedOut'\n | number;\n\nexport type NhBackgroundOperationAttemptStatus =\n | 'Queued'\n | 'Running'\n | 'Suspended'\n | 'Succeeded'\n | 'Failed'\n | 'Cancelled'\n | 'Abandoned'\n | number;\n\nexport type NhBackgroundOperationStepStatus =\n | 'Pending'\n | 'Running'\n | 'Succeeded'\n | 'Failed'\n | 'Skipped'\n | 'Cancelled'\n | 'Indeterminate'\n | number;\n\nexport type NhBackgroundOperationAggregationMode =\n | 'Manual'\n | 'WeightedChildren'\n | 'ItemCount'\n | 'Indeterminate'\n | 'ChildOperations'\n | number;\n\nexport type NhBackgroundOperationEventType =\n | 'StateChanged'\n | 'StepStarted'\n | 'StepProgressed'\n | 'StepCompleted'\n | 'BatchChanged'\n | 'RetryScheduled'\n | 'CancellationRequested'\n | 'Message'\n | 'CheckpointChanged'\n | 'ResultAvailable'\n | 'ChildrenCreated'\n | 'ChildrenCompleted'\n | 'SignalWaitStarted'\n | 'SignalReceived'\n | number;\n\nexport type NhBackgroundOperationMessageSeverity =\n | 'Information'\n | 'Success'\n | 'Warning'\n | 'Error'\n | number;\n\nexport interface NhBackgroundOperationAttempt {\n id: string;\n attemptNumber: number;\n status: NhBackgroundOperationAttemptStatus;\n startedAt?: string;\n heartbeatAt?: string;\n completedAt?: string;\n failureCode?: string;\n recoveryReason?: string;\n}\n\nexport interface NhBackgroundOperationStep {\n id: string;\n parentStepId?: string;\n stepKey: string;\n titleKey?: string;\n titleArgumentsJson?: string;\n messageKey?: string;\n messageArgumentsJson?: string;\n status: NhBackgroundOperationStepStatus;\n aggregationMode: NhBackgroundOperationAggregationMode;\n weight: number;\n current?: number;\n total?: number;\n percentage?: number;\n discoveredItems: number;\n processedItems: number;\n succeededItems: number;\n failedItems: number;\n skippedItems: number;\n retriedItems: number;\n activeItems: number;\n continueOnChildFailure: boolean;\n displayOrder: number;\n depth: number;\n startedAt?: string;\n completedAt?: string;\n children: NhBackgroundOperationStep[];\n}\n\nexport interface NhBackgroundOperationEvent {\n id: string;\n sequence: number;\n stepId?: string;\n stepKey?: string;\n eventType: NhBackgroundOperationEventType;\n severity: NhBackgroundOperationMessageSeverity;\n messageKey?: string;\n messageArgumentsJson?: string;\n snapshotVersion: number;\n creationDateTime: string;\n resultReferenceType?: string;\n resultReferenceId?: string;\n resultUrl?: string;\n isMilestone: boolean;\n /** Diagnostic event that only the administration endpoints return. */\n isOperatorOnly?: boolean;\n}\n\nexport interface NhBackgroundOperation {\n id: string;\n creationDateTime: string;\n lastModifiedDateTime: string;\n operationType: string;\n payloadSchemaVersion: number;\n ownerUserId: string;\n divisionId?: string;\n parentOperationId?: string;\n rootOperationId?: string;\n fanOutKey?: string;\n fanOutItemKey?: string;\n status: NhBackgroundOperationStatus;\n queue: string;\n priority: number;\n currentAttemptNumber: number;\n domainObjectType?: string;\n domainObjectId?: string;\n correlationId?: string;\n progressCurrent?: number;\n progressTotal?: number;\n progressPercentage?: number;\n progressPhaseKey?: string;\n progressMessageKey?: string;\n progressMessageArgumentsJson?: string;\n cancelRequestedAt?: string;\n startedAt?: string;\n heartbeatAt?: string;\n completedAt?: string;\n sensitiveDataRedactedAt?: string;\n resultReferenceType?: string;\n resultReferenceId?: string;\n resultUrl?: string;\n failureCode?: string;\n failureMessageKey?: string;\n version: number;\n latestEventSequence: number;\n attempts: NhBackgroundOperationAttempt[];\n steps: NhBackgroundOperationStep[];\n events: NhBackgroundOperationEvent[];\n children: NhBackgroundOperationChild[];\n}\n\n/**\n * Operation snapshot returned by the administration endpoints. It adds the owner,\n * the user who requested cancellation and scheduling diagnostics.\n */\nexport interface NhBackgroundOperationAdministration extends NhBackgroundOperation {\n ownerDisplayName?: string;\n cancelRequestedByUserId?: string;\n processorKey: string;\n dispatchGeneration: number;\n schedulerJobId?: string;\n nextDispatchAt?: string;\n diagnosticCorrelationId?: string;\n}\n\nexport interface NhBackgroundOperationChild {\n id: string;\n parentOperationId?: string;\n operationType: string;\n fanOutKey?: string;\n fanOutItemKey?: string;\n status: NhBackgroundOperationStatus;\n progressPercentage?: number;\n creationDateTime: string;\n lastModifiedDateTime: string;\n completedAt?: string;\n resultReferenceType?: string;\n resultReferenceId?: string;\n resultUrl?: string;\n failureCode?: string;\n children: NhBackgroundOperationChild[];\n}\n\nexport interface NhBackgroundOperationChanged {\n operationId: string;\n version: number;\n latestEventSequence: number;\n status: NhBackgroundOperationStatus;\n divisionId?: string;\n}\n\nexport class NhBackgroundOperationCollectionHttpRequestOptions extends CollectionHttpRequestOptions {\n public constructor(init?: Partial<NhBackgroundOperationCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport class NhBackgroundOperationAdministrationCollectionHttpRequestOptions extends CollectionHttpRequestOptions {\n public constructor(init?: Partial<NhBackgroundOperationAdministrationCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport function nhBackgroundOperationStatusName(status: NhBackgroundOperationStatus): string {\n if (typeof status === 'string') {\n return status;\n }\n\n return ({\n 0: 'PendingDispatch',\n 10: 'Queued',\n 20: 'Running',\n 25: 'WaitingForChildren',\n 27: 'WaitingForSignal',\n 30: 'CancelRequested',\n 40: 'RetryScheduled',\n 100: 'Succeeded',\n 110: 'Failed',\n 120: 'Cancelled',\n 130: 'TimedOut'\n } as Record<number, string>)[status] ?? 'Unknown';\n}\n\nexport function nhBackgroundOperationStepStatusName(status: NhBackgroundOperationStepStatus): string {\n if (typeof status === 'string') {\n return status;\n }\n\n return ({\n 0: 'Pending',\n 10: 'Running',\n 100: 'Succeeded',\n 110: 'Failed',\n 120: 'Skipped',\n 130: 'Cancelled',\n 140: 'Indeterminate'\n } as Record<number, string>)[status] ?? 'Unknown';\n}\n\nexport function nhBackgroundOperationTranslationSegment(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/[_\\s]+/g, '-')\n .toLowerCase();\n}\n","export const languageToCultureMap = {\n 'nl': 'nl-NL',\n 'en': 'en-US',\n 'fr': 'fr-FR',\n 'de': 'de-DE',\n};\n\nexport const nameof = <T>(name: keyof T) => name;\n\nexport const IsDefined = <T>(value: T): value is NonNullable<T> => {\n return value !== undefined && value !== null;\n}\n\nexport function enumKeysToArray(e: any) {\n return Object.keys(e).filter(k => typeof e[k as any] === 'number' || typeof e[k as any] === 'string');\n}\n\nexport function enumValuesToArray(e: any) {\n return enumKeysToArray(e).map(k => e[k as any]);\n}\n\nexport function enumIntValuesToArray(e: any) {\n return enumKeysToArray(e).map(k => e[k as any]).filter(k => typeof k === 'number');\n}\n\nexport function enumStringValuesToArray(e: any) {\n return enumKeysToArray(e).map(k => e[k as any]).filter(k => typeof k === 'string');\n}\n\nexport function getEmptyGuid(): string {\n return '00000000-0000-0000-0000-000000000000';\n}\n\nexport function getRandomIdentifier(): string {\n let d = new Date().getTime();//Timestamp\n let d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now()*1000)) || 0;//Time in microseconds since page-load or 0 if unsupported\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16;//random number between 0 and 16\n if(d > 0){//Use timestamp until depleted\n r = (d + r)%16 | 0;\n d = Math.floor(d/16);\n } else {//Use microseconds since page-load if supported\n r = (d2 + r)%16 | 0;\n d2 = Math.floor(d2/16);\n }\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n}\n\nexport function groupBy<T>(items: any[], keyGetter: any) {\n return items.reduce(\n (result, item) => ({\n ...result,\n [keyGetter(item)]: [\n ...(result[keyGetter(item)] || []),\n item,\n ],\n }),\n {},\n );\n}\n\nexport function uppercaseFirst(val?: string) {\n if(val) {\n return val && String(val[0]).toUpperCase() + String(val).slice(1);\n } else{\n return val;\n }\n}\n","export class NhStringUtil {\n public static upperFirst(inString: string|undefined|null): string|undefined|null {\n if(!inString || inString.length < 1) {\n return inString;\n }\n\n return `${inString[0].toUpperCase()}${inString.slice(1)}`;\n }\n\n public static lowerFirst(inString: string|undefined|null): string|undefined|null {\n if(!inString || inString.length < 1) {\n return inString;\n }\n\n return `${inString[0].toLowerCase()}${inString.slice(1)}`;\n }\n}\n","export class NhHttpUtil {\n public static filenameFromContentDisposition(contentDisposition: string): string {\n let filename = \"\";\n if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const matches = filenameRegex.exec(contentDisposition);\n if (matches != null && matches[1]) {\n filename = matches[1].replace(/['\"]/g, '');\n }\n }\n\n return filename;\n }\n\n public static objectToFormData(obj: any, formData: FormData = new FormData(), namespace?: string): FormData {\n if (obj === null || obj === undefined) {\n return formData;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item, index) => {\n this.objectToFormData(item, formData, namespace ? `${namespace}[${index}]` : `${index}`);\n });\n } else if (typeof obj === 'object') {\n Object.keys(obj).forEach(key => {\n if (obj.hasOwnProperty(key) && obj[key] !== undefined) {\n this.objectToFormData(obj[key], formData, namespace ? `${namespace}.${key}` : key);\n }\n });\n } else {\n formData.append(namespace || '', obj);\n }\n\n return formData;\n }\n}\n","export class NhEncodingUtil {\n\n public static convertBlobToBase64(blob: Blob): Promise<string|ArrayBuffer|null> {\n return new Promise<string|ArrayBuffer|null>((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = reject;\n reader.onload = () => {\n resolve(reader.result);\n };\n\n reader.readAsDataURL(blob);\n });\n }\n}\n","\nexport class NhAngularUtil {\n static idTrackBy(index: number, idObject: any): any {\n return idObject.id;\n }\n}\n\n","import {TaskResult} from '../models/misc.models';\nimport {HttpErrorResponse} from \"@angular/common/http\";\nimport {CollectionHttpRequestOptions, FilterRequestOptions} from \"../models/http.models\";\n\n\nexport class NhApiUtil {\n public static Constants = class {\n public static HttpHeaderKeys = class {\n //public static TenantId: string = 'X-TenantId';\n };\n };\n\n public static ParseCollectionRequestOptions(value?: string | null): CollectionHttpRequestOptions {\n const options = <CollectionHttpRequestOptions>JSON.parse(value ?? '');\n options.filter = options.filter.map(x => NhApiUtil.processFilter(x));\n return new CollectionHttpRequestOptions(options);\n }\n\n private static processFilter(filter: FilterRequestOptions) {\n const f = new FilterRequestOptions(filter);\n f.ands = f.ands.map(x => NhApiUtil.processFilter(x));\n f.ors = f.ors.map(x => NhApiUtil.processFilter(x));\n return f;\n }\n\n public static taskResultFromResponse(response: any): TaskResult<any> {\n const taskResult = new TaskResult<any>();\n\n if (response !== undefined) {\n const checkResponse = response;\n const isHttpResponseError = checkResponse instanceof HttpErrorResponse;\n\n if (isHttpResponseError) {\n const responseContentType = response.headers.get('Content-Type');\n\n if (responseContentType && responseContentType.includes('json')) {\n if (response.error_description !== undefined) {\n taskResult.addError('', response.error_description);\n }\n\n if (response.ModelState !== undefined) {\n for (const key in response.ModelState) {\n\n const errors = response.ModelState[key];\n taskResult.addError(key, errors);\n }\n }\n\n if (response.Message !== undefined) {\n taskResult.addError('', response.Message);\n }\n\n if (response.error && response.error.errors) {\n if (response.error.errors instanceof Array) {\n taskResult.addError('', response.error.errors);\n } else if (response.error.errors instanceof Object) {\n for (const key in response.error.errors) {\n\n const errors = response.error.errors[key];\n taskResult.addError(key, errors);\n }\n } else {\n throw new Error('Unknown error type');\n }\n } else if (response.error) {\n if (Array.isArray(response.error)) {\n taskResult.addError('', response.error);\n } else {\n Object.keys(response.error).forEach(function (key) {\n if (Array.isArray(response.error[key])) {\n taskResult.addError(key, response.error[key]);\n } else if (response.error[key] === Object(response.error[key])) {\n taskResult.addError(key, response.error[key]);\n } else {\n taskResult.addError(key, response.error[key]);\n }\n });\n }\n\n }\n } else {\n taskResult.addError('', response.error);\n }\n }\n }\n\n if (taskResult.isSuccess) {\n taskResult.addError('', 'An unknown error occurred');\n }\n\n return taskResult;\n }\n}\n","import {AbstractControl, UntypedFormArray, UntypedFormGroup} from '@angular/forms';\nimport {TranslateService} from '@ngx-translate/core';\nimport {enumValuesToArray} from \"./nh-common-util\";\n\nexport interface NhEnumDropDownItem<TValue extends string | number> {\n id: TValue | '';\n name: string;\n}\n\nexport class NhFormHelper {\n public static clearErrors(form: any): void {\n if (form) {\n Object.keys(form.controls).forEach((key: string) => {\n const control = form.controls[key];\n NhFormHelper.clearError(control);\n });\n }\n }\n\n private static clearError(obj: any) {\n\n if (obj instanceof UntypedFormGroup) {\n NhFormHelper.clearFormGroupErrors(obj);\n return;\n }\n\n if (obj instanceof UntypedFormArray) {\n NhFormHelper.clearFormArrayErrors(obj);\n return;\n }\n\n if (obj instanceof AbstractControl) {\n NhFormHelper.clearControlErrors(obj);\n return;\n }\n }\n\n private static clearFormGroupErrors(formGroup: UntypedFormGroup) {\n if (formGroup) {\n Object.keys(formGroup.controls).forEach((key: string) => {\n const control = formGroup.get(key);\n NhFormHelper.clearError(control);\n });\n }\n }\n\n private static clearFormArrayErrors(formArray: UntypedFormArray) {\n if (formArray) {\n for (const control of formArray.controls) {\n NhFormHelper.clearError(control);\n }\n }\n }\n\n private static clearControlErrors(control: AbstractControl) {\n if (control) {\n control.setErrors(null);\n }\n }\n\n public static getEnumDropDownByEnum(\n e: any,\n translateService: TranslateService,\n translationPrefix: string,\n emptyFirst?: boolean,\n skipValues?: any[]\n ): any[];\n\n public static getEnumDropDownByEnum<TValue extends string | number>(\n e: any,\n translateService: TranslateService,\n translationPrefix: string,\n emptyFirst: boolean,\n skipValues: TValue[],\n translationKeySelector: (value: TValue) => string\n ): NhEnumDropDownItem<TValue>[];\n\n public static getEnumDropDownByEnum(\n e: any,\n translateService: TranslateService,\n translationPrefix: string,\n emptyFirst: boolean = true,\n skipValues: any[] = [],\n translationKeySelector?: (value: any) => string\n ): any[] {\n const values = enumValuesToArray(e);\n const result = [];\n\n if (emptyFirst) {\n result.push({id: '', name: translateService.instant('general.make-a-choice')});\n }\n\n for (const value of values) {\n if (skipValues && skipValues.length > 0) {\n if (skipValues.findIndex(x => <string>x === <string>value) !== -1) {\n continue;\n }\n }\n const translationKey = translationKeySelector\n ? translationKeySelector(value)\n : translationPrefix + value;\n result.push({id: value, name: translateService.instant(translationKey)});\n }\n\n return result;\n }\n}\n","export class NhMutex {\n private lockPromise: Promise<void> = Promise.resolve();\n\n async lock(): Promise<() => void> {\n let release: () => void;\n const newLock = new Promise<void>((resolve) => (release = resolve));\n\n const currentLock = this.lockPromise;\n this.lockPromise = this.lockPromise.then(() => newLock);\n\n await currentLock;\n return release!;\n }\n}\n\nexport class NhAsyncLock {\n private isLocked = false;\n\n async runExclusive<T>(fn: () => Promise<T>): Promise<T> {\n while (this.isLocked) {\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n this.isLocked = true;\n try {\n return await fn();\n } finally {\n this.isLocked = false;\n }\n }\n}\n","import {\n HttpInterceptor,\n HttpRequest,\n HttpEvent,\n HttpHandler,\n HttpParams,\n HttpParameterCodec\n} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable, tap} from 'rxjs';\n\n@Injectable()\nexport class NhEncodeHttpParamsInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const params = new HttpParams({encoder: new CustomEncoder(), fromString: req.params.toString()});\n\n return next.handle(req.clone({params}));\n }\n}\n\nclass CustomEncoder implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\n","/**\n * A callback function that accepts an error or a result.\n * @public\n */\nexport interface Callback<T> {\n (error: Error, result?: never): void\n (error: null, result: T): void\n}\n\n/**\n * A callback function that only accepts an error.\n * @public\n */\nexport interface ErrorCallback {\n (error: Error | null): void\n}\n\n/**\n * The inverse of NonNullable<T>.\n * @public\n */\nexport type Nullable<T> = T | null | undefined\n\n/** Wrapped `Object.prototype.toString`, so that you don't need to remember to use `.call()`. */\nexport const objectToString = (obj: unknown): string =>\n Object.prototype.toString.call(obj)\n\n/**\n * Converts an array to string, safely handling symbols, null prototype objects, and recursive arrays.\n */\nconst safeArrayToString = (\n arr: unknown[],\n seenArrays: WeakSet<object>,\n): string => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString#description\n if (typeof arr.join !== 'function') return objectToString(arr)\n seenArrays.add(arr)\n const mapped = arr.map((val) =>\n val === null || val === undefined || seenArrays.has(val)\n ? ''\n : safeToStringImpl(val, seenArrays),\n )\n return mapped.join()\n}\n\nconst safeToStringImpl = (val: unknown, seenArrays = new WeakSet()): string => {\n // Using .toString() fails for null/undefined and implicit conversion (val + \"\") fails for symbols\n // and objects with null prototype\n if (typeof val !== 'object' || val === null) {\n return String(val)\n } else if (typeof val.toString === 'function') {\n return Array.isArray(val)\n ? // Arrays have a weird custom toString that we need to replicate\n safeArrayToString(val, seenArrays)\n : // eslint-disable-next-line @typescript-eslint/no-base-to-string\n String(val)\n } else {\n // This case should just be objects with null prototype, so we can just use Object#toString\n return objectToString(val)\n }\n}\n\n/** Safely converts any value to string, using the value's own `toString` when available. */\nexport const safeToString = (val: unknown): string => safeToStringImpl(val)\n\n/** Utility object for promise/callback interop. */\nexport interface PromiseCallback<T> {\n promise: Promise<T>\n callback: Callback<T>\n resolve: (value: T) => Promise<T>\n reject: (error: Error) => Promise<T>\n}\n\n/** Converts a callback into a utility object where either a callback or a promise can be used. */\nexport function createPromiseCallback<T>(cb?: Callback<T>): PromiseCallback<T> {\n let callback: Callback<T>\n let resolve: (result: T) => void\n let reject: (error: Error) => void\n\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n\n if (typeof cb === 'function') {\n callback = (err, result): void => {\n try {\n if (err) cb(err)\n // If `err` is null, we know `result` must be `T`\n // The assertion isn't *strictly* correct, as `T` could be nullish, but, ehh, good enough...\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n else cb(null, result!)\n } catch (e) {\n reject(e instanceof Error ? e : new Error())\n }\n }\n } else {\n callback = (err, result): void => {\n try {\n // If `err` is null, we know `result` must be `T`\n // The assertion isn't *strictly* correct, as `T` could be nullish, but, ehh, good enough...\n if (err) reject(err)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n else resolve(result!)\n } catch (e) {\n reject(e instanceof Error ? e : new Error())\n }\n }\n }\n\n return {\n promise,\n callback,\n resolve: (value: T): Promise<T> => {\n callback(null, value)\n return promise\n },\n reject: (error: Error): Promise<T> => {\n callback(error)\n return promise\n },\n }\n}\n\nexport function inOperator<K extends string, T extends object>(\n k: K,\n o: T,\n): o is T & Record<K, unknown> {\n return k in o\n}\n","/* ************************************************************************************\nExtracted from check-types.js\nhttps://gitlab.com/philbooth/check-types.js\n\nMIT License\n\nCopyright (c) 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Phil Booth\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n************************************************************************************ */\n\nimport { Callback, objectToString, safeToString } from './utils'\n\n/* Validation functions copied from check-types package - https://www.npmjs.com/package/check-types */\n\n/** Determines whether the argument is a non-empty string. */\nexport function isNonEmptyString(data: unknown): boolean {\n return isString(data) && data !== ''\n}\n\n/** Determines whether the argument is a *valid* Date. */\nexport function isDate(data: unknown): boolean {\n return data instanceof Date && isInteger(data.getTime())\n}\n\n/** Determines whether the argument is the empty string. */\nexport function isEmptyString(data: unknown): boolean {\n return data === '' || (data instanceof String && data.toString() === '')\n}\n\n/** Determines whether the argument is a string. */\nexport function isString(data: unknown): boolean {\n return typeof data === 'string' || data instanceof String\n}\n\n/** Determines whether the string representation of the argument is \"[object Object]\". */\nexport function isObject(data: unknown): boolean {\n return objectToString(data) === '[object Object]'\n}\n\n/** Determines whether the argument is an integer. */\nexport function isInteger(data: unknown): boolean {\n return typeof data === 'number' && data % 1 === 0\n}\n\n/* -- End validation functions -- */\n\n/**\n * When the first argument is false, an error is created with the given message. If a callback is\n * provided, the error is passed to the callback, otherwise the error is thrown.\n */\nexport function validate(\n bool: boolean,\n cbOrMessage?: Callback<never> | string,\n message?: string,\n): void {\n if (bool) return // Validation passes\n const cb = typeof cbOrMessage === 'function' ? cbOrMessage : undefined\n let options = typeof cbOrMessage === 'function' ? message : cbOrMessage\n // The default message prior to v5 was '[object Object]' due to a bug, and the message is kept\n // for backwards compatibility.\n if (!isObject(options)) options = '[object Object]'\n\n const err = new ParameterError(safeToString(options))\n if (cb) cb(err)\n else throw err\n}\n\n/**\n * Represents a validation error.\n * @public\n */\nexport class ParameterError extends Error {}\n","// date-time parsing constants (RFC6265 S5.1.1)\n\nimport type { Nullable } from './utils'\n\n// eslint-disable-next-line no-control-regex\nconst DATE_DELIM = /[\\x09\\x20-\\x2F\\x3B-\\x40\\x5B-\\x60\\x7B-\\x7E]/\n\nconst MONTH_TO_NUM = {\n jan: 0,\n feb: 1,\n mar: 2,\n apr: 3,\n may: 4,\n jun: 5,\n jul: 6,\n aug: 7,\n sep: 8,\n oct: 9,\n nov: 10,\n dec: 11,\n}\n\n/*\n * Parses a Natural number (i.e., non-negative integer) with either the\n * <min>*<max>DIGIT ( non-digit *OCTET )\n * or\n * <min>*<max>DIGIT\n * grammar (RFC6265 S5.1.1).\n *\n * The \"trailingOK\" boolean controls if the grammar accepts a\n * \"( non-digit *OCTET )\" trailer.\n */\nfunction parseDigits(\n token: string,\n minDigits: number,\n maxDigits: number,\n trailingOK: boolean,\n): number | undefined {\n let count = 0\n while (count < token.length) {\n const c = token.charCodeAt(count)\n // \"non-digit = %x00-2F / %x3A-FF\"\n if (c <= 0x2f || c >= 0x3a) {\n break\n }\n count++\n }\n\n // constrain to a minimum and maximum number of digits.\n if (count < minDigits || count > maxDigits) {\n return\n }\n\n if (!trailingOK && count != token.length) {\n return\n }\n\n return parseInt(token.slice(0, count), 10)\n}\n\nfunction parseTime(token: string): number[] | undefined {\n const parts = token.split(':')\n const result = [0, 0, 0]\n\n /* RF6256 S5.1.1:\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n */\n\n if (parts.length !== 3) {\n return\n }\n\n for (let i = 0; i < 3; i++) {\n // \"time-field\" must be strictly \"1*2DIGIT\", HOWEVER, \"hms-time\" can be\n // followed by \"( non-digit *OCTET )\" therefore the last time-field can\n // have a trailer\n const trailingOK = i == 2\n const numPart = parts[i]\n if (numPart === undefined) {\n return\n }\n const num = parseDigits(numPart, 1, 2, trailingOK)\n if (num === undefined) {\n return\n }\n result[i] = num\n }\n\n return result\n}\n\nfunction parseMonth(token: string): number | undefined {\n token = String(token).slice(0, 3).toLowerCase()\n switch (token) {\n case 'jan':\n return MONTH_TO_NUM.jan\n case 'feb':\n return MONTH_TO_NUM.feb\n case 'mar':\n return MONTH_TO_NUM.mar\n case 'apr':\n return MONTH_TO_NUM.apr\n case 'may':\n return MONTH_TO_NUM.may\n case 'jun':\n return MONTH_TO_NUM.jun\n case 'jul':\n return MONTH_TO_NUM.jul\n case 'aug':\n return MONTH_TO_NUM.aug\n case 'sep':\n return MONTH_TO_NUM.sep\n case 'oct':\n return MONTH_TO_NUM.oct\n case 'nov':\n return MONTH_TO_NUM.nov\n case 'dec':\n return MONTH_TO_NUM.dec\n default:\n return\n }\n}\n\n/**\n * Parse a cookie date string into a {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date | Date}. Parses according to\n * {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.1.1 | RFC6265 - Section 5.1.1}, not\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse | Date.parse()}.\n *\n * @remarks\n *\n * ### RFC6265 - 5.1.1. Dates\n *\n * The user agent MUST use an algorithm equivalent to the following\n * algorithm to parse a cookie-date. Note that the various boolean\n * flags defined as a part of the algorithm (i.e., found-time, found-\n * day-of-month, found-month, found-year) are initially \"not set\".\n *\n * 1. Using the grammar below, divide the cookie-date into date-tokens.\n *\n * ```\n * cookie-date = *delimiter date-token-list *delimiter\n * date-token-list = date-token *( 1*delimiter date-token )\n * date-token = 1*non-delimiter\n *\n * delimiter = %x09 / %x20-2F / %x3B-40 / %x5B-60 / %x7B-7E\n * non-delimiter = %x00-08 / %x0A-1F / DIGIT / \":\" / ALPHA / %x7F-FF\n * non-digit = %x00-2F / %x3A-FF\n *\n * day-of-month = 1*2DIGIT ( non-digit *OCTET )\n * month = ( \"jan\" / \"feb\" / \"mar\" / \"apr\" /\n * \"may\" / \"jun\" / \"jul\" / \"aug\" /\n * \"sep\" / \"oct\" / \"nov\" / \"dec\" ) *OCTET\n * year = 2*4DIGIT ( non-digit *OCTET )\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n * ```\n *\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date:\n *\n * 1. If the found-time flag is not set and the token matches the\n * time production, set the found-time flag and set the hour-\n * value, minute-value, and second-value to the numbers denoted\n * by the digits in the date-token, respectively. Skip the\n * remaining sub-steps and continue to the next date-token.\n *\n * 2. If the found-day-of-month flag is not set and the date-token\n * matches the day-of-month production, set the found-day-of-\n * month flag and set the day-of-month-value to the number\n * denoted by the date-token. Skip the remaining sub-steps and\n * continue to the next date-token.\n *\n * 3. If the found-month flag is not set and the date-token matches\n * the month production, set the found-month flag and set the\n * month-value to the month denoted by the date-token. Skip the\n * remaining sub-steps and continue to the next date-token.\n *\n * 4. If the found-year flag is not set and the date-token matches\n * the year production, set the found-year flag and set the\n * year-value to the number denoted by the date-token. Skip the\n * remaining sub-steps and continue to the next date-token.\n *\n * 3. If the year-value is greater than or equal to 70 and less than or\n * equal to 99, increment the year-value by 1900.\n *\n * 4. If the year-value is greater than or equal to 0 and less than or\n * equal to 69, increment the year-value by 2000.\n *\n * 1. NOTE: Some existing user agents interpret two-digit years differently.\n *\n * 5. Abort these steps and fail to parse the cookie-date if:\n *\n * - at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n *\n * - the day-of-month-value is less than 1 or greater than 31,\n *\n * - the year-value is less than 1601,\n *\n * - the hour-value is greater than 23,\n *\n * - the minute-value is greater than 59, or\n *\n * - the second-value is greater than 59.\n *\n * (Note that leap seconds cannot be represented in this syntax.)\n *\n * 6. Let the parsed-cookie-date be the date whose day-of-month, month,\n * year, hour, minute, and second (in UTC) are the day-of-month-\n * value, the month-value, the year-value, the hour-value, the\n * minute-value, and the second-value, respectively. If no such\n * date exists, abort these steps and fail to parse the cookie-date.\n *\n * 7. Return the parsed-cookie-date as the result of this algorithm.\n *\n * @example\n * ```\n * parseDate('Wed, 09 Jun 2021 10:18:14 GMT')\n * ```\n *\n * @param cookieDate - the cookie date string\n * @public\n */\nexport function parseDate(cookieDate: Nullable<string>): Date | undefined {\n if (!cookieDate) {\n return\n }\n\n /* RFC6265 S5.1.1:\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date\n */\n const tokens = cookieDate.split(DATE_DELIM)\n\n let hour: number | undefined\n let minute: number | undefined\n let second: number | undefined\n let dayOfMonth: number | undefined\n let month: number | undefined\n let year: number | undefined\n\n for (let i = 0; i < tokens.length; i++) {\n const token = (tokens[i] ?? '').trim()\n if (!token.length) {\n continue\n }\n\n /* 2.1. If the found-time flag is not set and the token matches the time\n * production, set the found-time flag and set the hour- value,\n * minute-value, and second-value to the numbers denoted by the digits in\n * the date-token, respectively. Skip the remaining sub-steps and continue\n * to the next date-token.\n */\n if (second === undefined) {\n const result = parseTime(token)\n if (result) {\n hour = result[0]\n minute = result[1]\n second = result[2]\n continue\n }\n }\n\n /* 2.2. If the found-day-of-month flag is not set and the date-token matches\n * the day-of-month production, set the found-day-of- month flag and set\n * the day-of-month-value to the number denoted by the date-token. Skip\n * the remaining sub-steps and continue to the next date-token.\n */\n if (dayOfMonth === undefined) {\n // \"day-of-month = 1*2DIGIT ( non-digit *OCTET )\"\n const result = parseDigits(token, 1, 2, true)\n if (result !== undefined) {\n dayOfMonth = result\n continue\n }\n }\n\n /* 2.3. If the found-month flag is not set and the date-token matches the\n * month production, set the found-month flag and set the month-value to\n * the month denoted by the date-token. Skip the remaining sub-steps and\n * continue to the next date-token.\n */\n if (month === undefined) {\n const result = parseMonth(token)\n if (result !== undefined) {\n month = result\n continue\n }\n }\n\n /* 2.4. If the found-year flag is not set and the date-token matches the\n * year production, set the found-year flag and set the year-value to the\n * number denoted by the date-token. Skip the remaining sub-steps and\n * continue to the next date-token.\n */\n if (year === undefined) {\n // \"year = 2*4DIGIT ( non-digit *OCTET )\"\n const result = parseDigits(token, 2, 4, true)\n if (result !== undefined) {\n year = result\n /* From S5.1.1:\n * 3. If the year-value is greater than or equal to 70 and less\n * than or equal to 99, increment the year-value by 1900.\n * 4. If the year-value is greater than or equal to 0 and less\n * than or equal to 69, increment the year-value by 2000.\n */\n if (year >= 70 && year <= 99) {\n year += 1900\n } else if (year >= 0 && year <= 69) {\n year += 2000\n }\n }\n }\n }\n\n /* RFC 6265 S5.1.1\n * \"5. Abort these steps and fail to parse the cookie-date if:\n * * at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n * * the day-of-month-value is less than 1 or greater than 31,\n * * the year-value is less than 1601,\n * * the hour-value is greater than 23,\n * * the minute-value is greater than 59, or\n * * the second-value is greater than 59.\n * (Note that leap seconds cannot be represented in this syntax.)\"\n *\n * So, in order as above:\n */\n if (\n dayOfMonth === undefined ||\n month === undefined ||\n year === undefined ||\n hour === undefined ||\n minute === undefined ||\n second === undefined ||\n dayOfMonth < 1 ||\n dayOfMonth > 31 ||\n year < 1601 ||\n hour > 23 ||\n minute > 59 ||\n second > 59\n ) {\n return\n }\n\n return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second))\n}\n","/**\n * Format a {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date | Date} into\n * the {@link https://www.rfc-editor.org/rfc/rfc2616#section-3.3.1 | preferred Internet standard format}\n * defined in {@link https://www.rfc-editor.org/rfc/rfc822#section-5 | RFC822} and\n * updated in {@link https://www.rfc-editor.org/rfc/rfc1123#page-55 | RFC1123}.\n *\n * @example\n * ```\n * formatDate(new Date(0)) === 'Thu, 01 Jan 1970 00:00:00 GMT`\n * ```\n *\n * @param date - the date value to format\n * @public\n */\nexport function formatDate(date: Date): string {\n return date.toUTCString()\n}\n","/*!\n * Copyright (c) 2015-2020, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport * as validators from './validators'\nimport { inOperator } from './utils'\nimport {parseDate} from \"./parseDate\";\nimport {formatDate} from \"./formatDate\";\n\n// From RFC6265 S4.1.1\n// note that it excludes \\x3B \";\"\nconst COOKIE_OCTETS = /^[\\x21\\x23-\\x2B\\x2D-\\x3A\\x3C-\\x5B\\x5D-\\x7E]+$/\n\n// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or \";\"'\n// Note ';' is \\x3B\nconst PATH_VALUE = /[\\x20-\\x3A\\x3C-\\x7E]+/\n\n// eslint-disable-next-line no-control-regex\nconst CONTROL_CHARS = /[\\x00-\\x1F]/\n\n// From Chromium // '\\r', '\\n' and '\\0' should be treated as a terminator in\n// the \"relaxed\" mode, see:\n// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60\nconst TERMINATORS = ['\\n', '\\r', '\\0']\n\nfunction trimTerminator(str: string): string {\n if (validators.isEmptyString(str)) return str\n for (let t = 0; t < TERMINATORS.length; t++) {\n const terminator = TERMINATORS[t]\n const terminatorIdx = terminator ? str.indexOf(terminator) : -1\n if (terminatorIdx !== -1) {\n str = str.slice(0, terminatorIdx)\n }\n }\n\n return str\n}\n\nfunction parseCookiePair(\n cookiePair: string,\n looseMode: boolean,\n): Cookie | undefined {\n cookiePair = trimTerminator(cookiePair)\n\n let firstEq = cookiePair.indexOf('=')\n if (looseMode) {\n if (firstEq === 0) {\n // '=' is immediately at start\n cookiePair = cookiePair.substring(1)\n firstEq = cookiePair.indexOf('=') // might still need to split on '='\n }\n } else {\n // non-loose mode\n if (firstEq <= 0) {\n // no '=' or is at start\n return undefined // needs to have non-empty \"cookie-name\"\n }\n }\n\n let cookieName, cookieValue\n if (firstEq <= 0) {\n cookieName = ''\n cookieValue = cookiePair.trim()\n } else {\n cookieName = cookiePair.slice(0, firstEq).trim()\n cookieValue = cookiePair.slice(firstEq + 1).trim()\n }\n\n if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {\n return undefined\n }\n\n const c = new Cookie()\n c.key = cookieName\n c.value = cookieValue\n return c\n}\n\n/**\n * Optional configuration to be used when parsing cookies.\n * @public\n */\nexport interface ParseCookieOptions {\n /**\n * If `true` then keyless cookies like `=abc` and `=` which are not RFC-compliant will be parsed.\n */\n loose?: boolean | undefined\n}\n\nfunction parse(str: string, options?: ParseCookieOptions): Cookie | undefined {\n if (validators.isEmptyString(str) || !validators.isString(str)) {\n return undefined\n }\n\n str = str.trim()\n\n // We use a regex to parse the \"name-value-pair\" part of S5.2\n const firstSemi = str.indexOf(';') // S5.2 step 1\n const cookiePair = firstSemi === -1 ? str : str.slice(0, firstSemi)\n const c = parseCookiePair(cookiePair, options?.loose ?? false)\n if (!c) {\n return undefined\n }\n\n if (firstSemi === -1) {\n return c\n }\n\n // S5.2.3 \"unparsed-attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\" plus later on in the same section\n // \"discard the first \";\" and trim\".\n const unparsed = str.slice(firstSemi + 1).trim()\n\n // \"If the unparsed-attributes string is empty, skip the rest of these\n // steps.\"\n if (unparsed.length === 0) {\n return c\n }\n\n /*\n * S5.2 says that when looping over the items \"[p]rocess the attribute-name\n * and attribute-value according to the requirements in the following\n * subsections\" for every item. Plus, for many of the individual attributes\n * in S5.3 it says to use the \"attribute-value of the last attribute in the\n * cookie-attribute-list\". Therefore, in this implementation, we overwrite\n * the previous value.\n */\n const cookie_avs = unparsed.split(';')\n while (cookie_avs.length) {\n const av = (cookie_avs.shift() ?? '').trim()\n if (av.length === 0) {\n // happens if \";;\" appears\n continue\n }\n const av_sep = av.indexOf('=')\n let av_key: string, av_value: string | null\n\n if (av_sep === -1) {\n av_key = av\n av_value = null\n } else {\n av_key = av.slice(0, av_sep)\n av_value = av.slice(av_sep + 1)\n }\n\n av_key = av_key.trim().toLowerCase()\n\n if (av_value) {\n av_value = av_value.trim()\n }\n\n switch (av_key) {\n case 'expires': // S5.2.1\n if (av_value) {\n const exp = parseDate(av_value)\n // \"If the attribute-value failed to parse as a cookie date, ignore the\n // cookie-av.\"\n if (exp) {\n // over and underflow not realistically a concern: V8's getTime() seems to\n // store something larger than a 32-bit time_t (even with 32-bit node)\n c.expires = exp\n }\n }\n break\n\n case 'max-age': // S5.2.2\n if (av_value) {\n // \"If the first character of the attribute-value is not a DIGIT or a \"-\"\n // character ...[or]... If the remainder of attribute-value contains a\n // non-DIGIT character, ignore the cookie-av.\"\n if (/^-?[0-9]+$/.test(av_value)) {\n const delta = parseInt(av_value, 10)\n // \"If delta-seconds is less than or equal to zero (0), let expiry-time\n // be the earliest representable date and time.\"\n c.setMaxAge(delta)\n }\n }\n break\n\n case 'domain': // S5.2.3\n // \"If the attribute-value is empty, the behavior is undefined. However,\n // the user agent SHOULD ignore the cookie-av entirely.\"\n if (av_value) {\n // S5.2.3 \"Let cookie-domain be the attribute-value without the leading %x2E\n // (\".\") character.\"\n const domain = av_value.trim().replace(/^\\./, '')\n if (domain) {\n // \"Convert the cookie-domain to lower case.\"\n c.domain = domain.toLowerCase()\n }\n }\n break\n\n case 'path': // S5.2.4\n /*\n * \"If the attribute-value is empty or if the first character of the\n * attribute-value is not %x2F (\"/\"):\n * Let cookie-path be the default-path.\n * Otherwise:\n * Let cookie-path be the attribute-value.\"\n *\n * We'll represent the default-path as null since it depends on the\n * context of the parsing.\n */\n c.path = av_value && av_value[0] === '/' ? av_value : null\n break\n\n case 'secure': // S5.2.5\n /*\n * \"If the attribute-name case-insensitively matches the string \"Secure\",\n * the user agent MUST append an attribute to the cookie-attribute-list\n * with an attribute-name of Secure and an empty attribute-value.\"\n */\n c.secure = true\n break\n\n case 'httponly': // S5.2.6 -- effectively the same as 'secure'\n c.httpOnly = true\n break\n\n case 'samesite': // RFC6265bis-02 S5.3.7\n switch (av_value ? av_value.toLowerCase() : '') {\n case 'strict':\n c.sameSite = 'strict'\n break\n case 'lax':\n c.sameSite = 'lax'\n break\n case 'none':\n c.sameSite = 'none'\n break\n default:\n c.sameSite = undefined\n break\n }\n break\n\n default:\n c.extensions = c.extensions || []\n c.extensions.push(av)\n break\n }\n }\n\n return c\n}\n\nfunction fromJSON(str: unknown): Cookie | undefined {\n if (!str || validators.isEmptyString(str)) {\n return undefined\n }\n\n let obj: unknown\n if (typeof str === 'string') {\n try {\n obj = JSON.parse(str)\n } catch {\n return undefined\n }\n } else {\n // assume it's an Object\n obj = str\n }\n\n const c = new Cookie()\n Cookie.serializableProperties.forEach((prop) => {\n if (obj && typeof obj === 'object' && inOperator(prop, obj)) {\n const val = obj[prop]\n if (val === undefined) {\n return\n }\n\n if (inOperator(prop, cookieDefaults) && val === cookieDefaults[prop]) {\n return\n }\n\n switch (prop) {\n case 'key':\n case 'value':\n case 'sameSite':\n if (typeof val === 'string') {\n c[prop] = val\n }\n break\n case 'expires':\n case 'creation':\n case 'lastAccessed':\n if (\n typeof val === 'number' ||\n typeof val === 'string' ||\n val instanceof Date\n ) {\n c[prop] = obj[prop] == 'Infinity' ? 'Infinity' : new Date(val)\n } else if (val === null) {\n c[prop] = null\n }\n break\n case 'maxAge':\n if (\n typeof val === 'number' ||\n val === 'Infinity' ||\n val === '-Infinity'\n ) {\n c[prop] = val\n }\n break\n case 'domain':\n case 'path':\n if (typeof val === 'string' || val === null) {\n c[prop] = val\n }\n break\n case 'secure':\n case 'httpOnly':\n if (typeof val === 'boolean') {\n c[prop] = val\n }\n break\n case 'extensions':\n if (\n Array.isArray(val) &&\n val.every((item) => typeof item === 'string')\n ) {\n c[prop] = val\n }\n break\n case 'hostOnly':\n case 'pathIsDefault':\n if (typeof val === 'boolean' || val === null) {\n c[prop] = val\n }\n break\n }\n }\n })\n\n return c\n}\n\n/**\n * Configurable values that can be set when creating a {@link Cookie}.\n * @public\n */\nexport interface CreateCookieOptions {\n /** {@inheritDoc Cookie.key} */\n key?: string\n /** {@inheritDoc Cookie.value} */\n value?: string\n /** {@inheritDoc Cookie.expires} */\n expires?: Date | 'Infinity' | null\n /** {@inheritDoc Cookie.maxAge} */\n maxAge?: number | 'Infinity' | '-Infinity' | null\n /** {@inheritDoc Cookie.domain} */\n domain?: string | null\n /** {@inheritDoc Cookie.path} */\n path?: string | null\n /** {@inheritDoc Cookie.secure} */\n secure?: boolean\n /** {@inheritDoc Cookie.httpOnly} */\n httpOnly?: boolean\n /** {@inheritDoc Cookie.extensions} */\n extensions?: string[] | null\n /** {@inheritDoc Cookie.creation} */\n creation?: Date | 'Infinity' | null\n /** {@inheritDoc Cookie.hostOnly} */\n hostOnly?: boolean | null\n /** {@inheritDoc Cookie.pathIsDefault} */\n pathIsDefault?: boolean | null\n /** {@inheritDoc Cookie.lastAccessed} */\n lastAccessed?: Date | 'Infinity' | null\n /** {@inheritDoc Cookie.sameSite} */\n sameSite?: string | undefined\n}\n\nconst cookieDefaults = {\n // the order in which the RFC has them:\n key: '',\n value: '',\n expires: 'Infinity',\n maxAge: null,\n domain: null,\n path: null,\n secure: false,\n httpOnly: false,\n extensions: null,\n // set by the CookieJar:\n hostOnly: null,\n pathIsDefault: null,\n creation: null,\n lastAccessed: null,\n //@ts-ignore\n sameSite: undefined,\n} as const satisfies Required<CreateCookieOptions>\n\n/**\n * An HTTP cookie (web cookie, browser cookie) is a small piece of data that a server sends to a user's web browser.\n * It is defined in {@link https://www.rfc-editor.org/rfc/rfc6265.html | RFC6265}.\n * @public\n */\nexport class Cookie {\n /**\n * The name or key of the cookie\n */\n key: string\n /**\n * The value of the cookie\n */\n value: string\n /**\n * The 'Expires' attribute of the cookie\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.1 | RFC6265 Section 5.2.1}).\n */\n expires: Date | 'Infinity' | null\n /**\n * The 'Max-Age' attribute of the cookie\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.2 | RFC6265 Section 5.2.2}).\n */\n maxAge: number | 'Infinity' | '-Infinity' | null\n /**\n * The 'Domain' attribute of the cookie represents the domain the cookie belongs to\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.3 | RFC6265 Section 5.2.3}).\n */\n domain: string | null\n /**\n * The 'Path' attribute of the cookie represents the path of the cookie\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.4 | RFC6265 Section 5.2.4}).\n */\n path: string | null\n /**\n * The 'Secure' flag of the cookie indicates if the scope of the cookie is\n * limited to secure channels (e.g.; HTTPS) or not\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.5 | RFC6265 Section 5.2.5}).\n */\n secure: boolean\n /**\n * The 'HttpOnly' flag of the cookie indicates if the cookie is inaccessible to\n * client scripts or not\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.6 | RFC6265 Section 5.2.6}).\n */\n httpOnly: boolean\n /**\n * Contains attributes which are not part of the defined spec but match the `extension-av` syntax\n * defined in Section 4.1.1 of RFC6265\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-4.1.1 | RFC6265 Section 4.1.1}).\n */\n extensions: string[] | null\n /**\n * Set to the date and time when a Cookie is initially stored or a matching cookie is\n * received that replaces an existing cookie\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.3 | RFC6265 Section 5.3}).\n *\n * Also used to maintain ordering among cookies. Among cookies that have equal-length path fields,\n * cookies with earlier creation-times are listed before cookies with later creation-times\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.4 | RFC6265 Section 5.4}).\n */\n creation: Date | 'Infinity' | null\n /**\n * A global counter used to break ordering ties between two cookies that have equal-length path fields\n * and the same creation-time.\n */\n creationIndex: number\n /**\n * A boolean flag indicating if a cookie is a host-only cookie (i.e.; when the request's host exactly\n * matches the domain of the cookie) or not\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.3 | RFC6265 Section 5.3}).\n */\n hostOnly: boolean | null\n /**\n * A boolean flag indicating if a cookie had no 'Path' attribute and the default path\n * was used\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.4 | RFC6265 Section 5.2.4}).\n */\n pathIsDefault: boolean | null\n /**\n * Set to the date and time when a cookie was initially stored ({@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.3 | RFC6265 Section 5.3}) and updated whenever\n * the cookie is retrieved from the {@link CookieJar} ({@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.4 | RFC6265 Section 5.4}).\n */\n lastAccessed: Date | 'Infinity' | null\n /**\n * The 'SameSite' attribute of a cookie as defined in RFC6265bis\n * (See {@link https://www.ietf.org/archive/id/draft-ietf-httpbis-rfc6265bis-13.html#section-5.2 | RFC6265bis (v13) Section 5.2 }).\n */\n sameSite: string | undefined\n\n /**\n * Create a new Cookie instance.\n * @public\n * @param options - The attributes to set on the cookie\n */\n constructor(options: CreateCookieOptions = {}) {\n this.key = options.key ?? cookieDefaults.key\n this.value = options.value ?? cookieDefaults.value\n this.expires = options.expires ?? cookieDefaults.expires\n this.maxAge = options.maxAge ?? cookieDefaults.maxAge\n this.domain = options.domain ?? cookieDefaults.domain\n this.path = options.path ?? cookieDefaults.path\n this.secure = options.secure ?? cookieDefaults.secure\n this.httpOnly = options.httpOnly ?? cookieDefaults.httpOnly\n this.extensions = options.extensions ?? cookieDefaults.extensions\n this.creation = options.creation ?? cookieDefaults.creation\n this.hostOnly = options.hostOnly ?? cookieDefaults.hostOnly\n this.pathIsDefault = options.pathIsDefault ?? cookieDefaults.pathIsDefault\n this.lastAccessed = options.lastAccessed ?? cookieDefaults.lastAccessed\n this.sameSite = options.sameSite ?? cookieDefaults.sameSite\n\n this.creation = options.creation ?? new Date()\n\n // used to break creation ties in cookieCompare():\n Object.defineProperty(this, 'creationIndex', {\n configurable: false,\n enumerable: false, // important for assert.deepEqual checks\n writable: true,\n value: ++Cookie.cookiesCreated,\n })\n // Duplicate operation, but it makes TypeScript happy...\n this.creationIndex = Cookie.cookiesCreated\n }\n\n [Symbol.for('nodejs.util.inspect.custom')](): string {\n const now = Date.now()\n const hostOnly = this.hostOnly != null ? this.hostOnly.toString() : '?'\n const createAge =\n this.creation && this.creation !== 'Infinity'\n ? `${String(now - this.creation.getTime())}ms`\n : '?'\n const accessAge =\n this.lastAccessed && this.lastAccessed !== 'Infinity'\n ? `${String(now - this.lastAccessed.getTime())}ms`\n : '?'\n return `Cookie=\"${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}\"`\n }\n\n /**\n * Sets the 'Expires' attribute on a cookie.\n *\n * @remarks\n * When given a `string` value it will be parsed with {@link parseDate}. If the value can't be parsed as a cookie date\n * then the 'Expires' attribute will be set to `\"Infinity\"`.\n *\n * @param exp - the new value for the 'Expires' attribute of the cookie.\n */\n setExpires(exp: string | Date): void {\n if (exp instanceof Date) {\n this.expires = exp\n } else {\n this.expires = parseDate(exp) || 'Infinity'\n }\n }\n\n /**\n * Sets the 'Max-Age' attribute (in seconds) on a cookie.\n *\n * @remarks\n * Coerces `-Infinity` to `\"-Infinity\"` and `Infinity` to `\"Infinity\"` so it can be serialized to JSON.\n *\n * @param age - the new value for the 'Max-Age' attribute (in seconds).\n */\n setMaxAge(age: number): void {\n if (age === Infinity) {\n this.maxAge = 'Infinity'\n } else if (age === -Infinity) {\n this.maxAge = '-Infinity'\n } else {\n this.maxAge = age\n }\n }\n\n /**\n * Encodes to a `Cookie` header value (specifically, the {@link Cookie.key} and {@link Cookie.value} properties joined with \"=\").\n * @public\n */\n cookieString(): string {\n const val = this.value || ''\n if (this.key) {\n return `${this.key}=${val}`\n }\n return val\n }\n\n /**\n * Encodes to a `Set-Cookie header` value.\n * @public\n */\n toString(): string {\n let str = this.cookieString()\n\n if (this.expires != 'Infinity') {\n if (this.expires instanceof Date) {\n str += `; Expires=${formatDate(this.expires)}`\n }\n }\n\n if (this.maxAge != null && this.maxAge != Infinity) {\n str += `; Max-Age=${String(this.maxAge)}`\n }\n\n if (this.domain && !this.hostOnly) {\n str += `; Domain=${this.domain}`\n }\n if (this.path) {\n str += `; Path=${this.path}`\n }\n\n if (this.secure) {\n str += '; Secure'\n }\n if (this.httpOnly) {\n str += '; HttpOnly'\n }\n if (this.sameSite && this.sameSite !== 'none') {\n if (\n this.sameSite.toLowerCase() ===\n Cookie.sameSiteCanonical.lax.toLowerCase()\n ) {\n str += `; SameSite=${Cookie.sameSiteCanonical.lax}`\n } else if (\n this.sameSite.toLowerCase() ===\n Cookie.sameSiteCanonical.strict.toLowerCase()\n ) {\n str += `; SameSite=${Cookie.sameSiteCanonical.strict}`\n } else {\n str += `; SameSite=${this.sameSite}`\n }\n }\n if (this.extensions) {\n this.extensions.forEach((ext) => {\n str += `; ${ext}`\n })\n }\n\n return str\n }\n\n /**\n * Computes the TTL relative to now (milliseconds).\n *\n * @remarks\n * - `Infinity` is returned for cookies without an explicit expiry\n *\n * - `0` is returned if the cookie is expired.\n *\n * - Otherwise a time-to-live in milliseconds is returned.\n *\n * @param now - passing an explicit value is mostly used for testing purposes since this defaults to the `Date.now()`\n * @public\n */\n TTL(now: number = Date.now()): number {\n // TTL() partially replaces the \"expiry-time\" parts of S5.3 step 3 (setCookie()\n // elsewhere)\n // S5.3 says to give the \"latest representable date\" for which we use Infinity\n // For \"expired\" we use 0\n // -----\n // RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires\n // attribute, the Max-Age attribute has precedence and controls the\n // expiration date of the cookie.\n // (Concurs with S5.3 step 3)\n if (this.maxAge != null && typeof this.maxAge === 'number') {\n return this.maxAge <= 0 ? 0 : this.maxAge * 1000\n }\n\n const expires = this.expires\n if (expires === 'Infinity') {\n return Infinity\n }\n\n return (expires?.getTime() ?? now) - (now || Date.now())\n }\n\n /**\n * Computes the absolute unix-epoch milliseconds that this cookie expires.\n *\n * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n *\n * If Expires ({@link Cookie.expires}) is set, that's returned.\n *\n * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n */\n expiryTime(now?: Date): number | undefined {\n // expiryTime() replaces the \"expiry-time\" parts of S5.3 step 3 (setCookie() elsewhere)\n if (this.maxAge != null) {\n const relativeTo = now || this.lastAccessed || new Date()\n const maxAge = typeof this.maxAge === 'number' ? this.maxAge : -Infinity\n const age = maxAge <= 0 ? -Infinity : maxAge * 1000\n if (relativeTo === 'Infinity') {\n return Infinity\n }\n return relativeTo.getTime() + age\n }\n\n if (this.expires == 'Infinity') {\n return Infinity\n }\n\n return this.expires ? this.expires.getTime() : undefined\n }\n\n /**\n * Similar to {@link Cookie.expiryTime}, computes the absolute unix-epoch milliseconds that this cookie expires and returns it as a Date.\n *\n * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n *\n * If Expires ({@link Cookie.expires}) is set, that's returned.\n *\n * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n */\n expiryDate(now?: Date): Date | undefined {\n const millisec = this.expiryTime(now)\n if (millisec == Infinity) {\n // The 31-bit value of 2147483647000 was chosen to be the MAX_TIME representable\n // in tough-cookie though MDN states that the actual maximum value for a Date is 8.64e15.\n // I'm guessing this is due to the Y2038 problem that would affect systems that store\n // unix time as 32-bit integers.\n // See:\n // - https://github.com/salesforce/tough-cookie/commit/0616f70bf725e00c63d442544ad230c4f8b23357\n // - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#the_epoch_timestamps_and_invalid_date\n // - https://en.wikipedia.org/wiki/Year_2038_problem\n return new Date(2147483647000)\n } else if (millisec == -Infinity) {\n return new Date(0)\n } else {\n return millisec == undefined ? undefined : new Date(millisec)\n }\n }\n\n /**\n * Indicates if the cookie has been persisted to a store or not.\n * @public\n */\n isPersistent(): boolean {\n // This replaces the \"persistent-flag\" parts of S5.3 step 3\n return this.maxAge != null || this.expires != 'Infinity'\n }\n\n\n /**\n * Parses a string into a Cookie object.\n *\n * @remarks\n * Note: when parsing a `Cookie` header it must be split by ';' before each Cookie string can be parsed.\n *\n * @example\n * ```\n * // parse a `Set-Cookie` header\n * const setCookieHeader = 'a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT'\n * const cookie = Cookie.parse(setCookieHeader)\n * cookie.key === 'a'\n * cookie.value === 'bcd'\n * cookie.expires === new Date(Date.parse('Tue, 18 Oct 2011 07:05:03 GMT'))\n * ```\n *\n * @example\n * ```\n * // parse a `Cookie` header\n * const cookieHeader = 'name=value; name2=value2; name3=value3'\n * const cookies = cookieHeader.split(';').map(Cookie.parse)\n * cookies[0].name === 'name'\n * cookies[0].value === 'value'\n * cookies[1].name === 'name2'\n * cookies[1].value === 'value2'\n * cookies[2].name === 'name3'\n * cookies[2].value === 'value3'\n * ```\n *\n * @param str - The `Set-Cookie` header or a Cookie string to parse.\n * @param options - Configures `strict` or `loose` mode for cookie parsing\n */\n static parse(str: string, options?: ParseCookieOptions): Cookie | undefined {\n return parse(str, options)\n }\n\n /**\n * Does the reverse of {@link Cookie.toJSON}.\n *\n * @remarks\n * Any Date properties (such as .expires, .creation, and .lastAccessed) are parsed via Date.parse, not tough-cookie's parseDate, since ISO timestamps are being handled at this layer.\n *\n * @example\n * ```\n * const json = JSON.stringify({\n * key: 'alpha',\n * value: 'beta',\n * domain: 'example.com',\n * path: '/foo',\n * expires: '2038-01-19T03:14:07.000Z',\n * })\n * const cookie = Cookie.fromJSON(json)\n * cookie.key === 'alpha'\n * cookie.value === 'beta'\n * cookie.domain === 'example.com'\n * cookie.path === '/foo'\n * cookie.expires === new Date(Date.parse('2038-01-19T03:14:07.000Z'))\n * ```\n *\n * @param str - An unparsed JSON string or a value that has already been parsed as JSON\n */\n static fromJSON(str: unknown): Cookie | undefined {\n return fromJSON(str)\n }\n\n private static cookiesCreated = 0\n\n /**\n * @internal\n */\n static sameSiteLevel = {\n strict: 3,\n lax: 2,\n none: 1,\n } as const\n\n /**\n * @internal\n */\n static sameSiteCanonical = {\n strict: 'Strict',\n lax: 'Lax',\n } as const\n\n /**\n * Cookie properties that will be serialized when using {@link Cookie.fromJSON} and {@link Cookie.toJSON}.\n * @public\n */\n static serializableProperties = [\n 'key',\n 'value',\n 'expires',\n 'maxAge',\n 'domain',\n 'path',\n 'secure',\n 'httpOnly',\n 'extensions',\n 'hostOnly',\n 'pathIsDefault',\n 'creation',\n 'lastAccessed',\n 'sameSite',\n ] as const\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {Inject, Injectable, Optional, PLATFORM_ID, REQUEST_CONTEXT} from '@angular/core';\nimport {isPlatformServer} from \"@angular/common\";\nimport {CookieOptions, CookieService, SameSite} from \"ngx-cookie-service\";\n\nimport {Cookie} from \"../util/though-cookie-custom/cookie\";\n\n@Injectable()\nexport class NhCookieService {\n public static readonly HTTP_COOKIE_PREFIX: string = '';\n public static readonly COOKIE_SPLIT_REGEX = /,(?=\\s*\\S+=)/;\n public static readonly NOP_COOKIE_CUSTOMER: string = '.Nop.Customer';\n public static readonly NOP_COOKIE_AUTHENTICATION: string = '.Nop.Authentication';\n public static readonly Nh_COOKIE_AUTHENTICATION: string = '.Nh.Authentication';\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(REQUEST_CONTEXT) private requestContext: any,\n private cookieService: CookieService,\n ) {\n }\n\n getAll(): string[] {\n let cookies: string[] = [];\n\n if(isPlatformServer(this.platformId)) {\n try {\n cookies = (<any>this?.requestContext?.request?.headers)['cookie']?.split(';').map((x: string) => x?.trim())\n } catch {\n cookies = this?.requestContext?.request?.headers.getSetCookie();\n }\n } else {\n cookies = this.document.cookie?.split(';').map((x: string) => x?.trim());\n }\n\n return cookies ?? [];\n }\n\n get(key: string): string|undefined {\n return this.getAll().find(x => x.startsWith(`${key}=`))?.split('=')[1] ?? undefined;\n }\n\n set(name: string, value: string, options?: CookieOptions) {\n this.cookieService.set(name, value, options);\n }\n\n delete(name: string, path?: CookieOptions['path'], domain?: CookieOptions['domain'], secure?: CookieOptions['secure'], sameSite?: SameSite) {\n this.cookieService.delete(name, path, domain, secure, sameSite);\n }\n\n\n\n public requestRawCookiesHeaderToCookies(rawCookiesHeader: string): Cookie[] {\n return rawCookiesHeader\n ?.split(';')\n ?.map(x => Cookie.parse(x?.trim()))\n .filter(x => x !== undefined)\n .map(x => <Cookie>x) ?? [];\n }\n\n public responseRawCookiesHeaderToCookies(rawCookiesHeader: string): Cookie[] {\n return rawCookiesHeader\n ?.split(NhCookieService.COOKIE_SPLIT_REGEX)\n ?.map(x => Cookie.parse(x?.trim()))\n .filter(x => x !== undefined)\n .map(x => <Cookie>x) ?? [];\n }\n\n public getRequestServerCookies() {\n let cookies: Cookie[] = [];\n\n if(isPlatformServer(this.platformId) && this?.requestContext?.request) {\n try {\n cookies = this.requestRawCookiesHeaderToCookies((<any>this?.requestContext?.request?.headers)['cookie']);\n } catch {\n }\n }\n\n return cookies ?? [];\n }\n\n public setServerCookies(cookies: Cookie[]) {\n if(!this?.requestContext?.response) {\n console.warn(`Skipped setting server cookies because response is not available.`);\n return;\n }\n\n for(const cookie of cookies) {\n cookie.key = `${NhCookieService.HTTP_COOKIE_PREFIX}${cookie.key}`;\n\n try {\n const responseAny = this.requestContext?.response as any;\n responseAny.appendHeader('Set-Cookie', cookie.toString());\n }catch (ex) {\n console.error('Failed to do Set-Cookie', ex);\n }\n }\n }\n}\n","import {inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\nimport {Base64} from 'js-base64';\n\n/**\n * Runs WebAuthn ceremonies in the browser. The server returns the options in their JSON form\n * and expects the credential in its JSON form; this client converts both, with a fallback for\n * browsers without `PublicKeyCredential.parseCreationOptionsFromJSON` and `toJSON()`.\n */\n@Injectable({providedIn: 'root'})\nexport class NhPasskeyClient {\n private readonly platformId: Object = inject(PLATFORM_ID);\n\n /**\n * Whether the browser supports passkeys. Always false during server-side rendering.\n */\n isSupported(): boolean {\n return isPlatformBrowser(this.platformId)\n && typeof window !== 'undefined'\n && typeof window.PublicKeyCredential !== 'undefined'\n && !!navigator.credentials;\n }\n\n /**\n * Creates a passkey for WebAuthn creation options and returns the credential JSON.\n * Rejects when the user cancels the prompt or the browser refuses the request.\n */\n async create(options: any): Promise<object> {\n this.ensureSupported();\n\n const parse = (PublicKeyCredential as any).parseCreationOptionsFromJSON;\n const publicKey: PublicKeyCredentialCreationOptions = typeof parse === 'function'\n ? parse.call(PublicKeyCredential, options)\n : this.creationOptionsFromJSON(options);\n\n const credential = await navigator.credentials.create({publicKey: publicKey});\n return this.credentialToJSON(this.requireCredential(credential));\n }\n\n /**\n * Signs WebAuthn request options with a passkey and returns the credential JSON.\n * Rejects when the user cancels the prompt or the browser refuses the request.\n */\n async get(options: any): Promise<object> {\n this.ensureSupported();\n\n const parse = (PublicKeyCredential as any).parseRequestOptionsFromJSON;\n const publicKey: PublicKeyCredentialRequestOptions = typeof parse === 'function'\n ? parse.call(PublicKeyCredential, options)\n : this.requestOptionsFromJSON(options);\n\n const credential = await navigator.credentials.get({publicKey: publicKey});\n return this.credentialToJSON(this.requireCredential(credential));\n }\n\n private ensureSupported(): void {\n if (!this.isSupported()) {\n throw new Error('Passkeys are not supported in this browser.');\n }\n }\n\n private requireCredential(credential: Credential | null): PublicKeyCredential {\n if (!credential || credential.type !== 'public-key') {\n throw new Error('No passkey was selected.');\n }\n\n return credential as PublicKeyCredential;\n }\n\n private creationOptionsFromJSON(json: any): PublicKeyCredentialCreationOptions {\n return {\n ...json,\n challenge: NhPasskeyClient.fromBase64Url(json.challenge),\n user: {...json.user, id: NhPasskeyClient.fromBase64Url(json.user.id)},\n excludeCredentials: (json.excludeCredentials ?? []).map((descriptor: any) => ({\n ...descriptor,\n id: NhPasskeyClient.fromBase64Url(descriptor.id)\n }))\n };\n }\n\n private requestOptionsFromJSON(json: any): PublicKeyCredentialRequestOptions {\n return {\n ...json,\n challenge: NhPasskeyClient.fromBase64Url(json.challenge),\n allowCredentials: (json.allowCredentials ?? []).map((descriptor: any) => ({\n ...descriptor,\n id: NhPasskeyClient.fromBase64Url(descriptor.id)\n }))\n };\n }\n\n private credentialToJSON(credential: PublicKeyCredential): object {\n const toJSON = (credential as any).toJSON;\n if (typeof toJSON === 'function') {\n return toJSON.call(credential);\n }\n\n const response: any = credential.response;\n const json: any = {\n id: credential.id,\n rawId: NhPasskeyClient.toBase64Url(credential.rawId),\n type: credential.type,\n authenticatorAttachment: (credential as any).authenticatorAttachment ?? undefined,\n clientExtensionResults: credential.getClientExtensionResults?.() ?? {},\n response: {\n clientDataJSON: NhPasskeyClient.toBase64Url(response.clientDataJSON)\n }\n };\n\n if (response.attestationObject) {\n json.response.attestationObject = NhPasskeyClient.toBase64Url(response.attestationObject);\n json.response.transports = typeof response.getTransports === 'function' ? response.getTransports() : [];\n }\n\n if (response.authenticatorData) {\n json.response.authenticatorData = NhPasskeyClient.toBase64Url(response.authenticatorData);\n json.response.signature = NhPasskeyClient.toBase64Url(response.signature);\n json.response.userHandle = response.userHandle ? NhPasskeyClient.toBase64Url(response.userHandle) : null;\n }\n\n return json;\n }\n\n private static fromBase64Url(value: string): ArrayBuffer {\n const bytes = Base64.toUint8Array(value);\n return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer;\n }\n\n private static toBase64Url(buffer: ArrayBuffer): string {\n return Base64.fromUint8Array(new Uint8Array(buffer), true);\n }\n}\n","import {inject, Injectable, NgZone, OnDestroy, PLATFORM_ID, REQUEST_CONTEXT} from '@angular/core';\nimport {BehaviorSubject, lastValueFrom, Observable} from 'rxjs';\nimport {\n AuthenticateModel, AuthenticationFlow,\n AuthenticationSessionCreateResponse,\n AuthSessionExpirationInformation,\n Claim,\n ClaimTypes,\n ImpersonateAuthenticateModel,\n INhAuthorization,\n NhAccountInformationResponse,\n NhAuthenticationStep,\n NhAuthenticationStepStatuses,\n NhAuthenticatorSetup,\n NhAuthorization,\n NhDivision,\n NhLoginResponse,\n NhPasskey,\n NhPasskeyOptions,\n NhTwoFactorChallenge,\n NhTwoFactorChange,\n NhTwoFactorEmailCodeSent,\n NhTwoFactorEnrollmentResult,\n NhTwoFactorFailureCodes,\n NhTwoFactorReauthentication,\n NhTwoFactorStatus,\n NhTwoFactorVerifyModel,\n RefreshTokenLoginAccountMutateModel,\n RevertImpersonateAuthenticateModel\n} from \"../models/auth.models\";\nimport {DateTime} from \"luxon\";\nimport {TaskResult} from \"../models/misc.models\";\nimport {HttpClient, HttpErrorResponse, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {EndpointsAuthenticationNhCommonModuleConfig, NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhApiUtil} from \"../util/nh-api-util\";\nimport {isPlatformServer} from \"@angular/common\";\nimport {Base64} from \"js-base64\";\nimport {NhPasskeyClient} from \"./nh-passkey-client.service\";\nimport {NhBackgroundOperation} from \"../models/background-operation.models\";\n\ninterface NhTwoFactorChangeResponse {\n recoveryCodes?: string[] | null;\n session?: NhLoginResponse | null;\n}\n\n@Injectable()\nexport abstract class BaseNhAuthService<TAuthorization extends INhAuthorization> implements OnDestroy {\n protected static readonly pendingTwoFactorChallengeStorageKey = 'nh-two-factor-challenge';\n protected static readonly externalTwoFactorChallengePrefix = 'nh-two-factor=';\n protected static readonly rememberDeviceStorageKey = 'nh-two-factor-device';\n\n protected authorization: TAuthorization | undefined = undefined;\n protected pendingTwoFactorChallenge: NhTwoFactorChallenge | undefined = undefined;\n protected authSession: AuthenticationSessionCreateResponse | undefined = undefined;\n public readonly authSubject = new BehaviorSubject<TAuthorization | undefined>(this.getAuthorization());\n protected onReady: ((value: (PromiseLike<unknown> | unknown)) => void) | undefined;\n public readonly authReady: Promise<unknown>;\n\n protected _sessionExpirationInformation = new BehaviorSubject<AuthSessionExpirationInformation>(this.getSessionExpirationInformation());\n public sessionExpirationInformationChanged = this._sessionExpirationInformation.asObservable();\n protected intervalHandle: any;\n\n protected zone: NgZone = inject(NgZone);\n protected moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n protected httpClient: HttpClient = inject(HttpClient);\n protected platformId: Object = inject(PLATFORM_ID);\n protected requestContext: any = inject(REQUEST_CONTEXT, {optional: true});\n protected passkeyClient: NhPasskeyClient = inject(NhPasskeyClient);\n\n constructor() {\n this.authReady = new Promise(resolve => {\n this.onReady = resolve;\n });\n\n if (!isPlatformServer(this.platformId)) {\n this.intervalHandle = setInterval(() => {\n this.zone.run(() => {\n this.dispatchSessionExpirationInformationChanged();\n });\n }, 1000);\n }\n }\n\n dispatchSessionExpirationInformationChanged() {\n const sessionExpirationInfo = this.getSessionExpirationInformation();\n this._sessionExpirationInformation.next(sessionExpirationInfo);\n }\n\n ngOnDestroy() {\n if (this.intervalHandle) {\n clearInterval(this.intervalHandle);\n }\n }\n\n private getAllPermissionClaimTypes() {\n let types = new Array<string>();\n types.push(ClaimTypes.Permission);\n\n for (const type of this.moduleConfig?.authentication?.additionalClaimPermissionTypes ?? []) {\n types.push(type);\n }\n\n return types;\n }\n\n private getAllDivisionPermissionClaimTypes() {\n let types = new Array<string>();\n types.push(ClaimTypes.DivisionPermission);\n\n for (const type of this.moduleConfig?.authentication?.additionalDivisionClaimPermissionTypes ?? []) {\n types.push(type);\n }\n\n return types;\n }\n\n public getSessionExpirationInformation() {\n const result = new AuthSessionExpirationInformation({\n isAuthenticated: this.isAuthenticated()\n });\n\n if (result.isAuthenticated) {\n const auth = this.getAuthorization()!;\n const nowDate = DateTime.utc();\n const authDate = DateTime.fromISO(auth.validTo ?? '').toUTC();\n const duration = authDate.diff(nowDate);\n\n result.expiresWithin15MinutesOrExpired = duration.minutes <= 15;\n if (duration.seconds >= 0) {\n result.displayMinutesSecondsUntilExpiration = `${(duration.minutes < 10 && duration.minutes >= 0) ? '0' : ''}${duration.minutes}:${(duration.seconds < 10 && duration.seconds >= 0) ? '0' : ''}${duration.seconds}`;\n } else {\n result.displayMinutesSecondsUntilExpiration = `00:00`;\n }\n } else {\n result.expiresWithin15MinutesOrExpired = true;\n result.displayMinutesSecondsUntilExpiration = `00:00`;\n }\n\n return result;\n }\n\n public clearAuthorization(doDispatchEvent: boolean = true): void {\n if (this.isAuthenticated()) {\n try {\n localStorage.removeItem('at');\n } finally {\n }\n\n this.authorization = undefined;\n if (doDispatchEvent) {\n this.authSubject.next(this.authorization);\n }\n this.dispatchSessionExpirationInformationChanged();\n }\n }\n\n public setAuthorization(auth: TAuthorization, noEvent = false): void {\n localStorage.setItem('at', Base64.encode(JSON.stringify(auth)));\n this.authorization = auth;\n if (!noEvent) {\n this.authSubject.next(this.authorization);\n }\n this.dispatchSessionExpirationInformationChanged();\n }\n\n protected abstract initEmptyAuthorization(): TAuthorization;\n\n public getAuthorization(fromCache: boolean = true): TAuthorization | undefined {\n let auth: TAuthorization = this.initEmptyAuthorization();\n\n if (fromCache && this.authorization) {\n return this.authorization;\n }\n\n try {\n auth = JSON.parse(Base64.decode(localStorage.getItem('at') ?? ''));\n this.authorization = auth;\n } catch (ex) {\n }\n\n return auth;\n }\n\n public isAuthenticated(): boolean {\n const auth = this.getAuthorization();\n let authenticated = true;\n authenticated = ((auth?.claims?.length ?? 0) > 0);\n\n if (authenticated && auth) {\n authenticated = (DateTime.fromISO(auth.validTo ?? '') >= DateTime.utc());\n }\n\n return authenticated;\n }\n\n public isImpersonating(): boolean {\n return this.isAuthenticated() && !!this.getAuthorization()?.claims?.find(x => x.type === ClaimTypes.ImpersonateOriginUserId);\n }\n\n public getActiveDivision(): NhDivision | null {\n let division: NhDivision | null = null;\n\n const auth = this.getAuthorization();\n\n if (auth && auth.user && auth.activeDivision) {\n division = auth.activeDivision;\n }\n\n return division;\n }\n\n public getActiveDivisionId(): string | undefined {\n let divisionId: string | undefined = undefined;\n const auth = this.getAuthorization();\n\n if ((auth?.user?.activeDivisionId?.length ?? 0) > 0) {\n divisionId = auth!.user!.activeDivisionId;\n }\n\n return divisionId;\n }\n\n public isGrantedRole(roles: string | string[]): boolean {\n\n if (typeof roles === 'string') {\n roles = [roles];\n }\n\n for (const role of roles) {\n const claim = <Claim>{\n value: role,\n type: ClaimTypes.Role\n };\n\n if (this.isClaimGranted(claim)) {\n return true;\n }\n }\n\n return false;\n }\n\n public isClaimGranted(claim: Claim) {\n const auth = this.getAuthorization();\n return (null != auth && auth.claims != null && null != auth.claims.find((x: Claim) => x.type === claim.type && x.value === claim.value));\n }\n\n public isOneClaimGranted(claims: Array<Claim>) {\n if (!claims || claims.length < 1) {\n return true;\n }\n\n for (const claim of claims) {\n if (this.isClaimGranted(claim)) {\n return true;\n }\n }\n\n return false;\n }\n\n public isOnePermissionGranted(permissions: Array<string>) {\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n for (const permission of permissions) {\n for (const claimType of this.getAllPermissionClaimTypes()) {\n if (this.isClaimGranted(<Claim>{type: claimType, value: permission})) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Returns true only when every requested permission is granted through one\n * of the configured permission claim types. An empty requirement is allowed.\n */\n public isAllPermissionsGranted(permissions: Array<string>) {\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n return permissions.every(permission =>\n this.getAllPermissionClaimTypes().some(claimType =>\n this.isClaimGranted(<Claim>{type: claimType, value: permission}))\n );\n }\n\n public isOneRoleGranted(roles: Array<string>) {\n if (!roles || roles.length < 1) {\n return true;\n }\n\n for (const role of roles) {\n if (this.isClaimGranted(<Claim>{type: ClaimTypes.Role, value: role})) {\n return true;\n }\n }\n\n return false;\n }\n\n public isOneDivisionPermissionGranted(divisionId: string | undefined, permissions: Array<string>) {\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n for (const permission of permissions) {\n for (const claimType of this.getAllDivisionPermissionClaimTypes()) {\n if (this.isClaimGranted(<Claim>{type: claimType, value: (divisionId ?? '') + '_' + permission})) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n public isOneDivisionRoleGranted(divisionId: string | undefined, roles: Array<string>) {\n if (!roles || roles.length < 1) {\n return true;\n }\n\n for (const role of roles) {\n if (this.isClaimGranted(<Claim>{type: ClaimTypes.DivisionRole, value: (divisionId ?? '') + '_' + role})) {\n return true;\n }\n }\n\n return false;\n }\n\n public isOneActiveDivisionPermissionGranted(permissions: Array<string>) {\n return this.isOneDivisionPermissionGranted(this.getActiveDivisionId(), permissions);\n }\n\n public isOneActiveDivisionRoleGranted(roles: Array<string>) {\n return this.isOneDivisionRoleGranted(this.getActiveDivisionId(), roles);\n }\n\n public getAuthenticationFlow(username: string): Promise<TaskResult<AuthenticationFlow>> {\n const model = {username: username};\n return this.httpClient.post<AuthenticationFlow>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.authorizationFlow, model, {\n withCredentials: true\n }).taskResultLastValueFrom();\n }\n\n public getMicrosoftRedirectUrl(callbackUrl: string, username: string): Promise<TaskResult<string>> {\n return this.httpClient.post<string>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.msRedirectUrl, {\n callbackUrl: callbackUrl,\n userName: username\n }, {\n withCredentials: true\n }).taskResultLastValueFrom();\n }\n\n public authorizeMicrosoft(code: string, state: string): Promise<TaskResult<TAuthorization>> {\n return this.httpClient.post<TAuthorization>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.msAuthenticate, {\n code: code,\n state: state,\n }, {\n withCredentials: true\n }).taskResultLastValueFrom();\n }\n\n /**\n * Signs in with username and password and stores the complete session.\n *\n * When the server requires a second factor this method fails with\n * `NhTwoFactorFailureCodes.Required` and stores nothing. Use `authenticateInteractive`\n * to receive the challenge, or read it with `getPendingTwoFactorChallenge()`.\n */\n async authenticate(model: AuthenticateModel, loginAsUser: boolean = false): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n const stepResult = await this.authenticateInteractive(model);\n\n if (!stepResult.isSuccess) {\n stepResult.copyTo(result);\n return result;\n }\n\n if (stepResult.data?.status === 'two-factor-required') {\n return result.withError(NhTwoFactorFailureCodes.Required, 'nh-two-factor.required');\n }\n\n if (stepResult.data?.status === 'enrollment-required') {\n return result.withError(NhTwoFactorFailureCodes.EnrollmentRequired, 'nh-two-factor.enrollment-required');\n }\n\n result.data = stepResult.data?.authorization;\n return result;\n }\n\n /**\n * Signs in with username and password. Returns the stored authorization, the\n * second-factor challenge or the required enrollment. A pending step is never stored as\n * an authorization.\n */\n async authenticateInteractive(model: AuthenticateModel): Promise<TaskResult<NhAuthenticationStep<TAuthorization>>> {\n const result = new TaskResult<NhAuthenticationStep<TAuthorization>>();\n model.realm = this.moduleConfig.authenticationRealm;\n model.rememberDeviceToken = model.rememberDeviceToken ?? this.getRememberDeviceToken();\n\n const request$ = this.httpClient.post<NhLoginResponse>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.login, model, {\n params: this.languageParams(),\n withCredentials: true\n });\n\n try {\n result.data = this.completeAuthenticationStep(await lastValueFrom(request$));\n } catch (ex) {\n if (this.isAuthenticated()) {\n this.clearAuthorization();\n }\n\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Completes a second-factor challenge and stores the session.\n */\n async verifyTwoFactor(model: NhTwoFactorVerifyModel): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n const request$ = this.httpClient.post<NhLoginResponse>(this.moduleConfig.authApiBaseUrl + this.twoFactorEndpoints().twoFactorVerify, model, {\n params: this.languageParams(),\n withCredentials: true\n });\n\n try {\n result.data = this.completeAuthenticationStep(await lastValueFrom(request$)).authorization;\n } catch (ex) {\n this.pendingStepFailed(ex).copyTo(result);\n }\n\n return result;\n }\n\n /**\n * E-mails a sign-in code for the pending challenge when the user enrolled the e-mail factor.\n */\n sendTwoFactorEmailCode(challengeToken: string): Promise<TaskResult<NhTwoFactorEmailCodeSent>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhTwoFactorEmailCodeSent>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEmail),\n {challengeToken: challengeToken},\n this.twoFactorStepRequestOptions()),\n response => new NhTwoFactorEmailCodeSent(response));\n }\n\n /**\n * Whether this browser can use passkeys.\n */\n isPasskeySupported(): boolean {\n return this.passkeyClient.isSupported();\n }\n\n /**\n * Completes the pending challenge with a passkey and stores the session.\n */\n async verifyTwoFactorWithPasskey(challengeToken: string, rememberDevice: boolean = false): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n const endpoints = this.twoFactorEndpoints();\n\n const options = await this.sendTwoFactorRequest(\n this.httpClient.post<NhPasskeyOptions>(\n this.twoFactorUrl(endpoints.twoFactorPasskeyOptions),\n {challengeToken: challengeToken},\n this.twoFactorStepRequestOptions()),\n response => new NhPasskeyOptions(response));\n if (!options.isSuccess) {\n options.copyTo(result);\n return result;\n }\n\n const credential = await this.runPasskeyCeremony(() => this.passkeyClient.get(options.data!.options));\n if (!credential.isSuccess) {\n credential.copyTo(result);\n return result;\n }\n\n const request$ = this.httpClient.post<NhLoginResponse>(\n this.twoFactorUrl(endpoints.twoFactorPasskey),\n {\n challengeToken: challengeToken,\n ceremonyToken: options.data!.ceremonyToken,\n credential: credential.data,\n rememberDevice: rememberDevice\n },\n this.twoFactorStepRequestOptions());\n\n try {\n result.data = this.completeAuthenticationStep(await lastValueFrom(request$)).authorization;\n } catch (ex) {\n this.pendingStepFailed(ex).copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Signs in with a discoverable passkey, without a username or password. Returns the\n * stored authorization, or a pending step when the server's policy asks for more.\n */\n async signInWithPasskey(): Promise<TaskResult<NhAuthenticationStep<TAuthorization>>> {\n const result = new TaskResult<NhAuthenticationStep<TAuthorization>>();\n const endpoints = this.twoFactorEndpoints();\n\n const options = await this.sendTwoFactorRequest(\n this.httpClient.post<NhPasskeyOptions>(\n this.twoFactorUrl(endpoints.passkeySignInOptions),\n {},\n this.twoFactorStepRequestOptions()),\n response => new NhPasskeyOptions(response));\n if (!options.isSuccess) {\n options.copyTo(result);\n return result;\n }\n\n const credential = await this.runPasskeyCeremony(() => this.passkeyClient.get(options.data!.options));\n if (!credential.isSuccess) {\n credential.copyTo(result);\n return result;\n }\n\n const request$ = this.httpClient.post<NhLoginResponse>(\n this.twoFactorUrl(endpoints.passkeySignIn),\n {\n ceremonyToken: options.data!.ceremonyToken,\n credential: credential.data,\n rememberDeviceToken: this.getRememberDeviceToken()\n },\n this.twoFactorStepRequestOptions());\n\n try {\n result.data = this.completeAuthenticationStep(await lastValueFrom(request$));\n } catch (ex) {\n NhApiUtil.taskResultFromResponse(ex).copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Starts authenticator enrollment for a user whom the policy requires to enroll during\n * sign-in. `enrollmentToken` is the `challengeToken` of the enrollment step.\n */\n beginEnrollmentAuthenticatorSetup(enrollmentToken: string): Promise<TaskResult<NhAuthenticatorSetup>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhAuthenticatorSetup>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEnrollmentAuthenticator),\n {enrollmentToken: enrollmentToken},\n this.twoFactorStepRequestOptions()),\n response => new NhAuthenticatorSetup(response));\n }\n\n /**\n * Confirms the authenticator during a required enrollment and stores the session.\n */\n confirmEnrollmentAuthenticator(enrollmentToken: string, code: string): Promise<TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>> {\n return this.sendEnrollmentCompletion(\n this.twoFactorEndpoints().twoFactorEnrollmentAuthenticatorConfirm,\n {enrollmentToken: enrollmentToken, code: code});\n }\n\n /**\n * E-mails a confirmation code during a required enrollment.\n */\n sendEnrollmentEmailCode(enrollmentToken: string): Promise<TaskResult<NhTwoFactorEmailCodeSent>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhTwoFactorEmailCodeSent>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEnrollmentEmail),\n {enrollmentToken: enrollmentToken},\n this.twoFactorStepRequestOptions()),\n response => new NhTwoFactorEmailCodeSent(response));\n }\n\n /**\n * Confirms the e-mail factor during a required enrollment and stores the session.\n */\n confirmEnrollmentEmail(enrollmentToken: string, code: string): Promise<TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>> {\n return this.sendEnrollmentCompletion(\n this.twoFactorEndpoints().twoFactorEnrollmentEmailConfirm,\n {enrollmentToken: enrollmentToken, code: code});\n }\n\n /**\n * Registers a passkey during a required enrollment and stores the session.\n */\n async enrollPasskey(enrollmentToken: string, name?: string): Promise<TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>> {\n const result = new TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>();\n const endpoints = this.twoFactorEndpoints();\n\n const options = await this.sendTwoFactorRequest(\n this.httpClient.post<NhPasskeyOptions>(\n this.twoFactorUrl(endpoints.twoFactorEnrollmentPasskeyOptions),\n {enrollmentToken: enrollmentToken},\n this.twoFactorStepRequestOptions()),\n response => new NhPasskeyOptions(response));\n if (!options.isSuccess) {\n options.copyTo(result);\n return result;\n }\n\n const credential = await this.runPasskeyCeremony(() => this.passkeyClient.create(options.data!.options));\n if (!credential.isSuccess) {\n credential.copyTo(result);\n return result;\n }\n\n return this.sendEnrollmentCompletion(endpoints.twoFactorEnrollmentPasskey, {\n enrollmentToken: enrollmentToken,\n ceremonyToken: options.data!.ceremonyToken,\n credential: credential.data,\n name: name\n });\n }\n\n /**\n * Returns the pending second-factor challenge of this browser tab, if it has not expired.\n */\n getPendingTwoFactorChallenge(): NhTwoFactorChallenge | undefined {\n const challenge = this.pendingTwoFactorChallenge ?? this.readStoredTwoFactorChallenge();\n if (!challenge) {\n return undefined;\n }\n\n if (challenge.expiresAt && DateTime.fromISO(challenge.expiresAt) <= DateTime.now()) {\n this.clearPendingTwoFactorChallenge();\n return undefined;\n }\n\n this.pendingTwoFactorChallenge = challenge;\n return challenge;\n }\n\n clearPendingTwoFactorChallenge(): void {\n this.pendingTwoFactorChallenge = undefined;\n\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n try {\n sessionStorage.removeItem(BaseNhAuthService.pendingTwoFactorChallengeStorageKey);\n } catch {\n // Storage can be unavailable in private browsing; the in-memory challenge is cleared.\n }\n }\n\n /**\n * Reads a challenge that an external sign-in (Microsoft OAuth) passed back in the URL\n * fragment, stores it as the pending challenge and removes it from the address bar.\n */\n consumeExternalTwoFactorChallenge(fragment?: string): NhTwoFactorChallenge | undefined {\n const browser = !isPlatformServer(this.platformId);\n const source = fragment ?? (browser ? window.location.hash : '');\n const value = source.startsWith('#') ? source.substring(1) : source;\n\n if (!value.startsWith(BaseNhAuthService.externalTwoFactorChallengePrefix)) {\n return undefined;\n }\n\n let challenge: NhTwoFactorChallenge;\n try {\n const payload = value.substring(BaseNhAuthService.externalTwoFactorChallengePrefix.length);\n challenge = new NhTwoFactorChallenge(JSON.parse(Base64.decode(payload)));\n } catch {\n return undefined;\n }\n\n if (!challenge.challengeToken) {\n return undefined;\n }\n\n this.setPendingTwoFactorChallenge(challenge);\n\n if (browser && fragment === undefined) {\n window.history.replaceState(window.history.state, '', window.location.pathname + window.location.search);\n }\n\n return challenge;\n }\n\n async getTwoFactorStatus(): Promise<TaskResult<NhTwoFactorStatus>> {\n const result = new TaskResult<NhTwoFactorStatus>();\n const request$ = this.httpClient.get<NhTwoFactorStatus>(\n this.moduleConfig.authApiBaseUrl + this.twoFactorEndpoints().twoFactorStatus,\n this.twoFactorAccountRequestOptions()\n );\n\n try {\n result.data = new NhTwoFactorStatus(await lastValueFrom(request$));\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Starts authenticator enrollment. Restarting enrollment while two-factor authentication\n * is enabled requires reauthentication.\n */\n async beginAuthenticatorSetup(reauthentication?: NhTwoFactorReauthentication): Promise<TaskResult<NhAuthenticatorSetup>> {\n const result = new TaskResult<NhAuthenticatorSetup>();\n const request$ = this.httpClient.post<NhAuthenticatorSetup>(\n this.moduleConfig.authApiBaseUrl + this.twoFactorEndpoints().twoFactorAuthenticator,\n {reauthentication: reauthentication},\n this.twoFactorAccountRequestOptions()\n );\n\n try {\n result.data = new NhAuthenticatorSetup(await lastValueFrom(request$));\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Confirms authenticator enrollment. The server ends every other session; the renewed\n * session for this device is stored before the promise resolves.\n */\n confirmAuthenticator(code: string): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorAuthenticatorConfirm, {code: code});\n }\n\n regenerateRecoveryCodes(reauthentication: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorRecoveryCodes, {reauthentication: reauthentication});\n }\n\n disableTwoFactor(reauthentication: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorDisable, {reauthentication: reauthentication});\n }\n\n /**\n * E-mails a code that confirms the user's e-mail address as a second factor. Requires\n * reauthentication while two-factor authentication is enabled.\n */\n beginEmailSetup(reauthentication?: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorEmailCodeSent>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhTwoFactorEmailCodeSent>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEmailSetup),\n {reauthentication: reauthentication},\n this.twoFactorAccountRequestOptions()),\n response => new NhTwoFactorEmailCodeSent(response));\n }\n\n confirmEmailSetup(code: string): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorEmailConfirm, {code: code});\n }\n\n /**\n * Forgets every remembered device, including this one, and ends every other session.\n */\n async forgetTwoFactorDevices(reauthentication: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n const result = await this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorForgetDevices, {reauthentication: reauthentication});\n if (result.isSuccess) {\n this.storeRememberDeviceToken(undefined);\n }\n\n return result;\n }\n\n getPasskeys(): Promise<TaskResult<NhPasskey[]>> {\n return this.sendTwoFactorRequest(\n this.httpClient.get<NhPasskey[]>(\n this.twoFactorUrl(this.twoFactorEndpoints().passkeys),\n this.twoFactorAccountRequestOptions()),\n response => (response ?? []).map(passkey => new NhPasskey(passkey)));\n }\n\n /**\n * Registers a passkey on this device. Adding a passkey while two-factor authentication is\n * enabled requires reauthentication. The server ends every other session; the renewed\n * session for this device is stored before the promise resolves.\n */\n async registerPasskey(name?: string, reauthentication?: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n const result = new TaskResult<NhTwoFactorChange>();\n const endpoints = this.twoFactorEndpoints();\n\n const options = await this.sendTwoFactorRequest(\n this.httpClient.post<NhPasskeyOptions>(\n this.twoFactorUrl(endpoints.passkeyRegistrationOptions),\n {reauthentication: reauthentication},\n this.twoFactorAccountRequestOptions()),\n response => new NhPasskeyOptions(response));\n if (!options.isSuccess) {\n options.copyTo(result);\n return result;\n }\n\n const credential = await this.runPasskeyCeremony(() => this.passkeyClient.create(options.data!.options));\n if (!credential.isSuccess) {\n credential.copyTo(result);\n return result;\n }\n\n return this.sendTwoFactorChange(endpoints.passkeys, {\n ceremonyToken: options.data!.ceremonyToken,\n credential: credential.data,\n name: name\n });\n }\n\n renamePasskey(passkeyId: string, name: string): Promise<TaskResult<void>> {\n return this.sendTwoFactorRequest(\n this.httpClient.put<void>(\n this.twoFactorUrl(this.twoFactorEndpoints().passkeys) + '/' + encodeURIComponent(passkeyId),\n {name: name},\n this.twoFactorAccountRequestOptions()),\n () => undefined);\n }\n\n /**\n * Removes a passkey. Removing the last second factor disables two-factor authentication,\n * which fails when the policy requires it.\n */\n removePasskey(passkeyId: string, reauthentication: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(\n this.twoFactorEndpoints().passkeys + '/' + encodeURIComponent(passkeyId) + '/remove',\n {reauthentication: reauthentication});\n }\n\n /**\n * Removes every second factor of another user who lost access to them. Requires the\n * server's two-factor administration policy.\n */\n resetUserTwoFactor(userId: string): Promise<TaskResult<void>> {\n const endpoint = this.twoFactorEndpoints().twoFactorUserReset.replace('{userId}', encodeURIComponent(userId));\n return this.sendTwoFactorRequest(\n this.httpClient.post<void>(this.twoFactorUrl(endpoint), {}, this.twoFactorAccountRequestOptions()),\n () => undefined);\n }\n\n /**\n * Starts a background operation that reminds every user whom the policy requires to\n * enroll. A repeated idempotency key returns the operation that was already started.\n */\n startTwoFactorEnrollmentReminders(idempotencyKey: string): Promise<TaskResult<NhBackgroundOperation>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhBackgroundOperation>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEnrollmentReminders),\n {idempotencyKey: idempotencyKey},\n this.twoFactorAccountRequestOptions()),\n response => response);\n }\n\n /**\n * Starts a background operation that ends the sessions of every user whom the policy\n * requires to enroll, so their next sign-in enrolls them.\n */\n startTwoFactorSessionRevocation(idempotencyKey: string): Promise<TaskResult<NhBackgroundOperation>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhBackgroundOperation>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorSessionRevocation),\n {idempotencyKey: idempotencyKey},\n this.twoFactorAccountRequestOptions()),\n response => response);\n }\n\n protected async sendTwoFactorChange(endpoint: string, body: object): Promise<TaskResult<NhTwoFactorChange>> {\n const result = new TaskResult<NhTwoFactorChange>();\n const request$ = this.httpClient.post<NhTwoFactorChangeResponse>(\n this.moduleConfig.authApiBaseUrl + endpoint,\n body,\n this.twoFactorAccountRequestOptions()\n );\n\n try {\n const response = await lastValueFrom(request$);\n const sessionRenewed = this.applyRenewedSession(response?.session);\n\n result.data = new NhTwoFactorChange({\n recoveryCodes: response?.recoveryCodes ?? undefined,\n sessionRenewed: sessionRenewed\n });\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Stores the session that the server issued for this device after a change that ended\n * every session. The user, claims and divisions of the current authorization are kept.\n */\n protected applyRenewedSession(session: NhLoginResponse | null | undefined): boolean {\n const authorization = this.getAuthorization();\n if (!session?.token || !authorization) {\n return false;\n }\n\n authorization.token = session.token;\n authorization.validTo = session.validTo ?? authorization.validTo;\n authorization.refreshToken = session.refreshToken ?? undefined;\n authorization.refreshTokenExpires = session.refreshValidTo ?? undefined;\n\n this.setAuthorization(authorization);\n return true;\n }\n\n protected toAuthorization(response: NhLoginResponse): TAuthorization {\n const authorization = response as unknown as TAuthorization;\n delete (authorization as NhLoginResponse).twoFactor;\n delete (authorization as NhLoginResponse).rememberDeviceToken;\n authorization.realm = this.moduleConfig.authenticationRealm;\n return authorization;\n }\n\n /**\n * Stores a complete session, or keeps a second-factor challenge or enrollment as the\n * pending step of this browser tab.\n */\n protected completeAuthenticationStep(response: NhLoginResponse): NhAuthenticationStep<TAuthorization> {\n if (response?.twoFactor) {\n const challenge = new NhTwoFactorChallenge(response.twoFactor);\n this.setPendingTwoFactorChallenge(challenge);\n\n return new NhAuthenticationStep<TAuthorization>({\n status: challenge.status === NhAuthenticationStepStatuses.enrollmentRequired ? 'enrollment-required' : 'two-factor-required',\n challenge: challenge\n });\n }\n\n if (response?.rememberDeviceToken) {\n this.storeRememberDeviceToken(response.rememberDeviceToken);\n }\n\n const authorization = this.toAuthorization(response);\n this.setAuthorization(authorization);\n this.clearPendingTwoFactorChallenge();\n return new NhAuthenticationStep<TAuthorization>({status: 'authenticated', authorization: authorization});\n }\n\n /**\n * Converts a failed challenge or enrollment request and forgets the pending step when the\n * server ended it.\n */\n protected pendingStepFailed(ex: unknown): TaskResult<unknown> {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n const stepEnded = errResult.items.some(item =>\n item.name === NhTwoFactorFailureCodes.ChallengeExpired || item.name === NhTwoFactorFailureCodes.LockedOut);\n\n if (stepEnded) {\n this.clearPendingTwoFactorChallenge();\n }\n\n return errResult;\n }\n\n protected async sendEnrollmentCompletion(endpoint: string, body: object): Promise<TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>> {\n const result = new TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>();\n const request$ = this.httpClient.post<NhTwoFactorChangeResponse>(\n this.twoFactorUrl(endpoint),\n body,\n this.twoFactorStepRequestOptions());\n\n try {\n const response = await lastValueFrom(request$);\n const authorization = response?.session ? this.completeAuthenticationStep(response.session).authorization : undefined;\n\n result.data = new NhTwoFactorEnrollmentResult<TAuthorization>({\n authorization: authorization,\n recoveryCodes: response?.recoveryCodes ?? undefined\n });\n } catch (ex) {\n this.pendingStepFailed(ex).copyTo(result);\n }\n\n return result;\n }\n\n protected async sendTwoFactorRequest<TResponse, TResult>(\n request$: Observable<TResponse>,\n map: (response: TResponse) => TResult): Promise<TaskResult<TResult>> {\n const result = new TaskResult<TResult>();\n\n try {\n result.data = map(await lastValueFrom(request$, {defaultValue: undefined as TResponse}));\n } catch (ex) {\n NhApiUtil.taskResultFromResponse(ex).copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Runs a WebAuthn prompt. A cancelled prompt or an unsupported browser becomes a failed\n * result with `NhTwoFactorFailureCodes.PasskeyUnavailable`.\n */\n protected async runPasskeyCeremony(ceremony: () => Promise<object>): Promise<TaskResult<object>> {\n const result = new TaskResult<object>();\n\n try {\n result.data = await ceremony();\n } catch {\n return result.withError(NhTwoFactorFailureCodes.PasskeyUnavailable, 'nh-two-factor.passkey-unavailable');\n }\n\n return result;\n }\n\n /**\n * Returns the remember-device token of header clients. Cookie clients receive it as an\n * HttpOnly cookie, so nothing is stored in the browser.\n */\n protected getRememberDeviceToken(): string | undefined {\n if (this.moduleConfig.authType !== 'header' || isPlatformServer(this.platformId)) {\n return undefined;\n }\n\n try {\n return localStorage.getItem(this.rememberDeviceStorageKey()) ?? undefined;\n } catch {\n return undefined;\n }\n }\n\n protected storeRememberDeviceToken(token: string | undefined): void {\n if (this.moduleConfig.authType !== 'header' || isPlatformServer(this.platformId)) {\n return;\n }\n\n try {\n if (token) {\n localStorage.setItem(this.rememberDeviceStorageKey(), token);\n } else {\n localStorage.removeItem(this.rememberDeviceStorageKey());\n }\n } catch {\n // Storage can be unavailable in private browsing; the device is then not remembered.\n }\n }\n\n protected rememberDeviceStorageKey(): string {\n return BaseNhAuthService.rememberDeviceStorageKey + ':' + this.moduleConfig.authenticationRealm;\n }\n\n protected setPendingTwoFactorChallenge(challenge: NhTwoFactorChallenge): void {\n this.pendingTwoFactorChallenge = challenge;\n\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n try {\n sessionStorage.setItem(BaseNhAuthService.pendingTwoFactorChallengeStorageKey, JSON.stringify(challenge));\n } catch {\n // Storage can be unavailable in private browsing; the in-memory challenge still works.\n }\n }\n\n protected readStoredTwoFactorChallenge(): NhTwoFactorChallenge | undefined {\n if (isPlatformServer(this.platformId)) {\n return undefined;\n }\n\n try {\n const stored = sessionStorage.getItem(BaseNhAuthService.pendingTwoFactorChallengeStorageKey);\n if (!stored) {\n return undefined;\n }\n\n return new NhTwoFactorChallenge(JSON.parse(stored));\n } catch {\n return undefined;\n }\n }\n\n protected twoFactorEndpoints(): EndpointsAuthenticationNhCommonModuleConfig {\n // Consumers that passed a plain endpoints object keep working with the default routes.\n return new EndpointsAuthenticationNhCommonModuleConfig({\n ...new EndpointsAuthenticationNhCommonModuleConfig(),\n ...this.moduleConfig.authentication.endpoints\n });\n }\n\n protected twoFactorUrl(endpoint: string): string {\n return this.moduleConfig.authApiBaseUrl + endpoint;\n }\n\n protected twoFactorStepRequestOptions() {\n return {\n params: this.languageParams(),\n withCredentials: true\n };\n }\n\n protected twoFactorAccountRequestOptions() {\n let headers = new HttpHeaders();\n const authorization = this.getAuthorization();\n if (this.moduleConfig.authType === 'header' && authorization?.token) {\n headers = headers.set('Authorization', `Bearer ${authorization.token}`);\n }\n\n return {\n params: this.languageParams(),\n headers: headers,\n withCredentials: true\n };\n }\n\n protected languageParams(): HttpParams {\n return new HttpParams().set('language', this.moduleConfig.language);\n }\n\n public async reloadAuthorizationProfile(): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n const auth = this.getAuthorization();\n if (!auth) {\n return result.withError('', 'Not authenticated.');\n }\n\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n let httpHeaders = new HttpHeaders();\n if (this.moduleConfig.authType === 'header') {\n httpHeaders = httpHeaders.set('Authorization', `Bearer ${auth.token}`);\n }\n\n const request$ = this.httpClient.get<NhAccountInformationResponse>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.accountInformation, {\n params: httpParams,\n headers: httpHeaders,\n withCredentials: true\n });\n\n try {\n const informationResponse = await lastValueFrom(request$);\n\n // Loop the informationResponse as object to set the properties on the auth object\n for (const key in informationResponse) {\n if (Object.prototype.hasOwnProperty.call(informationResponse, key)) {\n // @ts-ignore\n auth[key] = informationResponse[key];\n }\n }\n if(this.moduleConfig.authType !== 'header') {\n auth.token = '';\n }\n\n this.setAuthorization(auth);\n\n result.data = this.getAuthorization();\n } catch (ex) {\n // Check status code, if it's in the 400 range, clear the authorization\n const isHttpResponseError = ex instanceof HttpErrorResponse;\n if (isHttpResponseError) {\n const response = ex as HttpErrorResponse;\n if (response.status >= 401 && response.status < 500) {\n this.clearAuthorization();\n }\n }\n\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n async logout(): Promise<TaskResult<void>> {\n const result = new TaskResult<void>();\n const refreshToken = this.getAuthorization()?.refreshToken ?? null;\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n const request$ = this.httpClient.post<void>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.logout, { refreshToken }, {\n params: httpParams,\n withCredentials: true\n });\n\n try {\n await lastValueFrom(request$);\n\n if (result.isSuccess) {\n this.clearAuthorization();\n }\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n async authenticateRefreshToken(model: RefreshTokenLoginAccountMutateModel): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n const request$ = this.httpClient.post<TAuthorization>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.refresh, model, {\n params: httpParams,\n withCredentials: true\n });\n\n try {\n result.data = await lastValueFrom(request$);\n if (result.isSuccess) {\n this.setAuthorization(result.data);\n }\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n async impersonate(model: ImpersonateAuthenticateModel): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n const request$ = this.httpClient.post<TAuthorization>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.impersonate, model, {\n params: httpParams,\n withCredentials: true\n });\n\n try {\n result.data = await lastValueFrom(request$);\n if (result.isSuccess) {\n this.setAuthorization(result.data);\n await this.reloadAuthorizationProfile();\n }\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n async impersonateRevert(model: RevertImpersonateAuthenticateModel): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n const request$ = this.httpClient.post<TAuthorization>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.revertImpersonate, model, {\n params: httpParams,\n withCredentials: true\n });\n\n try {\n result.data = await lastValueFrom(request$);\n if (result.isSuccess) {\n this.setAuthorization(result.data);\n await this.reloadAuthorizationProfile();\n }\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n}\n\n@Injectable()\nexport class NhAuthService extends BaseNhAuthService<NhAuthorization> {\n protected initEmptyAuthorization(): NhAuthorization {\n return new NhAuthorization();\n }\n\n constructor() {\n super();\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n HttpInterceptor,\n HttpRequest,\n HttpEvent,\n HttpHandler,\n HttpParams,\n HttpParameterCodec, HttpResponse\n} from '@angular/common/http';\nimport {Inject, Injectable, Optional, PLATFORM_ID, REQUEST_CONTEXT} from '@angular/core';\nimport {Observable, tap} from 'rxjs';\nimport {isPlatformServer} from \"@angular/common\";\nimport {NhCommonConfig, NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhCookieService} from \"../services/nh-cookie.service\";\nimport {NhAuthService} from \"../services/nh-auth.service\";\nimport {Cookie} from \"../util/though-cookie-custom/cookie\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhRequestScopedServerHttpInterceptorService {\n didSetCookies = false;\n\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(REQUEST_CONTEXT) private requestContext: any\n ) {\n\n }\n}\n\n@Injectable()\nexport class NhServerHttpInterceptor implements HttpInterceptor {\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Inject(DOCUMENT) private document: Document,\n private requestScopedServerHttpInterceptorService: NhRequestScopedServerHttpInterceptorService,\n private cookieService: NhCookieService,\n private authService: NhAuthService\n ) {\n\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const normalizedReqUrl = req.url?.trim()?.toLowerCase() ?? '';\n const isApiRequest = normalizedReqUrl.startsWith(this.moduleConfig.apiBaseUrl);\n\n const handleExpiredHeaderDetected = (event: HttpResponse<any>) => {\n if (event.headers.has('X-Expired-Authentication')) {\n console.log('X-Expired-Authentication header detected');\n this.authService.clearAuthorization();\n }\n };\n\n if (isApiRequest && isPlatformServer(this.platformId)) {\n\n const requestCookies = this.cookieService\n .getRequestServerCookies()\n .filter(x => x.key === `${NhCookieService.HTTP_COOKIE_PREFIX}${NhCookieService.NOP_COOKIE_AUTHENTICATION}`\n || x.key === `${NhCookieService.HTTP_COOKIE_PREFIX}${NhCookieService.NOP_COOKIE_CUSTOMER}`\n || x.key === `${NhCookieService.HTTP_COOKIE_PREFIX}${NhCookieService.Nh_COOKIE_AUTHENTICATION}`)\n ;\n\n for (const cookie of requestCookies) {\n cookie.key = cookie.key.replace(NhCookieService.HTTP_COOKIE_PREFIX, '');\n }\n\n const requestCookieString = requestCookies.map(x => x.toString()).join('; ') ?? '';\n const serverReq = req.clone({\n setHeaders: {\n Cookie: requestCookieString\n },\n });\n\n return next.handle(serverReq).pipe(\n tap(async event => {\n if (event instanceof HttpResponse) {\n\n handleExpiredHeaderDetected(event);\n\n if (this.requestScopedServerHttpInterceptorService.didSetCookies) {\n return;\n }\n\n const rawSetCookieHeader = event?.headers?.get('Set-Cookie')?.trim() ?? '';\n\n if ((rawSetCookieHeader?.length ?? 0) > 0) {\n const cookies = this.cookieService.responseRawCookiesHeaderToCookies(rawSetCookieHeader);\n const nopAuthenticationCookie = cookies.find(x => x?.key === NhCookieService.NOP_COOKIE_AUTHENTICATION && x.httpOnly);\n const nopCustomerCookie = cookies.find(x => x?.key === NhCookieService.NOP_COOKIE_CUSTOMER && x.httpOnly);\n const nhAuthenticationCookie = cookies.find(x => x?.key === NhCookieService.Nh_COOKIE_AUTHENTICATION && x.httpOnly);\n\n const serverCookies: Cookie[] = [];\n\n if (nopAuthenticationCookie) {\n serverCookies.push(nopAuthenticationCookie);\n }\n\n if (nopCustomerCookie) {\n serverCookies.push(nopCustomerCookie);\n }\n\n if (nhAuthenticationCookie) {\n serverCookies.push(nhAuthenticationCookie);\n }\n\n for (const serverCookie of serverCookies) {\n serverCookie.domain = this.moduleConfig.cookieDomain;\n }\n\n this.cookieService.setServerCookies(serverCookies);\n this.requestScopedServerHttpInterceptorService.didSetCookies = true;\n }\n }\n })\n );\n }\n\n return next.handle(req).pipe(\n tap(async event => {\n if (event instanceof HttpResponse) {\n handleExpiredHeaderDetected(event);\n }\n })\n );\n }\n}\n","import {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest\n} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {finalize, shareReplay} from 'rxjs/operators';\nimport {NhCommonModuleConfig} from '../models/config.models';\n\n@Injectable()\nexport class NhDeduplicateGetRequestsInterceptor implements HttpInterceptor {\n private activeRequests = new Map<string, Observable<HttpEvent<any>>>();\n\n constructor(\n private moduleConfig: NhCommonModuleConfig\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.moduleConfig.http?.deduplicateGetRequests || req.method.toUpperCase() !== 'GET') {\n return next.handle(req);\n }\n\n const requestKey = this.getRequestKey(req);\n const activeRequest = this.activeRequests.get(requestKey);\n\n if (activeRequest) {\n return activeRequest;\n }\n\n const request$ = next.handle(req).pipe(\n finalize(() => this.activeRequests.delete(requestKey)),\n shareReplay({bufferSize: 1, refCount: true})\n );\n\n this.activeRequests.set(requestKey, request$);\n\n return request$;\n }\n\n private getRequestKey(req: HttpRequest<any>): string {\n const headerKey = (this.moduleConfig.http?.deduplicateGetRequestHeaderNames ?? [])\n .map(x => x.trim().toLowerCase())\n .filter(x => !!x)\n .sort()\n .map(x => `${x}:${req.headers.getAll(x)?.join(',') ?? ''}`)\n .join('|');\n\n return `${req.method.toUpperCase()} ${req.urlWithParams} ${headerKey}`;\n }\n}\n","import {forwardRef} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nexport abstract class AbstractValueAccessor implements ControlValueAccessor {\n _value: any = '';\n get value(): any {\n return this._value;\n };\n\n set value(v: any) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n }\n }\n\n writeValue(value: any) {\n this._value = value;\n // warning: comment below if only want to emit on user intervention\n this.onChange(value);\n }\n\n onChange = (_: any) => {\n };\n onTouched = () => {\n };\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n\nexport function MakeProvider(type: any) {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => type),\n multi: true\n };\n}\n","import {ErrorHandler, Injectable, InjectionToken, Injector} from \"@angular/core\";\n\nexport const NH_ERROR_HANDLERS = new InjectionToken<ErrorHandler[]>('NH_ERROR_HANDLERS');\n\n@Injectable({providedIn: 'root'})\nexport class NhErrorHandlerService implements ErrorHandler {\n constructor(private injector: Injector){}\n\n handleError(error: any): void {\n const handlers = this.injector.get(NH_ERROR_HANDLERS, []);\n for (const handler of handlers) {\n try {\n handler.handleError(error);\n } catch {\n // A failing telemetry provider must not prevent the remaining handlers\n // from observing the original application error.\n }\n }\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n afterNextRender,\n ApplicationRef,\n Inject,\n Injectable,\n makeStateKey,\n OnDestroy, Optional,\n PLATFORM_ID,\n StateKey, TransferState\n} from \"@angular/core\";\nimport {filter, Subscription} from \"rxjs\";\nimport {isPlatformBrowser, isPlatformServer} from \"@angular/common\";\nimport {NavigationEnd, Router} from \"@angular/router\";\n\nconst APP_ORIGINATED_FROM_SERVER = 'APP_ORIGINATED_FROM_SERVER';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhAppService implements OnDestroy {\n private $appRefIsStable: Subscription;\n private appIsStable: boolean = false;\n private afterNextRenderComplete: boolean = false;\n private firstHydrateComplete: boolean = false;\n private stateKeys: StateKey<any>[] = [];\n private browserFirstHydrateComplete$: Subscription|undefined;\n public readonly localStorage?: Storage;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n private appRef: ApplicationRef,\n private transferState: TransferState,\n private router: Router\n ) {\n\n this.localStorage = this.document.defaultView?.localStorage as Storage;\n this.$appRefIsStable = this.appRef.isStable.subscribe((isStable) => {\n if (isStable) {\n this.appIsStable = true;\n\n if(this.isPlatformServer()) {\n this.setStateTransferData(APP_ORIGINATED_FROM_SERVER, 'true');\n }\n }\n });\n\n afterNextRender(() => {\n this.afterNextRenderComplete = true;\n });\n\n if(this.isPlatformBrowser()) {\n this.browserFirstHydrateComplete$ = this.router.events\n .pipe(\n filter(event => event instanceof NavigationEnd) // Alleen NavigationEnd events\n )\n .subscribe(() => {\n if(this.isPlatformBrowser() && this.originatedFromServer() && !this.firstHydrateCompleted()) {\n this.firstHydrateComplete = true;\n this.browserFirstHydrateComplete$?.unsubscribe();\n }\n });\n }\n }\n\n isAppStable(): boolean {\n return this.appIsStable;\n }\n\n ngOnDestroy() {\n this.$appRefIsStable?.unsubscribe();\n this.browserFirstHydrateComplete$?.unsubscribe();\n }\n\n originatedFromServer(): boolean {\n return this.getStateTransferData(APP_ORIGINATED_FROM_SERVER) === 'true';\n }\n\n isPlatformServer(): boolean {\n return isPlatformServer(this.platformId);\n }\n\n isPlatformBrowser(): boolean {\n return isPlatformBrowser(this.platformId);\n }\n\n firstHydrateCompleted(): boolean {\n return this.firstHydrateComplete;\n }\n\n afterNextRenderCompleted(): boolean {\n return this.afterNextRenderComplete;\n }\n\n isPlatformBrowserInitial() {\n if(!this.originatedFromServer()) {\n return false;\n }\n\n return (isPlatformBrowser(this.platformId) && !this.firstHydrateCompleted() && this.afterNextRenderCompleted());\n }\n\n setStateTransferData(key: string, data: any) {\n let stateKey = this.stateKeys.find(x => x === key);\n if(!stateKey) {\n stateKey = makeStateKey<any>(key);\n this.stateKeys.push(stateKey);\n }\n\n this.transferState.set(stateKey, data);\n }\n\n getStateTransferData<T>(key: string): T {\n let stateKey = this.stateKeys.find(x => x === key);\n if(!stateKey) {\n stateKey = makeStateKey<any>(key);\n this.stateKeys.push(stateKey);\n }\n\n return this.transferState.get(stateKey, undefined as any);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport class NhJsonLdDataItem {\n id: string = '';\n data: any;\n placeholderKeys: string[] = [];\n resolvePlaceholderKey: string | undefined;\n\n public constructor(init?: Partial<NhJsonLdDataItem>) {\n Object.assign(this, init);\n }\n}\nexport class NhJsonLdData {\n items: NhJsonLdDataItem[] = [];\n\n public constructor(init?: Partial<NhJsonLdData>) {\n Object.assign(this, init);\n }\n}\n\nexport class JsonLdDataChanged {\n data: NhJsonLdData = new NhJsonLdData();\n\n public constructor(init?: Partial<JsonLdDataChanged>) {\n Object.assign(this, init);\n }\n}\n\nconst RESOLVE_PREFIX = '%%';\nconst RESOLVE_SUFFIX = RESOLVE_PREFIX;\nexport const REVIEW_AGGREGATE_RATING_KEY = (id: string | undefined) => `${RESOLVE_PREFIX}reviewAggregate-${id}${RESOLVE_SUFFIX}`;\nexport const REVIEW_KEY = (id: string | undefined) => `${RESOLVE_PREFIX}review-${id}${RESOLVE_SUFFIX}`;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhJsonLdService {\n private data: NhJsonLdData;\n public readonly dataSubject: BehaviorSubject<JsonLdDataChanged>;\n\n constructor() {\n this.data = new NhJsonLdData();\n this.dataSubject = new BehaviorSubject<JsonLdDataChanged>(new JsonLdDataChanged({\n data: this.data\n }));\n }\n\n getData(): NhJsonLdData {\n return this.data;\n }\n\n private _addItem(item: NhJsonLdDataItem) {\n this._removeItem(item.id);\n this.data.items.push(item);\n }\n\n private _removeItem(itemId: string) {\n this.data.items = this.data.items.filter(x => x.id !== itemId);\n }\n\n addItem(item: NhJsonLdDataItem) {\n this._addItem(item);\n this.dataSubject.next(new JsonLdDataChanged({\n data: this.data\n }));\n }\n\n removeItem(itemId: string) {\n this._removeItem(itemId);\n this.dataSubject.next(new JsonLdDataChanged({\n data: this.data\n }));\n }\n\n clear() {\n this.data.items = [];\n this.dataSubject.next(new JsonLdDataChanged({\n data: this.data\n }));\n }\n\n build(): any {\n const items: any[] = [];\n\n for (const item of this.data.items) {\n if (!item.data) {\n continue;\n }\n\n if ((item.resolvePlaceholderKey?.length ?? 0) > 0) {\n // Not a root item\n continue;\n }\n\n this._resolvePlaceholderKeys(item);\n items.push(item.data);\n }\n\n return {\n '@context': 'https://schema.org/',\n '@graph': items\n };\n }\n\n private _resolvePlaceholderKeys(item: NhJsonLdDataItem): any {\n if (!item.placeholderKeys.length) {\n return;\n }\n\n for (const placeholderKey of item.placeholderKeys) {\n let placeholderItem = this.data.items.find(x => x.resolvePlaceholderKey === placeholderKey);\n if (!placeholderItem) {\n // Add empty item so that the temp key is replaced\n placeholderItem = new NhJsonLdDataItem();\n }\n\n if (placeholderItem.placeholderKeys.length) {\n this._resolvePlaceholderKeys(placeholderItem);\n }\n\n let foundMatch = false;\n for (const dataKey in item.data) {\n const dataValue = item.data[dataKey];\n if (dataValue !== placeholderKey) {\n continue;\n }\n\n item.data[dataKey] = placeholderItem.data;\n foundMatch = true;\n break;\n }\n\n if (foundMatch) {\n continue;\n }\n\n // Did not find a match, so must be added at root level of the item data\n item.data = {...item.data, ...placeholderItem.data};\n }\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {Inject, Injectable, OnDestroy, Optional, PLATFORM_ID, REQUEST_CONTEXT, TransferState} from \"@angular/core\";\nimport {BehaviorSubject, lastValueFrom} from \"rxjs\";\nimport {Base64} from \"js-base64\";\nimport {isPlatformBrowser, isPlatformServer} from \"@angular/common\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {NhCommonConfig, NhCommonConfigChanged, NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhAuthService} from \"./nh-auth.service\";\nimport {NhCookieService} from \"./nh-cookie.service\";\nimport {languageToCultureMap} from \"../util/nh-common-util\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhConfigCommonService implements OnDestroy {\n private static STORAGE_KEY = 'test_app_ac';\n private static COOKIE_KEY_LANGUAGE_CODE = 'shop.userLanguage';\n private didInitialize: boolean = false;\n private readonly localStorage?: Storage;\n private config: NhCommonConfig;\n public readonly configSubject: BehaviorSubject<NhCommonConfigChanged>;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(REQUEST_CONTEXT) private requestContext: any,\n private authService: NhAuthService,\n private translateService: TranslateService,\n private cookieService: NhCookieService,\n private commonModuleConfig: NhCommonModuleConfig\n ) {\n this.localStorage = this.document.defaultView?.localStorage as Storage;\n this.config = this.getConfig(false);\n this.configSubject = new BehaviorSubject<NhCommonConfigChanged>(new NhCommonConfigChanged({ config: this.config }));\n }\n\n async ngOnDestroy() {\n }\n\n\n\n async initialize() {\n if(this.didInitialize) {\n return;\n }\n\n const config = this.getConfig();\n\n config.languageCode = this.resolveInitialLanguageCode();\n\n this.translateService.onLangChange.subscribe(async () => {\n if(isPlatformBrowser(this.platformId)) {\n this.cookieService.set(NhConfigCommonService.COOKIE_KEY_LANGUAGE_CODE, this.config.languageCode, { sameSite: 'Strict', domain: this.commonModuleConfig.cookieDomain });\n }\n\n this.commonModuleConfig.language = this.config.languageCode;\n this.commonModuleConfig.culture = (<any>languageToCultureMap)[this.config.languageCode];\n });\n\n this.translateService.setFallbackLang(this.commonModuleConfig.defaultLanguage);\n await lastValueFrom(this.translateService.use(this.config.languageCode));\n this.commonModuleConfig.culture = (<any>languageToCultureMap)[this.config.languageCode];\n\n if(isPlatformBrowser(this.platformId)) {\n this.cookieService.set(NhConfigCommonService.COOKIE_KEY_LANGUAGE_CODE, this.config.languageCode, { sameSite: 'Strict', domain: this.commonModuleConfig.cookieDomain });\n }\n\n this.didInitialize = true;\n }\n\n public getInitialConfig(): NhCommonConfig {\n return new NhCommonConfig({\n languageCode: this.commonModuleConfig.defaultLanguage,\n culture: this.commonModuleConfig.defaultCulture,\n });\n }\n\n private resolveInitialLanguageCode(): string {\n const url = new URL(this.document.URL);\n let languageCode = this.commonModuleConfig.defaultLanguage;\n const urlPaths = url.pathname.split('/').filter(x => x?.trim() !== undefined && x?.trim() !== '');\n\n const getLanguageCookieValue = () => {\n return this.cookieService.get(NhConfigCommonService.COOKIE_KEY_LANGUAGE_CODE);\n };\n\n const resolver = () => {\n if(isPlatformServer(this.platformId)) {\n // Server side: the custom cookie we set our self with a fallback to the request accept language header, and the last fallback to the default language.\n try {\n languageCode = getLanguageCookieValue() ?? (<any>this?.requestContext?.request?.headers)['accept-language']?.toString()?.trim()?.substring(0, 2) ?? this.commonModuleConfig.defaultLanguage;\n } catch {\n languageCode = getLanguageCookieValue() ?? this?.requestContext?.request?.headers?.get('accept-language')?.toString()?.trim()?.substring(0, 2) ?? this.commonModuleConfig.defaultLanguage;\n }\n\n } else if(isPlatformBrowser(this.platformId)) {\n // Client side: the custom cookie we set our self with a fallback to the browser language, and the last fallback to the default language.\n languageCode = getLanguageCookieValue() ?? navigator.language ?? this.commonModuleConfig.defaultLanguage;\n } else {\n languageCode = this.commonModuleConfig.defaultLanguage;\n }\n };\n\n const isHomepage = urlPaths.length <= 0;\n if(isHomepage) {\n // We don't have a language code in the URL, so we need to determine the language code based on;\n resolver();\n } else {\n // If it is not the homepage, we always have a language code in the URL.\n // This means segment position 0 is the language code.\n languageCode = urlPaths[0];\n }\n\n languageCode = (languageCode ?? this.commonModuleConfig.defaultLanguage).trim().toLowerCase();\n if(languageCode.length > 2) {\n languageCode = this.commonModuleConfig.defaultLanguage;\n }\n\n if(languageCode.length != 2) {\n // Looks like we failed to get a nice language code, so we fall back to the default language.\n languageCode = this.commonModuleConfig.defaultLanguage;\n }\n\n let isSupportedLanguageCode = this.commonModuleConfig.supportedLanguages.some(x => x === languageCode);\n if(!isSupportedLanguageCode) {\n resolver();\n }\n\n // Check again, navigator or accept lang etc may be non-supported.\n isSupportedLanguageCode = this.commonModuleConfig.supportedLanguages.some(x => x === languageCode);\n if(!isSupportedLanguageCode) {\n languageCode = this.commonModuleConfig.defaultLanguage;\n }\n\n return languageCode;\n }\n\n public resetConfig(): void {\n if(!isPlatformServer(this.platformId)) {\n this.localStorage!.removeItem(NhConfigCommonService.STORAGE_KEY);\n }\n this.config = this.getInitialConfig();\n this.setConfig(this.config);\n }\n\n public setConfig(config: NhCommonConfig): void {\n const changed = new NhCommonConfigChanged();\n\n if(!isPlatformServer(this.platformId)) {\n this.localStorage!.setItem(NhConfigCommonService.STORAGE_KEY, Base64.encode((JSON.stringify(config))));\n }\n\n this.config = config;\n changed.config = this.config;\n\n this.configSubject?.next(changed);\n }\n\n public getConfig(fromCache: boolean = true): NhCommonConfig {\n let config = this.config;\n if (!fromCache) {\n const configString = isPlatformServer(this.platformId) ? undefined : this.localStorage!.getItem(NhConfigCommonService.STORAGE_KEY);\n if (configString) {\n this.config = JSON.parse(Base64.decode(configString));\n } else {\n this.resetConfig();\n }\n\n config = this.config;\n }\n\n return config;\n }\n\n public async changeLanguage(newLanguageCode: string): Promise<void> {\n const currentLang = this.translateService.currentLang;\n if(newLanguageCode === currentLang) {\n return;\n }\n\n let isSupportedLanguageCode = this.commonModuleConfig.supportedLanguages.some(x => x === newLanguageCode);\n if(!isSupportedLanguageCode) {\n newLanguageCode = this.commonModuleConfig.defaultLanguage;\n }\n\n this.config.languageCode = newLanguageCode;\n this.setConfig(this.config);\n await lastValueFrom(this.translateService.use(newLanguageCode));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhTitleService {\n public title: BehaviorSubject<string>;\n\n constructor(private titleService: Title) {\n this.title = new BehaviorSubject<string>(titleService.getTitle());\n }\n\n setTitle(title: string) {\n this.titleService.setTitle(title);\n this.title.next(title);\n }\n}\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { Meta, MetaDefinition } from '@angular/platform-browser';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhMetaService {\n private _renderer: Renderer2;\n\n constructor(\n private angularMetaService: Meta,\n private _rendererFactory: RendererFactory2\n ) {\n this._renderer = this._rendererFactory.createRenderer(null, null);\n }\n\n addTag(tag: MetaDefinition, forceCreation?: boolean): HTMLMetaElement | null {\n NhMetaService.processMetaTags([tag]);\n return this.angularMetaService.addTag(tag, forceCreation);\n }\n addTags(tags: MetaDefinition[], forceCreation?: boolean): HTMLMetaElement[] {\n NhMetaService.processMetaTags(tags);\n return this.angularMetaService.addTags(tags, forceCreation);\n }\n getTag(attrSelector: string): HTMLMetaElement | null {\n return this.angularMetaService.getTag(attrSelector);\n }\n getTags(attrSelector: string): HTMLMetaElement[] {\n return this.angularMetaService.getTags(attrSelector);\n }\n updateTag(tag: MetaDefinition, selector?: string): HTMLMetaElement | null {\n NhMetaService.processMetaTags([tag]);\n return this.angularMetaService.updateTag(tag, selector);\n }\n\n removeTag(attrSelector: string): void {\n this.angularMetaService.removeTag(attrSelector);\n }\n\n removeTags(attrSelector: string): void {\n const tags = this.getTags(attrSelector);\n for (const tag of tags) {\n this.angularMetaService.removeTagElement(tag);\n }\n }\n\n removeTagElement(meta: HTMLMetaElement): void {\n this.angularMetaService.removeTagElement(meta);\n }\n\n stripHtml(html: string): string {\n const tmp = this._renderer.createElement('div');\n this._renderer.setProperty(tmp, 'innerHTML', html ?? '');\n\n return tmp.textContent ?? tmp.innerText ?? '';\n }\n\n private static processMetaTags(tags: MetaDefinition[], maxLength: number = 200, replacementText: string = '...') {\n for (const tag of tags) {\n if (tag.name?.trim().toLowerCase() === 'description'\n || tag.property?.trim().toLowerCase() === 'og:description') {\n if ((tag.content?.length ?? 0) > maxLength) {\n tag.content = tag.content!.slice(0, maxLength - replacementText.length) + replacementText;\n }\n }\n }\n }\n}\n","import {Injectable, Type} from '@angular/core';\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n CanActivateChildFn,\n CanActivateFn, CanMatchFn, Data, DefaultExport,\n LoadChildren, NavigationEnd, NavigationSkipped, NavigationSkippedCode, RedirectFunction,\n Route, Router, Routes, UrlMatchResult, UrlSegment, UrlSegmentGroup,\n} from \"@angular/router\";\nimport {NhCommonModuleConfig} from \"../models/config.models\";\nimport {filter, map, Observable} from \"rxjs\";\nimport {NhRouterLink} from \"../models/misc.models\";\n\nexport class NhRoute {\n language!: string;\n path!: string;\n\n public constructor(init?: Partial<NhRoute>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhRegisterRoute {\n id!: string;\n parentIds: string[]|undefined = []; // Should be in order of parent to child\n routes: NhRoute[] = [];\n children?: Routes;\n loadChildren?: LoadChildren;\n component?: Type<any>;\n loadComponent?: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>;\n canActivate?: Array<CanActivateFn>;\n canMatch?: Array<CanMatchFn>;\n canActivateChild?: Array<CanActivateChildFn>;\n redirectTo?: string | RedirectFunction;\n pathMatch?: 'prefix' | 'full';\n data?: Data;\n excludeFromSitemap?: boolean;\n\n public constructor(init?: Partial<NhRegisterRoute>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhRouteInfo {\n id!: string;\n parentIds: string[]|undefined;\n activeRoute!: NhRoute;\n routes: NhRoute[] = [];\n excludeFromSitemap?: boolean;\n\n public constructor(init?: Partial<NhRouteInfo>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhRouteNavigationItem {\n id!: string;\n path!: string;\n route!: Route;\n parent: NhRouteNavigationItem|undefined;\n children: NhRouteNavigationItem[] = [];\n\n public constructor(init?: Partial<NhRouteNavigationItem>) {\n Object.assign(this, init);\n }\n\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhRouterSetupService {\n public static readonly Nh_ROUTE_DATA_KEY = '__nh_route_data_key__';\n private supportedLanguages: string[] = [];\n private defaultLanguage: string = '';\n private activeLanguage: string = '';\n private lastKnownActivatedRoute: ActivatedRoute | undefined;\n private registeredRoutes: Routes = [];\n private rootRouteNavigationItem: NhRouteNavigationItem = new NhRouteNavigationItem();\n\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private translateService: TranslateService\n ) {\n this.activeLanguage = this.translateService.currentLang;\n this.translateService.onLangChange.subscribe((langChangeEvent) => {\n this.activeLanguage = langChangeEvent.lang;\n });\n }\n\n public getRootRouteNavigationItem(): NhRouteNavigationItem {\n return this.rootRouteNavigationItem;\n }\n\n private getNormalizedNavigationItemId(id: string): string {\n if(id.startsWith('/')) {\n id = id.substring(1);\n }\n\n if(id.endsWith('/')) {\n id = id.substring(0, id.length - 1);\n }\n\n if(!id.startsWith('root/')) {\n id = 'root/' + id;\n }\n\n return id;\n }\n\n public getRouteNavigationItem(nhRouterLink: NhRouterLink): NhRouteNavigationItem|undefined {\n const id = this.getNormalizedNavigationItemId(nhRouterLink.id);\n const search = (item: NhRouteNavigationItem): NhRouteNavigationItem|undefined => {\n if(item.id === id) {\n return item;\n }\n\n for(const child of item.children) {\n const result = search(child);\n if(result) {\n return result;\n }\n }\n\n return undefined;\n };\n\n return search(this.rootRouteNavigationItem);\n }\n\n public createUrlForNavigationItem(nhRouterLink: NhRouterLink): string {\n const navigationItem = this.getRouteNavigationItem(nhRouterLink);\n if(!navigationItem) {\n throw new Error(`Navigation item with id ${nhRouterLink.id} not found.`);\n }\n\n const language = nhRouterLink.language ?? this.translateService.currentLang;\n const parts: string[] = [];\n let current: NhRouteNavigationItem|undefined = navigationItem;\n while(current) {\n const nhRouteInfo = (<any>current.route).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n const nhRoute = nhRouteInfo.routes.find(x => x.language === language);\n if(!nhRoute) {\n throw new Error(`No route found for language ${language}`);\n }\n parts.unshift(nhRoute!.path);\n current = current.parent;\n }\n\n let resolvedPath = '/' + parts.filter(x => x.trim() !== '').join('/');\n\n if(nhRouterLink.arguments) {\n for(const key of Object.keys(nhRouterLink.arguments)) {\n resolvedPath = resolvedPath.replace(`:${key}`, nhRouterLink.arguments[key]);\n }\n }\n\n return resolvedPath;\n }\n\n public setDefaultLanguage(language: string): void {\n this.defaultLanguage = language;\n }\n\n public getDefaultLanguage(): string {\n return this.defaultLanguage;\n }\n\n public setSupportedLanguages(languages: string[]): void {\n this.supportedLanguages = languages;\n }\n\n public getRouteTranslationKey(path: string) {\n return `_nh_route_path_${path}`;\n }\n\n public createRoute(options: NhRegisterRoute): Route[] {\n for(const supportedLanguage of this.supportedLanguages) {\n if(!options.routes.find(x => x.language === supportedLanguage)) {\n throw new Error(`No route found for supported language ${supportedLanguage}. All supported languages must have a route defined.`);\n }\n }\n\n const routes: Route[] = [];\n\n for(const supportedLanguage of this.supportedLanguages) {\n const route: Route = {\n path: undefined,\n pathMatch: options.pathMatch,\n data: options.data ?? {},\n canActivate: options.canActivate,\n children: options.children,\n loadChildren: options.loadChildren,\n component: options.component,\n loadComponent: options.loadComponent,\n canMatch: options.canMatch,\n canActivateChild: options.canActivateChild,\n redirectTo: options.redirectTo,\n };\n\n const nhRouteData = new NhRouteInfo({\n id: options.id,\n parentIds: options.parentIds,\n activeRoute: options.routes.find(x => x.language === supportedLanguage),\n routes: options.routes,\n excludeFromSitemap: options.excludeFromSitemap\n });\n\n route.path = nhRouteData.activeRoute.path;\n (<any>route.data)[NhRouterSetupService.Nh_ROUTE_DATA_KEY] = nhRouteData;\n\n this.registeredRoutes.push(route);\n routes.push(route);\n }\n\n return routes;\n }\n\n public processRegisteredRoutes() {\n const routes = this.registeredRoutes;\n\n const processRoutes = (route: Route, parentIds: string[], parentRouteNavigationItem: NhRouteNavigationItem|undefined, routeNavigationItem: NhRouteNavigationItem) => {\n const primaryLang = 'en';\n const nhRouteInfo = (<any>route).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n const myId = nhRouteInfo.id;\n const newParentIds = [...parentIds, myId];\n const searchId = newParentIds.join('/');\n const childRoutes = routes.filter(x => (<any>x).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY].parentIds?.join('/') === searchId) as Routes;\n\n const resolvePath = (): string => {\n const nhEngRoute = nhRouteInfo.routes.find(x => x.language === primaryLang);\n if(myId === 'root') {\n return '';\n }\n\n const pathParts: string[] = [nhEngRoute!.path ?? ''];\n\n if(parentRouteNavigationItem) {\n let currentParent: NhRouteNavigationItem|undefined = parentRouteNavigationItem;\n while(currentParent) {\n const currentParentNhRouteInfo = (<any>currentParent.route).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n const currentParentNhEngRoute = currentParentNhRouteInfo.routes.find(x => x.language === primaryLang);\n\n let currentParentNhEngRoutePath = currentParentNhEngRoute?.path ?? '';\n if(currentParentNhRouteInfo.id === 'root') {\n currentParentNhEngRoutePath = '';\n }\n pathParts.unshift(currentParentNhEngRoutePath);\n currentParent = currentParent.parent;\n }\n }\n\n return '/' + pathParts.filter(x => x.trim() !== '' && x).join('/');\n };\n\n routeNavigationItem.id = searchId;\n routeNavigationItem.path = resolvePath();\n routeNavigationItem.route = route;\n routeNavigationItem.parent = parentRouteNavigationItem;\n routeNavigationItem.children = [];\n\n for(const childRoute of childRoutes) {\n const childNavigationItem = new NhRouteNavigationItem();\n\n routeNavigationItem.children.push(childNavigationItem);\n processRoutes(childRoute, newParentIds, routeNavigationItem, childNavigationItem);\n }\n };\n\n const rootRoute = routes.find(x => (<any>x).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY].id === 'root') as Route;\n const routeNavRootItem = new NhRouteNavigationItem();\n\n processRoutes(rootRoute, [], undefined, routeNavRootItem);\n this.rootRouteNavigationItem = routeNavRootItem;\n }\n\n public static rootRoute(activatedRoute: ActivatedRoute): ActivatedRoute {\n while (activatedRoute.firstChild) {\n activatedRoute = activatedRoute.firstChild;\n }\n return activatedRoute;\n }\n}\n","import {Inject, Injectable, InjectionToken, Optional, REQUEST_CONTEXT, Type} from '@angular/core';\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationBehaviorOptions,\n NavigationEnd,\n NavigationExtras,\n NavigationSkipped,\n NavigationSkippedCode,\n NavigationStart,\n Router,\n Routes,\n UrlCreationOptions,\n UrlTree,\n} from \"@angular/router\";\nimport {NhCommonModuleConfig} from \"../models/config.models\";\nimport {filter, map} from \"rxjs\";\nimport {NhRouteInfo, NhRouteNavigationItem, NhRouterSetupService} from \"./nh-router-setup.service\";\nimport {NhRouterLink} from \"../models/misc.models\";\n\nexport const NH_ROUTER_ROOT_ROUTES = new InjectionToken<() => Routes>('NhRouterRootRoutes');\nexport const NH_ROUTER_LANGUAGE_CHANGE_METHOD = new InjectionToken<(newLanguage: string) => Promise<void>>('NhRouterLanguageChangeMethod');\n\nexport class NhBreadCrumbItem {\n text!: string;\n nhRouterLink?: NhRouterLink;\n\n public constructor(init?: Partial<NhBreadCrumbItem>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhBreadCrumb {\n renderedItems?: string;\n items: NhBreadCrumbItem[] = [];\n public constructor(init?: Partial<NhBreadCrumb>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhSitemapEntryItem {\n language!: string;\n isPrimary!: boolean;\n path!: string;\n\n public constructor(init?: Partial<NhSitemapEntryItem>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhSitemapEntry {\n id!: string;\n items: NhSitemapEntryItem[] = [];\n public constructor(init?: Partial<NhSitemapEntry>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhSitemap {\n entries: NhSitemapEntry[] = [];\n public constructor(init?: Partial<NhSitemap>) {\n Object.assign(this, init);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhRouterService {\n private activeLanguage: string = '';\n private lastKnownActivatedRoute: ActivatedRoute | undefined;\n\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private translateService: TranslateService,\n private routerSetupService: NhRouterSetupService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n @Optional() @Inject(NH_ROUTER_ROOT_ROUTES) private getRootRoutes: () => Routes,\n @Optional() @Inject(NH_ROUTER_LANGUAGE_CHANGE_METHOD) private changeLanguageMethod: (newLanguage: string) => Promise<void>,\n @Optional() @Inject(REQUEST_CONTEXT) private requestContext: any\n ) {\n this.activeLanguage = this.translateService.currentLang;\n this.translateService.onLangChange.subscribe((langChangeEvent) => {\n this.activeLanguage = langChangeEvent.lang;\n });\n\n this.router.events.pipe(\n filter((event) => (event instanceof NavigationEnd || (event instanceof NavigationSkipped && event.code === NavigationSkippedCode.IgnoredSameUrlNavigation))),\n map(() => NhRouterSetupService.rootRoute(this.activatedRoute)),\n filter((route: ActivatedRoute) => route.outlet === 'primary'),\n ).subscribe(async (route: ActivatedRoute) => {\n this.lastKnownActivatedRoute = route;\n });\n\n if(this?.requestContext?.response) {\n this.router.events.subscribe(async event => {\n if (event instanceof NavigationStart\n && this.moduleConfig.language !== this.moduleConfig.defaultLanguage) {\n if(event.url?.trim() === '/' || event.url?.trim() === '') {\n this.redirectServer(`/${this.moduleConfig.language}`);\n }\n }\n });\n }\n\n }\n\n public redirectServer(location: string, statusCode: number = 301) {\n if(this?.requestContext?.response) {\n (<any>this?.requestContext?.response).setHeader('Location', location);\n (<any>this?.requestContext?.response).statusCode = statusCode;\n }\n }\n\n public platformSpecificRedirect(location: NhRouterLink, statusCode: number = 301) {\n if(this?.requestContext?.response) {\n\n const url = this.createUrlForNavigationItem(location);\n console.log('Server side redirect: ' + url);\n this.redirectServer(url, statusCode);\n } else {\n this.navigate(location).then();\n }\n }\n\n public notFound() {\n this.platformSpecificRedirect({id: 'home/not-found'}, 301);\n }\n\n getActivatedNhLink(activatedRouteSnapshot:ActivatedRouteSnapshot) {\n if(activatedRouteSnapshot === null) {\n throw new Error('activatedRouteSnapshot is null');\n }\n\n let id = '';\n const nhRouteData = activatedRouteSnapshot.data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n\n if(nhRouteData.parentIds) {\n for(let i = 1; i < nhRouteData.parentIds!.length; i++) {\n id += nhRouteData.parentIds![i] + '/';\n }\n }\n\n const nhRouterLink = <NhRouterLink>{\n id: id + nhRouteData.id,\n arguments: activatedRouteSnapshot.params,\n }\n return nhRouterLink;\n }\n\n createUrlForNavigationItem(nhRouterLink: NhRouterLink): string {\n return this.routerSetupService.createUrlForNavigationItem(nhRouterLink);\n }\n\n async navigate(nhRouterLink: NhRouterLink, navigationExtras?: NavigationExtras) {\n if(nhRouterLink && nhRouterLink.language && nhRouterLink.language !== this.translateService.currentLang) {\n if(!this.changeLanguageMethod) {\n throw new Error('Nh_ROUTER_LANGUAGE_CHANGE_METHOD is not defined via DI injection token.');\n }\n // We detected a language change, change the language and reload the routes so navigation works.\n await this.changeLanguageMethod(nhRouterLink.language);\n this.reloadRoutes();\n }\n\n const url = this.createUrlForNavigationItem(nhRouterLink);\n\n return await this.router.navigate([url], navigationExtras);\n }\n\n createUrlTree(nhRouterLink: NhRouterLink, navigationExtras?: UrlCreationOptions): UrlTree {\n const plainUrlTree = this.router.parseUrl(this.createUrlForNavigationItem(nhRouterLink));\n const url = this.router.serializeUrl(plainUrlTree);\n\n return this.router.createUrlTree([url], navigationExtras);\n }\n\n parseUrl(nhRouterLink: NhRouterLink, navigationExtras?: UrlCreationOptions): UrlTree {\n const plainUrlTree = this.router.parseUrl(this.createUrlForNavigationItem(nhRouterLink));\n const url = this.router.serializeUrl(plainUrlTree);\n\n return this.router.createUrlTree([url], navigationExtras);\n }\n\n serializeUrl(nhRouterLink: NhRouterLink, navigationExtras?: UrlCreationOptions): string {\n const url = this.router.serializeUrl(this.parseUrl(nhRouterLink));\n return this.router.serializeUrl(this.router.createUrlTree([url], navigationExtras));\n }\n\n async getRoutePathForLanguage(activatedRouteSnapshot: ActivatedRouteSnapshot|null, language: string): Promise<string> {\n //\n // TODO: due to route params, we want to access an API service that reads our current url and returns it from (for example) the Sitemap API.\n //\n if(activatedRouteSnapshot === null) {\n throw new Error('activatedRouteSnapshot is null');\n }\n\n let newRoutePaths: string[] = [];\n do {\n if((activatedRouteSnapshot?.url?.length ?? 0) < 1) {\n activatedRouteSnapshot = activatedRouteSnapshot?.parent;\n continue;\n }\n\n let path = '';\n if(activatedRouteSnapshot.data && activatedRouteSnapshot.data[NhRouterSetupService.Nh_ROUTE_DATA_KEY]) {\n const nhRouteData = activatedRouteSnapshot.data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n const route = nhRouteData.routes.find(r => r.language === language);\n path = route!.path;\n } else {\n path = activatedRouteSnapshot.routeConfig?.path || '';\n }\n\n // Resolve route params (/some/path/:id/:name) back to actual values\n const sourceRouteParamsMap = activatedRouteSnapshot.paramMap;\n if(sourceRouteParamsMap.keys.length > 0) {\n for(const key of sourceRouteParamsMap.keys) {\n path = path.replace(`:${key}`, sourceRouteParamsMap.get(key) ?? '');\n }\n }\n\n const pathParts = path.split('/').map(x => x?.trim()).filter(x => (x?.length ?? 0) > 0).reverse();\n for(const pathPart of pathParts) {\n newRoutePaths.unshift(pathPart);\n }\n activatedRouteSnapshot = activatedRouteSnapshot.parent;\n } while (activatedRouteSnapshot?.parent);\n\n newRoutePaths = newRoutePaths.filter(x => (x.length ?? 0) > 0);\n\n if(language !== this.routerSetupService.getDefaultLanguage()) {\n if(newRoutePaths.length > 0 && newRoutePaths[0] !== language) {\n newRoutePaths.unshift(language);\n } else {\n newRoutePaths.unshift(language);\n }\n }\n\n const newUrlTree = this.router.createUrlTree(newRoutePaths, {\n queryParams: activatedRouteSnapshot!.queryParams,\n fragment: activatedRouteSnapshot?.fragment ?? undefined\n });\n\n let url = this.router.serializeUrl(newUrlTree);\n const rootRouteDefaultLanguageDetected = newRoutePaths.length === 0;\n if(rootRouteDefaultLanguageDetected) {\n url = url.split('/')[0];\n }\n\n return url;\n }\n\n async navigateToLanguage(language: string): Promise<void> {\n if(!this.lastKnownActivatedRoute?.snapshot) {\n throw new Error('lastKnownActivatedRoute is null');\n }\n\n const routePath = await this.getRoutePathForLanguage(this.lastKnownActivatedRoute?.snapshot, language);\n this.reloadRoutes();\n await this.router.navigateByUrl(routePath);\n }\n\n public reloadRoutes(){\n if(!this.getRootRoutes) {\n throw new Error('Nh_ROUTER_ROOT_ROUTES is not defined via DI injection token.');\n }\n\n const newRootRoutes = this.getRootRoutes();\n this.router.resetConfig(newRootRoutes);\n }\n\n //\n // DO NOT USE -> USE THE ONE FROM THE APP-PAGE SERVICE\n //\n async getBreadcrumb(activatedRouteSnapshot: ActivatedRouteSnapshot|null): Promise<NhBreadCrumb> {\n const breadCrumb = new NhBreadCrumb({\n items: []\n });\n\n if(activatedRouteSnapshot === null) {\n throw new Error('activatedRouteSnapshot is null');\n }\n\n do {\n if((activatedRouteSnapshot?.url?.length ?? 0) < 1) {\n activatedRouteSnapshot = activatedRouteSnapshot?.parent;\n continue;\n }\n\n const nhLink = this.getActivatedNhLink(activatedRouteSnapshot);\n if(nhLink.id === 'root') {\n break;\n }\n\n const crumbHref = await this.getRoutePathForLanguage(activatedRouteSnapshot, this.activeLanguage);\n\n if(!crumbHref) {\n activatedRouteSnapshot = activatedRouteSnapshot?.parent;\n continue;\n }\n\n let crumbText = '';\n if(activatedRouteSnapshot.data && activatedRouteSnapshot.data['breadcrumb']) {\n crumbText = this.translateService.instant(activatedRouteSnapshot.data['breadcrumb'] as string);\n } else {\n crumbText = nhLink.id;\n }\n\n const crumb = new NhBreadCrumbItem({\n nhRouterLink: nhLink,\n text: crumbText ?? '',\n });\n\n breadCrumb.items.unshift(crumb);\n\n activatedRouteSnapshot = activatedRouteSnapshot.parent;\n } while (activatedRouteSnapshot?.parent);\n\n return breadCrumb;\n }\n\n createSitemap() {\n const sitemap: NhSitemap = new NhSitemap();\n\n const processRoute = (item: NhRouteNavigationItem) => {\n const nhRouteInfo = (<any>item.route).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n\n if(nhRouteInfo.excludeFromSitemap) {\n return;\n }\n\n for(const route of nhRouteInfo.routes) {\n if((item.children?.length ?? 0) < 1 && (item.route.component || item.route.loadComponent)) {\n\n if(!this.moduleConfig.supportedLanguages?.find(x => x === route.language)) {\n continue;\n }\n\n let path = this.createUrlForNavigationItem({ id: item.id, language: route.language });\n\n if(path.includes(':') || path.includes('?') || item.id === 'root/home/sitemap-xml') {\n continue;\n }\n\n if(!path.startsWith('/')) {\n path = '/' + path;\n }\n\n let sitemapEntry = sitemap.entries.find(x => x.id === item.id);\n if(!sitemapEntry) {\n sitemapEntry = new NhSitemapEntry({ id: item.id });\n sitemap.entries.push(sitemapEntry);\n }\n\n let sitemapEntryItem = sitemapEntry.items.find(x => x.language === route.language);\n if(!sitemapEntryItem) {\n sitemapEntryItem = new NhSitemapEntryItem({\n path: path,\n language: route.language,\n isPrimary: route.language === this.routerSetupService.getDefaultLanguage()\n });\n\n sitemapEntry.items.push(sitemapEntryItem);\n }\n }\n }\n\n for(const child of item.children) {\n processRoute(child);\n }\n };\n\n const rootRoute = this.routerSetupService.getRootRouteNavigationItem();\n processRoute(rootRoute);\n\n return sitemap;\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n ApplicationRef,\n Inject,\n Injectable,\n OnDestroy,\n PLATFORM_ID\n} from \"@angular/core\";\n\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {Subject, Subscription} from \"rxjs\";\nimport {NhConfigCommonService} from \"./nh-config.service\";\nimport {ActivatedRouteSnapshot, NavigationExtras} from \"@angular/router\";\nimport {NhJsonLdData, NhJsonLdService} from \"./nh-json-ld.service\";\nimport { NhAuthorization } from \"../models/auth.models\";\nimport {NhCommonConfig, NhCommonConfigChanged, NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhAppService} from \"./nh-app.service\";\nimport {NhAuthService} from \"./nh-auth.service\";\nimport {NhTitleService} from \"./nh-title.service\";\nimport {NhBreadCrumb, NhRouterService} from \"./nh-router.service\";\nimport {NhMetaService} from \"./nh-meta.service\";\nimport {NhRouterLink} from \"../models/misc.models\";\n\nexport class NhPageSettings {\n title: string = '';\n description: string = '';\n jsonLdData: NhJsonLdData = new NhJsonLdData();\n breadCrumbOverrideText?: (currentText: string) => string;\n pageData: any;\n\n public constructor(init?: Partial<NhPageSettings>) {\n Object.assign(this, init);\n }\n}\n\nexport class TypedNhPageSettings<TPageData> extends NhPageSettings {\n override pageData: TPageData|undefined;\n\n public constructor(init?: Partial<TypedNhPageSettings<TPageData>>) {\n super();\n Object.assign(this, init);\n }\n}\n\nconst Nh_PAGE_SETTINGS_TRANSFER_STATE_KEY = 'Nh_PAGE_SETTINGS_TRANSFER_STATE_KEY';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhPageService implements OnDestroy {\n private $appRefIsStable: Subscription|undefined;\n private $auth: Subscription;\n private authorization: NhAuthorization | undefined;\n private $config: Subscription;\n private config: NhCommonConfig = this.configService.getConfig();\n public activePageSettings: NhPageSettings = new NhPageSettings();\n private didRestoreTransferState: boolean = false;\n public readonly breadcrumbUpdateRequest = new Subject<void>();\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n private moduleConfig: NhCommonModuleConfig,\n private appRef: ApplicationRef,\n private nhAppService: NhAppService,\n private configService: NhConfigCommonService,\n private authService: NhAuthService,\n private translateService: TranslateService,\n private titleService: NhTitleService,\n private metaService: NhMetaService,\n private jsonLdService: NhJsonLdService,\n private routerService: NhRouterService\n ) {\n this.$config = this.configService.configSubject.subscribe(async (configChanged) => {\n await this.configChanged(configChanged);\n });\n\n this.$auth = this.authService.authSubject.subscribe(async (authorization) => {\n await this.authChanged(authorization);\n });\n\n this.$appRefIsStable = this.appRef.isStable.subscribe((isStable) => {\n if(isStable) {\n if(this.isPlatformServer()) {\n this.updateTransferState();\n } else {\n // If No page with transferstate is loaded initially, mark as restored to (extra) prevent storing the state on a new page.\n // We only want to restore the initial render from server on first page.\n if(!this.didRestoreTransferState) {\n this.didRestoreTransferState = true;\n }\n }\n }\n });\n }\n\n public restoreTransferState() {\n if(this.isPlatformBrowser() && !this.didRestoreTransferState) {\n const activePageSettings = this.nhAppService.getStateTransferData(Nh_PAGE_SETTINGS_TRANSFER_STATE_KEY);\n if(activePageSettings) {\n this.activePageSettings = <any>activePageSettings;\n }\n this.didRestoreTransferState = true;\n }\n }\n\n public updateTransferState() {\n this.nhAppService.setStateTransferData(Nh_PAGE_SETTINGS_TRANSFER_STATE_KEY, this.activePageSettings);\n }\n\n isPlatformServer(): boolean {\n return this.nhAppService.isPlatformServer();\n }\n\n isPlatformBrowser(): boolean {\n return this.nhAppService.isPlatformBrowser();\n }\n\n isPlatformBrowserInitial() {\n return this.nhAppService.isPlatformBrowserInitial();\n }\n\n originatedFromServer(): boolean {\n return this.nhAppService.originatedFromServer();\n }\n\n isAppStable(): boolean {\n return this.nhAppService.isAppStable();\n }\n\n async ngOnDestroy() {\n await this.clear();\n this.$config?.unsubscribe();\n this.$auth?.unsubscribe();\n this.$appRefIsStable?.unsubscribe();\n }\n\n private async authChanged(authorization: NhAuthorization | undefined) {\n this.authorization = authorization;\n await this.flushMeta(this.activePageSettings);\n }\n\n private async configChanged(configChanged: NhCommonConfigChanged) {\n this.config = configChanged.config;\n await this.flushMeta(this.activePageSettings);\n }\n\n async clear() {\n this.activePageSettings = new NhPageSettings();\n await this.flushMeta(this.activePageSettings);\n this.requestBreadcrumbUpdate();\n }\n\n async flushMeta(activePageSettings: NhPageSettings) {\n this.setTitle(activePageSettings.title);\n this.setDescription(activePageSettings.description);\n this.metaService.updateTag({property: 'og:type', content: 'website'});\n this.metaService.updateTag({name: 'twitter:card', content: 'summary'});\n this.metaService.updateTag({property: 'og:site_name', content: this.moduleConfig.appDisplayName });\n this.metaService.updateTag({property: 'og:locale', content: this.config?.languageCode});\n\n this.jsonLdService.clear();\n\n if(activePageSettings.jsonLdData) {\n for(const jsonLdDataItem of activePageSettings.jsonLdData.items) {\n this.jsonLdService.addItem(jsonLdDataItem);\n }\n }\n }\n\n setTitle(title: string) {\n this.titleService.setTitle(title);\n this.metaService.updateTag({\n property: 'og:title',\n content: title\n });\n }\n\n setDescription(description: string) {\n this.metaService.updateTag({ name: 'description', content: description });\n this.metaService.updateTag({property: 'og:description', content: description});\n }\n\n // async addMetaTag(description: string) {\n // this.metaService.(description);\n // }\n\n setBreadcrumbOverrideText(breadcrumbOverrideText?: (currentText: string) => string) {\n this.activePageSettings.breadCrumbOverrideText = breadcrumbOverrideText;\n }\n\n requestBreadcrumbUpdate() {\n this.breadcrumbUpdateRequest.next();\n }\n\n async getBreadcrumb(activatedRouteSnapshot: ActivatedRouteSnapshot|null): Promise<NhBreadCrumb> {\n const breadCrumb = await this.routerService.getBreadcrumb(activatedRouteSnapshot);\n if(this.activePageSettings?.breadCrumbOverrideText) {\n const item = breadCrumb.items[breadCrumb.items.length - 1];\n const text = this.activePageSettings.breadCrumbOverrideText(item.text);\n item.text = text\n }\n\n return breadCrumb;\n }\n\n navigateTo(nhRouterLink: NhRouterLink, navigationExtras?: NavigationExtras) {\n return this.routerService.navigate(nhRouterLink, navigationExtras);\n }\n\n navigateTo404NotFound(navigationExtras?: NavigationExtras) {\n return this.routerService.navigate({ id: 'root.home.not-found' }, navigationExtras);\n }\n}\n","import { HttpClient, HttpEvent, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport {lastValueFrom, map, Observable, share, Subscription} from 'rxjs';\nimport {\n CollectionHttpRequestOptions,\n CollectionHttpResponse,\n HttpDownloadRequestOptions,\n HttpRequestOptions,\n ICollectionHttpRequestOptions, IHttpDownloadRequestOptions, IHttpRequestOptions,\n ISimpleCollectionHttpRequestOptions, SimpleCollectionHttpRequestOptions, SimpleCollectionHttpResponse\n} from '../models/http.models';\nimport { NhApiUtil } from '../util/nh-api-util';\nimport { NhAuthService } from './nh-auth.service';\nimport {NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhAuthorization} from \"../models/auth.models\";\nimport {TaskResult} from \"../models/misc.models\";\nimport {decode as msgpackDecode} from \"@msgpack/msgpack\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhApiService implements OnDestroy {\n authSubscription: Subscription;\n authorization: NhAuthorization|undefined;\n baseUrl: string|undefined;\n\n public static ActiveDivisionHeaderKey = 'X-NH-ActiveDivisionId';\n\n private static defaultHeaders: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'Accept': 'application/json; charset=utf-8',\n });\n\n private static skipObjectParamParseKeys: string[] = [\n 'headers',\n 'params',\n 'observe',\n 'reportProgress',\n 'responseType',\n 'withCredentials'\n ];\n\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private httpClient: HttpClient,\n private authService: NhAuthService\n ) {\n this.baseUrl = this.moduleConfig.apiBaseUrl;\n this.authSubscription = this.authService.authSubject.subscribe(async (authorization) => {\n await this.authChanged(authorization);\n });\n }\n\n private async authChanged(authorization: NhAuthorization|undefined) {\n this.authorization = authorization;\n }\n\n ngOnDestroy(): void {\n if(this.authSubscription) {\n this.authSubscription.unsubscribe();\n }\n }\n\n public static taskResultFromResponse(response: any): TaskResult<any> {\n return NhApiUtil.taskResultFromResponse(response);\n }\n\n public prepareHeaders(httpHeaders?: HttpHeaders): HttpHeaders {\n\n httpHeaders = httpHeaders || new HttpHeaders();\n\n let header = 'Content-Type';\n if (!httpHeaders.has(header) && NhApiService.defaultHeaders.has(header)) {\n httpHeaders = httpHeaders.set(header, NhApiService.defaultHeaders.get(header) || '');\n } else if (httpHeaders.has(header) && (httpHeaders.get(header)) === '') {\n httpHeaders = httpHeaders.delete(header);\n }\n\n header = 'Accept';\n if (!httpHeaders.has(header) && NhApiService.defaultHeaders.has(header)) {\n httpHeaders = httpHeaders.set(header, NhApiService.defaultHeaders.get(header) || '');\n }\n\n return httpHeaders;\n }\n\n public setCultureHttpParam(httpParams?: HttpParams): HttpParams {\n httpParams = httpParams || new HttpParams();\n\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n httpParams = httpParams.set('culture', this.moduleConfig.culture);\n\n return httpParams;\n }\n\n // TODO: dit is een front-end API functie voor non management requesten\n public setObjectParams(httpParams: HttpParams, requestOptions?: HttpRequestOptions|HttpDownloadRequestOptions): HttpParams {\n const customPropertyNames = Object.getOwnPropertyNames(requestOptions).filter(x => x).filter(x => !NhApiService.skipObjectParamParseKeys.find(c => c === x));\n for (const propertyName of customPropertyNames) {\n if (!httpParams.get(propertyName)) {\n const propertyValue = (requestOptions as any)[propertyName];\n if (Array.isArray(propertyValue)) {\n for (let i = 0; i < propertyValue.length; i++) {\n const arrayValue = propertyValue[i];\n httpParams = httpParams.set(propertyName + '[' + i + ']', arrayValue);\n }\n } else {\n httpParams = httpParams.set(propertyName, propertyValue);\n }\n }\n }\n return httpParams;\n }\n\n public async task<T>(observable$: Observable<T>): Promise<TaskResult<T>> {\n const taskResult = new TaskResult<T>();\n\n try {\n taskResult.data = await lastValueFrom(observable$);\n }catch (ex) {\n const errResult = NhApiService.taskResultFromResponse(ex);\n errResult.copyTo(taskResult);\n }\n\n return taskResult;\n }\n\n public get<T>(url: string, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.get<T>(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public getText(url: string, requestOptions?: IHttpRequestOptions): Observable<string> {\n requestOptions = requestOptions || new HttpRequestOptions();\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.get(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'text',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public getResult<T>(url: string, requestOptions?: IHttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.get<T>(url, requestOptions));\n }\n\n public getCollection<T>(url: string, requestOptions?: ICollectionHttpRequestOptions): Observable<CollectionHttpResponse<T>> {\n return this.getCollectionT<T, ICollectionHttpRequestOptions, CollectionHttpResponse<T>>(url, requestOptions);\n }\n\n public getCollectionT<T, TRequestOptions extends ICollectionHttpRequestOptions, TCollectionResult extends CollectionHttpResponse<T>>(\n url: string,\n requestOptions?: TRequestOptions\n ): Observable<TCollectionResult>\n {\n requestOptions = requestOptions || <TRequestOptions><unknown>(new CollectionHttpRequestOptions());\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n httpParams = httpParams.set('page', requestOptions.page);\n httpParams = httpParams.set('itemsPerPage', requestOptions.itemsPerPage);\n\n if (null != requestOptions.orderBy && requestOptions.orderBy.length > 0) {\n httpParams = httpParams.set('orderBy', JSON.stringify(requestOptions.orderBy));\n }\n\n if (null != requestOptions.filter && requestOptions.filter.length > 0) {\n httpParams = httpParams.set('filter', JSON.stringify(requestOptions.filter));\n }\n\n if ((requestOptions.search?.length ?? 0) > 0) {\n httpParams = httpParams.set('search', requestOptions.search ?? '');\n }\n\n const customPropertyNames = Object.getOwnPropertyNames(requestOptions).filter(x => x);\n for (const propertyName of customPropertyNames) {\n if(NhApiService.skipObjectParamParseKeys.indexOf(propertyName) > -1) {\n continue;\n }\n if (!httpParams.get(propertyName)) {\n const propertyValue = (<any>requestOptions)[propertyName];\n if (Array.isArray(propertyValue)) {\n for (let i = 0; i < propertyValue.length; i++) {\n const arrayValue = propertyValue[i];\n if(arrayValue === undefined) {\n continue;\n }\n httpParams = httpParams.set(propertyName + '[' + i + ']', arrayValue);\n }\n } else {\n if(propertyValue === undefined) {\n continue;\n }\n httpParams = httpParams.set(propertyName, propertyValue);\n }\n }\n }\n\n switch (requestOptions.responseType) {\n case 'arraybuffer':\n return this.httpClient.get(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'arraybuffer',\n withCredentials: requestOptions.withCredentials\n })\n .pipe(map(r => msgpackDecode(r) as TCollectionResult))\n .pipe(share());\n default:\n return this.httpClient.get<TCollectionResult>(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n }\n\n public getSimpleCollection<T>(url: string, requestOptions?: ISimpleCollectionHttpRequestOptions): Observable<SimpleCollectionHttpResponse<T>> {\n return this.getSimpleCollectionT<T, ISimpleCollectionHttpRequestOptions, SimpleCollectionHttpResponse<T>>(url, requestOptions);\n }\n\n public getSimpleCollectionT<T, TRequestOptions extends ISimpleCollectionHttpRequestOptions, TCollectionResult extends SimpleCollectionHttpResponse<T>>(url: string, requestOptions?: TRequestOptions): Observable<TCollectionResult> {\n requestOptions = requestOptions || <TRequestOptions><unknown>(new CollectionHttpRequestOptions());\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n httpParams = httpParams.set('page', requestOptions.page);\n httpParams = httpParams.set('itemsPerPage', requestOptions.itemsPerPage);\n\n return this.httpClient.get<TCollectionResult>(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public download(url: string, requestOptions?: IHttpDownloadRequestOptions): Observable<Blob> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.get(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public downloadResponse(url: string, requestOptions?: IHttpDownloadRequestOptions): Observable<HttpResponse<Blob>> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.get(url, {\n headers: headers,\n observe: 'response',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public postDownload(url: string, body: any, requestOptions?: IHttpDownloadRequestOptions): Observable<Blob> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.post(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public postDownloadResponse(url: string, body: any, requestOptions?: IHttpDownloadRequestOptions): Observable<HttpResponse<Blob>> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.post(url, body, {\n headers: headers,\n observe: 'response',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public putDownload(url: string, body: any, requestOptions?: IHttpDownloadRequestOptions): Observable<Blob> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.put(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public putDownloadResponse(url: string, body: any, requestOptions?: IHttpDownloadRequestOptions): Observable<HttpResponse<Blob>> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.put(url, body, {\n headers: headers,\n observe: 'response',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public delete<T>(url: string, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.delete<T>(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public async deleteResult<T>(url: string, requestOptions?: HttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.delete<T>(url, requestOptions));\n }\n\n public deleteWithBody<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.delete<T>(url, {\n body: body,\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n\n public post<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.post<T>(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public async postResult<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.post<T>(url, body,requestOptions));\n }\n\n public put<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.put<T>(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public async putResult<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.put<T>(url, body,requestOptions));\n }\n\n public patch<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.patch<T>(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public async patchResult<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.patch<T>(url, body,requestOptions));\n }\n\n public postHttpEvent<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<HttpEvent<T>> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n\n return this.httpClient.post<T>(url, body, {\n headers: headers,\n observe: 'events',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n}\n","import {Directive, ViewContainerRef} from \"@angular/core\";\n\n@Directive({\n selector: '[nhModalContent]',\n standalone: false\n})\nexport class NhModalContentDirective {\n constructor(public viewContainerRef: ViewContainerRef) {\n }\n}\n","import { Component, Input, input } from '@angular/core';\n\n@Component({\n selector: 'nh-loader',\n templateUrl: './component.html',\n styleUrls: ['./component.scss'],\n standalone: false\n})\nexport class NhLoaderComponent {\n clicked = false;\n active = false;\n closed = false;\n\n readonly dark = input(false);\n readonly hasBackdrop = input(true);\n readonly backdropTransparent = input(true);\n private _containerClass: string = '';\n @Input() set containerClass(value: string[] | string) {\n this._containerClass = Array.isArray(value) ? value.join(' ') : value;\n }\n get containerClass() {\n return this._containerClass;\n }\n\n constructor(\n ) {\n\n }\n}\n","<div #loader [class]=\"containerClass\" [class.dark]=\"dark()\" [class.backdrop]=\"hasBackdrop()\" [class.noTrans]=\"!backdropTransparent()\">\n <div class=\"spinner\"></div>\n</div>\n","import {DOCUMENT} from \"@angular/common\";\n\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ComponentRef,\n Directive,\n ElementRef,\n Inject,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Type,\n output,\n viewChild, inject\n} from '@angular/core';\nimport {INhModalComponent, NhModalComponentRef} from \"../../services/nh-modal.service\";\nimport {NhModalContentDirective} from \"../../directives/nh-modal.directives\";\n\nexport class NhModalComponentClosed {\n public constructor(init?: Partial<NhModalComponentClosed>) {\n Object.assign(this, init);\n }\n}\n\n@Directive()\nexport class NhModalComponentImpl<C> implements\n INhModalComponent<C>,\n OnChanges,\n OnInit,\n AfterContentInit,\n AfterViewInit,\n OnDestroy {\n protected modalComponentRef: NhModalComponentRef<C>|undefined;\n\n setModalComponentRef(ref: NhModalComponentRef<C>) {\n this.modalComponentRef = ref;\n }\n\n close() {\n this.modalComponentRef?.close();\n }\n\n ngOnChanges(): void {\n this.appOnChanges().then();\n }\n\n ngOnInit(): void {\n this.appOnInit().then();\n }\n\n ngAfterContentInit(): void {\n this.appAfterContentInit().then();\n }\n\n ngAfterViewInit(): void {\n this.appAfterViewInit().then();\n }\n\n ngOnDestroy(): void {\n this.appOnDestroy().then();\n }\n\n appOnChanges(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterContentInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterViewInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnDestroy(): Promise<void> {\n return Promise.resolve();\n }\n}\n\n@Component({\n selector: 'nh-modal',\n templateUrl: './component.html',\n styleUrls: ['./component.scss'],\n standalone: false\n})\nexport class NhModalComponent<C> implements OnInit, OnDestroy, AfterViewInit {\n readonly modalContent = viewChild.required(NhModalContentDirective);\n readonly modalHolder = viewChild.required<ElementRef>('modalHolder');\n readonly modalBackdrop = viewChild.required<ElementRef>('modalBackdrop');\n readonly modal = viewChild.required<ElementRef>('modal');\n\n readonly closed = output<NhModalComponentClosed>();\n public componentRef: ComponentRef<C> | undefined;\n private modalComponentRef: NhModalComponentRef<C> | undefined;\n private document: Document = inject(DOCUMENT);\n title: string = '';\n modalHolderClasses: string = '';\n modalClasses: string = '';\n modalHeaderClasses: string = '';\n modalBodyClasses: string = '';\n isLoading: boolean = false;\n closeable: boolean = true;\n\n ngOnInit() {\n this.document.body.classList.add('nh-modal-open');\n }\n\n ngAfterViewInit() {\n //Timeout makes sure everything is rendered because browsers needs a little time and if no timeout the animation wil stutter\n setTimeout(() => {\n if(this.modal()) {\n this.modal().nativeElement.style.transform = '';\n }\n\n if(this.modalBackdrop()) {\n this.modalBackdrop().nativeElement.style.opacity = 0.85;\n }\n }, 50);\n }\n\n setModalComponentRef(modalComponentRef: NhModalComponentRef<C>) {\n this.modalComponentRef = modalComponentRef;\n }\n\n setContentComponent(componentType: Type<C>) {\n const viewContainerRef = this.modalContent().viewContainerRef;\n viewContainerRef.clear();\n this.componentRef = viewContainerRef.createComponent<C>(componentType);\n }\n\n\n close() {\n const modalBackdrop = this.modalBackdrop();\n modalBackdrop.nativeElement.style.transition = 'opacity 0.5s';\n const modal = this.modal();\n modal.nativeElement.style.transition = 'transform 0.5s';\n modalBackdrop.nativeElement.style.opacity = 0;\n\n //When mobile, use smooth scrolldown close, on desktop just disappear\n if (window.innerWidth < 920) {\n this.modalHolder().nativeElement.style.pointerEvents = 'none';\n modal.nativeElement.style.transform = 'translateY(100vh)';\n this.document.body.classList.remove('nh-modal-open');\n } else {\n modal.nativeElement.style.transition = 'opacity 0.5s';\n modal.nativeElement.style.opacity = '0';\n }\n setTimeout(() => {\n const data = new NhModalComponentClosed({});\n this.closed.emit(data);\n this.modalComponentRef?.close();\n }, 500);\n }\n\n ngOnDestroy() {\n this.document.body.classList.remove('nh-modal-open');\n this.componentRef?.destroy();\n }\n\n modalSlideStart(event: MouseEvent) {\n }\n\n modalTouchStart(event: TouchEvent) {\n }\n\n modalTouchEnd(event: TouchEvent) {\n this.modalScrollStop();\n }\n\n modalTouchMove(event: TouchEvent) {\n this.modalScrollMove(event.touches[0].clientY);\n }\n\n modalMouseUp(event: MouseEvent) {\n this.modalScrollStop();\n }\n\n modalScrollStop() {\n\n }\n\n modalMouseMove(event: MouseEvent) {\n this.modalScrollMove(event.clientY);\n }\n\n modalScrollMove(y: number) {\n\n }\n}\n","<div #modalHolder (touchmove)=\"modalTouchMove($event)\" (touchcancel)=\"modalTouchEnd($event)\"\n (touchend)=\"modalTouchEnd($event)\" (mousemove)=\"modalMouseMove($event)\" (mouseup)=\"modalMouseUp($event)\"\n role=\"dialog\" class=\"nh-modal-holder\" [ngClass]=\"modalHolderClasses\">\n <div #modalBackdrop class=\"nh-modal-backdrop\"></div>\n <div #modal class=\"nh-modal\" [ngClass]=\"modalClasses\" style=\"transform: translateY(100vh);\">\n <div class=\"nh-modal-header\" [ngClass]=\"modalHeaderClasses\">\n <h3>{{ title }}</h3>\n @if (closeable) {\n <button (click)=\"close()\" class=\"close-nh-modal bg-white small font-grey\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path fill=\"black\"\n d=\"M312.1 375c9.369 9.369 9.369 24.57 0 33.94s-24.57 9.369-33.94 0L160 289.9l-119 119c-9.369 9.369-24.57 9.369-33.94 0s-9.369-24.57 0-33.94L126.1 256L7.027 136.1c-9.369-9.369-9.369-24.57 0-33.94s24.57-9.369 33.94 0L160 222.1l119-119c9.369-9.369 24.57-9.369 33.94 0s9.369 24.57 0 33.94L193.9 256L312.1 375z\"/>\n </svg>\n </button>\n }\n </div>\n <div class=\"nh-modal-body\" [ngClass]=\"modalBodyClasses\">\n @if (isLoading) {\n <nh-loader></nh-loader>\n }\n <div (touchstart)=\"modalTouchStart($event)\" (mousedown)=\"modalSlideStart($event)\" class=\"nh-modal-slider\"></div>\n <ng-template nhModalContent></ng-template>\n </div>\n </div>\n </div>\n","import {Component, HostListener, Input, OnInit, input, output} from '@angular/core';\nimport {INhModalComponent, NhModalComponentRef, NhModalService} from \"../../services/nh-modal.service\";\nimport { SafeHtml } from '@angular/platform-browser';\nimport {TaskResult} from \"../../models/misc.models\";\nimport {NhApiUtil} from \"../../util/nh-api-util\";\n\n@Component({\n selector: 'nh-confirm-modal',\n templateUrl: './component.html',\n styleUrls: ['./component.scss'],\n standalone: false\n})\nexport class NhModalConfirmComponent implements OnInit, INhModalComponent<NhModalConfirmComponent> {\n @Input() message: string|SafeHtml = '';\n @Input() btnConfirmText: string = 'general.yes';\n @Input() btnCancelText: string = 'general.no';\n @Input() modalClass: ''|'success'|'danger'|'warning'|'info' = '';\n @Input() btnConfirmDisabled: boolean = false;\n @Input() btnCancelDisabled: boolean = false;\n @Input() allBtnsDisabled: boolean = false;\n @Input() showLoader: boolean = false;\n @Input() errorResult: TaskResult<any>|undefined;\n\n readonly confirmed = output();\n\n modalComponentRef: NhModalComponentRef<NhModalConfirmComponent>|undefined;\n setModalComponentRef(ref: NhModalComponentRef<NhModalConfirmComponent>): void {\n this.modalComponentRef = ref;\n }\n\n @HostListener('document:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.stopImmediatePropagation();\n this.closeDialog({});\n }\n }\n\n ngOnInit() { }\n\n closeDialog(event?: any) {\n this.modalComponentRef?.close();\n }\n\n @Input() onConfirm: (() => void) | (() => Promise<void>) = () => {};\n @Input() onCancel: (() => void) | (() => Promise<void>) = () => {};\n\n readonly value = input<any>();\n\n async confirm() {\n this.errorResult = undefined;\n await this.executeDelegate(this.onConfirm);\n }\n\n async cancel() {\n this.errorResult = undefined;\n await this.executeDelegate(this.onCancel);\n }\n\n async executeDelegate(func: (() => void) | (() => Promise<void>)) {\n try {\n await func();\n } catch (ex) {\n this.errorResult = NhApiUtil.taskResultFromResponse(ex);\n if(this.errorResult.isSuccess) {\n this.errorResult.addError('', 'An unknown error occurred');\n }\n }\n }\n}\n","<div class=\"{{modalClass}}\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p [innerHTML]=\"message\"></p>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n @if (errorResult && !errorResult?.isSuccess) {\n <div class=\"alert alert-danger\" role=\"alert\">\n <b>Er is een fout opgetreden</b>\n <ul>\n @for (resultItem of errorResult.items; track resultItem) {\n @for (resultItemErrorMsg of resultItem.errorMessages; track resultItemErrorMsg) {\n <li>{{ resultItemErrorMsg }}</li>\n }\n }\n </ul>\n </div>\n }\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <button [disabled]=\"allBtnsDisabled || btnCancelDisabled\" class=\"btn btn-danger me-2\" (click)=\"cancel()\">{{ btnCancelText | translate }}</button>\n <button [disabled]=\"allBtnsDisabled || btnConfirmDisabled\" class=\"btn btn-success\" (click)=\"confirm()\">{{ btnConfirmText | translate }}</button>\n </div>\n </div>\n</div>\n","import {ComponentRef, EventEmitter, Injectable, Type, ViewContainerRef} from '@angular/core';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {NhModalComponent, NhModalComponentClosed} from \"../components/nh-modal/component\";\nimport {NhModalConfirmComponent} from \"../components/nh-confirm-modal/component\";\n\nexport interface INhModalComponent<C> {\n setModalComponentRef(ref: NhModalComponentRef<C>): void;\n}\n\nexport class NhModalComponentRef<C> {\n public readonly closed: EventEmitter<NhModalComponentClosed> = new EventEmitter<NhModalComponentClosed>();\n\n private _onCloses: Subscription[] = [];\n\n onClose(callback: () => void) {\n this._onCloses.push(this.closed.subscribe(callback));\n }\n\n close() {\n if (this.componentRef && this.componentRef.instance) {\n this.componentRef.destroy();\n this.closed.emit();\n }\n for (let item of this._onCloses) {\n item.unsubscribe();\n }\n }\n\n get modalComponent(): NhModalComponent<C> {\n return this.componentRef.instance;\n }\n\n get contentComponent(): C | undefined {\n return this.modalComponent.componentRef?.instance;\n }\n\n constructor(public componentRef: ComponentRef<NhModalComponent<C>>) {\n }\n}\n\nexport class NhModalOptions {\n title: string = '';\n modalHolderClasses: string = '';\n modalClasses: string = '';\n modalHeaderClasses: string = '';\n isLoading: boolean = false;\n closeable: boolean = true;\n modalBodyClasses: string = '';\n viewContainerRef?: ViewContainerRef;\n\n public constructor(init?: Partial<NhModalOptions>) {\n Object.assign(this, init);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhModalService {\n private viewContainerRef: ViewContainerRef | undefined;\n modalRefs: NhModalComponentRef<any>[] = [];\n modalRefsOpen: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n constructor() {\n }\n\n setViewContainerRef(viewContainerRef: ViewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n\n confirm(onConfirm: (() => void) | (() => Promise<any>), onClose?: (() => void), options?: NhModalOptions) {\n return this.confirmDialog('',onConfirm,onClose,options);\n }\n\n confirmDialog(text: string,onConfirm: (() => void) | (() => Promise<any>), onClose?: (() => void), options?: NhModalOptions) {\n const modal = this.open(NhModalConfirmComponent, options);\n modal.contentComponent!.message = text;\n const onConfirm$ = modal.contentComponent!.confirmed.subscribe(() => {\n Promise.resolve(onConfirm()).then();\n });\n const onClose$ = modal.closed.subscribe(() => {\n if (onClose) {\n onClose();\n }\n onConfirm$.unsubscribe();\n onClose$.unsubscribe();\n });\n return modal;\n }\n\n\n /**\n * Create a modal dialog with a given component as content\n * @param componentType Type of the component to show in the modal\n * @param options Options for the modal\n * @param inputs Inputs to set on {@link componentType}\n */\n open<C extends INhModalComponent<C>>(componentType: Type<C>, options?: Partial<NhModalOptions>, inputs: Record<string, any> = {}): NhModalComponentRef<C> {\n const viewContainerRef = options?.viewContainerRef ?? this.viewContainerRef;\n\n if (!viewContainerRef) {\n throw 'View container ref missing';\n }\n\n options = options ?? new NhModalOptions();\n\n const modalComponentRef = viewContainerRef.createComponent<NhModalComponent<C>>(NhModalComponent);\n\n\n try {\n modalComponentRef.instance.setContentComponent(componentType);\n // Set inputs on the component\n if (inputs) {\n for (let key in inputs) {\n modalComponentRef.instance.componentRef?.setInput(key, inputs[key]);\n }\n }\n\n } catch (ex: any) {\n if (ex?.name === 'NullInjectorError') {\n console.error('Injection failed, possibly because the component is not declared in the root module. Try to provide the ViewContainerRef in the options of the open method.');\n }\n throw ex;\n }\n\n\n const modalRef = new NhModalComponentRef(modalComponentRef);\n\n modalComponentRef.instance.setModalComponentRef(modalRef);\n\n modalRef.modalComponent.title = options.title ?? '';\n modalRef.modalComponent.modalHolderClasses = options.modalHolderClasses ?? '';\n modalRef.modalComponent.modalClasses = options.modalClasses ?? '';\n modalRef.modalComponent.modalBodyClasses = options.modalBodyClasses ?? '';\n modalRef.modalComponent.modalHeaderClasses = options.modalHeaderClasses ?? '';\n modalRef.modalComponent.closeable = options.closeable ?? true;\n\n const modalRefClosed = () => {\n this.modalRefs = this.modalRefs.filter(x => x !== modalRef);\n if (this.modalRefs.length === 0) {\n this.modalRefsOpen.next(false);\n }\n };\n\n modalRef.modalComponent.closed.subscribe(modalRefClosed);\n modalRef.closed.subscribe(modalRefClosed);\n modalRef.contentComponent?.setModalComponentRef(modalRef);\n\n this.modalRefs.push(modalRef);\n this.modalRefsOpen.next(true);\n\n return modalRef;\n }\n\n close(componentRef: NhModalComponentRef<any>) {\n if (componentRef) {\n // First trigger the modal close, so that the animation and such is triggered. The actual close method will be called via the modalComponent\n componentRef.modalComponent.close();\n this.modalRefs = this.modalRefs.filter(x => x !== componentRef);\n if (this.modalRefs.length === 0) {\n this.modalRefsOpen.next(false);\n }\n }\n }\n\n closeLatest() {\n const latestModalRef = this.modalRefs[this.modalRefs.length - 1];\n this.close(latestModalRef);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\nimport {TaskResultItem} from \"../models/misc.models\";\n\n@Injectable()\nexport class NhTaskResultFormValidationService {\n public validate(formGroup: UntypedFormGroup, errors: TaskResultItem[]) {\n if (errors.length === 0) {\n return;\n }\n\n if (!formGroup.controls['']) {\n formGroup.addControl('', new UntypedFormControl());\n }\n\n for (const field of errors) {\n this.addError(formGroup, field.name, field.errorMessages);\n }\n }\n\n public addError(formGroup: UntypedFormGroup, controlName: string|undefined|null, errorMessages: string[]) {\n if (!formGroup || !errorMessages || errorMessages.length === 0) {\n return;\n }\n\n if(!controlName || controlName?.trim() === '') {\n controlName = '';\n }\n\n if (!formGroup.controls || !formGroup.controls['']) {\n formGroup.addControl('', new UntypedFormControl());\n }\n\n const formControl = this.getFormControlFromFormGroup(formGroup, controlName)\n ?? this.getFormControlFromFormGroup(formGroup, '');\n\n if(!formControl) {\n return;\n }\n\n if (!formControl.errors) {\n formControl.setErrors({ remote: errorMessages });\n } else {\n if ((formControl.errors['remote']?.length ?? 0) < 1) {\n formControl.errors['remote'] = [];\n }\n\n formControl.errors['remote'].concat(errorMessages);\n }\n }\n\n private getFormControlFromFormGroup(formGroup: UntypedFormGroup, formControlKey: string): UntypedFormControl {\n const separator = '.';\n let formControl: UntypedFormControl | undefined\n\n for (let key in formGroup.controls) {\n if (formGroup. controls.hasOwnProperty(key)) {\n if (key.toLowerCase() === formControlKey.toLowerCase()) {\n formControl = <UntypedFormControl>formGroup.controls[key];\n break;\n }\n }\n }\n\n if (!formControl) {\n formControl = <UntypedFormControl>formGroup.controls[\"\"];\n }\n\n return formControl\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {Inject, Injectable, Renderer2, RendererFactory2} from '@angular/core';\nimport {KeyValue} from \"@angular/common\";\nimport {PreConnectUrlItem, PreLoadUrlItem} from \"../models/misc.models\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhHeadService {\n private renderer: Renderer2;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n rendererFactory: RendererFactory2\n ) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n addPreConnectUrl(url: PreConnectUrlItem) {\n const connectParts = [];\n\n if(url.preConnect) {\n connectParts.push('preconnect');\n }\n\n if(url.dnsPrefetch) {\n connectParts.push('dns-prefetch');\n }\n\n const rel = connectParts.join(' ').trim();\n\n this.addLinkTag(rel, url.url, url.withCrossOrigin, url.crossOrigin, url.additionalAttributes);\n }\n\n addPreLoadUrl(url: PreLoadUrlItem) {\n const additionalAttributes: KeyValue<string, string>[] = url.additionalAttributes ?? [];\n\n additionalAttributes.push({key: 'as', value: url.as});\n additionalAttributes.push({key: 'type', value: url.type});\n\n this.addLinkTag('preload', url.url, url.withCrossOrigin, url.crossOrigin, additionalAttributes);\n }\n\n addLinkTag(rel: string, href: string, withCrossOrigin: boolean = false, crossOrigin?: string, additionalAttributes: KeyValue<string, string>[] = []) {\n const link = this.renderer.createElement('link');\n\n if(additionalAttributes) {\n for(const additionalAttribute of additionalAttributes) {\n this.renderer.setAttribute(link, additionalAttribute.key, additionalAttribute.value);\n }\n }\n\n this.renderer.setAttribute(link, 'rel', rel);\n this.renderer.setAttribute(link, 'href', href);\n\n if(withCrossOrigin) {\n this.renderer.setAttribute(link, 'crossorigin', crossOrigin ? crossOrigin : '');\n }\n\n\n this.addElementToHead(link);\n }\n\n addElementToHead(element: HTMLElement) {\n this.renderer.appendChild(this.document.head, element);\n }\n}\n","import {HostListener, Injectable, NgZone} from \"@angular/core\";\nimport {BehaviorSubject} from \"rxjs\";\n\n@Injectable()\nexport class NhInternetConnectionService {\n private connectionSubject = new BehaviorSubject<boolean>(navigator.onLine);\n public internetIsConnected = this.connectionSubject.asObservable();\n constructor(private zone: NgZone) {\n window.addEventListener(\"online\", (event) => {\n this.zone.run(() => {\n this.connectionSubject.next(true);\n });\n });\n\n window.addEventListener(\"offline\", (event) => {\n this.zone.run(() => {\n this.connectionSubject.next(false);\n });\n });\n }\n}\n","import {Inject, Injectable, makeStateKey, PLATFORM_ID, StateKey, TransferState} from '@angular/core';\nimport {isPlatformServer} from \"@angular/common\";\nimport {NhCommonModuleConfig} from \"../models/config.models\";\n@Injectable({\n providedIn: 'root',\n})\nexport class NhServerService {\n private static readonly DID_INIT_BY_SERVER_STATE_KEY: StateKey<boolean> = makeStateKey<boolean>('Nh-DID_INIT_BY_SERVER');\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: Object,\n private moduleConfig: NhCommonModuleConfig,\n private transferState: TransferState\n ) {\n if(isPlatformServer(this.platformId)) {\n this.transferState.set(NhServerService.DID_INIT_BY_SERVER_STATE_KEY, true);\n }\n }\n\n public didInitByServer(): boolean {\n return !isPlatformServer(this.platformId)\n && this.transferState.hasKey(NhServerService.DID_INIT_BY_SERVER_STATE_KEY)\n && this.transferState.get(NhServerService.DID_INIT_BY_SERVER_STATE_KEY, false);\n }\n}\n","import {Injectable} from \"@angular/core\";\nimport {UntypedFormGroup, UntypedFormControl, AbstractControl} from \"@angular/forms\";\n\nexport interface IServerSideFormValidationService {\n}\n\n@Injectable()\nexport class NhServerSideFormValidationService implements IServerSideFormValidationService {\n\n public validate<T extends IServerSideFormValidator>(formValidatorType: {\n new(): T;\n }, formGroup: UntypedFormGroup, objectToValidate: any): void {\n\n let formValidator = new formValidatorType();\n let formValidationResult: FormValidationResult = formValidator.validate(objectToValidate);\n\n if (!formValidationResult.hasErrors()) {\n return;\n }\n\n if (!formGroup.controls[\"\"]) {\n formGroup.addControl(\"\", new UntypedFormControl());\n }\n\n let formErrors = formValidationResult.getErrors();\n for (let i = 0; i < formErrors.length; i++) {\n let formError = formErrors[i];\n let formControl: UntypedFormControl = formValidator.getFormControlFromFormGroup(formGroup, formError.getFieldName());\n\n if (formControl == null) {\n formControl = <UntypedFormControl>formGroup.controls[\"\"];\n }\n\n let shouldDisableAfterSet = false;\n if(formControl.disabled) { // Disabled form controls cannot have errors set\n formControl.enable();\n shouldDisableAfterSet = true;\n }\n\n if (!formControl.errors) {\n formControl.setErrors({remote: formError.getErrorMessages()});\n } else {\n if (!formControl.errors['remote'] || formControl.errors['remote'].length < 1) {\n formControl.errors['remote'] = [];\n }\n\n for (let formErrorMessage of formError.getErrorMessages()) {\n formControl.errors['remote'].push(formErrorMessage);\n }\n }\n\n if(shouldDisableAfterSet) {\n //formControl.disable();\n }\n }\n }\n}\n\nexport interface IServerSideFormValidator {\n getFormControlFromFormGroup(formGroup: UntypedFormGroup, formControlKey: string): UntypedFormControl;\n\n validate(object: any): FormValidationResult;\n}\n\nexport class AspMvcFormServerSideFormValidator implements IServerSideFormValidator {\n public getFormControlFromFormGroup(formGroup: UntypedFormGroup, formControlKey: string): UntypedFormControl {\n const separator = '.';\n let formControl: UntypedFormControl|null = null;\n const formControlKeySplit = formControlKey.split(separator);\n\n if (formControlKeySplit.length == 1) {\n for (let key in formGroup.controls) {\n if (formGroup.controls.hasOwnProperty(key)) {\n if (key.toLowerCase() == formControlKey.toLowerCase()) {\n formControl = <UntypedFormControl>formGroup.controls[key];\n break;\n }\n }\n }\n } else if (formControlKeySplit.length > 1) {\n const baseKey = formControlKeySplit[0];\n const subKey = formControlKeySplit.filter(x => x !== baseKey).join(separator);\n\n for (let key in formGroup.controls) {\n if (formGroup.controls.hasOwnProperty(key)) {\n if (key.toLowerCase() == baseKey.toLowerCase()) {\n if (typeof formGroup.controls[key] === 'object') {\n formControl = this.getFormControlFromFormGroup(<UntypedFormGroup>formGroup.controls[baseKey], subKey);\n }\n\n break;\n }\n }\n }\n }\n\n if (formControl == null) {\n formControl = <UntypedFormControl>formGroup.controls[\"\"];\n }\n\n return formControl\n }\n\n public validate(object: any): FormValidationResult {\n let validationResult = new FormValidationResult();\n\n if (object && object != null) {\n if (object.error_description !== undefined) {\n validationResult.addErrorByFieldName(\"\", object.error_description);\n }\n\n if (object.ModelState) {\n for (let key in object.ModelState) {\n\n if(!object.ModelState.hasOwnProperty(key)) {\n continue;\n }\n let errors = object.ModelState[key];\n for (let subKey in errors) {\n validationResult.addErrorByFieldName(key.replace(\"model.\", \"\"), errors[subKey]);\n }\n }\n }\n\n if (object.error) {\n for (let key in object.error) {\n if(!object.error.hasOwnProperty(key)) {\n continue;\n }\n\n let errors = object.error[key];\n for (let subKey in errors) {\n if(!errors.hasOwnProperty(subKey)) {\n continue;\n }if(!errors.hasOwnProperty(subKey)) {\n continue;\n }\n\n validationResult.addErrorByFieldName(key, errors[subKey]);\n }\n }\n }\n\n if (object.Message !== undefined) {\n validationResult.addErrorByFieldName(\"\", object.Message);\n }\n }\n\n return validationResult;\n }\n}\n\nexport interface IFormValidationResult {\n}\n\nexport class FormValidationResult implements IFormValidationResult {\n private formErrors: Array<FormError> = [];\n\n public getErrors(): Array<FormError> {\n return this.formErrors;\n }\n\n public hasErrors(): boolean {\n return (this.getErrors().length > 0);\n }\n\n public hasErrorForFieldName(fieldName: string): boolean {\n return (this.getErrorForFieldName(fieldName) !== null);\n }\n\n public getErrorForFieldName(fieldName: string): FormError|null {\n let formError: FormError|null = null;\n\n for (let i = 0; i < this.formErrors.length; i++) {\n if (this.formErrors[i].getFieldName() == fieldName) {\n formError = this.formErrors[i];\n }\n }\n\n return formError;\n }\n\n public addErrorByFieldName(fieldName: string, errorMessage: string): void {\n let formError: FormError|null = this.getErrorForFieldName(fieldName);\n\n if (formError == null) {\n formError = new FormError(fieldName);\n this.formErrors.push(formError);\n }\n\n formError.addErrorMessage(errorMessage);\n }\n\n constructor() {\n }\n}\n\nexport interface IFormError {\n}\n\nexport class FormError implements IFormError {\n private fieldName: string = '';\n private errorMessages: Array<string> = [];\n\n public getErrorMessages(): Array<string> {\n return this.errorMessages;\n }\n\n public getFieldName(): string {\n return this.fieldName;\n }\n\n public addErrorMessage(errorMessage: string): void {\n this.errorMessages.push(errorMessage);\n }\n\n private setFieldName(fieldName: string): void {\n if (!fieldName || fieldName == null) {\n fieldName = '';\n }\n\n this.fieldName = fieldName;\n }\n\n constructor(fieldName: string) {\n this.setFieldName(fieldName);\n }\n}\n","\nimport { inject } from \"@angular/core\";\nimport {Observable} from \"rxjs\";\nimport { NhAuthService } from \"./nh-auth.service\";\nimport { NhApiService } from \"./nh-api.service\";\nimport { NhCommonModuleConfig } from \"../models/config.models\";\nimport {CollectionHttpRequestOptions, CollectionHttpResponse, HttpRequestOptions} from \"../models/http.models\";\n\nexport abstract class NhBaseApiService {\n protected authService: NhAuthService = inject(NhAuthService);\n protected moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n protected apiService: NhApiService = inject(NhApiService);\n\n protected readonly baseUrl: string;\n\n protected constructor(suffix: string) {\n this.baseUrl = this.moduleConfig.apiBaseUrl + '/' + suffix;\n }\n\n public getCollection<T>(options: CollectionHttpRequestOptions): Observable<CollectionHttpResponse<T>> {\n return this.apiService.getCollection<T>(this.baseUrl, options);\n }\n\n public get<T>(id: string, requestOptions?: HttpRequestOptions): Observable<T> {\n return this.apiService.get<T>(`${this.baseUrl}/${id}`, requestOptions);\n }\n\n public create<T>(item: any, requestOptions?: HttpRequestOptions): Observable<T> {\n return this.apiService.post<T>(`${this.baseUrl}`, item, requestOptions);\n }\n\n public update<T>(id: string, item: any, requestOptions?: HttpRequestOptions): Observable<T> {\n return this.apiService.put<T>(`${this.baseUrl}/${id}`, item, requestOptions);\n }\n\n public updatePartial<T>(id: string, partialUpdate: any, requestOptions?: HttpRequestOptions): Observable<T> {\n return this.apiService.patch<T>(`${this.baseUrl}/${id}`, partialUpdate, requestOptions);\n }\n\n public delete(id: string, requestOptions?: HttpRequestOptions): Observable<any> {\n return this.apiService.delete<any>(`${this.baseUrl}/${id}`, requestOptions);\n }\n}\n","import {inject, Injectable, OnDestroy} from '@angular/core';\n\nimport {BehaviorSubject, EMPTY, exhaustMap, from, Observable, Subscription, switchMap, timer} from \"rxjs\";\nimport { NhAuthService } from './nh-auth.service';\nimport {NhCommonModuleConfig} from \"../models/config.models\";\nimport { NhApiService } from './nh-api.service';\nimport {\n NhUserNotification,\n NhUserNotificationCollectionHttpRequestOptions,\n NhUserNotificationOverview,\n NhUserNotificationState\n} from '../models/user-notification.models';\nimport {NhAppService} from \"./nh-app.service\";\nimport {CollectionHttpResponse} from \"../models/http.models\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhUserNotificationService implements OnDestroy {\n protected readonly baseUrl: string;\n protected authService: NhAuthService = inject(NhAuthService);\n protected moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n protected apiService: NhApiService = inject(NhApiService);\n\n protected runningSubject = new BehaviorSubject<boolean>(false);\n public readonly isRunning$: Observable<boolean> = this.runningSubject.asObservable();\n\n private task$: Observable<void>|undefined;\n private taskSub: Subscription|undefined;\n private runningConsumers = 0;\n\n private userNotificationState: NhUserNotificationState = new NhUserNotificationState();\n private readonly userNotificationStateSubject = new BehaviorSubject<NhUserNotificationState>(this.userNotificationState);\n public readonly userNotificationState$ = this.userNotificationStateSubject.asObservable();\n\n public get state(): NhUserNotificationState {\n return this.userNotificationState ?? new NhUserNotificationState();\n }\n\n get urlSuffix(): string {\n let suffix = this.moduleConfig.userNotification.urlSuffix;\n if(!suffix.startsWith('/')) {\n suffix = '/' + suffix;\n }\n\n return suffix;\n }\n\n public isRunning(): boolean {\n return this.runningSubject.value;\n }\n\n ngOnDestroy(): void {\n this.taskSub?.unsubscribe();\n this.runningSubject.complete();\n this.userNotificationStateSubject.complete();\n }\n\n protected constructor(\n private appService: NhAppService\n ) {\n if(!this.appService.isPlatformServer()) {\n this.task$ = this.runningSubject.pipe(\n switchMap(isRunning =>\n isRunning\n ? timer(0, this.moduleConfig.userNotification.pollingInterval).pipe(\n exhaustMap(() => from(this.doWork()))\n )\n : EMPTY\n )\n );\n\n this.taskSub = this.task$!.subscribe();\n }\n\n this.baseUrl = this.moduleConfig.apiBaseUrl + this.urlSuffix;\n }\n\n start(): void {\n this.runningConsumers++;\n if(this.runningConsumers === 1) {\n this.runningSubject.next(true);\n }\n }\n\n stop(): void {\n if(this.runningConsumers === 0) {\n return;\n }\n\n this.runningConsumers--;\n if(this.runningConsumers === 0) {\n this.runningSubject.next(false);\n }\n }\n\n protected async doWork() {\n if (!this.isRunning()) {\n return;\n }\n\n await this.loadState();\n\n this.userNotificationStateSubject.next(this.userNotificationState);\n }\n\n public async loadState() {\n this.userNotificationState ??= new NhUserNotificationState();\n\n try {\n this.userNotificationState.overview = await this.getOverview().lastValueFrom();\n }catch (error) {\n console.error('Error fetching user notification overview:', error);\n }\n }\n\n protected getOverview(): Observable<NhUserNotificationOverview> {\n return this.apiService.get<NhUserNotificationOverview>(`${this.baseUrl}/overview`);\n }\n\n public getNotifications(requestOptions?: NhUserNotificationCollectionHttpRequestOptions): Observable<CollectionHttpResponse<NhUserNotification>> {\n requestOptions ??= new NhUserNotificationCollectionHttpRequestOptions();\n return this.apiService.getCollection<NhUserNotification>(`${this.baseUrl}`, requestOptions);\n }\n\n public markAsRead(id: string): Observable<unknown> {\n return this.apiService.put<unknown>(`${this.baseUrl}/${id}/MarkAsRead`, {});\n }\n\n public markAllAsRead(): Observable<unknown> {\n return this.apiService.put<unknown>(`${this.baseUrl}/MarkAllAsRead`, {});\n }\n\n public archive(id: string): Observable<unknown> {\n return this.apiService.put<unknown>(`${this.baseUrl}/${id}/archive`, {});\n }\n\n public archiveAll(): Observable<unknown> {\n return this.apiService.put<unknown>(`${this.baseUrl}/ArchiveAll`, {});\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NhBackgroundOperation,\n NhBackgroundOperationCollectionHttpRequestOptions\n} from '../models/background-operation.models';\nimport { CollectionHttpResponse, HttpRequestOptions } from '../models/http.models';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhApiService } from './nh-api.service';\n\n@Injectable({ providedIn: 'root' })\nexport class NhBackgroundOperationService {\n private readonly config = inject(NhCommonModuleConfig);\n private readonly api = inject(NhApiService);\n private readonly baseUrl = this.joinUrl(this.config.apiBaseUrl, this.config.backgroundOperations.urlSuffix);\n\n list(\n request = new NhBackgroundOperationCollectionHttpRequestOptions({\n page: 1,\n itemsPerPage: this.config.backgroundOperations.listPageSize\n })\n ): Observable<CollectionHttpResponse<NhBackgroundOperation>> {\n return this.api.getCollection<NhBackgroundOperation>(this.baseUrl, request);\n }\n\n get(operationId: string, eventsAfterSequence?: number): Observable<NhBackgroundOperation> {\n let params = new HttpParams();\n if (eventsAfterSequence !== undefined) {\n params = params.set('eventsAfterSequence', eventsAfterSequence.toString());\n }\n\n return this.api.get<NhBackgroundOperation>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}`,\n new HttpRequestOptions({ params })\n );\n }\n\n cancel(operationId: string): Observable<NhBackgroundOperation> {\n return this.api.post<NhBackgroundOperation>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}/cancel`,\n {}\n );\n }\n\n retry(operationId: string): Observable<NhBackgroundOperation> {\n return this.api.post<NhBackgroundOperation>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}/retry`,\n {}\n );\n }\n\n private joinUrl(base: string, suffix: string): string {\n return `${base.replace(/\\/$/, '')}/${suffix.replace(/^\\//, '')}`;\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NhBackgroundOperationAdministration,\n NhBackgroundOperationAdministrationCollectionHttpRequestOptions\n} from '../models/background-operation.models';\nimport { CollectionHttpResponse, HttpRequestOptions } from '../models/http.models';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhApiService } from './nh-api.service';\n\n/**\n * Client for the cross-owner background-operation administration endpoints. The\n * server enables them with `UseAdministrationPolicy` and authorizes every request\n * against that policy; the active division scopes the visible operations. The\n * administration view does not receive owner-scoped live updates, so refresh it\n * by polling.\n */\n@Injectable({ providedIn: 'root' })\nexport class NhBackgroundOperationAdministrationService {\n private readonly config = inject(NhCommonModuleConfig);\n private readonly api = inject(NhApiService);\n private readonly baseUrl = this.joinUrl(\n this.config.apiBaseUrl,\n this.config.backgroundOperations.administrationUrlSuffix\n );\n\n list(\n request = new NhBackgroundOperationAdministrationCollectionHttpRequestOptions({\n page: 1,\n itemsPerPage: this.config.backgroundOperations.listPageSize\n })\n ): Observable<CollectionHttpResponse<NhBackgroundOperationAdministration>> {\n return this.api.getCollection<NhBackgroundOperationAdministration>(this.baseUrl, request);\n }\n\n get(operationId: string, eventsAfterSequence?: number): Observable<NhBackgroundOperationAdministration> {\n let params = new HttpParams();\n if (eventsAfterSequence !== undefined) {\n params = params.set('eventsAfterSequence', eventsAfterSequence.toString());\n }\n\n return this.api.get<NhBackgroundOperationAdministration>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}`,\n new HttpRequestOptions({ params })\n );\n }\n\n cancel(operationId: string): Observable<NhBackgroundOperationAdministration> {\n return this.api.post<NhBackgroundOperationAdministration>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}/cancel`,\n {}\n );\n }\n\n retry(operationId: string): Observable<NhBackgroundOperationAdministration> {\n return this.api.post<NhBackgroundOperationAdministration>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}/retry`,\n {}\n );\n }\n\n private joinUrl(base: string, suffix: string): string {\n return `${base.replace(/\\/$/, '')}/${suffix.replace(/^\\//, '')}`;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport type { HubConnection } from '@microsoft/signalr';\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\nimport { NhBackgroundOperationChanged } from '../models/background-operation.models';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhAppService } from './nh-app.service';\nimport { NhAuthService } from './nh-auth.service';\n\nexport type NhBackgroundOperationConnectionState =\n 'disabled' | 'disconnected' | 'connecting' | 'connected' | 'reconnecting';\n\n@Injectable({ providedIn: 'root' })\nexport class NhBackgroundOperationLiveUpdateService implements OnDestroy {\n private readonly changedSubject = new Subject<NhBackgroundOperationChanged>();\n private readonly resyncSubject = new Subject<void>();\n private readonly connectionStateSubject = new BehaviorSubject<NhBackgroundOperationConnectionState>('disconnected');\n private readonly authSubscription: Subscription;\n private connection?: HubConnection;\n private connectPromise?: Promise<void>;\n private reconnectTimer?: ReturnType<typeof setTimeout>;\n private consumers = 0;\n private authorizationScopeKey: string;\n\n readonly changed$: Observable<NhBackgroundOperationChanged> = this.changedSubject.asObservable();\n readonly resync$: Observable<void> = this.resyncSubject.asObservable();\n readonly connectionState$: Observable<NhBackgroundOperationConnectionState> = this.connectionStateSubject.asObservable();\n\n constructor(\n private readonly config: NhCommonModuleConfig,\n private readonly auth: NhAuthService,\n private readonly app: NhAppService\n ) {\n this.authorizationScopeKey = this.getAuthorizationScopeKey();\n\n if (!config.backgroundOperations.liveUpdatesEnabled || app.isPlatformServer()) {\n this.connectionStateSubject.next('disabled');\n }\n\n this.authSubscription = auth.authSubject.subscribe(() => {\n const nextScopeKey = this.getAuthorizationScopeKey();\n if (nextScopeKey === this.authorizationScopeKey) {\n return;\n }\n\n this.authorizationScopeKey = nextScopeKey;\n if (this.consumers > 0 && this.isEnabled()) {\n void this.restart();\n }\n });\n }\n\n start(): void {\n this.consumers++;\n if (this.consumers === 1 && this.isEnabled()) {\n void this.ensureConnected();\n }\n }\n\n stop(): void {\n if (this.consumers === 0) {\n return;\n }\n\n this.consumers--;\n if (this.consumers === 0) {\n this.clearReconnectTimer();\n void this.stopConnection();\n }\n }\n\n ngOnDestroy(): void {\n this.consumers = 0;\n this.clearReconnectTimer();\n this.authSubscription.unsubscribe();\n void this.stopConnection();\n this.changedSubject.complete();\n this.resyncSubject.complete();\n this.connectionStateSubject.complete();\n }\n\n private isEnabled(): boolean {\n return this.config.backgroundOperations.liveUpdatesEnabled && !this.app.isPlatformServer();\n }\n\n private async restart(): Promise<void> {\n await this.stopConnection();\n if (this.consumers > 0) {\n await this.ensureConnected();\n }\n }\n\n private ensureConnected(): Promise<void> {\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n if (this.connection?.state === 'Connected') {\n return Promise.resolve();\n }\n\n this.connectPromise = this.connectCore().finally(() => {\n this.connectPromise = undefined;\n });\n return this.connectPromise;\n }\n\n private async connectCore(): Promise<void> {\n this.connectionStateSubject.next('connecting');\n try {\n this.connection ??= await this.buildConnection();\n await this.connection.start();\n this.connectionStateSubject.next('connected');\n this.resyncSubject.next();\n } catch {\n this.connectionStateSubject.next('disconnected');\n this.scheduleReconnect();\n }\n }\n\n private async buildConnection(): Promise<HubConnection> {\n const signalR = await import('@microsoft/signalr');\n const baseHubUrl = this.joinUrl(\n this.config.backgroundOperations.hubBaseUrl || this.config.baseUrl || this.config.apiBaseUrl,\n this.config.backgroundOperations.hubUrlSuffix\n );\n const divisionId = this.auth.getAuthorization()?.activeDivision?.id;\n const hubUrl = divisionId\n ? this.appendQueryParameter(baseHubUrl, 'divisionId', divisionId)\n : baseHubUrl;\n const connection = new signalR.HubConnectionBuilder()\n .withUrl(hubUrl, {\n withCredentials: true,\n accessTokenFactory: () =>\n this.config.authType === 'header'\n ? this.auth.getAuthorization()?.token ?? ''\n : ''\n })\n .withAutomaticReconnect([0, 2000, 5000, 10000, 30000])\n .configureLogging(signalR.LogLevel.Warning)\n .build();\n\n connection.on('OperationChanged', (change: NhBackgroundOperationChanged) => {\n this.changedSubject.next(change);\n });\n connection.onreconnecting(() => this.connectionStateSubject.next('reconnecting'));\n connection.onreconnected(() => {\n this.connectionStateSubject.next('connected');\n this.resyncSubject.next();\n });\n connection.onclose(() => {\n this.connectionStateSubject.next('disconnected');\n this.scheduleReconnect();\n });\n return connection;\n }\n\n private async stopConnection(): Promise<void> {\n const connection = this.connection;\n this.connection = undefined;\n this.connectPromise = undefined;\n if (connection && connection.state !== 'Disconnected') {\n try {\n await connection.stop();\n } catch {\n // A failed transport is already disconnected from the application's\n // perspective. Polling remains the durable fallback.\n }\n }\n\n if (this.isEnabled()) {\n this.connectionStateSubject.next('disconnected');\n }\n }\n\n private scheduleReconnect(): void {\n if (this.consumers === 0 || this.reconnectTimer || !this.isEnabled()) {\n return;\n }\n\n this.reconnectTimer = setTimeout(() => {\n this.reconnectTimer = undefined;\n void this.ensureConnected();\n }, 5000);\n }\n\n private clearReconnectTimer(): void {\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = undefined;\n }\n }\n\n private joinUrl(base: string, suffix: string): string {\n return `${base.replace(/\\/$/, '')}/${suffix.replace(/^\\//, '')}`;\n }\n\n private appendQueryParameter(url: string, name: string, value: string): string {\n const separator = url.includes('?') ? '&' : '?';\n return `${url}${separator}${encodeURIComponent(name)}=${encodeURIComponent(value)}`;\n }\n\n private getAuthorizationScopeKey(): string {\n const authorization = this.auth.getAuthorization();\n return `${authorization?.user?.id ?? 'anonymous'}:${authorization?.activeDivision?.id ?? 'global'}`;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport {\n BehaviorSubject,\n catchError,\n defer,\n EMPTY,\n exhaustMap,\n finalize,\n map,\n Observable,\n of,\n Subscription,\n timer\n} from 'rxjs';\nimport {\n NhBackgroundOperation,\n NhBackgroundOperationChanged,\n NhBackgroundOperationCollectionHttpRequestOptions\n} from '../models/background-operation.models';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhBackgroundOperationLiveUpdateService } from './nh-background-operation-live-update.service';\nimport { NhBackgroundOperationService } from './nh-background-operation.service';\nimport { NhAuthService } from './nh-auth.service';\nimport { INhAuthorization } from '../models/auth.models';\n\n@Injectable({ providedIn: 'root' })\nexport class NhBackgroundOperationStore implements OnDestroy {\n private readonly operationsSubject = new BehaviorSubject<ReadonlyMap<string, NhBackgroundOperation>>(new Map());\n private readonly errorSubject = new BehaviorSubject<unknown | undefined>(undefined);\n private readonly subscriptions = new Subscription();\n private readonly watchedIds = new Map<string, number>();\n private readonly refreshing = new Set<string>();\n private readonly refreshAgain = new Set<string>();\n private pollingSubscription?: Subscription;\n private consumers = 0;\n private scopeGeneration = 0;\n private scopeKey: string;\n\n readonly operations$: Observable<readonly NhBackgroundOperation[]> = this.operationsSubject.pipe(\n map(items =>\n [...items.values()].sort((left, right) =>\n right.lastModifiedDateTime.localeCompare(left.lastModifiedDateTime)\n )\n )\n );\n readonly error$: Observable<unknown | undefined> = this.errorSubject.asObservable();\n readonly connectionState$ = this.live.connectionState$;\n\n constructor(\n private readonly api: NhBackgroundOperationService,\n private readonly live: NhBackgroundOperationLiveUpdateService,\n private readonly config: NhCommonModuleConfig,\n private readonly auth: NhAuthService\n ) {\n this.scopeKey = this.getScopeKey(this.auth.getAuthorization());\n\n this.subscriptions.add(\n this.auth.authSubject.subscribe(authorization => this.onAuthorizationChanged(authorization))\n );\n this.subscriptions.add(\n this.live.changed$.subscribe(change => this.onLiveChange(change))\n );\n this.subscriptions.add(\n this.live.resync$.subscribe(() => {\n void this.refreshList();\n for (const id of this.watchedIds.keys()) {\n this.refreshOperation(id);\n }\n })\n );\n }\n\n watchAll(): Observable<readonly NhBackgroundOperation[]> {\n return defer(() => {\n this.start();\n return this.operations$.pipe(finalize(() => this.stop()));\n });\n }\n\n watch(operationId: string): Observable<NhBackgroundOperation | undefined> {\n return defer(() => {\n this.start();\n this.watchedIds.set(operationId, (this.watchedIds.get(operationId) ?? 0) + 1);\n this.refreshOperation(operationId);\n return this.operationsSubject.pipe(\n map(operations => operations.get(operationId)),\n finalize(() => {\n const watchers = (this.watchedIds.get(operationId) ?? 1) - 1;\n if (watchers <= 0) {\n this.watchedIds.delete(operationId);\n } else {\n this.watchedIds.set(operationId, watchers);\n }\n this.stop();\n })\n );\n });\n }\n\n start(): void {\n this.consumers++;\n if (this.consumers !== 1) {\n return;\n }\n\n this.live.start();\n this.pollingSubscription = timer(\n 0,\n Math.max(1000, this.config.backgroundOperations.pollingInterval)\n )\n .pipe(exhaustMap(() => this.loadSnapshot()))\n .subscribe();\n }\n\n stop(): void {\n if (this.consumers === 0) {\n return;\n }\n\n this.consumers--;\n if (this.consumers === 0) {\n this.pollingSubscription?.unsubscribe();\n this.pollingSubscription = undefined;\n this.live.stop();\n }\n }\n\n refreshList(): Promise<void> {\n return new Promise(resolve => this.loadList().subscribe({ complete: resolve }));\n }\n\n cancel(operationId: string): Observable<NhBackgroundOperation> {\n const generation = this.scopeGeneration;\n return this.api.cancel(operationId).pipe(\n map(operation => this.mergeDetail(operation, generation))\n );\n }\n\n retry(operationId: string): Observable<NhBackgroundOperation> {\n const generation = this.scopeGeneration;\n return this.api.retry(operationId).pipe(\n map(operation => this.mergeDetail(operation, generation))\n );\n }\n\n ngOnDestroy(): void {\n this.pollingSubscription?.unsubscribe();\n this.subscriptions.unsubscribe();\n if (this.consumers > 0) {\n this.consumers = 0;\n this.live.stop();\n }\n this.operationsSubject.complete();\n this.errorSubject.complete();\n }\n\n private loadList(): Observable<void> {\n const generation = this.scopeGeneration;\n const request = new NhBackgroundOperationCollectionHttpRequestOptions({\n page: 1,\n itemsPerPage: this.config.backgroundOperations.listPageSize\n });\n return this.api.list(request).pipe(\n map(response => {\n if (generation !== this.scopeGeneration) {\n return;\n }\n\n this.replaceListSnapshot(response.items ?? []);\n this.errorSubject.next(undefined);\n }),\n catchError(error => {\n if (generation === this.scopeGeneration) {\n this.errorSubject.next(error);\n }\n\n return of(undefined);\n })\n );\n }\n\n private loadSnapshot(): Observable<void> {\n return this.loadList().pipe(\n map(() => {\n for (const id of this.watchedIds.keys()) {\n this.refreshOperation(id);\n }\n })\n );\n }\n\n private onLiveChange(change: NhBackgroundOperationChanged): void {\n const existing = this.operationsSubject.value.get(change.operationId);\n if (existing && existing.version >= change.version && existing.latestEventSequence >= change.latestEventSequence) {\n return;\n }\n this.refreshOperation(change.operationId);\n }\n\n private refreshOperation(operationId: string): void {\n const generation = this.scopeGeneration;\n const refreshKey = `${generation}:${operationId}`;\n if (this.refreshing.has(refreshKey)) {\n this.refreshAgain.add(refreshKey);\n return;\n }\n\n this.refreshing.add(refreshKey);\n const existing = this.operationsSubject.value.get(operationId);\n this.api\n .get(operationId, existing?.latestEventSequence)\n .pipe(\n catchError(error => {\n if (generation === this.scopeGeneration) {\n if (this.shouldRemoveAfterError(error)) {\n this.removeOperation(operationId);\n }\n\n this.errorSubject.next(error);\n }\n\n return EMPTY;\n }),\n finalize(() => {\n this.refreshing.delete(refreshKey);\n if (this.refreshAgain.delete(refreshKey) && generation === this.scopeGeneration) {\n this.refreshOperation(operationId);\n }\n })\n )\n .subscribe(operation => {\n if (generation === this.scopeGeneration) {\n this.mergeDetail(operation, generation);\n this.errorSubject.next(undefined);\n }\n });\n }\n\n private mergeSummary(incoming: NhBackgroundOperation): NhBackgroundOperation {\n const existing = this.operationsSubject.value.get(incoming.id);\n if (existing && incoming.version < existing.version) {\n return existing;\n }\n\n const merged = existing\n ? {\n ...incoming,\n attempts: existing.attempts,\n steps: existing.steps,\n children: existing.children,\n events: existing.events\n }\n : incoming;\n this.setOperation(merged);\n return merged;\n }\n\n private mergeDetail(\n incoming: NhBackgroundOperation,\n generation: number = this.scopeGeneration\n ): NhBackgroundOperation {\n if (generation !== this.scopeGeneration) {\n return incoming;\n }\n\n const existing = this.operationsSubject.value.get(incoming.id);\n if (existing && incoming.version < existing.version) {\n return existing;\n }\n\n const events = new Map<number, typeof incoming.events[number]>();\n for (const event of existing?.events ?? []) {\n events.set(event.sequence, event);\n }\n for (const event of incoming.events ?? []) {\n events.set(event.sequence, event);\n }\n const merged = {\n ...incoming,\n events: [...events.values()].sort((left, right) => left.sequence - right.sequence)\n };\n this.setOperation(merged);\n return merged;\n }\n\n private setOperation(operation: NhBackgroundOperation): void {\n const operations = new Map(this.operationsSubject.value);\n operations.set(operation.id, operation);\n this.operationsSubject.next(operations);\n }\n\n private replaceListSnapshot(incoming: readonly NhBackgroundOperation[]): void {\n const current = this.operationsSubject.value;\n const next = new Map<string, NhBackgroundOperation>();\n\n for (const watchedId of this.watchedIds.keys()) {\n const watched = current.get(watchedId);\n if (watched) {\n next.set(watchedId, watched);\n }\n }\n\n for (const operation of incoming) {\n const existing = current.get(operation.id);\n if (existing && operation.version < existing.version) {\n next.set(operation.id, existing);\n continue;\n }\n\n next.set(\n operation.id,\n existing\n ? {\n ...operation,\n attempts: existing.attempts,\n steps: existing.steps,\n children: existing.children,\n events: existing.events\n }\n : operation\n );\n }\n\n this.operationsSubject.next(next);\n }\n\n private onAuthorizationChanged(authorization: INhAuthorization | undefined): void {\n const nextScopeKey = this.getScopeKey(authorization);\n if (nextScopeKey === this.scopeKey) {\n return;\n }\n\n this.scopeKey = nextScopeKey;\n this.scopeGeneration++;\n this.operationsSubject.next(new Map());\n this.errorSubject.next(undefined);\n\n if (this.consumers > 0) {\n void this.refreshList();\n for (const id of this.watchedIds.keys()) {\n this.refreshOperation(id);\n }\n }\n }\n\n private getScopeKey(authorization: INhAuthorization | undefined): string {\n const userId = authorization?.user?.id ?? 'anonymous';\n const divisionId = authorization?.activeDivision?.id ?? 'global';\n return `${userId}:${divisionId}`;\n }\n\n private shouldRemoveAfterError(error: unknown): boolean {\n return error instanceof HttpErrorResponse\n && [401, 403, 404].includes(error.status);\n }\n\n private removeOperation(operationId: string): void {\n if (!this.operationsSubject.value.has(operationId)) {\n return;\n }\n\n const operations = new Map(this.operationsSubject.value);\n operations.delete(operationId);\n this.operationsSubject.next(operations);\n }\n}\n","import {Inject, Injectable, OnDestroy, PLATFORM_ID, Renderer2, RendererFactory2} from \"@angular/core\";\nimport {NhAppService} from \"./nh-app.service\";\n\nexport class NhContextMenuItem {\n type: 'item'|'divider' = 'item';\n title: string = '';\n onClick: (event: any) => Promise<void> = () => Promise.resolve();\n\n public constructor(init?: Partial<NhContextMenuItem>) {\n Object.assign(this, init);\n }\n}\n\n// Create typedef for event to make sure it has clientX and clientY\nexport type NhContextEventWithCoordinates = { clientX: number; clientY: number};\n\nexport class NhContextMenu {\n x: number = 0;\n y: number = 0;\n items: NhContextMenuItem[] = [];\n\n static fromEvent(event?: NhContextEventWithCoordinates): NhContextMenu {\n const contextMenu = new NhContextMenu();\n if(event) {\n contextMenu.x = event.clientX;\n contextMenu.y = event.clientY;\n }\n\n return contextMenu;\n }\n\n withItems(items: NhContextMenuItem[]): NhContextMenu {\n this.items = items;\n return this;\n }\n\n public constructor(init?: Partial<NhContextMenu>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhContextMenuServiceConfig {\n zIndex: number = 8;\n public constructor(init?: Partial<NhContextMenuServiceConfig>) {\n Object.assign(this, init);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhContextMenuService implements OnDestroy {\n public readonly config: NhContextMenuServiceConfig = new NhContextMenuServiceConfig();\n private renderer: Renderer2;\n private contextMenuElement: HTMLElement|undefined;\n private unlistenHandles: (() => void)[] = [];\n private globalListenCloseHandles: (() => void)[] = [];\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: Object,\n private readonly appService: NhAppService,\n private readonly rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n\n if(!this.appService.isPlatformServer()) {\n this.globalListenCloseHandles.push(this.renderer.listen('window', 'resize', (event) => {\n this.handleClose(event, true);\n }));\n\n this.globalListenCloseHandles.push(this.renderer.listen('window', 'scroll', (event) => {\n this.handleClose(event, true);\n }));\n\n this.globalListenCloseHandles.push(this.renderer.listen('document', 'click', (event) => {\n this.handleClose(event);\n }));\n\n this.globalListenCloseHandles.push(this.renderer.listen('document', 'keydown', (event) => {\n if(event?.key === \"Escape\") {\n this.handleClose(event);\n }\n }));\n }\n }\n\n ngOnDestroy() {\n this.cleanupContextMenu();\n if(this.globalListenCloseHandles) {\n for(const unlistenHandle of this.globalListenCloseHandles) {\n unlistenHandle();\n }\n }\n }\n\n private handleClose(event: any, force: boolean = false) {\n if(!this.isOpen() || !event) {\n return;\n }\n\n const targetElement = event.target as HTMLElement;\n if(!force && targetElement && targetElement.classList.contains('nh-context-menu-item')) {\n return;\n }\n\n this.cleanupContextMenu();\n }\n\n private isOpen() {\n return this.contextMenuElement !== undefined;\n }\n\n private getContainerElement(): HTMLElement {\n return document.getElementsByTagName('body')[0];\n }\n\n private cleanupContextMenu() {\n for(const unlistenHandle of this.unlistenHandles) {\n unlistenHandle();\n }\n\n this.unlistenHandles = [];\n\n if(this.contextMenuElement) {\n this.renderer.removeChild(this.getContainerElement(), this.contextMenuElement);\n this.contextMenuElement = undefined;\n }\n }\n\n open(contextMenu: NhContextMenu) {\n\n if(this.appService.isPlatformServer()) {\n return;\n }\n\n this.cleanupContextMenu();\n\n if(!contextMenu.items.any()) {\n return;\n }\n\n const containerElement = this.getContainerElement();\n this.contextMenuElement = this.renderer.createElement('ul') as HTMLElement;\n\n this.renderer.addClass(this.contextMenuElement, 'nh-context-menu');\n this.renderer.setStyle(this.contextMenuElement, 'top', contextMenu.y + 'px');\n this.renderer.setStyle(this.contextMenuElement, 'left', contextMenu.x + 'px');\n this.renderer.setStyle(this.contextMenuElement, 'position', 'absolute');\n this.renderer.setStyle(this.contextMenuElement, 'z-index', this.config.zIndex.toString());\n\n for(const item of contextMenu.items) {\n this.addMenuItem(this.contextMenuElement, item);\n }\n\n this.renderer.appendChild(containerElement, this.contextMenuElement);\n }\n\n close() {\n this.cleanupContextMenu();\n }\n\n private addMenuItem(contextMenuElement: HTMLElement, menuItem: NhContextMenuItem) {\n const menuItemElement = this.renderer.createElement('li') as HTMLElement;\n this.renderer.addClass(menuItemElement, 'nh-context-menu-item');\n\n if(menuItem.type === 'divider') {\n this.renderer.addClass(menuItemElement, 'divider');\n } else if (menuItem.type === 'item') {\n menuItemElement.innerHTML = menuItem.title;\n\n const unlistenHandle = this.renderer.listen(menuItemElement, 'click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if(menuItem.onClick) {\n menuItem.onClick(event).then(() => {\n this.cleanupContextMenu();\n });\n }\n });\n\n this.unlistenHandles.push(unlistenHandle);\n } else {\n\n }\n\n this.renderer.appendChild(contextMenuElement, menuItemElement);\n }\n}\n","import {inject, PLATFORM_ID} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {ActivatedRoute, ActivatedRouteSnapshot, Router, RouterStateSnapshot} from '@angular/router';\nimport {NhAuthService} from \"../services/nh-auth.service\";\nimport {Claim} from \"../models/auth.models\";\nimport {NhCommonModuleConfig} from \"../models/config.models\";\n\n\nexport const NhIsAuthenticatedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n const platformConfig = inject(NhCommonModuleConfig);\n\n const canActivate = authService.isAuthenticated();\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null;\n\n let url = '/';\n if(platformConfig?.authentication?.loginPath && platformConfig.authentication.loginPath.length > 0) {\n url = platformConfig.authentication.loginPath;\n }\n\n if (redirectUrl) {\n router.navigate([redirectUrl]);\n } else {\n router.navigate([url]);\n }\n }\n\n return canActivate;\n}\n\nexport const NhIsOneClaimGrantedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n\n const claims = route.data['oneMatchClaims'] as Array<Claim>;\n if (!claims || claims.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOneClaimGranted(claims);\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\n\nexport const NhIsOnePermissionGrantedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n\n const permissions = route.data['oneMatchPermissions'] as Array<string>;\n\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOnePermissionGranted(permissions);\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\nexport const NhIsAllPermissionsGrantedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n\n const permissions = route.data[\"allMatchPermissions\"] as Array<string>;\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isAllPermissionsGranted(permissions);\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data[\"isAuthenticatedGuardRedirectPath\"] as string|undefined|null ?? \"/\";\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\n\nexport const NhIsOneRoleGrantedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n\n const roles = route.data['oneMatchRoles'] as Array<string>;\n\n if (!roles || roles.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOneRoleGranted(roles);\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\nexport const IsOneActiveDivisionPermissionGrantedGuard = () => {\n const route = inject(ActivatedRoute);\n const authService = inject(NhAuthService);\n const router = inject(Router);\n\n const permissions = (<any>route)?.data['activeDivisionOneMatchPermissions'] as Array<string>;\n\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOneActiveDivisionPermissionGranted(permissions);\n\n if (!canActivate) {\n const redirectUrl = (<any>route)?.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\nexport const IsOneActiveDivisionRoleGrantedGuard = () => {\n const route = inject(ActivatedRoute);\n const authService = inject(NhAuthService);\n const router = inject(Router);\n\n const roles = (<any>route)?.data['activeDivisionOneMatchRoles'] as Array<string>;\n\n if (!roles || roles.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOneActiveDivisionRoleGranted(roles);\n\n if (!canActivate) {\n const redirectUrl = (<any>route)?.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'nhUrlEncode',\n standalone: false\n})\nexport class NhUrlEncodePipe implements PipeTransform {\n transform(value: string | undefined | null): string|undefined|null {\n if (!value) {\n return value;\n }\n\n return encodeURIComponent(value ?? '');\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport {NhCommonModuleConfig} from \"../models/config.models\";\n\n@Pipe({\n name: 'nhDate',\n pure: false,\n standalone: false\n})\nexport class NhDatePipe implements PipeTransform {\n\n constructor(private moduleConfig: NhCommonModuleConfig) {\n }\n\n transform(value: any, pattern?: string): any {\n pattern ??= this.moduleConfig.defaultDateFormat;\n const datePipe: DatePipe = new DatePipe(this.moduleConfig.language);\n return datePipe.transform(value, pattern);\n }\n}\n\n@Pipe({\n name: 'nhDateTime',\n pure: false,\n standalone: false\n})\nexport class NhDateTimePipe implements PipeTransform {\n\n constructor(private moduleConfig: NhCommonModuleConfig) {\n }\n\n transform(value: any, pattern?: string): any {\n pattern ??= this.moduleConfig.defaultDateTimeFormat;\n const datePipe: NhDatePipe = new NhDatePipe(this.moduleConfig);\n return datePipe.transform(value, pattern);\n }\n}\n\n@Pipe({\n name: 'nhDateUtc',\n pure: false,\n standalone: false\n})\nexport class NhDateUtcPipe implements PipeTransform {\n\n constructor(private moduleConfig: NhCommonModuleConfig) {\n }\n\n transform(value: any, pattern: string = 'dd-MM-yyyy HH:mm:ss'): any {\n if(value && !value.toString().endsWith('Z')) {\n value = value + 'Z';\n }\n const datePipe: DatePipe = new DatePipe(this.moduleConfig.language);\n return datePipe.transform(value, pattern);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Claim} from '../models/auth.models';\nimport {NhAuthService} from '../services/nh-auth.service';\n\n@Pipe({\n name: 'isOnePermissionGranted',\n standalone: false\n})\nexport class IsOnePermissionGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(permissions: Array<string>): boolean {\n return this.authService.isOnePermissionGranted(permissions);\n }\n}\n\n@Pipe({\n name: \"isAllPermissionsGranted\",\n standalone: false\n})\nexport class IsAllPermissionsGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(permissions: Array<string>): boolean {\n return this.authService.isAllPermissionsGranted(permissions);\n }\n}\n\n@Pipe({\n name: 'isGrantedRole',\n standalone: false\n})\nexport class IsGrantedRolePipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(roles: string | string[]): boolean {\n return this.authService.isGrantedRole(roles);\n }\n}\n\n@Pipe({\n name: 'isAuthenticated',\n standalone: false\n})\nexport class IsAuthenticatedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(): boolean {\n return this.authService.isAuthenticated();\n }\n}\n\n@Pipe({\n name: 'isClaimGranted',\n standalone: false\n})\nexport class IsClaimGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(claim: Claim): boolean {\n return this.authService.isClaimGranted(claim);\n }\n}\n\n@Pipe({\n name: 'isOneClaimGranted',\n standalone: false\n})\nexport class IsOneClaimGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(claims: Array<Claim>): boolean {\n return this.authService.isOneClaimGranted(claims);\n }\n}\n\n@Pipe({\n name: 'isOneRoleGranted',\n standalone: false\n})\nexport class IsOneRoleGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(roles: Array<string>): boolean {\n return this.authService.isOneRoleGranted(roles);\n }\n}\n\n@Pipe({\n name: 'isOneDivisionPermissionGranted',\n standalone: false\n})\nexport class IsOneDivisionPermissionGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(divisionId: string, permissions: Array<string>): boolean {\n return this.authService.isOneDivisionPermissionGranted(divisionId, permissions);\n }\n}\n\n@Pipe({\n name: 'isOneDivisionRoleGranted',\n standalone: false\n})\nexport class IsOneDivisionRoleGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(divisionId: string, roles: Array<string>): boolean {\n return this.authService.isOneDivisionRoleGranted(divisionId, roles);\n }\n}\n\n@Pipe({\n name: 'isOneActiveDivisionPermissionGranted',\n standalone: false\n})\nexport class IsOneActiveDivisionPermissionGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(permissions: Array<string>): boolean {\n return this.authService.isOneActiveDivisionPermissionGranted(permissions);\n }\n}\n\n@Pipe({\n name: 'isOneActiveDivisionRoleGranted',\n standalone: false\n})\nexport class IsOneActiveDivisionRoleGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(roles: Array<string>): boolean {\n return this.authService.isOneActiveDivisionRoleGranted(roles);\n }\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Pipe({\n name: 'nhBooleanToString',\n standalone: false\n})\nexport class NhBooleanToStringPipe implements PipeTransform {\n\n constructor(private translateService: TranslateService) {\n\n }\n\n transform(value: boolean | undefined): string {\n if (value === undefined) {\n return '';\n }\n\n return value\n ? this.translateService.instant('Yes')\n : this.translateService.instant('No');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: false\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitized: DomSanitizer) {}\n transform(value: string) {\n return this.sanitized.bypassSecurityTrustHtml(value);\n }\n}\n\n@Pipe({\n name: 'safeUrl',\n standalone: false\n})\nexport class SafeUrlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(value: string) {\n return this.sanitizer.bypassSecurityTrustUrl(value);\n }\n}\n\n@Pipe({\n name: 'safeResourceUrl',\n standalone: false\n})\nexport class SafeResourceUrlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(value: string) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\n\nimport { Directive, ElementRef, Inject, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nconst TO_HEAD_SELECTOR = 'nhToHead';\n\n@Directive({\n selector: `[nhToHead]`,\n exportAs: 'nhToHead',\n standalone: false\n})\nexport class NhToHeadDirective implements OnInit, OnDestroy {\n constructor(\n @Inject(DOCUMENT) private _document: Document,\n private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n }\n\n ngOnInit(): void {\n this._renderer.appendChild(this._document.head, this._elementRef.nativeElement);\n this._renderer.removeAttribute(this._elementRef.nativeElement, TO_HEAD_SELECTOR.toLowerCase());\n }\n\n ngOnDestroy(): void {\n this._renderer.removeChild(this._document.head, this._elementRef.nativeElement);\n }\n}\n","import {distinctUntilChanged, debounceTime, takeUntil} from 'rxjs/operators';\nimport {Directive, OnDestroy, OnInit, input, output, HostListener} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {Subject, Subscription, tap} from 'rxjs';\nimport {Router} from \"@angular/router\";\n\n\n@Directive({\n selector: '[ngModel][nhDebounce]',\n standalone: false\n})\nexport class NhDebounceDirective implements OnInit, OnDestroy {\n public readonly onDebounce = output<any>();\n public readonly preDebounce = output<any>();\n\n public readonly debounceTime = input(500, { alias: \"nhDebounce\" });\n\n private isFirstChange = true;\n private ngUnsubscribe: Subject<void> = new Subject<void>();\n\n constructor(public model: NgControl) {\n }\n\n ngOnInit() {\n if(this.model && this.model.valueChanges) {\n this.model.valueChanges.pipe(\n takeUntil(this.ngUnsubscribe),\n debounceTime(this.debounceTime()),\n distinctUntilChanged(),)\n .subscribe(modelValue => {\n if (this.isFirstChange) {\n this.isFirstChange = false;\n } else {\n this.onDebounce.emit(modelValue);\n }\n });\n\n this.model.valueChanges.pipe(\n takeUntil(this.ngUnsubscribe),\n distinctUntilChanged(),)\n .subscribe(modelValue => {\n if (this.isFirstChange) {\n this.isFirstChange = false;\n } else {\n this.preDebounce.emit(modelValue);\n }\n });\n }\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n\n\n@Directive({\n selector: '[nhButtonDebounce]',\n standalone: false\n})\nexport class NhButtonDebounceDirective implements OnInit, OnDestroy {\n public readonly onDebounce = output<any>();\n\n public readonly debounceTime = input(500, { alias: \"debounce\" });\n\n private clicks = new Subject();\n private subscription?: Subscription;\n\n constructor() {\n }\n\n ngOnInit() {\n this.subscription = this.clicks.pipe(\n tap(_ => console.log('tap')),\n debounceTime(this.debounceTime())\n ).subscribe(e => this.onDebounce.emit(e));\n }\n\n @HostListener('click', ['$event'])\n clickEvent(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.clicks.next(event);\n }\n\n ngOnDestroy() {\n this.clicks.complete();\n this.subscription?.unsubscribe();\n }\n}\n","import {Directive, ElementRef, HostListener, Inject, Input, OnInit, Optional, Renderer2} from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n PRIMARY_OUTLET,\n Router,\n RouterLink,\n UrlSegmentGroup\n} from \"@angular/router\";\nimport {NH_ROUTER_LANGUAGE_CHANGE_METHOD, NhRouterService} from \"../services/nh-router.service\";\nimport {NhRouterLink} from \"../models/misc.models\";\nimport {TranslateService} from \"@ngx-translate/core\";\n\n@Directive({\n selector: `[nhRouterLink]`,\n exportAs: 'nhRouterLink',\n hostDirectives: [{\n directive: RouterLink,\n inputs: [\n 'target: target',\n 'queryParams: queryParams',\n 'fragment: fragment',\n 'queryParamsHandling: queryParamsHandling',\n 'state: state',\n 'info: info',\n 'relativeTo: relativeTo',\n 'preserveFragment: preserveFragment',\n 'skipLocationChange: skipLocationChange',\n 'replaceUrl: replaceUrl'\n ]\n }],\n standalone: false\n})\nexport class NhRouterLinkDirective implements OnInit {\n private _nhRouterLink: NhRouterLink | null | undefined;\n private _resolvedNhRouterLink: any[] | string | null | undefined;\n\n @Input() set nhRouterLink(nhRouterLink: NhRouterLink | undefined) {\n this._nhRouterLink = nhRouterLink;\n\n if (this.hostRouterLink) {\n this._resolvedNhRouterLink = this.transformRouteLink(this._nhRouterLink);\n this.hostRouterLink.routerLink = this._resolvedNhRouterLink;\n this.hostRouterLink.ngOnChanges(<any>{}); // Trigger fake ngOnChanges\n }\n }\n\n get nhRouterLink(): NhRouterLink | null | undefined {\n return this._nhRouterLink;\n }\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private hostRouterLink: RouterLink,\n private router: Router,\n private routerService: NhRouterService,\n private translateService: TranslateService,\n @Optional() @Inject(NH_ROUTER_LANGUAGE_CHANGE_METHOD) private changeLanguageMethod: (newLanguage: string) => Promise<void>\n ) {\n }\n\n ngOnInit() {\n\n }\n\n private transformRouteLink(routeLink: NhRouterLink | null | undefined): any[] | string | null | undefined {\n if (routeLink === null || routeLink === undefined) {\n return routeLink;\n }\n\n return this.routerService.createUrlForNavigationItem(routeLink);\n }\n\n /** @nodoc */\n @HostListener('click', [\n '$event.button',\n '$event.ctrlKey',\n '$event.shiftKey',\n '$event.altKey',\n '$event.metaKey',\n ])\n async onClick(\n button: number,\n ctrlKey: boolean,\n shiftKey: boolean,\n altKey: boolean,\n metaKey: boolean,\n ): Promise<boolean> {\n if (this._nhRouterLink && this._nhRouterLink.language && this._nhRouterLink.language !== this.translateService.currentLang) {\n // We detected a language change, change the language and reload the routes so navigation works.\n if (!this.changeLanguageMethod) {\n throw new Error('Nh_ROUTER_LANGUAGE_CHANGE_METHOD is not defined via DI injection token.');\n }\n // We detected a language change, change the language and reload the routes so navigation works.\n await this.changeLanguageMethod(this._nhRouterLink.language);\n this.routerService.reloadRoutes();\n }\n if (window?.scrollTo && this._nhRouterLink?.scrollToTop !== false) {\n setTimeout(() => window.scrollTo(0, 0), 10);\n }\n return this.hostRouterLink.onClick(button, ctrlKey, shiftKey, altKey, metaKey);\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Port of https://github.com/coryrylan/ngx-lite/blob/master/projects/ngx-json-ld/src/ngx-json-ld.component.ts\n */\n@Component({\n selector: 'nh-json-ld',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class NhJsonLdComponent {\n @Input() set json(value: any) {\n this._jsonLD = this._getSafeHTML(value);\n }\n\n @HostBinding('innerHTML') private _jsonLD?: SafeHtml;\n\n constructor(private _sanitizer: DomSanitizer) {\n }\n\n private _getSafeHTML(value: any) {\n const json = value\n ? JSON.stringify(value, null, 2).replace(/<\\/script>/g, '<\\\\/script>')\n : '';\n const html = `<script type=\"application/ld+json\">${json}</script>`;\n\n return this._sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { Component, input } from '@angular/core';\nimport {INhModalComponent, NhModalComponentRef} from \"../../services/nh-modal.service\";\n\n@Component({\n selector: 'nh-loading-modal',\n templateUrl: './component.html',\n styleUrls: ['./component.scss'],\n standalone: false\n})\nexport class NhModalLoadingComponent implements INhModalComponent<NhModalLoadingComponent> {\n readonly information = input<string>('');\n modalComponentRef: NhModalComponentRef<NhModalLoadingComponent> | undefined;\n\n setModalComponentRef(ref: NhModalComponentRef<NhModalLoadingComponent>): void {\n this.modalComponentRef = ref;\n }\n}\n","<div class=\"grid center\">\n <nh-loader [hasBackdrop]=\"false\"></nh-loader>\n {{ information() }}\n</div>\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n AfterContentInit, AfterViewInit,\n Component,\n inject,\n OnChanges,\n OnDestroy,\n OnInit, PLATFORM_ID, Type\n} from \"@angular/core\";\nimport {ActivatedRoute, NavigationEnd, ParamMap, Params, Router} from \"@angular/router\";\nimport {filter, Subscription} from \"rxjs\";\n\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {NhPageService, NhPageSettings, TypedNhPageSettings} from \"../../services/nh-page.service\";\nimport {NhConfigCommonService} from \"../../services/nh-config.service\";\nimport {BaseNhAuthService, NhAuthService} from \"../../services/nh-auth.service\";\nimport {NhModalService} from \"../../services/nh-modal.service\";\nimport {NhRouterService} from \"../../services/nh-router.service\";\nimport {NhCommonConfig, NhCommonConfigChanged} from \"../../models/config.models\";\nimport {INhAuthorization, NhAuthorization} from \"../../models/auth.models\";\n\n\n@Component({\n selector: 'nh-page-base-component-type',\n template: ``,\n standalone: false\n})\nexport abstract class NhPageTypeBaseComponent<TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>\n implements\n OnChanges,\n OnInit,\n AfterContentInit,\n AfterViewInit,\n OnDestroy\n{\n readonly QUERY_PARAM_KEY_PAGE = 'p';\n readonly QUERY_PARAM_KEY_ITEMS_PER_PAGE = 'ipp';\n readonly QUERY_PARAM_KEY_SEARCH_QUERY = 'sq';\n readonly QUERY_PARAM_KEY_ORDER_BY = 'ob';\n readonly QUERY_PARAM_KEY_VIEW = 'vw';\n\n protected get pageSettings(): NhPageSettings {\n return this.pageService.activePageSettings;\n };\n\n protected configService: NhConfigCommonService = inject(NhConfigCommonService);\n protected authService: TAuthService;\n protected translateService: TranslateService = inject(TranslateService);\n protected pageService: NhPageService = inject(NhPageService);\n protected modalService: NhModalService = inject(NhModalService);\n protected nhRouterService: NhRouterService = inject(NhRouterService);\n protected activatedRoute: ActivatedRoute = inject(ActivatedRoute);\n protected document: Document = inject(DOCUMENT)\n protected platformId: Object = inject(PLATFORM_ID);\n protected router: Router = inject(Router);\n private $routeChanged: Subscription|undefined;\n protected config: NhCommonConfig = this.configService.getConfig();\n private $config: Subscription|undefined;\n protected authorization: NhAuthorization | undefined;\n private $auth: Subscription;\n private $activeRouteParams: Subscription|undefined;\n protected activeRouteParams: Params = {};\n private $activeRouteParamMap: Subscription|undefined;\n protected activeRouteParamMap?: ParamMap;\n private $activeQueryParams: Subscription|undefined;\n protected activeQueryParams: Params = {};\n private $activeQueryParamMap: Subscription|undefined;\n protected activeQueryParamMap?: ParamMap;\n private $activeUrlFragment: Subscription|undefined;\n private activeUrlFragment: string|null = null;\n private onInitDidRunOnce: boolean = false;\n\n get pageData(): any {\n return this.pageSettings.pageData;\n }\n\n constructor(authServiceType: Type<TAuthService>) {\n this.authService = inject(authServiceType);\n\n this.pageService.setBreadcrumbOverrideText(undefined);\n\n this.$config = this.configService.configSubject.subscribe(async (configChanged) => {\n await this.configChanged(configChanged);\n });\n\n this.$auth = this.authService.authSubject.subscribe(async (authorization) => {\n await this.authChanged(authorization);\n });\n\n this.pageSettings.pageData = this._getInitialPageData();\n this.pageService.restoreTransferState();\n this.pageSettings.pageData ??= this._getInitialPageData();\n }\n\n protected _getInitialPageData(): unknown {\n return {};\n }\n\n isPlatformServer(): boolean {\n return this.pageService.isPlatformServer()\n }\n\n isPlatformBrowser(): boolean {\n return this.pageService.isPlatformBrowser()\n }\n\n originatedFromServer(): boolean {\n return this.pageService.originatedFromServer();\n }\n\n isPlatformBrowserInitial() {\n return this.pageService.isPlatformBrowserInitial();\n }\n\n private async configChanged(configChanged: NhCommonConfigChanged) {\n this.config = configChanged.config;\n }\n\n private async authChanged(authorization: NhAuthorization | undefined) {\n this.authorization = authorization;\n }\n\n async flushMeta() {\n await this.pageService.flushMeta(this.pageSettings);\n }\n\n async ngOnInit() {\n this.$routeChanged?.unsubscribe();\n this.$routeChanged = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd)\n ).subscribe(async (event: unknown) => {\n // Angular has ngOnInit, but it will not be called if u navigate to a page that uses the same component.\n // So we use the route change detection to flush the meta-data again.\n this.flushMeta().then();\n this.pageService.requestBreadcrumbUpdate();\n });\n\n this.appOnInit().then(x => {\n this.appOnInitAndLoad().then(async () => {\n this._appOnInitAndLoadWithSkipBrowserInitial().then(async () => {\n this.flushMeta().then();\n this.pageService.requestBreadcrumbUpdate();\n });\n });\n\n this.onInitDidRunOnce = true;\n });\n }\n\n async ngOnChanges() {\n this.appOnChanges().then();\n }\n\n async ngAfterContentInit() {\n this.appAfterContentInit().then();\n }\n\n async ngAfterViewInit() {\n this.activeRouteParams = this.activatedRoute?.snapshot?.params ?? {};\n this.$activeRouteParams?.unsubscribe();\n this.$activeRouteParams = this.activatedRoute.params.subscribe(p => {\n this.activeRouteParams = p;\n if(this.onInitDidRunOnce && this.pageService.isAppStable()) {\n this.appOnInitAndLoad().then(async () => {\n this._appOnInitAndLoadWithSkipBrowserInitial().then(async () => {\n this.flushMeta().then();\n this.pageService.requestBreadcrumbUpdate();\n });\n this.flushMeta().then();\n this.pageService.requestBreadcrumbUpdate();\n });\n }\n });\n\n this.$activeRouteParamMap?.unsubscribe();\n this.$activeRouteParamMap = this.activatedRoute.paramMap.subscribe(p => {\n this.activeRouteParamMap = p;\n });\n\n this.$activeQueryParams?.unsubscribe();\n this.$activeQueryParams = this.activatedRoute.queryParams.subscribe(p => {\n this.activeQueryParams = p;\n });\n\n this.$activeQueryParamMap?.unsubscribe();\n this.$activeRouteParamMap = this.activatedRoute.queryParamMap.subscribe(p => {\n this.activeQueryParamMap = p;\n });\n\n this.$activeUrlFragment?.unsubscribe();\n this.$activeUrlFragment = this.activatedRoute.fragment.subscribe(p => {\n this.activeUrlFragment = p;\n });\n\n this.appAfterViewInit().then();\n }\n\n async ngOnDestroy() {\n this.appOnDestroy().then(async() => {\n this.$routeChanged?.unsubscribe();\n this.$activeRouteParams?.unsubscribe();\n this.$activeRouteParamMap?.unsubscribe();\n this.$activeQueryParams?.unsubscribe();\n this.$activeQueryParamMap?.unsubscribe();\n this.$config?.unsubscribe();\n this.$auth?.unsubscribe();\n });\n }\n\n appOnInitAndLoad(): Promise<void> {\n return Promise.resolve();\n }\n\n private _appOnInitAndLoadWithSkipBrowserInitial(): Promise<void> {\n if(this.isPlatformBrowserInitial()) {\n return Promise.resolve();\n }\n\n return this.appOnInitAndLoadWithSkipBrowserInitial();\n }\n appOnInitAndLoadWithSkipBrowserInitial(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnChanges(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterContentInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterViewInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnDestroy(): Promise<void> {\n return Promise.resolve();\n }\n}\n\n@Component({\n selector: 'nh-page-base-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhPageBaseComponent extends NhPageTypeBaseComponent<NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n\n@Component({\n selector: 'nh-page-base-component-type-typed',\n template: ``,\n standalone: false\n})\nexport abstract class NhTypedPageTypeBaseComponent<TPageData, TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>> extends NhPageTypeBaseComponent<TAuthorization, TAuthService> {\n protected override get pageSettings(): TypedNhPageSettings<TPageData> {\n return this.pageService.activePageSettings as TypedNhPageSettings<TPageData>;\n };\n\n protected override _getInitialPageData(): unknown {\n return this.getInitialPageData();\n };\n\n protected abstract getInitialPageData(): TPageData|undefined;\n\n override get pageData(): TPageData|undefined {\n return this.pageSettings.pageData as TPageData;\n }\n\n constructor(authServiceType: Type<TAuthService>) {\n super(authServiceType);\n }\n}\n\n@Component({\n selector: 'nh-page-base-component-typed',\n template: ``,\n standalone: false\n})\nexport abstract class NhTypedPageBaseComponent<TPageData> extends NhTypedPageTypeBaseComponent<TPageData, NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit, output,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, Subject, Subscription} from 'rxjs';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {debounceTime, distinctUntilChanged, takeUntil} from 'rxjs/operators';\nimport {\n IMultiSelectOption,\n IMultiSelectSettings,\n IMultiSelectTexts,\n NgxDropdownMultiselectComponent\n} from 'ngx-bootstrap-multiselect';\nimport {AbstractValueAccessor, MakeProvider} from \"../../accessors/abstract-value.accessor\";\nimport {CollectionHttpRequestOptions, CollectionHttpResponse} from '../../models/http.models';\nimport {NhCommonModuleConfig} from '../../models/config.models';\n\nexport class DefaultMultiSelectSettings implements IMultiSelectSettings {\n pullRight = false;\n enableSearch = true;\n checkedStyle: 'checkboxes' | 'glyphicon' | 'fontawesome' | 'visual' = 'fontawesome';\n buttonClasses = 'btn btn-default btn-secondary';\n selectionLimit = 1;\n closeOnSelect = false;\n autoUnselect = true;\n showCheckAll = false;\n showUncheckAll = false;\n fixedTitle = false;\n dynamicTitleMaxItems = 3;\n maxHeight = '300px';\n isLazyLoad = true;\n loadViewDistance = 1;\n stopScrollPropagation = true;\n selectAddedValues = true;\n\n public constructor(init?: Partial<DefaultMultiSelectSettings>) {\n Object.assign(this, init);\n }\n}\n\nexport class DefaultMultiSelectTexts implements IMultiSelectTexts {\n checkAll = 'Select all';\n uncheckAll = 'Unselect all';\n checked = 'item selected';\n checkedPlural = 'items selected';\n searchPlaceholder = 'Find';\n searchEmptyResult = 'Nothing found...';\n searchNoRenderText = 'Type in search box to see results...';\n defaultTitle = 'Select';\n allSelected = 'All selected';\n\n public constructor(init?: Partial<DefaultMultiSelectTexts>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhFormDropDownSettings {\n\n lazyLoad = true;\n translateOptionValue = true;\n multiSelectSettings: IMultiSelectSettings = new DefaultMultiSelectSettings({});\n multiSelectTexts: IMultiSelectTexts = new DefaultMultiSelectTexts();\n requestOptions = new CollectionHttpRequestOptions();\n debounceTime = 300;\n selectedRequestOptions = new CollectionHttpRequestOptions();\n deferLazyLoadUntilOpened?: boolean;\n loadLambda?: () => Observable<Array<any>>;\n lazyLoadLambda?: (options: CollectionHttpRequestOptions) => Observable<CollectionHttpResponse<any>>;\n selectedLazyLoadLambda?: (options: CollectionHttpRequestOptions, value?: any) => Observable<CollectionHttpResponse<any>>;\n componentRef?: NhFormDropDownComponent;\n keyGetLambda = (x: any) => {\n return x.id\n };\n imageGetLambda = (x: any) => undefined;\n valueGetLambda = (x: any) => {\n return x.name\n };\n onSuccess = () => {\n return;\n };\n\n public constructor(init?: Partial<NhFormDropDownSettings>) {\n Object.assign(this, init);\n }\n}\n\n@Component({\n selector: 'nh-form-dropdown',\n templateUrl: './form-dropdown.component.html',\n styleUrls: ['./form-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [MakeProvider(NhFormDropDownComponent)],\n standalone: false\n})\nexport class NhFormDropDownComponent extends AbstractValueAccessor implements OnInit, OnDestroy {\n @ViewChild('lazyLoadComponent') lazyLoadComponent?: NgxDropdownMultiselectComponent;\n @ViewChild('noLazyLoadComponent') noLazyLoadComponent?: NgxDropdownMultiselectComponent;\n defaultTexts = new DefaultMultiSelectTexts();\n isLoading = false;\n hasMoreLazyLoadItems = true;\n lastLazyLoadEvent: any;\n hasFocus = false;\n @Input() disabled : boolean = false;\n @Output() onLazyLoadError = new EventEmitter();\n private _settings: NhFormDropDownSettings = new NhFormDropDownSettings();\n public readonly closed = output<void>();\n public readonly opened = output<void>();\n\n get settings() {\n return this._settings;\n }\n\n @Input() set settings (value: NhFormDropDownSettings) {\n if (!value.multiSelectTexts) {\n value.multiSelectTexts = new DefaultMultiSelectTexts();\n }\n\n value.multiSelectTexts = {\n checkAll: (value.multiSelectTexts.checkAll === this.defaultTexts.checkAll) ? this.translate.instant('form.form-dropdown.check-all') : value.multiSelectTexts.checkAll,\n uncheckAll: (value.multiSelectTexts.uncheckAll === this.defaultTexts.uncheckAll) ? this.translate.instant('form.form-dropdown.uncheck-all') : value.multiSelectTexts.uncheckAll,\n checked: (value.multiSelectTexts.checked === this.defaultTexts.checked) ? this.translate.instant('form.form-dropdown.checked') : value.multiSelectTexts.checked,\n checkedPlural: (value.multiSelectTexts.checkedPlural === this.defaultTexts.checkedPlural) ? this.translate.instant('form.form-dropdown.checked-plural') : value.multiSelectTexts.checkedPlural,\n searchPlaceholder: (value.multiSelectTexts.searchPlaceholder === this.defaultTexts.searchPlaceholder) ? this.translate.instant('form.form-dropdown.search-placeholder') : value.multiSelectTexts.searchPlaceholder,\n searchEmptyResult: (value.multiSelectTexts.searchEmptyResult === this.defaultTexts.searchEmptyResult) ? this.translate.instant('form.form-dropdown.search-empty-result') : value.multiSelectTexts.searchEmptyResult,\n searchNoRenderText: (value.multiSelectTexts.searchNoRenderText === this.defaultTexts.searchNoRenderText) ? this.translate.instant('form.form-dropdown.search-no-render-text') : value.multiSelectTexts.searchNoRenderText,\n defaultTitle: (value.multiSelectTexts.defaultTitle === this.defaultTexts.defaultTitle) ? this.translate.instant('form.form-dropdown.default-title') : value.multiSelectTexts.defaultTitle,\n allSelected: (value.multiSelectTexts.allSelected === this.defaultTexts.allSelected) ? this.translate.instant('form.form-dropdown.all-selected') : value.multiSelectTexts.allSelected\n };\n\n value.componentRef = this;\n\n this._settings = value;\n this.resetSelectedLazyLoadCache();\n this.load();\n }\n\n activeLazyLoadDataRequestSubscription: any = null;\n activeLazyLoadSelectedDataRequestSubscription: any = null;\n activeLoadRequestSubscription: Subscription|null = null;\n options: IMultiSelectOption[] = [];\n rawOptions: any[] = [];\n private debounceObserver: any;\n private debounceSubscription: Subscription|null = null;\n private readonly destroy$ = new Subject<void>();\n private hasOpenedDropdown = false;\n private hasLoadedDeferredLazyLoadData = false;\n private selectedLazyLoadValueKey?: string;\n private selectedLazyLoadOptions: IMultiSelectOption[] = [];\n private activeLazyLoadSelectedDataValueKey?: string;\n private activeLazyLoadSelectedDataObservers: Array<any> = [];\n private valueKey = '';\n\n constructor(\n private translate: TranslateService,\n private cdr: ChangeDetectorRef,\n @Optional() @Inject(NhCommonModuleConfig) private commonModuleConfig?: NhCommonModuleConfig\n ) {\n super();\n }\n\n ngOnInit() {\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n\n this.activeLoadRequestSubscription?.unsubscribe();\n this.activeLoadRequestSubscription = null;\n this.activeLazyLoadDataRequestSubscription?.unsubscribe();\n this.activeLazyLoadDataRequestSubscription = null;\n this.activeLazyLoadSelectedDataRequestSubscription?.unsubscribe();\n this.activeLazyLoadSelectedDataRequestSubscription = null;\n this.debounceSubscription?.unsubscribe();\n this.debounceSubscription = null;\n this.debounceObserver = null;\n this.activeLazyLoadSelectedDataObservers = [];\n }\n\n public getDropdownComponent(): NgxDropdownMultiselectComponent|undefined {\n let component: any = undefined;\n if (this.lazyLoadComponent) {\n component = this.lazyLoadComponent;\n }\n if (this.noLazyLoadComponent) {\n component = this.noLazyLoadComponent;\n }\n\n return component;\n }\n\n public toggleDropdown() {\n const component = this.getDropdownComponent();\n component!.toggleDropdown();\n this.cdr.markForCheck();\n }\n\n public closeDropdown() {\n const component = this.getDropdownComponent();\n component!.closeDropdown();\n this.cdr.markForCheck();\n }\n\n public override writeValue(value: any) {\n const nextValue = this.cloneValue(value);\n const valueKey = this.getValueKey(nextValue);\n const currentValueKey = this.valueKey;\n super.writeValue(nextValue);\n this.valueKey = valueKey;\n\n if (this.settings.lazyLoad && this.deferLazyLoadUntilOpened && valueKey !== currentValueKey) {\n this.loadSelectedOptions();\n }\n }\n\n public onDropdownOpened() {\n this.opened.emit();\n this.hasOpenedDropdown = true;\n\n if (this.settings.lazyLoad && this.deferLazyLoadUntilOpened && !this.hasLoadedDeferredLazyLoadData) {\n this.hasLoadedDeferredLazyLoadData = true;\n this.lazyLoadData({length: 0, isInitial: true});\n }\n }\n\n resetSearch() {\n this.settings.requestOptions.page = 1;\n this.settings.requestOptions.search = '';\n if (this.lazyLoadComponent) {\n (<any>this.lazyLoadComponent).clearSearch(null);\n }\n if (this.noLazyLoadComponent) {\n (<any>this.noLazyLoadComponent).clearSearch(null);\n }\n this.load(false);\n }\n\n public load(resetDeferredState: boolean = true) {\n if (resetDeferredState) {\n this.hasOpenedDropdown = false;\n this.hasLoadedDeferredLazyLoadData = false;\n }\n\n this.options = [];\n this.rawOptions = [];\n if (this.settings.lazyLoad) {\n if (this.deferLazyLoadUntilOpened && !this.hasOpenedDropdown) {\n this.loadSelectedOptions();\n } else {\n if (this.deferLazyLoadUntilOpened) {\n this.hasLoadedDeferredLazyLoadData = true;\n }\n\n this.lazyLoadData({length: 0, isInitial: true});\n }\n } else {\n this.settings.multiSelectSettings.isLazyLoad = false;\n if(this.settings.loadLambda) {\n this.activeLoadRequestSubscription?.unsubscribe();\n this.activeLoadRequestSubscription = this.settings.loadLambda().pipe(\n takeUntil(this.destroy$)\n ).subscribe((options) => {\n this.options = options.map(x => {\n return {id: this.settings.keyGetLambda(x), name: this.settings.valueGetLambda(x), image: this.settings.imageGetLambda(x)}\n });\n this.rawOptions = options;\n this.activeLoadRequestSubscription = null;\n }, () => {\n this.activeLoadRequestSubscription = null;\n });\n }\n }\n }\n\n private get deferLazyLoadUntilOpened(): boolean {\n return this.settings.deferLazyLoadUntilOpened ?? this.commonModuleConfig?.formDropdown?.deferLazyLoadUntilOpened ?? false;\n }\n\n private cloneValue(value: any) {\n return Array.isArray(value) ? [...value] : value;\n }\n\n private getValueKey(value: any): string {\n if (value === undefined || value === null || value === '') {\n return '';\n }\n\n if (Array.isArray(value)) {\n const arrayKey = value\n .map(x => this.getValueKey(x))\n .filter(x => !!x)\n .sort()\n .join('|');\n\n return arrayKey ? 'array:' + arrayKey : '';\n }\n\n if (typeof value === 'object') {\n return 'object:' + JSON.stringify(value);\n }\n\n return 'value:' + value;\n }\n\n private resetSelectedLazyLoadCache() {\n if (this.activeLazyLoadSelectedDataRequestSubscription) {\n this.activeLazyLoadSelectedDataRequestSubscription.unsubscribe();\n this.activeLazyLoadSelectedDataRequestSubscription = null;\n }\n\n this.selectedLazyLoadValueKey = undefined;\n this.selectedLazyLoadOptions = [];\n this.activeLazyLoadSelectedDataValueKey = undefined;\n this.activeLazyLoadSelectedDataObservers = [];\n }\n\n private loadSelectedOptions() {\n this.lazyLoadSelectedData().subscribe((selectedItems: Array<IMultiSelectOption>) => {\n this.selectedHandleLazyLoadResponse(selectedItems);\n });\n }\n\n lazyLoadSelectedData(): Observable<Array<IMultiSelectOption>> {\n return new Observable((observer) => {\n const valueKey = this.getValueKey(this.value);\n\n if (!this.settings.lazyLoad || !this.settings.selectedRequestOptions || !this.settings.selectedLazyLoadLambda || !valueKey) {\n this.selectedLazyLoadValueKey = undefined;\n this.selectedLazyLoadOptions = [];\n observer.next([]);\n observer.complete();\n return undefined;\n }\n\n if (this.selectedLazyLoadValueKey === valueKey) {\n observer.next([...this.selectedLazyLoadOptions]);\n observer.complete();\n return undefined;\n }\n\n const requestOptions = this.settings.selectedRequestOptions;\n\n if (this.activeLazyLoadSelectedDataValueKey === valueKey) {\n this.activeLazyLoadSelectedDataObservers.push(observer);\n return () => {\n this.activeLazyLoadSelectedDataObservers = this.activeLazyLoadSelectedDataObservers.filter(x => x !== observer);\n };\n }\n\n if (this.activeLazyLoadSelectedDataRequestSubscription) {\n this.activeLazyLoadSelectedDataRequestSubscription.unsubscribe();\n this.activeLazyLoadSelectedDataObservers.forEach(x => {\n x.next([]);\n x.complete();\n });\n this.activeLazyLoadSelectedDataObservers = [];\n }\n\n this.activeLazyLoadSelectedDataValueKey = valueKey;\n this.activeLazyLoadSelectedDataObservers = [observer];\n this.activeLazyLoadSelectedDataRequestSubscription = this.settings.selectedLazyLoadLambda(requestOptions, this.value).subscribe(\n response => {\n this.activeLazyLoadSelectedDataRequestSubscription = null;\n this.activeLazyLoadSelectedDataValueKey = undefined;\n const selectedOptions: IMultiSelectOption[] = [];\n if (response && response.items && response.items.length > 0) {\n for (const item of response.items) {\n const option = {id: this.settings.keyGetLambda(item), name: this.settings.valueGetLambda(item), image: this.settings.imageGetLambda(item)};\n\n if (this.settings.translateOptionValue) {\n option.name = this.translate.instant(option.name);\n }\n\n selectedOptions.push(option);\n }\n }\n\n this.selectedLazyLoadValueKey = valueKey;\n this.selectedLazyLoadOptions = selectedOptions;\n this.activeLazyLoadSelectedDataObservers.forEach(x => {\n x.next([...selectedOptions]);\n x.complete();\n });\n this.activeLazyLoadSelectedDataObservers = [];\n },\n (err: HttpErrorResponse) => {\n this.activeLazyLoadSelectedDataRequestSubscription = null;\n this.activeLazyLoadSelectedDataValueKey = undefined;\n this.activeLazyLoadSelectedDataObservers.forEach(x => x.error(err));\n this.activeLazyLoadSelectedDataObservers = [];\n }\n );\n return undefined;\n });\n }\n\n lazyLoadData(eventIn: any) {\n if (this.settings.lazyLoad && this.deferLazyLoadUntilOpened && !this.hasOpenedDropdown) {\n return;\n }\n\n if (eventIn.isInitial) {\n this.processLazyLoadEvent(eventIn);\n return;\n }\n\n if (!this.debounceObserver) {\n\n this.debounceSubscription = new Observable<any>((observer) => {\n this.debounceObserver = observer;\n }).pipe(debounceTime(this.settings.debounceTime)) // wait x ms after the last event before emitting last event\n .pipe(distinctUntilChanged()) // only emit if value is different from previous value\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n this.processLazyLoadEvent(event);\n });\n }\n\n this.debounceObserver.next(eventIn);\n };\n\n private processLazyLoadEvent(event: any) {\n if (this.isLoading) {\n return;\n }\n\n this.lastLazyLoadEvent = event;\n this.isLoading = true;\n\n this.lazyLoadSelectedData().subscribe((selectedItems: Array<IMultiSelectOption>) => {\n\n const filter = (!event.filter) ? '' : event.filter;\n let page = this.settings.requestOptions.page;\n if (!event.isInitial) {\n page++;\n }\n\n if (this.activeLazyLoadDataRequestSubscription) {\n this.activeLazyLoadDataRequestSubscription.unsubscribe();\n }\n\n if (filter !== this.settings.requestOptions.search || event.isInitial) {\n page = 1;\n this.hasMoreLazyLoadItems = true;\n this.settings.requestOptions.search = (!filter) ? '' : filter;\n this.settings.requestOptions.page = page;\n this.options = [];\n this.rawOptions = [];\n\n if(this.settings.lazyLoadLambda) {\n this.activeLazyLoadDataRequestSubscription = this.settings.lazyLoadLambda(this.settings.requestOptions).subscribe(\n response => {\n this.activeLazyLoadDataRequestSubscription = null;\n this.handleLazyLoadResponse(response, selectedItems);\n this.isLoading = false;\n this.settings.onSuccess();\n },\n (err: HttpErrorResponse) => {\n this.activeLazyLoadDataRequestSubscription = null;\n this.isLoading = false;\n this.onLazyLoadError.emit(err);\n }\n );\n } else {\n this.isLoading = false;\n }\n } else if (this.hasMoreLazyLoadItems) {\n this.settings.requestOptions.page = page;\n\n if(this.settings.lazyLoadLambda) {\n this.activeLazyLoadDataRequestSubscription = this.settings.lazyLoadLambda(this.settings.requestOptions).subscribe(\n response => {\n this.activeLazyLoadDataRequestSubscription = null;\n this.handleLazyLoadResponse(response, selectedItems);\n this.isLoading = false;\n this.settings.onSuccess();\n },\n (err: HttpErrorResponse) => {\n this.activeLazyLoadDataRequestSubscription = null;\n this.isLoading = false;\n this.onLazyLoadError.emit(err);\n }\n );\n } else {\n this.isLoading = false;\n }\n\n } else {\n this.isLoading = false;\n }\n });\n }\n\n onModelChange(event: any) {\n const value = (this.settings.multiSelectSettings.selectionLimit === 1\n ? (event[0] || undefined)\n : (this.cloneValue(event) || undefined)\n );\n const valueKey = this.getValueKey(value);\n\n if (valueKey === this.valueKey) {\n return;\n }\n\n this.valueKey = valueKey;\n this.value = value;\n this.loadSelectedOptions();\n }\n\n\n private handleLazyLoadResponse(response: CollectionHttpResponse<any>, selectedItems: Array<IMultiSelectOption> = []) {\n const options: IMultiSelectOption[] = [];\n const rawOptions: any[] = [];\n for (const item of response.items) {\n const option = {id: this.settings.keyGetLambda(item), name: this.settings.valueGetLambda(item)};\n\n if (this.settings.translateOptionValue) {\n option.name = this.translate.instant(option.name);\n }\n\n if (!this.options.find(x => x.id === option.id)) {\n options.push(option);\n rawOptions.push(item);\n }\n }\n\n this.options = this.options.concat(options);\n this.rawOptions = this.rawOptions.concat(rawOptions);\n this.selectedHandleLazyLoadResponse(selectedItems);\n\n if (response.resultCount < response.itemsPerPage) {\n this.hasMoreLazyLoadItems = false;\n }\n }\n\n private selectedHandleLazyLoadResponse(selectedItems: Array<IMultiSelectOption> = []) {\n const newSelectedOptions: IMultiSelectOption[] = [];\n for (const option of selectedItems) {\n if (!this.options.find(x => x.id === option.id)) {\n newSelectedOptions.push(option);\n }\n }\n\n this.options = newSelectedOptions.concat(this.options);\n }\n}\n","<div>\n @if (settings.lazyLoad) {\n <ngx-bootstrap-multiselect\n #lazyLoadComponent\n (focus)=\"hasFocus = true\"\n (blur)=\"hasFocus = false\"\n [options]=\"options\"\n [disabled]=\"disabled\"\n [texts]=\"settings.multiSelectTexts\"\n [settings]=\"settings.multiSelectSettings\"\n [ngModel]=\"value\"\n (dropdownClosed)=\"closed.emit()\"\n (dropdownOpened)=\"onDropdownOpened()\"\n (ngModelChange)=\"onModelChange($event)\"\n (lazyLoad)=\"lazyLoadData($event)\"\n ></ngx-bootstrap-multiselect>\n }\n @if (!settings.lazyLoad) {\n <ngx-bootstrap-multiselect\n #noLazyLoadComponent\n (focus)=\"hasFocus = true\"\n (blur)=\"hasFocus = false\"\n [options]=\"options\"\n [disabled]=\"disabled\"\n (dropdownClosed)=\"closed.emit()\"\n (dropdownOpened)=\"opened.emit()\"\n [texts]=\"settings.multiSelectTexts\"\n [settings]=\"settings.multiSelectSettings\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n ></ngx-bootstrap-multiselect>\n }\n</div>\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {AbstractControl, UntypedFormControl} from '@angular/forms';\nimport {TranslatePipe} from \"@ngx-translate/core\";\n\n@Component({\n selector: 'nh-form-error-message',\n templateUrl: './form-error-message.component.html',\n styleUrls: ['./form-error-message.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class NhFormErrorMessageComponent implements OnInit {\n @Input() control: UntypedFormControl|AbstractControl|undefined;\n\n constructor() {\n }\n\n ngOnInit() {\n\n }\n\n getErrors(): Array<string> {\n const errors: Array<string> = [];\n if (this.control && this.control.errors) {\n if (this.control.errors['remote']) {\n for (const remoteErrorMsg of this.control.errors['remote']) {\n errors.push(remoteErrorMsg);\n }\n }\n }\n\n return errors;\n }\n}\n","@if (getErrors().length > 0) {\n <div class=\"error-list\">\n @for (error of this.getErrors(); track error) {\n <div>\n <p class=\"text-danger m-0\"><i>{{ error|translate }}</i></p>\n </div>\n }\n </div>\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n AfterContentInit,\n AfterViewInit,\n Component, inject,\n OnChanges,\n OnDestroy,\n OnInit,\n input, PLATFORM_ID, Type, model\n} from \"@angular/core\";\nimport {Observable, Subscription} from \"rxjs\";\nimport {ActivatedRoute, Router} from \"@angular/router\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {ToastrService} from \"ngx-toastr\";\nimport { ColumnMode } from \"@swimlane/ngx-datatable\";\nimport {BaseNhAuthService, NhAuthService} from \"../../services/nh-auth.service\";\nimport { NhModalService } from \"../../services/nh-modal.service\";\nimport {CollectionHttpRequestOptions, CollectionHttpResponse, OrderByRequestOptions} from \"../../models/http.models\";\nimport {ClaimTypes, INhAuthorization, NhAuthorization} from \"../../models/auth.models\";\nimport {NhRouterService} from \"../../services/nh-router.service\";\nimport {isPlatformServer} from \"@angular/common\";\nimport {NhAppService} from \"../../services/nh-app.service\";\nimport {NhApiUtil} from \"../../util/nh-api-util\";\nimport {NhAsyncLock} from \"../../util/nh-mutex.util\";\n\n@Component({\n selector: 'nh-shared-collection-base-component',\n template: ``,\n standalone: false\n})\n\nexport abstract class NhCollectionTypeBaseComponent<TCollectionResponseItem, TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>\n implements\n OnChanges,\n OnInit,\n AfterContentInit,\n AfterViewInit,\n OnDestroy\n{\n private readonly loadLock = new NhAsyncLock();\n protected readonly appService = inject(NhAppService);\n protected readonly ColumnMode = ColumnMode;\n protected document: Document = inject(DOCUMENT)\n protected platformId: Object = inject(PLATFORM_ID);\n protected static readonly URL_QUERY_PARAM_KEY = 'q';\n protected authService: TAuthService;\n protected modalService: NhModalService = inject(NhModalService);\n protected translateService: TranslateService = inject(TranslateService);\n protected toastrService: ToastrService = inject(ToastrService);\n protected router: Router = inject(Router);\n protected activatedRoute: ActivatedRoute = inject(ActivatedRoute);\n protected nhRouterService: NhRouterService = inject(NhRouterService);\n tableInfo: any = {offset: 0, limit: 10};\n claimTypes = ClaimTypes;\n readonly queryParamUpdates = model<boolean>(true);\n readonly localStorageUpdates = model<boolean>(true);\n protected filtersActive = false;\n protected isLoading: boolean = false;\n protected requestOptions = new CollectionHttpRequestOptions();\n private activeRequestSubscription: Subscription|undefined;\n protected collectionResponse: CollectionHttpResponse<TCollectionResponseItem> = new CollectionHttpResponse<TCollectionResponseItem>();\n\n private get localStorageKey(): string {\n if(this.localStorageUpdates() && (this.getLocalStoragePartialKey() ?? '').length < 1) {\n throw new Error('getLocalStoragePartialKey() must return a non-empty string when localStorageUpdates is true, implement getLocalStoragePartialKey() via override getLocalStoragePartialKey().');\n }\n\n return `app-filters-${this.getLocalStoragePartialKey() ?? ''}`;\n }\n\n get items(): TCollectionResponseItem[] {\n return this.collectionResponse.items ?? [];\n }\n\n protected constructor(\n authServiceType: Type<TAuthService>\n ) {\n this.authService = inject(authServiceType);\n }\n\n abstract onLoad(requestOptions: CollectionHttpRequestOptions): Promise<Observable<CollectionHttpResponse<TCollectionResponseItem>>>;\n abstract getInitialRequestOptions(): CollectionHttpRequestOptions;\n abstract getLocalStoragePartialKey(): string|null;\n\n async beforeLoad(): Promise<void> {\n\n }\n\n async afterLoad(): Promise<void> {\n\n }\n\n ngOnChanges(): void {\n this.appOnChanges().then();\n }\n\n ngOnInit(): void {\n this.initCollectionRequestModel();\n this.appOnInit().then();\n this.load().then();\n }\n\n ngAfterContentInit(): void {\n this.appAfterContentInit().then();\n }\n\n ngAfterViewInit(): void {\n this.appAfterViewInit().then();\n }\n\n ngOnDestroy(): void {\n this.appOnDestroy().then();\n this.activeRequestSubscription?.unsubscribe();\n }\n\n appOnChanges(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterContentInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterViewInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnDestroy(): Promise<void> {\n return Promise.resolve();\n }\n\n initCollectionRequestModel() {\n // Setup filters from url.\n if (this.queryParamUpdates() && this.activatedRoute.snapshot.queryParamMap.get(NhCollectionBaseComponent.URL_QUERY_PARAM_KEY)) {\n try {\n this.requestOptions = NhApiUtil.ParseCollectionRequestOptions(this.activatedRoute.snapshot.queryParamMap.get(NhCollectionBaseComponent.URL_QUERY_PARAM_KEY));\n } catch (ex) {\n }\n } else {\n let localStorageCollectionRequestModelSuccess = false;\n\n if (this.localStorageUpdates()) {\n const localStorageCollectionRequestModelString = this.appService.localStorage?.getItem(this.localStorageKey);\n\n if (localStorageCollectionRequestModelString && localStorageCollectionRequestModelString.length > 0) {\n try {\n this.requestOptions = NhApiUtil.ParseCollectionRequestOptions(localStorageCollectionRequestModelString);\n localStorageCollectionRequestModelSuccess = true;\n } catch (ex) {\n }\n }\n }\n\n if (!localStorageCollectionRequestModelSuccess) {\n this.requestOptions = this.getInitialRequestOptions();\n }\n }\n }\n\n private syncRequestOptionsToTableInfo() {\n if (this.requestOptions.page && this.requestOptions.itemsPerPage) {\n this.tableInfo.offset = (this.requestOptions.page - 1) * this.requestOptions.itemsPerPage;\n this.tableInfo.limit = this.requestOptions.itemsPerPage;\n } else {\n this.tableInfo.offset = 0;\n this.tableInfo.limit = 10; // Default value\n }\n\n this.tableInfo.sorts = this.requestOptions.orderBy?.map(orderBy => ({\n prop: orderBy.key,\n dir: orderBy.direction.toLowerCase()\n })) || [];\n }\n\n updateRequestOptions() {\n const q = JSON.stringify(this.requestOptions);\n\n this.syncRequestOptionsToTableInfo();\n\n const queryParams: any = {};\n queryParams[NhCollectionBaseComponent.URL_QUERY_PARAM_KEY] = q;\n\n // Set filters to url.\n if (this.queryParamUpdates()) {\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n skipLocationChange: false,\n replaceUrl: true,\n preserveFragment: true\n });\n }\n\n if(this.localStorageUpdates() && !isPlatformServer(this.platformId)) {\n localStorage.setItem(this.localStorageKey, JSON.stringify(this.requestOptions));\n }\n\n this.filtersActive = (q !== JSON.stringify(this.getInitialRequestOptions()));\n }\n\n resetRequestOptionsAndLoad() {\n this.resetRequestOptions();\n this.load().then();\n }\n\n resetRequestOptions() {\n this.requestOptions = this.getInitialRequestOptions();\n this.updateRequestOptions();\n }\n\n load(): Promise<CollectionHttpResponse<TCollectionResponseItem>> {\n return new Promise<CollectionHttpResponse<TCollectionResponseItem>>(async (resolve, reject) => {\n this.isLoading = true;\n await this.beforeLoad();\n this.updateRequestOptions();\n\n // Pass a copy instead of the source to allow modifications without it modifying the URL;\n // If u need them both modified, modify via this.requestOptions. in the load.\n const requestOptions = NhApiUtil.ParseCollectionRequestOptions(JSON.stringify(this.requestOptions));\n\n this.activeRequestSubscription?.unsubscribe();\n await this.loadLock.runExclusive(async () => {\n const loadObservable = await this.onLoad(requestOptions);\n this.activeRequestSubscription = loadObservable.subscribe({\n next: (response) => {\n this.isLoading = false;\n this.collectionResponse = response;\n resolve(response);\n this.afterLoad().then();\n },\n error: (error) => {\n this.isLoading = false;\n reject(error);\n }\n });\n });\n });\n }\n\n\n async search(search: string) {\n if(search === this.requestOptions.search) {\n return;\n }\n\n this.requestOptions.page = 1;\n this.requestOptions.search = search;\n await this.load();\n }\n\n async sort(event: any) {\n //\n // Override in child to handle ur self.\n //\n\n const sort = event.sorts[0];\n this.requestOptions.orderBy = [];\n\n const getOrderBy = (key: string) => {\n const orderBy = new OrderByRequestOptions();\n orderBy.key = key;\n orderBy.direction = sort.dir.toUpperCase();\n return orderBy;\n };\n\n this.requestOptions.orderBy.push(getOrderBy(sort.prop));\n\n await this.load();\n }\n\n async setPageByOffsetLimit(event: {offset: number, limit: number}) {\n await this.setPage({\n page: event.offset + 1,\n itemsPerPage: event.limit\n });\n }\n\n async setPage(event: {page: number, itemsPerPage: number}) {\n if(event.page === this.collectionResponse.page && event.itemsPerPage === this.collectionResponse.itemsPerPage) {\n return;\n }\n\n this.requestOptions.page = event.page;\n this.requestOptions.itemsPerPage = event.itemsPerPage;\n\n await this.load();\n }\n\n async firstPage() {\n this.requestOptions.page = 1;\n await this.load();\n }\n}\n\n\n@Component({\n selector: 'nh-shared-collection-type-base-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhCollectionBaseComponent<TCollectionResponseItem> extends NhCollectionTypeBaseComponent<TCollectionResponseItem, NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output, Type,\n ViewChild\n} from \"@angular/core\";\nimport {INhModalComponent, NhModalComponentRef, NhModalService} from \"../../services/nh-modal.service\";\nimport {BaseNhAuthService, NhAuthService} from \"../../services/nh-auth.service\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport { ToastrService } from \"ngx-toastr\";\nimport {ActivatedRoute} from \"@angular/router\";\nimport {ClaimTypes, INhAuthorization, NhAuthorization} from \"../../models/auth.models\";\nimport {\n AspMvcFormServerSideFormValidator,\n NhServerSideFormValidationService\n} from \"../../services/nh-server-side-form-validator.service\";\nimport {NgForm, UntypedFormControl} from \"@angular/forms\";\nimport { NhFormHelper } from \"../../util/nh-form.util\";\nimport { NhRouterService } from \"../../services/nh-router.service\";\nimport { NhTaskResultFormValidationService } from \"../../services/nh-task-result-form.validator\";\nimport { TaskResult } from \"../../models/misc.models\";\n\n\nexport enum MutationType {\n Create = 0,\n Update = 1\n}\n\n@Component({\n selector: 'nh-mutate-base-type-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhMutateBaseTypeComponent<TFormData, TResult, TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>\n implements\n OnChanges,\n OnInit,\n AfterContentInit,\n AfterViewInit,\n OnDestroy\n{\n protected authService: TAuthService;\n protected translateService: TranslateService = inject(TranslateService);\n protected toastrService: ToastrService = inject(ToastrService);\n protected activatedRoute: ActivatedRoute = inject(ActivatedRoute);\n protected nhRouterService: NhRouterService = inject(NhRouterService);\n protected formValidator: NhServerSideFormValidationService = inject(NhServerSideFormValidationService);\n protected taskResultFormValidator: NhTaskResultFormValidationService = inject(NhTaskResultFormValidationService);\n claimTypes = ClaimTypes;\n private _isLoading: boolean = false;\n private _isSubmitting: boolean = false;\n private _mutationType: MutationType = MutationType.Create;\n private _formData: TFormData|undefined;\n\n public get isLoading(): boolean {\n return this._isLoading;\n }\n\n protected set isLoading(value: boolean) {\n this._isLoading = value;\n }\n\n public get isSubmitting(): boolean {\n return this._isSubmitting;\n }\n\n protected set isSubmitting(value: boolean) {\n this._isSubmitting = value;\n }\n\n protected get isLoadingOrSubmitting(): boolean {\n return this.isLoading || this.isSubmitting;\n }\n\n public get mutationType(): MutationType {\n return this._mutationType;\n }\n\n protected set mutationType(value: MutationType) {\n this._mutationType = value;\n }\n\n public get formData(): TFormData|undefined {\n return this._formData;\n }\n\n protected set formData(value: TFormData|undefined) {\n this._formData = value;\n }\n\n @ViewChild(NgForm) form: any|undefined;\n @Output() created = new EventEmitter<TResult>();\n @Output() updated = new EventEmitter<TResult>();\n\n protected constructor(\n authServiceType: Type<TAuthService>\n ) {\n this.authService = inject(authServiceType);\n }\n\n abstract onNewFormData(mutationType: MutationType): Promise<TFormData>;\n abstract onSubmitCreate(event: any): Promise<TaskResult<TResult>>;\n abstract onSubmitUpdate(event: any): Promise<TaskResult<TResult>>;\n\n\n\n ngOnChanges(): void {\n this.appOnChanges().then();\n }\n\n ngOnInit(): void {\n this.appOnInit().then();\n }\n\n ngAfterContentInit(): void {\n this.appAfterContentInit().then();\n }\n\n ngAfterViewInit(): void {\n this.appAfterViewInit().then();\n }\n\n ngOnDestroy(): void {\n this.appOnDestroy().then();\n }\n\n appOnChanges(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterContentInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterViewInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnDestroy(): Promise<void> {\n return Promise.resolve();\n }\n\n public async newFormData(mutationType: MutationType) {\n if(this.isLoadingOrSubmitting) {\n return;\n }\n\n try {\n if(this.form) {\n NhFormHelper.clearErrors(this.form);\n this.form.controls[''] = new UntypedFormControl(); // Add Empty control for default errors\n }\n }catch(ex) {}\n\n try {\n this.isLoading = true;\n this.mutationType = mutationType;\n this.formData = await this.onNewFormData(mutationType);\n\n } catch (ex) {\n console.error(ex);\n } finally {\n this.isLoading = false;\n }\n }\n\n async submit(event: any, handleAll: boolean = true) {\n if(this.isLoadingOrSubmitting) {\n return;\n }\n\n this.isSubmitting = true;\n\n try {\n if(this.form) {\n this.form.controls[''] = new UntypedFormControl(); // Add Empty control for default errors\n NhFormHelper.clearErrors(this.form);\n }\n\n try {\n if (this.mutationType === MutationType.Create) {\n const createResult = await this.onSubmitCreate(event);\n if(!createResult.isSuccess) {\n this.taskResultFormValidator.validate(this.form, createResult.items);\n return;\n }\n\n if(handleAll) {\n this.created.emit(createResult.data);\n }\n } else {\n const updateResult = await this.onSubmitUpdate(event);\n if(!updateResult.isSuccess) {\n this.taskResultFormValidator.validate(this.form, updateResult.items);\n return;\n }\n\n if(handleAll) {\n this.updated.emit(updateResult.data);\n }\n }\n\n if(handleAll) {\n this.form.reset();\n await this.newFormData(this.mutationType);\n }\n } catch (err: any) {\n console.error(err);\n if (err.error instanceof Error) {\n this.form.controls[''].setErrors({remote: [this.translateService.instant('An unknown error occurred.')]});\n } else {\n this.formValidator.validate(AspMvcFormServerSideFormValidator, this.form, err);\n }\n }\n } finally {\n this.isSubmitting = false;\n }\n }\n}\n\n@Component({\n selector: 'nh-mutate-base-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhMutateBaseComponent<TFormData, TResult> extends NhMutateBaseTypeComponent<TFormData, TResult, NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n","import {\n Component,\n HostListener,\n inject,\n OnDestroy,\n OnInit,\n Output, Type,\n} from \"@angular/core\";\nimport {INhModalComponent, NhModalComponentRef, NhModalService} from \"../../services/nh-modal.service\";\nimport {BaseNhAuthService, NhAuthService} from \"../../services/nh-auth.service\";\nimport {INhAuthorization, NhAuthorization} from \"../../models/auth.models\";\nimport {NhMutateBaseTypeComponent} from \"../nh-mutate-base-component/component\";\n\n@Component({\n selector: 'nh-modal-mutate-base-type-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhModalMutateBaseTypeComponent<TFormData, TResult, TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>\n extends NhMutateBaseTypeComponent<TFormData, TResult, TAuthorization, TAuthService>\n implements\n OnInit,\n OnDestroy,\n INhModalComponent<NhModalMutateBaseTypeComponent<TFormData, TResult, TAuthorization, TAuthService>>\n{\n protected modalComponentRef: NhModalComponentRef<NhModalMutateBaseTypeComponent<TFormData, TResult, TAuthorization, TAuthService>>|undefined;\n protected modalService: NhModalService = inject(NhModalService);\n\n setModalComponentRef(ref: NhModalComponentRef<NhModalMutateBaseTypeComponent<TFormData, TResult, TAuthorization, TAuthService>>): void {\n this.modalComponentRef = ref;\n }\n\n protected constructor(\n authServiceType: Type<TAuthService>\n ) {\n super(authServiceType);\n }\n\n @HostListener('document:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.stopImmediatePropagation();\n this.closeDialog({});\n }\n }\n\n closeDialog(event?: any) {\n this.modalComponentRef?.close();\n }\n}\n\n@Component({\n selector: 'nh-modal-mutate-base-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhModalMutateBaseComponent<TFormData, TResult> extends NhModalMutateBaseTypeComponent<TFormData, TResult, NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n","import {Component, input} from '@angular/core'\nimport { TaskResult } from '../../models/misc.models';\n\n@Component({\n selector: 'nh-error',\n templateUrl: 'component.html',\n styleUrls: ['component.scss'],\n standalone: false\n})\nexport class NhErrorComponent {\n key = input.required<string | undefined>();\n errors = input.required<TaskResult<any> | undefined>();\n\n\n get displayErrors() {\n if(this.key() == undefined) {\n return this.errors()?.items.reduce((a,b) => [...a, ...b.errorMessages] ,<string[]>[]) || [];\n }\n\n return this.errors()?.items.find(x => x.name?.toLowerCase() === this.key()?.toLowerCase())?.errorMessages || []\n }\n}\n","\n@if(displayErrors.length > 0) {\n <ul class=\"text-danger validation-errors\">\n @for(error of displayErrors; track $index) {\n <li>{{error}}</li>\n }\n </ul>\n}\n\n","import {Component, inject, Input, input} from '@angular/core'\nimport { TaskResult } from '../../models/misc.models';\n\nimport {Observable} from 'rxjs';\nimport { NhCollectionBaseComponent } from '../nh-collection-base-component/component';\nimport {\n NhUserNotification,\n NhUserNotificationCollectionHttpRequestOptions, NhUserNotificationState\n} from '../../models/user-notification.models';\nimport {NhUserNotificationService} from \"../../services/nh-user-notification.service\";\nimport {NhCommonModuleConfig} from \"../../models/config.models\";\nimport {CollectionHttpResponse} from \"../../models/http.models\";\n\n@Component({\n selector: 'nh-user-notifications-abstract',\n template: ``,\n standalone: false\n})\nexport abstract class NhUserNotificationsAbstractComponent extends NhCollectionBaseComponent<NhUserNotification> {\n @Input() allowStart: boolean = true;\n @Input() allowStop: boolean = true;\n @Input() itemsPerPage: number = 999;\n @Input() autoLoadNotificationChanges: boolean = true;\n protected readonly userNotificationService: NhUserNotificationService = inject(NhUserNotificationService);\n protected readonly moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n readonly partialLocalStorageKey = input<string>('nh-user-notification-collection');\n override requestOptions = new NhUserNotificationCollectionHttpRequestOptions();\n userNotificationState = this.userNotificationService.state;\n private lastNotificationDate = this.userNotificationState.overview.lastNotificationDate;\n private lastNotificationCount = this.userNotificationState.overview.totalCount;\n private lastUnreadNotificationCount = this.userNotificationState.overview.unreadCount;\n protected userNotificationSubscription = this.userNotificationService.userNotificationState$.subscribe(async (state) => {\n this.userNotificationState = state;\n\n const hasNewNotifications = this.lastNotificationDate !== this.userNotificationState.overview.lastNotificationDate;\n const countChanged = this.lastNotificationCount !== this.userNotificationState.overview.totalCount;\n const unreadCountChanged = this.lastUnreadNotificationCount !== this.userNotificationState.overview.unreadCount;\n\n if(hasNewNotifications || countChanged || unreadCountChanged) {\n if(this.autoLoadNotificationChanges) {\n try {\n await this.reload();\n }catch (ex) {\n console.error('Error while loading new notifications:', ex);\n }\n }\n\n this.onNewNotificationsAvailable(state).catch((error) => {\n console.error('Error handling user notification state change:', error);\n });\n\n this.captureOverview(state);\n }\n });\n\n constructor() {\n super();\n }\n\n protected onNewNotificationsAvailable(state: NhUserNotificationState): Promise<void> {\n return Promise.resolve();\n }\n\n override async appOnInit(): Promise<void> {\n await super.appOnInit();\n if(this.allowStart) {\n this.userNotificationService.start();\n }\n }\n\n override async appOnDestroy(): Promise<void> {\n if(this.allowStop) {\n this.userNotificationService.stop();\n }\n\n this.userNotificationSubscription?.unsubscribe();\n await super.appOnDestroy();\n }\n\n getInitialRequestOptions() {\n return new NhUserNotificationCollectionHttpRequestOptions({\n itemsPerPage: this.moduleConfig.defaultItemsPerPage\n });\n }\n\n override getLocalStoragePartialKey(): string | null {\n return this.partialLocalStorageKey();\n }\n\n async onLoad(requestOptions: NhUserNotificationCollectionHttpRequestOptions) {\n return <Observable<CollectionHttpResponse<NhUserNotification>>>this.userNotificationService.getNotifications(requestOptions);\n }\n\n override async afterLoad() {\n this.captureOverview(this.userNotificationState);\n }\n\n async reload() {\n const currentPage = this.requestOptions.page;\n const itemsPerPage = this.requestOptions.itemsPerPage;\n\n const loadPromises: any[] = [];\n\n for(let i = 1; i <= currentPage; i++) {\n const requestOptions = <NhUserNotificationCollectionHttpRequestOptions>JSON.parse(JSON.stringify(this.requestOptions));\n requestOptions.page = i;\n const loadObservable = await this.onLoad(requestOptions);\n loadPromises.push(loadObservable.lastValueFrom());\n }\n\n const results = await Promise.all(loadPromises);\n this.userNotificationService.loadState().then();\n\n this.collectionResponse.items = [];\n\n for(const result of results) {\n if(result && result.items) {\n this.collectionResponse.items.push(...result.items);\n }\n }\n }\n\n async markAsRead(notification: NhUserNotification): Promise<TaskResult<unknown>> {\n const taskResult = new TaskResult();\n try {\n await this.userNotificationService.markAsRead(notification.id).lastValueFrom();\n this.userNotificationService.loadState().then();\n notification.isLastRead = true;\n }catch (ex) {\n taskResult.addError('', 'Something went wrong while marking the notification as read.');\n return taskResult;\n }\n\n return taskResult;\n }\n\n async markAllAsRead(): Promise<TaskResult<unknown>> {\n const taskResult = new TaskResult();\n try {\n await this.userNotificationService.markAllAsRead().lastValueFrom();\n this.reload().then();\n } catch (ex) {\n taskResult.addError('', 'Something went wrong while marking all notifications as read.');\n return taskResult;\n }\n\n return taskResult;\n }\n\n async archive(notification: NhUserNotification): Promise<TaskResult<unknown>> {\n const taskResult = new TaskResult();\n try {\n await this.userNotificationService.archive(notification.id).lastValueFrom();\n this.collectionResponse.items = this.collectionResponse.items.filter(item => item.id !== notification.id);\n }catch (ex) {\n taskResult.addError('', 'Something went wrong while marking the notification as archived.');\n return taskResult;\n }\n\n this.collectionResponse.items = this.collectionResponse.items.filter(item => item.id !== notification.id);\n\n return taskResult;\n }\n\n async archiveAll(): Promise<TaskResult<unknown>> {\n const taskResult = new TaskResult();\n try {\n await this.userNotificationService.archiveAll().lastValueFrom();\n this.collectionResponse.items = [];\n this.reload().then();\n } catch (ex) {\n taskResult.addError('', 'Something went wrong while marking all notifications archived.');\n return taskResult;\n }\n\n await this.firstPage();\n\n return taskResult;\n }\n\n private captureOverview(state: NhUserNotificationState): void {\n this.lastNotificationDate = state.overview.lastNotificationDate;\n this.lastNotificationCount = state.overview.totalCount;\n this.lastUnreadNotificationCount = state.overview.unreadCount;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n NhBackgroundOperation,\n NhBackgroundOperationChild,\n NhBackgroundOperationStatus,\n NhBackgroundOperationStep,\n NhBackgroundOperationStepStatus,\n nhBackgroundOperationStatusName,\n nhBackgroundOperationStepStatusName,\n nhBackgroundOperationTranslationSegment\n} from '../../models/background-operation.models';\n\n@Component({\n selector: 'nh-background-operation-progress',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './component.html',\n styleUrl: './component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NhBackgroundOperationProgressComponent {\n @Input({ required: true }) operation!: NhBackgroundOperation;\n @Input() showEvents = true;\n @Input() showActions = false;\n @Output() cancelRequested = new EventEmitter<string>();\n @Output() retryRequested = new EventEmitter<string>();\n\n statusKey(status: NhBackgroundOperationStatus): string {\n return `nh-background-operations.status.${nhBackgroundOperationTranslationSegment(nhBackgroundOperationStatusName(status))}`;\n }\n\n stepStatusKey(status: NhBackgroundOperationStepStatus): string {\n return `nh-background-operations.step-status.${nhBackgroundOperationTranslationSegment(nhBackgroundOperationStepStatusName(status))}`;\n }\n\n stepTitle(step: NhBackgroundOperationStep): string {\n return step.titleKey || step.stepKey;\n }\n\n percentage(value?: number): number {\n if (value === undefined || value === null || !Number.isFinite(value)) {\n return 0;\n }\n return Math.max(0, Math.min(100, value));\n }\n\n arguments(json?: string): Record<string, unknown> {\n if (!json) {\n return {};\n }\n try {\n const value = JSON.parse(json);\n return typeof value === 'object' && value !== null ? value : {};\n } catch {\n return {};\n }\n }\n\n hasBatch(step: NhBackgroundOperationStep): boolean {\n return step.discoveredItems > 0 || step.processedItems > 0 || step.activeItems > 0;\n }\n\n childLabel(child: NhBackgroundOperationChild): string {\n return child.fanOutItemKey || child.operationType;\n }\n\n canCancel(status: NhBackgroundOperationStatus): boolean {\n return !['Succeeded', 'Failed', 'Cancelled', 'TimedOut'].includes(nhBackgroundOperationStatusName(status));\n }\n\n canRetry(operation: NhBackgroundOperation): boolean {\n return !operation.sensitiveDataRedactedAt\n && ['Failed', 'Cancelled', 'TimedOut'].includes(nhBackgroundOperationStatusName(operation.status));\n }\n}\n","<section class=\"nh-operation\" [attr.data-status]=\"statusKey(operation.status)\">\n <header class=\"nh-operation__header\">\n <div>\n <p class=\"nh-operation__eyebrow\">{{ 'nh-background-operations.operation' | translate }}</p>\n <h2>{{ operation.operationType }}</h2>\n </div>\n <span class=\"nh-operation__status\">{{ statusKey(operation.status) | translate }}</span>\n </header>\n\n <div class=\"nh-operation__overall\">\n <div class=\"nh-operation__progress-label\">\n <span>{{ operation.progressMessageKey ? (operation.progressMessageKey | translate: arguments(operation.progressMessageArgumentsJson)) : ('nh-background-operations.progress' | translate) }}</span>\n <strong>{{ percentage(operation.progressPercentage) | number:'1.0-1' }}%</strong>\n </div>\n <div class=\"nh-operation__progress\" role=\"progressbar\"\n [attr.aria-label]=\"'nh-background-operations.overall-progress' | translate\"\n aria-valuemin=\"0\" aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage(operation.progressPercentage)\">\n <span [style.width.%]=\"percentage(operation.progressPercentage)\"></span>\n </div>\n </div>\n\n @if (showActions && (canCancel(operation.status) || canRetry(operation))) {\n <div class=\"nh-operation__actions\">\n @if (canCancel(operation.status)) {\n <button type=\"button\" (click)=\"cancelRequested.emit(operation.id)\">\n {{ 'nh-background-operations.cancel' | translate }}\n </button>\n }\n @if (canRetry(operation)) {\n <button type=\"button\" (click)=\"retryRequested.emit(operation.id)\">\n {{ 'nh-background-operations.retry' | translate }}\n </button>\n }\n </div>\n }\n\n <div class=\"nh-operation__steps\" role=\"list\" [attr.aria-label]=\"'nh-background-operations.steps' | translate\">\n <ng-template #renderStep let-step let-depth=\"depth\">\n <article class=\"nh-step\" role=\"listitem\" [style.--nh-step-depth]=\"depth\">\n <div class=\"nh-step__heading\">\n <div>\n <strong>{{ stepTitle(step) | translate: arguments(step.titleArgumentsJson) }}</strong>\n @if (step.messageKey) {\n <span>{{ step.messageKey | translate: arguments(step.messageArgumentsJson) }}</span>\n }\n </div>\n <span class=\"nh-step__status\">{{ stepStatusKey(step.status) | translate }}</span>\n </div>\n <div class=\"nh-step__progress\" role=\"progressbar\"\n [attr.aria-label]=\"stepTitle(step) | translate: arguments(step.titleArgumentsJson)\"\n aria-valuemin=\"0\" aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage(step.percentage)\">\n <span [style.width.%]=\"percentage(step.percentage)\"></span>\n </div>\n @if (hasBatch(step)) {\n <dl class=\"nh-step__batch\">\n <div><dt>{{ 'nh-background-operations.batch.processed' | translate }}</dt><dd>{{ step.processedItems }} / {{ step.discoveredItems }}</dd></div>\n <div><dt>{{ 'nh-background-operations.batch.succeeded' | translate }}</dt><dd>{{ step.succeededItems }}</dd></div>\n <div><dt>{{ 'nh-background-operations.batch.failed' | translate }}</dt><dd>{{ step.failedItems }}</dd></div>\n <div><dt>{{ 'nh-background-operations.batch.skipped' | translate }}</dt><dd>{{ step.skippedItems }}</dd></div>\n @if (step.retriedItems > 0) {\n <div><dt>{{ 'nh-background-operations.batch.retried' | translate }}</dt><dd>{{ step.retriedItems }}</dd></div>\n }\n @if (step.activeItems > 0) {\n <div><dt>{{ 'nh-background-operations.batch.active' | translate }}</dt><dd>{{ step.activeItems }}</dd></div>\n }\n </dl>\n }\n </article>\n @for (child of step.children; track child.id) {\n <ng-container *ngTemplateOutlet=\"renderStep; context: {$implicit: child, depth: depth + 1}\"></ng-container>\n }\n </ng-template>\n\n @for (step of operation.steps; track step.id) {\n <ng-container *ngTemplateOutlet=\"renderStep; context: {$implicit: step, depth: 0}\"></ng-container>\n } @empty {\n <p class=\"nh-operation__empty\">{{ 'nh-background-operations.no-steps' | translate }}</p>\n }\n </div>\n\n @if (operation.children.length > 0) {\n <section class=\"nh-operation__children\">\n <h3>{{ 'nh-background-operations.children' | translate }}</h3>\n <div role=\"list\" [attr.aria-label]=\"'nh-background-operations.children' | translate\">\n <ng-template #renderChild let-child let-depth=\"depth\">\n <article class=\"nh-child\" role=\"listitem\" [style.--nh-child-depth]=\"depth\">\n <div class=\"nh-child__heading\">\n <div>\n <strong>{{ childLabel(child) }}</strong>\n <span>{{ child.operationType }}</span>\n </div>\n <span class=\"nh-child__status\">{{ statusKey(child.status) | translate }}</span>\n </div>\n <div class=\"nh-step__progress\" role=\"progressbar\"\n [attr.aria-label]=\"childLabel(child)\"\n aria-valuemin=\"0\" aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage(child.progressPercentage)\">\n <span [style.width.%]=\"percentage(child.progressPercentage)\"></span>\n </div>\n @if (child.resultUrl) {\n <a [href]=\"child.resultUrl\">{{ 'nh-background-operations.open-result' | translate }}</a>\n }\n </article>\n @for (nestedChild of child.children; track nestedChild.id) {\n <ng-container *ngTemplateOutlet=\"renderChild; context: {$implicit: nestedChild, depth: depth + 1}\"></ng-container>\n }\n </ng-template>\n\n @for (child of operation.children; track child.id) {\n <ng-container *ngTemplateOutlet=\"renderChild; context: {$implicit: child, depth: 0}\"></ng-container>\n }\n </div>\n </section>\n }\n\n @if (showEvents && operation.events.length > 0) {\n <section class=\"nh-operation__events\">\n <h3>{{ 'nh-background-operations.activity' | translate }}</h3>\n <ol>\n @for (event of operation.events; track event.id) {\n @if (event.messageKey) {\n <li [class.nh-operation__event--operator]=\"event.isOperatorOnly\">\n <time [attr.datetime]=\"event.creationDateTime\">{{ event.creationDateTime | date:'short' }}</time>\n <span>\n {{ event.messageKey | translate: arguments(event.messageArgumentsJson) }}\n @if (event.isOperatorOnly) {\n <small class=\"nh-operation__event-badge\">{{ 'nh-background-operations.operator-only' | translate }}</small>\n }\n </span>\n @if (event.resultUrl) {\n <a [href]=\"event.resultUrl\">{{ 'nh-background-operations.open-result' | translate }}</a>\n }\n </li>\n }\n }\n </ol>\n </section>\n }\n</section>\n","import { Component, EventEmitter, Input, Output, ViewChild, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'nh-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss'],\n standalone: false\n})\nexport class NhSearchInputComponent {\n @Input() value : string | undefined = '';\n @Output() onDebounce = new EventEmitter<string>();\n open = false;\n @ViewChild('searchInput') searchInput?: ElementRef<HTMLInputElement>;\n\n focusInput(): void {\n this.searchInput?.nativeElement.focus();\n }\n\n onDebounceEvent(val: Event): void {\n this.onDebounce.emit(val?.toString());\n }\n}\n","<div class=\"filter search-filter\" [class.open]=\"open || value\">\n <div class=\" mb-2\" (click)=\"focusInput()\">\n <input #searchInput (focusin)=\"open = true\" (focusout)=\"open = false\" class=\"form-control\" type=\"text\" placeholder=\"{{ 'general.search' | translate }}...\"\n [ngModel]=\"value\" [nhDebounce]=\"500\" (onDebounce)=\"onDebounceEvent($event)\" />\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {of} from 'rxjs';\nimport {AbstractValueAccessor, MakeProvider} from \"../../accessors/abstract-value.accessor\";\nimport {DefaultMultiSelectSettings, NhFormDropDownSettings} from \"../nh-form-dropdown/form-dropdown.component\";\n\n@Component({\n selector: 'nh-page-size',\n templateUrl: './page-size.component.html',\n styleUrls: ['./page-size.component.scss'],\n standalone: false,\n providers: [MakeProvider(NhPageSizeComponent)],\n})\nexport class NhPageSizeComponent extends AbstractValueAccessor {\n isDisabled = false;\n @Input() name: string = 'page-size';\n\n pageSizeDropDownSettings = new NhFormDropDownSettings({\n lazyLoad: false,\n loadLambda: () => of([\n {id: 10, value: 10},\n {id: 25, value: 25},\n {id: 50, value: 50},\n {id: 100, value: 100},\n ]),\n keyGetLambda: x => x.id,\n valueGetLambda: x => x.value,\n multiSelectSettings: new DefaultMultiSelectSettings({selectionLimit: 1, closeOnSelect: true, enableSearch: false})\n });\n\n setDisabledState?(isDisabled: boolean): void {\n // optional: disable your input\n this.isDisabled = isDisabled;\n }\n}\n","@if (pageSizeDropDownSettings) {\n <div class=\"filter dropdown-with-icon\">\n @if (value) {\n <nh-form-dropdown\n [name]=\"name\"\n [(ngModel)]=\"value\"\n [settings]=\"pageSizeDropDownSettings\"></nh-form-dropdown>\n }\n </div>\n}\n","import {\n ActivatedRouteSnapshot, CanActivateFn, CanDeactivate, GuardResult, MaybeAsync,\n RouterStateSnapshot\n} from \"@angular/router\";\nimport {Observable, tap} from \"rxjs\";\n\n\nexport class NhCanCancelNavigationGuard implements CanDeactivate<ICancelNavigationComponent> {\n canDeactivate(component: ICancelNavigationComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState: RouterStateSnapshot): MaybeAsync<GuardResult> {\n if (!component.canDeactivateComponent) {\n return true;\n }\n\n const result = component.canDeactivateComponent();\n if ((<any>result)?.then) {\n return (<Promise<boolean>>result).then(x => {\n if(x === false) {\n console.debug('Navigation cancelled by component (promise)');\n }\n return x;\n })\n }\n\n if ((<any>result)?.subscribe) {\n return (<Observable<boolean>>result).pipe(tap(x => {\n if(x === false) {\n console.debug('Navigation cancelled by component (observable)');\n }\n }))\n }\n\n if (result === false) {\n console.debug('Navigation cancelled by component');\n }\n return result;\n }\n\n}\n\nexport interface ICancelNavigationComponent {\n canDeactivateComponent(): boolean | Promise<boolean> | Observable<boolean>;\n}\n","import {\n HttpInterceptor,\n HttpRequest,\n HttpHandler,\n HttpParams, HttpEvent\n} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhAuthService } from '../services/nh-auth.service';\nimport { NhApiService } from '../services/nh-api.service';\n\n@Injectable()\nexport class NhActiveDivisionInterceptor implements HttpInterceptor {\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private authService: NhAuthService\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let headers = req.headers;\n\n if(req.url.startsWith(this.moduleConfig.apiBaseUrl) || req.url.startsWith(this.moduleConfig.authApiBaseUrl)) {\n const authorization = this.authService.getAuthorization();\n if((authorization?.activeDivision?.id?.length ?? 0) > 0) {\n if(!headers.get(NhApiService.ActiveDivisionHeaderKey)) {\n headers = headers.append(NhApiService.ActiveDivisionHeaderKey, authorization?.activeDivision?.id ?? '');\n }\n }\n }\n\n return next.handle(req.clone({headers}));\n }\n}\n","import {\n HttpInterceptor,\n HttpRequest,\n HttpHandler,\n HttpParams, HttpEvent\n} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhAuthService } from '../services/nh-auth.service';\nimport { NhApiService } from '../services/nh-api.service';\n\n@Injectable()\nexport class NhApiAuthInterceptor implements HttpInterceptor {\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private authService: NhAuthService\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let headers = req.headers;\n if(this.moduleConfig.authType !== 'header') {\n return next.handle(req.clone({headers}));\n }\n if(this.moduleConfig?.authentication?.addAuthTokensToRequests === true && req.url.startsWith(this.moduleConfig.apiBaseUrl) || req.url.startsWith(this.moduleConfig.authApiBaseUrl)) {\n const authorization = this.authService.getAuthorization();\n if((authorization?.token?.length ?? 0) > 0) {\n if(!headers.get('Authorization')) {\n headers = headers.append('Authorization', `Bearer ${authorization?.token ?? ''}`);\n }\n }\n }\n\n return next.handle(req.clone({headers}));\n }\n}\n","import {\n ErrorHandler,\n inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n provideAppInitializer,\n SkipSelf,\n Type\n} from \"@angular/core\";\nimport {CommonModule} from \"@angular/common\";\nimport {\n HTTP_INTERCEPTORS,\n provideHttpClient,\n withFetch,\n withInterceptorsFromDi\n} from \"@angular/common/http\";\nimport {\n IsAuthenticatedPipe,\n IsAllPermissionsGrantedPipe,\n IsClaimGrantedPipe, IsGrantedRolePipe, IsOneActiveDivisionPermissionGrantedPipe, IsOneActiveDivisionRoleGrantedPipe,\n IsOneClaimGrantedPipe, IsOneDivisionPermissionGrantedPipe, IsOneDivisionRoleGrantedPipe,\n IsOnePermissionGrantedPipe, IsOneRoleGrantedPipe\n} from \"./pipes/auth.pipes\";\nimport {NhDatePipe, NhDateTimePipe, NhDateUtcPipe} from \"./pipes/date.pipes\";\nimport {NhBooleanToStringPipe} from \"./pipes/primitive-type.pipes\";\nimport {NhUrlEncodePipe} from \"./pipes/encode.pipes\";\nimport {NhEncodeHttpParamsInterceptor} from \"./interceptors/nh-encode-http-params.interceptor\";\nimport {NhCommonModuleConfig} from \"./models/config.models\";\nimport {NhToHeadDirective} from \"./directives/nh-to-head.directive\";\nimport {NhButtonDebounceDirective, NhDebounceDirective} from \"./directives/nh-debounce.directives\";\nimport {NhModalComponent} from \"./components/nh-modal/component\";\nimport {NhModalContentDirective} from \"./directives/nh-modal.directives\";\nimport {NhLoaderComponent} from \"./components/nh-loader/component\";\nimport {NhTaskResultFormValidationService} from \"./services/nh-task-result-form.validator\";\nimport {NhJsonLdComponent} from \"./components/nh-json-ld/nh-json-ld.component\";\nimport {NhModalLoadingComponent} from \"./components/nh-loading-modal/component\";\nimport {NhModalConfirmComponent} from \"./components/nh-confirm-modal/component\";\nimport {TranslateModule} from \"@ngx-translate/core\";\nimport {SafeHtmlPipe, SafeResourceUrlPipe, SafeUrlPipe} from \"./pipes/safe-html.pipes\";\nimport {NhCookieService} from \"./services/nh-cookie.service\";\nimport {NhRouterLinkDirective} from \"./directives/nh-router-link.directive\";\nimport {NhServerHttpInterceptor} from \"./interceptors/nh-server-http.interceptor\";\nimport {NhCanCancelNavigationGuard} from \"./guards/nh-cancel-navigation.guard\";\nimport {NhInternetConnectionService} from \"./services/nh-internet-connection.service\";\nimport {NhConfigCommonService} from \"./services/nh-config.service\";\nimport {Observable} from \"rxjs\";\nimport {NhActiveDivisionInterceptor} from \"./interceptors/nh-active-division.interceptor\";\nimport {NhDeduplicateGetRequestsInterceptor} from \"./interceptors/nh-deduplicate-get-requests.interceptor\";\nimport {NhFormDropDownComponent} from \"./components/nh-form-dropdown/form-dropdown.component\";\nimport {NgxBootstrapMultiselectModule} from \"ngx-bootstrap-multiselect\";\nimport {FormsModule} from \"@angular/forms\";\nimport {NhServerSideFormValidationService} from \"./services/nh-server-side-form-validator.service\";\nimport {NhFormErrorMessageComponent} from \"./components/nh-form-error-message/form-error-message.component\";\nimport {NhApiAuthInterceptor} from \"./interceptors/nh-api.auth.interceptor\";\nimport {NhErrorComponent} from \"./components/nh-error/component\";\nimport {BaseNhAuthService, NhAuthService} from \"./services/nh-auth.service\";\nimport {INhAuthorization} from \"./models/auth.models\";\nimport {NH_ERROR_HANDLERS, NhErrorHandlerService} from \"./services/nh-error-handler.service\";\nimport {NhPageSizeComponent} from \"./components/nh-page-size/page-size.component\";\nimport {NhSearchInputComponent} from \"./components/nh-search-input/search-input.component\";\n\n\n@NgModule({\n imports: [\n CommonModule,\n TranslateModule,\n NgxBootstrapMultiselectModule,\n FormsModule\n ],\n declarations: [\n // Components\n NhModalComponent,\n NhLoaderComponent,\n NhJsonLdComponent,\n NhModalLoadingComponent,\n NhModalConfirmComponent,\n NhFormDropDownComponent,\n NhFormErrorMessageComponent,\n NhErrorComponent,\n NhPageSizeComponent,\n NhSearchInputComponent,\n // Pipes\n NhDatePipe,\n NhDateTimePipe,\n NhDateUtcPipe,\n NhBooleanToStringPipe,\n IsAuthenticatedPipe,\n IsAllPermissionsGrantedPipe,\n IsOnePermissionGrantedPipe,\n IsClaimGrantedPipe,\n IsOneClaimGrantedPipe,\n IsOneRoleGrantedPipe,\n IsGrantedRolePipe,\n IsOneDivisionPermissionGrantedPipe,\n IsOneDivisionRoleGrantedPipe,\n IsOneActiveDivisionPermissionGrantedPipe,\n IsOneActiveDivisionRoleGrantedPipe,\n NhUrlEncodePipe,\n SafeHtmlPipe,\n SafeUrlPipe,\n SafeResourceUrlPipe,\n // Directives\n NhToHeadDirective,\n NhDebounceDirective,\n NhButtonDebounceDirective,\n NhModalContentDirective,\n NhRouterLinkDirective\n ],\n exports: [\n // Components\n NhModalComponent,\n NhLoaderComponent,\n NhJsonLdComponent,\n NhModalLoadingComponent,\n NhModalConfirmComponent,\n NhFormDropDownComponent,\n NhFormErrorMessageComponent,\n NhErrorComponent,\n NhPageSizeComponent,\n NhSearchInputComponent,\n // Pipes\n NhDatePipe,\n NhDateTimePipe,\n NhDateUtcPipe,\n NhBooleanToStringPipe,\n IsAuthenticatedPipe,\n IsAllPermissionsGrantedPipe,\n IsOnePermissionGrantedPipe,\n IsClaimGrantedPipe,\n IsOneClaimGrantedPipe,\n IsOneRoleGrantedPipe,\n IsOneDivisionPermissionGrantedPipe,\n IsOneDivisionRoleGrantedPipe,\n IsOneActiveDivisionPermissionGrantedPipe,\n IsOneActiveDivisionRoleGrantedPipe,\n IsGrantedRolePipe,\n NhUrlEncodePipe,\n SafeHtmlPipe,\n SafeUrlPipe,\n SafeResourceUrlPipe,\n // Directives\n NhToHeadDirective,\n NhDebounceDirective,\n NhButtonDebounceDirective,\n NhModalContentDirective,\n NhRouterLinkDirective\n ],\n providers: [\n provideAppInitializer(() => {\n const configService = inject(NhConfigCommonService);\n return new Observable<unknown>((observer) => {\n //\n // We use APP_INITIALIZER to load the configuration before the application starts. (Cuz DEPS calls for AppConfigService it is loaded soon in the lifecycle of the app.)\n //\n configService.initialize().then(() => {\n observer.next({});\n observer.complete();\n }, (err) => {\n observer.error(err);\n observer.complete();\n });\n });\n }),\n // Interceptors\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhActiveDivisionInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhApiAuthInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhEncodeHttpParamsInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhServerHttpInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhDeduplicateGetRequestsInterceptor,\n multi: true\n },\n //Error handlers\n {\n provide: ErrorHandler, // Make support for multiple error handlers\n useExisting: NhErrorHandlerService\n },\n {\n provide: NH_ERROR_HANDLERS, // Register the default\n useClass: ErrorHandler,\n multi: true,\n },\n provideHttpClient(withInterceptorsFromDi(), withFetch()),\n // Guards\n NhCanCancelNavigationGuard,\n // Services\n NhTaskResultFormValidationService,\n NhCookieService,\n NhInternetConnectionService,\n NhServerSideFormValidationService\n ]\n})\nexport class NhCommonModule {\n constructor(@Optional() @SkipSelf() parentModule: NhCommonModule) {\n // Import guard\n if (parentModule) {\n }\n }\n\n static forRoot<TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>(config: NhCommonModuleConfig, authService: Type<TAuthService>): ModuleWithProviders<NhCommonModule> {\n return {\n ngModule: NhCommonModule,\n providers: [\n {provide: NhCommonModuleConfig, useValue: config},\n {provide: NhAuthService, useExisting: authService},\n ]\n };\n }\n}\n\n","export{}\ndeclare global {\n interface Array<T> {\n any(): boolean;\n firstOrDefault(): any;\n lastOrDefault(): any;\n }\n}\n\nArray.prototype.any = function() {\n return this && ((this?.length ?? 0) > 0);\n}\n\nArray.prototype.firstOrDefault = function(defaultValue: any = undefined) {\n return this && this.length > 0 ? this[0] : defaultValue;\n}\n\nArray.prototype.lastOrDefault = function(defaultValue: any = undefined) {\n return this && this.length > 0 ? this[this.length - 1] : defaultValue;\n}\n","import {lastValueFrom, Observable} from 'rxjs';\nimport {TaskResult, TypedResult} from \"../models/misc.models\";\nimport {NhApiUtil} from \"../util/nh-api-util\";\n\ndeclare module \"rxjs/internal/Observable\" {\n interface Observable<T> {\n lastValueFrom(): Promise<T>;\n taskResultLastValueFrom(): Promise<TaskResult<T>>;\n typedResultLastValueFrom(): Promise<TypedResult<T>>;\n }\n}\n\nObservable.prototype.lastValueFrom = function () {\n return lastValueFrom(this);\n}\n\nObservable.prototype.taskResultLastValueFrom = async function <T>(): Promise<TaskResult<T>> {\n const taskResult = new TaskResult<T>();\n try {\n taskResult.data = await lastValueFrom(this);\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(taskResult);\n }\n\n return taskResult;\n}\n\nObservable.prototype.typedResultLastValueFrom = async function <T>(): Promise<TaskResult<T>> {\n const taskResult = new TaskResult<T>();\n try {\n taskResult.data = await lastValueFrom(this);\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(taskResult);\n }\n\n return taskResult.asTypedResult();\n}\n","import {Observable} from 'rxjs';\nimport {TranslateLoader, TranslationObject} from '@ngx-translate/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {StateKey, makeStateKey, TransferState, inject} from '@angular/core';\nimport { NhCommonModuleConfig } from \"../../models/config.models\";\nimport { HttpRequestOptions } from \"../../models/http.models\";\n\nexport class NhTranslateBrowserLoader implements TranslateLoader {\n protected moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n\n protected static readonly httpRequestOptions = new HttpRequestOptions({\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n })\n });\n\n constructor(private http: HttpClient, private transferState: TransferState) {}\n\n public getTranslation(lang: string): Observable<any> {\n\n const key: StateKey<number> = makeStateKey<number>(\n 'transfer-translate-' + lang\n );\n\n const data = this.transferState.get(key, null);\n\n // First we are looking for the translations in transfer-state,\n // if none found, http load as fallback\n if (data) {\n return new Observable((observer) => {\n observer.next(data);\n observer.complete();\n });\n } else {\n const urlPart = this.moduleConfig.translation.browserLoaderPrefix.endsWith('/')\n ? ''\n : '/';\n\n return this.http.get<TranslationObject>(\n `${this.moduleConfig.translation.browserLoaderPrefix}${urlPart}${lang}.json`,\n NhTranslateBrowserLoader.httpRequestOptions\n );\n }\n }\n}\n\nexport function nhTranslateBrowserLoaderFactory(\n httpClient: HttpClient,\n transferState: TransferState\n) {\n return new NhTranslateBrowserLoader(httpClient, transferState);\n}\n","/*\n * Public API Surface of nh-common\n */\n\nexport * from './lib/models/config.models';\nexport * from './lib/models/misc.models';\nexport * from './lib/models/http.models';\nexport * from './lib/models/auth.models';\nexport * from './lib/models/user-notification.models';\nexport * from './lib/models/background-operation.models';\n\nexport * from './lib/util/nh-common-util';\nexport * from './lib/util/nh-string-util';\nexport * from './lib/util/nh-http-util';\nexport * from './lib/util/nh-encoding-util';\nexport * from './lib/util/nh-angular-util';\nexport * from './lib/util/nh-api-util';\nexport * from './lib/util/nh-form.util';\nexport * from './lib/util/nh-mutex.util';\n\nexport * from './lib/interceptors/nh-encode-http-params.interceptor';\nexport * from './lib/interceptors/nh-server-http.interceptor';\nexport * from './lib/interceptors/nh-deduplicate-get-requests.interceptor';\n\nexport * from './lib/accessors/abstract-value.accessor';\n\nexport * from './lib/services/nh-error-handler.service';\nexport * from './lib/services/nh-app.service';\nexport * from './lib/services/nh-page.service';\nexport * from './lib/services/nh-config.service';\nexport * from './lib/services/nh-api.service';\nexport * from './lib/services/nh-auth.service';\nexport * from './lib/services/nh-passkey-client.service';\nexport * from './lib/services/nh-modal.service';\nexport * from './lib/services/nh-task-result-form.validator';\nexport * from './lib/services/nh-title.service';\nexport * from './lib/services/nh-meta.service';\nexport * from './lib/services/nh-head.service';\nexport * from './lib/services/nh-cookie.service';\nexport * from './lib/services/nh-router.service';\nexport * from './lib/services/nh-router-setup.service';\nexport * from './lib/services/nh-json-ld.service';\nexport * from './lib/services/nh-internet-connection.service';\nexport * from './lib/services/nh-server.service';\nexport * from './lib/services/nh-server-side-form-validator.service';\nexport * from './lib/services/nh-base-api.service';\nexport * from './lib/services/nh-user-notification.service';\nexport * from './lib/services/nh-background-operation.service';\nexport * from './lib/services/nh-background-operation-administration.service';\nexport * from './lib/services/nh-background-operation-live-update.service';\nexport * from './lib/services/nh-background-operation.store';\nexport * from './lib/services/nh-context-menu.service';\n\nexport * from './lib/guards/nh-auth.guards';\n\nexport * from './lib/pipes/encode.pipes';\nexport * from './lib/pipes/date.pipes';\nexport * from './lib/pipes/auth.pipes';\nexport * from './lib/pipes/primitive-type.pipes';\nexport * from './lib/pipes/safe-html.pipes';\n\nexport * from './lib/directives/nh-to-head.directive';\nexport * from './lib/directives/nh-debounce.directives';\nexport * from './lib/directives/nh-modal.directives';\nexport * from './lib/directives/nh-router-link.directive';\n\nexport * from './lib/components/nh-modal/component';\nexport * from './lib/components/nh-loader/component';\nexport * from './lib/components/nh-json-ld/nh-json-ld.component';\nexport * from './lib/components/nh-loading-modal/component';\nexport * from './lib/components/nh-confirm-modal/component';\nexport * from './lib/components/nh-page-base-component/nh-page-base.component';\nexport * from './lib/components/nh-form-dropdown/form-dropdown.component';\nexport * from './lib/components/nh-form-error-message/form-error-message.component';\nexport * from './lib/components/nh-collection-base-component/component';\nexport * from './lib/components/nh-mutate-base-component/component';\nexport * from './lib/components/nh-modal-mutate-base-component/component';\nexport * from './lib/components/nh-error/component';\nexport * from './lib/components/nh-user-notifications-component/abstract.component';\nexport * from './lib/components/nh-background-operation-progress/component';\nexport * from './lib/components/nh-search-input/search-input.component';\nexport * from './lib/components/nh-page-size/page-size.component';\n\nexport * from './lib/nh-common.module';\nexport * from './lib/guards/nh-cancel-navigation.guard';\n\nexport * from './lib/prototype-extensions/array.extensions';\nexport * from './lib/prototype-extensions/observable.extensions';\n\n//export * from './lib/miscellaneous/nh-node-fetch.http-backend';\nexport * from './lib/miscellaneous/translate-loaders/translate-browser.loader';\n//export * from './lib/miscellaneous/translate-loaders/translate-server.loader';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["validators.isEmptyString","validators.isString","i1.NhCommonModuleConfig","i2.NhCookieService","i3.NhAuthService","i1","i1.NhAuthService","i3.NhCookieService","i4.NhCommonModuleConfig","i3.NhRouterSetupService","i4","i2.NhAppService","i3.NhConfigCommonService","i4.NhAuthService","i5","i6.NhTitleService","i7.NhMetaService","i8.NhJsonLdService","i9.NhRouterService","msgpackDecode","i2","i2.NhLoaderComponent","i3.NhModalContentDirective","i1.NhAppService","i2.NhAuthService","i3.NhAppService","finalize","i1.NhBackgroundOperationService","i2.NhBackgroundOperationLiveUpdateService","i3.NhCommonModuleConfig","i1.NhLoaderComponent","i3","i2.NhDebounceDirective","i2.NhFormDropDownComponent"],"mappings":"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"}
1
+ {"version":3,"file":"newheap-platform-common.mjs","sources":["../../../projects/nh-common/src/lib/models/config.models.ts","../../../projects/nh-common/src/lib/models/misc.models.ts","../../../projects/nh-common/src/lib/models/http.models.ts","../../../projects/nh-common/src/lib/models/auth.models.ts","../../../projects/nh-common/src/lib/models/user-notification.models.ts","../../../projects/nh-common/src/lib/models/background-operation.models.ts","../../../projects/nh-common/src/lib/util/nh-common-util.ts","../../../projects/nh-common/src/lib/util/nh-string-util.ts","../../../projects/nh-common/src/lib/util/nh-http-util.ts","../../../projects/nh-common/src/lib/util/nh-encoding-util.ts","../../../projects/nh-common/src/lib/util/nh-angular-util.ts","../../../projects/nh-common/src/lib/util/nh-api-util.ts","../../../projects/nh-common/src/lib/util/nh-form.util.ts","../../../projects/nh-common/src/lib/util/nh-mutex.util.ts","../../../projects/nh-common/src/lib/interceptors/nh-encode-http-params.interceptor.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/utils.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/validators.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/parseDate.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/formatDate.ts","../../../projects/nh-common/src/lib/util/though-cookie-custom/cookie.ts","../../../projects/nh-common/src/lib/services/nh-cookie.service.ts","../../../projects/nh-common/src/lib/services/nh-passkey-client.service.ts","../../../projects/nh-common/src/lib/services/nh-auth.service.ts","../../../projects/nh-common/src/lib/interceptors/nh-server-http.interceptor.ts","../../../projects/nh-common/src/lib/interceptors/nh-deduplicate-get-requests.interceptor.ts","../../../projects/nh-common/src/lib/interceptors/nh-session-rejection.interceptor.ts","../../../projects/nh-common/src/lib/accessors/abstract-value.accessor.ts","../../../projects/nh-common/src/lib/services/nh-error-handler.service.ts","../../../projects/nh-common/src/lib/services/nh-app.service.ts","../../../projects/nh-common/src/lib/services/nh-json-ld.service.ts","../../../projects/nh-common/src/lib/services/nh-config.service.ts","../../../projects/nh-common/src/lib/services/nh-title.service.ts","../../../projects/nh-common/src/lib/services/nh-meta.service.ts","../../../projects/nh-common/src/lib/services/nh-router-setup.service.ts","../../../projects/nh-common/src/lib/services/nh-router.service.ts","../../../projects/nh-common/src/lib/services/nh-page.service.ts","../../../projects/nh-common/src/lib/services/nh-api.service.ts","../../../projects/nh-common/src/lib/directives/nh-modal.directives.ts","../../../projects/nh-common/src/lib/components/nh-loader/component.ts","../../../projects/nh-common/src/lib/components/nh-loader/component.html","../../../projects/nh-common/src/lib/components/nh-modal/component.ts","../../../projects/nh-common/src/lib/components/nh-modal/component.html","../../../projects/nh-common/src/lib/components/nh-confirm-modal/component.ts","../../../projects/nh-common/src/lib/components/nh-confirm-modal/component.html","../../../projects/nh-common/src/lib/services/nh-modal.service.ts","../../../projects/nh-common/src/lib/services/nh-task-result-form.validator.ts","../../../projects/nh-common/src/lib/services/nh-head.service.ts","../../../projects/nh-common/src/lib/services/nh-internet-connection.service.ts","../../../projects/nh-common/src/lib/services/nh-server.service.ts","../../../projects/nh-common/src/lib/services/nh-server-side-form-validator.service.ts","../../../projects/nh-common/src/lib/services/nh-base-api.service.ts","../../../projects/nh-common/src/lib/services/nh-user-notification.service.ts","../../../projects/nh-common/src/lib/services/nh-background-operation.service.ts","../../../projects/nh-common/src/lib/services/nh-background-operation-administration.service.ts","../../../projects/nh-common/src/lib/services/nh-background-operation-live-update.service.ts","../../../projects/nh-common/src/lib/services/nh-background-operation.store.ts","../../../projects/nh-common/src/lib/services/nh-context-menu.service.ts","../../../projects/nh-common/src/lib/guards/nh-auth.guards.ts","../../../projects/nh-common/src/lib/pipes/encode.pipes.ts","../../../projects/nh-common/src/lib/pipes/date.pipes.ts","../../../projects/nh-common/src/lib/pipes/auth.pipes.ts","../../../projects/nh-common/src/lib/pipes/primitive-type.pipes.ts","../../../projects/nh-common/src/lib/pipes/safe-html.pipes.ts","../../../projects/nh-common/src/lib/directives/nh-to-head.directive.ts","../../../projects/nh-common/src/lib/directives/nh-debounce.directives.ts","../../../projects/nh-common/src/lib/directives/nh-router-link.directive.ts","../../../projects/nh-common/src/lib/components/nh-json-ld/nh-json-ld.component.ts","../../../projects/nh-common/src/lib/components/nh-loading-modal/component.ts","../../../projects/nh-common/src/lib/components/nh-loading-modal/component.html","../../../projects/nh-common/src/lib/components/nh-page-base-component/nh-page-base.component.ts","../../../projects/nh-common/src/lib/components/nh-form-dropdown/form-dropdown.component.ts","../../../projects/nh-common/src/lib/components/nh-form-dropdown/form-dropdown.component.html","../../../projects/nh-common/src/lib/components/nh-form-error-message/form-error-message.component.ts","../../../projects/nh-common/src/lib/components/nh-form-error-message/form-error-message.component.html","../../../projects/nh-common/src/lib/components/nh-collection-base-component/component.ts","../../../projects/nh-common/src/lib/components/nh-mutate-base-component/component.ts","../../../projects/nh-common/src/lib/components/nh-modal-mutate-base-component/component.ts","../../../projects/nh-common/src/lib/components/nh-error/component.ts","../../../projects/nh-common/src/lib/components/nh-error/component.html","../../../projects/nh-common/src/lib/components/nh-user-notifications-component/abstract.component.ts","../../../projects/nh-common/src/lib/components/nh-background-operation-progress/component.ts","../../../projects/nh-common/src/lib/components/nh-background-operation-progress/component.html","../../../projects/nh-common/src/lib/components/nh-search-input/search-input.component.ts","../../../projects/nh-common/src/lib/components/nh-search-input/search-input.component.html","../../../projects/nh-common/src/lib/components/nh-page-size/page-size.component.ts","../../../projects/nh-common/src/lib/components/nh-page-size/page-size.component.html","../../../projects/nh-common/src/lib/guards/nh-cancel-navigation.guard.ts","../../../projects/nh-common/src/lib/interceptors/nh-active-division.interceptor.ts","../../../projects/nh-common/src/lib/interceptors/nh-api.auth.interceptor.ts","../../../projects/nh-common/src/lib/nh-common.module.ts","../../../projects/nh-common/src/lib/prototype-extensions/array.extensions.ts","../../../projects/nh-common/src/lib/prototype-extensions/observable.extensions.ts","../../../projects/nh-common/src/lib/miscellaneous/translate-loaders/translate-browser.loader.ts","../../../projects/nh-common/src/public-api.ts","../../../projects/nh-common/src/newheap-platform-common.ts"],"sourcesContent":["export class EndpointsAuthenticationNhCommonModuleConfig {\n msAuthenticate: string = '/authentication/oath/microsoft/authorize';\n msRedirectUrl: string = '/authentication/oath/microsoft';\n authorizationFlow: string = '/authentication/method';\n login: string = '/authentication/login';\n logout: string = '/authentication/logout';\n refresh: string = '/authentication/refresh';\n impersonate: string = '/authentication/impersonate';\n revertImpersonate: string = '/authentication/ImpersonateRevert';\n accountInformation: string ='/account';\n twoFactorVerify: string = '/authentication/two-factor/verify';\n twoFactorStatus: string = '/account/two-factor';\n twoFactorAuthenticator: string = '/account/two-factor/authenticator';\n twoFactorAuthenticatorConfirm: string = '/account/two-factor/authenticator/confirm';\n twoFactorRecoveryCodes: string = '/account/two-factor/recovery-codes';\n twoFactorDisable: string = '/account/two-factor/disable';\n twoFactorForgetDevices: string = '/account/two-factor/forget-devices';\n twoFactorEmailSetup: string = '/account/two-factor/email';\n twoFactorEmailConfirm: string = '/account/two-factor/email/confirm';\n twoFactorEmail: string = '/authentication/two-factor/email';\n twoFactorPasskeyOptions: string = '/authentication/two-factor/passkey/options';\n twoFactorPasskey: string = '/authentication/two-factor/passkey';\n twoFactorEnrollmentAuthenticator: string = '/authentication/two-factor/enrollment/authenticator';\n twoFactorEnrollmentAuthenticatorConfirm: string = '/authentication/two-factor/enrollment/authenticator/confirm';\n twoFactorEnrollmentEmail: string = '/authentication/two-factor/enrollment/email';\n twoFactorEnrollmentEmailConfirm: string = '/authentication/two-factor/enrollment/email/confirm';\n twoFactorEnrollmentPasskeyOptions: string = '/authentication/two-factor/enrollment/passkey/options';\n twoFactorEnrollmentPasskey: string = '/authentication/two-factor/enrollment/passkey';\n /** Administration route; `{userId}` is replaced with the user ID. */\n twoFactorUserReset: string = '/authentication/two-factor/users/{userId}/reset';\n twoFactorEnrollmentReminders: string = '/authentication/two-factor/operations/enrollment-reminders';\n twoFactorSessionRevocation: string = '/authentication/two-factor/operations/session-revocation';\n passkeySignInOptions: string = '/authentication/passkey/options';\n passkeySignIn: string = '/authentication/passkey/login';\n passkeys: string = '/account/passkeys';\n passkeyRegistrationOptions: string = '/account/passkeys/options';\n\n public constructor(init?: Partial<EndpointsAuthenticationNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class AuthenticationNhCommonModuleConfig {\n addAuthTokensToRequests: boolean = true;\n additionalClaimPermissionTypes: string[] = [];\n additionalDivisionClaimPermissionTypes: string[] = [];\n endpoints: EndpointsAuthenticationNhCommonModuleConfig = new EndpointsAuthenticationNhCommonModuleConfig();\n loginPath: string = '/';\n /**\n * Ends the local session when the API answers 401 and the account endpoint confirms that the\n * server no longer accepts the session, for example after a password change on another device.\n */\n endSessionRejectedByServer: boolean = true;\n\n public constructor(init?: Partial<AuthenticationNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class UserNotificationNhCommonModuleConfig {\n urlSuffix: string = '/UserNotification';\n pollingInterval: number = 5000; // in milliseconds\n\n public constructor(init?: Partial<UserNotificationNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class BackgroundOperationsNhCommonModuleConfig {\n urlSuffix: string = '/background-operations';\n administrationUrlSuffix: string = '/background-operations/administration';\n hubBaseUrl?: string;\n hubUrlSuffix: string = '/hub/background-operations';\n pollingInterval: number = 5000;\n liveUpdatesEnabled: boolean = true;\n listPageSize: number = 100;\n\n public constructor(init?: Partial<BackgroundOperationsNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\nexport class NhTranslationNhCommonModuleConfig {\n browserLoaderPrefix: string = './assets/i18n/';\n serverLoaderPath: string = 'assets/i18n/';\n public constructor(init?: Partial<NhTranslationNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhFormDropDownNhCommonModuleConfig {\n deferLazyLoadUntilOpened: boolean = false;\n\n public constructor(init?: Partial<NhFormDropDownNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhHttpNhCommonModuleConfig {\n deduplicateGetRequests: boolean = false;\n deduplicateGetRequestHeaderNames: string[] = [\n 'accept',\n 'accept-language',\n 'authorization',\n 'cookie',\n 'x-nh-activedivisionid'\n ];\n\n public constructor(init?: Partial<NhHttpNhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\n\nexport class NhCommonModuleConfig {\n appDisplayName: string = '';\n baseUrl: string = '';\n apiBaseUrl: string = '';\n authApiBaseUrl: string = '';\n defaultLanguage: string = '';\n supportedLanguages: string[] = [];\n authType: 'cookie'|'header' = 'header';\n language: string = '';\n defaultCulture: string = '';\n culture: string = '';\n authenticationRealm: string = '';\n environment: string = '';\n cookieDomain: string = '';\n defaultItemsPerPage: number = 20;\n defaultDateFormat: string = 'dd-MM-yyyy';\n defaultDateTimeFormat: string = 'dd-MM-yyyy HH:mm:ss';\n authentication: AuthenticationNhCommonModuleConfig = new AuthenticationNhCommonModuleConfig();\n userNotification: UserNotificationNhCommonModuleConfig = new UserNotificationNhCommonModuleConfig();\n backgroundOperations: BackgroundOperationsNhCommonModuleConfig = new BackgroundOperationsNhCommonModuleConfig();\n translation: NhTranslationNhCommonModuleConfig = new NhTranslationNhCommonModuleConfig();\n formDropdown: NhFormDropDownNhCommonModuleConfig = new NhFormDropDownNhCommonModuleConfig();\n http: NhHttpNhCommonModuleConfig = new NhHttpNhCommonModuleConfig();\n\n public constructor(init?: Partial<NhCommonModuleConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhCommonConfig {\n languageCode: string = '';\n culture: string = '';\n\n public constructor(init?: Partial<NhCommonConfig>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhCommonConfigChanged {\n config: NhCommonConfig = new NhCommonConfig();\n public constructor(init?: Partial<NhCommonConfigChanged>) {\n Object.assign(this, init);\n }\n}\n","import {KeyValue} from \"@angular/common\";\n\nexport type SuccessResult<T> = TaskResult<T> & { isSuccess: true, data: T };\nexport type ErrorResult<T> = TaskResult<T> & { isSuccess: false, data: T | undefined };\nexport type TypedResult<T> = SuccessResult<T> | ErrorResult<T>;\n\nexport class TaskResultItem {\n name: string = '';\n errorMessages: string[] = [];\n\n public constructor(init?: Partial<TaskResultItem>) {\n Object.assign(this, init);\n }\n}\n\nexport class TaskResult<T> {\n isSuccess: boolean = true;\n items: TaskResultItem[] = [];\n data: T | undefined;\n\n public constructor(init?: Partial<TaskResult<T>>) {\n Object.assign(this, init);\n }\n\n withError(name: string, errorMessages: string | string[]): TaskResult<T> {\n this.addError(name, errorMessages);\n return this;\n }\n\n addError(name: string, errorMessages: string | string[]) {\n this.isSuccess = false;\n let item = this.items.find(x => x.name === name);\n\n if (!item) {\n item = new TaskResultItem({name: name});\n this.items.push(item);\n }\n\n if (!Array.isArray(errorMessages)) {\n errorMessages = [errorMessages];\n }\n\n if (errorMessages && errorMessages.length > 0) {\n for (const errorMessage of errorMessages) {\n item.errorMessages.push(errorMessage);\n }\n }\n }\n\n addErrors(errors: TaskResultItem[]) {\n this.isSuccess = false;\n\n for (const error of errors) {\n let item = this.items.find(x => x.name === error.name);\n\n if (!item) {\n item = new TaskResultItem({name: error.name});\n this.items.push(item);\n }\n\n for (const errorMessage of error.errorMessages) {\n if (!item.errorMessages.includes(errorMessage)) {\n item.errorMessages.push(errorMessage);\n }\n }\n }\n }\n\n copyTo<T2>(target: TaskResult<T2>) {\n if (target) {\n for (const item of this.items) {\n for (const err of item.errorMessages) {\n target.addError(item.name, err);\n }\n }\n }\n }\n\n getAllErrorMessages(): string[] {\n return this.items.flatMap(x => x.errorMessages);\n }\n\n asTypedResult(): TypedResult<T> {\n return <TypedResult<T>>this;\n }\n\n}\n\nexport enum ListSortDirection {\n Ascending = 'Ascending',\n Descending = 'Descending',\n}\n\nexport class PreConnectUrlItem {\n preConnect: boolean = true;\n dnsPrefetch: boolean = true;\n url!: string;\n withCrossOrigin: boolean = false;\n crossOrigin?: string;\n additionalAttributes: KeyValue<string, string>[] = [];\n\n public constructor(init?: Partial<PreConnectUrlItem>) {\n Object.assign(this, init);\n }\n}\n\nexport class PreLoadUrlItem {\n url!: string;\n withCrossOrigin: boolean = false;\n crossOrigin?: string;\n as!: string;\n type!: string;\n additionalAttributes: KeyValue<string, string>[] = [];\n\n public constructor(init?: Partial<PreLoadUrlItem>) {\n Object.assign(this, init);\n }\n}\n\nexport type NhRouterLink = {\n id: string;\n arguments?: any;\n language?: string | null | undefined; // Undefined will use the current language\n scrollToTop?: boolean;\n};\n","import {HttpHeaders, HttpParams} from \"@angular/common/http\";\n\nexport interface IHttpRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'json' | 'blob' | 'text' | 'arraybuffer';\n withCredentials?: boolean;\n}\n\nexport class HttpRequestOptions implements IHttpRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n\n public constructor(init?: Partial<HttpRequestOptions>) {\n Object.assign(this, init);\n }\n}\n\nexport class HttpRequestOptionsArrayBuffer implements IHttpRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'arraybuffer';\n withCredentials?: boolean;\n\n public constructor(init?: Partial<HttpRequestOptions>) {\n Object.assign(this, init);\n }\n}\n\nexport class HttpRequestOptionsText implements IHttpRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'text';\n withCredentials?: boolean;\n\n public constructor(init?: Partial<HttpRequestOptionsText>) {\n Object.assign(this, init);\n }\n}\n\nexport interface IHttpDownloadRequestOptions extends IHttpRequestOptions {\n responseType?: 'blob';\n}\n\nexport class HttpDownloadRequestOptions implements IHttpDownloadRequestOptions {\n headers?: HttpHeaders;\n observe?: 'body';\n params?: HttpParams;\n reportProgress?: boolean;\n responseType?: 'blob';\n withCredentials?: boolean;\n\n public constructor(init?: Partial<HttpDownloadRequestOptions>) {\n Object.assign(this, init);\n }\n}\n\nexport interface ISimpleCollectionHttpRequestOptions extends IHttpRequestOptions {\n page: number;\n itemsPerPage: number;\n}\n\nexport class SimpleCollectionHttpRequestOptions extends HttpRequestOptions implements ISimpleCollectionHttpRequestOptions {\n page: number = 1;\n itemsPerPage: number = 30;\n\n public constructor(init?: Partial<SimpleCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport interface ISearchableCollectionHttpRequestOptions extends ISimpleCollectionHttpRequestOptions {\n search?: string;\n}\n\nexport class SearchableCollectionHttpRequestOptions extends SimpleCollectionHttpRequestOptions implements ISearchableCollectionHttpRequestOptions {\n search: string | undefined;\n\n public constructor(init?: Partial<SearchableCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport interface ICollectionHttpRequestOptions extends ISearchableCollectionHttpRequestOptions {\n orderBy: OrderByRequestOptions[];\n filter: FilterRequestOptions[];\n}\n\nexport class CollectionHttpRequestOptions extends SearchableCollectionHttpRequestOptions implements ICollectionHttpRequestOptions {\n orderBy: OrderByRequestOptions[] = [];\n filter: FilterRequestOptions[] = [];\n\n public constructor(init?: Partial<CollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n\n public or(condition: FilterRequestOptions): this {\n if (this.filter.length == 0) {\n this.filter = [condition];\n return this;\n }\n\n if (this.filter.length == 1) {\n this.filter[0].ors.push(condition);\n } else {\n this.filter[0]\n .andArray(this.filter.slice(1))\n .or(condition)\n ;\n }\n return this;\n }\n\n public and(condition: FilterRequestOptions): this {\n this.filter.push(condition);\n return this;\n }\n\n public equals(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.equals(key, value, tag));\n return this;\n }\n\n public notEquals(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.notEquals(key, value, tag));\n return this;\n }\n\n public isIn(key: string, value: any[], tag?: string): this {\n this.and(FilterRequestOptions.in(key, value, tag));\n return this;\n }\n\n public isNotIn(key: string, value: any[], tag?: string): this {\n this.and(FilterRequestOptions.notIn(key, value, tag));\n return this;\n }\n\n public lessThan(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.lessThan(key, value, tag));\n return this;\n }\n\n public lessThanOrEqual(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.lessThanOrEqual(key, value, tag));\n return this;\n }\n\n public greaterThan(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.greaterThan(key, value, tag));\n return this;\n }\n\n public greaterThanOrEqual(key: string, value: any, tag?: string): this {\n this.and(FilterRequestOptions.greaterThanOrEqual(key, value, tag));\n return this;\n }\n\n public like(key: string, value: string, tag?: string): this {\n this.and(FilterRequestOptions.like(key, value, tag));\n return this;\n }\n\n public order(key: string, direction: 'ASC' | 'DESC'): this {\n this.orderBy.push(new OrderByRequestOptions({key, direction}));\n return this;\n }\n\n public orderByFirst(propertyName: string, collectionItemProperty: string, direction: 'ASC' | 'DESC'): this {\n this.orderBy.push(new OrderByRequestOptions({\n key: `${propertyName}.{first:${direction}}${collectionItemProperty}`\n , direction\n }));\n return this;\n }\n\n public orderByLast(propertyName: string, collectionItemProperty: string, direction: 'ASC' | 'DESC'): this {\n this.orderBy.push(new OrderByRequestOptions({\n key: `${propertyName}.{last:${direction}}${collectionItemProperty}`\n , direction\n }));\n return this;\n }\n\n public orderAsc(key: string): this {\n return this.order(key, 'ASC');\n }\n\n public orderDesc(key: string): this {\n return this.order(key, 'DESC');\n }\n}\n\nexport interface ISimpleCollectionHttpResponse<T> {\n page?: number;\n itemsPerPage?: number;\n resultCount?: number;\n totalCount?: number;\n items?: T[];\n}\n\nexport class SimpleCollectionHttpResponse<T> implements ISimpleCollectionHttpResponse<T> {\n page = 1;\n itemsPerPage = 10;\n resultCount: number = 0;\n totalCount: number = 0;\n items: T[] = [];\n\n public constructor(init?: Partial<SimpleCollectionHttpResponse<T>>) {\n Object.assign(this, init);\n }\n}\n\nexport interface ICollectionHttpResponse<T> extends ISimpleCollectionHttpResponse<T> {\n orderBy?: OrderByRequestOptions[];\n filter?: FilterRequestOptions[];\n search?: string;\n}\n\nexport class CollectionHttpResponse<T> extends SimpleCollectionHttpResponse<T> implements ICollectionHttpResponse<T> {\n orderBy: OrderByRequestOptions[] = [];\n filter: FilterRequestOptions[] = [];\n search = '';\n\n public constructor(init?: Partial<CollectionHttpResponse<T>>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport class OrderByRequestOptions {\n key: string = '';\n direction: 'ASC' | 'DESC' = 'ASC';\n\n public constructor(init?: Partial<OrderByRequestOptions>) {\n Object.assign(this, init);\n }\n}\n\nexport class FilterRequestOptions {\n tag: string | undefined;\n key: string = '';\n value: any;\n operator: string = '==';\n ands: Array<FilterRequestOptions> = [];\n ors: Array<FilterRequestOptions> = [];\n\n public static mergeToAndFilters(filters: Array<FilterRequestOptions>): FilterRequestOptions | null {\n let mainFilter = null;\n for (const filter of filters) {\n if (!filter.value || filter.value == null || filter.value.length < 1) {\n continue;\n }\n\n if (mainFilter == null) {\n mainFilter = filter;\n } else {\n mainFilter.ands.push(filter);\n }\n }\n\n return mainFilter;\n }\n\n public static mergeToOrFilters(filters: Array<FilterRequestOptions>): FilterRequestOptions | null {\n let mainFilter = null;\n\n for (const filter of filters) {\n if (!filter.value || filter.value == null || filter.value.length < 1) {\n continue;\n }\n\n if (mainFilter == null) {\n mainFilter = filter;\n } else {\n mainFilter.ors.push(filter);\n }\n }\n\n return mainFilter;\n }\n\n public and(options: FilterRequestOptions) {\n this.ands.push(options);\n return this;\n }\n\n public andArray(options: FilterRequestOptions[]) {\n this.ands.push(...options);\n return this;\n }\n\n public or(options: FilterRequestOptions) {\n this.ors.push(options);\n return this;\n }\n\n public orArray(options: FilterRequestOptions[]) {\n this.ors.push(...options);\n return this;\n }\n\n public static like(key: string, value: string, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: 'LIKE',\n value: value,\n tag: tag\n });\n }\n\n public static in(key: string, value: any[], tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: 'IN',\n value: value,\n tag: tag\n });\n }\n\n public static notIn(key: string, value: any[], tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: 'NOT IN',\n value: value,\n tag: tag\n });\n }\n\n public static lessThan(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '<',\n value: value,\n tag: tag\n });\n }\n\n public static lessThanOrEqual(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '<=',\n value: value,\n tag: tag\n });\n }\n\n public static greaterThan(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '>',\n value: value,\n tag: tag\n });\n }\n\n public static greaterThanOrEqual(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '>=',\n value: value,\n tag: tag\n });\n }\n\n public static equals(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '==',\n value: value,\n tag: tag\n })\n }\n\n public static notEquals(key: string, value: any, tag?: string) {\n return new FilterRequestOptions({\n key: key,\n operator: '!=',\n value: value,\n tag: tag\n })\n }\n\n\n public constructor(init?: Partial<FilterRequestOptions>) {\n Object.assign(this, init);\n }\n}\n","export interface INhUser {\n id: string | undefined;\n email: string | undefined;\n creationDateTime: any;\n emailConfirmed: boolean;\n lockoutEnd: any;\n lockoutStart: any;\n activeDivisionId: string | undefined;\n activeDivision: INhDivision | undefined;\n roles: Array<string>;\n}\n\nexport class NhUser implements INhUser {\n id: string | undefined;\n email: string | undefined;\n creationDateTime: any;\n emailConfirmed: boolean = false;\n lockoutEnd: any;\n lockoutStart: any;\n activeDivisionId: string | undefined;\n activeDivision: INhDivision | undefined;\n division: INhDivision | undefined;\n roles: Array<string> = [];\n\n public constructor(init?: Partial<NhUser>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhAuthorization {\n realm: string;\n provider: string;\n token: string;\n validTo: string | undefined;\n refreshToken: string | undefined;\n refreshTokenExpires: string | undefined;\n user?: INhUser;\n claims: Claim[];\n divisions: INhDivision[];\n activeDivision?: INhDivision;\n}\n\nexport class NhAuthorization implements INhAuthorization {\n realm: string = '';\n provider: string = '';\n token: string = '';\n validTo: string | undefined;\n refreshToken: string | undefined;\n refreshTokenExpires: string | undefined; // Not implemented yet\n user?: INhUser;\n claims: Claim[] = [];\n divisions: INhDivision[] = [];\n activeDivision?: INhDivision;\n\n public constructor(init?: Partial<NhAuthorization>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhAccountInformationResponse {\n user?: INhUser;\n claims: Claim[];\n divisions: INhDivision[];\n activeDivision?: INhDivision;\n}\n\nexport class NhAccountInformationResponse implements INhAccountInformationResponse {\n user?: INhUser;\n claims: Claim[] = [];\n divisions: INhDivision[] = [];\n activeDivision?: INhDivision;\n public constructor(init?: Partial<NhAccountInformationResponse>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhDivision {\n id: string;\n creationDateTime: any;\n lastModifiedDateTime: any;\n name: string;\n description: string;\n userSelectAllowed: boolean;\n timeZoneId: string;\n}\n\nexport class NhDivision implements INhDivision {\n id: string = '';\n creationDateTime: any;\n lastModifiedDateTime: any;\n name: string = '';\n description: string = '';\n userSelectAllowed: boolean = false;\n timeZoneId: string = '';\n\n public constructor(init?: Partial<NhDivision>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhDivisionRole {\n id?: string;\n name?: string;\n}\n\nexport class NhDivisionRole implements INhDivisionRole {\n id?: string;\n name?: string;\n\n public constructor(init?: Partial<NhDivisionRole>) {\n Object.assign(this, init);\n }\n}\n\nexport interface INhDivisionUser {\n id?: string;\n lockOutStartDateTime?: string;\n lockOutEndDateTime?: string;\n userId?: string;\n user?: INhUser;\n divisionId?: string;\n division?: NhDivision;\n roles: Array<NhDivisionRole>;\n roleIds: Array<string>;\n}\n\nexport class NhDivisionUser implements INhDivisionUser {\n id?: string;\n lockOutStartDateTime?: string;\n lockOutEndDateTime?: string;\n userId?: string;\n user?: INhUser;\n divisionId?: string\n division?: INhDivision;\n roles: Array<INhDivisionRole> = [];\n roleIds: Array<string> = [];\n\n public constructor(init?: Partial<NhDivisionUser>) {\n Object.assign(this, init);\n }\n}\n\n\nexport class AuthSessionExpirationInformation {\n isAuthenticated: boolean = false;\n expiresWithin15MinutesOrExpired: boolean = false;\n displayMinutesSecondsUntilExpiration: string = '00:00';\n /** The server rejected the session before it expired; it stays set until the next sign-in. */\n rejectedByServer: boolean = false;\n\n public constructor(init?: Partial<AuthSessionExpirationInformation>) {\n Object.assign(this, init);\n }\n}\n\nexport class RefreshTokenLoginAccountMutateModel {\n token: string = '';\n refreshToken: string = '';\n\n public constructor(init?: Partial<RefreshTokenLoginAccountMutateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class AuthenticationSessionCreateResponse {\n sessionToken: string = '';\n expirationDateTime: string = '';\n\n public constructor(init?: Partial<AuthenticationSessionCreateResponse>) {\n Object.assign(this, init);\n }\n}\n\nexport class ClaimAuthenticateSessionAccountMutateModel {\n sessionToken: string = '';\n\n public constructor(init?: Partial<ClaimAuthenticateSessionAccountMutateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport interface IClaimAuthenticateSessionAccountViewModel {\n completed: boolean;\n success: boolean;\n errorMessages: string[];\n token?: INhAuthorization;\n}\n\nexport class ClaimAuthenticateSessionAccountViewModel implements IClaimAuthenticateSessionAccountViewModel {\n completed: boolean = false;\n success: boolean = false;\n errorMessages: string[] = [];\n token?: INhAuthorization;\n\n public constructor(init?: Partial<ClaimAuthenticateSessionAccountViewModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class CheckAuthenticateSessionModel {\n success: boolean = false;\n didTry: boolean = false;\n completed: boolean = false;\n errorMessages: string[] = [];\n\n public constructor(init?: Partial<CheckAuthenticateSessionModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class Claim {\n type: string | undefined;\n value: string | undefined;\n\n public constructor(init?: Partial<Claim>) {\n Object.assign(this, init);\n }\n}\n\nexport enum ClaimTypes {\n Name = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name',\n Email = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress',\n NameIdentifier = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier',\n Country = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country',\n Role = 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role',\n Permission = 'nh.platform.permission',\n DivisionRole = 'nh.platform.division.role',\n DivisionPermission = 'nh.platform.division.permission',\n ImpersonateOriginUserId = 'nh.platform.auth.impersonate.origin-user-id'\n}\n\nexport class AuthenticateModel {\n realm: string = '';\n username!: string;\n password: string | undefined;\n /** Remember-device token for header authentication; cookie clients send it as a cookie. */\n rememberDeviceToken?: string;\n\n public constructor(init?: Partial<AuthenticateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class ImpersonateAuthenticateModel {\n userId: string = '';\n\n public constructor(init?: Partial<ImpersonateAuthenticateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport class RevertImpersonateAuthenticateModel {\n public constructor(init?: Partial<RevertImpersonateAuthenticateModel>) {\n Object.assign(this, init);\n }\n}\n\nexport type AuthenticationFlow = 'password' | 'microsoft-oauth' | string;\n\n\n/**\n * Second-factor methods a user can present after the first factor succeeded.\n */\nexport const NhTwoFactorMethods = {\n authenticator: 'authenticator',\n recoveryCode: 'recovery-code',\n email: 'email',\n passkey: 'passkey'\n} as const;\n\nexport type NhTwoFactorMethod = typeof NhTwoFactorMethods[keyof typeof NhTwoFactorMethods] | string;\n\n/**\n * Safe failure codes returned by the two-factor endpoints. Each error item uses the code as\n * its name and `nh-two-factor.<suffix>` as its translation key.\n */\nexport enum NhTwoFactorFailureCodes {\n Required = 'two-factor-required',\n EnrollmentRequired = 'two-factor-enrollment-required',\n InvalidCode = 'two-factor-invalid-code',\n ChallengeExpired = 'two-factor-challenge-expired',\n LockedOut = 'two-factor-locked-out',\n MethodNotAllowed = 'two-factor-method-not-allowed',\n NotEnabled = 'two-factor-not-enabled',\n AlreadyEnabled = 'two-factor-already-enabled',\n SetupNotStarted = 'two-factor-setup-not-started',\n ReauthenticationRequired = 'two-factor-reauthentication-required',\n ReauthenticationFailed = 'two-factor-reauthentication-failed',\n RequiredByPolicy = 'two-factor-required-by-policy',\n NotAllowedWhileImpersonating = 'two-factor-not-allowed-while-impersonating',\n ConfigurationInvalid = 'two-factor-configuration-invalid',\n EmailCooldown = 'two-factor-email-cooldown',\n EmailUnavailable = 'two-factor-email-unavailable',\n UserNotFound = 'two-factor-user-not-found',\n PasskeyInvalid = 'two-factor-passkey-invalid',\n PasskeyNotFound = 'two-factor-passkey-not-found',\n /** The browser does not support passkeys or the user cancelled the passkey prompt. */\n PasskeyUnavailable = 'two-factor-passkey-unavailable'\n}\n\n/**\n * Status values of a pending authentication step.\n */\nexport const NhAuthenticationStepStatuses = {\n twoFactorRequired: 'two-factor-required',\n enrollmentRequired: 'enrollment-required'\n} as const;\n\n/**\n * A pending sign-in step. With status `two-factor-required` the user presents a second\n * factor; with `enrollment-required` the policy requires the user to enroll one first, and\n * `challengeToken` is the enrollment token.\n */\nexport class NhTwoFactorChallenge {\n status: string = NhAuthenticationStepStatuses.twoFactorRequired;\n challengeToken: string = '';\n expiresAt: string = '';\n methods: NhTwoFactorMethod[] = [];\n /** Whether completing the challenge can remember this device for later sign-ins. */\n rememberDeviceAvailable: boolean = false;\n\n public constructor(init?: Partial<NhTwoFactorChallenge>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Login response when two-factor authentication is enabled on the server. A complete\n * session has the token fields; a pending sign-in only has `twoFactor`.\n */\nexport interface NhLoginResponse {\n token?: string | null;\n validTo?: string | null;\n refreshToken?: string | null;\n refreshValidTo?: string | null;\n issuer?: string | null;\n twoFactor?: NhTwoFactorChallenge | null;\n /** Remember-device token for header authentication, returned when the user chose to remember the device. */\n rememberDeviceToken?: string | null;\n}\n\nexport type NhAuthenticationStepStatus = 'authenticated' | 'two-factor-required' | 'enrollment-required';\n\n/**\n * Outcome of an interactive sign-in step: the stored authorization, a second-factor\n * challenge or a required enrollment.\n */\nexport class NhAuthenticationStep<TAuthorization extends INhAuthorization = INhAuthorization> {\n status: NhAuthenticationStepStatus = 'authenticated';\n authorization?: TAuthorization;\n challenge?: NhTwoFactorChallenge;\n\n public constructor(init?: Partial<NhAuthenticationStep<TAuthorization>>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhTwoFactorVerifyModel {\n challengeToken: string = '';\n method: NhTwoFactorMethod = NhTwoFactorMethods.authenticator;\n code: string = '';\n /** Skip the second factor on this device for later sign-ins, when the server allows it. */\n rememberDevice?: boolean;\n\n public constructor(init?: Partial<NhTwoFactorVerifyModel>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Proof that the signed-in user is present before a sensitive change: the current password\n * or a valid second-factor code.\n */\nexport class NhTwoFactorReauthentication {\n password?: string;\n method?: NhTwoFactorMethod;\n code?: string;\n\n public constructor(init?: Partial<NhTwoFactorReauthentication>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhTwoFactorStatus {\n enabled: boolean = false;\n required: boolean = false;\n methods: NhTwoFactorMethod[] = [];\n availableMethods: NhTwoFactorMethod[] = [];\n recoveryCodesLeft: number = 0;\n authenticatorSetupPending: boolean = false;\n emailSetupPending: boolean = false;\n rememberDeviceAvailable: boolean = false;\n passkeyCount: number = 0;\n\n public constructor(init?: Partial<NhTwoFactorStatus>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Pending authenticator enrollment. `qrCodeDataUri` is a PNG data URI rendered by the server.\n */\nexport class NhAuthenticatorSetup {\n sharedKey: string = '';\n authenticatorUri: string = '';\n qrCodeDataUri?: string;\n\n public constructor(init?: Partial<NhAuthenticatorSetup>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Result of a two-factor change. Recovery codes are returned once. When the change ended\n * every session, the service has already stored the renewed session for this device.\n */\nexport class NhTwoFactorChange {\n recoveryCodes?: string[];\n sessionRenewed: boolean = false;\n\n public constructor(init?: Partial<NhTwoFactorChange>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Confirmation that the server e-mailed a code.\n */\nexport class NhTwoFactorEmailCodeSent {\n expiresAt: string = '';\n /** When another code can be requested. */\n resendAvailableAt: string = '';\n\n public constructor(init?: Partial<NhTwoFactorEmailCodeSent>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * Result of an enrollment that the policy required during sign-in. The session is already\n * stored; the recovery codes are returned once.\n */\nexport class NhTwoFactorEnrollmentResult<TAuthorization extends INhAuthorization = INhAuthorization> {\n authorization?: TAuthorization;\n recoveryCodes?: string[];\n\n public constructor(init?: Partial<NhTwoFactorEnrollmentResult<TAuthorization>>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * WebAuthn options from the server for one passkey ceremony. `options` is the JSON form of\n * the creation or request options; `ceremonyToken` goes back with the credential.\n */\nexport class NhPasskeyOptions {\n options: any = {};\n ceremonyToken: string = '';\n expiresAt: string = '';\n\n public constructor(init?: Partial<NhPasskeyOptions>) {\n Object.assign(this, init);\n }\n}\n\n/**\n * A registered passkey. The public key is never returned.\n */\nexport class NhPasskey {\n /** Credential ID, base64url encoded. */\n id: string = '';\n name: string = '';\n createdAt: string = '';\n /** Whether a passkey provider, such as a password manager, syncs the passkey. */\n isBackedUp: boolean = false;\n transports: string[] = [];\n\n public constructor(init?: Partial<NhPasskey>) {\n Object.assign(this, init);\n }\n}\n","import {CollectionHttpRequestOptions} from \"./http.models\";\n\nexport class NhUserNotificationCollectionHttpRequestOptions extends CollectionHttpRequestOptions {\n\n public constructor(init?: Partial<NhUserNotificationCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\nexport type NhUserNotificationSeverity =\n | 'Information'\n | 'Success'\n | 'Warning'\n | 'Error'\n | number;\n\nexport function nhUserNotificationSeverityName(severity: NhUserNotificationSeverity | null | undefined): string {\n if (typeof severity === 'string') {\n return severity;\n }\n\n return ({\n 0: 'Information',\n 10: 'Success',\n 20: 'Warning',\n 30: 'Error'\n } as Record<number, string>)[severity ?? 0] ?? 'Information';\n}\n\nexport class NhUserNotificationState {\n overview: NhUserNotificationOverview = new NhUserNotificationOverview();\n\n public constructor(init?: Partial<NhUserNotificationState>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhUserNotificationOverview {\n totalCount: number = 0;\n unreadCount: number = 0;\n lastNotificationDate: string = '';\n\n public constructor(init?: Partial<NhUserNotificationOverview>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhUserNotification {\n id: string = '';\n creationDateTime: string = '';\n lastModifiedDateTime: string = '';\n messages: NhUserNotificationMessage[] = [];\n lastTitle: string = '';\n lastMessage: string = '';\n isLastRead: boolean = false;\n category: string | null = null;\n severity: NhUserNotificationSeverity = 'Information';\n groupKey: string | null = null;\n data: NhUserNotificationData = new NhUserNotificationData();\n\n public constructor(init?: Partial<NhUserNotification>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhUserNotificationMessage {\n id: string = '';\n creationDateTime: string = '';\n lastModifiedDateTime: string = '';\n title: string = '';\n message: string = '';\n severity: NhUserNotificationSeverity = 'Information';\n userNotificationId: string = '';\n\n public constructor(init?: Partial<NhUserNotificationMessage>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhUserNotificationData {\n url: string = '';\n urlInNewTab: boolean = false;\n\n public constructor(init?: Partial<NhUserNotificationData>) {\n Object.assign(this, init);\n }\n}\n","import { CollectionHttpRequestOptions } from './http.models';\n\nexport type NhBackgroundOperationStatus =\n | 'PendingDispatch'\n | 'Queued'\n | 'Running'\n | 'WaitingForChildren'\n | 'WaitingForSignal'\n | 'CancelRequested'\n | 'RetryScheduled'\n | 'Succeeded'\n | 'Failed'\n | 'Cancelled'\n | 'TimedOut'\n | number;\n\nexport type NhBackgroundOperationAttemptStatus =\n | 'Queued'\n | 'Running'\n | 'Suspended'\n | 'Succeeded'\n | 'Failed'\n | 'Cancelled'\n | 'Abandoned'\n | number;\n\nexport type NhBackgroundOperationStepStatus =\n | 'Pending'\n | 'Running'\n | 'Succeeded'\n | 'Failed'\n | 'Skipped'\n | 'Cancelled'\n | 'Indeterminate'\n | number;\n\nexport type NhBackgroundOperationAggregationMode =\n | 'Manual'\n | 'WeightedChildren'\n | 'ItemCount'\n | 'Indeterminate'\n | 'ChildOperations'\n | number;\n\nexport type NhBackgroundOperationEventType =\n | 'StateChanged'\n | 'StepStarted'\n | 'StepProgressed'\n | 'StepCompleted'\n | 'BatchChanged'\n | 'RetryScheduled'\n | 'CancellationRequested'\n | 'Message'\n | 'CheckpointChanged'\n | 'ResultAvailable'\n | 'ChildrenCreated'\n | 'ChildrenCompleted'\n | 'SignalWaitStarted'\n | 'SignalReceived'\n | number;\n\nexport type NhBackgroundOperationMessageSeverity =\n | 'Information'\n | 'Success'\n | 'Warning'\n | 'Error'\n | number;\n\nexport interface NhBackgroundOperationAttempt {\n id: string;\n attemptNumber: number;\n status: NhBackgroundOperationAttemptStatus;\n startedAt?: string;\n heartbeatAt?: string;\n completedAt?: string;\n failureCode?: string;\n recoveryReason?: string;\n}\n\nexport interface NhBackgroundOperationStep {\n id: string;\n parentStepId?: string;\n stepKey: string;\n titleKey?: string;\n titleArgumentsJson?: string;\n messageKey?: string;\n messageArgumentsJson?: string;\n status: NhBackgroundOperationStepStatus;\n aggregationMode: NhBackgroundOperationAggregationMode;\n weight: number;\n current?: number;\n total?: number;\n percentage?: number;\n discoveredItems: number;\n processedItems: number;\n succeededItems: number;\n failedItems: number;\n skippedItems: number;\n retriedItems: number;\n activeItems: number;\n continueOnChildFailure: boolean;\n displayOrder: number;\n depth: number;\n startedAt?: string;\n completedAt?: string;\n children: NhBackgroundOperationStep[];\n}\n\nexport interface NhBackgroundOperationEvent {\n id: string;\n sequence: number;\n stepId?: string;\n stepKey?: string;\n eventType: NhBackgroundOperationEventType;\n severity: NhBackgroundOperationMessageSeverity;\n messageKey?: string;\n messageArgumentsJson?: string;\n snapshotVersion: number;\n creationDateTime: string;\n resultReferenceType?: string;\n resultReferenceId?: string;\n resultUrl?: string;\n isMilestone: boolean;\n /** Diagnostic event that only the administration endpoints return. */\n isOperatorOnly?: boolean;\n}\n\nexport interface NhBackgroundOperation {\n id: string;\n creationDateTime: string;\n lastModifiedDateTime: string;\n operationType: string;\n payloadSchemaVersion: number;\n ownerUserId: string;\n divisionId?: string;\n parentOperationId?: string;\n rootOperationId?: string;\n fanOutKey?: string;\n fanOutItemKey?: string;\n status: NhBackgroundOperationStatus;\n queue: string;\n priority: number;\n currentAttemptNumber: number;\n domainObjectType?: string;\n domainObjectId?: string;\n correlationId?: string;\n progressCurrent?: number;\n progressTotal?: number;\n progressPercentage?: number;\n progressPhaseKey?: string;\n progressMessageKey?: string;\n progressMessageArgumentsJson?: string;\n cancelRequestedAt?: string;\n startedAt?: string;\n heartbeatAt?: string;\n completedAt?: string;\n sensitiveDataRedactedAt?: string;\n resultReferenceType?: string;\n resultReferenceId?: string;\n resultUrl?: string;\n failureCode?: string;\n failureMessageKey?: string;\n version: number;\n latestEventSequence: number;\n attempts: NhBackgroundOperationAttempt[];\n steps: NhBackgroundOperationStep[];\n events: NhBackgroundOperationEvent[];\n children: NhBackgroundOperationChild[];\n}\n\n/**\n * Operation snapshot returned by the administration endpoints. It adds the owner,\n * the user who requested cancellation and scheduling diagnostics.\n */\nexport interface NhBackgroundOperationAdministration extends NhBackgroundOperation {\n ownerDisplayName?: string;\n cancelRequestedByUserId?: string;\n processorKey: string;\n dispatchGeneration: number;\n schedulerJobId?: string;\n nextDispatchAt?: string;\n diagnosticCorrelationId?: string;\n}\n\nexport interface NhBackgroundOperationChild {\n id: string;\n parentOperationId?: string;\n operationType: string;\n fanOutKey?: string;\n fanOutItemKey?: string;\n status: NhBackgroundOperationStatus;\n progressPercentage?: number;\n creationDateTime: string;\n lastModifiedDateTime: string;\n completedAt?: string;\n resultReferenceType?: string;\n resultReferenceId?: string;\n resultUrl?: string;\n failureCode?: string;\n children: NhBackgroundOperationChild[];\n}\n\nexport interface NhBackgroundOperationChanged {\n operationId: string;\n version: number;\n latestEventSequence: number;\n status: NhBackgroundOperationStatus;\n divisionId?: string;\n}\n\nexport class NhBackgroundOperationCollectionHttpRequestOptions extends CollectionHttpRequestOptions {\n public constructor(init?: Partial<NhBackgroundOperationCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport class NhBackgroundOperationAdministrationCollectionHttpRequestOptions extends CollectionHttpRequestOptions {\n public constructor(init?: Partial<NhBackgroundOperationAdministrationCollectionHttpRequestOptions>) {\n super(init);\n Object.assign(this, init);\n }\n}\n\nexport function nhBackgroundOperationStatusName(status: NhBackgroundOperationStatus): string {\n if (typeof status === 'string') {\n return status;\n }\n\n return ({\n 0: 'PendingDispatch',\n 10: 'Queued',\n 20: 'Running',\n 25: 'WaitingForChildren',\n 27: 'WaitingForSignal',\n 30: 'CancelRequested',\n 40: 'RetryScheduled',\n 100: 'Succeeded',\n 110: 'Failed',\n 120: 'Cancelled',\n 130: 'TimedOut'\n } as Record<number, string>)[status] ?? 'Unknown';\n}\n\nexport function nhBackgroundOperationStepStatusName(status: NhBackgroundOperationStepStatus): string {\n if (typeof status === 'string') {\n return status;\n }\n\n return ({\n 0: 'Pending',\n 10: 'Running',\n 100: 'Succeeded',\n 110: 'Failed',\n 120: 'Skipped',\n 130: 'Cancelled',\n 140: 'Indeterminate'\n } as Record<number, string>)[status] ?? 'Unknown';\n}\n\nexport function nhBackgroundOperationTranslationSegment(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/[_\\s]+/g, '-')\n .toLowerCase();\n}\n","export const languageToCultureMap = {\n 'nl': 'nl-NL',\n 'en': 'en-US',\n 'fr': 'fr-FR',\n 'de': 'de-DE',\n};\n\nexport const nameof = <T>(name: keyof T) => name;\n\nexport const IsDefined = <T>(value: T): value is NonNullable<T> => {\n return value !== undefined && value !== null;\n}\n\nexport function enumKeysToArray(e: any) {\n return Object.keys(e).filter(k => typeof e[k as any] === 'number' || typeof e[k as any] === 'string');\n}\n\nexport function enumValuesToArray(e: any) {\n return enumKeysToArray(e).map(k => e[k as any]);\n}\n\nexport function enumIntValuesToArray(e: any) {\n return enumKeysToArray(e).map(k => e[k as any]).filter(k => typeof k === 'number');\n}\n\nexport function enumStringValuesToArray(e: any) {\n return enumKeysToArray(e).map(k => e[k as any]).filter(k => typeof k === 'string');\n}\n\nexport function getEmptyGuid(): string {\n return '00000000-0000-0000-0000-000000000000';\n}\n\nexport function getRandomIdentifier(): string {\n let d = new Date().getTime();//Timestamp\n let d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now()*1000)) || 0;//Time in microseconds since page-load or 0 if unsupported\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16;//random number between 0 and 16\n if(d > 0){//Use timestamp until depleted\n r = (d + r)%16 | 0;\n d = Math.floor(d/16);\n } else {//Use microseconds since page-load if supported\n r = (d2 + r)%16 | 0;\n d2 = Math.floor(d2/16);\n }\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n}\n\nexport function groupBy<T>(items: any[], keyGetter: any) {\n return items.reduce(\n (result, item) => ({\n ...result,\n [keyGetter(item)]: [\n ...(result[keyGetter(item)] || []),\n item,\n ],\n }),\n {},\n );\n}\n\nexport function uppercaseFirst(val?: string) {\n if(val) {\n return val && String(val[0]).toUpperCase() + String(val).slice(1);\n } else{\n return val;\n }\n}\n","export class NhStringUtil {\n public static upperFirst(inString: string|undefined|null): string|undefined|null {\n if(!inString || inString.length < 1) {\n return inString;\n }\n\n return `${inString[0].toUpperCase()}${inString.slice(1)}`;\n }\n\n public static lowerFirst(inString: string|undefined|null): string|undefined|null {\n if(!inString || inString.length < 1) {\n return inString;\n }\n\n return `${inString[0].toLowerCase()}${inString.slice(1)}`;\n }\n}\n","export class NhHttpUtil {\n public static filenameFromContentDisposition(contentDisposition: string): string {\n let filename = \"\";\n if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const matches = filenameRegex.exec(contentDisposition);\n if (matches != null && matches[1]) {\n filename = matches[1].replace(/['\"]/g, '');\n }\n }\n\n return filename;\n }\n\n public static objectToFormData(obj: any, formData: FormData = new FormData(), namespace?: string): FormData {\n if (obj === null || obj === undefined) {\n return formData;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item, index) => {\n this.objectToFormData(item, formData, namespace ? `${namespace}[${index}]` : `${index}`);\n });\n } else if (typeof obj === 'object') {\n Object.keys(obj).forEach(key => {\n if (obj.hasOwnProperty(key) && obj[key] !== undefined) {\n this.objectToFormData(obj[key], formData, namespace ? `${namespace}.${key}` : key);\n }\n });\n } else {\n formData.append(namespace || '', obj);\n }\n\n return formData;\n }\n}\n","export class NhEncodingUtil {\n\n public static convertBlobToBase64(blob: Blob): Promise<string|ArrayBuffer|null> {\n return new Promise<string|ArrayBuffer|null>((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = reject;\n reader.onload = () => {\n resolve(reader.result);\n };\n\n reader.readAsDataURL(blob);\n });\n }\n}\n","\nexport class NhAngularUtil {\n static idTrackBy(index: number, idObject: any): any {\n return idObject.id;\n }\n}\n\n","import {TaskResult} from '../models/misc.models';\nimport {HttpErrorResponse} from \"@angular/common/http\";\nimport {CollectionHttpRequestOptions, FilterRequestOptions} from \"../models/http.models\";\n\n\nexport class NhApiUtil {\n public static Constants = class {\n public static HttpHeaderKeys = class {\n //public static TenantId: string = 'X-TenantId';\n };\n };\n\n public static ParseCollectionRequestOptions(value?: string | null): CollectionHttpRequestOptions {\n const options = <CollectionHttpRequestOptions>JSON.parse(value ?? '');\n options.filter = options.filter.map(x => NhApiUtil.processFilter(x));\n return new CollectionHttpRequestOptions(options);\n }\n\n private static processFilter(filter: FilterRequestOptions) {\n const f = new FilterRequestOptions(filter);\n f.ands = f.ands.map(x => NhApiUtil.processFilter(x));\n f.ors = f.ors.map(x => NhApiUtil.processFilter(x));\n return f;\n }\n\n public static taskResultFromResponse(response: any): TaskResult<any> {\n const taskResult = new TaskResult<any>();\n\n if (response !== undefined) {\n const checkResponse = response;\n const isHttpResponseError = checkResponse instanceof HttpErrorResponse;\n\n if (isHttpResponseError) {\n const responseContentType = response.headers.get('Content-Type');\n\n if (responseContentType && responseContentType.includes('json')) {\n if (response.error_description !== undefined) {\n taskResult.addError('', response.error_description);\n }\n\n if (response.ModelState !== undefined) {\n for (const key in response.ModelState) {\n\n const errors = response.ModelState[key];\n taskResult.addError(key, errors);\n }\n }\n\n if (response.Message !== undefined) {\n taskResult.addError('', response.Message);\n }\n\n if (response.error && response.error.errors) {\n if (response.error.errors instanceof Array) {\n taskResult.addError('', response.error.errors);\n } else if (response.error.errors instanceof Object) {\n for (const key in response.error.errors) {\n\n const errors = response.error.errors[key];\n taskResult.addError(key, errors);\n }\n } else {\n throw new Error('Unknown error type');\n }\n } else if (response.error) {\n if (Array.isArray(response.error)) {\n taskResult.addError('', response.error);\n } else {\n Object.keys(response.error).forEach(function (key) {\n if (Array.isArray(response.error[key])) {\n taskResult.addError(key, response.error[key]);\n } else if (response.error[key] === Object(response.error[key])) {\n taskResult.addError(key, response.error[key]);\n } else {\n taskResult.addError(key, response.error[key]);\n }\n });\n }\n\n }\n } else {\n taskResult.addError('', response.error);\n }\n }\n }\n\n if (taskResult.isSuccess) {\n taskResult.addError('', 'An unknown error occurred');\n }\n\n return taskResult;\n }\n}\n","import {AbstractControl, UntypedFormArray, UntypedFormGroup} from '@angular/forms';\nimport {TranslateService} from '@ngx-translate/core';\nimport {enumValuesToArray} from \"./nh-common-util\";\n\nexport interface NhEnumDropDownItem<TValue extends string | number> {\n id: TValue | '';\n name: string;\n}\n\nexport class NhFormHelper {\n public static clearErrors(form: any): void {\n if (form) {\n Object.keys(form.controls).forEach((key: string) => {\n const control = form.controls[key];\n NhFormHelper.clearError(control);\n });\n }\n }\n\n private static clearError(obj: any) {\n\n if (obj instanceof UntypedFormGroup) {\n NhFormHelper.clearFormGroupErrors(obj);\n return;\n }\n\n if (obj instanceof UntypedFormArray) {\n NhFormHelper.clearFormArrayErrors(obj);\n return;\n }\n\n if (obj instanceof AbstractControl) {\n NhFormHelper.clearControlErrors(obj);\n return;\n }\n }\n\n private static clearFormGroupErrors(formGroup: UntypedFormGroup) {\n if (formGroup) {\n Object.keys(formGroup.controls).forEach((key: string) => {\n const control = formGroup.get(key);\n NhFormHelper.clearError(control);\n });\n }\n }\n\n private static clearFormArrayErrors(formArray: UntypedFormArray) {\n if (formArray) {\n for (const control of formArray.controls) {\n NhFormHelper.clearError(control);\n }\n }\n }\n\n private static clearControlErrors(control: AbstractControl) {\n if (control) {\n control.setErrors(null);\n }\n }\n\n public static getEnumDropDownByEnum(\n e: any,\n translateService: TranslateService,\n translationPrefix: string,\n emptyFirst?: boolean,\n skipValues?: any[]\n ): any[];\n\n public static getEnumDropDownByEnum<TValue extends string | number>(\n e: any,\n translateService: TranslateService,\n translationPrefix: string,\n emptyFirst: boolean,\n skipValues: TValue[],\n translationKeySelector: (value: TValue) => string\n ): NhEnumDropDownItem<TValue>[];\n\n public static getEnumDropDownByEnum(\n e: any,\n translateService: TranslateService,\n translationPrefix: string,\n emptyFirst: boolean = true,\n skipValues: any[] = [],\n translationKeySelector?: (value: any) => string\n ): any[] {\n const values = enumValuesToArray(e);\n const result = [];\n\n if (emptyFirst) {\n result.push({id: '', name: translateService.instant('general.make-a-choice')});\n }\n\n for (const value of values) {\n if (skipValues && skipValues.length > 0) {\n if (skipValues.findIndex(x => <string>x === <string>value) !== -1) {\n continue;\n }\n }\n const translationKey = translationKeySelector\n ? translationKeySelector(value)\n : translationPrefix + value;\n result.push({id: value, name: translateService.instant(translationKey)});\n }\n\n return result;\n }\n}\n","export class NhMutex {\n private lockPromise: Promise<void> = Promise.resolve();\n\n async lock(): Promise<() => void> {\n let release: () => void;\n const newLock = new Promise<void>((resolve) => (release = resolve));\n\n const currentLock = this.lockPromise;\n this.lockPromise = this.lockPromise.then(() => newLock);\n\n await currentLock;\n return release!;\n }\n}\n\nexport class NhAsyncLock {\n private isLocked = false;\n\n async runExclusive<T>(fn: () => Promise<T>): Promise<T> {\n while (this.isLocked) {\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n this.isLocked = true;\n try {\n return await fn();\n } finally {\n this.isLocked = false;\n }\n }\n}\n","import {\n HttpInterceptor,\n HttpRequest,\n HttpEvent,\n HttpHandler,\n HttpParams,\n HttpParameterCodec\n} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable, tap} from 'rxjs';\n\n@Injectable()\nexport class NhEncodeHttpParamsInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const params = new HttpParams({encoder: new CustomEncoder(), fromString: req.params.toString()});\n\n return next.handle(req.clone({params}));\n }\n}\n\nclass CustomEncoder implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\n","/**\n * A callback function that accepts an error or a result.\n * @public\n */\nexport interface Callback<T> {\n (error: Error, result?: never): void\n (error: null, result: T): void\n}\n\n/**\n * A callback function that only accepts an error.\n * @public\n */\nexport interface ErrorCallback {\n (error: Error | null): void\n}\n\n/**\n * The inverse of NonNullable<T>.\n * @public\n */\nexport type Nullable<T> = T | null | undefined\n\n/** Wrapped `Object.prototype.toString`, so that you don't need to remember to use `.call()`. */\nexport const objectToString = (obj: unknown): string =>\n Object.prototype.toString.call(obj)\n\n/**\n * Converts an array to string, safely handling symbols, null prototype objects, and recursive arrays.\n */\nconst safeArrayToString = (\n arr: unknown[],\n seenArrays: WeakSet<object>,\n): string => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString#description\n if (typeof arr.join !== 'function') return objectToString(arr)\n seenArrays.add(arr)\n const mapped = arr.map((val) =>\n val === null || val === undefined || seenArrays.has(val)\n ? ''\n : safeToStringImpl(val, seenArrays),\n )\n return mapped.join()\n}\n\nconst safeToStringImpl = (val: unknown, seenArrays = new WeakSet()): string => {\n // Using .toString() fails for null/undefined and implicit conversion (val + \"\") fails for symbols\n // and objects with null prototype\n if (typeof val !== 'object' || val === null) {\n return String(val)\n } else if (typeof val.toString === 'function') {\n return Array.isArray(val)\n ? // Arrays have a weird custom toString that we need to replicate\n safeArrayToString(val, seenArrays)\n : // eslint-disable-next-line @typescript-eslint/no-base-to-string\n String(val)\n } else {\n // This case should just be objects with null prototype, so we can just use Object#toString\n return objectToString(val)\n }\n}\n\n/** Safely converts any value to string, using the value's own `toString` when available. */\nexport const safeToString = (val: unknown): string => safeToStringImpl(val)\n\n/** Utility object for promise/callback interop. */\nexport interface PromiseCallback<T> {\n promise: Promise<T>\n callback: Callback<T>\n resolve: (value: T) => Promise<T>\n reject: (error: Error) => Promise<T>\n}\n\n/** Converts a callback into a utility object where either a callback or a promise can be used. */\nexport function createPromiseCallback<T>(cb?: Callback<T>): PromiseCallback<T> {\n let callback: Callback<T>\n let resolve: (result: T) => void\n let reject: (error: Error) => void\n\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n\n if (typeof cb === 'function') {\n callback = (err, result): void => {\n try {\n if (err) cb(err)\n // If `err` is null, we know `result` must be `T`\n // The assertion isn't *strictly* correct, as `T` could be nullish, but, ehh, good enough...\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n else cb(null, result!)\n } catch (e) {\n reject(e instanceof Error ? e : new Error())\n }\n }\n } else {\n callback = (err, result): void => {\n try {\n // If `err` is null, we know `result` must be `T`\n // The assertion isn't *strictly* correct, as `T` could be nullish, but, ehh, good enough...\n if (err) reject(err)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n else resolve(result!)\n } catch (e) {\n reject(e instanceof Error ? e : new Error())\n }\n }\n }\n\n return {\n promise,\n callback,\n resolve: (value: T): Promise<T> => {\n callback(null, value)\n return promise\n },\n reject: (error: Error): Promise<T> => {\n callback(error)\n return promise\n },\n }\n}\n\nexport function inOperator<K extends string, T extends object>(\n k: K,\n o: T,\n): o is T & Record<K, unknown> {\n return k in o\n}\n","/* ************************************************************************************\nExtracted from check-types.js\nhttps://gitlab.com/philbooth/check-types.js\n\nMIT License\n\nCopyright (c) 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Phil Booth\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n************************************************************************************ */\n\nimport { Callback, objectToString, safeToString } from './utils'\n\n/* Validation functions copied from check-types package - https://www.npmjs.com/package/check-types */\n\n/** Determines whether the argument is a non-empty string. */\nexport function isNonEmptyString(data: unknown): boolean {\n return isString(data) && data !== ''\n}\n\n/** Determines whether the argument is a *valid* Date. */\nexport function isDate(data: unknown): boolean {\n return data instanceof Date && isInteger(data.getTime())\n}\n\n/** Determines whether the argument is the empty string. */\nexport function isEmptyString(data: unknown): boolean {\n return data === '' || (data instanceof String && data.toString() === '')\n}\n\n/** Determines whether the argument is a string. */\nexport function isString(data: unknown): boolean {\n return typeof data === 'string' || data instanceof String\n}\n\n/** Determines whether the string representation of the argument is \"[object Object]\". */\nexport function isObject(data: unknown): boolean {\n return objectToString(data) === '[object Object]'\n}\n\n/** Determines whether the argument is an integer. */\nexport function isInteger(data: unknown): boolean {\n return typeof data === 'number' && data % 1 === 0\n}\n\n/* -- End validation functions -- */\n\n/**\n * When the first argument is false, an error is created with the given message. If a callback is\n * provided, the error is passed to the callback, otherwise the error is thrown.\n */\nexport function validate(\n bool: boolean,\n cbOrMessage?: Callback<never> | string,\n message?: string,\n): void {\n if (bool) return // Validation passes\n const cb = typeof cbOrMessage === 'function' ? cbOrMessage : undefined\n let options = typeof cbOrMessage === 'function' ? message : cbOrMessage\n // The default message prior to v5 was '[object Object]' due to a bug, and the message is kept\n // for backwards compatibility.\n if (!isObject(options)) options = '[object Object]'\n\n const err = new ParameterError(safeToString(options))\n if (cb) cb(err)\n else throw err\n}\n\n/**\n * Represents a validation error.\n * @public\n */\nexport class ParameterError extends Error {}\n","// date-time parsing constants (RFC6265 S5.1.1)\n\nimport type { Nullable } from './utils'\n\n// eslint-disable-next-line no-control-regex\nconst DATE_DELIM = /[\\x09\\x20-\\x2F\\x3B-\\x40\\x5B-\\x60\\x7B-\\x7E]/\n\nconst MONTH_TO_NUM = {\n jan: 0,\n feb: 1,\n mar: 2,\n apr: 3,\n may: 4,\n jun: 5,\n jul: 6,\n aug: 7,\n sep: 8,\n oct: 9,\n nov: 10,\n dec: 11,\n}\n\n/*\n * Parses a Natural number (i.e., non-negative integer) with either the\n * <min>*<max>DIGIT ( non-digit *OCTET )\n * or\n * <min>*<max>DIGIT\n * grammar (RFC6265 S5.1.1).\n *\n * The \"trailingOK\" boolean controls if the grammar accepts a\n * \"( non-digit *OCTET )\" trailer.\n */\nfunction parseDigits(\n token: string,\n minDigits: number,\n maxDigits: number,\n trailingOK: boolean,\n): number | undefined {\n let count = 0\n while (count < token.length) {\n const c = token.charCodeAt(count)\n // \"non-digit = %x00-2F / %x3A-FF\"\n if (c <= 0x2f || c >= 0x3a) {\n break\n }\n count++\n }\n\n // constrain to a minimum and maximum number of digits.\n if (count < minDigits || count > maxDigits) {\n return\n }\n\n if (!trailingOK && count != token.length) {\n return\n }\n\n return parseInt(token.slice(0, count), 10)\n}\n\nfunction parseTime(token: string): number[] | undefined {\n const parts = token.split(':')\n const result = [0, 0, 0]\n\n /* RF6256 S5.1.1:\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n */\n\n if (parts.length !== 3) {\n return\n }\n\n for (let i = 0; i < 3; i++) {\n // \"time-field\" must be strictly \"1*2DIGIT\", HOWEVER, \"hms-time\" can be\n // followed by \"( non-digit *OCTET )\" therefore the last time-field can\n // have a trailer\n const trailingOK = i == 2\n const numPart = parts[i]\n if (numPart === undefined) {\n return\n }\n const num = parseDigits(numPart, 1, 2, trailingOK)\n if (num === undefined) {\n return\n }\n result[i] = num\n }\n\n return result\n}\n\nfunction parseMonth(token: string): number | undefined {\n token = String(token).slice(0, 3).toLowerCase()\n switch (token) {\n case 'jan':\n return MONTH_TO_NUM.jan\n case 'feb':\n return MONTH_TO_NUM.feb\n case 'mar':\n return MONTH_TO_NUM.mar\n case 'apr':\n return MONTH_TO_NUM.apr\n case 'may':\n return MONTH_TO_NUM.may\n case 'jun':\n return MONTH_TO_NUM.jun\n case 'jul':\n return MONTH_TO_NUM.jul\n case 'aug':\n return MONTH_TO_NUM.aug\n case 'sep':\n return MONTH_TO_NUM.sep\n case 'oct':\n return MONTH_TO_NUM.oct\n case 'nov':\n return MONTH_TO_NUM.nov\n case 'dec':\n return MONTH_TO_NUM.dec\n default:\n return\n }\n}\n\n/**\n * Parse a cookie date string into a {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date | Date}. Parses according to\n * {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.1.1 | RFC6265 - Section 5.1.1}, not\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse | Date.parse()}.\n *\n * @remarks\n *\n * ### RFC6265 - 5.1.1. Dates\n *\n * The user agent MUST use an algorithm equivalent to the following\n * algorithm to parse a cookie-date. Note that the various boolean\n * flags defined as a part of the algorithm (i.e., found-time, found-\n * day-of-month, found-month, found-year) are initially \"not set\".\n *\n * 1. Using the grammar below, divide the cookie-date into date-tokens.\n *\n * ```\n * cookie-date = *delimiter date-token-list *delimiter\n * date-token-list = date-token *( 1*delimiter date-token )\n * date-token = 1*non-delimiter\n *\n * delimiter = %x09 / %x20-2F / %x3B-40 / %x5B-60 / %x7B-7E\n * non-delimiter = %x00-08 / %x0A-1F / DIGIT / \":\" / ALPHA / %x7F-FF\n * non-digit = %x00-2F / %x3A-FF\n *\n * day-of-month = 1*2DIGIT ( non-digit *OCTET )\n * month = ( \"jan\" / \"feb\" / \"mar\" / \"apr\" /\n * \"may\" / \"jun\" / \"jul\" / \"aug\" /\n * \"sep\" / \"oct\" / \"nov\" / \"dec\" ) *OCTET\n * year = 2*4DIGIT ( non-digit *OCTET )\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n * ```\n *\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date:\n *\n * 1. If the found-time flag is not set and the token matches the\n * time production, set the found-time flag and set the hour-\n * value, minute-value, and second-value to the numbers denoted\n * by the digits in the date-token, respectively. Skip the\n * remaining sub-steps and continue to the next date-token.\n *\n * 2. If the found-day-of-month flag is not set and the date-token\n * matches the day-of-month production, set the found-day-of-\n * month flag and set the day-of-month-value to the number\n * denoted by the date-token. Skip the remaining sub-steps and\n * continue to the next date-token.\n *\n * 3. If the found-month flag is not set and the date-token matches\n * the month production, set the found-month flag and set the\n * month-value to the month denoted by the date-token. Skip the\n * remaining sub-steps and continue to the next date-token.\n *\n * 4. If the found-year flag is not set and the date-token matches\n * the year production, set the found-year flag and set the\n * year-value to the number denoted by the date-token. Skip the\n * remaining sub-steps and continue to the next date-token.\n *\n * 3. If the year-value is greater than or equal to 70 and less than or\n * equal to 99, increment the year-value by 1900.\n *\n * 4. If the year-value is greater than or equal to 0 and less than or\n * equal to 69, increment the year-value by 2000.\n *\n * 1. NOTE: Some existing user agents interpret two-digit years differently.\n *\n * 5. Abort these steps and fail to parse the cookie-date if:\n *\n * - at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n *\n * - the day-of-month-value is less than 1 or greater than 31,\n *\n * - the year-value is less than 1601,\n *\n * - the hour-value is greater than 23,\n *\n * - the minute-value is greater than 59, or\n *\n * - the second-value is greater than 59.\n *\n * (Note that leap seconds cannot be represented in this syntax.)\n *\n * 6. Let the parsed-cookie-date be the date whose day-of-month, month,\n * year, hour, minute, and second (in UTC) are the day-of-month-\n * value, the month-value, the year-value, the hour-value, the\n * minute-value, and the second-value, respectively. If no such\n * date exists, abort these steps and fail to parse the cookie-date.\n *\n * 7. Return the parsed-cookie-date as the result of this algorithm.\n *\n * @example\n * ```\n * parseDate('Wed, 09 Jun 2021 10:18:14 GMT')\n * ```\n *\n * @param cookieDate - the cookie date string\n * @public\n */\nexport function parseDate(cookieDate: Nullable<string>): Date | undefined {\n if (!cookieDate) {\n return\n }\n\n /* RFC6265 S5.1.1:\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date\n */\n const tokens = cookieDate.split(DATE_DELIM)\n\n let hour: number | undefined\n let minute: number | undefined\n let second: number | undefined\n let dayOfMonth: number | undefined\n let month: number | undefined\n let year: number | undefined\n\n for (let i = 0; i < tokens.length; i++) {\n const token = (tokens[i] ?? '').trim()\n if (!token.length) {\n continue\n }\n\n /* 2.1. If the found-time flag is not set and the token matches the time\n * production, set the found-time flag and set the hour- value,\n * minute-value, and second-value to the numbers denoted by the digits in\n * the date-token, respectively. Skip the remaining sub-steps and continue\n * to the next date-token.\n */\n if (second === undefined) {\n const result = parseTime(token)\n if (result) {\n hour = result[0]\n minute = result[1]\n second = result[2]\n continue\n }\n }\n\n /* 2.2. If the found-day-of-month flag is not set and the date-token matches\n * the day-of-month production, set the found-day-of- month flag and set\n * the day-of-month-value to the number denoted by the date-token. Skip\n * the remaining sub-steps and continue to the next date-token.\n */\n if (dayOfMonth === undefined) {\n // \"day-of-month = 1*2DIGIT ( non-digit *OCTET )\"\n const result = parseDigits(token, 1, 2, true)\n if (result !== undefined) {\n dayOfMonth = result\n continue\n }\n }\n\n /* 2.3. If the found-month flag is not set and the date-token matches the\n * month production, set the found-month flag and set the month-value to\n * the month denoted by the date-token. Skip the remaining sub-steps and\n * continue to the next date-token.\n */\n if (month === undefined) {\n const result = parseMonth(token)\n if (result !== undefined) {\n month = result\n continue\n }\n }\n\n /* 2.4. If the found-year flag is not set and the date-token matches the\n * year production, set the found-year flag and set the year-value to the\n * number denoted by the date-token. Skip the remaining sub-steps and\n * continue to the next date-token.\n */\n if (year === undefined) {\n // \"year = 2*4DIGIT ( non-digit *OCTET )\"\n const result = parseDigits(token, 2, 4, true)\n if (result !== undefined) {\n year = result\n /* From S5.1.1:\n * 3. If the year-value is greater than or equal to 70 and less\n * than or equal to 99, increment the year-value by 1900.\n * 4. If the year-value is greater than or equal to 0 and less\n * than or equal to 69, increment the year-value by 2000.\n */\n if (year >= 70 && year <= 99) {\n year += 1900\n } else if (year >= 0 && year <= 69) {\n year += 2000\n }\n }\n }\n }\n\n /* RFC 6265 S5.1.1\n * \"5. Abort these steps and fail to parse the cookie-date if:\n * * at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n * * the day-of-month-value is less than 1 or greater than 31,\n * * the year-value is less than 1601,\n * * the hour-value is greater than 23,\n * * the minute-value is greater than 59, or\n * * the second-value is greater than 59.\n * (Note that leap seconds cannot be represented in this syntax.)\"\n *\n * So, in order as above:\n */\n if (\n dayOfMonth === undefined ||\n month === undefined ||\n year === undefined ||\n hour === undefined ||\n minute === undefined ||\n second === undefined ||\n dayOfMonth < 1 ||\n dayOfMonth > 31 ||\n year < 1601 ||\n hour > 23 ||\n minute > 59 ||\n second > 59\n ) {\n return\n }\n\n return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second))\n}\n","/**\n * Format a {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date | Date} into\n * the {@link https://www.rfc-editor.org/rfc/rfc2616#section-3.3.1 | preferred Internet standard format}\n * defined in {@link https://www.rfc-editor.org/rfc/rfc822#section-5 | RFC822} and\n * updated in {@link https://www.rfc-editor.org/rfc/rfc1123#page-55 | RFC1123}.\n *\n * @example\n * ```\n * formatDate(new Date(0)) === 'Thu, 01 Jan 1970 00:00:00 GMT`\n * ```\n *\n * @param date - the date value to format\n * @public\n */\nexport function formatDate(date: Date): string {\n return date.toUTCString()\n}\n","/*!\n * Copyright (c) 2015-2020, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport * as validators from './validators'\nimport { inOperator } from './utils'\nimport {parseDate} from \"./parseDate\";\nimport {formatDate} from \"./formatDate\";\n\n// From RFC6265 S4.1.1\n// note that it excludes \\x3B \";\"\nconst COOKIE_OCTETS = /^[\\x21\\x23-\\x2B\\x2D-\\x3A\\x3C-\\x5B\\x5D-\\x7E]+$/\n\n// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or \";\"'\n// Note ';' is \\x3B\nconst PATH_VALUE = /[\\x20-\\x3A\\x3C-\\x7E]+/\n\n// eslint-disable-next-line no-control-regex\nconst CONTROL_CHARS = /[\\x00-\\x1F]/\n\n// From Chromium // '\\r', '\\n' and '\\0' should be treated as a terminator in\n// the \"relaxed\" mode, see:\n// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60\nconst TERMINATORS = ['\\n', '\\r', '\\0']\n\nfunction trimTerminator(str: string): string {\n if (validators.isEmptyString(str)) return str\n for (let t = 0; t < TERMINATORS.length; t++) {\n const terminator = TERMINATORS[t]\n const terminatorIdx = terminator ? str.indexOf(terminator) : -1\n if (terminatorIdx !== -1) {\n str = str.slice(0, terminatorIdx)\n }\n }\n\n return str\n}\n\nfunction parseCookiePair(\n cookiePair: string,\n looseMode: boolean,\n): Cookie | undefined {\n cookiePair = trimTerminator(cookiePair)\n\n let firstEq = cookiePair.indexOf('=')\n if (looseMode) {\n if (firstEq === 0) {\n // '=' is immediately at start\n cookiePair = cookiePair.substring(1)\n firstEq = cookiePair.indexOf('=') // might still need to split on '='\n }\n } else {\n // non-loose mode\n if (firstEq <= 0) {\n // no '=' or is at start\n return undefined // needs to have non-empty \"cookie-name\"\n }\n }\n\n let cookieName, cookieValue\n if (firstEq <= 0) {\n cookieName = ''\n cookieValue = cookiePair.trim()\n } else {\n cookieName = cookiePair.slice(0, firstEq).trim()\n cookieValue = cookiePair.slice(firstEq + 1).trim()\n }\n\n if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {\n return undefined\n }\n\n const c = new Cookie()\n c.key = cookieName\n c.value = cookieValue\n return c\n}\n\n/**\n * Optional configuration to be used when parsing cookies.\n * @public\n */\nexport interface ParseCookieOptions {\n /**\n * If `true` then keyless cookies like `=abc` and `=` which are not RFC-compliant will be parsed.\n */\n loose?: boolean | undefined\n}\n\nfunction parse(str: string, options?: ParseCookieOptions): Cookie | undefined {\n if (validators.isEmptyString(str) || !validators.isString(str)) {\n return undefined\n }\n\n str = str.trim()\n\n // We use a regex to parse the \"name-value-pair\" part of S5.2\n const firstSemi = str.indexOf(';') // S5.2 step 1\n const cookiePair = firstSemi === -1 ? str : str.slice(0, firstSemi)\n const c = parseCookiePair(cookiePair, options?.loose ?? false)\n if (!c) {\n return undefined\n }\n\n if (firstSemi === -1) {\n return c\n }\n\n // S5.2.3 \"unparsed-attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\" plus later on in the same section\n // \"discard the first \";\" and trim\".\n const unparsed = str.slice(firstSemi + 1).trim()\n\n // \"If the unparsed-attributes string is empty, skip the rest of these\n // steps.\"\n if (unparsed.length === 0) {\n return c\n }\n\n /*\n * S5.2 says that when looping over the items \"[p]rocess the attribute-name\n * and attribute-value according to the requirements in the following\n * subsections\" for every item. Plus, for many of the individual attributes\n * in S5.3 it says to use the \"attribute-value of the last attribute in the\n * cookie-attribute-list\". Therefore, in this implementation, we overwrite\n * the previous value.\n */\n const cookie_avs = unparsed.split(';')\n while (cookie_avs.length) {\n const av = (cookie_avs.shift() ?? '').trim()\n if (av.length === 0) {\n // happens if \";;\" appears\n continue\n }\n const av_sep = av.indexOf('=')\n let av_key: string, av_value: string | null\n\n if (av_sep === -1) {\n av_key = av\n av_value = null\n } else {\n av_key = av.slice(0, av_sep)\n av_value = av.slice(av_sep + 1)\n }\n\n av_key = av_key.trim().toLowerCase()\n\n if (av_value) {\n av_value = av_value.trim()\n }\n\n switch (av_key) {\n case 'expires': // S5.2.1\n if (av_value) {\n const exp = parseDate(av_value)\n // \"If the attribute-value failed to parse as a cookie date, ignore the\n // cookie-av.\"\n if (exp) {\n // over and underflow not realistically a concern: V8's getTime() seems to\n // store something larger than a 32-bit time_t (even with 32-bit node)\n c.expires = exp\n }\n }\n break\n\n case 'max-age': // S5.2.2\n if (av_value) {\n // \"If the first character of the attribute-value is not a DIGIT or a \"-\"\n // character ...[or]... If the remainder of attribute-value contains a\n // non-DIGIT character, ignore the cookie-av.\"\n if (/^-?[0-9]+$/.test(av_value)) {\n const delta = parseInt(av_value, 10)\n // \"If delta-seconds is less than or equal to zero (0), let expiry-time\n // be the earliest representable date and time.\"\n c.setMaxAge(delta)\n }\n }\n break\n\n case 'domain': // S5.2.3\n // \"If the attribute-value is empty, the behavior is undefined. However,\n // the user agent SHOULD ignore the cookie-av entirely.\"\n if (av_value) {\n // S5.2.3 \"Let cookie-domain be the attribute-value without the leading %x2E\n // (\".\") character.\"\n const domain = av_value.trim().replace(/^\\./, '')\n if (domain) {\n // \"Convert the cookie-domain to lower case.\"\n c.domain = domain.toLowerCase()\n }\n }\n break\n\n case 'path': // S5.2.4\n /*\n * \"If the attribute-value is empty or if the first character of the\n * attribute-value is not %x2F (\"/\"):\n * Let cookie-path be the default-path.\n * Otherwise:\n * Let cookie-path be the attribute-value.\"\n *\n * We'll represent the default-path as null since it depends on the\n * context of the parsing.\n */\n c.path = av_value && av_value[0] === '/' ? av_value : null\n break\n\n case 'secure': // S5.2.5\n /*\n * \"If the attribute-name case-insensitively matches the string \"Secure\",\n * the user agent MUST append an attribute to the cookie-attribute-list\n * with an attribute-name of Secure and an empty attribute-value.\"\n */\n c.secure = true\n break\n\n case 'httponly': // S5.2.6 -- effectively the same as 'secure'\n c.httpOnly = true\n break\n\n case 'samesite': // RFC6265bis-02 S5.3.7\n switch (av_value ? av_value.toLowerCase() : '') {\n case 'strict':\n c.sameSite = 'strict'\n break\n case 'lax':\n c.sameSite = 'lax'\n break\n case 'none':\n c.sameSite = 'none'\n break\n default:\n c.sameSite = undefined\n break\n }\n break\n\n default:\n c.extensions = c.extensions || []\n c.extensions.push(av)\n break\n }\n }\n\n return c\n}\n\nfunction fromJSON(str: unknown): Cookie | undefined {\n if (!str || validators.isEmptyString(str)) {\n return undefined\n }\n\n let obj: unknown\n if (typeof str === 'string') {\n try {\n obj = JSON.parse(str)\n } catch {\n return undefined\n }\n } else {\n // assume it's an Object\n obj = str\n }\n\n const c = new Cookie()\n Cookie.serializableProperties.forEach((prop) => {\n if (obj && typeof obj === 'object' && inOperator(prop, obj)) {\n const val = obj[prop]\n if (val === undefined) {\n return\n }\n\n if (inOperator(prop, cookieDefaults) && val === cookieDefaults[prop]) {\n return\n }\n\n switch (prop) {\n case 'key':\n case 'value':\n case 'sameSite':\n if (typeof val === 'string') {\n c[prop] = val\n }\n break\n case 'expires':\n case 'creation':\n case 'lastAccessed':\n if (\n typeof val === 'number' ||\n typeof val === 'string' ||\n val instanceof Date\n ) {\n c[prop] = obj[prop] == 'Infinity' ? 'Infinity' : new Date(val)\n } else if (val === null) {\n c[prop] = null\n }\n break\n case 'maxAge':\n if (\n typeof val === 'number' ||\n val === 'Infinity' ||\n val === '-Infinity'\n ) {\n c[prop] = val\n }\n break\n case 'domain':\n case 'path':\n if (typeof val === 'string' || val === null) {\n c[prop] = val\n }\n break\n case 'secure':\n case 'httpOnly':\n if (typeof val === 'boolean') {\n c[prop] = val\n }\n break\n case 'extensions':\n if (\n Array.isArray(val) &&\n val.every((item) => typeof item === 'string')\n ) {\n c[prop] = val\n }\n break\n case 'hostOnly':\n case 'pathIsDefault':\n if (typeof val === 'boolean' || val === null) {\n c[prop] = val\n }\n break\n }\n }\n })\n\n return c\n}\n\n/**\n * Configurable values that can be set when creating a {@link Cookie}.\n * @public\n */\nexport interface CreateCookieOptions {\n /** {@inheritDoc Cookie.key} */\n key?: string\n /** {@inheritDoc Cookie.value} */\n value?: string\n /** {@inheritDoc Cookie.expires} */\n expires?: Date | 'Infinity' | null\n /** {@inheritDoc Cookie.maxAge} */\n maxAge?: number | 'Infinity' | '-Infinity' | null\n /** {@inheritDoc Cookie.domain} */\n domain?: string | null\n /** {@inheritDoc Cookie.path} */\n path?: string | null\n /** {@inheritDoc Cookie.secure} */\n secure?: boolean\n /** {@inheritDoc Cookie.httpOnly} */\n httpOnly?: boolean\n /** {@inheritDoc Cookie.extensions} */\n extensions?: string[] | null\n /** {@inheritDoc Cookie.creation} */\n creation?: Date | 'Infinity' | null\n /** {@inheritDoc Cookie.hostOnly} */\n hostOnly?: boolean | null\n /** {@inheritDoc Cookie.pathIsDefault} */\n pathIsDefault?: boolean | null\n /** {@inheritDoc Cookie.lastAccessed} */\n lastAccessed?: Date | 'Infinity' | null\n /** {@inheritDoc Cookie.sameSite} */\n sameSite?: string | undefined\n}\n\nconst cookieDefaults = {\n // the order in which the RFC has them:\n key: '',\n value: '',\n expires: 'Infinity',\n maxAge: null,\n domain: null,\n path: null,\n secure: false,\n httpOnly: false,\n extensions: null,\n // set by the CookieJar:\n hostOnly: null,\n pathIsDefault: null,\n creation: null,\n lastAccessed: null,\n //@ts-ignore\n sameSite: undefined,\n} as const satisfies Required<CreateCookieOptions>\n\n/**\n * An HTTP cookie (web cookie, browser cookie) is a small piece of data that a server sends to a user's web browser.\n * It is defined in {@link https://www.rfc-editor.org/rfc/rfc6265.html | RFC6265}.\n * @public\n */\nexport class Cookie {\n /**\n * The name or key of the cookie\n */\n key: string\n /**\n * The value of the cookie\n */\n value: string\n /**\n * The 'Expires' attribute of the cookie\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.1 | RFC6265 Section 5.2.1}).\n */\n expires: Date | 'Infinity' | null\n /**\n * The 'Max-Age' attribute of the cookie\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.2 | RFC6265 Section 5.2.2}).\n */\n maxAge: number | 'Infinity' | '-Infinity' | null\n /**\n * The 'Domain' attribute of the cookie represents the domain the cookie belongs to\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.3 | RFC6265 Section 5.2.3}).\n */\n domain: string | null\n /**\n * The 'Path' attribute of the cookie represents the path of the cookie\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.4 | RFC6265 Section 5.2.4}).\n */\n path: string | null\n /**\n * The 'Secure' flag of the cookie indicates if the scope of the cookie is\n * limited to secure channels (e.g.; HTTPS) or not\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.5 | RFC6265 Section 5.2.5}).\n */\n secure: boolean\n /**\n * The 'HttpOnly' flag of the cookie indicates if the cookie is inaccessible to\n * client scripts or not\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.6 | RFC6265 Section 5.2.6}).\n */\n httpOnly: boolean\n /**\n * Contains attributes which are not part of the defined spec but match the `extension-av` syntax\n * defined in Section 4.1.1 of RFC6265\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-4.1.1 | RFC6265 Section 4.1.1}).\n */\n extensions: string[] | null\n /**\n * Set to the date and time when a Cookie is initially stored or a matching cookie is\n * received that replaces an existing cookie\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.3 | RFC6265 Section 5.3}).\n *\n * Also used to maintain ordering among cookies. Among cookies that have equal-length path fields,\n * cookies with earlier creation-times are listed before cookies with later creation-times\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.4 | RFC6265 Section 5.4}).\n */\n creation: Date | 'Infinity' | null\n /**\n * A global counter used to break ordering ties between two cookies that have equal-length path fields\n * and the same creation-time.\n */\n creationIndex: number\n /**\n * A boolean flag indicating if a cookie is a host-only cookie (i.e.; when the request's host exactly\n * matches the domain of the cookie) or not\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.3 | RFC6265 Section 5.3}).\n */\n hostOnly: boolean | null\n /**\n * A boolean flag indicating if a cookie had no 'Path' attribute and the default path\n * was used\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.2.4 | RFC6265 Section 5.2.4}).\n */\n pathIsDefault: boolean | null\n /**\n * Set to the date and time when a cookie was initially stored ({@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.3 | RFC6265 Section 5.3}) and updated whenever\n * the cookie is retrieved from the {@link CookieJar} ({@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.4 | RFC6265 Section 5.4}).\n */\n lastAccessed: Date | 'Infinity' | null\n /**\n * The 'SameSite' attribute of a cookie as defined in RFC6265bis\n * (See {@link https://www.ietf.org/archive/id/draft-ietf-httpbis-rfc6265bis-13.html#section-5.2 | RFC6265bis (v13) Section 5.2 }).\n */\n sameSite: string | undefined\n\n /**\n * Create a new Cookie instance.\n * @public\n * @param options - The attributes to set on the cookie\n */\n constructor(options: CreateCookieOptions = {}) {\n this.key = options.key ?? cookieDefaults.key\n this.value = options.value ?? cookieDefaults.value\n this.expires = options.expires ?? cookieDefaults.expires\n this.maxAge = options.maxAge ?? cookieDefaults.maxAge\n this.domain = options.domain ?? cookieDefaults.domain\n this.path = options.path ?? cookieDefaults.path\n this.secure = options.secure ?? cookieDefaults.secure\n this.httpOnly = options.httpOnly ?? cookieDefaults.httpOnly\n this.extensions = options.extensions ?? cookieDefaults.extensions\n this.creation = options.creation ?? cookieDefaults.creation\n this.hostOnly = options.hostOnly ?? cookieDefaults.hostOnly\n this.pathIsDefault = options.pathIsDefault ?? cookieDefaults.pathIsDefault\n this.lastAccessed = options.lastAccessed ?? cookieDefaults.lastAccessed\n this.sameSite = options.sameSite ?? cookieDefaults.sameSite\n\n this.creation = options.creation ?? new Date()\n\n // used to break creation ties in cookieCompare():\n Object.defineProperty(this, 'creationIndex', {\n configurable: false,\n enumerable: false, // important for assert.deepEqual checks\n writable: true,\n value: ++Cookie.cookiesCreated,\n })\n // Duplicate operation, but it makes TypeScript happy...\n this.creationIndex = Cookie.cookiesCreated\n }\n\n [Symbol.for('nodejs.util.inspect.custom')](): string {\n const now = Date.now()\n const hostOnly = this.hostOnly != null ? this.hostOnly.toString() : '?'\n const createAge =\n this.creation && this.creation !== 'Infinity'\n ? `${String(now - this.creation.getTime())}ms`\n : '?'\n const accessAge =\n this.lastAccessed && this.lastAccessed !== 'Infinity'\n ? `${String(now - this.lastAccessed.getTime())}ms`\n : '?'\n return `Cookie=\"${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}\"`\n }\n\n /**\n * Sets the 'Expires' attribute on a cookie.\n *\n * @remarks\n * When given a `string` value it will be parsed with {@link parseDate}. If the value can't be parsed as a cookie date\n * then the 'Expires' attribute will be set to `\"Infinity\"`.\n *\n * @param exp - the new value for the 'Expires' attribute of the cookie.\n */\n setExpires(exp: string | Date): void {\n if (exp instanceof Date) {\n this.expires = exp\n } else {\n this.expires = parseDate(exp) || 'Infinity'\n }\n }\n\n /**\n * Sets the 'Max-Age' attribute (in seconds) on a cookie.\n *\n * @remarks\n * Coerces `-Infinity` to `\"-Infinity\"` and `Infinity` to `\"Infinity\"` so it can be serialized to JSON.\n *\n * @param age - the new value for the 'Max-Age' attribute (in seconds).\n */\n setMaxAge(age: number): void {\n if (age === Infinity) {\n this.maxAge = 'Infinity'\n } else if (age === -Infinity) {\n this.maxAge = '-Infinity'\n } else {\n this.maxAge = age\n }\n }\n\n /**\n * Encodes to a `Cookie` header value (specifically, the {@link Cookie.key} and {@link Cookie.value} properties joined with \"=\").\n * @public\n */\n cookieString(): string {\n const val = this.value || ''\n if (this.key) {\n return `${this.key}=${val}`\n }\n return val\n }\n\n /**\n * Encodes to a `Set-Cookie header` value.\n * @public\n */\n toString(): string {\n let str = this.cookieString()\n\n if (this.expires != 'Infinity') {\n if (this.expires instanceof Date) {\n str += `; Expires=${formatDate(this.expires)}`\n }\n }\n\n if (this.maxAge != null && this.maxAge != Infinity) {\n str += `; Max-Age=${String(this.maxAge)}`\n }\n\n if (this.domain && !this.hostOnly) {\n str += `; Domain=${this.domain}`\n }\n if (this.path) {\n str += `; Path=${this.path}`\n }\n\n if (this.secure) {\n str += '; Secure'\n }\n if (this.httpOnly) {\n str += '; HttpOnly'\n }\n if (this.sameSite && this.sameSite !== 'none') {\n if (\n this.sameSite.toLowerCase() ===\n Cookie.sameSiteCanonical.lax.toLowerCase()\n ) {\n str += `; SameSite=${Cookie.sameSiteCanonical.lax}`\n } else if (\n this.sameSite.toLowerCase() ===\n Cookie.sameSiteCanonical.strict.toLowerCase()\n ) {\n str += `; SameSite=${Cookie.sameSiteCanonical.strict}`\n } else {\n str += `; SameSite=${this.sameSite}`\n }\n }\n if (this.extensions) {\n this.extensions.forEach((ext) => {\n str += `; ${ext}`\n })\n }\n\n return str\n }\n\n /**\n * Computes the TTL relative to now (milliseconds).\n *\n * @remarks\n * - `Infinity` is returned for cookies without an explicit expiry\n *\n * - `0` is returned if the cookie is expired.\n *\n * - Otherwise a time-to-live in milliseconds is returned.\n *\n * @param now - passing an explicit value is mostly used for testing purposes since this defaults to the `Date.now()`\n * @public\n */\n TTL(now: number = Date.now()): number {\n // TTL() partially replaces the \"expiry-time\" parts of S5.3 step 3 (setCookie()\n // elsewhere)\n // S5.3 says to give the \"latest representable date\" for which we use Infinity\n // For \"expired\" we use 0\n // -----\n // RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires\n // attribute, the Max-Age attribute has precedence and controls the\n // expiration date of the cookie.\n // (Concurs with S5.3 step 3)\n if (this.maxAge != null && typeof this.maxAge === 'number') {\n return this.maxAge <= 0 ? 0 : this.maxAge * 1000\n }\n\n const expires = this.expires\n if (expires === 'Infinity') {\n return Infinity\n }\n\n return (expires?.getTime() ?? now) - (now || Date.now())\n }\n\n /**\n * Computes the absolute unix-epoch milliseconds that this cookie expires.\n *\n * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n *\n * If Expires ({@link Cookie.expires}) is set, that's returned.\n *\n * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n */\n expiryTime(now?: Date): number | undefined {\n // expiryTime() replaces the \"expiry-time\" parts of S5.3 step 3 (setCookie() elsewhere)\n if (this.maxAge != null) {\n const relativeTo = now || this.lastAccessed || new Date()\n const maxAge = typeof this.maxAge === 'number' ? this.maxAge : -Infinity\n const age = maxAge <= 0 ? -Infinity : maxAge * 1000\n if (relativeTo === 'Infinity') {\n return Infinity\n }\n return relativeTo.getTime() + age\n }\n\n if (this.expires == 'Infinity') {\n return Infinity\n }\n\n return this.expires ? this.expires.getTime() : undefined\n }\n\n /**\n * Similar to {@link Cookie.expiryTime}, computes the absolute unix-epoch milliseconds that this cookie expires and returns it as a Date.\n *\n * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n *\n * If Expires ({@link Cookie.expires}) is set, that's returned.\n *\n * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n */\n expiryDate(now?: Date): Date | undefined {\n const millisec = this.expiryTime(now)\n if (millisec == Infinity) {\n // The 31-bit value of 2147483647000 was chosen to be the MAX_TIME representable\n // in tough-cookie though MDN states that the actual maximum value for a Date is 8.64e15.\n // I'm guessing this is due to the Y2038 problem that would affect systems that store\n // unix time as 32-bit integers.\n // See:\n // - https://github.com/salesforce/tough-cookie/commit/0616f70bf725e00c63d442544ad230c4f8b23357\n // - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#the_epoch_timestamps_and_invalid_date\n // - https://en.wikipedia.org/wiki/Year_2038_problem\n return new Date(2147483647000)\n } else if (millisec == -Infinity) {\n return new Date(0)\n } else {\n return millisec == undefined ? undefined : new Date(millisec)\n }\n }\n\n /**\n * Indicates if the cookie has been persisted to a store or not.\n * @public\n */\n isPersistent(): boolean {\n // This replaces the \"persistent-flag\" parts of S5.3 step 3\n return this.maxAge != null || this.expires != 'Infinity'\n }\n\n\n /**\n * Parses a string into a Cookie object.\n *\n * @remarks\n * Note: when parsing a `Cookie` header it must be split by ';' before each Cookie string can be parsed.\n *\n * @example\n * ```\n * // parse a `Set-Cookie` header\n * const setCookieHeader = 'a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT'\n * const cookie = Cookie.parse(setCookieHeader)\n * cookie.key === 'a'\n * cookie.value === 'bcd'\n * cookie.expires === new Date(Date.parse('Tue, 18 Oct 2011 07:05:03 GMT'))\n * ```\n *\n * @example\n * ```\n * // parse a `Cookie` header\n * const cookieHeader = 'name=value; name2=value2; name3=value3'\n * const cookies = cookieHeader.split(';').map(Cookie.parse)\n * cookies[0].name === 'name'\n * cookies[0].value === 'value'\n * cookies[1].name === 'name2'\n * cookies[1].value === 'value2'\n * cookies[2].name === 'name3'\n * cookies[2].value === 'value3'\n * ```\n *\n * @param str - The `Set-Cookie` header or a Cookie string to parse.\n * @param options - Configures `strict` or `loose` mode for cookie parsing\n */\n static parse(str: string, options?: ParseCookieOptions): Cookie | undefined {\n return parse(str, options)\n }\n\n /**\n * Does the reverse of {@link Cookie.toJSON}.\n *\n * @remarks\n * Any Date properties (such as .expires, .creation, and .lastAccessed) are parsed via Date.parse, not tough-cookie's parseDate, since ISO timestamps are being handled at this layer.\n *\n * @example\n * ```\n * const json = JSON.stringify({\n * key: 'alpha',\n * value: 'beta',\n * domain: 'example.com',\n * path: '/foo',\n * expires: '2038-01-19T03:14:07.000Z',\n * })\n * const cookie = Cookie.fromJSON(json)\n * cookie.key === 'alpha'\n * cookie.value === 'beta'\n * cookie.domain === 'example.com'\n * cookie.path === '/foo'\n * cookie.expires === new Date(Date.parse('2038-01-19T03:14:07.000Z'))\n * ```\n *\n * @param str - An unparsed JSON string or a value that has already been parsed as JSON\n */\n static fromJSON(str: unknown): Cookie | undefined {\n return fromJSON(str)\n }\n\n private static cookiesCreated = 0\n\n /**\n * @internal\n */\n static sameSiteLevel = {\n strict: 3,\n lax: 2,\n none: 1,\n } as const\n\n /**\n * @internal\n */\n static sameSiteCanonical = {\n strict: 'Strict',\n lax: 'Lax',\n } as const\n\n /**\n * Cookie properties that will be serialized when using {@link Cookie.fromJSON} and {@link Cookie.toJSON}.\n * @public\n */\n static serializableProperties = [\n 'key',\n 'value',\n 'expires',\n 'maxAge',\n 'domain',\n 'path',\n 'secure',\n 'httpOnly',\n 'extensions',\n 'hostOnly',\n 'pathIsDefault',\n 'creation',\n 'lastAccessed',\n 'sameSite',\n ] as const\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {Inject, Injectable, Optional, PLATFORM_ID, REQUEST_CONTEXT} from '@angular/core';\nimport {isPlatformServer} from \"@angular/common\";\nimport {CookieOptions, CookieService, SameSite} from \"ngx-cookie-service\";\n\nimport {Cookie} from \"../util/though-cookie-custom/cookie\";\n\n@Injectable()\nexport class NhCookieService {\n public static readonly HTTP_COOKIE_PREFIX: string = '';\n public static readonly COOKIE_SPLIT_REGEX = /,(?=\\s*\\S+=)/;\n public static readonly NOP_COOKIE_CUSTOMER: string = '.Nop.Customer';\n public static readonly NOP_COOKIE_AUTHENTICATION: string = '.Nop.Authentication';\n public static readonly Nh_COOKIE_AUTHENTICATION: string = '.Nh.Authentication';\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(REQUEST_CONTEXT) private requestContext: any,\n private cookieService: CookieService,\n ) {\n }\n\n getAll(): string[] {\n let cookies: string[] = [];\n\n if(isPlatformServer(this.platformId)) {\n try {\n cookies = (<any>this?.requestContext?.request?.headers)['cookie']?.split(';').map((x: string) => x?.trim())\n } catch {\n cookies = this?.requestContext?.request?.headers.getSetCookie();\n }\n } else {\n cookies = this.document.cookie?.split(';').map((x: string) => x?.trim());\n }\n\n return cookies ?? [];\n }\n\n get(key: string): string|undefined {\n return this.getAll().find(x => x.startsWith(`${key}=`))?.split('=')[1] ?? undefined;\n }\n\n set(name: string, value: string, options?: CookieOptions) {\n this.cookieService.set(name, value, options);\n }\n\n delete(name: string, path?: CookieOptions['path'], domain?: CookieOptions['domain'], secure?: CookieOptions['secure'], sameSite?: SameSite) {\n this.cookieService.delete(name, path, domain, secure, sameSite);\n }\n\n\n\n public requestRawCookiesHeaderToCookies(rawCookiesHeader: string): Cookie[] {\n return rawCookiesHeader\n ?.split(';')\n ?.map(x => Cookie.parse(x?.trim()))\n .filter(x => x !== undefined)\n .map(x => <Cookie>x) ?? [];\n }\n\n public responseRawCookiesHeaderToCookies(rawCookiesHeader: string): Cookie[] {\n return rawCookiesHeader\n ?.split(NhCookieService.COOKIE_SPLIT_REGEX)\n ?.map(x => Cookie.parse(x?.trim()))\n .filter(x => x !== undefined)\n .map(x => <Cookie>x) ?? [];\n }\n\n public getRequestServerCookies() {\n let cookies: Cookie[] = [];\n\n if(isPlatformServer(this.platformId) && this?.requestContext?.request) {\n try {\n cookies = this.requestRawCookiesHeaderToCookies((<any>this?.requestContext?.request?.headers)['cookie']);\n } catch {\n }\n }\n\n return cookies ?? [];\n }\n\n public setServerCookies(cookies: Cookie[]) {\n if(!this?.requestContext?.response) {\n console.warn(`Skipped setting server cookies because response is not available.`);\n return;\n }\n\n for(const cookie of cookies) {\n cookie.key = `${NhCookieService.HTTP_COOKIE_PREFIX}${cookie.key}`;\n\n try {\n const responseAny = this.requestContext?.response as any;\n responseAny.appendHeader('Set-Cookie', cookie.toString());\n }catch (ex) {\n console.error('Failed to do Set-Cookie', ex);\n }\n }\n }\n}\n","import {inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\nimport {Base64} from 'js-base64';\n\n/**\n * Runs WebAuthn ceremonies in the browser. The server returns the options in their JSON form\n * and expects the credential in its JSON form; this client converts both, with a fallback for\n * browsers without `PublicKeyCredential.parseCreationOptionsFromJSON` and `toJSON()`.\n */\n@Injectable({providedIn: 'root'})\nexport class NhPasskeyClient {\n private readonly platformId: Object = inject(PLATFORM_ID);\n\n /**\n * Whether the browser supports passkeys. Always false during server-side rendering.\n */\n isSupported(): boolean {\n return isPlatformBrowser(this.platformId)\n && typeof window !== 'undefined'\n && typeof window.PublicKeyCredential !== 'undefined'\n && !!navigator.credentials;\n }\n\n /**\n * Creates a passkey for WebAuthn creation options and returns the credential JSON.\n * Rejects when the user cancels the prompt or the browser refuses the request.\n */\n async create(options: any): Promise<object> {\n this.ensureSupported();\n\n const parse = (PublicKeyCredential as any).parseCreationOptionsFromJSON;\n const publicKey: PublicKeyCredentialCreationOptions = typeof parse === 'function'\n ? parse.call(PublicKeyCredential, options)\n : this.creationOptionsFromJSON(options);\n\n const credential = await navigator.credentials.create({publicKey: publicKey});\n return this.credentialToJSON(this.requireCredential(credential));\n }\n\n /**\n * Signs WebAuthn request options with a passkey and returns the credential JSON.\n * Rejects when the user cancels the prompt or the browser refuses the request.\n */\n async get(options: any): Promise<object> {\n this.ensureSupported();\n\n const parse = (PublicKeyCredential as any).parseRequestOptionsFromJSON;\n const publicKey: PublicKeyCredentialRequestOptions = typeof parse === 'function'\n ? parse.call(PublicKeyCredential, options)\n : this.requestOptionsFromJSON(options);\n\n const credential = await navigator.credentials.get({publicKey: publicKey});\n return this.credentialToJSON(this.requireCredential(credential));\n }\n\n private ensureSupported(): void {\n if (!this.isSupported()) {\n throw new Error('Passkeys are not supported in this browser.');\n }\n }\n\n private requireCredential(credential: Credential | null): PublicKeyCredential {\n if (!credential || credential.type !== 'public-key') {\n throw new Error('No passkey was selected.');\n }\n\n return credential as PublicKeyCredential;\n }\n\n private creationOptionsFromJSON(json: any): PublicKeyCredentialCreationOptions {\n return {\n ...json,\n challenge: NhPasskeyClient.fromBase64Url(json.challenge),\n user: {...json.user, id: NhPasskeyClient.fromBase64Url(json.user.id)},\n excludeCredentials: (json.excludeCredentials ?? []).map((descriptor: any) => ({\n ...descriptor,\n id: NhPasskeyClient.fromBase64Url(descriptor.id)\n }))\n };\n }\n\n private requestOptionsFromJSON(json: any): PublicKeyCredentialRequestOptions {\n return {\n ...json,\n challenge: NhPasskeyClient.fromBase64Url(json.challenge),\n allowCredentials: (json.allowCredentials ?? []).map((descriptor: any) => ({\n ...descriptor,\n id: NhPasskeyClient.fromBase64Url(descriptor.id)\n }))\n };\n }\n\n private credentialToJSON(credential: PublicKeyCredential): object {\n const toJSON = (credential as any).toJSON;\n if (typeof toJSON === 'function') {\n return toJSON.call(credential);\n }\n\n const response: any = credential.response;\n const json: any = {\n id: credential.id,\n rawId: NhPasskeyClient.toBase64Url(credential.rawId),\n type: credential.type,\n authenticatorAttachment: (credential as any).authenticatorAttachment ?? undefined,\n clientExtensionResults: credential.getClientExtensionResults?.() ?? {},\n response: {\n clientDataJSON: NhPasskeyClient.toBase64Url(response.clientDataJSON)\n }\n };\n\n if (response.attestationObject) {\n json.response.attestationObject = NhPasskeyClient.toBase64Url(response.attestationObject);\n json.response.transports = typeof response.getTransports === 'function' ? response.getTransports() : [];\n }\n\n if (response.authenticatorData) {\n json.response.authenticatorData = NhPasskeyClient.toBase64Url(response.authenticatorData);\n json.response.signature = NhPasskeyClient.toBase64Url(response.signature);\n json.response.userHandle = response.userHandle ? NhPasskeyClient.toBase64Url(response.userHandle) : null;\n }\n\n return json;\n }\n\n private static fromBase64Url(value: string): ArrayBuffer {\n const bytes = Base64.toUint8Array(value);\n return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer;\n }\n\n private static toBase64Url(buffer: ArrayBuffer): string {\n return Base64.fromUint8Array(new Uint8Array(buffer), true);\n }\n}\n","import {inject, Injectable, NgZone, OnDestroy, PLATFORM_ID, REQUEST_CONTEXT} from '@angular/core';\nimport {BehaviorSubject, lastValueFrom, Observable} from 'rxjs';\nimport {\n AuthenticateModel, AuthenticationFlow,\n AuthenticationSessionCreateResponse,\n AuthSessionExpirationInformation,\n Claim,\n ClaimTypes,\n ImpersonateAuthenticateModel,\n INhAuthorization,\n NhAccountInformationResponse,\n NhAuthenticationStep,\n NhAuthenticationStepStatuses,\n NhAuthenticatorSetup,\n NhAuthorization,\n NhDivision,\n NhLoginResponse,\n NhPasskey,\n NhPasskeyOptions,\n NhTwoFactorChallenge,\n NhTwoFactorChange,\n NhTwoFactorEmailCodeSent,\n NhTwoFactorEnrollmentResult,\n NhTwoFactorFailureCodes,\n NhTwoFactorReauthentication,\n NhTwoFactorStatus,\n NhTwoFactorVerifyModel,\n RefreshTokenLoginAccountMutateModel,\n RevertImpersonateAuthenticateModel\n} from \"../models/auth.models\";\nimport {DateTime} from \"luxon\";\nimport {TaskResult} from \"../models/misc.models\";\nimport {HttpClient, HttpContext, HttpContextToken, HttpErrorResponse, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {EndpointsAuthenticationNhCommonModuleConfig, NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhApiUtil} from \"../util/nh-api-util\";\nimport {isPlatformServer} from \"@angular/common\";\nimport {Base64} from \"js-base64\";\nimport {NhPasskeyClient} from \"./nh-passkey-client.service\";\nimport {NhBackgroundOperation} from \"../models/background-operation.models\";\n\n/** Marks a request whose 401 must not start a server session check, such as the check itself. */\nexport const NH_SKIP_SERVER_SESSION_CHECK = new HttpContextToken<boolean>(() => false);\n\ninterface NhTwoFactorChangeResponse {\n recoveryCodes?: string[] | null;\n session?: NhLoginResponse | null;\n}\n\n@Injectable()\nexport abstract class BaseNhAuthService<TAuthorization extends INhAuthorization> implements OnDestroy {\n protected static readonly pendingTwoFactorChallengeStorageKey = 'nh-two-factor-challenge';\n protected static readonly externalTwoFactorChallengePrefix = 'nh-two-factor=';\n protected static readonly rememberDeviceStorageKey = 'nh-two-factor-device';\n protected static readonly serverSessionConfirmationMilliseconds = 30_000;\n\n protected authorization: TAuthorization | undefined = undefined;\n protected pendingTwoFactorChallenge: NhTwoFactorChallenge | undefined = undefined;\n protected authSession: AuthenticationSessionCreateResponse | undefined = undefined;\n public readonly authSubject = new BehaviorSubject<TAuthorization | undefined>(this.getAuthorization());\n protected onReady: ((value: (PromiseLike<unknown> | unknown)) => void) | undefined;\n public readonly authReady: Promise<unknown>;\n\n protected _sessionExpirationInformation = new BehaviorSubject<AuthSessionExpirationInformation>(this.getSessionExpirationInformation());\n public sessionExpirationInformationChanged = this._sessionExpirationInformation.asObservable();\n protected intervalHandle: any;\n private serverSessionCheck: Promise<boolean> | undefined;\n private serverSessionConfirmedAt = 0;\n private sessionRejectedByServer = false;\n\n protected zone: NgZone = inject(NgZone);\n protected moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n protected httpClient: HttpClient = inject(HttpClient);\n protected platformId: Object = inject(PLATFORM_ID);\n protected requestContext: any = inject(REQUEST_CONTEXT, {optional: true});\n protected passkeyClient: NhPasskeyClient = inject(NhPasskeyClient);\n\n constructor() {\n this.authReady = new Promise(resolve => {\n this.onReady = resolve;\n });\n\n if (!isPlatformServer(this.platformId)) {\n this.intervalHandle = setInterval(() => {\n this.zone.run(() => {\n this.dispatchSessionExpirationInformationChanged();\n });\n }, 1000);\n }\n }\n\n dispatchSessionExpirationInformationChanged() {\n const sessionExpirationInfo = this.getSessionExpirationInformation();\n this._sessionExpirationInformation.next(sessionExpirationInfo);\n }\n\n ngOnDestroy() {\n if (this.intervalHandle) {\n clearInterval(this.intervalHandle);\n }\n }\n\n private getAllPermissionClaimTypes() {\n let types = new Array<string>();\n types.push(ClaimTypes.Permission);\n\n for (const type of this.moduleConfig?.authentication?.additionalClaimPermissionTypes ?? []) {\n types.push(type);\n }\n\n return types;\n }\n\n private getAllDivisionPermissionClaimTypes() {\n let types = new Array<string>();\n types.push(ClaimTypes.DivisionPermission);\n\n for (const type of this.moduleConfig?.authentication?.additionalDivisionClaimPermissionTypes ?? []) {\n types.push(type);\n }\n\n return types;\n }\n\n public getSessionExpirationInformation() {\n const result = new AuthSessionExpirationInformation({\n isAuthenticated: this.isAuthenticated()\n });\n\n if (result.isAuthenticated) {\n const auth = this.getAuthorization()!;\n const nowDate = DateTime.utc();\n const authDate = DateTime.fromISO(auth.validTo ?? '').toUTC();\n const duration = authDate.diff(nowDate);\n\n result.expiresWithin15MinutesOrExpired = duration.minutes <= 15;\n if (duration.seconds >= 0) {\n result.displayMinutesSecondsUntilExpiration = `${(duration.minutes < 10 && duration.minutes >= 0) ? '0' : ''}${duration.minutes}:${(duration.seconds < 10 && duration.seconds >= 0) ? '0' : ''}${duration.seconds}`;\n } else {\n result.displayMinutesSecondsUntilExpiration = `00:00`;\n }\n } else {\n result.expiresWithin15MinutesOrExpired = true;\n result.displayMinutesSecondsUntilExpiration = `00:00`;\n result.rejectedByServer = this.sessionRejectedByServer;\n }\n\n return result;\n }\n\n public clearAuthorization(doDispatchEvent: boolean = true): void {\n if (this.isAuthenticated()) {\n try {\n localStorage.removeItem('at');\n } finally {\n }\n\n this.authorization = undefined;\n if (doDispatchEvent) {\n this.authSubject.next(this.authorization);\n }\n this.dispatchSessionExpirationInformationChanged();\n }\n }\n\n public setAuthorization(auth: TAuthorization, noEvent = false): void {\n localStorage.setItem('at', Base64.encode(JSON.stringify(auth)));\n this.authorization = auth;\n this.sessionRejectedByServer = false;\n this.serverSessionConfirmedAt = 0;\n if (!noEvent) {\n this.authSubject.next(this.authorization);\n }\n this.dispatchSessionExpirationInformationChanged();\n }\n\n protected abstract initEmptyAuthorization(): TAuthorization;\n\n public getAuthorization(fromCache: boolean = true): TAuthorization | undefined {\n let auth: TAuthorization = this.initEmptyAuthorization();\n\n if (fromCache && this.authorization) {\n return this.authorization;\n }\n\n try {\n auth = JSON.parse(Base64.decode(localStorage.getItem('at') ?? ''));\n this.authorization = auth;\n } catch (ex) {\n }\n\n return auth;\n }\n\n public isAuthenticated(): boolean {\n const auth = this.getAuthorization();\n let authenticated = true;\n authenticated = ((auth?.claims?.length ?? 0) > 0);\n\n if (authenticated && auth) {\n authenticated = (DateTime.fromISO(auth.validTo ?? '') >= DateTime.utc());\n }\n\n return authenticated;\n }\n\n public isImpersonating(): boolean {\n return this.isAuthenticated() && !!this.getAuthorization()?.claims?.find(x => x.type === ClaimTypes.ImpersonateOriginUserId);\n }\n\n public getActiveDivision(): NhDivision | null {\n let division: NhDivision | null = null;\n\n const auth = this.getAuthorization();\n\n if (auth && auth.user && auth.activeDivision) {\n division = auth.activeDivision;\n }\n\n return division;\n }\n\n public getActiveDivisionId(): string | undefined {\n let divisionId: string | undefined = undefined;\n const auth = this.getAuthorization();\n\n if ((auth?.user?.activeDivisionId?.length ?? 0) > 0) {\n divisionId = auth!.user!.activeDivisionId;\n }\n\n return divisionId;\n }\n\n public isGrantedRole(roles: string | string[]): boolean {\n\n if (typeof roles === 'string') {\n roles = [roles];\n }\n\n for (const role of roles) {\n const claim = <Claim>{\n value: role,\n type: ClaimTypes.Role\n };\n\n if (this.isClaimGranted(claim)) {\n return true;\n }\n }\n\n return false;\n }\n\n public isClaimGranted(claim: Claim) {\n const auth = this.getAuthorization();\n return (null != auth && auth.claims != null && null != auth.claims.find((x: Claim) => x.type === claim.type && x.value === claim.value));\n }\n\n public isOneClaimGranted(claims: Array<Claim>) {\n if (!claims || claims.length < 1) {\n return true;\n }\n\n for (const claim of claims) {\n if (this.isClaimGranted(claim)) {\n return true;\n }\n }\n\n return false;\n }\n\n public isOnePermissionGranted(permissions: Array<string>) {\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n for (const permission of permissions) {\n for (const claimType of this.getAllPermissionClaimTypes()) {\n if (this.isClaimGranted(<Claim>{type: claimType, value: permission})) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Returns true only when every requested permission is granted through one\n * of the configured permission claim types. An empty requirement is allowed.\n */\n public isAllPermissionsGranted(permissions: Array<string>) {\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n return permissions.every(permission =>\n this.getAllPermissionClaimTypes().some(claimType =>\n this.isClaimGranted(<Claim>{type: claimType, value: permission}))\n );\n }\n\n public isOneRoleGranted(roles: Array<string>) {\n if (!roles || roles.length < 1) {\n return true;\n }\n\n for (const role of roles) {\n if (this.isClaimGranted(<Claim>{type: ClaimTypes.Role, value: role})) {\n return true;\n }\n }\n\n return false;\n }\n\n public isOneDivisionPermissionGranted(divisionId: string | undefined, permissions: Array<string>) {\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n for (const permission of permissions) {\n for (const claimType of this.getAllDivisionPermissionClaimTypes()) {\n if (this.isClaimGranted(<Claim>{type: claimType, value: (divisionId ?? '') + '_' + permission})) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n public isOneDivisionRoleGranted(divisionId: string | undefined, roles: Array<string>) {\n if (!roles || roles.length < 1) {\n return true;\n }\n\n for (const role of roles) {\n if (this.isClaimGranted(<Claim>{type: ClaimTypes.DivisionRole, value: (divisionId ?? '') + '_' + role})) {\n return true;\n }\n }\n\n return false;\n }\n\n public isOneActiveDivisionPermissionGranted(permissions: Array<string>) {\n return this.isOneDivisionPermissionGranted(this.getActiveDivisionId(), permissions);\n }\n\n public isOneActiveDivisionRoleGranted(roles: Array<string>) {\n return this.isOneDivisionRoleGranted(this.getActiveDivisionId(), roles);\n }\n\n public getAuthenticationFlow(username: string): Promise<TaskResult<AuthenticationFlow>> {\n const model = {username: username};\n return this.httpClient.post<AuthenticationFlow>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.authorizationFlow, model, {\n withCredentials: true\n }).taskResultLastValueFrom();\n }\n\n public getMicrosoftRedirectUrl(callbackUrl: string, username: string): Promise<TaskResult<string>> {\n return this.httpClient.post<string>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.msRedirectUrl, {\n callbackUrl: callbackUrl,\n userName: username\n }, {\n withCredentials: true\n }).taskResultLastValueFrom();\n }\n\n public authorizeMicrosoft(code: string, state: string): Promise<TaskResult<TAuthorization>> {\n return this.httpClient.post<TAuthorization>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.msAuthenticate, {\n code: code,\n state: state,\n }, {\n withCredentials: true\n }).taskResultLastValueFrom();\n }\n\n /**\n * Signs in with username and password and stores the complete session.\n *\n * When the server requires a second factor this method fails with\n * `NhTwoFactorFailureCodes.Required` and stores nothing. Use `authenticateInteractive`\n * to receive the challenge, or read it with `getPendingTwoFactorChallenge()`.\n */\n async authenticate(model: AuthenticateModel, loginAsUser: boolean = false): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n const stepResult = await this.authenticateInteractive(model);\n\n if (!stepResult.isSuccess) {\n stepResult.copyTo(result);\n return result;\n }\n\n if (stepResult.data?.status === 'two-factor-required') {\n return result.withError(NhTwoFactorFailureCodes.Required, 'nh-two-factor.required');\n }\n\n if (stepResult.data?.status === 'enrollment-required') {\n return result.withError(NhTwoFactorFailureCodes.EnrollmentRequired, 'nh-two-factor.enrollment-required');\n }\n\n result.data = stepResult.data?.authorization;\n return result;\n }\n\n /**\n * Signs in with username and password. Returns the stored authorization, the\n * second-factor challenge or the required enrollment. A pending step is never stored as\n * an authorization.\n */\n async authenticateInteractive(model: AuthenticateModel): Promise<TaskResult<NhAuthenticationStep<TAuthorization>>> {\n const result = new TaskResult<NhAuthenticationStep<TAuthorization>>();\n model.realm = this.moduleConfig.authenticationRealm;\n model.rememberDeviceToken = model.rememberDeviceToken ?? this.getRememberDeviceToken();\n\n const request$ = this.httpClient.post<NhLoginResponse>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.login, model, {\n params: this.languageParams(),\n withCredentials: true\n });\n\n try {\n result.data = this.completeAuthenticationStep(await lastValueFrom(request$));\n } catch (ex) {\n if (this.isAuthenticated()) {\n this.clearAuthorization();\n }\n\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Completes a second-factor challenge and stores the session.\n */\n async verifyTwoFactor(model: NhTwoFactorVerifyModel): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n const request$ = this.httpClient.post<NhLoginResponse>(this.moduleConfig.authApiBaseUrl + this.twoFactorEndpoints().twoFactorVerify, model, {\n params: this.languageParams(),\n withCredentials: true\n });\n\n try {\n result.data = this.completeAuthenticationStep(await lastValueFrom(request$)).authorization;\n } catch (ex) {\n this.pendingStepFailed(ex).copyTo(result);\n }\n\n return result;\n }\n\n /**\n * E-mails a sign-in code for the pending challenge when the user enrolled the e-mail factor.\n */\n sendTwoFactorEmailCode(challengeToken: string): Promise<TaskResult<NhTwoFactorEmailCodeSent>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhTwoFactorEmailCodeSent>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEmail),\n {challengeToken: challengeToken},\n this.twoFactorStepRequestOptions()),\n response => new NhTwoFactorEmailCodeSent(response));\n }\n\n /**\n * Whether this browser can use passkeys.\n */\n isPasskeySupported(): boolean {\n return this.passkeyClient.isSupported();\n }\n\n /**\n * Completes the pending challenge with a passkey and stores the session.\n */\n async verifyTwoFactorWithPasskey(challengeToken: string, rememberDevice: boolean = false): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n const endpoints = this.twoFactorEndpoints();\n\n const options = await this.sendTwoFactorRequest(\n this.httpClient.post<NhPasskeyOptions>(\n this.twoFactorUrl(endpoints.twoFactorPasskeyOptions),\n {challengeToken: challengeToken},\n this.twoFactorStepRequestOptions()),\n response => new NhPasskeyOptions(response));\n if (!options.isSuccess) {\n options.copyTo(result);\n return result;\n }\n\n const credential = await this.runPasskeyCeremony(() => this.passkeyClient.get(options.data!.options));\n if (!credential.isSuccess) {\n credential.copyTo(result);\n return result;\n }\n\n const request$ = this.httpClient.post<NhLoginResponse>(\n this.twoFactorUrl(endpoints.twoFactorPasskey),\n {\n challengeToken: challengeToken,\n ceremonyToken: options.data!.ceremonyToken,\n credential: credential.data,\n rememberDevice: rememberDevice\n },\n this.twoFactorStepRequestOptions());\n\n try {\n result.data = this.completeAuthenticationStep(await lastValueFrom(request$)).authorization;\n } catch (ex) {\n this.pendingStepFailed(ex).copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Signs in with a discoverable passkey, without a username or password. Returns the\n * stored authorization, or a pending step when the server's policy asks for more.\n */\n async signInWithPasskey(): Promise<TaskResult<NhAuthenticationStep<TAuthorization>>> {\n const result = new TaskResult<NhAuthenticationStep<TAuthorization>>();\n const endpoints = this.twoFactorEndpoints();\n\n const options = await this.sendTwoFactorRequest(\n this.httpClient.post<NhPasskeyOptions>(\n this.twoFactorUrl(endpoints.passkeySignInOptions),\n {},\n this.twoFactorStepRequestOptions()),\n response => new NhPasskeyOptions(response));\n if (!options.isSuccess) {\n options.copyTo(result);\n return result;\n }\n\n const credential = await this.runPasskeyCeremony(() => this.passkeyClient.get(options.data!.options));\n if (!credential.isSuccess) {\n credential.copyTo(result);\n return result;\n }\n\n const request$ = this.httpClient.post<NhLoginResponse>(\n this.twoFactorUrl(endpoints.passkeySignIn),\n {\n ceremonyToken: options.data!.ceremonyToken,\n credential: credential.data,\n rememberDeviceToken: this.getRememberDeviceToken()\n },\n this.twoFactorStepRequestOptions());\n\n try {\n result.data = this.completeAuthenticationStep(await lastValueFrom(request$));\n } catch (ex) {\n NhApiUtil.taskResultFromResponse(ex).copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Starts authenticator enrollment for a user whom the policy requires to enroll during\n * sign-in. `enrollmentToken` is the `challengeToken` of the enrollment step.\n */\n beginEnrollmentAuthenticatorSetup(enrollmentToken: string): Promise<TaskResult<NhAuthenticatorSetup>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhAuthenticatorSetup>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEnrollmentAuthenticator),\n {enrollmentToken: enrollmentToken},\n this.twoFactorStepRequestOptions()),\n response => new NhAuthenticatorSetup(response));\n }\n\n /**\n * Confirms the authenticator during a required enrollment and stores the session.\n */\n confirmEnrollmentAuthenticator(enrollmentToken: string, code: string): Promise<TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>> {\n return this.sendEnrollmentCompletion(\n this.twoFactorEndpoints().twoFactorEnrollmentAuthenticatorConfirm,\n {enrollmentToken: enrollmentToken, code: code});\n }\n\n /**\n * E-mails a confirmation code during a required enrollment.\n */\n sendEnrollmentEmailCode(enrollmentToken: string): Promise<TaskResult<NhTwoFactorEmailCodeSent>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhTwoFactorEmailCodeSent>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEnrollmentEmail),\n {enrollmentToken: enrollmentToken},\n this.twoFactorStepRequestOptions()),\n response => new NhTwoFactorEmailCodeSent(response));\n }\n\n /**\n * Confirms the e-mail factor during a required enrollment and stores the session.\n */\n confirmEnrollmentEmail(enrollmentToken: string, code: string): Promise<TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>> {\n return this.sendEnrollmentCompletion(\n this.twoFactorEndpoints().twoFactorEnrollmentEmailConfirm,\n {enrollmentToken: enrollmentToken, code: code});\n }\n\n /**\n * Registers a passkey during a required enrollment and stores the session.\n */\n async enrollPasskey(enrollmentToken: string, name?: string): Promise<TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>> {\n const result = new TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>();\n const endpoints = this.twoFactorEndpoints();\n\n const options = await this.sendTwoFactorRequest(\n this.httpClient.post<NhPasskeyOptions>(\n this.twoFactorUrl(endpoints.twoFactorEnrollmentPasskeyOptions),\n {enrollmentToken: enrollmentToken},\n this.twoFactorStepRequestOptions()),\n response => new NhPasskeyOptions(response));\n if (!options.isSuccess) {\n options.copyTo(result);\n return result;\n }\n\n const credential = await this.runPasskeyCeremony(() => this.passkeyClient.create(options.data!.options));\n if (!credential.isSuccess) {\n credential.copyTo(result);\n return result;\n }\n\n return this.sendEnrollmentCompletion(endpoints.twoFactorEnrollmentPasskey, {\n enrollmentToken: enrollmentToken,\n ceremonyToken: options.data!.ceremonyToken,\n credential: credential.data,\n name: name\n });\n }\n\n /**\n * Returns the pending second-factor challenge of this browser tab, if it has not expired.\n */\n getPendingTwoFactorChallenge(): NhTwoFactorChallenge | undefined {\n const challenge = this.pendingTwoFactorChallenge ?? this.readStoredTwoFactorChallenge();\n if (!challenge) {\n return undefined;\n }\n\n if (challenge.expiresAt && DateTime.fromISO(challenge.expiresAt) <= DateTime.now()) {\n this.clearPendingTwoFactorChallenge();\n return undefined;\n }\n\n this.pendingTwoFactorChallenge = challenge;\n return challenge;\n }\n\n clearPendingTwoFactorChallenge(): void {\n this.pendingTwoFactorChallenge = undefined;\n\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n try {\n sessionStorage.removeItem(BaseNhAuthService.pendingTwoFactorChallengeStorageKey);\n } catch {\n // Storage can be unavailable in private browsing; the in-memory challenge is cleared.\n }\n }\n\n /**\n * Reads a challenge that an external sign-in (Microsoft OAuth) passed back in the URL\n * fragment, stores it as the pending challenge and removes it from the address bar.\n */\n consumeExternalTwoFactorChallenge(fragment?: string): NhTwoFactorChallenge | undefined {\n const browser = !isPlatformServer(this.platformId);\n const source = fragment ?? (browser ? window.location.hash : '');\n const value = source.startsWith('#') ? source.substring(1) : source;\n\n if (!value.startsWith(BaseNhAuthService.externalTwoFactorChallengePrefix)) {\n return undefined;\n }\n\n let challenge: NhTwoFactorChallenge;\n try {\n const payload = value.substring(BaseNhAuthService.externalTwoFactorChallengePrefix.length);\n challenge = new NhTwoFactorChallenge(JSON.parse(Base64.decode(payload)));\n } catch {\n return undefined;\n }\n\n if (!challenge.challengeToken) {\n return undefined;\n }\n\n this.setPendingTwoFactorChallenge(challenge);\n\n if (browser && fragment === undefined) {\n window.history.replaceState(window.history.state, '', window.location.pathname + window.location.search);\n }\n\n return challenge;\n }\n\n async getTwoFactorStatus(): Promise<TaskResult<NhTwoFactorStatus>> {\n const result = new TaskResult<NhTwoFactorStatus>();\n const request$ = this.httpClient.get<NhTwoFactorStatus>(\n this.moduleConfig.authApiBaseUrl + this.twoFactorEndpoints().twoFactorStatus,\n this.twoFactorAccountRequestOptions()\n );\n\n try {\n result.data = new NhTwoFactorStatus(await lastValueFrom(request$));\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Starts authenticator enrollment. Restarting enrollment while two-factor authentication\n * is enabled requires reauthentication.\n */\n async beginAuthenticatorSetup(reauthentication?: NhTwoFactorReauthentication): Promise<TaskResult<NhAuthenticatorSetup>> {\n const result = new TaskResult<NhAuthenticatorSetup>();\n const request$ = this.httpClient.post<NhAuthenticatorSetup>(\n this.moduleConfig.authApiBaseUrl + this.twoFactorEndpoints().twoFactorAuthenticator,\n {reauthentication: reauthentication},\n this.twoFactorAccountRequestOptions()\n );\n\n try {\n result.data = new NhAuthenticatorSetup(await lastValueFrom(request$));\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Confirms authenticator enrollment. The server ends every other session; the renewed\n * session for this device is stored before the promise resolves.\n */\n confirmAuthenticator(code: string): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorAuthenticatorConfirm, {code: code});\n }\n\n regenerateRecoveryCodes(reauthentication: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorRecoveryCodes, {reauthentication: reauthentication});\n }\n\n disableTwoFactor(reauthentication: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorDisable, {reauthentication: reauthentication});\n }\n\n /**\n * E-mails a code that confirms the user's e-mail address as a second factor. Requires\n * reauthentication while two-factor authentication is enabled.\n */\n beginEmailSetup(reauthentication?: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorEmailCodeSent>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhTwoFactorEmailCodeSent>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEmailSetup),\n {reauthentication: reauthentication},\n this.twoFactorAccountRequestOptions()),\n response => new NhTwoFactorEmailCodeSent(response));\n }\n\n confirmEmailSetup(code: string): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorEmailConfirm, {code: code});\n }\n\n /**\n * Forgets every remembered device, including this one, and ends every other session.\n */\n async forgetTwoFactorDevices(reauthentication: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n const result = await this.sendTwoFactorChange(this.twoFactorEndpoints().twoFactorForgetDevices, {reauthentication: reauthentication});\n if (result.isSuccess) {\n this.storeRememberDeviceToken(undefined);\n }\n\n return result;\n }\n\n getPasskeys(): Promise<TaskResult<NhPasskey[]>> {\n return this.sendTwoFactorRequest(\n this.httpClient.get<NhPasskey[]>(\n this.twoFactorUrl(this.twoFactorEndpoints().passkeys),\n this.twoFactorAccountRequestOptions()),\n response => (response ?? []).map(passkey => new NhPasskey(passkey)));\n }\n\n /**\n * Registers a passkey on this device. Adding a passkey while two-factor authentication is\n * enabled requires reauthentication. The server ends every other session; the renewed\n * session for this device is stored before the promise resolves.\n */\n async registerPasskey(name?: string, reauthentication?: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n const result = new TaskResult<NhTwoFactorChange>();\n const endpoints = this.twoFactorEndpoints();\n\n const options = await this.sendTwoFactorRequest(\n this.httpClient.post<NhPasskeyOptions>(\n this.twoFactorUrl(endpoints.passkeyRegistrationOptions),\n {reauthentication: reauthentication},\n this.twoFactorAccountRequestOptions()),\n response => new NhPasskeyOptions(response));\n if (!options.isSuccess) {\n options.copyTo(result);\n return result;\n }\n\n const credential = await this.runPasskeyCeremony(() => this.passkeyClient.create(options.data!.options));\n if (!credential.isSuccess) {\n credential.copyTo(result);\n return result;\n }\n\n return this.sendTwoFactorChange(endpoints.passkeys, {\n ceremonyToken: options.data!.ceremonyToken,\n credential: credential.data,\n name: name\n });\n }\n\n renamePasskey(passkeyId: string, name: string): Promise<TaskResult<void>> {\n return this.sendTwoFactorRequest(\n this.httpClient.put<void>(\n this.twoFactorUrl(this.twoFactorEndpoints().passkeys) + '/' + encodeURIComponent(passkeyId),\n {name: name},\n this.twoFactorAccountRequestOptions()),\n () => undefined);\n }\n\n /**\n * Removes a passkey. Removing the last second factor disables two-factor authentication,\n * which fails when the policy requires it.\n */\n removePasskey(passkeyId: string, reauthentication: NhTwoFactorReauthentication): Promise<TaskResult<NhTwoFactorChange>> {\n return this.sendTwoFactorChange(\n this.twoFactorEndpoints().passkeys + '/' + encodeURIComponent(passkeyId) + '/remove',\n {reauthentication: reauthentication});\n }\n\n /**\n * Removes every second factor of another user who lost access to them. Requires the\n * server's two-factor administration policy.\n */\n resetUserTwoFactor(userId: string): Promise<TaskResult<void>> {\n const endpoint = this.twoFactorEndpoints().twoFactorUserReset.replace('{userId}', encodeURIComponent(userId));\n return this.sendTwoFactorRequest(\n this.httpClient.post<void>(this.twoFactorUrl(endpoint), {}, this.twoFactorAccountRequestOptions()),\n () => undefined);\n }\n\n /**\n * Starts a background operation that reminds every user whom the policy requires to\n * enroll. A repeated idempotency key returns the operation that was already started.\n */\n startTwoFactorEnrollmentReminders(idempotencyKey: string): Promise<TaskResult<NhBackgroundOperation>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhBackgroundOperation>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorEnrollmentReminders),\n {idempotencyKey: idempotencyKey},\n this.twoFactorAccountRequestOptions()),\n response => response);\n }\n\n /**\n * Starts a background operation that ends the sessions of every user whom the policy\n * requires to enroll, so their next sign-in enrolls them.\n */\n startTwoFactorSessionRevocation(idempotencyKey: string): Promise<TaskResult<NhBackgroundOperation>> {\n return this.sendTwoFactorRequest(\n this.httpClient.post<NhBackgroundOperation>(\n this.twoFactorUrl(this.twoFactorEndpoints().twoFactorSessionRevocation),\n {idempotencyKey: idempotencyKey},\n this.twoFactorAccountRequestOptions()),\n response => response);\n }\n\n protected async sendTwoFactorChange(endpoint: string, body: object): Promise<TaskResult<NhTwoFactorChange>> {\n const result = new TaskResult<NhTwoFactorChange>();\n const request$ = this.httpClient.post<NhTwoFactorChangeResponse>(\n this.moduleConfig.authApiBaseUrl + endpoint,\n body,\n this.twoFactorAccountRequestOptions()\n );\n\n try {\n const response = await lastValueFrom(request$);\n const sessionRenewed = this.applyRenewedSession(response?.session);\n\n result.data = new NhTwoFactorChange({\n recoveryCodes: response?.recoveryCodes ?? undefined,\n sessionRenewed: sessionRenewed\n });\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Stores the session that the server issued for this device after a change that ended\n * every session. The user, claims and divisions of the current authorization are kept.\n */\n protected applyRenewedSession(session: NhLoginResponse | null | undefined): boolean {\n const authorization = this.getAuthorization();\n if (!session?.token || !authorization) {\n return false;\n }\n\n authorization.token = session.token;\n authorization.validTo = session.validTo ?? authorization.validTo;\n authorization.refreshToken = session.refreshToken ?? undefined;\n authorization.refreshTokenExpires = session.refreshValidTo ?? undefined;\n\n this.setAuthorization(authorization);\n return true;\n }\n\n protected toAuthorization(response: NhLoginResponse): TAuthorization {\n const authorization = response as unknown as TAuthorization;\n delete (authorization as NhLoginResponse).twoFactor;\n delete (authorization as NhLoginResponse).rememberDeviceToken;\n authorization.realm = this.moduleConfig.authenticationRealm;\n return authorization;\n }\n\n /**\n * Stores a complete session, or keeps a second-factor challenge or enrollment as the\n * pending step of this browser tab.\n */\n protected completeAuthenticationStep(response: NhLoginResponse): NhAuthenticationStep<TAuthorization> {\n if (response?.twoFactor) {\n const challenge = new NhTwoFactorChallenge(response.twoFactor);\n this.setPendingTwoFactorChallenge(challenge);\n\n return new NhAuthenticationStep<TAuthorization>({\n status: challenge.status === NhAuthenticationStepStatuses.enrollmentRequired ? 'enrollment-required' : 'two-factor-required',\n challenge: challenge\n });\n }\n\n if (response?.rememberDeviceToken) {\n this.storeRememberDeviceToken(response.rememberDeviceToken);\n }\n\n const authorization = this.toAuthorization(response);\n this.setAuthorization(authorization);\n this.clearPendingTwoFactorChallenge();\n return new NhAuthenticationStep<TAuthorization>({status: 'authenticated', authorization: authorization});\n }\n\n /**\n * Converts a failed challenge or enrollment request and forgets the pending step when the\n * server ended it.\n */\n protected pendingStepFailed(ex: unknown): TaskResult<unknown> {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n const stepEnded = errResult.items.some(item =>\n item.name === NhTwoFactorFailureCodes.ChallengeExpired || item.name === NhTwoFactorFailureCodes.LockedOut);\n\n if (stepEnded) {\n this.clearPendingTwoFactorChallenge();\n }\n\n return errResult;\n }\n\n protected async sendEnrollmentCompletion(endpoint: string, body: object): Promise<TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>> {\n const result = new TaskResult<NhTwoFactorEnrollmentResult<TAuthorization>>();\n const request$ = this.httpClient.post<NhTwoFactorChangeResponse>(\n this.twoFactorUrl(endpoint),\n body,\n this.twoFactorStepRequestOptions());\n\n try {\n const response = await lastValueFrom(request$);\n const authorization = response?.session ? this.completeAuthenticationStep(response.session).authorization : undefined;\n\n result.data = new NhTwoFactorEnrollmentResult<TAuthorization>({\n authorization: authorization,\n recoveryCodes: response?.recoveryCodes ?? undefined\n });\n } catch (ex) {\n this.pendingStepFailed(ex).copyTo(result);\n }\n\n return result;\n }\n\n protected async sendTwoFactorRequest<TResponse, TResult>(\n request$: Observable<TResponse>,\n map: (response: TResponse) => TResult): Promise<TaskResult<TResult>> {\n const result = new TaskResult<TResult>();\n\n try {\n result.data = map(await lastValueFrom(request$, {defaultValue: undefined as TResponse}));\n } catch (ex) {\n NhApiUtil.taskResultFromResponse(ex).copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Runs a WebAuthn prompt. A cancelled prompt or an unsupported browser becomes a failed\n * result with `NhTwoFactorFailureCodes.PasskeyUnavailable`.\n */\n protected async runPasskeyCeremony(ceremony: () => Promise<object>): Promise<TaskResult<object>> {\n const result = new TaskResult<object>();\n\n try {\n result.data = await ceremony();\n } catch {\n return result.withError(NhTwoFactorFailureCodes.PasskeyUnavailable, 'nh-two-factor.passkey-unavailable');\n }\n\n return result;\n }\n\n /**\n * Returns the remember-device token of header clients. Cookie clients receive it as an\n * HttpOnly cookie, so nothing is stored in the browser.\n */\n protected getRememberDeviceToken(): string | undefined {\n if (this.moduleConfig.authType !== 'header' || isPlatformServer(this.platformId)) {\n return undefined;\n }\n\n try {\n return localStorage.getItem(this.rememberDeviceStorageKey()) ?? undefined;\n } catch {\n return undefined;\n }\n }\n\n protected storeRememberDeviceToken(token: string | undefined): void {\n if (this.moduleConfig.authType !== 'header' || isPlatformServer(this.platformId)) {\n return;\n }\n\n try {\n if (token) {\n localStorage.setItem(this.rememberDeviceStorageKey(), token);\n } else {\n localStorage.removeItem(this.rememberDeviceStorageKey());\n }\n } catch {\n // Storage can be unavailable in private browsing; the device is then not remembered.\n }\n }\n\n protected rememberDeviceStorageKey(): string {\n return BaseNhAuthService.rememberDeviceStorageKey + ':' + this.moduleConfig.authenticationRealm;\n }\n\n protected setPendingTwoFactorChallenge(challenge: NhTwoFactorChallenge): void {\n this.pendingTwoFactorChallenge = challenge;\n\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n try {\n sessionStorage.setItem(BaseNhAuthService.pendingTwoFactorChallengeStorageKey, JSON.stringify(challenge));\n } catch {\n // Storage can be unavailable in private browsing; the in-memory challenge still works.\n }\n }\n\n protected readStoredTwoFactorChallenge(): NhTwoFactorChallenge | undefined {\n if (isPlatformServer(this.platformId)) {\n return undefined;\n }\n\n try {\n const stored = sessionStorage.getItem(BaseNhAuthService.pendingTwoFactorChallengeStorageKey);\n if (!stored) {\n return undefined;\n }\n\n return new NhTwoFactorChallenge(JSON.parse(stored));\n } catch {\n return undefined;\n }\n }\n\n protected twoFactorEndpoints(): EndpointsAuthenticationNhCommonModuleConfig {\n // Consumers that passed a plain endpoints object keep working with the default routes.\n return new EndpointsAuthenticationNhCommonModuleConfig({\n ...new EndpointsAuthenticationNhCommonModuleConfig(),\n ...this.moduleConfig.authentication.endpoints\n });\n }\n\n protected twoFactorUrl(endpoint: string): string {\n return this.moduleConfig.authApiBaseUrl + endpoint;\n }\n\n protected twoFactorStepRequestOptions() {\n return {\n params: this.languageParams(),\n withCredentials: true\n };\n }\n\n protected twoFactorAccountRequestOptions() {\n let headers = new HttpHeaders();\n const authorization = this.getAuthorization();\n if (this.moduleConfig.authType === 'header' && authorization?.token) {\n headers = headers.set('Authorization', `Bearer ${authorization.token}`);\n }\n\n return {\n params: this.languageParams(),\n headers: headers,\n withCredentials: true\n };\n }\n\n protected languageParams(): HttpParams {\n return new HttpParams().set('language', this.moduleConfig.language);\n }\n\n public async reloadAuthorizationProfile(): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n const auth = this.getAuthorization();\n if (!auth) {\n return result.withError('', 'Not authenticated.');\n }\n\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n let httpHeaders = new HttpHeaders();\n if (this.moduleConfig.authType === 'header') {\n httpHeaders = httpHeaders.set('Authorization', `Bearer ${auth.token}`);\n }\n\n const request$ = this.httpClient.get<NhAccountInformationResponse>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.accountInformation, {\n params: httpParams,\n headers: httpHeaders,\n withCredentials: true\n });\n\n try {\n const informationResponse = await lastValueFrom(request$);\n\n // Loop the informationResponse as object to set the properties on the auth object\n for (const key in informationResponse) {\n if (Object.prototype.hasOwnProperty.call(informationResponse, key)) {\n // @ts-ignore\n auth[key] = informationResponse[key];\n }\n }\n if(this.moduleConfig.authType !== 'header') {\n auth.token = '';\n }\n\n this.setAuthorization(auth);\n\n result.data = this.getAuthorization();\n } catch (ex) {\n // Check status code, if it's in the 400 range, clear the authorization\n const isHttpResponseError = ex instanceof HttpErrorResponse;\n if (isHttpResponseError) {\n const response = ex as HttpErrorResponse;\n if (response.status >= 401 && response.status < 500) {\n this.clearAuthorization();\n }\n }\n\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n /**\n * Asks the account information endpoint whether the server still accepts the current session.\n * When the server answers 401, for example after a password change on another device, the local\n * session ends and the session expiration information reports `rejectedByServer`. Concurrent\n * checks share one request, and a confirmed session is not checked again for 30 seconds.\n * @returns `false` only when there is no session or the server rejected it.\n */\n public verifyServerSession(): Promise<boolean> {\n if (!this.isAuthenticated()) {\n return Promise.resolve(false);\n }\n\n if (Date.now() - this.serverSessionConfirmedAt < BaseNhAuthService.serverSessionConfirmationMilliseconds) {\n return Promise.resolve(true);\n }\n\n this.serverSessionCheck ??= this.checkServerSession().finally(() => {\n this.serverSessionCheck = undefined;\n });\n\n return this.serverSessionCheck;\n }\n\n protected async checkServerSession(): Promise<boolean> {\n const checkedAuthorization = this.getAuthorization();\n\n let httpHeaders = new HttpHeaders();\n if (this.moduleConfig.authType === 'header' && (checkedAuthorization?.token?.length ?? 0) > 0) {\n httpHeaders = httpHeaders.set('Authorization', `Bearer ${checkedAuthorization!.token}`);\n }\n\n const request$ = this.httpClient.get<unknown>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.accountInformation, {\n params: new HttpParams().set('language', this.moduleConfig.language),\n headers: httpHeaders,\n withCredentials: true,\n context: new HttpContext().set(NH_SKIP_SERVER_SESSION_CHECK, true)\n });\n\n try {\n await lastValueFrom(request$);\n this.serverSessionConfirmedAt = Date.now();\n\n return true;\n } catch (ex) {\n const rejected = ex instanceof HttpErrorResponse && ex.status === 401;\n\n // Other failures say nothing about the session, and a sign-in during the check replaced it.\n if (!rejected || this.getAuthorization() !== checkedAuthorization) {\n return true;\n }\n\n this.sessionRejectedByServer = true;\n this.clearAuthorization();\n\n return false;\n }\n }\n\n async logout(): Promise<TaskResult<void>> {\n const result = new TaskResult<void>();\n const refreshToken = this.getAuthorization()?.refreshToken ?? null;\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n const request$ = this.httpClient.post<void>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.logout, { refreshToken }, {\n params: httpParams,\n withCredentials: true\n });\n\n try {\n await lastValueFrom(request$);\n\n if (result.isSuccess) {\n this.clearAuthorization();\n }\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n async authenticateRefreshToken(model: RefreshTokenLoginAccountMutateModel): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n const request$ = this.httpClient.post<TAuthorization>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.refresh, model, {\n params: httpParams,\n withCredentials: true\n });\n\n try {\n result.data = await lastValueFrom(request$);\n if (result.isSuccess) {\n this.setAuthorization(result.data);\n }\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n async impersonate(model: ImpersonateAuthenticateModel): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n const request$ = this.httpClient.post<TAuthorization>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.impersonate, model, {\n params: httpParams,\n withCredentials: true\n });\n\n try {\n result.data = await lastValueFrom(request$);\n if (result.isSuccess) {\n this.setAuthorization(result.data);\n await this.reloadAuthorizationProfile();\n }\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n\n async impersonateRevert(model: RevertImpersonateAuthenticateModel): Promise<TaskResult<TAuthorization>> {\n const result = new TaskResult<TAuthorization>();\n\n let httpParams = new HttpParams();\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n const request$ = this.httpClient.post<TAuthorization>(this.moduleConfig.authApiBaseUrl + this.moduleConfig.authentication.endpoints.revertImpersonate, model, {\n params: httpParams,\n withCredentials: true\n });\n\n try {\n result.data = await lastValueFrom(request$);\n if (result.isSuccess) {\n this.setAuthorization(result.data);\n await this.reloadAuthorizationProfile();\n }\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(result);\n }\n\n return result;\n }\n}\n\n@Injectable()\nexport class NhAuthService extends BaseNhAuthService<NhAuthorization> {\n protected initEmptyAuthorization(): NhAuthorization {\n return new NhAuthorization();\n }\n\n constructor() {\n super();\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n HttpInterceptor,\n HttpRequest,\n HttpEvent,\n HttpHandler,\n HttpParams,\n HttpParameterCodec, HttpResponse\n} from '@angular/common/http';\nimport {Inject, Injectable, Optional, PLATFORM_ID, REQUEST_CONTEXT} from '@angular/core';\nimport {Observable, tap} from 'rxjs';\nimport {isPlatformServer} from \"@angular/common\";\nimport {NhCommonConfig, NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhCookieService} from \"../services/nh-cookie.service\";\nimport {NhAuthService} from \"../services/nh-auth.service\";\nimport {Cookie} from \"../util/though-cookie-custom/cookie\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhRequestScopedServerHttpInterceptorService {\n didSetCookies = false;\n\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(REQUEST_CONTEXT) private requestContext: any\n ) {\n\n }\n}\n\n@Injectable()\nexport class NhServerHttpInterceptor implements HttpInterceptor {\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Inject(DOCUMENT) private document: Document,\n private requestScopedServerHttpInterceptorService: NhRequestScopedServerHttpInterceptorService,\n private cookieService: NhCookieService,\n private authService: NhAuthService\n ) {\n\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const normalizedReqUrl = req.url?.trim()?.toLowerCase() ?? '';\n const isApiRequest = normalizedReqUrl.startsWith(this.moduleConfig.apiBaseUrl);\n\n const handleExpiredHeaderDetected = (event: HttpResponse<any>) => {\n if (event.headers.has('X-Expired-Authentication')) {\n console.log('X-Expired-Authentication header detected');\n this.authService.clearAuthorization();\n }\n };\n\n if (isApiRequest && isPlatformServer(this.platformId)) {\n\n const requestCookies = this.cookieService\n .getRequestServerCookies()\n .filter(x => x.key === `${NhCookieService.HTTP_COOKIE_PREFIX}${NhCookieService.NOP_COOKIE_AUTHENTICATION}`\n || x.key === `${NhCookieService.HTTP_COOKIE_PREFIX}${NhCookieService.NOP_COOKIE_CUSTOMER}`\n || x.key === `${NhCookieService.HTTP_COOKIE_PREFIX}${NhCookieService.Nh_COOKIE_AUTHENTICATION}`)\n ;\n\n for (const cookie of requestCookies) {\n cookie.key = cookie.key.replace(NhCookieService.HTTP_COOKIE_PREFIX, '');\n }\n\n const requestCookieString = requestCookies.map(x => x.toString()).join('; ') ?? '';\n const serverReq = req.clone({\n setHeaders: {\n Cookie: requestCookieString\n },\n });\n\n return next.handle(serverReq).pipe(\n tap(async event => {\n if (event instanceof HttpResponse) {\n\n handleExpiredHeaderDetected(event);\n\n if (this.requestScopedServerHttpInterceptorService.didSetCookies) {\n return;\n }\n\n const rawSetCookieHeader = event?.headers?.get('Set-Cookie')?.trim() ?? '';\n\n if ((rawSetCookieHeader?.length ?? 0) > 0) {\n const cookies = this.cookieService.responseRawCookiesHeaderToCookies(rawSetCookieHeader);\n const nopAuthenticationCookie = cookies.find(x => x?.key === NhCookieService.NOP_COOKIE_AUTHENTICATION && x.httpOnly);\n const nopCustomerCookie = cookies.find(x => x?.key === NhCookieService.NOP_COOKIE_CUSTOMER && x.httpOnly);\n const nhAuthenticationCookie = cookies.find(x => x?.key === NhCookieService.Nh_COOKIE_AUTHENTICATION && x.httpOnly);\n\n const serverCookies: Cookie[] = [];\n\n if (nopAuthenticationCookie) {\n serverCookies.push(nopAuthenticationCookie);\n }\n\n if (nopCustomerCookie) {\n serverCookies.push(nopCustomerCookie);\n }\n\n if (nhAuthenticationCookie) {\n serverCookies.push(nhAuthenticationCookie);\n }\n\n for (const serverCookie of serverCookies) {\n serverCookie.domain = this.moduleConfig.cookieDomain;\n }\n\n this.cookieService.setServerCookies(serverCookies);\n this.requestScopedServerHttpInterceptorService.didSetCookies = true;\n }\n }\n })\n );\n }\n\n return next.handle(req).pipe(\n tap(async event => {\n if (event instanceof HttpResponse) {\n handleExpiredHeaderDetected(event);\n }\n })\n );\n }\n}\n","import {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest\n} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {finalize, shareReplay} from 'rxjs/operators';\nimport {NhCommonModuleConfig} from '../models/config.models';\n\n@Injectable()\nexport class NhDeduplicateGetRequestsInterceptor implements HttpInterceptor {\n private activeRequests = new Map<string, Observable<HttpEvent<any>>>();\n\n constructor(\n private moduleConfig: NhCommonModuleConfig\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.moduleConfig.http?.deduplicateGetRequests || req.method.toUpperCase() !== 'GET') {\n return next.handle(req);\n }\n\n const requestKey = this.getRequestKey(req);\n const activeRequest = this.activeRequests.get(requestKey);\n\n if (activeRequest) {\n return activeRequest;\n }\n\n const request$ = next.handle(req).pipe(\n finalize(() => this.activeRequests.delete(requestKey)),\n shareReplay({bufferSize: 1, refCount: true})\n );\n\n this.activeRequests.set(requestKey, request$);\n\n return request$;\n }\n\n private getRequestKey(req: HttpRequest<any>): string {\n const headerKey = (this.moduleConfig.http?.deduplicateGetRequestHeaderNames ?? [])\n .map(x => x.trim().toLowerCase())\n .filter(x => !!x)\n .sort()\n .map(x => `${x}:${req.headers.getAll(x)?.join(',') ?? ''}`)\n .join('|');\n\n return `${req.method.toUpperCase()} ${req.urlWithParams} ${headerKey}`;\n }\n}\n","import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest\n} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {catchError, Observable, throwError} from 'rxjs';\nimport {NhCommonModuleConfig} from '../models/config.models';\nimport {NH_SKIP_SERVER_SESSION_CHECK, NhAuthService} from '../services/nh-auth.service';\n\n/**\n * Ends a session that the NewHeap API no longer accepts. A 401 from the API while the browser\n * still holds a session asks the auth service to check that session with the server. Only a 401\n * from the account endpoint ends it, so an endpoint that answers 401 for another reason never\n * signs the user out. The original error still reaches the caller.\n */\n@Injectable()\nexport class NhSessionRejectionInterceptor implements HttpInterceptor {\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private authService: NhAuthService\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.appliesTo(req)) {\n return next.handle(req);\n }\n\n return next.handle(req).pipe(\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse && error.status === 401 && this.authService.isAuthenticated()) {\n void this.authService.verifyServerSession();\n }\n\n return throwError(() => error);\n })\n );\n }\n\n private appliesTo(req: HttpRequest<unknown>): boolean {\n if (this.moduleConfig.authentication?.endSessionRejectedByServer === false || req.context.get(NH_SKIP_SERVER_SESSION_CHECK)) {\n return false;\n }\n\n return this.isUnder(req.url, this.moduleConfig.apiBaseUrl) || this.isUnder(req.url, this.moduleConfig.authApiBaseUrl);\n }\n\n private isUnder(url: string, baseUrl: string | undefined): boolean {\n return (baseUrl?.length ?? 0) > 0 && url.startsWith(baseUrl!);\n }\n}\n","import {forwardRef} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nexport abstract class AbstractValueAccessor implements ControlValueAccessor {\n _value: any = '';\n get value(): any {\n return this._value;\n };\n\n set value(v: any) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n }\n }\n\n writeValue(value: any) {\n this._value = value;\n // warning: comment below if only want to emit on user intervention\n this.onChange(value);\n }\n\n onChange = (_: any) => {\n };\n onTouched = () => {\n };\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n\nexport function MakeProvider(type: any) {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => type),\n multi: true\n };\n}\n","import {ErrorHandler, Injectable, InjectionToken, Injector} from \"@angular/core\";\n\nexport const NH_ERROR_HANDLERS = new InjectionToken<ErrorHandler[]>('NH_ERROR_HANDLERS');\n\n@Injectable({providedIn: 'root'})\nexport class NhErrorHandlerService implements ErrorHandler {\n constructor(private injector: Injector){}\n\n handleError(error: any): void {\n const handlers = this.injector.get(NH_ERROR_HANDLERS, []);\n for (const handler of handlers) {\n try {\n handler.handleError(error);\n } catch {\n // A failing telemetry provider must not prevent the remaining handlers\n // from observing the original application error.\n }\n }\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n afterNextRender,\n ApplicationRef,\n Inject,\n Injectable,\n makeStateKey,\n OnDestroy, Optional,\n PLATFORM_ID,\n StateKey, TransferState\n} from \"@angular/core\";\nimport {filter, Subscription} from \"rxjs\";\nimport {isPlatformBrowser, isPlatformServer} from \"@angular/common\";\nimport {NavigationEnd, Router} from \"@angular/router\";\n\nconst APP_ORIGINATED_FROM_SERVER = 'APP_ORIGINATED_FROM_SERVER';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhAppService implements OnDestroy {\n private $appRefIsStable: Subscription;\n private appIsStable: boolean = false;\n private afterNextRenderComplete: boolean = false;\n private firstHydrateComplete: boolean = false;\n private stateKeys: StateKey<any>[] = [];\n private browserFirstHydrateComplete$: Subscription|undefined;\n public readonly localStorage?: Storage;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n private appRef: ApplicationRef,\n private transferState: TransferState,\n private router: Router\n ) {\n\n this.localStorage = this.document.defaultView?.localStorage as Storage;\n this.$appRefIsStable = this.appRef.isStable.subscribe((isStable) => {\n if (isStable) {\n this.appIsStable = true;\n\n if(this.isPlatformServer()) {\n this.setStateTransferData(APP_ORIGINATED_FROM_SERVER, 'true');\n }\n }\n });\n\n afterNextRender(() => {\n this.afterNextRenderComplete = true;\n });\n\n if(this.isPlatformBrowser()) {\n this.browserFirstHydrateComplete$ = this.router.events\n .pipe(\n filter(event => event instanceof NavigationEnd) // Alleen NavigationEnd events\n )\n .subscribe(() => {\n if(this.isPlatformBrowser() && this.originatedFromServer() && !this.firstHydrateCompleted()) {\n this.firstHydrateComplete = true;\n this.browserFirstHydrateComplete$?.unsubscribe();\n }\n });\n }\n }\n\n isAppStable(): boolean {\n return this.appIsStable;\n }\n\n ngOnDestroy() {\n this.$appRefIsStable?.unsubscribe();\n this.browserFirstHydrateComplete$?.unsubscribe();\n }\n\n originatedFromServer(): boolean {\n return this.getStateTransferData(APP_ORIGINATED_FROM_SERVER) === 'true';\n }\n\n isPlatformServer(): boolean {\n return isPlatformServer(this.platformId);\n }\n\n isPlatformBrowser(): boolean {\n return isPlatformBrowser(this.platformId);\n }\n\n firstHydrateCompleted(): boolean {\n return this.firstHydrateComplete;\n }\n\n afterNextRenderCompleted(): boolean {\n return this.afterNextRenderComplete;\n }\n\n isPlatformBrowserInitial() {\n if(!this.originatedFromServer()) {\n return false;\n }\n\n return (isPlatformBrowser(this.platformId) && !this.firstHydrateCompleted() && this.afterNextRenderCompleted());\n }\n\n setStateTransferData(key: string, data: any) {\n let stateKey = this.stateKeys.find(x => x === key);\n if(!stateKey) {\n stateKey = makeStateKey<any>(key);\n this.stateKeys.push(stateKey);\n }\n\n this.transferState.set(stateKey, data);\n }\n\n getStateTransferData<T>(key: string): T {\n let stateKey = this.stateKeys.find(x => x === key);\n if(!stateKey) {\n stateKey = makeStateKey<any>(key);\n this.stateKeys.push(stateKey);\n }\n\n return this.transferState.get(stateKey, undefined as any);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport class NhJsonLdDataItem {\n id: string = '';\n data: any;\n placeholderKeys: string[] = [];\n resolvePlaceholderKey: string | undefined;\n\n public constructor(init?: Partial<NhJsonLdDataItem>) {\n Object.assign(this, init);\n }\n}\nexport class NhJsonLdData {\n items: NhJsonLdDataItem[] = [];\n\n public constructor(init?: Partial<NhJsonLdData>) {\n Object.assign(this, init);\n }\n}\n\nexport class JsonLdDataChanged {\n data: NhJsonLdData = new NhJsonLdData();\n\n public constructor(init?: Partial<JsonLdDataChanged>) {\n Object.assign(this, init);\n }\n}\n\nconst RESOLVE_PREFIX = '%%';\nconst RESOLVE_SUFFIX = RESOLVE_PREFIX;\nexport const REVIEW_AGGREGATE_RATING_KEY = (id: string | undefined) => `${RESOLVE_PREFIX}reviewAggregate-${id}${RESOLVE_SUFFIX}`;\nexport const REVIEW_KEY = (id: string | undefined) => `${RESOLVE_PREFIX}review-${id}${RESOLVE_SUFFIX}`;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhJsonLdService {\n private data: NhJsonLdData;\n public readonly dataSubject: BehaviorSubject<JsonLdDataChanged>;\n\n constructor() {\n this.data = new NhJsonLdData();\n this.dataSubject = new BehaviorSubject<JsonLdDataChanged>(new JsonLdDataChanged({\n data: this.data\n }));\n }\n\n getData(): NhJsonLdData {\n return this.data;\n }\n\n private _addItem(item: NhJsonLdDataItem) {\n this._removeItem(item.id);\n this.data.items.push(item);\n }\n\n private _removeItem(itemId: string) {\n this.data.items = this.data.items.filter(x => x.id !== itemId);\n }\n\n addItem(item: NhJsonLdDataItem) {\n this._addItem(item);\n this.dataSubject.next(new JsonLdDataChanged({\n data: this.data\n }));\n }\n\n removeItem(itemId: string) {\n this._removeItem(itemId);\n this.dataSubject.next(new JsonLdDataChanged({\n data: this.data\n }));\n }\n\n clear() {\n this.data.items = [];\n this.dataSubject.next(new JsonLdDataChanged({\n data: this.data\n }));\n }\n\n build(): any {\n const items: any[] = [];\n\n for (const item of this.data.items) {\n if (!item.data) {\n continue;\n }\n\n if ((item.resolvePlaceholderKey?.length ?? 0) > 0) {\n // Not a root item\n continue;\n }\n\n this._resolvePlaceholderKeys(item);\n items.push(item.data);\n }\n\n return {\n '@context': 'https://schema.org/',\n '@graph': items\n };\n }\n\n private _resolvePlaceholderKeys(item: NhJsonLdDataItem): any {\n if (!item.placeholderKeys.length) {\n return;\n }\n\n for (const placeholderKey of item.placeholderKeys) {\n let placeholderItem = this.data.items.find(x => x.resolvePlaceholderKey === placeholderKey);\n if (!placeholderItem) {\n // Add empty item so that the temp key is replaced\n placeholderItem = new NhJsonLdDataItem();\n }\n\n if (placeholderItem.placeholderKeys.length) {\n this._resolvePlaceholderKeys(placeholderItem);\n }\n\n let foundMatch = false;\n for (const dataKey in item.data) {\n const dataValue = item.data[dataKey];\n if (dataValue !== placeholderKey) {\n continue;\n }\n\n item.data[dataKey] = placeholderItem.data;\n foundMatch = true;\n break;\n }\n\n if (foundMatch) {\n continue;\n }\n\n // Did not find a match, so must be added at root level of the item data\n item.data = {...item.data, ...placeholderItem.data};\n }\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {Inject, Injectable, OnDestroy, Optional, PLATFORM_ID, REQUEST_CONTEXT, TransferState} from \"@angular/core\";\nimport {BehaviorSubject, lastValueFrom} from \"rxjs\";\nimport {Base64} from \"js-base64\";\nimport {isPlatformBrowser, isPlatformServer} from \"@angular/common\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {NhCommonConfig, NhCommonConfigChanged, NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhAuthService} from \"./nh-auth.service\";\nimport {NhCookieService} from \"./nh-cookie.service\";\nimport {languageToCultureMap} from \"../util/nh-common-util\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhConfigCommonService implements OnDestroy {\n private static STORAGE_KEY = 'test_app_ac';\n private static COOKIE_KEY_LANGUAGE_CODE = 'shop.userLanguage';\n private didInitialize: boolean = false;\n private readonly localStorage?: Storage;\n private config: NhCommonConfig;\n public readonly configSubject: BehaviorSubject<NhCommonConfigChanged>;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(REQUEST_CONTEXT) private requestContext: any,\n private authService: NhAuthService,\n private translateService: TranslateService,\n private cookieService: NhCookieService,\n private commonModuleConfig: NhCommonModuleConfig\n ) {\n this.localStorage = this.document.defaultView?.localStorage as Storage;\n this.config = this.getConfig(false);\n this.configSubject = new BehaviorSubject<NhCommonConfigChanged>(new NhCommonConfigChanged({ config: this.config }));\n }\n\n async ngOnDestroy() {\n }\n\n\n\n async initialize() {\n if(this.didInitialize) {\n return;\n }\n\n const config = this.getConfig();\n\n config.languageCode = this.resolveInitialLanguageCode();\n\n this.translateService.onLangChange.subscribe(async () => {\n if(isPlatformBrowser(this.platformId)) {\n this.cookieService.set(NhConfigCommonService.COOKIE_KEY_LANGUAGE_CODE, this.config.languageCode, { sameSite: 'Strict', domain: this.commonModuleConfig.cookieDomain });\n }\n\n this.commonModuleConfig.language = this.config.languageCode;\n this.commonModuleConfig.culture = (<any>languageToCultureMap)[this.config.languageCode];\n });\n\n this.translateService.setFallbackLang(this.commonModuleConfig.defaultLanguage);\n await lastValueFrom(this.translateService.use(this.config.languageCode));\n this.commonModuleConfig.culture = (<any>languageToCultureMap)[this.config.languageCode];\n\n if(isPlatformBrowser(this.platformId)) {\n this.cookieService.set(NhConfigCommonService.COOKIE_KEY_LANGUAGE_CODE, this.config.languageCode, { sameSite: 'Strict', domain: this.commonModuleConfig.cookieDomain });\n }\n\n this.didInitialize = true;\n }\n\n public getInitialConfig(): NhCommonConfig {\n return new NhCommonConfig({\n languageCode: this.commonModuleConfig.defaultLanguage,\n culture: this.commonModuleConfig.defaultCulture,\n });\n }\n\n private resolveInitialLanguageCode(): string {\n const url = new URL(this.document.URL);\n let languageCode = this.commonModuleConfig.defaultLanguage;\n const urlPaths = url.pathname.split('/').filter(x => x?.trim() !== undefined && x?.trim() !== '');\n\n const getLanguageCookieValue = () => {\n return this.cookieService.get(NhConfigCommonService.COOKIE_KEY_LANGUAGE_CODE);\n };\n\n const resolver = () => {\n if(isPlatformServer(this.platformId)) {\n // Server side: the custom cookie we set our self with a fallback to the request accept language header, and the last fallback to the default language.\n try {\n languageCode = getLanguageCookieValue() ?? (<any>this?.requestContext?.request?.headers)['accept-language']?.toString()?.trim()?.substring(0, 2) ?? this.commonModuleConfig.defaultLanguage;\n } catch {\n languageCode = getLanguageCookieValue() ?? this?.requestContext?.request?.headers?.get('accept-language')?.toString()?.trim()?.substring(0, 2) ?? this.commonModuleConfig.defaultLanguage;\n }\n\n } else if(isPlatformBrowser(this.platformId)) {\n // Client side: the custom cookie we set our self with a fallback to the browser language, and the last fallback to the default language.\n languageCode = getLanguageCookieValue() ?? navigator.language ?? this.commonModuleConfig.defaultLanguage;\n } else {\n languageCode = this.commonModuleConfig.defaultLanguage;\n }\n };\n\n const isHomepage = urlPaths.length <= 0;\n if(isHomepage) {\n // We don't have a language code in the URL, so we need to determine the language code based on;\n resolver();\n } else {\n // If it is not the homepage, we always have a language code in the URL.\n // This means segment position 0 is the language code.\n languageCode = urlPaths[0];\n }\n\n languageCode = (languageCode ?? this.commonModuleConfig.defaultLanguage).trim().toLowerCase();\n if(languageCode.length > 2) {\n languageCode = this.commonModuleConfig.defaultLanguage;\n }\n\n if(languageCode.length != 2) {\n // Looks like we failed to get a nice language code, so we fall back to the default language.\n languageCode = this.commonModuleConfig.defaultLanguage;\n }\n\n let isSupportedLanguageCode = this.commonModuleConfig.supportedLanguages.some(x => x === languageCode);\n if(!isSupportedLanguageCode) {\n resolver();\n }\n\n // Check again, navigator or accept lang etc may be non-supported.\n isSupportedLanguageCode = this.commonModuleConfig.supportedLanguages.some(x => x === languageCode);\n if(!isSupportedLanguageCode) {\n languageCode = this.commonModuleConfig.defaultLanguage;\n }\n\n return languageCode;\n }\n\n public resetConfig(): void {\n if(!isPlatformServer(this.platformId)) {\n this.localStorage!.removeItem(NhConfigCommonService.STORAGE_KEY);\n }\n this.config = this.getInitialConfig();\n this.setConfig(this.config);\n }\n\n public setConfig(config: NhCommonConfig): void {\n const changed = new NhCommonConfigChanged();\n\n if(!isPlatformServer(this.platformId)) {\n this.localStorage!.setItem(NhConfigCommonService.STORAGE_KEY, Base64.encode((JSON.stringify(config))));\n }\n\n this.config = config;\n changed.config = this.config;\n\n this.configSubject?.next(changed);\n }\n\n public getConfig(fromCache: boolean = true): NhCommonConfig {\n let config = this.config;\n if (!fromCache) {\n const configString = isPlatformServer(this.platformId) ? undefined : this.localStorage!.getItem(NhConfigCommonService.STORAGE_KEY);\n if (configString) {\n this.config = JSON.parse(Base64.decode(configString));\n } else {\n this.resetConfig();\n }\n\n config = this.config;\n }\n\n return config;\n }\n\n public async changeLanguage(newLanguageCode: string): Promise<void> {\n const currentLang = this.translateService.currentLang;\n if(newLanguageCode === currentLang) {\n return;\n }\n\n let isSupportedLanguageCode = this.commonModuleConfig.supportedLanguages.some(x => x === newLanguageCode);\n if(!isSupportedLanguageCode) {\n newLanguageCode = this.commonModuleConfig.defaultLanguage;\n }\n\n this.config.languageCode = newLanguageCode;\n this.setConfig(this.config);\n await lastValueFrom(this.translateService.use(newLanguageCode));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhTitleService {\n public title: BehaviorSubject<string>;\n\n constructor(private titleService: Title) {\n this.title = new BehaviorSubject<string>(titleService.getTitle());\n }\n\n setTitle(title: string) {\n this.titleService.setTitle(title);\n this.title.next(title);\n }\n}\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { Meta, MetaDefinition } from '@angular/platform-browser';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhMetaService {\n private _renderer: Renderer2;\n\n constructor(\n private angularMetaService: Meta,\n private _rendererFactory: RendererFactory2\n ) {\n this._renderer = this._rendererFactory.createRenderer(null, null);\n }\n\n addTag(tag: MetaDefinition, forceCreation?: boolean): HTMLMetaElement | null {\n NhMetaService.processMetaTags([tag]);\n return this.angularMetaService.addTag(tag, forceCreation);\n }\n addTags(tags: MetaDefinition[], forceCreation?: boolean): HTMLMetaElement[] {\n NhMetaService.processMetaTags(tags);\n return this.angularMetaService.addTags(tags, forceCreation);\n }\n getTag(attrSelector: string): HTMLMetaElement | null {\n return this.angularMetaService.getTag(attrSelector);\n }\n getTags(attrSelector: string): HTMLMetaElement[] {\n return this.angularMetaService.getTags(attrSelector);\n }\n updateTag(tag: MetaDefinition, selector?: string): HTMLMetaElement | null {\n NhMetaService.processMetaTags([tag]);\n return this.angularMetaService.updateTag(tag, selector);\n }\n\n removeTag(attrSelector: string): void {\n this.angularMetaService.removeTag(attrSelector);\n }\n\n removeTags(attrSelector: string): void {\n const tags = this.getTags(attrSelector);\n for (const tag of tags) {\n this.angularMetaService.removeTagElement(tag);\n }\n }\n\n removeTagElement(meta: HTMLMetaElement): void {\n this.angularMetaService.removeTagElement(meta);\n }\n\n stripHtml(html: string): string {\n const tmp = this._renderer.createElement('div');\n this._renderer.setProperty(tmp, 'innerHTML', html ?? '');\n\n return tmp.textContent ?? tmp.innerText ?? '';\n }\n\n private static processMetaTags(tags: MetaDefinition[], maxLength: number = 200, replacementText: string = '...') {\n for (const tag of tags) {\n if (tag.name?.trim().toLowerCase() === 'description'\n || tag.property?.trim().toLowerCase() === 'og:description') {\n if ((tag.content?.length ?? 0) > maxLength) {\n tag.content = tag.content!.slice(0, maxLength - replacementText.length) + replacementText;\n }\n }\n }\n }\n}\n","import {Injectable, Type} from '@angular/core';\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n CanActivateChildFn,\n CanActivateFn, CanMatchFn, Data, DefaultExport,\n LoadChildren, NavigationEnd, NavigationSkipped, NavigationSkippedCode, RedirectFunction,\n Route, Router, Routes, UrlMatchResult, UrlSegment, UrlSegmentGroup,\n} from \"@angular/router\";\nimport {NhCommonModuleConfig} from \"../models/config.models\";\nimport {filter, map, Observable} from \"rxjs\";\nimport {NhRouterLink} from \"../models/misc.models\";\n\nexport class NhRoute {\n language!: string;\n path!: string;\n\n public constructor(init?: Partial<NhRoute>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhRegisterRoute {\n id!: string;\n parentIds: string[]|undefined = []; // Should be in order of parent to child\n routes: NhRoute[] = [];\n children?: Routes;\n loadChildren?: LoadChildren;\n component?: Type<any>;\n loadComponent?: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>;\n canActivate?: Array<CanActivateFn>;\n canMatch?: Array<CanMatchFn>;\n canActivateChild?: Array<CanActivateChildFn>;\n redirectTo?: string | RedirectFunction;\n pathMatch?: 'prefix' | 'full';\n data?: Data;\n excludeFromSitemap?: boolean;\n\n public constructor(init?: Partial<NhRegisterRoute>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhRouteInfo {\n id!: string;\n parentIds: string[]|undefined;\n activeRoute!: NhRoute;\n routes: NhRoute[] = [];\n excludeFromSitemap?: boolean;\n\n public constructor(init?: Partial<NhRouteInfo>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhRouteNavigationItem {\n id!: string;\n path!: string;\n route!: Route;\n parent: NhRouteNavigationItem|undefined;\n children: NhRouteNavigationItem[] = [];\n\n public constructor(init?: Partial<NhRouteNavigationItem>) {\n Object.assign(this, init);\n }\n\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhRouterSetupService {\n public static readonly Nh_ROUTE_DATA_KEY = '__nh_route_data_key__';\n private supportedLanguages: string[] = [];\n private defaultLanguage: string = '';\n private activeLanguage: string = '';\n private lastKnownActivatedRoute: ActivatedRoute | undefined;\n private registeredRoutes: Routes = [];\n private rootRouteNavigationItem: NhRouteNavigationItem = new NhRouteNavigationItem();\n\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private translateService: TranslateService\n ) {\n this.activeLanguage = this.translateService.currentLang;\n this.translateService.onLangChange.subscribe((langChangeEvent) => {\n this.activeLanguage = langChangeEvent.lang;\n });\n }\n\n public getRootRouteNavigationItem(): NhRouteNavigationItem {\n return this.rootRouteNavigationItem;\n }\n\n private getNormalizedNavigationItemId(id: string): string {\n if(id.startsWith('/')) {\n id = id.substring(1);\n }\n\n if(id.endsWith('/')) {\n id = id.substring(0, id.length - 1);\n }\n\n if(!id.startsWith('root/')) {\n id = 'root/' + id;\n }\n\n return id;\n }\n\n public getRouteNavigationItem(nhRouterLink: NhRouterLink): NhRouteNavigationItem|undefined {\n const id = this.getNormalizedNavigationItemId(nhRouterLink.id);\n const search = (item: NhRouteNavigationItem): NhRouteNavigationItem|undefined => {\n if(item.id === id) {\n return item;\n }\n\n for(const child of item.children) {\n const result = search(child);\n if(result) {\n return result;\n }\n }\n\n return undefined;\n };\n\n return search(this.rootRouteNavigationItem);\n }\n\n public createUrlForNavigationItem(nhRouterLink: NhRouterLink): string {\n const navigationItem = this.getRouteNavigationItem(nhRouterLink);\n if(!navigationItem) {\n throw new Error(`Navigation item with id ${nhRouterLink.id} not found.`);\n }\n\n const language = nhRouterLink.language ?? this.translateService.currentLang;\n const parts: string[] = [];\n let current: NhRouteNavigationItem|undefined = navigationItem;\n while(current) {\n const nhRouteInfo = (<any>current.route).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n const nhRoute = nhRouteInfo.routes.find(x => x.language === language);\n if(!nhRoute) {\n throw new Error(`No route found for language ${language}`);\n }\n parts.unshift(nhRoute!.path);\n current = current.parent;\n }\n\n let resolvedPath = '/' + parts.filter(x => x.trim() !== '').join('/');\n\n if(nhRouterLink.arguments) {\n for(const key of Object.keys(nhRouterLink.arguments)) {\n resolvedPath = resolvedPath.replace(`:${key}`, nhRouterLink.arguments[key]);\n }\n }\n\n return resolvedPath;\n }\n\n public setDefaultLanguage(language: string): void {\n this.defaultLanguage = language;\n }\n\n public getDefaultLanguage(): string {\n return this.defaultLanguage;\n }\n\n public setSupportedLanguages(languages: string[]): void {\n this.supportedLanguages = languages;\n }\n\n public getRouteTranslationKey(path: string) {\n return `_nh_route_path_${path}`;\n }\n\n public createRoute(options: NhRegisterRoute): Route[] {\n for(const supportedLanguage of this.supportedLanguages) {\n if(!options.routes.find(x => x.language === supportedLanguage)) {\n throw new Error(`No route found for supported language ${supportedLanguage}. All supported languages must have a route defined.`);\n }\n }\n\n const routes: Route[] = [];\n\n for(const supportedLanguage of this.supportedLanguages) {\n const route: Route = {\n path: undefined,\n pathMatch: options.pathMatch,\n data: options.data ?? {},\n canActivate: options.canActivate,\n children: options.children,\n loadChildren: options.loadChildren,\n component: options.component,\n loadComponent: options.loadComponent,\n canMatch: options.canMatch,\n canActivateChild: options.canActivateChild,\n redirectTo: options.redirectTo,\n };\n\n const nhRouteData = new NhRouteInfo({\n id: options.id,\n parentIds: options.parentIds,\n activeRoute: options.routes.find(x => x.language === supportedLanguage),\n routes: options.routes,\n excludeFromSitemap: options.excludeFromSitemap\n });\n\n route.path = nhRouteData.activeRoute.path;\n (<any>route.data)[NhRouterSetupService.Nh_ROUTE_DATA_KEY] = nhRouteData;\n\n this.registeredRoutes.push(route);\n routes.push(route);\n }\n\n return routes;\n }\n\n public processRegisteredRoutes() {\n const routes = this.registeredRoutes;\n\n const processRoutes = (route: Route, parentIds: string[], parentRouteNavigationItem: NhRouteNavigationItem|undefined, routeNavigationItem: NhRouteNavigationItem) => {\n const primaryLang = 'en';\n const nhRouteInfo = (<any>route).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n const myId = nhRouteInfo.id;\n const newParentIds = [...parentIds, myId];\n const searchId = newParentIds.join('/');\n const childRoutes = routes.filter(x => (<any>x).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY].parentIds?.join('/') === searchId) as Routes;\n\n const resolvePath = (): string => {\n const nhEngRoute = nhRouteInfo.routes.find(x => x.language === primaryLang);\n if(myId === 'root') {\n return '';\n }\n\n const pathParts: string[] = [nhEngRoute!.path ?? ''];\n\n if(parentRouteNavigationItem) {\n let currentParent: NhRouteNavigationItem|undefined = parentRouteNavigationItem;\n while(currentParent) {\n const currentParentNhRouteInfo = (<any>currentParent.route).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n const currentParentNhEngRoute = currentParentNhRouteInfo.routes.find(x => x.language === primaryLang);\n\n let currentParentNhEngRoutePath = currentParentNhEngRoute?.path ?? '';\n if(currentParentNhRouteInfo.id === 'root') {\n currentParentNhEngRoutePath = '';\n }\n pathParts.unshift(currentParentNhEngRoutePath);\n currentParent = currentParent.parent;\n }\n }\n\n return '/' + pathParts.filter(x => x.trim() !== '' && x).join('/');\n };\n\n routeNavigationItem.id = searchId;\n routeNavigationItem.path = resolvePath();\n routeNavigationItem.route = route;\n routeNavigationItem.parent = parentRouteNavigationItem;\n routeNavigationItem.children = [];\n\n for(const childRoute of childRoutes) {\n const childNavigationItem = new NhRouteNavigationItem();\n\n routeNavigationItem.children.push(childNavigationItem);\n processRoutes(childRoute, newParentIds, routeNavigationItem, childNavigationItem);\n }\n };\n\n const rootRoute = routes.find(x => (<any>x).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY].id === 'root') as Route;\n const routeNavRootItem = new NhRouteNavigationItem();\n\n processRoutes(rootRoute, [], undefined, routeNavRootItem);\n this.rootRouteNavigationItem = routeNavRootItem;\n }\n\n public static rootRoute(activatedRoute: ActivatedRoute): ActivatedRoute {\n while (activatedRoute.firstChild) {\n activatedRoute = activatedRoute.firstChild;\n }\n return activatedRoute;\n }\n}\n","import {Inject, Injectable, InjectionToken, Optional, REQUEST_CONTEXT, Type} from '@angular/core';\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationBehaviorOptions,\n NavigationEnd,\n NavigationExtras,\n NavigationSkipped,\n NavigationSkippedCode,\n NavigationStart,\n Router,\n Routes,\n UrlCreationOptions,\n UrlTree,\n} from \"@angular/router\";\nimport {NhCommonModuleConfig} from \"../models/config.models\";\nimport {filter, map} from \"rxjs\";\nimport {NhRouteInfo, NhRouteNavigationItem, NhRouterSetupService} from \"./nh-router-setup.service\";\nimport {NhRouterLink} from \"../models/misc.models\";\n\nexport const NH_ROUTER_ROOT_ROUTES = new InjectionToken<() => Routes>('NhRouterRootRoutes');\nexport const NH_ROUTER_LANGUAGE_CHANGE_METHOD = new InjectionToken<(newLanguage: string) => Promise<void>>('NhRouterLanguageChangeMethod');\n\nexport class NhBreadCrumbItem {\n text!: string;\n nhRouterLink?: NhRouterLink;\n\n public constructor(init?: Partial<NhBreadCrumbItem>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhBreadCrumb {\n renderedItems?: string;\n items: NhBreadCrumbItem[] = [];\n public constructor(init?: Partial<NhBreadCrumb>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhSitemapEntryItem {\n language!: string;\n isPrimary!: boolean;\n path!: string;\n\n public constructor(init?: Partial<NhSitemapEntryItem>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhSitemapEntry {\n id!: string;\n items: NhSitemapEntryItem[] = [];\n public constructor(init?: Partial<NhSitemapEntry>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhSitemap {\n entries: NhSitemapEntry[] = [];\n public constructor(init?: Partial<NhSitemap>) {\n Object.assign(this, init);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhRouterService {\n private activeLanguage: string = '';\n private lastKnownActivatedRoute: ActivatedRoute | undefined;\n\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private translateService: TranslateService,\n private routerSetupService: NhRouterSetupService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n @Optional() @Inject(NH_ROUTER_ROOT_ROUTES) private getRootRoutes: () => Routes,\n @Optional() @Inject(NH_ROUTER_LANGUAGE_CHANGE_METHOD) private changeLanguageMethod: (newLanguage: string) => Promise<void>,\n @Optional() @Inject(REQUEST_CONTEXT) private requestContext: any\n ) {\n this.activeLanguage = this.translateService.currentLang;\n this.translateService.onLangChange.subscribe((langChangeEvent) => {\n this.activeLanguage = langChangeEvent.lang;\n });\n\n this.router.events.pipe(\n filter((event) => (event instanceof NavigationEnd || (event instanceof NavigationSkipped && event.code === NavigationSkippedCode.IgnoredSameUrlNavigation))),\n map(() => NhRouterSetupService.rootRoute(this.activatedRoute)),\n filter((route: ActivatedRoute) => route.outlet === 'primary'),\n ).subscribe(async (route: ActivatedRoute) => {\n this.lastKnownActivatedRoute = route;\n });\n\n if(this?.requestContext?.response) {\n this.router.events.subscribe(async event => {\n if (event instanceof NavigationStart\n && this.moduleConfig.language !== this.moduleConfig.defaultLanguage) {\n if(event.url?.trim() === '/' || event.url?.trim() === '') {\n this.redirectServer(`/${this.moduleConfig.language}`);\n }\n }\n });\n }\n\n }\n\n public redirectServer(location: string, statusCode: number = 301) {\n if(this?.requestContext?.response) {\n (<any>this?.requestContext?.response).setHeader('Location', location);\n (<any>this?.requestContext?.response).statusCode = statusCode;\n }\n }\n\n public platformSpecificRedirect(location: NhRouterLink, statusCode: number = 301) {\n if(this?.requestContext?.response) {\n\n const url = this.createUrlForNavigationItem(location);\n console.log('Server side redirect: ' + url);\n this.redirectServer(url, statusCode);\n } else {\n this.navigate(location).then();\n }\n }\n\n public notFound() {\n this.platformSpecificRedirect({id: 'home/not-found'}, 301);\n }\n\n getActivatedNhLink(activatedRouteSnapshot:ActivatedRouteSnapshot) {\n if(activatedRouteSnapshot === null) {\n throw new Error('activatedRouteSnapshot is null');\n }\n\n let id = '';\n const nhRouteData = activatedRouteSnapshot.data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n\n if(nhRouteData.parentIds) {\n for(let i = 1; i < nhRouteData.parentIds!.length; i++) {\n id += nhRouteData.parentIds![i] + '/';\n }\n }\n\n const nhRouterLink = <NhRouterLink>{\n id: id + nhRouteData.id,\n arguments: activatedRouteSnapshot.params,\n }\n return nhRouterLink;\n }\n\n createUrlForNavigationItem(nhRouterLink: NhRouterLink): string {\n return this.routerSetupService.createUrlForNavigationItem(nhRouterLink);\n }\n\n async navigate(nhRouterLink: NhRouterLink, navigationExtras?: NavigationExtras) {\n if(nhRouterLink && nhRouterLink.language && nhRouterLink.language !== this.translateService.currentLang) {\n if(!this.changeLanguageMethod) {\n throw new Error('Nh_ROUTER_LANGUAGE_CHANGE_METHOD is not defined via DI injection token.');\n }\n // We detected a language change, change the language and reload the routes so navigation works.\n await this.changeLanguageMethod(nhRouterLink.language);\n this.reloadRoutes();\n }\n\n const url = this.createUrlForNavigationItem(nhRouterLink);\n\n return await this.router.navigate([url], navigationExtras);\n }\n\n createUrlTree(nhRouterLink: NhRouterLink, navigationExtras?: UrlCreationOptions): UrlTree {\n const plainUrlTree = this.router.parseUrl(this.createUrlForNavigationItem(nhRouterLink));\n const url = this.router.serializeUrl(plainUrlTree);\n\n return this.router.createUrlTree([url], navigationExtras);\n }\n\n parseUrl(nhRouterLink: NhRouterLink, navigationExtras?: UrlCreationOptions): UrlTree {\n const plainUrlTree = this.router.parseUrl(this.createUrlForNavigationItem(nhRouterLink));\n const url = this.router.serializeUrl(plainUrlTree);\n\n return this.router.createUrlTree([url], navigationExtras);\n }\n\n serializeUrl(nhRouterLink: NhRouterLink, navigationExtras?: UrlCreationOptions): string {\n const url = this.router.serializeUrl(this.parseUrl(nhRouterLink));\n return this.router.serializeUrl(this.router.createUrlTree([url], navigationExtras));\n }\n\n async getRoutePathForLanguage(activatedRouteSnapshot: ActivatedRouteSnapshot|null, language: string): Promise<string> {\n //\n // TODO: due to route params, we want to access an API service that reads our current url and returns it from (for example) the Sitemap API.\n //\n if(activatedRouteSnapshot === null) {\n throw new Error('activatedRouteSnapshot is null');\n }\n\n let newRoutePaths: string[] = [];\n do {\n if((activatedRouteSnapshot?.url?.length ?? 0) < 1) {\n activatedRouteSnapshot = activatedRouteSnapshot?.parent;\n continue;\n }\n\n let path = '';\n if(activatedRouteSnapshot.data && activatedRouteSnapshot.data[NhRouterSetupService.Nh_ROUTE_DATA_KEY]) {\n const nhRouteData = activatedRouteSnapshot.data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n const route = nhRouteData.routes.find(r => r.language === language);\n path = route!.path;\n } else {\n path = activatedRouteSnapshot.routeConfig?.path || '';\n }\n\n // Resolve route params (/some/path/:id/:name) back to actual values\n const sourceRouteParamsMap = activatedRouteSnapshot.paramMap;\n if(sourceRouteParamsMap.keys.length > 0) {\n for(const key of sourceRouteParamsMap.keys) {\n path = path.replace(`:${key}`, sourceRouteParamsMap.get(key) ?? '');\n }\n }\n\n const pathParts = path.split('/').map(x => x?.trim()).filter(x => (x?.length ?? 0) > 0).reverse();\n for(const pathPart of pathParts) {\n newRoutePaths.unshift(pathPart);\n }\n activatedRouteSnapshot = activatedRouteSnapshot.parent;\n } while (activatedRouteSnapshot?.parent);\n\n newRoutePaths = newRoutePaths.filter(x => (x.length ?? 0) > 0);\n\n if(language !== this.routerSetupService.getDefaultLanguage()) {\n if(newRoutePaths.length > 0 && newRoutePaths[0] !== language) {\n newRoutePaths.unshift(language);\n } else {\n newRoutePaths.unshift(language);\n }\n }\n\n const newUrlTree = this.router.createUrlTree(newRoutePaths, {\n queryParams: activatedRouteSnapshot!.queryParams,\n fragment: activatedRouteSnapshot?.fragment ?? undefined\n });\n\n let url = this.router.serializeUrl(newUrlTree);\n const rootRouteDefaultLanguageDetected = newRoutePaths.length === 0;\n if(rootRouteDefaultLanguageDetected) {\n url = url.split('/')[0];\n }\n\n return url;\n }\n\n async navigateToLanguage(language: string): Promise<void> {\n if(!this.lastKnownActivatedRoute?.snapshot) {\n throw new Error('lastKnownActivatedRoute is null');\n }\n\n const routePath = await this.getRoutePathForLanguage(this.lastKnownActivatedRoute?.snapshot, language);\n this.reloadRoutes();\n await this.router.navigateByUrl(routePath);\n }\n\n public reloadRoutes(){\n if(!this.getRootRoutes) {\n throw new Error('Nh_ROUTER_ROOT_ROUTES is not defined via DI injection token.');\n }\n\n const newRootRoutes = this.getRootRoutes();\n this.router.resetConfig(newRootRoutes);\n }\n\n //\n // DO NOT USE -> USE THE ONE FROM THE APP-PAGE SERVICE\n //\n async getBreadcrumb(activatedRouteSnapshot: ActivatedRouteSnapshot|null): Promise<NhBreadCrumb> {\n const breadCrumb = new NhBreadCrumb({\n items: []\n });\n\n if(activatedRouteSnapshot === null) {\n throw new Error('activatedRouteSnapshot is null');\n }\n\n do {\n if((activatedRouteSnapshot?.url?.length ?? 0) < 1) {\n activatedRouteSnapshot = activatedRouteSnapshot?.parent;\n continue;\n }\n\n const nhLink = this.getActivatedNhLink(activatedRouteSnapshot);\n if(nhLink.id === 'root') {\n break;\n }\n\n const crumbHref = await this.getRoutePathForLanguage(activatedRouteSnapshot, this.activeLanguage);\n\n if(!crumbHref) {\n activatedRouteSnapshot = activatedRouteSnapshot?.parent;\n continue;\n }\n\n let crumbText = '';\n if(activatedRouteSnapshot.data && activatedRouteSnapshot.data['breadcrumb']) {\n crumbText = this.translateService.instant(activatedRouteSnapshot.data['breadcrumb'] as string);\n } else {\n crumbText = nhLink.id;\n }\n\n const crumb = new NhBreadCrumbItem({\n nhRouterLink: nhLink,\n text: crumbText ?? '',\n });\n\n breadCrumb.items.unshift(crumb);\n\n activatedRouteSnapshot = activatedRouteSnapshot.parent;\n } while (activatedRouteSnapshot?.parent);\n\n return breadCrumb;\n }\n\n createSitemap() {\n const sitemap: NhSitemap = new NhSitemap();\n\n const processRoute = (item: NhRouteNavigationItem) => {\n const nhRouteInfo = (<any>item.route).data[NhRouterSetupService.Nh_ROUTE_DATA_KEY] as NhRouteInfo;\n\n if(nhRouteInfo.excludeFromSitemap) {\n return;\n }\n\n for(const route of nhRouteInfo.routes) {\n if((item.children?.length ?? 0) < 1 && (item.route.component || item.route.loadComponent)) {\n\n if(!this.moduleConfig.supportedLanguages?.find(x => x === route.language)) {\n continue;\n }\n\n let path = this.createUrlForNavigationItem({ id: item.id, language: route.language });\n\n if(path.includes(':') || path.includes('?') || item.id === 'root/home/sitemap-xml') {\n continue;\n }\n\n if(!path.startsWith('/')) {\n path = '/' + path;\n }\n\n let sitemapEntry = sitemap.entries.find(x => x.id === item.id);\n if(!sitemapEntry) {\n sitemapEntry = new NhSitemapEntry({ id: item.id });\n sitemap.entries.push(sitemapEntry);\n }\n\n let sitemapEntryItem = sitemapEntry.items.find(x => x.language === route.language);\n if(!sitemapEntryItem) {\n sitemapEntryItem = new NhSitemapEntryItem({\n path: path,\n language: route.language,\n isPrimary: route.language === this.routerSetupService.getDefaultLanguage()\n });\n\n sitemapEntry.items.push(sitemapEntryItem);\n }\n }\n }\n\n for(const child of item.children) {\n processRoute(child);\n }\n };\n\n const rootRoute = this.routerSetupService.getRootRouteNavigationItem();\n processRoute(rootRoute);\n\n return sitemap;\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n ApplicationRef,\n Inject,\n Injectable,\n OnDestroy,\n PLATFORM_ID\n} from \"@angular/core\";\n\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {Subject, Subscription} from \"rxjs\";\nimport {NhConfigCommonService} from \"./nh-config.service\";\nimport {ActivatedRouteSnapshot, NavigationExtras} from \"@angular/router\";\nimport {NhJsonLdData, NhJsonLdService} from \"./nh-json-ld.service\";\nimport { NhAuthorization } from \"../models/auth.models\";\nimport {NhCommonConfig, NhCommonConfigChanged, NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhAppService} from \"./nh-app.service\";\nimport {NhAuthService} from \"./nh-auth.service\";\nimport {NhTitleService} from \"./nh-title.service\";\nimport {NhBreadCrumb, NhRouterService} from \"./nh-router.service\";\nimport {NhMetaService} from \"./nh-meta.service\";\nimport {NhRouterLink} from \"../models/misc.models\";\n\nexport class NhPageSettings {\n title: string = '';\n description: string = '';\n jsonLdData: NhJsonLdData = new NhJsonLdData();\n breadCrumbOverrideText?: (currentText: string) => string;\n pageData: any;\n\n public constructor(init?: Partial<NhPageSettings>) {\n Object.assign(this, init);\n }\n}\n\nexport class TypedNhPageSettings<TPageData> extends NhPageSettings {\n override pageData: TPageData|undefined;\n\n public constructor(init?: Partial<TypedNhPageSettings<TPageData>>) {\n super();\n Object.assign(this, init);\n }\n}\n\nconst Nh_PAGE_SETTINGS_TRANSFER_STATE_KEY = 'Nh_PAGE_SETTINGS_TRANSFER_STATE_KEY';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhPageService implements OnDestroy {\n private $appRefIsStable: Subscription|undefined;\n private $auth: Subscription;\n private authorization: NhAuthorization | undefined;\n private $config: Subscription;\n private config: NhCommonConfig = this.configService.getConfig();\n public activePageSettings: NhPageSettings = new NhPageSettings();\n private didRestoreTransferState: boolean = false;\n public readonly breadcrumbUpdateRequest = new Subject<void>();\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n private moduleConfig: NhCommonModuleConfig,\n private appRef: ApplicationRef,\n private nhAppService: NhAppService,\n private configService: NhConfigCommonService,\n private authService: NhAuthService,\n private translateService: TranslateService,\n private titleService: NhTitleService,\n private metaService: NhMetaService,\n private jsonLdService: NhJsonLdService,\n private routerService: NhRouterService\n ) {\n this.$config = this.configService.configSubject.subscribe(async (configChanged) => {\n await this.configChanged(configChanged);\n });\n\n this.$auth = this.authService.authSubject.subscribe(async (authorization) => {\n await this.authChanged(authorization);\n });\n\n this.$appRefIsStable = this.appRef.isStable.subscribe((isStable) => {\n if(isStable) {\n if(this.isPlatformServer()) {\n this.updateTransferState();\n } else {\n // If No page with transferstate is loaded initially, mark as restored to (extra) prevent storing the state on a new page.\n // We only want to restore the initial render from server on first page.\n if(!this.didRestoreTransferState) {\n this.didRestoreTransferState = true;\n }\n }\n }\n });\n }\n\n public restoreTransferState() {\n if(this.isPlatformBrowser() && !this.didRestoreTransferState) {\n const activePageSettings = this.nhAppService.getStateTransferData(Nh_PAGE_SETTINGS_TRANSFER_STATE_KEY);\n if(activePageSettings) {\n this.activePageSettings = <any>activePageSettings;\n }\n this.didRestoreTransferState = true;\n }\n }\n\n public updateTransferState() {\n this.nhAppService.setStateTransferData(Nh_PAGE_SETTINGS_TRANSFER_STATE_KEY, this.activePageSettings);\n }\n\n isPlatformServer(): boolean {\n return this.nhAppService.isPlatformServer();\n }\n\n isPlatformBrowser(): boolean {\n return this.nhAppService.isPlatformBrowser();\n }\n\n isPlatformBrowserInitial() {\n return this.nhAppService.isPlatformBrowserInitial();\n }\n\n originatedFromServer(): boolean {\n return this.nhAppService.originatedFromServer();\n }\n\n isAppStable(): boolean {\n return this.nhAppService.isAppStable();\n }\n\n async ngOnDestroy() {\n await this.clear();\n this.$config?.unsubscribe();\n this.$auth?.unsubscribe();\n this.$appRefIsStable?.unsubscribe();\n }\n\n private async authChanged(authorization: NhAuthorization | undefined) {\n this.authorization = authorization;\n await this.flushMeta(this.activePageSettings);\n }\n\n private async configChanged(configChanged: NhCommonConfigChanged) {\n this.config = configChanged.config;\n await this.flushMeta(this.activePageSettings);\n }\n\n async clear() {\n this.activePageSettings = new NhPageSettings();\n await this.flushMeta(this.activePageSettings);\n this.requestBreadcrumbUpdate();\n }\n\n async flushMeta(activePageSettings: NhPageSettings) {\n this.setTitle(activePageSettings.title);\n this.setDescription(activePageSettings.description);\n this.metaService.updateTag({property: 'og:type', content: 'website'});\n this.metaService.updateTag({name: 'twitter:card', content: 'summary'});\n this.metaService.updateTag({property: 'og:site_name', content: this.moduleConfig.appDisplayName });\n this.metaService.updateTag({property: 'og:locale', content: this.config?.languageCode});\n\n this.jsonLdService.clear();\n\n if(activePageSettings.jsonLdData) {\n for(const jsonLdDataItem of activePageSettings.jsonLdData.items) {\n this.jsonLdService.addItem(jsonLdDataItem);\n }\n }\n }\n\n setTitle(title: string) {\n this.titleService.setTitle(title);\n this.metaService.updateTag({\n property: 'og:title',\n content: title\n });\n }\n\n setDescription(description: string) {\n this.metaService.updateTag({ name: 'description', content: description });\n this.metaService.updateTag({property: 'og:description', content: description});\n }\n\n // async addMetaTag(description: string) {\n // this.metaService.(description);\n // }\n\n setBreadcrumbOverrideText(breadcrumbOverrideText?: (currentText: string) => string) {\n this.activePageSettings.breadCrumbOverrideText = breadcrumbOverrideText;\n }\n\n requestBreadcrumbUpdate() {\n this.breadcrumbUpdateRequest.next();\n }\n\n async getBreadcrumb(activatedRouteSnapshot: ActivatedRouteSnapshot|null): Promise<NhBreadCrumb> {\n const breadCrumb = await this.routerService.getBreadcrumb(activatedRouteSnapshot);\n if(this.activePageSettings?.breadCrumbOverrideText) {\n const item = breadCrumb.items[breadCrumb.items.length - 1];\n const text = this.activePageSettings.breadCrumbOverrideText(item.text);\n item.text = text\n }\n\n return breadCrumb;\n }\n\n navigateTo(nhRouterLink: NhRouterLink, navigationExtras?: NavigationExtras) {\n return this.routerService.navigate(nhRouterLink, navigationExtras);\n }\n\n navigateTo404NotFound(navigationExtras?: NavigationExtras) {\n return this.routerService.navigate({ id: 'root.home.not-found' }, navigationExtras);\n }\n}\n","import { HttpClient, HttpEvent, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport {lastValueFrom, map, Observable, share, Subscription} from 'rxjs';\nimport {\n CollectionHttpRequestOptions,\n CollectionHttpResponse,\n HttpDownloadRequestOptions,\n HttpRequestOptions,\n ICollectionHttpRequestOptions, IHttpDownloadRequestOptions, IHttpRequestOptions,\n ISimpleCollectionHttpRequestOptions, SimpleCollectionHttpRequestOptions, SimpleCollectionHttpResponse\n} from '../models/http.models';\nimport { NhApiUtil } from '../util/nh-api-util';\nimport { NhAuthService } from './nh-auth.service';\nimport {NhCommonModuleConfig} from \"../models/config.models\";\nimport {NhAuthorization} from \"../models/auth.models\";\nimport {TaskResult} from \"../models/misc.models\";\nimport {decode as msgpackDecode} from \"@msgpack/msgpack\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhApiService implements OnDestroy {\n authSubscription: Subscription;\n authorization: NhAuthorization|undefined;\n baseUrl: string|undefined;\n\n public static ActiveDivisionHeaderKey = 'X-NH-ActiveDivisionId';\n\n private static defaultHeaders: HttpHeaders = new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'Accept': 'application/json; charset=utf-8',\n });\n\n private static skipObjectParamParseKeys: string[] = [\n 'headers',\n 'params',\n 'observe',\n 'reportProgress',\n 'responseType',\n 'withCredentials'\n ];\n\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private httpClient: HttpClient,\n private authService: NhAuthService\n ) {\n this.baseUrl = this.moduleConfig.apiBaseUrl;\n this.authSubscription = this.authService.authSubject.subscribe(async (authorization) => {\n await this.authChanged(authorization);\n });\n }\n\n private async authChanged(authorization: NhAuthorization|undefined) {\n this.authorization = authorization;\n }\n\n ngOnDestroy(): void {\n if(this.authSubscription) {\n this.authSubscription.unsubscribe();\n }\n }\n\n public static taskResultFromResponse(response: any): TaskResult<any> {\n return NhApiUtil.taskResultFromResponse(response);\n }\n\n public prepareHeaders(httpHeaders?: HttpHeaders): HttpHeaders {\n\n httpHeaders = httpHeaders || new HttpHeaders();\n\n let header = 'Content-Type';\n if (!httpHeaders.has(header) && NhApiService.defaultHeaders.has(header)) {\n httpHeaders = httpHeaders.set(header, NhApiService.defaultHeaders.get(header) || '');\n } else if (httpHeaders.has(header) && (httpHeaders.get(header)) === '') {\n httpHeaders = httpHeaders.delete(header);\n }\n\n header = 'Accept';\n if (!httpHeaders.has(header) && NhApiService.defaultHeaders.has(header)) {\n httpHeaders = httpHeaders.set(header, NhApiService.defaultHeaders.get(header) || '');\n }\n\n return httpHeaders;\n }\n\n public setCultureHttpParam(httpParams?: HttpParams): HttpParams {\n httpParams = httpParams || new HttpParams();\n\n if (httpParams.get('language') === null) {\n httpParams = httpParams.set('language', this.moduleConfig.language);\n }\n\n httpParams = httpParams.set('culture', this.moduleConfig.culture);\n\n return httpParams;\n }\n\n // TODO: dit is een front-end API functie voor non management requesten\n public setObjectParams(httpParams: HttpParams, requestOptions?: HttpRequestOptions|HttpDownloadRequestOptions): HttpParams {\n const customPropertyNames = Object.getOwnPropertyNames(requestOptions).filter(x => x).filter(x => !NhApiService.skipObjectParamParseKeys.find(c => c === x));\n for (const propertyName of customPropertyNames) {\n if (!httpParams.get(propertyName)) {\n const propertyValue = (requestOptions as any)[propertyName];\n if (Array.isArray(propertyValue)) {\n for (let i = 0; i < propertyValue.length; i++) {\n const arrayValue = propertyValue[i];\n httpParams = httpParams.set(propertyName + '[' + i + ']', arrayValue);\n }\n } else {\n httpParams = httpParams.set(propertyName, propertyValue);\n }\n }\n }\n return httpParams;\n }\n\n public async task<T>(observable$: Observable<T>): Promise<TaskResult<T>> {\n const taskResult = new TaskResult<T>();\n\n try {\n taskResult.data = await lastValueFrom(observable$);\n }catch (ex) {\n const errResult = NhApiService.taskResultFromResponse(ex);\n errResult.copyTo(taskResult);\n }\n\n return taskResult;\n }\n\n public get<T>(url: string, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.get<T>(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public getText(url: string, requestOptions?: IHttpRequestOptions): Observable<string> {\n requestOptions = requestOptions || new HttpRequestOptions();\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.get(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'text',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public getResult<T>(url: string, requestOptions?: IHttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.get<T>(url, requestOptions));\n }\n\n public getCollection<T>(url: string, requestOptions?: ICollectionHttpRequestOptions): Observable<CollectionHttpResponse<T>> {\n return this.getCollectionT<T, ICollectionHttpRequestOptions, CollectionHttpResponse<T>>(url, requestOptions);\n }\n\n public getCollectionT<T, TRequestOptions extends ICollectionHttpRequestOptions, TCollectionResult extends CollectionHttpResponse<T>>(\n url: string,\n requestOptions?: TRequestOptions\n ): Observable<TCollectionResult>\n {\n requestOptions = requestOptions || <TRequestOptions><unknown>(new CollectionHttpRequestOptions());\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n httpParams = httpParams.set('page', requestOptions.page);\n httpParams = httpParams.set('itemsPerPage', requestOptions.itemsPerPage);\n\n if (null != requestOptions.orderBy && requestOptions.orderBy.length > 0) {\n httpParams = httpParams.set('orderBy', JSON.stringify(requestOptions.orderBy));\n }\n\n if (null != requestOptions.filter && requestOptions.filter.length > 0) {\n httpParams = httpParams.set('filter', JSON.stringify(requestOptions.filter));\n }\n\n if ((requestOptions.search?.length ?? 0) > 0) {\n httpParams = httpParams.set('search', requestOptions.search ?? '');\n }\n\n const customPropertyNames = Object.getOwnPropertyNames(requestOptions).filter(x => x);\n for (const propertyName of customPropertyNames) {\n if(NhApiService.skipObjectParamParseKeys.indexOf(propertyName) > -1) {\n continue;\n }\n if (!httpParams.get(propertyName)) {\n const propertyValue = (<any>requestOptions)[propertyName];\n if (Array.isArray(propertyValue)) {\n for (let i = 0; i < propertyValue.length; i++) {\n const arrayValue = propertyValue[i];\n if(arrayValue === undefined) {\n continue;\n }\n httpParams = httpParams.set(propertyName + '[' + i + ']', arrayValue);\n }\n } else {\n if(propertyValue === undefined) {\n continue;\n }\n httpParams = httpParams.set(propertyName, propertyValue);\n }\n }\n }\n\n switch (requestOptions.responseType) {\n case 'arraybuffer':\n return this.httpClient.get(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'arraybuffer',\n withCredentials: requestOptions.withCredentials\n })\n .pipe(map(r => msgpackDecode(r) as TCollectionResult))\n .pipe(share());\n default:\n return this.httpClient.get<TCollectionResult>(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n }\n\n public getSimpleCollection<T>(url: string, requestOptions?: ISimpleCollectionHttpRequestOptions): Observable<SimpleCollectionHttpResponse<T>> {\n return this.getSimpleCollectionT<T, ISimpleCollectionHttpRequestOptions, SimpleCollectionHttpResponse<T>>(url, requestOptions);\n }\n\n public getSimpleCollectionT<T, TRequestOptions extends ISimpleCollectionHttpRequestOptions, TCollectionResult extends SimpleCollectionHttpResponse<T>>(url: string, requestOptions?: TRequestOptions): Observable<TCollectionResult> {\n requestOptions = requestOptions || <TRequestOptions><unknown>(new CollectionHttpRequestOptions());\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n httpParams = httpParams.set('page', requestOptions.page);\n httpParams = httpParams.set('itemsPerPage', requestOptions.itemsPerPage);\n\n return this.httpClient.get<TCollectionResult>(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public download(url: string, requestOptions?: IHttpDownloadRequestOptions): Observable<Blob> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.get(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public downloadResponse(url: string, requestOptions?: IHttpDownloadRequestOptions): Observable<HttpResponse<Blob>> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.get(url, {\n headers: headers,\n observe: 'response',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public postDownload(url: string, body: any, requestOptions?: IHttpDownloadRequestOptions): Observable<Blob> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.post(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public postDownloadResponse(url: string, body: any, requestOptions?: IHttpDownloadRequestOptions): Observable<HttpResponse<Blob>> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.post(url, body, {\n headers: headers,\n observe: 'response',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public putDownload(url: string, body: any, requestOptions?: IHttpDownloadRequestOptions): Observable<Blob> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.put(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public putDownloadResponse(url: string, body: any, requestOptions?: IHttpDownloadRequestOptions): Observable<HttpResponse<Blob>> {\n requestOptions = requestOptions || new HttpDownloadRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.put(url, body, {\n headers: headers,\n observe: 'response',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'blob',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public delete<T>(url: string, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.delete<T>(url, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public async deleteResult<T>(url: string, requestOptions?: HttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.delete<T>(url, requestOptions));\n }\n\n public deleteWithBody<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.delete<T>(url, {\n body: body,\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n\n public post<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.post<T>(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public async postResult<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.post<T>(url, body,requestOptions));\n }\n\n public put<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.put<T>(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public async putResult<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.put<T>(url, body,requestOptions));\n }\n\n public patch<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<T> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n //httpParams = this.setObjectParams(httpParams, requestOptions);\n\n return this.httpClient.patch<T>(url, body, {\n headers: headers,\n observe: 'body',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n\n public async patchResult<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Promise<TaskResult<T>> {\n return this.task(this.patch<T>(url, body,requestOptions));\n }\n\n public postHttpEvent<T>(url: string, body: any, requestOptions?: IHttpRequestOptions): Observable<HttpEvent<T>> {\n requestOptions = requestOptions || new HttpRequestOptions();\n requestOptions.withCredentials = true;\n let httpParams = requestOptions.params || new HttpParams();\n let headers = requestOptions.headers || new HttpHeaders();\n\n if(requestOptions.withCredentials === undefined) {\n requestOptions.withCredentials = true;\n }\n\n headers = this.prepareHeaders(headers);\n httpParams = this.setCultureHttpParam(httpParams);\n\n return this.httpClient.post<T>(url, body, {\n headers: headers,\n observe: 'events',\n params: httpParams,\n reportProgress: requestOptions.reportProgress,\n responseType: 'json',\n withCredentials: requestOptions.withCredentials\n }).pipe(share());\n }\n}\n","import {Directive, ViewContainerRef} from \"@angular/core\";\n\n@Directive({\n selector: '[nhModalContent]',\n standalone: false\n})\nexport class NhModalContentDirective {\n constructor(public viewContainerRef: ViewContainerRef) {\n }\n}\n","import { Component, Input, input } from '@angular/core';\n\n@Component({\n selector: 'nh-loader',\n templateUrl: './component.html',\n styleUrls: ['./component.scss'],\n standalone: false\n})\nexport class NhLoaderComponent {\n clicked = false;\n active = false;\n closed = false;\n\n readonly dark = input(false);\n readonly hasBackdrop = input(true);\n readonly backdropTransparent = input(true);\n private _containerClass: string = '';\n @Input() set containerClass(value: string[] | string) {\n this._containerClass = Array.isArray(value) ? value.join(' ') : value;\n }\n get containerClass() {\n return this._containerClass;\n }\n\n constructor(\n ) {\n\n }\n}\n","<div #loader [class]=\"containerClass\" [class.dark]=\"dark()\" [class.backdrop]=\"hasBackdrop()\" [class.noTrans]=\"!backdropTransparent()\">\n <div class=\"spinner\"></div>\n</div>\n","import {DOCUMENT} from \"@angular/common\";\n\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ComponentRef,\n Directive,\n ElementRef,\n Inject,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Type,\n output,\n viewChild, inject\n} from '@angular/core';\nimport {INhModalComponent, NhModalComponentRef} from \"../../services/nh-modal.service\";\nimport {NhModalContentDirective} from \"../../directives/nh-modal.directives\";\n\nexport class NhModalComponentClosed {\n public constructor(init?: Partial<NhModalComponentClosed>) {\n Object.assign(this, init);\n }\n}\n\n@Directive()\nexport class NhModalComponentImpl<C> implements\n INhModalComponent<C>,\n OnChanges,\n OnInit,\n AfterContentInit,\n AfterViewInit,\n OnDestroy {\n protected modalComponentRef: NhModalComponentRef<C>|undefined;\n\n setModalComponentRef(ref: NhModalComponentRef<C>) {\n this.modalComponentRef = ref;\n }\n\n close() {\n this.modalComponentRef?.close();\n }\n\n ngOnChanges(): void {\n this.appOnChanges().then();\n }\n\n ngOnInit(): void {\n this.appOnInit().then();\n }\n\n ngAfterContentInit(): void {\n this.appAfterContentInit().then();\n }\n\n ngAfterViewInit(): void {\n this.appAfterViewInit().then();\n }\n\n ngOnDestroy(): void {\n this.appOnDestroy().then();\n }\n\n appOnChanges(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterContentInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterViewInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnDestroy(): Promise<void> {\n return Promise.resolve();\n }\n}\n\n@Component({\n selector: 'nh-modal',\n templateUrl: './component.html',\n styleUrls: ['./component.scss'],\n standalone: false\n})\nexport class NhModalComponent<C> implements OnInit, OnDestroy, AfterViewInit {\n readonly modalContent = viewChild.required(NhModalContentDirective);\n readonly modalHolder = viewChild.required<ElementRef>('modalHolder');\n readonly modalBackdrop = viewChild.required<ElementRef>('modalBackdrop');\n readonly modal = viewChild.required<ElementRef>('modal');\n\n readonly closed = output<NhModalComponentClosed>();\n public componentRef: ComponentRef<C> | undefined;\n private modalComponentRef: NhModalComponentRef<C> | undefined;\n private document: Document = inject(DOCUMENT);\n title: string = '';\n modalHolderClasses: string = '';\n modalClasses: string = '';\n modalHeaderClasses: string = '';\n modalBodyClasses: string = '';\n isLoading: boolean = false;\n closeable: boolean = true;\n\n ngOnInit() {\n this.document.body.classList.add('nh-modal-open');\n }\n\n ngAfterViewInit() {\n //Timeout makes sure everything is rendered because browsers needs a little time and if no timeout the animation wil stutter\n setTimeout(() => {\n if(this.modal()) {\n this.modal().nativeElement.style.transform = '';\n }\n\n if(this.modalBackdrop()) {\n this.modalBackdrop().nativeElement.style.opacity = 0.85;\n }\n }, 50);\n }\n\n setModalComponentRef(modalComponentRef: NhModalComponentRef<C>) {\n this.modalComponentRef = modalComponentRef;\n }\n\n setContentComponent(componentType: Type<C>) {\n const viewContainerRef = this.modalContent().viewContainerRef;\n viewContainerRef.clear();\n this.componentRef = viewContainerRef.createComponent<C>(componentType);\n }\n\n\n close() {\n const modalBackdrop = this.modalBackdrop();\n modalBackdrop.nativeElement.style.transition = 'opacity 0.5s';\n const modal = this.modal();\n modal.nativeElement.style.transition = 'transform 0.5s';\n modalBackdrop.nativeElement.style.opacity = 0;\n\n //When mobile, use smooth scrolldown close, on desktop just disappear\n if (window.innerWidth < 920) {\n this.modalHolder().nativeElement.style.pointerEvents = 'none';\n modal.nativeElement.style.transform = 'translateY(100vh)';\n this.document.body.classList.remove('nh-modal-open');\n } else {\n modal.nativeElement.style.transition = 'opacity 0.5s';\n modal.nativeElement.style.opacity = '0';\n }\n setTimeout(() => {\n const data = new NhModalComponentClosed({});\n this.closed.emit(data);\n this.modalComponentRef?.close();\n }, 500);\n }\n\n ngOnDestroy() {\n this.document.body.classList.remove('nh-modal-open');\n this.componentRef?.destroy();\n }\n\n modalSlideStart(event: MouseEvent) {\n }\n\n modalTouchStart(event: TouchEvent) {\n }\n\n modalTouchEnd(event: TouchEvent) {\n this.modalScrollStop();\n }\n\n modalTouchMove(event: TouchEvent) {\n this.modalScrollMove(event.touches[0].clientY);\n }\n\n modalMouseUp(event: MouseEvent) {\n this.modalScrollStop();\n }\n\n modalScrollStop() {\n\n }\n\n modalMouseMove(event: MouseEvent) {\n this.modalScrollMove(event.clientY);\n }\n\n modalScrollMove(y: number) {\n\n }\n}\n","<div #modalHolder (touchmove)=\"modalTouchMove($event)\" (touchcancel)=\"modalTouchEnd($event)\"\n (touchend)=\"modalTouchEnd($event)\" (mousemove)=\"modalMouseMove($event)\" (mouseup)=\"modalMouseUp($event)\"\n role=\"dialog\" class=\"nh-modal-holder\" [ngClass]=\"modalHolderClasses\">\n <div #modalBackdrop class=\"nh-modal-backdrop\"></div>\n <div #modal class=\"nh-modal\" [ngClass]=\"modalClasses\" style=\"transform: translateY(100vh);\">\n <div class=\"nh-modal-header\" [ngClass]=\"modalHeaderClasses\">\n <h3>{{ title }}</h3>\n @if (closeable) {\n <button (click)=\"close()\" class=\"close-nh-modal bg-white small font-grey\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path fill=\"black\"\n d=\"M312.1 375c9.369 9.369 9.369 24.57 0 33.94s-24.57 9.369-33.94 0L160 289.9l-119 119c-9.369 9.369-24.57 9.369-33.94 0s-9.369-24.57 0-33.94L126.1 256L7.027 136.1c-9.369-9.369-9.369-24.57 0-33.94s24.57-9.369 33.94 0L160 222.1l119-119c9.369-9.369 24.57-9.369 33.94 0s9.369 24.57 0 33.94L193.9 256L312.1 375z\"/>\n </svg>\n </button>\n }\n </div>\n <div class=\"nh-modal-body\" [ngClass]=\"modalBodyClasses\">\n @if (isLoading) {\n <nh-loader></nh-loader>\n }\n <div (touchstart)=\"modalTouchStart($event)\" (mousedown)=\"modalSlideStart($event)\" class=\"nh-modal-slider\"></div>\n <ng-template nhModalContent></ng-template>\n </div>\n </div>\n </div>\n","import {Component, HostListener, Input, OnInit, input, output} from '@angular/core';\nimport {INhModalComponent, NhModalComponentRef, NhModalService} from \"../../services/nh-modal.service\";\nimport { SafeHtml } from '@angular/platform-browser';\nimport {TaskResult} from \"../../models/misc.models\";\nimport {NhApiUtil} from \"../../util/nh-api-util\";\n\n@Component({\n selector: 'nh-confirm-modal',\n templateUrl: './component.html',\n styleUrls: ['./component.scss'],\n standalone: false\n})\nexport class NhModalConfirmComponent implements OnInit, INhModalComponent<NhModalConfirmComponent> {\n @Input() message: string|SafeHtml = '';\n @Input() btnConfirmText: string = 'general.yes';\n @Input() btnCancelText: string = 'general.no';\n @Input() modalClass: ''|'success'|'danger'|'warning'|'info' = '';\n @Input() btnConfirmDisabled: boolean = false;\n @Input() btnCancelDisabled: boolean = false;\n @Input() allBtnsDisabled: boolean = false;\n @Input() showLoader: boolean = false;\n @Input() errorResult: TaskResult<any>|undefined;\n\n readonly confirmed = output();\n\n modalComponentRef: NhModalComponentRef<NhModalConfirmComponent>|undefined;\n setModalComponentRef(ref: NhModalComponentRef<NhModalConfirmComponent>): void {\n this.modalComponentRef = ref;\n }\n\n @HostListener('document:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.stopImmediatePropagation();\n this.closeDialog({});\n }\n }\n\n ngOnInit() { }\n\n closeDialog(event?: any) {\n this.modalComponentRef?.close();\n }\n\n @Input() onConfirm: (() => void) | (() => Promise<void>) = () => {};\n @Input() onCancel: (() => void) | (() => Promise<void>) = () => {};\n\n readonly value = input<any>();\n\n async confirm() {\n this.errorResult = undefined;\n await this.executeDelegate(this.onConfirm);\n }\n\n async cancel() {\n this.errorResult = undefined;\n await this.executeDelegate(this.onCancel);\n }\n\n async executeDelegate(func: (() => void) | (() => Promise<void>)) {\n try {\n await func();\n } catch (ex) {\n this.errorResult = NhApiUtil.taskResultFromResponse(ex);\n if(this.errorResult.isSuccess) {\n this.errorResult.addError('', 'An unknown error occurred');\n }\n }\n }\n}\n","<div class=\"{{modalClass}}\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p [innerHTML]=\"message\"></p>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n @if (errorResult && !errorResult?.isSuccess) {\n <div class=\"alert alert-danger\" role=\"alert\">\n <b>Er is een fout opgetreden</b>\n <ul>\n @for (resultItem of errorResult.items; track resultItem) {\n @for (resultItemErrorMsg of resultItem.errorMessages; track resultItemErrorMsg) {\n <li>{{ resultItemErrorMsg }}</li>\n }\n }\n </ul>\n </div>\n }\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <button [disabled]=\"allBtnsDisabled || btnCancelDisabled\" class=\"btn btn-danger me-2\" (click)=\"cancel()\">{{ btnCancelText | translate }}</button>\n <button [disabled]=\"allBtnsDisabled || btnConfirmDisabled\" class=\"btn btn-success\" (click)=\"confirm()\">{{ btnConfirmText | translate }}</button>\n </div>\n </div>\n</div>\n","import {ComponentRef, EventEmitter, Injectable, Type, ViewContainerRef} from '@angular/core';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {NhModalComponent, NhModalComponentClosed} from \"../components/nh-modal/component\";\nimport {NhModalConfirmComponent} from \"../components/nh-confirm-modal/component\";\n\nexport interface INhModalComponent<C> {\n setModalComponentRef(ref: NhModalComponentRef<C>): void;\n}\n\nexport class NhModalComponentRef<C> {\n public readonly closed: EventEmitter<NhModalComponentClosed> = new EventEmitter<NhModalComponentClosed>();\n\n private _onCloses: Subscription[] = [];\n\n onClose(callback: () => void) {\n this._onCloses.push(this.closed.subscribe(callback));\n }\n\n close() {\n if (this.componentRef && this.componentRef.instance) {\n this.componentRef.destroy();\n this.closed.emit();\n }\n for (let item of this._onCloses) {\n item.unsubscribe();\n }\n }\n\n get modalComponent(): NhModalComponent<C> {\n return this.componentRef.instance;\n }\n\n get contentComponent(): C | undefined {\n return this.modalComponent.componentRef?.instance;\n }\n\n constructor(public componentRef: ComponentRef<NhModalComponent<C>>) {\n }\n}\n\nexport class NhModalOptions {\n title: string = '';\n modalHolderClasses: string = '';\n modalClasses: string = '';\n modalHeaderClasses: string = '';\n isLoading: boolean = false;\n closeable: boolean = true;\n modalBodyClasses: string = '';\n viewContainerRef?: ViewContainerRef;\n\n public constructor(init?: Partial<NhModalOptions>) {\n Object.assign(this, init);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhModalService {\n private viewContainerRef: ViewContainerRef | undefined;\n modalRefs: NhModalComponentRef<any>[] = [];\n modalRefsOpen: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n constructor() {\n }\n\n setViewContainerRef(viewContainerRef: ViewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n\n confirm(onConfirm: (() => void) | (() => Promise<any>), onClose?: (() => void), options?: NhModalOptions) {\n return this.confirmDialog('',onConfirm,onClose,options);\n }\n\n confirmDialog(text: string,onConfirm: (() => void) | (() => Promise<any>), onClose?: (() => void), options?: NhModalOptions) {\n const modal = this.open(NhModalConfirmComponent, options);\n modal.contentComponent!.message = text;\n const onConfirm$ = modal.contentComponent!.confirmed.subscribe(() => {\n Promise.resolve(onConfirm()).then();\n });\n const onClose$ = modal.closed.subscribe(() => {\n if (onClose) {\n onClose();\n }\n onConfirm$.unsubscribe();\n onClose$.unsubscribe();\n });\n return modal;\n }\n\n\n /**\n * Create a modal dialog with a given component as content\n * @param componentType Type of the component to show in the modal\n * @param options Options for the modal\n * @param inputs Inputs to set on {@link componentType}\n */\n open<C extends INhModalComponent<C>>(componentType: Type<C>, options?: Partial<NhModalOptions>, inputs: Record<string, any> = {}): NhModalComponentRef<C> {\n const viewContainerRef = options?.viewContainerRef ?? this.viewContainerRef;\n\n if (!viewContainerRef) {\n throw 'View container ref missing';\n }\n\n options = options ?? new NhModalOptions();\n\n const modalComponentRef = viewContainerRef.createComponent<NhModalComponent<C>>(NhModalComponent);\n\n\n try {\n modalComponentRef.instance.setContentComponent(componentType);\n // Set inputs on the component\n if (inputs) {\n for (let key in inputs) {\n modalComponentRef.instance.componentRef?.setInput(key, inputs[key]);\n }\n }\n\n } catch (ex: any) {\n if (ex?.name === 'NullInjectorError') {\n console.error('Injection failed, possibly because the component is not declared in the root module. Try to provide the ViewContainerRef in the options of the open method.');\n }\n throw ex;\n }\n\n\n const modalRef = new NhModalComponentRef(modalComponentRef);\n\n modalComponentRef.instance.setModalComponentRef(modalRef);\n\n modalRef.modalComponent.title = options.title ?? '';\n modalRef.modalComponent.modalHolderClasses = options.modalHolderClasses ?? '';\n modalRef.modalComponent.modalClasses = options.modalClasses ?? '';\n modalRef.modalComponent.modalBodyClasses = options.modalBodyClasses ?? '';\n modalRef.modalComponent.modalHeaderClasses = options.modalHeaderClasses ?? '';\n modalRef.modalComponent.closeable = options.closeable ?? true;\n\n const modalRefClosed = () => {\n this.modalRefs = this.modalRefs.filter(x => x !== modalRef);\n if (this.modalRefs.length === 0) {\n this.modalRefsOpen.next(false);\n }\n };\n\n modalRef.modalComponent.closed.subscribe(modalRefClosed);\n modalRef.closed.subscribe(modalRefClosed);\n modalRef.contentComponent?.setModalComponentRef(modalRef);\n\n this.modalRefs.push(modalRef);\n this.modalRefsOpen.next(true);\n\n return modalRef;\n }\n\n close(componentRef: NhModalComponentRef<any>) {\n if (componentRef) {\n // First trigger the modal close, so that the animation and such is triggered. The actual close method will be called via the modalComponent\n componentRef.modalComponent.close();\n this.modalRefs = this.modalRefs.filter(x => x !== componentRef);\n if (this.modalRefs.length === 0) {\n this.modalRefsOpen.next(false);\n }\n }\n }\n\n closeLatest() {\n const latestModalRef = this.modalRefs[this.modalRefs.length - 1];\n this.close(latestModalRef);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\nimport {TaskResultItem} from \"../models/misc.models\";\n\n@Injectable()\nexport class NhTaskResultFormValidationService {\n public validate(formGroup: UntypedFormGroup, errors: TaskResultItem[]) {\n if (errors.length === 0) {\n return;\n }\n\n if (!formGroup.controls['']) {\n formGroup.addControl('', new UntypedFormControl());\n }\n\n for (const field of errors) {\n this.addError(formGroup, field.name, field.errorMessages);\n }\n }\n\n public addError(formGroup: UntypedFormGroup, controlName: string|undefined|null, errorMessages: string[]) {\n if (!formGroup || !errorMessages || errorMessages.length === 0) {\n return;\n }\n\n if(!controlName || controlName?.trim() === '') {\n controlName = '';\n }\n\n if (!formGroup.controls || !formGroup.controls['']) {\n formGroup.addControl('', new UntypedFormControl());\n }\n\n const formControl = this.getFormControlFromFormGroup(formGroup, controlName)\n ?? this.getFormControlFromFormGroup(formGroup, '');\n\n if(!formControl) {\n return;\n }\n\n if (!formControl.errors) {\n formControl.setErrors({ remote: errorMessages });\n } else {\n if ((formControl.errors['remote']?.length ?? 0) < 1) {\n formControl.errors['remote'] = [];\n }\n\n formControl.errors['remote'].concat(errorMessages);\n }\n }\n\n private getFormControlFromFormGroup(formGroup: UntypedFormGroup, formControlKey: string): UntypedFormControl {\n const separator = '.';\n let formControl: UntypedFormControl | undefined\n\n for (let key in formGroup.controls) {\n if (formGroup. controls.hasOwnProperty(key)) {\n if (key.toLowerCase() === formControlKey.toLowerCase()) {\n formControl = <UntypedFormControl>formGroup.controls[key];\n break;\n }\n }\n }\n\n if (!formControl) {\n formControl = <UntypedFormControl>formGroup.controls[\"\"];\n }\n\n return formControl\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {Inject, Injectable, Renderer2, RendererFactory2} from '@angular/core';\nimport {KeyValue} from \"@angular/common\";\nimport {PreConnectUrlItem, PreLoadUrlItem} from \"../models/misc.models\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhHeadService {\n private renderer: Renderer2;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n rendererFactory: RendererFactory2\n ) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n addPreConnectUrl(url: PreConnectUrlItem) {\n const connectParts = [];\n\n if(url.preConnect) {\n connectParts.push('preconnect');\n }\n\n if(url.dnsPrefetch) {\n connectParts.push('dns-prefetch');\n }\n\n const rel = connectParts.join(' ').trim();\n\n this.addLinkTag(rel, url.url, url.withCrossOrigin, url.crossOrigin, url.additionalAttributes);\n }\n\n addPreLoadUrl(url: PreLoadUrlItem) {\n const additionalAttributes: KeyValue<string, string>[] = url.additionalAttributes ?? [];\n\n additionalAttributes.push({key: 'as', value: url.as});\n additionalAttributes.push({key: 'type', value: url.type});\n\n this.addLinkTag('preload', url.url, url.withCrossOrigin, url.crossOrigin, additionalAttributes);\n }\n\n addLinkTag(rel: string, href: string, withCrossOrigin: boolean = false, crossOrigin?: string, additionalAttributes: KeyValue<string, string>[] = []) {\n const link = this.renderer.createElement('link');\n\n if(additionalAttributes) {\n for(const additionalAttribute of additionalAttributes) {\n this.renderer.setAttribute(link, additionalAttribute.key, additionalAttribute.value);\n }\n }\n\n this.renderer.setAttribute(link, 'rel', rel);\n this.renderer.setAttribute(link, 'href', href);\n\n if(withCrossOrigin) {\n this.renderer.setAttribute(link, 'crossorigin', crossOrigin ? crossOrigin : '');\n }\n\n\n this.addElementToHead(link);\n }\n\n addElementToHead(element: HTMLElement) {\n this.renderer.appendChild(this.document.head, element);\n }\n}\n","import {HostListener, Injectable, NgZone} from \"@angular/core\";\nimport {BehaviorSubject} from \"rxjs\";\n\n@Injectable()\nexport class NhInternetConnectionService {\n private connectionSubject = new BehaviorSubject<boolean>(navigator.onLine);\n public internetIsConnected = this.connectionSubject.asObservable();\n constructor(private zone: NgZone) {\n window.addEventListener(\"online\", (event) => {\n this.zone.run(() => {\n this.connectionSubject.next(true);\n });\n });\n\n window.addEventListener(\"offline\", (event) => {\n this.zone.run(() => {\n this.connectionSubject.next(false);\n });\n });\n }\n}\n","import {Inject, Injectable, makeStateKey, PLATFORM_ID, StateKey, TransferState} from '@angular/core';\nimport {isPlatformServer} from \"@angular/common\";\nimport {NhCommonModuleConfig} from \"../models/config.models\";\n@Injectable({\n providedIn: 'root',\n})\nexport class NhServerService {\n private static readonly DID_INIT_BY_SERVER_STATE_KEY: StateKey<boolean> = makeStateKey<boolean>('Nh-DID_INIT_BY_SERVER');\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: Object,\n private moduleConfig: NhCommonModuleConfig,\n private transferState: TransferState\n ) {\n if(isPlatformServer(this.platformId)) {\n this.transferState.set(NhServerService.DID_INIT_BY_SERVER_STATE_KEY, true);\n }\n }\n\n public didInitByServer(): boolean {\n return !isPlatformServer(this.platformId)\n && this.transferState.hasKey(NhServerService.DID_INIT_BY_SERVER_STATE_KEY)\n && this.transferState.get(NhServerService.DID_INIT_BY_SERVER_STATE_KEY, false);\n }\n}\n","import {Injectable} from \"@angular/core\";\nimport {UntypedFormGroup, UntypedFormControl, AbstractControl} from \"@angular/forms\";\n\nexport interface IServerSideFormValidationService {\n}\n\n@Injectable()\nexport class NhServerSideFormValidationService implements IServerSideFormValidationService {\n\n public validate<T extends IServerSideFormValidator>(formValidatorType: {\n new(): T;\n }, formGroup: UntypedFormGroup, objectToValidate: any): void {\n\n let formValidator = new formValidatorType();\n let formValidationResult: FormValidationResult = formValidator.validate(objectToValidate);\n\n if (!formValidationResult.hasErrors()) {\n return;\n }\n\n if (!formGroup.controls[\"\"]) {\n formGroup.addControl(\"\", new UntypedFormControl());\n }\n\n let formErrors = formValidationResult.getErrors();\n for (let i = 0; i < formErrors.length; i++) {\n let formError = formErrors[i];\n let formControl: UntypedFormControl = formValidator.getFormControlFromFormGroup(formGroup, formError.getFieldName());\n\n if (formControl == null) {\n formControl = <UntypedFormControl>formGroup.controls[\"\"];\n }\n\n let shouldDisableAfterSet = false;\n if(formControl.disabled) { // Disabled form controls cannot have errors set\n formControl.enable();\n shouldDisableAfterSet = true;\n }\n\n if (!formControl.errors) {\n formControl.setErrors({remote: formError.getErrorMessages()});\n } else {\n if (!formControl.errors['remote'] || formControl.errors['remote'].length < 1) {\n formControl.errors['remote'] = [];\n }\n\n for (let formErrorMessage of formError.getErrorMessages()) {\n formControl.errors['remote'].push(formErrorMessage);\n }\n }\n\n if(shouldDisableAfterSet) {\n //formControl.disable();\n }\n }\n }\n}\n\nexport interface IServerSideFormValidator {\n getFormControlFromFormGroup(formGroup: UntypedFormGroup, formControlKey: string): UntypedFormControl;\n\n validate(object: any): FormValidationResult;\n}\n\nexport class AspMvcFormServerSideFormValidator implements IServerSideFormValidator {\n public getFormControlFromFormGroup(formGroup: UntypedFormGroup, formControlKey: string): UntypedFormControl {\n const separator = '.';\n let formControl: UntypedFormControl|null = null;\n const formControlKeySplit = formControlKey.split(separator);\n\n if (formControlKeySplit.length == 1) {\n for (let key in formGroup.controls) {\n if (formGroup.controls.hasOwnProperty(key)) {\n if (key.toLowerCase() == formControlKey.toLowerCase()) {\n formControl = <UntypedFormControl>formGroup.controls[key];\n break;\n }\n }\n }\n } else if (formControlKeySplit.length > 1) {\n const baseKey = formControlKeySplit[0];\n const subKey = formControlKeySplit.filter(x => x !== baseKey).join(separator);\n\n for (let key in formGroup.controls) {\n if (formGroup.controls.hasOwnProperty(key)) {\n if (key.toLowerCase() == baseKey.toLowerCase()) {\n if (typeof formGroup.controls[key] === 'object') {\n formControl = this.getFormControlFromFormGroup(<UntypedFormGroup>formGroup.controls[baseKey], subKey);\n }\n\n break;\n }\n }\n }\n }\n\n if (formControl == null) {\n formControl = <UntypedFormControl>formGroup.controls[\"\"];\n }\n\n return formControl\n }\n\n public validate(object: any): FormValidationResult {\n let validationResult = new FormValidationResult();\n\n if (object && object != null) {\n if (object.error_description !== undefined) {\n validationResult.addErrorByFieldName(\"\", object.error_description);\n }\n\n if (object.ModelState) {\n for (let key in object.ModelState) {\n\n if(!object.ModelState.hasOwnProperty(key)) {\n continue;\n }\n let errors = object.ModelState[key];\n for (let subKey in errors) {\n validationResult.addErrorByFieldName(key.replace(\"model.\", \"\"), errors[subKey]);\n }\n }\n }\n\n if (object.error) {\n for (let key in object.error) {\n if(!object.error.hasOwnProperty(key)) {\n continue;\n }\n\n let errors = object.error[key];\n for (let subKey in errors) {\n if(!errors.hasOwnProperty(subKey)) {\n continue;\n }if(!errors.hasOwnProperty(subKey)) {\n continue;\n }\n\n validationResult.addErrorByFieldName(key, errors[subKey]);\n }\n }\n }\n\n if (object.Message !== undefined) {\n validationResult.addErrorByFieldName(\"\", object.Message);\n }\n }\n\n return validationResult;\n }\n}\n\nexport interface IFormValidationResult {\n}\n\nexport class FormValidationResult implements IFormValidationResult {\n private formErrors: Array<FormError> = [];\n\n public getErrors(): Array<FormError> {\n return this.formErrors;\n }\n\n public hasErrors(): boolean {\n return (this.getErrors().length > 0);\n }\n\n public hasErrorForFieldName(fieldName: string): boolean {\n return (this.getErrorForFieldName(fieldName) !== null);\n }\n\n public getErrorForFieldName(fieldName: string): FormError|null {\n let formError: FormError|null = null;\n\n for (let i = 0; i < this.formErrors.length; i++) {\n if (this.formErrors[i].getFieldName() == fieldName) {\n formError = this.formErrors[i];\n }\n }\n\n return formError;\n }\n\n public addErrorByFieldName(fieldName: string, errorMessage: string): void {\n let formError: FormError|null = this.getErrorForFieldName(fieldName);\n\n if (formError == null) {\n formError = new FormError(fieldName);\n this.formErrors.push(formError);\n }\n\n formError.addErrorMessage(errorMessage);\n }\n\n constructor() {\n }\n}\n\nexport interface IFormError {\n}\n\nexport class FormError implements IFormError {\n private fieldName: string = '';\n private errorMessages: Array<string> = [];\n\n public getErrorMessages(): Array<string> {\n return this.errorMessages;\n }\n\n public getFieldName(): string {\n return this.fieldName;\n }\n\n public addErrorMessage(errorMessage: string): void {\n this.errorMessages.push(errorMessage);\n }\n\n private setFieldName(fieldName: string): void {\n if (!fieldName || fieldName == null) {\n fieldName = '';\n }\n\n this.fieldName = fieldName;\n }\n\n constructor(fieldName: string) {\n this.setFieldName(fieldName);\n }\n}\n","\nimport { inject } from \"@angular/core\";\nimport {Observable} from \"rxjs\";\nimport { NhAuthService } from \"./nh-auth.service\";\nimport { NhApiService } from \"./nh-api.service\";\nimport { NhCommonModuleConfig } from \"../models/config.models\";\nimport {CollectionHttpRequestOptions, CollectionHttpResponse, HttpRequestOptions} from \"../models/http.models\";\n\nexport abstract class NhBaseApiService {\n protected authService: NhAuthService = inject(NhAuthService);\n protected moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n protected apiService: NhApiService = inject(NhApiService);\n\n protected readonly baseUrl: string;\n\n protected constructor(suffix: string) {\n this.baseUrl = this.moduleConfig.apiBaseUrl + '/' + suffix;\n }\n\n public getCollection<T>(options: CollectionHttpRequestOptions): Observable<CollectionHttpResponse<T>> {\n return this.apiService.getCollection<T>(this.baseUrl, options);\n }\n\n public get<T>(id: string, requestOptions?: HttpRequestOptions): Observable<T> {\n return this.apiService.get<T>(`${this.baseUrl}/${id}`, requestOptions);\n }\n\n public create<T>(item: any, requestOptions?: HttpRequestOptions): Observable<T> {\n return this.apiService.post<T>(`${this.baseUrl}`, item, requestOptions);\n }\n\n public update<T>(id: string, item: any, requestOptions?: HttpRequestOptions): Observable<T> {\n return this.apiService.put<T>(`${this.baseUrl}/${id}`, item, requestOptions);\n }\n\n public updatePartial<T>(id: string, partialUpdate: any, requestOptions?: HttpRequestOptions): Observable<T> {\n return this.apiService.patch<T>(`${this.baseUrl}/${id}`, partialUpdate, requestOptions);\n }\n\n public delete(id: string, requestOptions?: HttpRequestOptions): Observable<any> {\n return this.apiService.delete<any>(`${this.baseUrl}/${id}`, requestOptions);\n }\n}\n","import {inject, Injectable, OnDestroy} from '@angular/core';\nimport {HttpErrorResponse} from '@angular/common/http';\n\nimport {BehaviorSubject, EMPTY, exhaustMap, from, Observable, Subscription, switchMap, timer} from \"rxjs\";\nimport { NhAuthService } from './nh-auth.service';\nimport {NhCommonModuleConfig} from \"../models/config.models\";\nimport { NhApiService } from './nh-api.service';\nimport {\n NhUserNotification,\n NhUserNotificationCollectionHttpRequestOptions,\n NhUserNotificationOverview,\n NhUserNotificationState\n} from '../models/user-notification.models';\nimport {NhAppService} from \"./nh-app.service\";\nimport {CollectionHttpResponse} from \"../models/http.models\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NhUserNotificationService implements OnDestroy {\n protected readonly baseUrl: string;\n protected authService: NhAuthService = inject(NhAuthService);\n protected moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n protected apiService: NhApiService = inject(NhApiService);\n\n protected runningSubject = new BehaviorSubject<boolean>(false);\n public readonly isRunning$: Observable<boolean> = this.runningSubject.asObservable();\n\n private task$: Observable<void>|undefined;\n private taskSub: Subscription|undefined;\n private runningConsumers = 0;\n\n private userNotificationState: NhUserNotificationState = new NhUserNotificationState();\n private readonly userNotificationStateSubject = new BehaviorSubject<NhUserNotificationState>(this.userNotificationState);\n public readonly userNotificationState$ = this.userNotificationStateSubject.asObservable();\n\n public get state(): NhUserNotificationState {\n return this.userNotificationState ?? new NhUserNotificationState();\n }\n\n get urlSuffix(): string {\n let suffix = this.moduleConfig.userNotification.urlSuffix;\n if(!suffix.startsWith('/')) {\n suffix = '/' + suffix;\n }\n\n return suffix;\n }\n\n public isRunning(): boolean {\n return this.runningSubject.value;\n }\n\n ngOnDestroy(): void {\n this.taskSub?.unsubscribe();\n this.runningSubject.complete();\n this.userNotificationStateSubject.complete();\n }\n\n protected constructor(\n private appService: NhAppService\n ) {\n if(!this.appService.isPlatformServer()) {\n this.task$ = this.runningSubject.pipe(\n switchMap(isRunning =>\n isRunning\n ? timer(0, this.moduleConfig.userNotification.pollingInterval).pipe(\n exhaustMap(() => from(this.doWork()))\n )\n : EMPTY\n )\n );\n\n this.taskSub = this.task$!.subscribe();\n }\n\n this.baseUrl = this.moduleConfig.apiBaseUrl + this.urlSuffix;\n }\n\n start(): void {\n this.runningConsumers++;\n if(this.runningConsumers === 1) {\n this.runningSubject.next(true);\n }\n }\n\n stop(): void {\n if(this.runningConsumers === 0) {\n return;\n }\n\n this.runningConsumers--;\n if(this.runningConsumers === 0) {\n this.runningSubject.next(false);\n }\n }\n\n protected async doWork() {\n // Notifications belong to a user; without a session every poll would only answer 401.\n if (!this.isRunning() || !this.authService.isAuthenticated()) {\n return;\n }\n\n await this.loadState();\n\n this.userNotificationStateSubject.next(this.userNotificationState);\n }\n\n public async loadState() {\n this.userNotificationState ??= new NhUserNotificationState();\n\n try {\n this.userNotificationState.overview = await this.getOverview().lastValueFrom();\n }catch (error) {\n // The session rejection interceptor handles a 401; it is not a notification failure.\n if (!(error instanceof HttpErrorResponse && error.status === 401)) {\n console.error('Error fetching user notification overview:', error);\n }\n }\n }\n\n protected getOverview(): Observable<NhUserNotificationOverview> {\n return this.apiService.get<NhUserNotificationOverview>(`${this.baseUrl}/overview`);\n }\n\n public getNotifications(requestOptions?: NhUserNotificationCollectionHttpRequestOptions): Observable<CollectionHttpResponse<NhUserNotification>> {\n requestOptions ??= new NhUserNotificationCollectionHttpRequestOptions();\n return this.apiService.getCollection<NhUserNotification>(`${this.baseUrl}`, requestOptions);\n }\n\n public markAsRead(id: string): Observable<unknown> {\n return this.apiService.put<unknown>(`${this.baseUrl}/${id}/MarkAsRead`, {});\n }\n\n public markAllAsRead(): Observable<unknown> {\n return this.apiService.put<unknown>(`${this.baseUrl}/MarkAllAsRead`, {});\n }\n\n public archive(id: string): Observable<unknown> {\n return this.apiService.put<unknown>(`${this.baseUrl}/${id}/archive`, {});\n }\n\n public archiveAll(): Observable<unknown> {\n return this.apiService.put<unknown>(`${this.baseUrl}/ArchiveAll`, {});\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NhBackgroundOperation,\n NhBackgroundOperationCollectionHttpRequestOptions\n} from '../models/background-operation.models';\nimport { CollectionHttpResponse, HttpRequestOptions } from '../models/http.models';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhApiService } from './nh-api.service';\n\n@Injectable({ providedIn: 'root' })\nexport class NhBackgroundOperationService {\n private readonly config = inject(NhCommonModuleConfig);\n private readonly api = inject(NhApiService);\n private readonly baseUrl = this.joinUrl(this.config.apiBaseUrl, this.config.backgroundOperations.urlSuffix);\n\n list(\n request = new NhBackgroundOperationCollectionHttpRequestOptions({\n page: 1,\n itemsPerPage: this.config.backgroundOperations.listPageSize\n })\n ): Observable<CollectionHttpResponse<NhBackgroundOperation>> {\n return this.api.getCollection<NhBackgroundOperation>(this.baseUrl, request);\n }\n\n get(operationId: string, eventsAfterSequence?: number): Observable<NhBackgroundOperation> {\n let params = new HttpParams();\n if (eventsAfterSequence !== undefined) {\n params = params.set('eventsAfterSequence', eventsAfterSequence.toString());\n }\n\n return this.api.get<NhBackgroundOperation>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}`,\n new HttpRequestOptions({ params })\n );\n }\n\n cancel(operationId: string): Observable<NhBackgroundOperation> {\n return this.api.post<NhBackgroundOperation>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}/cancel`,\n {}\n );\n }\n\n retry(operationId: string): Observable<NhBackgroundOperation> {\n return this.api.post<NhBackgroundOperation>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}/retry`,\n {}\n );\n }\n\n private joinUrl(base: string, suffix: string): string {\n return `${base.replace(/\\/$/, '')}/${suffix.replace(/^\\//, '')}`;\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NhBackgroundOperationAdministration,\n NhBackgroundOperationAdministrationCollectionHttpRequestOptions\n} from '../models/background-operation.models';\nimport { CollectionHttpResponse, HttpRequestOptions } from '../models/http.models';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhApiService } from './nh-api.service';\n\n/**\n * Client for the cross-owner background-operation administration endpoints. The\n * server enables them with `UseAdministrationPolicy` and authorizes every request\n * against that policy; the active division scopes the visible operations. The\n * administration view does not receive owner-scoped live updates, so refresh it\n * by polling.\n */\n@Injectable({ providedIn: 'root' })\nexport class NhBackgroundOperationAdministrationService {\n private readonly config = inject(NhCommonModuleConfig);\n private readonly api = inject(NhApiService);\n private readonly baseUrl = this.joinUrl(\n this.config.apiBaseUrl,\n this.config.backgroundOperations.administrationUrlSuffix\n );\n\n list(\n request = new NhBackgroundOperationAdministrationCollectionHttpRequestOptions({\n page: 1,\n itemsPerPage: this.config.backgroundOperations.listPageSize\n })\n ): Observable<CollectionHttpResponse<NhBackgroundOperationAdministration>> {\n return this.api.getCollection<NhBackgroundOperationAdministration>(this.baseUrl, request);\n }\n\n get(operationId: string, eventsAfterSequence?: number): Observable<NhBackgroundOperationAdministration> {\n let params = new HttpParams();\n if (eventsAfterSequence !== undefined) {\n params = params.set('eventsAfterSequence', eventsAfterSequence.toString());\n }\n\n return this.api.get<NhBackgroundOperationAdministration>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}`,\n new HttpRequestOptions({ params })\n );\n }\n\n cancel(operationId: string): Observable<NhBackgroundOperationAdministration> {\n return this.api.post<NhBackgroundOperationAdministration>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}/cancel`,\n {}\n );\n }\n\n retry(operationId: string): Observable<NhBackgroundOperationAdministration> {\n return this.api.post<NhBackgroundOperationAdministration>(\n `${this.baseUrl}/${encodeURIComponent(operationId)}/retry`,\n {}\n );\n }\n\n private joinUrl(base: string, suffix: string): string {\n return `${base.replace(/\\/$/, '')}/${suffix.replace(/^\\//, '')}`;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport type { HubConnection } from '@microsoft/signalr';\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\nimport { NhBackgroundOperationChanged } from '../models/background-operation.models';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhAppService } from './nh-app.service';\nimport { NhAuthService } from './nh-auth.service';\n\nexport type NhBackgroundOperationConnectionState =\n 'disabled' | 'disconnected' | 'connecting' | 'connected' | 'reconnecting';\n\n@Injectable({ providedIn: 'root' })\nexport class NhBackgroundOperationLiveUpdateService implements OnDestroy {\n private readonly changedSubject = new Subject<NhBackgroundOperationChanged>();\n private readonly resyncSubject = new Subject<void>();\n private readonly connectionStateSubject = new BehaviorSubject<NhBackgroundOperationConnectionState>('disconnected');\n private readonly authSubscription: Subscription;\n private connection?: HubConnection;\n private connectPromise?: Promise<void>;\n private reconnectTimer?: ReturnType<typeof setTimeout>;\n private consumers = 0;\n private authorizationScopeKey: string;\n\n readonly changed$: Observable<NhBackgroundOperationChanged> = this.changedSubject.asObservable();\n readonly resync$: Observable<void> = this.resyncSubject.asObservable();\n readonly connectionState$: Observable<NhBackgroundOperationConnectionState> = this.connectionStateSubject.asObservable();\n\n constructor(\n private readonly config: NhCommonModuleConfig,\n private readonly auth: NhAuthService,\n private readonly app: NhAppService\n ) {\n this.authorizationScopeKey = this.getAuthorizationScopeKey();\n\n if (!config.backgroundOperations.liveUpdatesEnabled || app.isPlatformServer()) {\n this.connectionStateSubject.next('disabled');\n }\n\n this.authSubscription = auth.authSubject.subscribe(() => {\n const nextScopeKey = this.getAuthorizationScopeKey();\n if (nextScopeKey === this.authorizationScopeKey) {\n return;\n }\n\n this.authorizationScopeKey = nextScopeKey;\n if (this.consumers > 0 && this.isEnabled()) {\n void this.restart();\n }\n });\n }\n\n start(): void {\n this.consumers++;\n if (this.consumers === 1 && this.isEnabled()) {\n void this.ensureConnected();\n }\n }\n\n stop(): void {\n if (this.consumers === 0) {\n return;\n }\n\n this.consumers--;\n if (this.consumers === 0) {\n this.clearReconnectTimer();\n void this.stopConnection();\n }\n }\n\n ngOnDestroy(): void {\n this.consumers = 0;\n this.clearReconnectTimer();\n this.authSubscription.unsubscribe();\n void this.stopConnection();\n this.changedSubject.complete();\n this.resyncSubject.complete();\n this.connectionStateSubject.complete();\n }\n\n private isEnabled(): boolean {\n return this.config.backgroundOperations.liveUpdatesEnabled && !this.app.isPlatformServer();\n }\n\n private async restart(): Promise<void> {\n await this.stopConnection();\n if (this.consumers > 0) {\n await this.ensureConnected();\n }\n }\n\n private ensureConnected(): Promise<void> {\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n if (this.connection?.state === 'Connected') {\n return Promise.resolve();\n }\n\n this.connectPromise = this.connectCore().finally(() => {\n this.connectPromise = undefined;\n });\n return this.connectPromise;\n }\n\n private async connectCore(): Promise<void> {\n this.connectionStateSubject.next('connecting');\n try {\n this.connection ??= await this.buildConnection();\n await this.connection.start();\n this.connectionStateSubject.next('connected');\n this.resyncSubject.next();\n } catch {\n this.connectionStateSubject.next('disconnected');\n this.scheduleReconnect();\n }\n }\n\n private async buildConnection(): Promise<HubConnection> {\n const signalR = await import('@microsoft/signalr');\n const baseHubUrl = this.joinUrl(\n this.config.backgroundOperations.hubBaseUrl || this.config.baseUrl || this.config.apiBaseUrl,\n this.config.backgroundOperations.hubUrlSuffix\n );\n const divisionId = this.auth.getAuthorization()?.activeDivision?.id;\n const hubUrl = divisionId\n ? this.appendQueryParameter(baseHubUrl, 'divisionId', divisionId)\n : baseHubUrl;\n const connection = new signalR.HubConnectionBuilder()\n .withUrl(hubUrl, {\n withCredentials: true,\n accessTokenFactory: () =>\n this.config.authType === 'header'\n ? this.auth.getAuthorization()?.token ?? ''\n : ''\n })\n .withAutomaticReconnect([0, 2000, 5000, 10000, 30000])\n .configureLogging(signalR.LogLevel.Warning)\n .build();\n\n connection.on('OperationChanged', (change: NhBackgroundOperationChanged) => {\n this.changedSubject.next(change);\n });\n connection.onreconnecting(() => this.connectionStateSubject.next('reconnecting'));\n connection.onreconnected(() => {\n this.connectionStateSubject.next('connected');\n this.resyncSubject.next();\n });\n connection.onclose(() => {\n this.connectionStateSubject.next('disconnected');\n this.scheduleReconnect();\n });\n return connection;\n }\n\n private async stopConnection(): Promise<void> {\n const connection = this.connection;\n this.connection = undefined;\n this.connectPromise = undefined;\n if (connection && connection.state !== 'Disconnected') {\n try {\n await connection.stop();\n } catch {\n // A failed transport is already disconnected from the application's\n // perspective. Polling remains the durable fallback.\n }\n }\n\n if (this.isEnabled()) {\n this.connectionStateSubject.next('disconnected');\n }\n }\n\n private scheduleReconnect(): void {\n if (this.consumers === 0 || this.reconnectTimer || !this.isEnabled()) {\n return;\n }\n\n this.reconnectTimer = setTimeout(() => {\n this.reconnectTimer = undefined;\n void this.ensureConnected();\n }, 5000);\n }\n\n private clearReconnectTimer(): void {\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = undefined;\n }\n }\n\n private joinUrl(base: string, suffix: string): string {\n return `${base.replace(/\\/$/, '')}/${suffix.replace(/^\\//, '')}`;\n }\n\n private appendQueryParameter(url: string, name: string, value: string): string {\n const separator = url.includes('?') ? '&' : '?';\n return `${url}${separator}${encodeURIComponent(name)}=${encodeURIComponent(value)}`;\n }\n\n private getAuthorizationScopeKey(): string {\n const authorization = this.auth.getAuthorization();\n return `${authorization?.user?.id ?? 'anonymous'}:${authorization?.activeDivision?.id ?? 'global'}`;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport {\n BehaviorSubject,\n catchError,\n defer,\n EMPTY,\n exhaustMap,\n finalize,\n map,\n Observable,\n of,\n Subscription,\n timer\n} from 'rxjs';\nimport {\n NhBackgroundOperation,\n NhBackgroundOperationChanged,\n NhBackgroundOperationCollectionHttpRequestOptions\n} from '../models/background-operation.models';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhBackgroundOperationLiveUpdateService } from './nh-background-operation-live-update.service';\nimport { NhBackgroundOperationService } from './nh-background-operation.service';\nimport { NhAuthService } from './nh-auth.service';\nimport { INhAuthorization } from '../models/auth.models';\n\n@Injectable({ providedIn: 'root' })\nexport class NhBackgroundOperationStore implements OnDestroy {\n private readonly operationsSubject = new BehaviorSubject<ReadonlyMap<string, NhBackgroundOperation>>(new Map());\n private readonly errorSubject = new BehaviorSubject<unknown | undefined>(undefined);\n private readonly subscriptions = new Subscription();\n private readonly watchedIds = new Map<string, number>();\n private readonly refreshing = new Set<string>();\n private readonly refreshAgain = new Set<string>();\n private pollingSubscription?: Subscription;\n private consumers = 0;\n private scopeGeneration = 0;\n private scopeKey: string;\n\n readonly operations$: Observable<readonly NhBackgroundOperation[]> = this.operationsSubject.pipe(\n map(items =>\n [...items.values()].sort((left, right) =>\n right.lastModifiedDateTime.localeCompare(left.lastModifiedDateTime)\n )\n )\n );\n readonly error$: Observable<unknown | undefined> = this.errorSubject.asObservable();\n readonly connectionState$ = this.live.connectionState$;\n\n constructor(\n private readonly api: NhBackgroundOperationService,\n private readonly live: NhBackgroundOperationLiveUpdateService,\n private readonly config: NhCommonModuleConfig,\n private readonly auth: NhAuthService\n ) {\n this.scopeKey = this.getScopeKey(this.auth.getAuthorization());\n\n this.subscriptions.add(\n this.auth.authSubject.subscribe(authorization => this.onAuthorizationChanged(authorization))\n );\n this.subscriptions.add(\n this.live.changed$.subscribe(change => this.onLiveChange(change))\n );\n this.subscriptions.add(\n this.live.resync$.subscribe(() => {\n void this.refreshList();\n for (const id of this.watchedIds.keys()) {\n this.refreshOperation(id);\n }\n })\n );\n }\n\n watchAll(): Observable<readonly NhBackgroundOperation[]> {\n return defer(() => {\n this.start();\n return this.operations$.pipe(finalize(() => this.stop()));\n });\n }\n\n watch(operationId: string): Observable<NhBackgroundOperation | undefined> {\n return defer(() => {\n this.start();\n this.watchedIds.set(operationId, (this.watchedIds.get(operationId) ?? 0) + 1);\n this.refreshOperation(operationId);\n return this.operationsSubject.pipe(\n map(operations => operations.get(operationId)),\n finalize(() => {\n const watchers = (this.watchedIds.get(operationId) ?? 1) - 1;\n if (watchers <= 0) {\n this.watchedIds.delete(operationId);\n } else {\n this.watchedIds.set(operationId, watchers);\n }\n this.stop();\n })\n );\n });\n }\n\n start(): void {\n this.consumers++;\n if (this.consumers !== 1) {\n return;\n }\n\n this.live.start();\n this.pollingSubscription = timer(\n 0,\n Math.max(1000, this.config.backgroundOperations.pollingInterval)\n )\n .pipe(exhaustMap(() => this.loadSnapshot()))\n .subscribe();\n }\n\n stop(): void {\n if (this.consumers === 0) {\n return;\n }\n\n this.consumers--;\n if (this.consumers === 0) {\n this.pollingSubscription?.unsubscribe();\n this.pollingSubscription = undefined;\n this.live.stop();\n }\n }\n\n refreshList(): Promise<void> {\n return new Promise(resolve => this.loadList().subscribe({ complete: resolve }));\n }\n\n cancel(operationId: string): Observable<NhBackgroundOperation> {\n const generation = this.scopeGeneration;\n return this.api.cancel(operationId).pipe(\n map(operation => this.mergeDetail(operation, generation))\n );\n }\n\n retry(operationId: string): Observable<NhBackgroundOperation> {\n const generation = this.scopeGeneration;\n return this.api.retry(operationId).pipe(\n map(operation => this.mergeDetail(operation, generation))\n );\n }\n\n ngOnDestroy(): void {\n this.pollingSubscription?.unsubscribe();\n this.subscriptions.unsubscribe();\n if (this.consumers > 0) {\n this.consumers = 0;\n this.live.stop();\n }\n this.operationsSubject.complete();\n this.errorSubject.complete();\n }\n\n private loadList(): Observable<void> {\n const generation = this.scopeGeneration;\n const request = new NhBackgroundOperationCollectionHttpRequestOptions({\n page: 1,\n itemsPerPage: this.config.backgroundOperations.listPageSize\n });\n return this.api.list(request).pipe(\n map(response => {\n if (generation !== this.scopeGeneration) {\n return;\n }\n\n this.replaceListSnapshot(response.items ?? []);\n this.errorSubject.next(undefined);\n }),\n catchError(error => {\n if (generation === this.scopeGeneration) {\n this.errorSubject.next(error);\n }\n\n return of(undefined);\n })\n );\n }\n\n private loadSnapshot(): Observable<void> {\n return this.loadList().pipe(\n map(() => {\n for (const id of this.watchedIds.keys()) {\n this.refreshOperation(id);\n }\n })\n );\n }\n\n private onLiveChange(change: NhBackgroundOperationChanged): void {\n const existing = this.operationsSubject.value.get(change.operationId);\n if (existing && existing.version >= change.version && existing.latestEventSequence >= change.latestEventSequence) {\n return;\n }\n this.refreshOperation(change.operationId);\n }\n\n private refreshOperation(operationId: string): void {\n const generation = this.scopeGeneration;\n const refreshKey = `${generation}:${operationId}`;\n if (this.refreshing.has(refreshKey)) {\n this.refreshAgain.add(refreshKey);\n return;\n }\n\n this.refreshing.add(refreshKey);\n const existing = this.operationsSubject.value.get(operationId);\n this.api\n .get(operationId, existing?.latestEventSequence)\n .pipe(\n catchError(error => {\n if (generation === this.scopeGeneration) {\n if (this.shouldRemoveAfterError(error)) {\n this.removeOperation(operationId);\n }\n\n this.errorSubject.next(error);\n }\n\n return EMPTY;\n }),\n finalize(() => {\n this.refreshing.delete(refreshKey);\n if (this.refreshAgain.delete(refreshKey) && generation === this.scopeGeneration) {\n this.refreshOperation(operationId);\n }\n })\n )\n .subscribe(operation => {\n if (generation === this.scopeGeneration) {\n this.mergeDetail(operation, generation);\n this.errorSubject.next(undefined);\n }\n });\n }\n\n private mergeSummary(incoming: NhBackgroundOperation): NhBackgroundOperation {\n const existing = this.operationsSubject.value.get(incoming.id);\n if (existing && incoming.version < existing.version) {\n return existing;\n }\n\n const merged = existing\n ? {\n ...incoming,\n attempts: existing.attempts,\n steps: existing.steps,\n children: existing.children,\n events: existing.events\n }\n : incoming;\n this.setOperation(merged);\n return merged;\n }\n\n private mergeDetail(\n incoming: NhBackgroundOperation,\n generation: number = this.scopeGeneration\n ): NhBackgroundOperation {\n if (generation !== this.scopeGeneration) {\n return incoming;\n }\n\n const existing = this.operationsSubject.value.get(incoming.id);\n if (existing && incoming.version < existing.version) {\n return existing;\n }\n\n const events = new Map<number, typeof incoming.events[number]>();\n for (const event of existing?.events ?? []) {\n events.set(event.sequence, event);\n }\n for (const event of incoming.events ?? []) {\n events.set(event.sequence, event);\n }\n const merged = {\n ...incoming,\n events: [...events.values()].sort((left, right) => left.sequence - right.sequence)\n };\n this.setOperation(merged);\n return merged;\n }\n\n private setOperation(operation: NhBackgroundOperation): void {\n const operations = new Map(this.operationsSubject.value);\n operations.set(operation.id, operation);\n this.operationsSubject.next(operations);\n }\n\n private replaceListSnapshot(incoming: readonly NhBackgroundOperation[]): void {\n const current = this.operationsSubject.value;\n const next = new Map<string, NhBackgroundOperation>();\n\n for (const watchedId of this.watchedIds.keys()) {\n const watched = current.get(watchedId);\n if (watched) {\n next.set(watchedId, watched);\n }\n }\n\n for (const operation of incoming) {\n const existing = current.get(operation.id);\n if (existing && operation.version < existing.version) {\n next.set(operation.id, existing);\n continue;\n }\n\n next.set(\n operation.id,\n existing\n ? {\n ...operation,\n attempts: existing.attempts,\n steps: existing.steps,\n children: existing.children,\n events: existing.events\n }\n : operation\n );\n }\n\n this.operationsSubject.next(next);\n }\n\n private onAuthorizationChanged(authorization: INhAuthorization | undefined): void {\n const nextScopeKey = this.getScopeKey(authorization);\n if (nextScopeKey === this.scopeKey) {\n return;\n }\n\n this.scopeKey = nextScopeKey;\n this.scopeGeneration++;\n this.operationsSubject.next(new Map());\n this.errorSubject.next(undefined);\n\n if (this.consumers > 0) {\n void this.refreshList();\n for (const id of this.watchedIds.keys()) {\n this.refreshOperation(id);\n }\n }\n }\n\n private getScopeKey(authorization: INhAuthorization | undefined): string {\n const userId = authorization?.user?.id ?? 'anonymous';\n const divisionId = authorization?.activeDivision?.id ?? 'global';\n return `${userId}:${divisionId}`;\n }\n\n private shouldRemoveAfterError(error: unknown): boolean {\n return error instanceof HttpErrorResponse\n && [401, 403, 404].includes(error.status);\n }\n\n private removeOperation(operationId: string): void {\n if (!this.operationsSubject.value.has(operationId)) {\n return;\n }\n\n const operations = new Map(this.operationsSubject.value);\n operations.delete(operationId);\n this.operationsSubject.next(operations);\n }\n}\n","import {Inject, Injectable, OnDestroy, PLATFORM_ID, Renderer2, RendererFactory2} from \"@angular/core\";\nimport {NhAppService} from \"./nh-app.service\";\n\nexport class NhContextMenuItem {\n type: 'item'|'divider' = 'item';\n title: string = '';\n onClick: (event: any) => Promise<void> = () => Promise.resolve();\n\n public constructor(init?: Partial<NhContextMenuItem>) {\n Object.assign(this, init);\n }\n}\n\n// Create typedef for event to make sure it has clientX and clientY\nexport type NhContextEventWithCoordinates = { clientX: number; clientY: number};\n\nexport class NhContextMenu {\n x: number = 0;\n y: number = 0;\n items: NhContextMenuItem[] = [];\n\n static fromEvent(event?: NhContextEventWithCoordinates): NhContextMenu {\n const contextMenu = new NhContextMenu();\n if(event) {\n contextMenu.x = event.clientX;\n contextMenu.y = event.clientY;\n }\n\n return contextMenu;\n }\n\n withItems(items: NhContextMenuItem[]): NhContextMenu {\n this.items = items;\n return this;\n }\n\n public constructor(init?: Partial<NhContextMenu>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhContextMenuServiceConfig {\n zIndex: number = 8;\n public constructor(init?: Partial<NhContextMenuServiceConfig>) {\n Object.assign(this, init);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NhContextMenuService implements OnDestroy {\n public readonly config: NhContextMenuServiceConfig = new NhContextMenuServiceConfig();\n private renderer: Renderer2;\n private contextMenuElement: HTMLElement|undefined;\n private unlistenHandles: (() => void)[] = [];\n private globalListenCloseHandles: (() => void)[] = [];\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: Object,\n private readonly appService: NhAppService,\n private readonly rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n\n if(!this.appService.isPlatformServer()) {\n this.globalListenCloseHandles.push(this.renderer.listen('window', 'resize', (event) => {\n this.handleClose(event, true);\n }));\n\n this.globalListenCloseHandles.push(this.renderer.listen('window', 'scroll', (event) => {\n this.handleClose(event, true);\n }));\n\n this.globalListenCloseHandles.push(this.renderer.listen('document', 'click', (event) => {\n this.handleClose(event);\n }));\n\n this.globalListenCloseHandles.push(this.renderer.listen('document', 'keydown', (event) => {\n if(event?.key === \"Escape\") {\n this.handleClose(event);\n }\n }));\n }\n }\n\n ngOnDestroy() {\n this.cleanupContextMenu();\n if(this.globalListenCloseHandles) {\n for(const unlistenHandle of this.globalListenCloseHandles) {\n unlistenHandle();\n }\n }\n }\n\n private handleClose(event: any, force: boolean = false) {\n if(!this.isOpen() || !event) {\n return;\n }\n\n const targetElement = event.target as HTMLElement;\n if(!force && targetElement && targetElement.classList.contains('nh-context-menu-item')) {\n return;\n }\n\n this.cleanupContextMenu();\n }\n\n private isOpen() {\n return this.contextMenuElement !== undefined;\n }\n\n private getContainerElement(): HTMLElement {\n return document.getElementsByTagName('body')[0];\n }\n\n private cleanupContextMenu() {\n for(const unlistenHandle of this.unlistenHandles) {\n unlistenHandle();\n }\n\n this.unlistenHandles = [];\n\n if(this.contextMenuElement) {\n this.renderer.removeChild(this.getContainerElement(), this.contextMenuElement);\n this.contextMenuElement = undefined;\n }\n }\n\n open(contextMenu: NhContextMenu) {\n\n if(this.appService.isPlatformServer()) {\n return;\n }\n\n this.cleanupContextMenu();\n\n if(!contextMenu.items.any()) {\n return;\n }\n\n const containerElement = this.getContainerElement();\n this.contextMenuElement = this.renderer.createElement('ul') as HTMLElement;\n\n this.renderer.addClass(this.contextMenuElement, 'nh-context-menu');\n this.renderer.setStyle(this.contextMenuElement, 'top', contextMenu.y + 'px');\n this.renderer.setStyle(this.contextMenuElement, 'left', contextMenu.x + 'px');\n this.renderer.setStyle(this.contextMenuElement, 'position', 'absolute');\n this.renderer.setStyle(this.contextMenuElement, 'z-index', this.config.zIndex.toString());\n\n for(const item of contextMenu.items) {\n this.addMenuItem(this.contextMenuElement, item);\n }\n\n this.renderer.appendChild(containerElement, this.contextMenuElement);\n }\n\n close() {\n this.cleanupContextMenu();\n }\n\n private addMenuItem(contextMenuElement: HTMLElement, menuItem: NhContextMenuItem) {\n const menuItemElement = this.renderer.createElement('li') as HTMLElement;\n this.renderer.addClass(menuItemElement, 'nh-context-menu-item');\n\n if(menuItem.type === 'divider') {\n this.renderer.addClass(menuItemElement, 'divider');\n } else if (menuItem.type === 'item') {\n menuItemElement.innerHTML = menuItem.title;\n\n const unlistenHandle = this.renderer.listen(menuItemElement, 'click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if(menuItem.onClick) {\n menuItem.onClick(event).then(() => {\n this.cleanupContextMenu();\n });\n }\n });\n\n this.unlistenHandles.push(unlistenHandle);\n } else {\n\n }\n\n this.renderer.appendChild(contextMenuElement, menuItemElement);\n }\n}\n","import {inject, PLATFORM_ID} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {ActivatedRoute, ActivatedRouteSnapshot, Router, RouterStateSnapshot} from '@angular/router';\nimport {NhAuthService} from \"../services/nh-auth.service\";\nimport {Claim} from \"../models/auth.models\";\nimport {NhCommonModuleConfig} from \"../models/config.models\";\n\n\nexport const NhIsAuthenticatedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n const platformConfig = inject(NhCommonModuleConfig);\n\n const canActivate = authService.isAuthenticated();\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null;\n\n let url = '/';\n if(platformConfig?.authentication?.loginPath && platformConfig.authentication.loginPath.length > 0) {\n url = platformConfig.authentication.loginPath;\n }\n\n if (redirectUrl) {\n router.navigate([redirectUrl]);\n } else {\n router.navigate([url]);\n }\n }\n\n return canActivate;\n}\n\nexport const NhIsOneClaimGrantedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n\n const claims = route.data['oneMatchClaims'] as Array<Claim>;\n if (!claims || claims.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOneClaimGranted(claims);\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\n\nexport const NhIsOnePermissionGrantedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n\n const permissions = route.data['oneMatchPermissions'] as Array<string>;\n\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOnePermissionGranted(permissions);\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\nexport const NhIsAllPermissionsGrantedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n\n const permissions = route.data[\"allMatchPermissions\"] as Array<string>;\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isAllPermissionsGranted(permissions);\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data[\"isAuthenticatedGuardRedirectPath\"] as string|undefined|null ?? \"/\";\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\n\nexport const NhIsOneRoleGrantedGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authService = inject(NhAuthService);\n const router = inject(Router);\n const platformId = inject(PLATFORM_ID);\n\n const roles = route.data['oneMatchRoles'] as Array<string>;\n\n if (!roles || roles.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOneRoleGranted(roles);\n\n if (!canActivate && !isPlatformServer(platformId)) {\n const redirectUrl = route.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\nexport const IsOneActiveDivisionPermissionGrantedGuard = () => {\n const route = inject(ActivatedRoute);\n const authService = inject(NhAuthService);\n const router = inject(Router);\n\n const permissions = (<any>route)?.data['activeDivisionOneMatchPermissions'] as Array<string>;\n\n if (!permissions || permissions.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOneActiveDivisionPermissionGranted(permissions);\n\n if (!canActivate) {\n const redirectUrl = (<any>route)?.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\nexport const IsOneActiveDivisionRoleGrantedGuard = () => {\n const route = inject(ActivatedRoute);\n const authService = inject(NhAuthService);\n const router = inject(Router);\n\n const roles = (<any>route)?.data['activeDivisionOneMatchRoles'] as Array<string>;\n\n if (!roles || roles.length < 1) {\n return true;\n }\n\n const canActivate = authService.isAuthenticated() && authService.isOneActiveDivisionRoleGranted(roles);\n\n if (!canActivate) {\n const redirectUrl = (<any>route)?.data['isAuthenticatedGuardRedirectPath'] as string|undefined|null ?? '/';\n router.navigate([redirectUrl]);\n }\n\n return canActivate;\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'nhUrlEncode',\n standalone: false\n})\nexport class NhUrlEncodePipe implements PipeTransform {\n transform(value: string | undefined | null): string|undefined|null {\n if (!value) {\n return value;\n }\n\n return encodeURIComponent(value ?? '');\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport {NhCommonModuleConfig} from \"../models/config.models\";\n\n@Pipe({\n name: 'nhDate',\n pure: false,\n standalone: false\n})\nexport class NhDatePipe implements PipeTransform {\n\n constructor(private moduleConfig: NhCommonModuleConfig) {\n }\n\n transform(value: any, pattern?: string): any {\n pattern ??= this.moduleConfig.defaultDateFormat;\n const datePipe: DatePipe = new DatePipe(this.moduleConfig.language);\n return datePipe.transform(value, pattern);\n }\n}\n\n@Pipe({\n name: 'nhDateTime',\n pure: false,\n standalone: false\n})\nexport class NhDateTimePipe implements PipeTransform {\n\n constructor(private moduleConfig: NhCommonModuleConfig) {\n }\n\n transform(value: any, pattern?: string): any {\n pattern ??= this.moduleConfig.defaultDateTimeFormat;\n const datePipe: NhDatePipe = new NhDatePipe(this.moduleConfig);\n return datePipe.transform(value, pattern);\n }\n}\n\n@Pipe({\n name: 'nhDateUtc',\n pure: false,\n standalone: false\n})\nexport class NhDateUtcPipe implements PipeTransform {\n\n constructor(private moduleConfig: NhCommonModuleConfig) {\n }\n\n transform(value: any, pattern: string = 'dd-MM-yyyy HH:mm:ss'): any {\n if(value && !value.toString().endsWith('Z')) {\n value = value + 'Z';\n }\n const datePipe: DatePipe = new DatePipe(this.moduleConfig.language);\n return datePipe.transform(value, pattern);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Claim} from '../models/auth.models';\nimport {NhAuthService} from '../services/nh-auth.service';\n\n@Pipe({\n name: 'isOnePermissionGranted',\n standalone: false\n})\nexport class IsOnePermissionGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(permissions: Array<string>): boolean {\n return this.authService.isOnePermissionGranted(permissions);\n }\n}\n\n@Pipe({\n name: \"isAllPermissionsGranted\",\n standalone: false\n})\nexport class IsAllPermissionsGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(permissions: Array<string>): boolean {\n return this.authService.isAllPermissionsGranted(permissions);\n }\n}\n\n@Pipe({\n name: 'isGrantedRole',\n standalone: false\n})\nexport class IsGrantedRolePipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(roles: string | string[]): boolean {\n return this.authService.isGrantedRole(roles);\n }\n}\n\n@Pipe({\n name: 'isAuthenticated',\n standalone: false\n})\nexport class IsAuthenticatedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(): boolean {\n return this.authService.isAuthenticated();\n }\n}\n\n@Pipe({\n name: 'isClaimGranted',\n standalone: false\n})\nexport class IsClaimGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(claim: Claim): boolean {\n return this.authService.isClaimGranted(claim);\n }\n}\n\n@Pipe({\n name: 'isOneClaimGranted',\n standalone: false\n})\nexport class IsOneClaimGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(claims: Array<Claim>): boolean {\n return this.authService.isOneClaimGranted(claims);\n }\n}\n\n@Pipe({\n name: 'isOneRoleGranted',\n standalone: false\n})\nexport class IsOneRoleGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(roles: Array<string>): boolean {\n return this.authService.isOneRoleGranted(roles);\n }\n}\n\n@Pipe({\n name: 'isOneDivisionPermissionGranted',\n standalone: false\n})\nexport class IsOneDivisionPermissionGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(divisionId: string, permissions: Array<string>): boolean {\n return this.authService.isOneDivisionPermissionGranted(divisionId, permissions);\n }\n}\n\n@Pipe({\n name: 'isOneDivisionRoleGranted',\n standalone: false\n})\nexport class IsOneDivisionRoleGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(divisionId: string, roles: Array<string>): boolean {\n return this.authService.isOneDivisionRoleGranted(divisionId, roles);\n }\n}\n\n@Pipe({\n name: 'isOneActiveDivisionPermissionGranted',\n standalone: false\n})\nexport class IsOneActiveDivisionPermissionGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(permissions: Array<string>): boolean {\n return this.authService.isOneActiveDivisionPermissionGranted(permissions);\n }\n}\n\n@Pipe({\n name: 'isOneActiveDivisionRoleGranted',\n standalone: false\n})\nexport class IsOneActiveDivisionRoleGrantedPipe implements PipeTransform {\n\n constructor(private authService: NhAuthService) {\n }\n\n transform(roles: Array<string>): boolean {\n return this.authService.isOneActiveDivisionRoleGranted(roles);\n }\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Pipe({\n name: 'nhBooleanToString',\n standalone: false\n})\nexport class NhBooleanToStringPipe implements PipeTransform {\n\n constructor(private translateService: TranslateService) {\n\n }\n\n transform(value: boolean | undefined): string {\n if (value === undefined) {\n return '';\n }\n\n return value\n ? this.translateService.instant('Yes')\n : this.translateService.instant('No');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: false\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitized: DomSanitizer) {}\n transform(value: string) {\n return this.sanitized.bypassSecurityTrustHtml(value);\n }\n}\n\n@Pipe({\n name: 'safeUrl',\n standalone: false\n})\nexport class SafeUrlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(value: string) {\n return this.sanitizer.bypassSecurityTrustUrl(value);\n }\n}\n\n@Pipe({\n name: 'safeResourceUrl',\n standalone: false\n})\nexport class SafeResourceUrlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(value: string) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n }\n}\n","import {DOCUMENT} from \"@angular/common\";\n\nimport { Directive, ElementRef, Inject, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nconst TO_HEAD_SELECTOR = 'nhToHead';\n\n@Directive({\n selector: `[nhToHead]`,\n exportAs: 'nhToHead',\n standalone: false\n})\nexport class NhToHeadDirective implements OnInit, OnDestroy {\n constructor(\n @Inject(DOCUMENT) private _document: Document,\n private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n }\n\n ngOnInit(): void {\n this._renderer.appendChild(this._document.head, this._elementRef.nativeElement);\n this._renderer.removeAttribute(this._elementRef.nativeElement, TO_HEAD_SELECTOR.toLowerCase());\n }\n\n ngOnDestroy(): void {\n this._renderer.removeChild(this._document.head, this._elementRef.nativeElement);\n }\n}\n","import {distinctUntilChanged, debounceTime, takeUntil} from 'rxjs/operators';\nimport {Directive, OnDestroy, OnInit, input, output, HostListener} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {Subject, Subscription, tap} from 'rxjs';\nimport {Router} from \"@angular/router\";\n\n\n@Directive({\n selector: '[ngModel][nhDebounce]',\n standalone: false\n})\nexport class NhDebounceDirective implements OnInit, OnDestroy {\n public readonly onDebounce = output<any>();\n public readonly preDebounce = output<any>();\n\n public readonly debounceTime = input(500, { alias: \"nhDebounce\" });\n\n private isFirstChange = true;\n private ngUnsubscribe: Subject<void> = new Subject<void>();\n\n constructor(public model: NgControl) {\n }\n\n ngOnInit() {\n if(this.model && this.model.valueChanges) {\n this.model.valueChanges.pipe(\n takeUntil(this.ngUnsubscribe),\n debounceTime(this.debounceTime()),\n distinctUntilChanged(),)\n .subscribe(modelValue => {\n if (this.isFirstChange) {\n this.isFirstChange = false;\n } else {\n this.onDebounce.emit(modelValue);\n }\n });\n\n this.model.valueChanges.pipe(\n takeUntil(this.ngUnsubscribe),\n distinctUntilChanged(),)\n .subscribe(modelValue => {\n if (this.isFirstChange) {\n this.isFirstChange = false;\n } else {\n this.preDebounce.emit(modelValue);\n }\n });\n }\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n\n\n@Directive({\n selector: '[nhButtonDebounce]',\n standalone: false\n})\nexport class NhButtonDebounceDirective implements OnInit, OnDestroy {\n public readonly onDebounce = output<any>();\n\n public readonly debounceTime = input(500, { alias: \"debounce\" });\n\n private clicks = new Subject();\n private subscription?: Subscription;\n\n constructor() {\n }\n\n ngOnInit() {\n this.subscription = this.clicks.pipe(\n tap(_ => console.log('tap')),\n debounceTime(this.debounceTime())\n ).subscribe(e => this.onDebounce.emit(e));\n }\n\n @HostListener('click', ['$event'])\n clickEvent(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.clicks.next(event);\n }\n\n ngOnDestroy() {\n this.clicks.complete();\n this.subscription?.unsubscribe();\n }\n}\n","import {Directive, ElementRef, HostListener, Inject, Input, OnInit, Optional, Renderer2} from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n PRIMARY_OUTLET,\n Router,\n RouterLink,\n UrlSegmentGroup\n} from \"@angular/router\";\nimport {NH_ROUTER_LANGUAGE_CHANGE_METHOD, NhRouterService} from \"../services/nh-router.service\";\nimport {NhRouterLink} from \"../models/misc.models\";\nimport {TranslateService} from \"@ngx-translate/core\";\n\n@Directive({\n selector: `[nhRouterLink]`,\n exportAs: 'nhRouterLink',\n hostDirectives: [{\n directive: RouterLink,\n inputs: [\n 'target: target',\n 'queryParams: queryParams',\n 'fragment: fragment',\n 'queryParamsHandling: queryParamsHandling',\n 'state: state',\n 'info: info',\n 'relativeTo: relativeTo',\n 'preserveFragment: preserveFragment',\n 'skipLocationChange: skipLocationChange',\n 'replaceUrl: replaceUrl'\n ]\n }],\n standalone: false\n})\nexport class NhRouterLinkDirective implements OnInit {\n private _nhRouterLink: NhRouterLink | null | undefined;\n private _resolvedNhRouterLink: any[] | string | null | undefined;\n\n @Input() set nhRouterLink(nhRouterLink: NhRouterLink | undefined) {\n this._nhRouterLink = nhRouterLink;\n\n if (this.hostRouterLink) {\n this._resolvedNhRouterLink = this.transformRouteLink(this._nhRouterLink);\n this.hostRouterLink.routerLink = this._resolvedNhRouterLink;\n this.hostRouterLink.ngOnChanges(<any>{}); // Trigger fake ngOnChanges\n }\n }\n\n get nhRouterLink(): NhRouterLink | null | undefined {\n return this._nhRouterLink;\n }\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private hostRouterLink: RouterLink,\n private router: Router,\n private routerService: NhRouterService,\n private translateService: TranslateService,\n @Optional() @Inject(NH_ROUTER_LANGUAGE_CHANGE_METHOD) private changeLanguageMethod: (newLanguage: string) => Promise<void>\n ) {\n }\n\n ngOnInit() {\n\n }\n\n private transformRouteLink(routeLink: NhRouterLink | null | undefined): any[] | string | null | undefined {\n if (routeLink === null || routeLink === undefined) {\n return routeLink;\n }\n\n return this.routerService.createUrlForNavigationItem(routeLink);\n }\n\n /** @nodoc */\n @HostListener('click', [\n '$event.button',\n '$event.ctrlKey',\n '$event.shiftKey',\n '$event.altKey',\n '$event.metaKey',\n ])\n async onClick(\n button: number,\n ctrlKey: boolean,\n shiftKey: boolean,\n altKey: boolean,\n metaKey: boolean,\n ): Promise<boolean> {\n if (this._nhRouterLink && this._nhRouterLink.language && this._nhRouterLink.language !== this.translateService.currentLang) {\n // We detected a language change, change the language and reload the routes so navigation works.\n if (!this.changeLanguageMethod) {\n throw new Error('Nh_ROUTER_LANGUAGE_CHANGE_METHOD is not defined via DI injection token.');\n }\n // We detected a language change, change the language and reload the routes so navigation works.\n await this.changeLanguageMethod(this._nhRouterLink.language);\n this.routerService.reloadRoutes();\n }\n if (window?.scrollTo && this._nhRouterLink?.scrollToTop !== false) {\n setTimeout(() => window.scrollTo(0, 0), 10);\n }\n return this.hostRouterLink.onClick(button, ctrlKey, shiftKey, altKey, metaKey);\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Port of https://github.com/coryrylan/ngx-lite/blob/master/projects/ngx-json-ld/src/ngx-json-ld.component.ts\n */\n@Component({\n selector: 'nh-json-ld',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class NhJsonLdComponent {\n @Input() set json(value: any) {\n this._jsonLD = this._getSafeHTML(value);\n }\n\n @HostBinding('innerHTML') private _jsonLD?: SafeHtml;\n\n constructor(private _sanitizer: DomSanitizer) {\n }\n\n private _getSafeHTML(value: any) {\n const json = value\n ? JSON.stringify(value, null, 2).replace(/<\\/script>/g, '<\\\\/script>')\n : '';\n const html = `<script type=\"application/ld+json\">${json}</script>`;\n\n return this._sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { Component, input } from '@angular/core';\nimport {INhModalComponent, NhModalComponentRef} from \"../../services/nh-modal.service\";\n\n@Component({\n selector: 'nh-loading-modal',\n templateUrl: './component.html',\n styleUrls: ['./component.scss'],\n standalone: false\n})\nexport class NhModalLoadingComponent implements INhModalComponent<NhModalLoadingComponent> {\n readonly information = input<string>('');\n modalComponentRef: NhModalComponentRef<NhModalLoadingComponent> | undefined;\n\n setModalComponentRef(ref: NhModalComponentRef<NhModalLoadingComponent>): void {\n this.modalComponentRef = ref;\n }\n}\n","<div class=\"grid center\">\n <nh-loader [hasBackdrop]=\"false\"></nh-loader>\n {{ information() }}\n</div>\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n AfterContentInit, AfterViewInit,\n Component,\n inject,\n OnChanges,\n OnDestroy,\n OnInit, PLATFORM_ID, Type\n} from \"@angular/core\";\nimport {ActivatedRoute, NavigationEnd, ParamMap, Params, Router} from \"@angular/router\";\nimport {filter, Subscription} from \"rxjs\";\n\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {NhPageService, NhPageSettings, TypedNhPageSettings} from \"../../services/nh-page.service\";\nimport {NhConfigCommonService} from \"../../services/nh-config.service\";\nimport {BaseNhAuthService, NhAuthService} from \"../../services/nh-auth.service\";\nimport {NhModalService} from \"../../services/nh-modal.service\";\nimport {NhRouterService} from \"../../services/nh-router.service\";\nimport {NhCommonConfig, NhCommonConfigChanged} from \"../../models/config.models\";\nimport {INhAuthorization, NhAuthorization} from \"../../models/auth.models\";\n\n\n@Component({\n selector: 'nh-page-base-component-type',\n template: ``,\n standalone: false\n})\nexport abstract class NhPageTypeBaseComponent<TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>\n implements\n OnChanges,\n OnInit,\n AfterContentInit,\n AfterViewInit,\n OnDestroy\n{\n readonly QUERY_PARAM_KEY_PAGE = 'p';\n readonly QUERY_PARAM_KEY_ITEMS_PER_PAGE = 'ipp';\n readonly QUERY_PARAM_KEY_SEARCH_QUERY = 'sq';\n readonly QUERY_PARAM_KEY_ORDER_BY = 'ob';\n readonly QUERY_PARAM_KEY_VIEW = 'vw';\n\n protected get pageSettings(): NhPageSettings {\n return this.pageService.activePageSettings;\n };\n\n protected configService: NhConfigCommonService = inject(NhConfigCommonService);\n protected authService: TAuthService;\n protected translateService: TranslateService = inject(TranslateService);\n protected pageService: NhPageService = inject(NhPageService);\n protected modalService: NhModalService = inject(NhModalService);\n protected nhRouterService: NhRouterService = inject(NhRouterService);\n protected activatedRoute: ActivatedRoute = inject(ActivatedRoute);\n protected document: Document = inject(DOCUMENT)\n protected platformId: Object = inject(PLATFORM_ID);\n protected router: Router = inject(Router);\n private $routeChanged: Subscription|undefined;\n protected config: NhCommonConfig = this.configService.getConfig();\n private $config: Subscription|undefined;\n protected authorization: NhAuthorization | undefined;\n private $auth: Subscription;\n private $activeRouteParams: Subscription|undefined;\n protected activeRouteParams: Params = {};\n private $activeRouteParamMap: Subscription|undefined;\n protected activeRouteParamMap?: ParamMap;\n private $activeQueryParams: Subscription|undefined;\n protected activeQueryParams: Params = {};\n private $activeQueryParamMap: Subscription|undefined;\n protected activeQueryParamMap?: ParamMap;\n private $activeUrlFragment: Subscription|undefined;\n private activeUrlFragment: string|null = null;\n private onInitDidRunOnce: boolean = false;\n\n get pageData(): any {\n return this.pageSettings.pageData;\n }\n\n constructor(authServiceType: Type<TAuthService>) {\n this.authService = inject(authServiceType);\n\n this.pageService.setBreadcrumbOverrideText(undefined);\n\n this.$config = this.configService.configSubject.subscribe(async (configChanged) => {\n await this.configChanged(configChanged);\n });\n\n this.$auth = this.authService.authSubject.subscribe(async (authorization) => {\n await this.authChanged(authorization);\n });\n\n this.pageSettings.pageData = this._getInitialPageData();\n this.pageService.restoreTransferState();\n this.pageSettings.pageData ??= this._getInitialPageData();\n }\n\n protected _getInitialPageData(): unknown {\n return {};\n }\n\n isPlatformServer(): boolean {\n return this.pageService.isPlatformServer()\n }\n\n isPlatformBrowser(): boolean {\n return this.pageService.isPlatformBrowser()\n }\n\n originatedFromServer(): boolean {\n return this.pageService.originatedFromServer();\n }\n\n isPlatformBrowserInitial() {\n return this.pageService.isPlatformBrowserInitial();\n }\n\n private async configChanged(configChanged: NhCommonConfigChanged) {\n this.config = configChanged.config;\n }\n\n private async authChanged(authorization: NhAuthorization | undefined) {\n this.authorization = authorization;\n }\n\n async flushMeta() {\n await this.pageService.flushMeta(this.pageSettings);\n }\n\n async ngOnInit() {\n this.$routeChanged?.unsubscribe();\n this.$routeChanged = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd)\n ).subscribe(async (event: unknown) => {\n // Angular has ngOnInit, but it will not be called if u navigate to a page that uses the same component.\n // So we use the route change detection to flush the meta-data again.\n this.flushMeta().then();\n this.pageService.requestBreadcrumbUpdate();\n });\n\n this.appOnInit().then(x => {\n this.appOnInitAndLoad().then(async () => {\n this._appOnInitAndLoadWithSkipBrowserInitial().then(async () => {\n this.flushMeta().then();\n this.pageService.requestBreadcrumbUpdate();\n });\n });\n\n this.onInitDidRunOnce = true;\n });\n }\n\n async ngOnChanges() {\n this.appOnChanges().then();\n }\n\n async ngAfterContentInit() {\n this.appAfterContentInit().then();\n }\n\n async ngAfterViewInit() {\n this.activeRouteParams = this.activatedRoute?.snapshot?.params ?? {};\n this.$activeRouteParams?.unsubscribe();\n this.$activeRouteParams = this.activatedRoute.params.subscribe(p => {\n this.activeRouteParams = p;\n if(this.onInitDidRunOnce && this.pageService.isAppStable()) {\n this.appOnInitAndLoad().then(async () => {\n this._appOnInitAndLoadWithSkipBrowserInitial().then(async () => {\n this.flushMeta().then();\n this.pageService.requestBreadcrumbUpdate();\n });\n this.flushMeta().then();\n this.pageService.requestBreadcrumbUpdate();\n });\n }\n });\n\n this.$activeRouteParamMap?.unsubscribe();\n this.$activeRouteParamMap = this.activatedRoute.paramMap.subscribe(p => {\n this.activeRouteParamMap = p;\n });\n\n this.$activeQueryParams?.unsubscribe();\n this.$activeQueryParams = this.activatedRoute.queryParams.subscribe(p => {\n this.activeQueryParams = p;\n });\n\n this.$activeQueryParamMap?.unsubscribe();\n this.$activeRouteParamMap = this.activatedRoute.queryParamMap.subscribe(p => {\n this.activeQueryParamMap = p;\n });\n\n this.$activeUrlFragment?.unsubscribe();\n this.$activeUrlFragment = this.activatedRoute.fragment.subscribe(p => {\n this.activeUrlFragment = p;\n });\n\n this.appAfterViewInit().then();\n }\n\n async ngOnDestroy() {\n this.appOnDestroy().then(async() => {\n this.$routeChanged?.unsubscribe();\n this.$activeRouteParams?.unsubscribe();\n this.$activeRouteParamMap?.unsubscribe();\n this.$activeQueryParams?.unsubscribe();\n this.$activeQueryParamMap?.unsubscribe();\n this.$config?.unsubscribe();\n this.$auth?.unsubscribe();\n });\n }\n\n appOnInitAndLoad(): Promise<void> {\n return Promise.resolve();\n }\n\n private _appOnInitAndLoadWithSkipBrowserInitial(): Promise<void> {\n if(this.isPlatformBrowserInitial()) {\n return Promise.resolve();\n }\n\n return this.appOnInitAndLoadWithSkipBrowserInitial();\n }\n appOnInitAndLoadWithSkipBrowserInitial(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnChanges(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterContentInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterViewInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnDestroy(): Promise<void> {\n return Promise.resolve();\n }\n}\n\n@Component({\n selector: 'nh-page-base-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhPageBaseComponent extends NhPageTypeBaseComponent<NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n\n@Component({\n selector: 'nh-page-base-component-type-typed',\n template: ``,\n standalone: false\n})\nexport abstract class NhTypedPageTypeBaseComponent<TPageData, TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>> extends NhPageTypeBaseComponent<TAuthorization, TAuthService> {\n protected override get pageSettings(): TypedNhPageSettings<TPageData> {\n return this.pageService.activePageSettings as TypedNhPageSettings<TPageData>;\n };\n\n protected override _getInitialPageData(): unknown {\n return this.getInitialPageData();\n };\n\n protected abstract getInitialPageData(): TPageData|undefined;\n\n override get pageData(): TPageData|undefined {\n return this.pageSettings.pageData as TPageData;\n }\n\n constructor(authServiceType: Type<TAuthService>) {\n super(authServiceType);\n }\n}\n\n@Component({\n selector: 'nh-page-base-component-typed',\n template: ``,\n standalone: false\n})\nexport abstract class NhTypedPageBaseComponent<TPageData> extends NhTypedPageTypeBaseComponent<TPageData, NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit, output,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, Subject, Subscription} from 'rxjs';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {debounceTime, distinctUntilChanged, takeUntil} from 'rxjs/operators';\nimport {\n IMultiSelectOption,\n IMultiSelectSettings,\n IMultiSelectTexts,\n NgxDropdownMultiselectComponent\n} from 'ngx-bootstrap-multiselect';\nimport {AbstractValueAccessor, MakeProvider} from \"../../accessors/abstract-value.accessor\";\nimport {CollectionHttpRequestOptions, CollectionHttpResponse} from '../../models/http.models';\nimport {NhCommonModuleConfig} from '../../models/config.models';\n\nexport class DefaultMultiSelectSettings implements IMultiSelectSettings {\n pullRight = false;\n enableSearch = true;\n checkedStyle: 'checkboxes' | 'glyphicon' | 'fontawesome' | 'visual' = 'fontawesome';\n buttonClasses = 'btn btn-default btn-secondary';\n selectionLimit = 1;\n closeOnSelect = false;\n autoUnselect = true;\n showCheckAll = false;\n showUncheckAll = false;\n fixedTitle = false;\n dynamicTitleMaxItems = 3;\n maxHeight = '300px';\n isLazyLoad = true;\n loadViewDistance = 1;\n stopScrollPropagation = true;\n selectAddedValues = true;\n\n public constructor(init?: Partial<DefaultMultiSelectSettings>) {\n Object.assign(this, init);\n }\n}\n\nexport class DefaultMultiSelectTexts implements IMultiSelectTexts {\n checkAll = 'Select all';\n uncheckAll = 'Unselect all';\n checked = 'item selected';\n checkedPlural = 'items selected';\n searchPlaceholder = 'Find';\n searchEmptyResult = 'Nothing found...';\n searchNoRenderText = 'Type in search box to see results...';\n defaultTitle = 'Select';\n allSelected = 'All selected';\n\n public constructor(init?: Partial<DefaultMultiSelectTexts>) {\n Object.assign(this, init);\n }\n}\n\nexport class NhFormDropDownSettings {\n\n lazyLoad = true;\n translateOptionValue = true;\n multiSelectSettings: IMultiSelectSettings = new DefaultMultiSelectSettings({});\n multiSelectTexts: IMultiSelectTexts = new DefaultMultiSelectTexts();\n requestOptions = new CollectionHttpRequestOptions();\n debounceTime = 300;\n selectedRequestOptions = new CollectionHttpRequestOptions();\n deferLazyLoadUntilOpened?: boolean;\n loadLambda?: () => Observable<Array<any>>;\n lazyLoadLambda?: (options: CollectionHttpRequestOptions) => Observable<CollectionHttpResponse<any>>;\n selectedLazyLoadLambda?: (options: CollectionHttpRequestOptions, value?: any) => Observable<CollectionHttpResponse<any>>;\n componentRef?: NhFormDropDownComponent;\n keyGetLambda = (x: any) => {\n return x.id\n };\n imageGetLambda = (x: any) => undefined;\n valueGetLambda = (x: any) => {\n return x.name\n };\n onSuccess = () => {\n return;\n };\n\n public constructor(init?: Partial<NhFormDropDownSettings>) {\n Object.assign(this, init);\n }\n}\n\n@Component({\n selector: 'nh-form-dropdown',\n templateUrl: './form-dropdown.component.html',\n styleUrls: ['./form-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [MakeProvider(NhFormDropDownComponent)],\n standalone: false\n})\nexport class NhFormDropDownComponent extends AbstractValueAccessor implements OnInit, OnDestroy {\n @ViewChild('lazyLoadComponent') lazyLoadComponent?: NgxDropdownMultiselectComponent;\n @ViewChild('noLazyLoadComponent') noLazyLoadComponent?: NgxDropdownMultiselectComponent;\n defaultTexts = new DefaultMultiSelectTexts();\n isLoading = false;\n hasMoreLazyLoadItems = true;\n lastLazyLoadEvent: any;\n hasFocus = false;\n @Input() disabled : boolean = false;\n @Output() onLazyLoadError = new EventEmitter();\n private _settings: NhFormDropDownSettings = new NhFormDropDownSettings();\n public readonly closed = output<void>();\n public readonly opened = output<void>();\n\n get settings() {\n return this._settings;\n }\n\n @Input() set settings (value: NhFormDropDownSettings) {\n if (!value.multiSelectTexts) {\n value.multiSelectTexts = new DefaultMultiSelectTexts();\n }\n\n value.multiSelectTexts = {\n checkAll: (value.multiSelectTexts.checkAll === this.defaultTexts.checkAll) ? this.translate.instant('form.form-dropdown.check-all') : value.multiSelectTexts.checkAll,\n uncheckAll: (value.multiSelectTexts.uncheckAll === this.defaultTexts.uncheckAll) ? this.translate.instant('form.form-dropdown.uncheck-all') : value.multiSelectTexts.uncheckAll,\n checked: (value.multiSelectTexts.checked === this.defaultTexts.checked) ? this.translate.instant('form.form-dropdown.checked') : value.multiSelectTexts.checked,\n checkedPlural: (value.multiSelectTexts.checkedPlural === this.defaultTexts.checkedPlural) ? this.translate.instant('form.form-dropdown.checked-plural') : value.multiSelectTexts.checkedPlural,\n searchPlaceholder: (value.multiSelectTexts.searchPlaceholder === this.defaultTexts.searchPlaceholder) ? this.translate.instant('form.form-dropdown.search-placeholder') : value.multiSelectTexts.searchPlaceholder,\n searchEmptyResult: (value.multiSelectTexts.searchEmptyResult === this.defaultTexts.searchEmptyResult) ? this.translate.instant('form.form-dropdown.search-empty-result') : value.multiSelectTexts.searchEmptyResult,\n searchNoRenderText: (value.multiSelectTexts.searchNoRenderText === this.defaultTexts.searchNoRenderText) ? this.translate.instant('form.form-dropdown.search-no-render-text') : value.multiSelectTexts.searchNoRenderText,\n defaultTitle: (value.multiSelectTexts.defaultTitle === this.defaultTexts.defaultTitle) ? this.translate.instant('form.form-dropdown.default-title') : value.multiSelectTexts.defaultTitle,\n allSelected: (value.multiSelectTexts.allSelected === this.defaultTexts.allSelected) ? this.translate.instant('form.form-dropdown.all-selected') : value.multiSelectTexts.allSelected\n };\n\n value.componentRef = this;\n\n this._settings = value;\n this.resetSelectedLazyLoadCache();\n this.load();\n }\n\n activeLazyLoadDataRequestSubscription: any = null;\n activeLazyLoadSelectedDataRequestSubscription: any = null;\n activeLoadRequestSubscription: Subscription|null = null;\n options: IMultiSelectOption[] = [];\n rawOptions: any[] = [];\n private debounceObserver: any;\n private debounceSubscription: Subscription|null = null;\n private readonly destroy$ = new Subject<void>();\n private hasOpenedDropdown = false;\n private hasLoadedDeferredLazyLoadData = false;\n private selectedLazyLoadValueKey?: string;\n private selectedLazyLoadOptions: IMultiSelectOption[] = [];\n private activeLazyLoadSelectedDataValueKey?: string;\n private activeLazyLoadSelectedDataObservers: Array<any> = [];\n private valueKey = '';\n\n constructor(\n private translate: TranslateService,\n private cdr: ChangeDetectorRef,\n @Optional() @Inject(NhCommonModuleConfig) private commonModuleConfig?: NhCommonModuleConfig\n ) {\n super();\n }\n\n ngOnInit() {\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n\n this.activeLoadRequestSubscription?.unsubscribe();\n this.activeLoadRequestSubscription = null;\n this.activeLazyLoadDataRequestSubscription?.unsubscribe();\n this.activeLazyLoadDataRequestSubscription = null;\n this.activeLazyLoadSelectedDataRequestSubscription?.unsubscribe();\n this.activeLazyLoadSelectedDataRequestSubscription = null;\n this.debounceSubscription?.unsubscribe();\n this.debounceSubscription = null;\n this.debounceObserver = null;\n this.activeLazyLoadSelectedDataObservers = [];\n }\n\n public getDropdownComponent(): NgxDropdownMultiselectComponent|undefined {\n let component: any = undefined;\n if (this.lazyLoadComponent) {\n component = this.lazyLoadComponent;\n }\n if (this.noLazyLoadComponent) {\n component = this.noLazyLoadComponent;\n }\n\n return component;\n }\n\n public toggleDropdown() {\n const component = this.getDropdownComponent();\n component!.toggleDropdown();\n this.cdr.markForCheck();\n }\n\n public closeDropdown() {\n const component = this.getDropdownComponent();\n component!.closeDropdown();\n this.cdr.markForCheck();\n }\n\n public override writeValue(value: any) {\n const nextValue = this.cloneValue(value);\n const valueKey = this.getValueKey(nextValue);\n const currentValueKey = this.valueKey;\n super.writeValue(nextValue);\n this.valueKey = valueKey;\n\n if (this.settings.lazyLoad && this.deferLazyLoadUntilOpened && valueKey !== currentValueKey) {\n this.loadSelectedOptions();\n }\n }\n\n public onDropdownOpened() {\n this.opened.emit();\n this.hasOpenedDropdown = true;\n\n if (this.settings.lazyLoad && this.deferLazyLoadUntilOpened && !this.hasLoadedDeferredLazyLoadData) {\n this.hasLoadedDeferredLazyLoadData = true;\n this.lazyLoadData({length: 0, isInitial: true});\n }\n }\n\n resetSearch() {\n this.settings.requestOptions.page = 1;\n this.settings.requestOptions.search = '';\n if (this.lazyLoadComponent) {\n (<any>this.lazyLoadComponent).clearSearch(null);\n }\n if (this.noLazyLoadComponent) {\n (<any>this.noLazyLoadComponent).clearSearch(null);\n }\n this.load(false);\n }\n\n public load(resetDeferredState: boolean = true) {\n if (resetDeferredState) {\n this.hasOpenedDropdown = false;\n this.hasLoadedDeferredLazyLoadData = false;\n }\n\n this.options = [];\n this.rawOptions = [];\n if (this.settings.lazyLoad) {\n if (this.deferLazyLoadUntilOpened && !this.hasOpenedDropdown) {\n this.loadSelectedOptions();\n } else {\n if (this.deferLazyLoadUntilOpened) {\n this.hasLoadedDeferredLazyLoadData = true;\n }\n\n this.lazyLoadData({length: 0, isInitial: true});\n }\n } else {\n this.settings.multiSelectSettings.isLazyLoad = false;\n if(this.settings.loadLambda) {\n this.activeLoadRequestSubscription?.unsubscribe();\n this.activeLoadRequestSubscription = this.settings.loadLambda().pipe(\n takeUntil(this.destroy$)\n ).subscribe((options) => {\n this.options = options.map(x => {\n return {id: this.settings.keyGetLambda(x), name: this.settings.valueGetLambda(x), image: this.settings.imageGetLambda(x)}\n });\n this.rawOptions = options;\n this.activeLoadRequestSubscription = null;\n }, () => {\n this.activeLoadRequestSubscription = null;\n });\n }\n }\n }\n\n private get deferLazyLoadUntilOpened(): boolean {\n return this.settings.deferLazyLoadUntilOpened ?? this.commonModuleConfig?.formDropdown?.deferLazyLoadUntilOpened ?? false;\n }\n\n private cloneValue(value: any) {\n return Array.isArray(value) ? [...value] : value;\n }\n\n private getValueKey(value: any): string {\n if (value === undefined || value === null || value === '') {\n return '';\n }\n\n if (Array.isArray(value)) {\n const arrayKey = value\n .map(x => this.getValueKey(x))\n .filter(x => !!x)\n .sort()\n .join('|');\n\n return arrayKey ? 'array:' + arrayKey : '';\n }\n\n if (typeof value === 'object') {\n return 'object:' + JSON.stringify(value);\n }\n\n return 'value:' + value;\n }\n\n private resetSelectedLazyLoadCache() {\n if (this.activeLazyLoadSelectedDataRequestSubscription) {\n this.activeLazyLoadSelectedDataRequestSubscription.unsubscribe();\n this.activeLazyLoadSelectedDataRequestSubscription = null;\n }\n\n this.selectedLazyLoadValueKey = undefined;\n this.selectedLazyLoadOptions = [];\n this.activeLazyLoadSelectedDataValueKey = undefined;\n this.activeLazyLoadSelectedDataObservers = [];\n }\n\n private loadSelectedOptions() {\n this.lazyLoadSelectedData().subscribe((selectedItems: Array<IMultiSelectOption>) => {\n this.selectedHandleLazyLoadResponse(selectedItems);\n });\n }\n\n lazyLoadSelectedData(): Observable<Array<IMultiSelectOption>> {\n return new Observable((observer) => {\n const valueKey = this.getValueKey(this.value);\n\n if (!this.settings.lazyLoad || !this.settings.selectedRequestOptions || !this.settings.selectedLazyLoadLambda || !valueKey) {\n this.selectedLazyLoadValueKey = undefined;\n this.selectedLazyLoadOptions = [];\n observer.next([]);\n observer.complete();\n return undefined;\n }\n\n if (this.selectedLazyLoadValueKey === valueKey) {\n observer.next([...this.selectedLazyLoadOptions]);\n observer.complete();\n return undefined;\n }\n\n const requestOptions = this.settings.selectedRequestOptions;\n\n if (this.activeLazyLoadSelectedDataValueKey === valueKey) {\n this.activeLazyLoadSelectedDataObservers.push(observer);\n return () => {\n this.activeLazyLoadSelectedDataObservers = this.activeLazyLoadSelectedDataObservers.filter(x => x !== observer);\n };\n }\n\n if (this.activeLazyLoadSelectedDataRequestSubscription) {\n this.activeLazyLoadSelectedDataRequestSubscription.unsubscribe();\n this.activeLazyLoadSelectedDataObservers.forEach(x => {\n x.next([]);\n x.complete();\n });\n this.activeLazyLoadSelectedDataObservers = [];\n }\n\n this.activeLazyLoadSelectedDataValueKey = valueKey;\n this.activeLazyLoadSelectedDataObservers = [observer];\n this.activeLazyLoadSelectedDataRequestSubscription = this.settings.selectedLazyLoadLambda(requestOptions, this.value).subscribe(\n response => {\n this.activeLazyLoadSelectedDataRequestSubscription = null;\n this.activeLazyLoadSelectedDataValueKey = undefined;\n const selectedOptions: IMultiSelectOption[] = [];\n if (response && response.items && response.items.length > 0) {\n for (const item of response.items) {\n const option = {id: this.settings.keyGetLambda(item), name: this.settings.valueGetLambda(item), image: this.settings.imageGetLambda(item)};\n\n if (this.settings.translateOptionValue) {\n option.name = this.translate.instant(option.name);\n }\n\n selectedOptions.push(option);\n }\n }\n\n this.selectedLazyLoadValueKey = valueKey;\n this.selectedLazyLoadOptions = selectedOptions;\n this.activeLazyLoadSelectedDataObservers.forEach(x => {\n x.next([...selectedOptions]);\n x.complete();\n });\n this.activeLazyLoadSelectedDataObservers = [];\n },\n (err: HttpErrorResponse) => {\n this.activeLazyLoadSelectedDataRequestSubscription = null;\n this.activeLazyLoadSelectedDataValueKey = undefined;\n this.activeLazyLoadSelectedDataObservers.forEach(x => x.error(err));\n this.activeLazyLoadSelectedDataObservers = [];\n }\n );\n return undefined;\n });\n }\n\n lazyLoadData(eventIn: any) {\n if (this.settings.lazyLoad && this.deferLazyLoadUntilOpened && !this.hasOpenedDropdown) {\n return;\n }\n\n if (eventIn.isInitial) {\n this.processLazyLoadEvent(eventIn);\n return;\n }\n\n if (!this.debounceObserver) {\n\n this.debounceSubscription = new Observable<any>((observer) => {\n this.debounceObserver = observer;\n }).pipe(debounceTime(this.settings.debounceTime)) // wait x ms after the last event before emitting last event\n .pipe(distinctUntilChanged()) // only emit if value is different from previous value\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n this.processLazyLoadEvent(event);\n });\n }\n\n this.debounceObserver.next(eventIn);\n };\n\n private processLazyLoadEvent(event: any) {\n if (this.isLoading) {\n return;\n }\n\n this.lastLazyLoadEvent = event;\n this.isLoading = true;\n\n this.lazyLoadSelectedData().subscribe((selectedItems: Array<IMultiSelectOption>) => {\n\n const filter = (!event.filter) ? '' : event.filter;\n let page = this.settings.requestOptions.page;\n if (!event.isInitial) {\n page++;\n }\n\n if (this.activeLazyLoadDataRequestSubscription) {\n this.activeLazyLoadDataRequestSubscription.unsubscribe();\n }\n\n if (filter !== this.settings.requestOptions.search || event.isInitial) {\n page = 1;\n this.hasMoreLazyLoadItems = true;\n this.settings.requestOptions.search = (!filter) ? '' : filter;\n this.settings.requestOptions.page = page;\n this.options = [];\n this.rawOptions = [];\n\n if(this.settings.lazyLoadLambda) {\n this.activeLazyLoadDataRequestSubscription = this.settings.lazyLoadLambda(this.settings.requestOptions).subscribe(\n response => {\n this.activeLazyLoadDataRequestSubscription = null;\n this.handleLazyLoadResponse(response, selectedItems);\n this.isLoading = false;\n this.settings.onSuccess();\n },\n (err: HttpErrorResponse) => {\n this.activeLazyLoadDataRequestSubscription = null;\n this.isLoading = false;\n this.onLazyLoadError.emit(err);\n }\n );\n } else {\n this.isLoading = false;\n }\n } else if (this.hasMoreLazyLoadItems) {\n this.settings.requestOptions.page = page;\n\n if(this.settings.lazyLoadLambda) {\n this.activeLazyLoadDataRequestSubscription = this.settings.lazyLoadLambda(this.settings.requestOptions).subscribe(\n response => {\n this.activeLazyLoadDataRequestSubscription = null;\n this.handleLazyLoadResponse(response, selectedItems);\n this.isLoading = false;\n this.settings.onSuccess();\n },\n (err: HttpErrorResponse) => {\n this.activeLazyLoadDataRequestSubscription = null;\n this.isLoading = false;\n this.onLazyLoadError.emit(err);\n }\n );\n } else {\n this.isLoading = false;\n }\n\n } else {\n this.isLoading = false;\n }\n });\n }\n\n onModelChange(event: any) {\n const value = (this.settings.multiSelectSettings.selectionLimit === 1\n ? (event[0] || undefined)\n : (this.cloneValue(event) || undefined)\n );\n const valueKey = this.getValueKey(value);\n\n if (valueKey === this.valueKey) {\n return;\n }\n\n this.valueKey = valueKey;\n this.value = value;\n this.loadSelectedOptions();\n }\n\n\n private handleLazyLoadResponse(response: CollectionHttpResponse<any>, selectedItems: Array<IMultiSelectOption> = []) {\n const options: IMultiSelectOption[] = [];\n const rawOptions: any[] = [];\n for (const item of response.items) {\n const option = {id: this.settings.keyGetLambda(item), name: this.settings.valueGetLambda(item)};\n\n if (this.settings.translateOptionValue) {\n option.name = this.translate.instant(option.name);\n }\n\n if (!this.options.find(x => x.id === option.id)) {\n options.push(option);\n rawOptions.push(item);\n }\n }\n\n this.options = this.options.concat(options);\n this.rawOptions = this.rawOptions.concat(rawOptions);\n this.selectedHandleLazyLoadResponse(selectedItems);\n\n if (response.resultCount < response.itemsPerPage) {\n this.hasMoreLazyLoadItems = false;\n }\n }\n\n private selectedHandleLazyLoadResponse(selectedItems: Array<IMultiSelectOption> = []) {\n const newSelectedOptions: IMultiSelectOption[] = [];\n for (const option of selectedItems) {\n if (!this.options.find(x => x.id === option.id)) {\n newSelectedOptions.push(option);\n }\n }\n\n this.options = newSelectedOptions.concat(this.options);\n }\n}\n","<div>\n @if (settings.lazyLoad) {\n <ngx-bootstrap-multiselect\n #lazyLoadComponent\n (focus)=\"hasFocus = true\"\n (blur)=\"hasFocus = false\"\n [options]=\"options\"\n [disabled]=\"disabled\"\n [texts]=\"settings.multiSelectTexts\"\n [settings]=\"settings.multiSelectSettings\"\n [ngModel]=\"value\"\n (dropdownClosed)=\"closed.emit()\"\n (dropdownOpened)=\"onDropdownOpened()\"\n (ngModelChange)=\"onModelChange($event)\"\n (lazyLoad)=\"lazyLoadData($event)\"\n ></ngx-bootstrap-multiselect>\n }\n @if (!settings.lazyLoad) {\n <ngx-bootstrap-multiselect\n #noLazyLoadComponent\n (focus)=\"hasFocus = true\"\n (blur)=\"hasFocus = false\"\n [options]=\"options\"\n [disabled]=\"disabled\"\n (dropdownClosed)=\"closed.emit()\"\n (dropdownOpened)=\"opened.emit()\"\n [texts]=\"settings.multiSelectTexts\"\n [settings]=\"settings.multiSelectSettings\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n ></ngx-bootstrap-multiselect>\n }\n</div>\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {AbstractControl, UntypedFormControl} from '@angular/forms';\nimport {TranslatePipe} from \"@ngx-translate/core\";\n\n@Component({\n selector: 'nh-form-error-message',\n templateUrl: './form-error-message.component.html',\n styleUrls: ['./form-error-message.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class NhFormErrorMessageComponent implements OnInit {\n @Input() control: UntypedFormControl|AbstractControl|undefined;\n\n constructor() {\n }\n\n ngOnInit() {\n\n }\n\n getErrors(): Array<string> {\n const errors: Array<string> = [];\n if (this.control && this.control.errors) {\n if (this.control.errors['remote']) {\n for (const remoteErrorMsg of this.control.errors['remote']) {\n errors.push(remoteErrorMsg);\n }\n }\n }\n\n return errors;\n }\n}\n","@if (getErrors().length > 0) {\n <div class=\"error-list\">\n @for (error of this.getErrors(); track error) {\n <div>\n <p class=\"text-danger m-0\"><i>{{ error|translate }}</i></p>\n </div>\n }\n </div>\n}\n","import {DOCUMENT} from \"@angular/common\";\nimport {\n AfterContentInit,\n AfterViewInit,\n Component, inject,\n OnChanges,\n OnDestroy,\n OnInit,\n input, PLATFORM_ID, Type, model\n} from \"@angular/core\";\nimport {Observable, Subscription} from \"rxjs\";\nimport {ActivatedRoute, Router} from \"@angular/router\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {ToastrService} from \"ngx-toastr\";\nimport { ColumnMode } from \"@swimlane/ngx-datatable\";\nimport {BaseNhAuthService, NhAuthService} from \"../../services/nh-auth.service\";\nimport { NhModalService } from \"../../services/nh-modal.service\";\nimport {CollectionHttpRequestOptions, CollectionHttpResponse, OrderByRequestOptions} from \"../../models/http.models\";\nimport {ClaimTypes, INhAuthorization, NhAuthorization} from \"../../models/auth.models\";\nimport {NhRouterService} from \"../../services/nh-router.service\";\nimport {isPlatformServer} from \"@angular/common\";\nimport {NhAppService} from \"../../services/nh-app.service\";\nimport {NhApiUtil} from \"../../util/nh-api-util\";\nimport {NhAsyncLock} from \"../../util/nh-mutex.util\";\n\n@Component({\n selector: 'nh-shared-collection-base-component',\n template: ``,\n standalone: false\n})\n\nexport abstract class NhCollectionTypeBaseComponent<TCollectionResponseItem, TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>\n implements\n OnChanges,\n OnInit,\n AfterContentInit,\n AfterViewInit,\n OnDestroy\n{\n private readonly loadLock = new NhAsyncLock();\n protected readonly appService = inject(NhAppService);\n protected readonly ColumnMode = ColumnMode;\n protected document: Document = inject(DOCUMENT)\n protected platformId: Object = inject(PLATFORM_ID);\n protected static readonly URL_QUERY_PARAM_KEY = 'q';\n protected authService: TAuthService;\n protected modalService: NhModalService = inject(NhModalService);\n protected translateService: TranslateService = inject(TranslateService);\n protected toastrService: ToastrService = inject(ToastrService);\n protected router: Router = inject(Router);\n protected activatedRoute: ActivatedRoute = inject(ActivatedRoute);\n protected nhRouterService: NhRouterService = inject(NhRouterService);\n tableInfo: any = {offset: 0, limit: 10};\n claimTypes = ClaimTypes;\n readonly queryParamUpdates = model<boolean>(true);\n readonly localStorageUpdates = model<boolean>(true);\n protected filtersActive = false;\n protected isLoading: boolean = false;\n protected requestOptions = new CollectionHttpRequestOptions();\n private activeRequestSubscription: Subscription|undefined;\n protected collectionResponse: CollectionHttpResponse<TCollectionResponseItem> = new CollectionHttpResponse<TCollectionResponseItem>();\n\n private get localStorageKey(): string {\n if(this.localStorageUpdates() && (this.getLocalStoragePartialKey() ?? '').length < 1) {\n throw new Error('getLocalStoragePartialKey() must return a non-empty string when localStorageUpdates is true, implement getLocalStoragePartialKey() via override getLocalStoragePartialKey().');\n }\n\n return `app-filters-${this.getLocalStoragePartialKey() ?? ''}`;\n }\n\n get items(): TCollectionResponseItem[] {\n return this.collectionResponse.items ?? [];\n }\n\n protected constructor(\n authServiceType: Type<TAuthService>\n ) {\n this.authService = inject(authServiceType);\n }\n\n abstract onLoad(requestOptions: CollectionHttpRequestOptions): Promise<Observable<CollectionHttpResponse<TCollectionResponseItem>>>;\n abstract getInitialRequestOptions(): CollectionHttpRequestOptions;\n abstract getLocalStoragePartialKey(): string|null;\n\n async beforeLoad(): Promise<void> {\n\n }\n\n async afterLoad(): Promise<void> {\n\n }\n\n ngOnChanges(): void {\n this.appOnChanges().then();\n }\n\n ngOnInit(): void {\n this.initCollectionRequestModel();\n this.appOnInit().then();\n this.load().then();\n }\n\n ngAfterContentInit(): void {\n this.appAfterContentInit().then();\n }\n\n ngAfterViewInit(): void {\n this.appAfterViewInit().then();\n }\n\n ngOnDestroy(): void {\n this.appOnDestroy().then();\n this.activeRequestSubscription?.unsubscribe();\n }\n\n appOnChanges(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterContentInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterViewInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnDestroy(): Promise<void> {\n return Promise.resolve();\n }\n\n initCollectionRequestModel() {\n // Setup filters from url.\n if (this.queryParamUpdates() && this.activatedRoute.snapshot.queryParamMap.get(NhCollectionBaseComponent.URL_QUERY_PARAM_KEY)) {\n try {\n this.requestOptions = NhApiUtil.ParseCollectionRequestOptions(this.activatedRoute.snapshot.queryParamMap.get(NhCollectionBaseComponent.URL_QUERY_PARAM_KEY));\n } catch (ex) {\n }\n } else {\n let localStorageCollectionRequestModelSuccess = false;\n\n if (this.localStorageUpdates()) {\n const localStorageCollectionRequestModelString = this.appService.localStorage?.getItem(this.localStorageKey);\n\n if (localStorageCollectionRequestModelString && localStorageCollectionRequestModelString.length > 0) {\n try {\n this.requestOptions = NhApiUtil.ParseCollectionRequestOptions(localStorageCollectionRequestModelString);\n localStorageCollectionRequestModelSuccess = true;\n } catch (ex) {\n }\n }\n }\n\n if (!localStorageCollectionRequestModelSuccess) {\n this.requestOptions = this.getInitialRequestOptions();\n }\n }\n }\n\n private syncRequestOptionsToTableInfo() {\n if (this.requestOptions.page && this.requestOptions.itemsPerPage) {\n this.tableInfo.offset = (this.requestOptions.page - 1) * this.requestOptions.itemsPerPage;\n this.tableInfo.limit = this.requestOptions.itemsPerPage;\n } else {\n this.tableInfo.offset = 0;\n this.tableInfo.limit = 10; // Default value\n }\n\n this.tableInfo.sorts = this.requestOptions.orderBy?.map(orderBy => ({\n prop: orderBy.key,\n dir: orderBy.direction.toLowerCase()\n })) || [];\n }\n\n updateRequestOptions() {\n const q = JSON.stringify(this.requestOptions);\n\n this.syncRequestOptionsToTableInfo();\n\n const queryParams: any = {};\n queryParams[NhCollectionBaseComponent.URL_QUERY_PARAM_KEY] = q;\n\n // Set filters to url.\n if (this.queryParamUpdates()) {\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n skipLocationChange: false,\n replaceUrl: true,\n preserveFragment: true\n });\n }\n\n if(this.localStorageUpdates() && !isPlatformServer(this.platformId)) {\n localStorage.setItem(this.localStorageKey, JSON.stringify(this.requestOptions));\n }\n\n this.filtersActive = (q !== JSON.stringify(this.getInitialRequestOptions()));\n }\n\n resetRequestOptionsAndLoad() {\n this.resetRequestOptions();\n this.load().then();\n }\n\n resetRequestOptions() {\n this.requestOptions = this.getInitialRequestOptions();\n this.updateRequestOptions();\n }\n\n load(): Promise<CollectionHttpResponse<TCollectionResponseItem>> {\n return new Promise<CollectionHttpResponse<TCollectionResponseItem>>(async (resolve, reject) => {\n this.isLoading = true;\n await this.beforeLoad();\n this.updateRequestOptions();\n\n // Pass a copy instead of the source to allow modifications without it modifying the URL;\n // If u need them both modified, modify via this.requestOptions. in the load.\n const requestOptions = NhApiUtil.ParseCollectionRequestOptions(JSON.stringify(this.requestOptions));\n\n this.activeRequestSubscription?.unsubscribe();\n await this.loadLock.runExclusive(async () => {\n const loadObservable = await this.onLoad(requestOptions);\n this.activeRequestSubscription = loadObservable.subscribe({\n next: (response) => {\n this.isLoading = false;\n this.collectionResponse = response;\n resolve(response);\n this.afterLoad().then();\n },\n error: (error) => {\n this.isLoading = false;\n reject(error);\n }\n });\n });\n });\n }\n\n\n async search(search: string) {\n if(search === this.requestOptions.search) {\n return;\n }\n\n this.requestOptions.page = 1;\n this.requestOptions.search = search;\n await this.load();\n }\n\n async sort(event: any) {\n //\n // Override in child to handle ur self.\n //\n\n const sort = event.sorts[0];\n this.requestOptions.orderBy = [];\n\n const getOrderBy = (key: string) => {\n const orderBy = new OrderByRequestOptions();\n orderBy.key = key;\n orderBy.direction = sort.dir.toUpperCase();\n return orderBy;\n };\n\n this.requestOptions.orderBy.push(getOrderBy(sort.prop));\n\n await this.load();\n }\n\n async setPageByOffsetLimit(event: {offset: number, limit: number}) {\n await this.setPage({\n page: event.offset + 1,\n itemsPerPage: event.limit\n });\n }\n\n async setPage(event: {page: number, itemsPerPage: number}) {\n if(event.page === this.collectionResponse.page && event.itemsPerPage === this.collectionResponse.itemsPerPage) {\n return;\n }\n\n this.requestOptions.page = event.page;\n this.requestOptions.itemsPerPage = event.itemsPerPage;\n\n await this.load();\n }\n\n async firstPage() {\n this.requestOptions.page = 1;\n await this.load();\n }\n}\n\n\n@Component({\n selector: 'nh-shared-collection-type-base-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhCollectionBaseComponent<TCollectionResponseItem> extends NhCollectionTypeBaseComponent<TCollectionResponseItem, NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output, Type,\n ViewChild\n} from \"@angular/core\";\nimport {INhModalComponent, NhModalComponentRef, NhModalService} from \"../../services/nh-modal.service\";\nimport {BaseNhAuthService, NhAuthService} from \"../../services/nh-auth.service\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport { ToastrService } from \"ngx-toastr\";\nimport {ActivatedRoute} from \"@angular/router\";\nimport {ClaimTypes, INhAuthorization, NhAuthorization} from \"../../models/auth.models\";\nimport {\n AspMvcFormServerSideFormValidator,\n NhServerSideFormValidationService\n} from \"../../services/nh-server-side-form-validator.service\";\nimport {NgForm, UntypedFormControl} from \"@angular/forms\";\nimport { NhFormHelper } from \"../../util/nh-form.util\";\nimport { NhRouterService } from \"../../services/nh-router.service\";\nimport { NhTaskResultFormValidationService } from \"../../services/nh-task-result-form.validator\";\nimport { TaskResult } from \"../../models/misc.models\";\n\n\nexport enum MutationType {\n Create = 0,\n Update = 1\n}\n\n@Component({\n selector: 'nh-mutate-base-type-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhMutateBaseTypeComponent<TFormData, TResult, TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>\n implements\n OnChanges,\n OnInit,\n AfterContentInit,\n AfterViewInit,\n OnDestroy\n{\n protected authService: TAuthService;\n protected translateService: TranslateService = inject(TranslateService);\n protected toastrService: ToastrService = inject(ToastrService);\n protected activatedRoute: ActivatedRoute = inject(ActivatedRoute);\n protected nhRouterService: NhRouterService = inject(NhRouterService);\n protected formValidator: NhServerSideFormValidationService = inject(NhServerSideFormValidationService);\n protected taskResultFormValidator: NhTaskResultFormValidationService = inject(NhTaskResultFormValidationService);\n claimTypes = ClaimTypes;\n private _isLoading: boolean = false;\n private _isSubmitting: boolean = false;\n private _mutationType: MutationType = MutationType.Create;\n private _formData: TFormData|undefined;\n\n public get isLoading(): boolean {\n return this._isLoading;\n }\n\n protected set isLoading(value: boolean) {\n this._isLoading = value;\n }\n\n public get isSubmitting(): boolean {\n return this._isSubmitting;\n }\n\n protected set isSubmitting(value: boolean) {\n this._isSubmitting = value;\n }\n\n protected get isLoadingOrSubmitting(): boolean {\n return this.isLoading || this.isSubmitting;\n }\n\n public get mutationType(): MutationType {\n return this._mutationType;\n }\n\n protected set mutationType(value: MutationType) {\n this._mutationType = value;\n }\n\n public get formData(): TFormData|undefined {\n return this._formData;\n }\n\n protected set formData(value: TFormData|undefined) {\n this._formData = value;\n }\n\n @ViewChild(NgForm) form: any|undefined;\n @Output() created = new EventEmitter<TResult>();\n @Output() updated = new EventEmitter<TResult>();\n\n protected constructor(\n authServiceType: Type<TAuthService>\n ) {\n this.authService = inject(authServiceType);\n }\n\n abstract onNewFormData(mutationType: MutationType): Promise<TFormData>;\n abstract onSubmitCreate(event: any): Promise<TaskResult<TResult>>;\n abstract onSubmitUpdate(event: any): Promise<TaskResult<TResult>>;\n\n\n\n ngOnChanges(): void {\n this.appOnChanges().then();\n }\n\n ngOnInit(): void {\n this.appOnInit().then();\n }\n\n ngAfterContentInit(): void {\n this.appAfterContentInit().then();\n }\n\n ngAfterViewInit(): void {\n this.appAfterViewInit().then();\n }\n\n ngOnDestroy(): void {\n this.appOnDestroy().then();\n }\n\n appOnChanges(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterContentInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appAfterViewInit(): Promise<void> {\n return Promise.resolve();\n }\n\n appOnDestroy(): Promise<void> {\n return Promise.resolve();\n }\n\n public async newFormData(mutationType: MutationType) {\n if(this.isLoadingOrSubmitting) {\n return;\n }\n\n try {\n if(this.form) {\n NhFormHelper.clearErrors(this.form);\n this.form.controls[''] = new UntypedFormControl(); // Add Empty control for default errors\n }\n }catch(ex) {}\n\n try {\n this.isLoading = true;\n this.mutationType = mutationType;\n this.formData = await this.onNewFormData(mutationType);\n\n } catch (ex) {\n console.error(ex);\n } finally {\n this.isLoading = false;\n }\n }\n\n async submit(event: any, handleAll: boolean = true) {\n if(this.isLoadingOrSubmitting) {\n return;\n }\n\n this.isSubmitting = true;\n\n try {\n if(this.form) {\n this.form.controls[''] = new UntypedFormControl(); // Add Empty control for default errors\n NhFormHelper.clearErrors(this.form);\n }\n\n try {\n if (this.mutationType === MutationType.Create) {\n const createResult = await this.onSubmitCreate(event);\n if(!createResult.isSuccess) {\n this.taskResultFormValidator.validate(this.form, createResult.items);\n return;\n }\n\n if(handleAll) {\n this.created.emit(createResult.data);\n }\n } else {\n const updateResult = await this.onSubmitUpdate(event);\n if(!updateResult.isSuccess) {\n this.taskResultFormValidator.validate(this.form, updateResult.items);\n return;\n }\n\n if(handleAll) {\n this.updated.emit(updateResult.data);\n }\n }\n\n if(handleAll) {\n this.form.reset();\n await this.newFormData(this.mutationType);\n }\n } catch (err: any) {\n console.error(err);\n if (err.error instanceof Error) {\n this.form.controls[''].setErrors({remote: [this.translateService.instant('An unknown error occurred.')]});\n } else {\n this.formValidator.validate(AspMvcFormServerSideFormValidator, this.form, err);\n }\n }\n } finally {\n this.isSubmitting = false;\n }\n }\n}\n\n@Component({\n selector: 'nh-mutate-base-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhMutateBaseComponent<TFormData, TResult> extends NhMutateBaseTypeComponent<TFormData, TResult, NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n","import {\n Component,\n HostListener,\n inject,\n OnDestroy,\n OnInit,\n Output, Type,\n} from \"@angular/core\";\nimport {INhModalComponent, NhModalComponentRef, NhModalService} from \"../../services/nh-modal.service\";\nimport {BaseNhAuthService, NhAuthService} from \"../../services/nh-auth.service\";\nimport {INhAuthorization, NhAuthorization} from \"../../models/auth.models\";\nimport {NhMutateBaseTypeComponent} from \"../nh-mutate-base-component/component\";\n\n@Component({\n selector: 'nh-modal-mutate-base-type-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhModalMutateBaseTypeComponent<TFormData, TResult, TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>\n extends NhMutateBaseTypeComponent<TFormData, TResult, TAuthorization, TAuthService>\n implements\n OnInit,\n OnDestroy,\n INhModalComponent<NhModalMutateBaseTypeComponent<TFormData, TResult, TAuthorization, TAuthService>>\n{\n protected modalComponentRef: NhModalComponentRef<NhModalMutateBaseTypeComponent<TFormData, TResult, TAuthorization, TAuthService>>|undefined;\n protected modalService: NhModalService = inject(NhModalService);\n\n setModalComponentRef(ref: NhModalComponentRef<NhModalMutateBaseTypeComponent<TFormData, TResult, TAuthorization, TAuthService>>): void {\n this.modalComponentRef = ref;\n }\n\n protected constructor(\n authServiceType: Type<TAuthService>\n ) {\n super(authServiceType);\n }\n\n @HostListener('document:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.stopImmediatePropagation();\n this.closeDialog({});\n }\n }\n\n closeDialog(event?: any) {\n this.modalComponentRef?.close();\n }\n}\n\n@Component({\n selector: 'nh-modal-mutate-base-component',\n template: ``,\n standalone: false\n})\nexport abstract class NhModalMutateBaseComponent<TFormData, TResult> extends NhModalMutateBaseTypeComponent<TFormData, TResult, NhAuthorization, NhAuthService> {\n constructor() {\n super(NhAuthService);\n }\n}\n","import {Component, input} from '@angular/core'\nimport { TaskResult } from '../../models/misc.models';\n\n@Component({\n selector: 'nh-error',\n templateUrl: 'component.html',\n styleUrls: ['component.scss'],\n standalone: false\n})\nexport class NhErrorComponent {\n key = input.required<string | undefined>();\n errors = input.required<TaskResult<any> | undefined>();\n\n\n get displayErrors() {\n if(this.key() == undefined) {\n return this.errors()?.items.reduce((a,b) => [...a, ...b.errorMessages] ,<string[]>[]) || [];\n }\n\n return this.errors()?.items.find(x => x.name?.toLowerCase() === this.key()?.toLowerCase())?.errorMessages || []\n }\n}\n","\n@if(displayErrors.length > 0) {\n <ul class=\"text-danger validation-errors\">\n @for(error of displayErrors; track $index) {\n <li>{{error}}</li>\n }\n </ul>\n}\n\n","import {Component, inject, Input, input} from '@angular/core'\nimport { TaskResult } from '../../models/misc.models';\n\nimport {Observable} from 'rxjs';\nimport { NhCollectionBaseComponent } from '../nh-collection-base-component/component';\nimport {\n NhUserNotification,\n NhUserNotificationCollectionHttpRequestOptions, NhUserNotificationState\n} from '../../models/user-notification.models';\nimport {NhUserNotificationService} from \"../../services/nh-user-notification.service\";\nimport {NhCommonModuleConfig} from \"../../models/config.models\";\nimport {CollectionHttpResponse} from \"../../models/http.models\";\n\n@Component({\n selector: 'nh-user-notifications-abstract',\n template: ``,\n standalone: false\n})\nexport abstract class NhUserNotificationsAbstractComponent extends NhCollectionBaseComponent<NhUserNotification> {\n @Input() allowStart: boolean = true;\n @Input() allowStop: boolean = true;\n @Input() itemsPerPage: number = 999;\n @Input() autoLoadNotificationChanges: boolean = true;\n protected readonly userNotificationService: NhUserNotificationService = inject(NhUserNotificationService);\n protected readonly moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n readonly partialLocalStorageKey = input<string>('nh-user-notification-collection');\n override requestOptions = new NhUserNotificationCollectionHttpRequestOptions();\n userNotificationState = this.userNotificationService.state;\n private lastNotificationDate = this.userNotificationState.overview.lastNotificationDate;\n private lastNotificationCount = this.userNotificationState.overview.totalCount;\n private lastUnreadNotificationCount = this.userNotificationState.overview.unreadCount;\n protected userNotificationSubscription = this.userNotificationService.userNotificationState$.subscribe(async (state) => {\n this.userNotificationState = state;\n\n const hasNewNotifications = this.lastNotificationDate !== this.userNotificationState.overview.lastNotificationDate;\n const countChanged = this.lastNotificationCount !== this.userNotificationState.overview.totalCount;\n const unreadCountChanged = this.lastUnreadNotificationCount !== this.userNotificationState.overview.unreadCount;\n\n if(hasNewNotifications || countChanged || unreadCountChanged) {\n if(this.autoLoadNotificationChanges) {\n try {\n await this.reload();\n }catch (ex) {\n console.error('Error while loading new notifications:', ex);\n }\n }\n\n this.onNewNotificationsAvailable(state).catch((error) => {\n console.error('Error handling user notification state change:', error);\n });\n\n this.captureOverview(state);\n }\n });\n\n constructor() {\n super();\n }\n\n protected onNewNotificationsAvailable(state: NhUserNotificationState): Promise<void> {\n return Promise.resolve();\n }\n\n override async appOnInit(): Promise<void> {\n await super.appOnInit();\n if(this.allowStart) {\n this.userNotificationService.start();\n }\n }\n\n override async appOnDestroy(): Promise<void> {\n if(this.allowStop) {\n this.userNotificationService.stop();\n }\n\n this.userNotificationSubscription?.unsubscribe();\n await super.appOnDestroy();\n }\n\n getInitialRequestOptions() {\n return new NhUserNotificationCollectionHttpRequestOptions({\n itemsPerPage: this.moduleConfig.defaultItemsPerPage\n });\n }\n\n override getLocalStoragePartialKey(): string | null {\n return this.partialLocalStorageKey();\n }\n\n async onLoad(requestOptions: NhUserNotificationCollectionHttpRequestOptions) {\n return <Observable<CollectionHttpResponse<NhUserNotification>>>this.userNotificationService.getNotifications(requestOptions);\n }\n\n override async afterLoad() {\n this.captureOverview(this.userNotificationState);\n }\n\n async reload() {\n const currentPage = this.requestOptions.page;\n const itemsPerPage = this.requestOptions.itemsPerPage;\n\n const loadPromises: any[] = [];\n\n for(let i = 1; i <= currentPage; i++) {\n const requestOptions = <NhUserNotificationCollectionHttpRequestOptions>JSON.parse(JSON.stringify(this.requestOptions));\n requestOptions.page = i;\n const loadObservable = await this.onLoad(requestOptions);\n loadPromises.push(loadObservable.lastValueFrom());\n }\n\n const results = await Promise.all(loadPromises);\n this.userNotificationService.loadState().then();\n\n this.collectionResponse.items = [];\n\n for(const result of results) {\n if(result && result.items) {\n this.collectionResponse.items.push(...result.items);\n }\n }\n }\n\n async markAsRead(notification: NhUserNotification): Promise<TaskResult<unknown>> {\n const taskResult = new TaskResult();\n try {\n await this.userNotificationService.markAsRead(notification.id).lastValueFrom();\n this.userNotificationService.loadState().then();\n notification.isLastRead = true;\n }catch (ex) {\n taskResult.addError('', 'Something went wrong while marking the notification as read.');\n return taskResult;\n }\n\n return taskResult;\n }\n\n async markAllAsRead(): Promise<TaskResult<unknown>> {\n const taskResult = new TaskResult();\n try {\n await this.userNotificationService.markAllAsRead().lastValueFrom();\n this.reload().then();\n } catch (ex) {\n taskResult.addError('', 'Something went wrong while marking all notifications as read.');\n return taskResult;\n }\n\n return taskResult;\n }\n\n async archive(notification: NhUserNotification): Promise<TaskResult<unknown>> {\n const taskResult = new TaskResult();\n try {\n await this.userNotificationService.archive(notification.id).lastValueFrom();\n this.collectionResponse.items = this.collectionResponse.items.filter(item => item.id !== notification.id);\n }catch (ex) {\n taskResult.addError('', 'Something went wrong while marking the notification as archived.');\n return taskResult;\n }\n\n this.collectionResponse.items = this.collectionResponse.items.filter(item => item.id !== notification.id);\n\n return taskResult;\n }\n\n async archiveAll(): Promise<TaskResult<unknown>> {\n const taskResult = new TaskResult();\n try {\n await this.userNotificationService.archiveAll().lastValueFrom();\n this.collectionResponse.items = [];\n this.reload().then();\n } catch (ex) {\n taskResult.addError('', 'Something went wrong while marking all notifications archived.');\n return taskResult;\n }\n\n await this.firstPage();\n\n return taskResult;\n }\n\n private captureOverview(state: NhUserNotificationState): void {\n this.lastNotificationDate = state.overview.lastNotificationDate;\n this.lastNotificationCount = state.overview.totalCount;\n this.lastUnreadNotificationCount = state.overview.unreadCount;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n NhBackgroundOperation,\n NhBackgroundOperationChild,\n NhBackgroundOperationStatus,\n NhBackgroundOperationStep,\n NhBackgroundOperationStepStatus,\n nhBackgroundOperationStatusName,\n nhBackgroundOperationStepStatusName,\n nhBackgroundOperationTranslationSegment\n} from '../../models/background-operation.models';\n\n@Component({\n selector: 'nh-background-operation-progress',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './component.html',\n styleUrl: './component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NhBackgroundOperationProgressComponent {\n @Input({ required: true }) operation!: NhBackgroundOperation;\n @Input() showEvents = true;\n @Input() showActions = false;\n @Output() cancelRequested = new EventEmitter<string>();\n @Output() retryRequested = new EventEmitter<string>();\n\n statusKey(status: NhBackgroundOperationStatus): string {\n return `nh-background-operations.status.${nhBackgroundOperationTranslationSegment(nhBackgroundOperationStatusName(status))}`;\n }\n\n stepStatusKey(status: NhBackgroundOperationStepStatus): string {\n return `nh-background-operations.step-status.${nhBackgroundOperationTranslationSegment(nhBackgroundOperationStepStatusName(status))}`;\n }\n\n stepTitle(step: NhBackgroundOperationStep): string {\n return step.titleKey || step.stepKey;\n }\n\n percentage(value?: number): number {\n if (value === undefined || value === null || !Number.isFinite(value)) {\n return 0;\n }\n return Math.max(0, Math.min(100, value));\n }\n\n arguments(json?: string): Record<string, unknown> {\n if (!json) {\n return {};\n }\n try {\n const value = JSON.parse(json);\n return typeof value === 'object' && value !== null ? value : {};\n } catch {\n return {};\n }\n }\n\n hasBatch(step: NhBackgroundOperationStep): boolean {\n return step.discoveredItems > 0 || step.processedItems > 0 || step.activeItems > 0;\n }\n\n childLabel(child: NhBackgroundOperationChild): string {\n return child.fanOutItemKey || child.operationType;\n }\n\n canCancel(status: NhBackgroundOperationStatus): boolean {\n return !['Succeeded', 'Failed', 'Cancelled', 'TimedOut'].includes(nhBackgroundOperationStatusName(status));\n }\n\n canRetry(operation: NhBackgroundOperation): boolean {\n return !operation.sensitiveDataRedactedAt\n && ['Failed', 'Cancelled', 'TimedOut'].includes(nhBackgroundOperationStatusName(operation.status));\n }\n}\n","<section class=\"nh-operation\" [attr.data-status]=\"statusKey(operation.status)\">\n <header class=\"nh-operation__header\">\n <div>\n <p class=\"nh-operation__eyebrow\">{{ 'nh-background-operations.operation' | translate }}</p>\n <h2>{{ operation.operationType }}</h2>\n </div>\n <span class=\"nh-operation__status\">{{ statusKey(operation.status) | translate }}</span>\n </header>\n\n <div class=\"nh-operation__overall\">\n <div class=\"nh-operation__progress-label\">\n <span>{{ operation.progressMessageKey ? (operation.progressMessageKey | translate: arguments(operation.progressMessageArgumentsJson)) : ('nh-background-operations.progress' | translate) }}</span>\n <strong>{{ percentage(operation.progressPercentage) | number:'1.0-1' }}%</strong>\n </div>\n <div class=\"nh-operation__progress\" role=\"progressbar\"\n [attr.aria-label]=\"'nh-background-operations.overall-progress' | translate\"\n aria-valuemin=\"0\" aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage(operation.progressPercentage)\">\n <span [style.width.%]=\"percentage(operation.progressPercentage)\"></span>\n </div>\n </div>\n\n @if (showActions && (canCancel(operation.status) || canRetry(operation))) {\n <div class=\"nh-operation__actions\">\n @if (canCancel(operation.status)) {\n <button type=\"button\" (click)=\"cancelRequested.emit(operation.id)\">\n {{ 'nh-background-operations.cancel' | translate }}\n </button>\n }\n @if (canRetry(operation)) {\n <button type=\"button\" (click)=\"retryRequested.emit(operation.id)\">\n {{ 'nh-background-operations.retry' | translate }}\n </button>\n }\n </div>\n }\n\n <div class=\"nh-operation__steps\" role=\"list\" [attr.aria-label]=\"'nh-background-operations.steps' | translate\">\n <ng-template #renderStep let-step let-depth=\"depth\">\n <article class=\"nh-step\" role=\"listitem\" [style.--nh-step-depth]=\"depth\">\n <div class=\"nh-step__heading\">\n <div>\n <strong>{{ stepTitle(step) | translate: arguments(step.titleArgumentsJson) }}</strong>\n @if (step.messageKey) {\n <span>{{ step.messageKey | translate: arguments(step.messageArgumentsJson) }}</span>\n }\n </div>\n <span class=\"nh-step__status\">{{ stepStatusKey(step.status) | translate }}</span>\n </div>\n <div class=\"nh-step__progress\" role=\"progressbar\"\n [attr.aria-label]=\"stepTitle(step) | translate: arguments(step.titleArgumentsJson)\"\n aria-valuemin=\"0\" aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage(step.percentage)\">\n <span [style.width.%]=\"percentage(step.percentage)\"></span>\n </div>\n @if (hasBatch(step)) {\n <dl class=\"nh-step__batch\">\n <div><dt>{{ 'nh-background-operations.batch.processed' | translate }}</dt><dd>{{ step.processedItems }} / {{ step.discoveredItems }}</dd></div>\n <div><dt>{{ 'nh-background-operations.batch.succeeded' | translate }}</dt><dd>{{ step.succeededItems }}</dd></div>\n <div><dt>{{ 'nh-background-operations.batch.failed' | translate }}</dt><dd>{{ step.failedItems }}</dd></div>\n <div><dt>{{ 'nh-background-operations.batch.skipped' | translate }}</dt><dd>{{ step.skippedItems }}</dd></div>\n @if (step.retriedItems > 0) {\n <div><dt>{{ 'nh-background-operations.batch.retried' | translate }}</dt><dd>{{ step.retriedItems }}</dd></div>\n }\n @if (step.activeItems > 0) {\n <div><dt>{{ 'nh-background-operations.batch.active' | translate }}</dt><dd>{{ step.activeItems }}</dd></div>\n }\n </dl>\n }\n </article>\n @for (child of step.children; track child.id) {\n <ng-container *ngTemplateOutlet=\"renderStep; context: {$implicit: child, depth: depth + 1}\"></ng-container>\n }\n </ng-template>\n\n @for (step of operation.steps; track step.id) {\n <ng-container *ngTemplateOutlet=\"renderStep; context: {$implicit: step, depth: 0}\"></ng-container>\n } @empty {\n <p class=\"nh-operation__empty\">{{ 'nh-background-operations.no-steps' | translate }}</p>\n }\n </div>\n\n @if (operation.children.length > 0) {\n <section class=\"nh-operation__children\">\n <h3>{{ 'nh-background-operations.children' | translate }}</h3>\n <div role=\"list\" [attr.aria-label]=\"'nh-background-operations.children' | translate\">\n <ng-template #renderChild let-child let-depth=\"depth\">\n <article class=\"nh-child\" role=\"listitem\" [style.--nh-child-depth]=\"depth\">\n <div class=\"nh-child__heading\">\n <div>\n <strong>{{ childLabel(child) }}</strong>\n <span>{{ child.operationType }}</span>\n </div>\n <span class=\"nh-child__status\">{{ statusKey(child.status) | translate }}</span>\n </div>\n <div class=\"nh-step__progress\" role=\"progressbar\"\n [attr.aria-label]=\"childLabel(child)\"\n aria-valuemin=\"0\" aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"percentage(child.progressPercentage)\">\n <span [style.width.%]=\"percentage(child.progressPercentage)\"></span>\n </div>\n @if (child.resultUrl) {\n <a [href]=\"child.resultUrl\">{{ 'nh-background-operations.open-result' | translate }}</a>\n }\n </article>\n @for (nestedChild of child.children; track nestedChild.id) {\n <ng-container *ngTemplateOutlet=\"renderChild; context: {$implicit: nestedChild, depth: depth + 1}\"></ng-container>\n }\n </ng-template>\n\n @for (child of operation.children; track child.id) {\n <ng-container *ngTemplateOutlet=\"renderChild; context: {$implicit: child, depth: 0}\"></ng-container>\n }\n </div>\n </section>\n }\n\n @if (showEvents && operation.events.length > 0) {\n <section class=\"nh-operation__events\">\n <h3>{{ 'nh-background-operations.activity' | translate }}</h3>\n <ol>\n @for (event of operation.events; track event.id) {\n @if (event.messageKey) {\n <li [class.nh-operation__event--operator]=\"event.isOperatorOnly\">\n <time [attr.datetime]=\"event.creationDateTime\">{{ event.creationDateTime | date:'short' }}</time>\n <span>\n {{ event.messageKey | translate: arguments(event.messageArgumentsJson) }}\n @if (event.isOperatorOnly) {\n <small class=\"nh-operation__event-badge\">{{ 'nh-background-operations.operator-only' | translate }}</small>\n }\n </span>\n @if (event.resultUrl) {\n <a [href]=\"event.resultUrl\">{{ 'nh-background-operations.open-result' | translate }}</a>\n }\n </li>\n }\n }\n </ol>\n </section>\n }\n</section>\n","import { Component, EventEmitter, Input, Output, ViewChild, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'nh-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss'],\n standalone: false\n})\nexport class NhSearchInputComponent {\n @Input() value : string | undefined = '';\n @Output() onDebounce = new EventEmitter<string>();\n open = false;\n @ViewChild('searchInput') searchInput?: ElementRef<HTMLInputElement>;\n\n focusInput(): void {\n this.searchInput?.nativeElement.focus();\n }\n\n onDebounceEvent(val: Event): void {\n this.onDebounce.emit(val?.toString());\n }\n}\n","<div class=\"filter search-filter\" [class.open]=\"open || value\">\n <div class=\" mb-2\" (click)=\"focusInput()\">\n <input #searchInput (focusin)=\"open = true\" (focusout)=\"open = false\" class=\"form-control\" type=\"text\" placeholder=\"{{ 'general.search' | translate }}...\"\n [ngModel]=\"value\" [nhDebounce]=\"500\" (onDebounce)=\"onDebounceEvent($event)\" />\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {of} from 'rxjs';\nimport {AbstractValueAccessor, MakeProvider} from \"../../accessors/abstract-value.accessor\";\nimport {DefaultMultiSelectSettings, NhFormDropDownSettings} from \"../nh-form-dropdown/form-dropdown.component\";\n\n@Component({\n selector: 'nh-page-size',\n templateUrl: './page-size.component.html',\n styleUrls: ['./page-size.component.scss'],\n standalone: false,\n providers: [MakeProvider(NhPageSizeComponent)],\n})\nexport class NhPageSizeComponent extends AbstractValueAccessor {\n isDisabled = false;\n @Input() name: string = 'page-size';\n\n pageSizeDropDownSettings = new NhFormDropDownSettings({\n lazyLoad: false,\n loadLambda: () => of([\n {id: 10, value: 10},\n {id: 25, value: 25},\n {id: 50, value: 50},\n {id: 100, value: 100},\n ]),\n keyGetLambda: x => x.id,\n valueGetLambda: x => x.value,\n multiSelectSettings: new DefaultMultiSelectSettings({selectionLimit: 1, closeOnSelect: true, enableSearch: false})\n });\n\n setDisabledState?(isDisabled: boolean): void {\n // optional: disable your input\n this.isDisabled = isDisabled;\n }\n}\n","@if (pageSizeDropDownSettings) {\n <div class=\"filter dropdown-with-icon\">\n @if (value) {\n <nh-form-dropdown\n [name]=\"name\"\n [(ngModel)]=\"value\"\n [settings]=\"pageSizeDropDownSettings\"></nh-form-dropdown>\n }\n </div>\n}\n","import {\n ActivatedRouteSnapshot, CanActivateFn, CanDeactivate, GuardResult, MaybeAsync,\n RouterStateSnapshot\n} from \"@angular/router\";\nimport {Observable, tap} from \"rxjs\";\n\n\nexport class NhCanCancelNavigationGuard implements CanDeactivate<ICancelNavigationComponent> {\n canDeactivate(component: ICancelNavigationComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState: RouterStateSnapshot): MaybeAsync<GuardResult> {\n if (!component.canDeactivateComponent) {\n return true;\n }\n\n const result = component.canDeactivateComponent();\n if ((<any>result)?.then) {\n return (<Promise<boolean>>result).then(x => {\n if(x === false) {\n console.debug('Navigation cancelled by component (promise)');\n }\n return x;\n })\n }\n\n if ((<any>result)?.subscribe) {\n return (<Observable<boolean>>result).pipe(tap(x => {\n if(x === false) {\n console.debug('Navigation cancelled by component (observable)');\n }\n }))\n }\n\n if (result === false) {\n console.debug('Navigation cancelled by component');\n }\n return result;\n }\n\n}\n\nexport interface ICancelNavigationComponent {\n canDeactivateComponent(): boolean | Promise<boolean> | Observable<boolean>;\n}\n","import {\n HttpInterceptor,\n HttpRequest,\n HttpHandler,\n HttpParams, HttpEvent\n} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhAuthService } from '../services/nh-auth.service';\nimport { NhApiService } from '../services/nh-api.service';\n\n@Injectable()\nexport class NhActiveDivisionInterceptor implements HttpInterceptor {\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private authService: NhAuthService\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let headers = req.headers;\n\n if(req.url.startsWith(this.moduleConfig.apiBaseUrl) || req.url.startsWith(this.moduleConfig.authApiBaseUrl)) {\n const authorization = this.authService.getAuthorization();\n if((authorization?.activeDivision?.id?.length ?? 0) > 0) {\n if(!headers.get(NhApiService.ActiveDivisionHeaderKey)) {\n headers = headers.append(NhApiService.ActiveDivisionHeaderKey, authorization?.activeDivision?.id ?? '');\n }\n }\n }\n\n return next.handle(req.clone({headers}));\n }\n}\n","import {\n HttpInterceptor,\n HttpRequest,\n HttpHandler,\n HttpParams, HttpEvent\n} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport { NhCommonModuleConfig } from '../models/config.models';\nimport { NhAuthService } from '../services/nh-auth.service';\nimport { NhApiService } from '../services/nh-api.service';\n\n@Injectable()\nexport class NhApiAuthInterceptor implements HttpInterceptor {\n constructor(\n private moduleConfig: NhCommonModuleConfig,\n private authService: NhAuthService\n ) {\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let headers = req.headers;\n if(this.moduleConfig.authType !== 'header') {\n return next.handle(req.clone({headers}));\n }\n if(this.moduleConfig?.authentication?.addAuthTokensToRequests === true && req.url.startsWith(this.moduleConfig.apiBaseUrl) || req.url.startsWith(this.moduleConfig.authApiBaseUrl)) {\n const authorization = this.authService.getAuthorization();\n if((authorization?.token?.length ?? 0) > 0) {\n if(!headers.get('Authorization')) {\n headers = headers.append('Authorization', `Bearer ${authorization?.token ?? ''}`);\n }\n }\n }\n\n return next.handle(req.clone({headers}));\n }\n}\n","import {\n ErrorHandler,\n inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n provideAppInitializer,\n SkipSelf,\n Type\n} from \"@angular/core\";\nimport {CommonModule} from \"@angular/common\";\nimport {\n HTTP_INTERCEPTORS,\n provideHttpClient,\n withFetch,\n withInterceptorsFromDi\n} from \"@angular/common/http\";\nimport {\n IsAuthenticatedPipe,\n IsAllPermissionsGrantedPipe,\n IsClaimGrantedPipe, IsGrantedRolePipe, IsOneActiveDivisionPermissionGrantedPipe, IsOneActiveDivisionRoleGrantedPipe,\n IsOneClaimGrantedPipe, IsOneDivisionPermissionGrantedPipe, IsOneDivisionRoleGrantedPipe,\n IsOnePermissionGrantedPipe, IsOneRoleGrantedPipe\n} from \"./pipes/auth.pipes\";\nimport {NhDatePipe, NhDateTimePipe, NhDateUtcPipe} from \"./pipes/date.pipes\";\nimport {NhBooleanToStringPipe} from \"./pipes/primitive-type.pipes\";\nimport {NhUrlEncodePipe} from \"./pipes/encode.pipes\";\nimport {NhEncodeHttpParamsInterceptor} from \"./interceptors/nh-encode-http-params.interceptor\";\nimport {NhCommonModuleConfig} from \"./models/config.models\";\nimport {NhToHeadDirective} from \"./directives/nh-to-head.directive\";\nimport {NhButtonDebounceDirective, NhDebounceDirective} from \"./directives/nh-debounce.directives\";\nimport {NhModalComponent} from \"./components/nh-modal/component\";\nimport {NhModalContentDirective} from \"./directives/nh-modal.directives\";\nimport {NhLoaderComponent} from \"./components/nh-loader/component\";\nimport {NhTaskResultFormValidationService} from \"./services/nh-task-result-form.validator\";\nimport {NhJsonLdComponent} from \"./components/nh-json-ld/nh-json-ld.component\";\nimport {NhModalLoadingComponent} from \"./components/nh-loading-modal/component\";\nimport {NhModalConfirmComponent} from \"./components/nh-confirm-modal/component\";\nimport {TranslateModule} from \"@ngx-translate/core\";\nimport {SafeHtmlPipe, SafeResourceUrlPipe, SafeUrlPipe} from \"./pipes/safe-html.pipes\";\nimport {NhCookieService} from \"./services/nh-cookie.service\";\nimport {NhRouterLinkDirective} from \"./directives/nh-router-link.directive\";\nimport {NhServerHttpInterceptor} from \"./interceptors/nh-server-http.interceptor\";\nimport {NhCanCancelNavigationGuard} from \"./guards/nh-cancel-navigation.guard\";\nimport {NhInternetConnectionService} from \"./services/nh-internet-connection.service\";\nimport {NhConfigCommonService} from \"./services/nh-config.service\";\nimport {Observable} from \"rxjs\";\nimport {NhActiveDivisionInterceptor} from \"./interceptors/nh-active-division.interceptor\";\nimport {NhDeduplicateGetRequestsInterceptor} from \"./interceptors/nh-deduplicate-get-requests.interceptor\";\nimport {NhFormDropDownComponent} from \"./components/nh-form-dropdown/form-dropdown.component\";\nimport {NgxBootstrapMultiselectModule} from \"ngx-bootstrap-multiselect\";\nimport {FormsModule} from \"@angular/forms\";\nimport {NhServerSideFormValidationService} from \"./services/nh-server-side-form-validator.service\";\nimport {NhFormErrorMessageComponent} from \"./components/nh-form-error-message/form-error-message.component\";\nimport {NhApiAuthInterceptor} from \"./interceptors/nh-api.auth.interceptor\";\nimport {NhSessionRejectionInterceptor} from \"./interceptors/nh-session-rejection.interceptor\";\nimport {NhErrorComponent} from \"./components/nh-error/component\";\nimport {BaseNhAuthService, NhAuthService} from \"./services/nh-auth.service\";\nimport {INhAuthorization} from \"./models/auth.models\";\nimport {NH_ERROR_HANDLERS, NhErrorHandlerService} from \"./services/nh-error-handler.service\";\nimport {NhPageSizeComponent} from \"./components/nh-page-size/page-size.component\";\nimport {NhSearchInputComponent} from \"./components/nh-search-input/search-input.component\";\n\n\n@NgModule({\n imports: [\n CommonModule,\n TranslateModule,\n NgxBootstrapMultiselectModule,\n FormsModule\n ],\n declarations: [\n // Components\n NhModalComponent,\n NhLoaderComponent,\n NhJsonLdComponent,\n NhModalLoadingComponent,\n NhModalConfirmComponent,\n NhFormDropDownComponent,\n NhFormErrorMessageComponent,\n NhErrorComponent,\n NhPageSizeComponent,\n NhSearchInputComponent,\n // Pipes\n NhDatePipe,\n NhDateTimePipe,\n NhDateUtcPipe,\n NhBooleanToStringPipe,\n IsAuthenticatedPipe,\n IsAllPermissionsGrantedPipe,\n IsOnePermissionGrantedPipe,\n IsClaimGrantedPipe,\n IsOneClaimGrantedPipe,\n IsOneRoleGrantedPipe,\n IsGrantedRolePipe,\n IsOneDivisionPermissionGrantedPipe,\n IsOneDivisionRoleGrantedPipe,\n IsOneActiveDivisionPermissionGrantedPipe,\n IsOneActiveDivisionRoleGrantedPipe,\n NhUrlEncodePipe,\n SafeHtmlPipe,\n SafeUrlPipe,\n SafeResourceUrlPipe,\n // Directives\n NhToHeadDirective,\n NhDebounceDirective,\n NhButtonDebounceDirective,\n NhModalContentDirective,\n NhRouterLinkDirective\n ],\n exports: [\n // Components\n NhModalComponent,\n NhLoaderComponent,\n NhJsonLdComponent,\n NhModalLoadingComponent,\n NhModalConfirmComponent,\n NhFormDropDownComponent,\n NhFormErrorMessageComponent,\n NhErrorComponent,\n NhPageSizeComponent,\n NhSearchInputComponent,\n // Pipes\n NhDatePipe,\n NhDateTimePipe,\n NhDateUtcPipe,\n NhBooleanToStringPipe,\n IsAuthenticatedPipe,\n IsAllPermissionsGrantedPipe,\n IsOnePermissionGrantedPipe,\n IsClaimGrantedPipe,\n IsOneClaimGrantedPipe,\n IsOneRoleGrantedPipe,\n IsOneDivisionPermissionGrantedPipe,\n IsOneDivisionRoleGrantedPipe,\n IsOneActiveDivisionPermissionGrantedPipe,\n IsOneActiveDivisionRoleGrantedPipe,\n IsGrantedRolePipe,\n NhUrlEncodePipe,\n SafeHtmlPipe,\n SafeUrlPipe,\n SafeResourceUrlPipe,\n // Directives\n NhToHeadDirective,\n NhDebounceDirective,\n NhButtonDebounceDirective,\n NhModalContentDirective,\n NhRouterLinkDirective\n ],\n providers: [\n provideAppInitializer(() => {\n const configService = inject(NhConfigCommonService);\n return new Observable<unknown>((observer) => {\n //\n // We use APP_INITIALIZER to load the configuration before the application starts. (Cuz DEPS calls for AppConfigService it is loaded soon in the lifecycle of the app.)\n //\n configService.initialize().then(() => {\n observer.next({});\n observer.complete();\n }, (err) => {\n observer.error(err);\n observer.complete();\n });\n });\n }),\n // Interceptors\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhActiveDivisionInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhApiAuthInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhSessionRejectionInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhEncodeHttpParamsInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhServerHttpInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NhDeduplicateGetRequestsInterceptor,\n multi: true\n },\n //Error handlers\n {\n provide: ErrorHandler, // Make support for multiple error handlers\n useExisting: NhErrorHandlerService\n },\n {\n provide: NH_ERROR_HANDLERS, // Register the default\n useClass: ErrorHandler,\n multi: true,\n },\n provideHttpClient(withInterceptorsFromDi(), withFetch()),\n // Guards\n NhCanCancelNavigationGuard,\n // Services\n NhTaskResultFormValidationService,\n NhCookieService,\n NhInternetConnectionService,\n NhServerSideFormValidationService\n ]\n})\nexport class NhCommonModule {\n constructor(@Optional() @SkipSelf() parentModule: NhCommonModule) {\n // Import guard\n if (parentModule) {\n }\n }\n\n static forRoot<TAuthorization extends INhAuthorization, TAuthService extends BaseNhAuthService<TAuthorization>>(config: NhCommonModuleConfig, authService: Type<TAuthService>): ModuleWithProviders<NhCommonModule> {\n return {\n ngModule: NhCommonModule,\n providers: [\n {provide: NhCommonModuleConfig, useValue: config},\n {provide: NhAuthService, useExisting: authService},\n ]\n };\n }\n}\n\n","export{}\ndeclare global {\n interface Array<T> {\n any(): boolean;\n firstOrDefault(): any;\n lastOrDefault(): any;\n }\n}\n\nArray.prototype.any = function() {\n return this && ((this?.length ?? 0) > 0);\n}\n\nArray.prototype.firstOrDefault = function(defaultValue: any = undefined) {\n return this && this.length > 0 ? this[0] : defaultValue;\n}\n\nArray.prototype.lastOrDefault = function(defaultValue: any = undefined) {\n return this && this.length > 0 ? this[this.length - 1] : defaultValue;\n}\n","import {lastValueFrom, Observable} from 'rxjs';\nimport {TaskResult, TypedResult} from \"../models/misc.models\";\nimport {NhApiUtil} from \"../util/nh-api-util\";\n\ndeclare module \"rxjs/internal/Observable\" {\n interface Observable<T> {\n lastValueFrom(): Promise<T>;\n taskResultLastValueFrom(): Promise<TaskResult<T>>;\n typedResultLastValueFrom(): Promise<TypedResult<T>>;\n }\n}\n\nObservable.prototype.lastValueFrom = function () {\n return lastValueFrom(this);\n}\n\nObservable.prototype.taskResultLastValueFrom = async function <T>(): Promise<TaskResult<T>> {\n const taskResult = new TaskResult<T>();\n try {\n taskResult.data = await lastValueFrom(this);\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(taskResult);\n }\n\n return taskResult;\n}\n\nObservable.prototype.typedResultLastValueFrom = async function <T>(): Promise<TaskResult<T>> {\n const taskResult = new TaskResult<T>();\n try {\n taskResult.data = await lastValueFrom(this);\n } catch (ex) {\n const errResult = NhApiUtil.taskResultFromResponse(ex);\n errResult.copyTo(taskResult);\n }\n\n return taskResult.asTypedResult();\n}\n","import {Observable} from 'rxjs';\nimport {TranslateLoader, TranslationObject} from '@ngx-translate/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {StateKey, makeStateKey, TransferState, inject} from '@angular/core';\nimport { NhCommonModuleConfig } from \"../../models/config.models\";\nimport { HttpRequestOptions } from \"../../models/http.models\";\n\nexport class NhTranslateBrowserLoader implements TranslateLoader {\n protected moduleConfig: NhCommonModuleConfig = inject(NhCommonModuleConfig);\n\n protected static readonly httpRequestOptions = new HttpRequestOptions({\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n })\n });\n\n constructor(private http: HttpClient, private transferState: TransferState) {}\n\n public getTranslation(lang: string): Observable<any> {\n\n const key: StateKey<number> = makeStateKey<number>(\n 'transfer-translate-' + lang\n );\n\n const data = this.transferState.get(key, null);\n\n // First we are looking for the translations in transfer-state,\n // if none found, http load as fallback\n if (data) {\n return new Observable((observer) => {\n observer.next(data);\n observer.complete();\n });\n } else {\n const urlPart = this.moduleConfig.translation.browserLoaderPrefix.endsWith('/')\n ? ''\n : '/';\n\n return this.http.get<TranslationObject>(\n `${this.moduleConfig.translation.browserLoaderPrefix}${urlPart}${lang}.json`,\n NhTranslateBrowserLoader.httpRequestOptions\n );\n }\n }\n}\n\nexport function nhTranslateBrowserLoaderFactory(\n httpClient: HttpClient,\n transferState: TransferState\n) {\n return new NhTranslateBrowserLoader(httpClient, transferState);\n}\n","/*\n * Public API Surface of nh-common\n */\n\nexport * from './lib/models/config.models';\nexport * from './lib/models/misc.models';\nexport * from './lib/models/http.models';\nexport * from './lib/models/auth.models';\nexport * from './lib/models/user-notification.models';\nexport * from './lib/models/background-operation.models';\n\nexport * from './lib/util/nh-common-util';\nexport * from './lib/util/nh-string-util';\nexport * from './lib/util/nh-http-util';\nexport * from './lib/util/nh-encoding-util';\nexport * from './lib/util/nh-angular-util';\nexport * from './lib/util/nh-api-util';\nexport * from './lib/util/nh-form.util';\nexport * from './lib/util/nh-mutex.util';\n\nexport * from './lib/interceptors/nh-encode-http-params.interceptor';\nexport * from './lib/interceptors/nh-server-http.interceptor';\nexport * from './lib/interceptors/nh-deduplicate-get-requests.interceptor';\nexport * from './lib/interceptors/nh-session-rejection.interceptor';\n\nexport * from './lib/accessors/abstract-value.accessor';\n\nexport * from './lib/services/nh-error-handler.service';\nexport * from './lib/services/nh-app.service';\nexport * from './lib/services/nh-page.service';\nexport * from './lib/services/nh-config.service';\nexport * from './lib/services/nh-api.service';\nexport * from './lib/services/nh-auth.service';\nexport * from './lib/services/nh-passkey-client.service';\nexport * from './lib/services/nh-modal.service';\nexport * from './lib/services/nh-task-result-form.validator';\nexport * from './lib/services/nh-title.service';\nexport * from './lib/services/nh-meta.service';\nexport * from './lib/services/nh-head.service';\nexport * from './lib/services/nh-cookie.service';\nexport * from './lib/services/nh-router.service';\nexport * from './lib/services/nh-router-setup.service';\nexport * from './lib/services/nh-json-ld.service';\nexport * from './lib/services/nh-internet-connection.service';\nexport * from './lib/services/nh-server.service';\nexport * from './lib/services/nh-server-side-form-validator.service';\nexport * from './lib/services/nh-base-api.service';\nexport * from './lib/services/nh-user-notification.service';\nexport * from './lib/services/nh-background-operation.service';\nexport * from './lib/services/nh-background-operation-administration.service';\nexport * from './lib/services/nh-background-operation-live-update.service';\nexport * from './lib/services/nh-background-operation.store';\nexport * from './lib/services/nh-context-menu.service';\n\nexport * from './lib/guards/nh-auth.guards';\n\nexport * from './lib/pipes/encode.pipes';\nexport * from './lib/pipes/date.pipes';\nexport * from './lib/pipes/auth.pipes';\nexport * from './lib/pipes/primitive-type.pipes';\nexport * from './lib/pipes/safe-html.pipes';\n\nexport * from './lib/directives/nh-to-head.directive';\nexport * from './lib/directives/nh-debounce.directives';\nexport * from './lib/directives/nh-modal.directives';\nexport * from './lib/directives/nh-router-link.directive';\n\nexport * from './lib/components/nh-modal/component';\nexport * from './lib/components/nh-loader/component';\nexport * from './lib/components/nh-json-ld/nh-json-ld.component';\nexport * from './lib/components/nh-loading-modal/component';\nexport * from './lib/components/nh-confirm-modal/component';\nexport * from './lib/components/nh-page-base-component/nh-page-base.component';\nexport * from './lib/components/nh-form-dropdown/form-dropdown.component';\nexport * from './lib/components/nh-form-error-message/form-error-message.component';\nexport * from './lib/components/nh-collection-base-component/component';\nexport * from './lib/components/nh-mutate-base-component/component';\nexport * from './lib/components/nh-modal-mutate-base-component/component';\nexport * from './lib/components/nh-error/component';\nexport * from './lib/components/nh-user-notifications-component/abstract.component';\nexport * from './lib/components/nh-background-operation-progress/component';\nexport * from './lib/components/nh-search-input/search-input.component';\nexport * from './lib/components/nh-page-size/page-size.component';\n\nexport * from './lib/nh-common.module';\nexport * from './lib/guards/nh-cancel-navigation.guard';\n\nexport * from './lib/prototype-extensions/array.extensions';\nexport * from './lib/prototype-extensions/observable.extensions';\n\n//export * from './lib/miscellaneous/nh-node-fetch.http-backend';\nexport * from './lib/miscellaneous/translate-loaders/translate-browser.loader';\n//export * from './lib/miscellaneous/translate-loaders/translate-server.loader';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["validators.isEmptyString","validators.isString","i1.NhCommonModuleConfig","i2.NhCookieService","i3.NhAuthService","i2.NhAuthService","i1","i1.NhAuthService","i3.NhCookieService","i4.NhCommonModuleConfig","i3.NhRouterSetupService","i4","i2.NhAppService","i3.NhConfigCommonService","i4.NhAuthService","i5","i6.NhTitleService","i7.NhMetaService","i8.NhJsonLdService","i9.NhRouterService","msgpackDecode","i2","i2.NhLoaderComponent","i3.NhModalContentDirective","i1.NhAppService","i3.NhAppService","finalize","i1.NhBackgroundOperationService","i2.NhBackgroundOperationLiveUpdateService","i3.NhCommonModuleConfig","i1.NhLoaderComponent","i3","i2.NhDebounceDirective","i2.NhFormDropDownComponent"],"mappings":"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"}