@arsedizioni/ars-utils 20.3.42 → 20.3.44

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":"arsedizioni-ars-utils-support.common.mjs","sources":["../../../projects/ars-utils/support.common/common/messages.ts","../../../projects/ars-utils/support.common/common/definitions.ts","../../../projects/ars-utils/support.common/common/services/support.service.ts","../../../projects/ars-utils/support.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/support.common/common/common.module.ts","../../../projects/ars-utils/support.common/public_api.ts","../../../projects/ars-utils/support.common/arsedizioni-ars-utils-support.common.ts"],"sourcesContent":["export const SupportMessages = {\r\n /**\r\n * Messages\r\n */\r\n // Error\r\n ERROR: '§support-error',\r\n\r\n // Login\r\n LOGIN_CHANGED: '§support-login-changed',\r\n LOGIN_COMPLETED: '§support-login-completed',\r\n LOGOUT_COMPLETED: '§support-logout-completed',\r\n LOGIN_PENDING: '§support-login-pending',\r\n LOGOUT: '§support-logout',\r\n\r\n // Notifications\r\n NOTIFICATION_READ: '§support-notification-read',\r\n};\r\n","import { LoginResult } from '@arsedizioni/ars-utils/core';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\nexport enum SupportServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1\r\n}\r\n\r\nexport interface SupportUserInfo {\r\n id: number;\r\n groups?: number;\r\n groupNames?: string;\r\n displayName?: string;\r\n dashboard?: string;\r\n sessionId?: string;\r\n email?: string;\r\n customerId?: number;\r\n companyName?: string;\r\n role: number;\r\n scopes?: string[];\r\n sla: number;\r\n isCommercial?: boolean;\r\n isAdministrator: boolean;\r\n isGuest: boolean;\r\n isUser: boolean;\r\n isOperator: boolean;\r\n isTemporary: boolean;\r\n}\r\n\r\n\r\nexport interface SupportLoginResult extends LoginResult<SupportUserInfo> {\r\n\r\n // Compatibilty\r\n token?: string;\r\n\r\n}\r\n\r\nexport interface SupportLoginInfo {\r\n context: SupportUserInfo;\r\n oauth?: LoginOAuthType;\r\n remember?: boolean;\r\n}\r\n\r\nexport interface SupportNotificationsSearchParams {\r\n any?: string;\r\n products?: number;\r\n productModules?: number;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface SupportNotificationsSearchResult {\r\n interval?: string;\r\n items?: SupportNotificationInfo[];\r\n total?: number;\r\n}\r\n\r\nexport interface Notification {\r\n id: number;\r\n products: number;\r\n productModules?: number;\r\n publishingDate?: Date;\r\n title: string;\r\n text: string;\r\n state: number;\r\n created: Date;\r\n createdBy: string;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n productNames?: string;\r\n productModuleNames?: string;\r\n isPublished: boolean;\r\n isInternal: boolean;\r\n stateName: string;\r\n documents?: Document[];\r\n isRead: boolean;\r\n totalRead: number;\r\n}\r\n\r\nexport interface SupportDocumentInfo {\r\n id: number;\r\n origin?: number;\r\n ownerId?: number;\r\n name?: string;\r\n description?: string;\r\n size?: number;\r\n binaryId?: number;\r\n url?: string;\r\n customerId?: number;\r\n created?: Date;\r\n createdBy?: string;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n isBinary?: boolean;\r\n}\r\n\r\nexport interface SupportNotificationInfo {\r\n id: number;\r\n products?: number;\r\n productModules?: number;\r\n publishingDate?: Date;\r\n title: string;\r\n text: string;\r\n state: number;\r\n created: Date;\r\n createdBy: string;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n productNames?: string;\r\n productModuleNames?: string;\r\n isPublished: boolean;\r\n isInternal: boolean;\r\n stateName: string;\r\n documents?: Document[];\r\n isRead: boolean;\r\n totalRead: number;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n\r\n}\r\n\r\nexport interface SupportNotificationsMarkParams {\r\n ids: number[];\r\n unmark: boolean;\r\n}\r\n\r\nexport enum SupportProduct {\r\n None = 0,\r\n Clipper = 1,\r\n Evolution = 1 << 1,\r\n DGInfo = 1 << 2\r\n}\r\n\r\nexport enum SupportProductModule {\r\n None = 0,\r\n EvoFormazione = 1,\r\n EvoDPI = 1 << 1,\r\n EvoSorveglianzaSanitaria = 1 << 2,\r\n EvoRegistroEScadenzario = 1 << 3,\r\n EvoAttrezzatureEImpianti = 1 << 4,\r\n EvoMonitoraggio = 1 << 5,\r\n EvoBollettino = 1 << 6,\r\n DgiADR = 1 << 7,\r\n DgiRID = 1 << 8,\r\n DgiIMDG = 1 << 9,\r\n DgiCLP = 1 << 10,\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, OnDestroy, inject, signal } from '@angular/core';\r\nimport { ApiResult, BroadcastMessageInfo, BroadcastService, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { EMPTY, of, Subscription, throwError } from 'rxjs';\r\nimport { catchError, finalize, map } from 'rxjs/operators';\r\nimport { SupportMessages } from '../messages';\r\nimport { SupportLoginInfo, SupportLoginResult, SupportNotificationInfo, SupportNotificationsMarkParams, SupportNotificationsSearchParams, SupportNotificationsSearchResult, SupportProduct, SupportProductModule, SupportServiceFlags } from '../definitions';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SupportService implements OnDestroy {\r\n\r\n\r\n private httpClient = inject(HttpClient);\r\n private broadcastService = inject(BroadcastService);\r\n private broadcastServiceSubscription?: Subscription;\r\n private _loginInfo?: SupportLoginInfo;\r\n get loginInfo(): SupportLoginInfo | undefined { return this._loginInfo };\r\n set loginInfo(value: SupportLoginInfo | undefined) {\r\n this._loginInfo = value;\r\n }\r\n\r\n private _serviceUri: string = \"https://support.arsedizioni.it\"\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n private _flags: SupportServiceFlags = SupportServiceFlags.None;\r\n get flags(): SupportServiceFlags {\r\n return this._flags;\r\n }\r\n\r\n public products: SupportProduct = SupportProduct.None;\r\n public productModules: SupportProductModule = SupportProductModule.None;\r\n\r\n public readonly unreadNotifications = signal<number | undefined>(undefined);\r\n public readonly loggedIn = signal<boolean>(false);\r\n public readonly loggingIn = signal<boolean>(false);\r\n private keepAlive = 0;\r\n\r\n ngOnDestroy() {\r\n // Clean-up\r\n if (this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription.unsubscribe();\r\n }\r\n // Stop keep alive\r\n this.removeKeepAlive();\r\n }\r\n\r\n /**\r\n * Initialize service\r\n * @param serviceUri : the service uri\r\n * @param products: the supported products\r\n * @param productModules: the supported product modules\r\n * @param flags: the service flags. Default is none.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n products: SupportProduct = SupportProduct.None,\r\n productModules: SupportProductModule = SupportProductModule.None,\r\n flags: SupportServiceFlags = SupportServiceFlags.None) {\r\n\r\n // Create unique client id\r\n if (!localStorage.getItem('support_client_id')) {\r\n localStorage.setItem('support_client_id', SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._flags = flags;\r\n this.products = products;\r\n this.productModules = productModules;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message: BroadcastMessageInfo) => {\r\n if (message.id === SupportMessages.LOGIN_CHANGED) {\r\n this.login(message.data.email, message.data.oauth, message.data.oauthAccessToken).subscribe({\r\n next: r => {\r\n if (r.success) {\r\n this.countUnreadNotifications();\r\n }\r\n }, error: () => { console.error(\"ARS Support non disponibile.\") } // Avoid unwanted errors on client);\r\n });\r\n } else if (message.id === SupportMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.logout()\r\n .pipe(finalize(() => this.clear()))\r\n .subscribe();\r\n } else {\r\n this.clear();\r\n }\r\n } else if (message.id === SupportMessages.NOTIFICATION_READ) {\r\n this.countUnreadNotifications();\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n const tokenExpirationDate = this.getTokenExpirationDate();\r\n const tokenExpired = !tokenExpirationDate || tokenExpirationDate.getTime() < Date.now();\r\n if (!tokenExpired || this.loggedIn()) {\r\n // Auto login\r\n this.loggedIn.set(true);\r\n this.loggingIn.set(false);\r\n // Keep alive\r\n this.setKeepAlive();\r\n // Notify \r\n this.broadcastService.sendMessage(SupportMessages.LOGIN_COMPLETED);\r\n }\r\n }\r\n\r\n /**\r\n * Get access token expiration date\r\n */\r\n private getTokenExpirationDate(): Date | undefined {\r\n const token = this.getAuthToken();\r\n if (!token || token.length === 0) return undefined;\r\n // Parse json object from base64 encoded jwt token\r\n const jwtToken = JSON.parse(atob(token.split('.')[1]));\r\n // Set a timeout to refresh the token a minute before it expires\r\n return new Date(jwtToken.exp * 1000);\r\n }\r\n\r\n\r\n /**\r\n * Set keep alive\r\n */\r\n private setKeepAlive() {\r\n // Keep alive every 1 min\r\n if (this.keepAlive === 0) {\r\n this.keepAlive = window.setInterval(\r\n () => {\r\n this.ping();\r\n }, 1000 * 60 * 5);\r\n }\r\n }\r\n\r\n /**\r\n * Remove keep alive\r\n */\r\n private removeKeepAlive() {\r\n if (this.keepAlive > 0) {\r\n window.clearInterval(this.keepAlive);\r\n this.keepAlive = 0;\r\n }\r\n }\r\n\r\n /**\r\n * Ping\r\n */\r\n ping() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/ping?nocache=' + SystemUtils.generateUUID()\r\n )\r\n .pipe(catchError(() => { return EMPTY }))\r\n .subscribe();\r\n }\r\n\r\n /**\r\n * Set JWT token\r\n * @param value : the login result\r\n */\r\n private setToken(value: SupportLoginResult) {\r\n if (value.authToken ?? value.token) {\r\n sessionStorage.setItem('support_auth', value.authToken ?? value.token);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Return current JWT token\r\n */\r\n getAuthToken(): string | undefined {\r\n let token = sessionStorage.getItem('support_auth');\r\n if (token && token[0] === '\"') {\r\n return token.substring(1, token.length - 1);\r\n }\r\n return token;\r\n }\r\n\r\n\r\n /**\r\n * Store context\r\n */\r\n storeContext() {\r\n localStorage.setItem('support_context', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n /**\r\n* Update context\r\n* @param result: the new context\r\n*/\r\n updateContext(result: SupportLoginResult) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n this._loginInfo.context = result.context;\r\n this.setToken(result);\r\n this.storeContext();\r\n\r\n }\r\n\r\n /**\r\n* Perform login \r\n* @param email: the guest email\r\n* @param oauth: the optional open authentication supported\r\n* @param oauthAccessToken: the optional oauth2 access token\r\n*/\r\n login(email?: string,\r\n oauth?: number,\r\n oauthAccessToken?: string) {\r\n return this.httpClient\r\n .post<ApiResult<SupportLoginResult>>(\r\n this._serviceUri + '/login',\r\n {\r\n clientId: localStorage.getItem(\"support_client_id\"),\r\n user: oauth > 0 ? undefined : email,\r\n oauth: oauth\r\n },\r\n {\r\n headers:\r\n !oauth\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", oauthAccessToken ?? '')\r\n })\r\n .pipe(\r\n catchError(err => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<SupportLoginResult>) => {\r\n if (r.success) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined }\r\n }\r\n this._loginInfo.oauth = oauth;\r\n this._loginInfo.remember = true;\r\n if (!oauth && r.value.requiresMfa) {\r\n // Notify login is pending\r\n this.broadcastService.sendMessage(SupportMessages.LOGIN_PENDING);\r\n } else {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n\r\n }\r\n\r\n /**\r\n * Complete login\r\n * @param result : the login result\r\n */\r\n private completeLogin(\r\n result: SupportLoginResult) {\r\n // Update context info \r\n this.updateContext(result);\r\n this.loggedIn.set(!result.context?.isTemporary);\r\n this.loggingIn.set(false);\r\n // Keep alive\r\n this.setKeepAlive();\r\n // Notify\r\n this.broadcastService.sendMessage(SupportMessages.LOGIN_COMPLETED);\r\n }\r\n\r\n /**\r\n * Confirm MFA procedure\r\n * @param code: the confirm code\r\n * @param flags: the login flags\r\n */\r\n confirmIdentity(code: string) {\r\n return this.httpClient\r\n .post<ApiResult<SupportLoginResult>>(\r\n this._serviceUri + '/login/confirm/' + code,\r\n {},\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<SupportLoginResult>) => {\r\n if (r.success) {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Perform logout\r\n */\r\n logout() {\r\n return this.httpClient\r\n .post(this._serviceUri + '/logout', {}).pipe(\r\n finalize(() => {\r\n this.removeKeepAlive();\r\n this.clear();\r\n // Clean up\r\n localStorage.removeItem('support_context');\r\n }),\r\n catchError((_e) => {\r\n return of([]);\r\n }));\r\n\r\n }\r\n\r\n /**\r\n * Reset login refresh timer and logins state\r\n */\r\n reset() {\r\n // Clear login info\r\n this._loginInfo = undefined;\r\n this.loggedIn.set(false);\r\n // Notify\r\n this.broadcastService.sendMessage(SupportMessages.LOGOUT_COMPLETED);\r\n }\r\n\r\n /**\r\n * Clear login data\r\n */\r\n clear() {\r\n // Reset login\r\n this.reset();\r\n // Clear local storage\r\n sessionStorage.removeItem('support_auth');\r\n }\r\n\r\n /**\r\n * Perform token refresh\r\n */\r\n refresh() {\r\n return this.httpClient.get<ApiResult<SupportLoginResult>>(\r\n this._serviceUri + '/refresh2'\r\n ).pipe(map((r: ApiResult<SupportLoginResult>) => {\r\n // Update token\r\n this.setToken(r.value);\r\n return r;\r\n }));\r\n }\r\n\r\n /**\r\n * Navigate to support service\r\n */\r\n open() {\r\n let uri = this.serviceUri ?? '';\r\n if (uri.endsWith('/api'))\r\n uri = uri.substring(0, uri.length - 4)\r\n window.open(uri);\r\n }\r\n\r\n\r\n ////\r\n // NOTIFICATIONS\r\n ////\r\n\r\n /**\r\n * Count unread notifications\r\n */\r\n countUnreadNotifications() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/notifications/count-unread/?products=' + (this.products ?? 0) + \"&modules=\" + (this.productModules ?? 0)\r\n ).subscribe((r: ApiResult<number>) => {\r\n if (r.success) {\r\n this.unreadNotifications.set(r.value > 0 ? r.value : undefined)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Query notifications\r\n * @param params: query parameters\r\n */\r\n queryNotifications(params: SupportNotificationsSearchParams) {\r\n params.products = this.products ?? 0;\r\n params.productModules = this.productModules ?? 0;\r\n return this.httpClient.post<ApiResult<SupportNotificationsSearchResult>>(\r\n this._serviceUri + '/notifications',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve a notification\r\n * @param id: the notification id\r\n */\r\n getNotification(id: number) {\r\n return this.httpClient.get<ApiResult<SupportNotificationInfo>>(\r\n this._serviceUri +\r\n '/notifications/' +\r\n id\r\n );\r\n }\r\n\r\n /**\r\n * Mark a group of notifications as read\r\n * @param ids: the array of notification's ids to set as read\r\n */\r\n markNotifications(params: SupportNotificationsMarkParams) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/notifications/mark',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Download a notification document\r\n * @param documentId : the notification document id\r\n */\r\n dowloadNotificationDocument(documentId: number) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/documents/download/' + documentId,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, catchError, switchMap, throwError } from 'rxjs';\r\nimport { SupportService } from '../services/support.service';\r\nimport { BroadcastService, ErrorInfo } from '@arsedizioni/ars-utils/core';\r\nimport { SupportServiceFlags } from '../definitions';\r\nimport { SupportMessages } from '../messages';\r\n\r\n@Injectable()\r\nexport class SupportAuthInterceptor implements HttpInterceptor {\r\n\r\n private supportService = inject(SupportService);\r\n private broadcastService = inject(BroadcastService);\r\n private lastErrorTime: number = -1;\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (request.url.startsWith(this.supportService.serviceUri)) {\r\n request = request.clone({ withCredentials: true });\r\n return next.handle(this.addTokenToRequest(request))\r\n .pipe(\r\n catchError(error => {\r\n if (error.url.startsWith(this.supportService.serviceUri)) {\r\n if (\r\n error instanceof HttpErrorResponse &&\r\n !request.url.includes(\"/login\") &&\r\n error.status === 401\r\n ) {\r\n return this.handle401Error(request, next);\r\n }\r\n const errorStatus = parseInt(error.status ?? \"0\");\r\n if ((errorStatus > 0 && errorStatus < 500) || (this.supportService.flags & SupportServiceFlags.NotifySystemErrors) > 0) {\r\n const errorTime = new Date().getTime();\r\n if (errorTime - this.lastErrorTime > 5000) {\r\n this.lastErrorTime = errorTime;\r\n let message = \"\"\r\n switch (errorStatus) {\r\n case 0:\r\n message = \"In questo momento ARS Support non è disponibile. Riprova tra qualche minuto.\";\r\n break;\r\n case 403:\r\n message = \"Non hai i permessi necessari per eseguire l'operazione richiesta.\";\r\n break;\r\n default:\r\n message = (error.error?.message ?? error.message ?? \"Impossibile eseguire l'operazione richiesta.\").replaceAll(\"\\r\\n\", \"</p><p>\");\r\n break;\r\n }\r\n this.broadcastService.sendMessage(\r\n SupportMessages.ERROR,\r\n {\r\n invalidateSession: errorStatus === 405 || errorStatus === 410,\r\n message: message,\r\n title: \"Errore in ARS Support\",\r\n errorStatus: errorStatus,\r\n service: this.supportService.serviceUri\r\n } as ErrorInfo);\r\n }\r\n }\r\n }\r\n return throwError(() => error);\r\n }));\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Handle 401 error\r\n * @param request : the request\r\n * @param next : the http handler\r\n */\r\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\r\n if (this.supportService.loggedIn()) {\r\n return this.supportService.refresh().pipe(\r\n switchMap(() => {\r\n return next.handle(this.addTokenToRequest(request));\r\n }),\r\n catchError(error => {\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Add token to request\r\n * @param request : the request\r\n * @param token: the token or null to use curre3nt\r\n */\r\n private addTokenToRequest(\r\n request: HttpRequest<any>,\r\n token: string = null\r\n ): HttpRequest<any> {\r\n if (request.url.startsWith(this.supportService.serviceUri)) {\r\n if (this.supportService.loggedIn()) {\r\n if (!token) token = this.supportService.getAuthToken();\r\n if (token) {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + token,\r\n 'ngsw-bypass': 'ngsw-bypass'\r\n },\r\n });\r\n }\r\n }\r\n }\r\n return request;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class ArsSupportCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/support.service';\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './common/common.module';\r\nexport * from './common/messages';\r\nexport * from './common/definitions';\r\nexport * from './common/services/support.service';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-support.common.mjs","sources":["../../../projects/ars-utils/support.common/common/messages.ts","../../../projects/ars-utils/support.common/common/definitions.ts","../../../projects/ars-utils/support.common/common/services/support.service.ts","../../../projects/ars-utils/support.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/support.common/common/common.module.ts","../../../projects/ars-utils/support.common/public_api.ts","../../../projects/ars-utils/support.common/arsedizioni-ars-utils-support.common.ts"],"sourcesContent":["export const SupportMessages = {\r\n /**\r\n * Messages\r\n */\r\n // Error\r\n ERROR: '§support-error',\r\n\r\n // Login\r\n LOGIN_CHANGED: '§support-login-changed',\r\n LOGIN_COMPLETED: '§support-login-completed',\r\n LOGOUT_COMPLETED: '§support-logout-completed',\r\n LOGIN_PENDING: '§support-login-pending',\r\n LOGOUT: '§support-logout',\r\n\r\n // Notifications\r\n NOTIFICATION_READ: '§support-notification-read',\r\n};\r\n","import { LoginResult } from '@arsedizioni/ars-utils/core';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\nexport enum SupportServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1\r\n}\r\n\r\nexport interface SupportUserInfo {\r\n id: number;\r\n groups?: number;\r\n groupNames?: string;\r\n displayName?: string;\r\n dashboard?: string;\r\n sessionId?: string;\r\n email?: string;\r\n customerId?: number;\r\n companyName?: string;\r\n role: number;\r\n scopes?: string[];\r\n sla: number;\r\n isCommercial?: boolean;\r\n isAdministrator: boolean;\r\n isGuest: boolean;\r\n isUser: boolean;\r\n isOperator: boolean;\r\n isTemporary: boolean;\r\n}\r\n\r\n\r\nexport interface SupportLoginResult extends LoginResult<SupportUserInfo> {\r\n\r\n // Compatibilty\r\n token?: string;\r\n\r\n}\r\n\r\nexport interface SupportLoginInfo {\r\n context: SupportUserInfo;\r\n oauth?: LoginOAuthType;\r\n remember?: boolean;\r\n}\r\n\r\nexport interface SupportNotificationsSearchParams {\r\n any?: string;\r\n products?: number;\r\n productModules?: number;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface SupportNotificationsSearchResult {\r\n interval?: string;\r\n items?: SupportNotificationInfo[];\r\n total?: number;\r\n}\r\n\r\nexport interface Notification {\r\n id: number;\r\n products: number;\r\n productModules?: number;\r\n publishingDate?: Date;\r\n title: string;\r\n text: string;\r\n state: number;\r\n created: Date;\r\n createdBy: string;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n productNames?: string;\r\n productModuleNames?: string;\r\n isPublished: boolean;\r\n isInternal: boolean;\r\n stateName: string;\r\n documents?: Document[];\r\n isRead: boolean;\r\n totalRead: number;\r\n}\r\n\r\nexport interface SupportDocumentInfo {\r\n id: number;\r\n origin?: number;\r\n ownerId?: number;\r\n name?: string;\r\n description?: string;\r\n size?: number;\r\n binaryId?: number;\r\n url?: string;\r\n customerId?: number;\r\n created?: Date;\r\n createdBy?: string;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n isBinary?: boolean;\r\n}\r\n\r\nexport interface SupportNotificationInfo {\r\n id: number;\r\n products?: number;\r\n productModules?: number;\r\n publishingDate?: Date;\r\n title: string;\r\n text: string;\r\n state: number;\r\n created: Date;\r\n createdBy: string;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n productNames?: string;\r\n productModuleNames?: string;\r\n isPublished: boolean;\r\n isInternal: boolean;\r\n stateName: string;\r\n documents?: Document[];\r\n isRead: boolean;\r\n totalRead: number;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n\r\n}\r\n\r\nexport interface SupportNotificationsMarkParams {\r\n ids: number[];\r\n unmark: boolean;\r\n}\r\n\r\nexport enum SupportProduct {\r\n None = 0,\r\n Clipper = 1,\r\n Evolution = 1 << 1,\r\n DGInfo = 1 << 2\r\n}\r\n\r\nexport enum SupportProductModule {\r\n None = 0,\r\n EvoFormazione = 1,\r\n EvoDPI = 1 << 1,\r\n EvoSorveglianzaSanitaria = 1 << 2,\r\n EvoRegistroEScadenzario = 1 << 3,\r\n EvoAttrezzatureEImpianti = 1 << 4,\r\n EvoMonitoraggio = 1 << 5,\r\n EvoBollettino = 1 << 6,\r\n DgiADR = 1 << 7,\r\n DgiRID = 1 << 8,\r\n DgiIMDG = 1 << 9,\r\n DgiCLP = 1 << 10,\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, OnDestroy, inject, signal } from '@angular/core';\r\nimport { ApiResult, BroadcastMessageInfo, BroadcastService, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { EMPTY, of, Subscription, throwError } from 'rxjs';\r\nimport { catchError, finalize, map } from 'rxjs/operators';\r\nimport { SupportMessages } from '../messages';\r\nimport { SupportLoginInfo, SupportLoginResult, SupportNotificationInfo, SupportNotificationsMarkParams, SupportNotificationsSearchParams, SupportNotificationsSearchResult, SupportProduct, SupportProductModule, SupportServiceFlags } from '../definitions';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SupportService implements OnDestroy {\r\n\r\n\r\n private httpClient = inject(HttpClient);\r\n private broadcastService = inject(BroadcastService);\r\n private broadcastServiceSubscription?: Subscription;\r\n private _loginInfo?: SupportLoginInfo;\r\n get loginInfo(): SupportLoginInfo | undefined { return this._loginInfo };\r\n set loginInfo(value: SupportLoginInfo | undefined) {\r\n this._loginInfo = value;\r\n }\r\n\r\n private _serviceUri: string = \"https://support.arsedizioni.it\"\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n private _flags: SupportServiceFlags = SupportServiceFlags.None;\r\n get flags(): SupportServiceFlags {\r\n return this._flags;\r\n }\r\n\r\n public products: SupportProduct = SupportProduct.None;\r\n public productModules: SupportProductModule = SupportProductModule.None;\r\n\r\n public readonly unreadNotifications = signal<number | undefined>(undefined);\r\n public readonly loggedIn = signal<boolean>(false);\r\n public readonly loggingIn = signal<boolean>(false);\r\n private keepAlive = 0;\r\n\r\n ngOnDestroy() {\r\n // Clean-up\r\n if (this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription.unsubscribe();\r\n }\r\n // Stop keep alive\r\n this.removeKeepAlive();\r\n }\r\n\r\n /**\r\n * Initialize service\r\n * @param serviceUri : the service uri\r\n * @param products: the supported products\r\n * @param productModules: the supported product modules\r\n * @param flags: the service flags. Default is none.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n products: SupportProduct = SupportProduct.None,\r\n productModules: SupportProductModule = SupportProductModule.None,\r\n flags: SupportServiceFlags = SupportServiceFlags.None) {\r\n\r\n // Create unique client id\r\n if (!localStorage.getItem('support_client_id')) {\r\n localStorage.setItem('support_client_id', SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._flags = flags;\r\n this.products = products;\r\n this.productModules = productModules;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message: BroadcastMessageInfo) => {\r\n if (message.id === SupportMessages.LOGIN_CHANGED) {\r\n this.login(message.data.email, message.data.oauth, message.data.oauthAccessToken).subscribe({\r\n next: r => {\r\n if (r.success) {\r\n this.countUnreadNotifications();\r\n }\r\n }, error: () => { console.error(\"ARS Support non disponibile.\") } // Avoid unwanted errors on client);\r\n });\r\n } else if (message.id === SupportMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.logout()\r\n .pipe(finalize(() => this.clear()))\r\n .subscribe();\r\n } else {\r\n this.clear();\r\n }\r\n } else if (message.id === SupportMessages.NOTIFICATION_READ) {\r\n this.countUnreadNotifications();\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n const tokenExpirationDate = this.getTokenExpirationDate();\r\n const tokenExpired = !tokenExpirationDate || tokenExpirationDate.getTime() < Date.now();\r\n if (!tokenExpired || this.loggedIn()) {\r\n // Auto login\r\n this.loggedIn.set(true);\r\n this.loggingIn.set(false);\r\n // Keep alive\r\n this.setKeepAlive();\r\n // Notify \r\n this.broadcastService.sendMessage(SupportMessages.LOGIN_COMPLETED);\r\n }\r\n }\r\n\r\n /**\r\n * Get access token expiration date\r\n */\r\n private getTokenExpirationDate(): Date | undefined {\r\n const token = this.getAuthToken();\r\n if (!token || token.length === 0) return undefined;\r\n // Parse json object from base64 encoded jwt token\r\n const jwtToken = JSON.parse(atob(token.split('.')[1]));\r\n // Set a timeout to refresh the token a minute before it expires\r\n return new Date(jwtToken.exp * 1000);\r\n }\r\n\r\n\r\n /**\r\n * Set keep alive\r\n */\r\n private setKeepAlive() {\r\n // Keep alive every 1 min\r\n if (this.keepAlive === 0) {\r\n this.keepAlive = window.setInterval(\r\n () => {\r\n this.ping();\r\n }, 1000 * 60 * 5);\r\n }\r\n }\r\n\r\n /**\r\n * Remove keep alive\r\n */\r\n private removeKeepAlive() {\r\n if (this.keepAlive > 0) {\r\n window.clearInterval(this.keepAlive);\r\n this.keepAlive = 0;\r\n }\r\n }\r\n\r\n /**\r\n * Ping\r\n */\r\n ping() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/ping?nocache=' + SystemUtils.generateUUID()\r\n )\r\n .pipe(catchError(() => { return EMPTY }))\r\n .subscribe();\r\n }\r\n\r\n /**\r\n * Set JWT token\r\n * @param value : the login result\r\n */\r\n private setToken(value: SupportLoginResult) {\r\n if (value.authToken ?? value.token) {\r\n sessionStorage.setItem('support_auth', value.authToken ?? value.token);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Return current JWT token\r\n */\r\n getAuthToken(): string | undefined {\r\n let token = sessionStorage.getItem('support_auth');\r\n if (token && token[0] === '\"') {\r\n return token.substring(1, token.length - 1);\r\n }\r\n return token;\r\n }\r\n\r\n\r\n /**\r\n * Store context\r\n */\r\n storeContext() {\r\n localStorage.setItem('support_context', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n /**\r\n* Update context\r\n* @param result: the new context\r\n*/\r\n updateContext(result: SupportLoginResult) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n this._loginInfo.context = result.context;\r\n this.setToken(result);\r\n this.storeContext();\r\n\r\n }\r\n\r\n /**\r\n* Perform login \r\n* @param email: the guest email\r\n* @param oauth: the optional open authentication supported\r\n* @param oauthAccessToken: the optional oauth2 access token\r\n*/\r\n login(email?: string,\r\n oauth?: number,\r\n oauthAccessToken?: string) {\r\n return this.httpClient\r\n .post<ApiResult<SupportLoginResult>>(\r\n this._serviceUri + '/login',\r\n {\r\n clientId: localStorage.getItem(\"support_client_id\"),\r\n user: oauth > 0 ? undefined : email,\r\n oauth: oauth\r\n },\r\n {\r\n headers:\r\n !oauth\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", oauthAccessToken ?? '')\r\n })\r\n .pipe(\r\n catchError(err => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<SupportLoginResult>) => {\r\n if (r.success) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined }\r\n }\r\n this._loginInfo.oauth = oauth;\r\n this._loginInfo.remember = true;\r\n if (!oauth && r.value.requiresMfa) {\r\n // Notify login is pending\r\n this.broadcastService.sendMessage(SupportMessages.LOGIN_PENDING);\r\n } else {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n\r\n }\r\n\r\n /**\r\n * Complete login\r\n * @param result : the login result\r\n */\r\n private completeLogin(\r\n result: SupportLoginResult) {\r\n // Update context info \r\n this.updateContext(result);\r\n this.loggedIn.set(!result.context?.isTemporary);\r\n this.loggingIn.set(false);\r\n // Keep alive\r\n this.setKeepAlive();\r\n // Notify\r\n this.broadcastService.sendMessage(SupportMessages.LOGIN_COMPLETED);\r\n }\r\n\r\n /**\r\n * Confirm MFA procedure\r\n * @param code: the confirm code\r\n * @param flags: the login flags\r\n */\r\n confirmIdentity(code: string) {\r\n return this.httpClient\r\n .post<ApiResult<SupportLoginResult>>(\r\n this._serviceUri + '/login/confirm/' + code,\r\n {},\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<SupportLoginResult>) => {\r\n if (r.success) {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Perform logout\r\n */\r\n logout() {\r\n return this.httpClient\r\n .post(this._serviceUri + '/logout', {}).pipe(\r\n finalize(() => {\r\n this.removeKeepAlive();\r\n this.clear();\r\n // Clean up\r\n localStorage.removeItem('support_context');\r\n }),\r\n catchError((_e) => {\r\n return of([]);\r\n }));\r\n\r\n }\r\n\r\n /**\r\n * Reset login refresh timer and logins state\r\n */\r\n reset() {\r\n // Clear login info\r\n this._loginInfo = undefined;\r\n // Logged out\r\n this.loggedIn.set(false);\r\n // Notify\r\n this.broadcastService.sendMessage(SupportMessages.LOGOUT_COMPLETED);\r\n }\r\n\r\n /**\r\n * Clear login data\r\n */\r\n clear() {\r\n // Reset login\r\n this.reset();\r\n // Clear local storage\r\n sessionStorage.removeItem('support_auth');\r\n }\r\n\r\n /**\r\n * Perform token refresh\r\n */\r\n refresh() {\r\n return this.httpClient.get<ApiResult<SupportLoginResult>>(\r\n this._serviceUri + '/refresh2'\r\n ).pipe(map((r: ApiResult<SupportLoginResult>) => {\r\n // Update token\r\n this.setToken(r.value);\r\n return r;\r\n }));\r\n }\r\n\r\n /**\r\n * Navigate to support service\r\n */\r\n open() {\r\n let uri = this.serviceUri ?? '';\r\n if (uri.endsWith('/api'))\r\n uri = uri.substring(0, uri.length - 4)\r\n window.open(uri);\r\n }\r\n\r\n\r\n ////\r\n // NOTIFICATIONS\r\n ////\r\n\r\n /**\r\n * Count unread notifications\r\n */\r\n countUnreadNotifications() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/notifications/count-unread/?products=' + (this.products ?? 0) + \"&modules=\" + (this.productModules ?? 0)\r\n ).subscribe((r: ApiResult<number>) => {\r\n if (r.success) {\r\n this.unreadNotifications.set(r.value > 0 ? r.value : undefined)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Query notifications\r\n * @param params: query parameters\r\n */\r\n queryNotifications(params: SupportNotificationsSearchParams) {\r\n params.products = this.products ?? 0;\r\n params.productModules = this.productModules ?? 0;\r\n return this.httpClient.post<ApiResult<SupportNotificationsSearchResult>>(\r\n this._serviceUri + '/notifications',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve a notification\r\n * @param id: the notification id\r\n */\r\n getNotification(id: number) {\r\n return this.httpClient.get<ApiResult<SupportNotificationInfo>>(\r\n this._serviceUri +\r\n '/notifications/' +\r\n id\r\n );\r\n }\r\n\r\n /**\r\n * Mark a group of notifications as read\r\n * @param ids: the array of notification's ids to set as read\r\n */\r\n markNotifications(params: SupportNotificationsMarkParams) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/notifications/mark',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Download a notification document\r\n * @param documentId : the notification document id\r\n */\r\n dowloadNotificationDocument(documentId: number) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/documents/download/' + documentId,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, catchError, switchMap, throwError } from 'rxjs';\r\nimport { SupportService } from '../services/support.service';\r\nimport { BroadcastService, ErrorInfo } from '@arsedizioni/ars-utils/core';\r\nimport { SupportServiceFlags } from '../definitions';\r\nimport { SupportMessages } from '../messages';\r\n\r\n@Injectable()\r\nexport class SupportAuthInterceptor implements HttpInterceptor {\r\n\r\n private supportService = inject(SupportService);\r\n private broadcastService = inject(BroadcastService);\r\n private lastErrorTime: number = -1;\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (request.url.startsWith(this.supportService.serviceUri)) {\r\n request = request.clone({ withCredentials: true });\r\n return next.handle(this.addTokenToRequest(request))\r\n .pipe(\r\n catchError(error => {\r\n if (error.url.startsWith(this.supportService.serviceUri)) {\r\n if (\r\n error instanceof HttpErrorResponse &&\r\n !request.url.includes(\"/login\") &&\r\n error.status === 401\r\n ) {\r\n return this.handle401Error(request, next);\r\n }\r\n const errorStatus = parseInt(error.status ?? \"0\");\r\n if ((errorStatus > 0 && errorStatus < 500) || (this.supportService.flags & SupportServiceFlags.NotifySystemErrors) > 0) {\r\n const errorTime = new Date().getTime();\r\n if (errorTime - this.lastErrorTime > 5000) {\r\n this.lastErrorTime = errorTime;\r\n let message = \"\"\r\n switch (errorStatus) {\r\n case 0:\r\n message = \"In questo momento ARS Support non è disponibile. Riprova tra qualche minuto.\";\r\n break;\r\n case 403:\r\n message = \"Non hai i permessi necessari per eseguire l'operazione richiesta.\";\r\n break;\r\n default:\r\n message = (error.error?.message ?? error.message ?? \"Impossibile eseguire l'operazione richiesta.\").replaceAll(\"\\r\\n\", \"</p><p>\");\r\n break;\r\n }\r\n this.broadcastService.sendMessage(\r\n SupportMessages.ERROR,\r\n {\r\n invalidateSession: errorStatus === 405 || errorStatus === 410,\r\n message: message,\r\n title: \"Errore in ARS Support\",\r\n errorStatus: errorStatus,\r\n service: this.supportService.serviceUri\r\n } as ErrorInfo);\r\n }\r\n }\r\n }\r\n return throwError(() => error);\r\n }));\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Handle 401 error\r\n * @param request : the request\r\n * @param next : the http handler\r\n */\r\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\r\n if (this.supportService.loggedIn()) {\r\n return this.supportService.refresh().pipe(\r\n switchMap(() => {\r\n return next.handle(this.addTokenToRequest(request));\r\n }),\r\n catchError(error => {\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Add token to request\r\n * @param request : the request\r\n * @param token: the token or null to use curre3nt\r\n */\r\n private addTokenToRequest(\r\n request: HttpRequest<any>,\r\n token: string = null\r\n ): HttpRequest<any> {\r\n if (request.url.startsWith(this.supportService.serviceUri)) {\r\n if (this.supportService.loggedIn()) {\r\n if (!token) token = this.supportService.getAuthToken();\r\n if (token) {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + token,\r\n 'ngsw-bypass': 'ngsw-bypass'\r\n },\r\n });\r\n }\r\n }\r\n }\r\n return request;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class ArsSupportCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/support.service';\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './common/common.module';\r\nexport * from './common/messages';\r\nexport * from './common/definitions';\r\nexport * from './common/services/support.service';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arsedizioni/ars-utils",
3
- "version": "20.3.42",
3
+ "version": "20.3.44",
4
4
  "author": {
5
5
  "email": "software@arsedizioni.it",
6
6
  "name": "Fabio Buscaroli, Alberto Doria"
@@ -44,13 +44,17 @@
44
44
  "types": "./core/index.d.ts",
45
45
  "default": "./fesm2022/arsedizioni-ars-utils-core.mjs"
46
46
  },
47
+ "./evolution.common": {
48
+ "types": "./evolution.common/index.d.ts",
49
+ "default": "./fesm2022/arsedizioni-ars-utils-evolution.common.mjs"
50
+ },
47
51
  "./help": {
48
52
  "types": "./help/index.d.ts",
49
53
  "default": "./fesm2022/arsedizioni-ars-utils-help.mjs"
50
54
  },
51
- "./evolution.common": {
52
- "types": "./evolution.common/index.d.ts",
53
- "default": "./fesm2022/arsedizioni-ars-utils-evolution.common.mjs"
55
+ "./support.ui": {
56
+ "types": "./support.ui/index.d.ts",
57
+ "default": "./fesm2022/arsedizioni-ars-utils-support.ui.mjs"
54
58
  },
55
59
  "./support.common": {
56
60
  "types": "./support.common/index.d.ts",
@@ -60,10 +64,6 @@
60
64
  "types": "./tinymce/index.d.ts",
61
65
  "default": "./fesm2022/arsedizioni-ars-utils-tinymce.mjs"
62
66
  },
63
- "./support.ui": {
64
- "types": "./support.ui/index.d.ts",
65
- "default": "./fesm2022/arsedizioni-ars-utils-support.ui.mjs"
66
- },
67
67
  "./ui": {
68
68
  "types": "./ui/index.d.ts",
69
69
  "default": "./fesm2022/arsedizioni-ars-utils-ui.mjs"